From c80da26920749a30339009fb736b408cb6579c45 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sun, 6 Feb 2022 18:08:45 +0100 Subject: [PATCH 01/33] move folders to archive repository (#991) fix #908 --- additional objects/DEVC/ZABAP2XLSX.slnk | 2 - additional objects/PROG/ZAKE_SVN_A2X.slnk | 139 - .../PROG/ZDEMO_EXCEL_GAPPS.slnk | 71 - .../WDYA/ZDEMO_EXCEL_WDA01.slnk | 4 - .../WDYN/ZDEMO_EXCEL_WDA01.slnk | 177 - build/6.20 patch/abap2xlsx6.20patch.nugg.zip | Bin 17356 -> 0 bytes build/ABAP2XLSX_V_7_0_4.nugg | 42337 -------------- build/ABAP2XLSX_V_7_0_4.nugg.zip | Bin 324753 -> 0 bytes build/ABAP2XLSX_V_7_0_5 - 2015-08-04.nugg | 43758 --------------- build/ABAP2XLSX_V_7_0_5 - 2015-08-04.nugg.zip | Bin 361980 -> 0 bytes build/ABAP2XLSX_V_7_0_6 - 2016-04-01.nugg | 46132 ---------------- build/ABAP2XLSX_V_7_0_6 - 2016-04-01.nugg.zip | Bin 378711 -> 0 bytes build/ABAP2XLSX_V_7_0_6 - 2016-04-01.zip | Bin 355486 -> 0 bytes build/LICENSE.txt | 202 - build/Transport-2019-02-20.zip | Bin 1642701 -> 0 bytes build/Version history.docx | Bin 16298 -> 0 bytes build/Version history.pdf | Bin 170546 -> 0 bytes build/extra/NUGG_ABAP2XLSX - EXTRA.nugg | 272 - build/extra/NUGG_ABAP2XLSX - EXTRA.zip | Bin 3468 -> 0 bytes build/old_releases/ABAP2XLSX_V_2_0.zip | Bin 570618 -> 0 bytes build/old_releases/ABAP2XLSX_V_3_0.zip | Bin 788093 -> 0 bytes build/old_releases/ABAP2XLSX_V_4_0.zip | Bin 914685 -> 0 bytes build/old_releases/ABAP2XLSX_V_5_0.zip | Bin 996142 -> 0 bytes build/old_releases/ABAP2XLSX_V_6_0.zip | Bin 1090232 -> 0 bytes build/old_releases/ABAP2XLSX_V_7_0.nugg | 39014 ------------- build/old_releases/ABAP2XLSX_V_7_0.zip | Bin 299866 -> 0 bytes build/old_releases/ABAP2XLSX_V_7_0_1.nugg | 39027 ------------- build/old_releases/ABAP2XLSX_V_7_0_1.nugg.zip | Bin 296803 -> 0 bytes build/old_releases/ABAP2XLSX_V_7_0_1.zip | Bin 1521842 -> 0 bytes build/old_releases/ABAP2XLSX_V_7_0_2.zip | Bin 1483039 -> 0 bytes build/old_releases/ABAP2XLSX_V_7_0_3.nugg | 41033 -------------- build/old_releases/ABAP2XLSX_V_7_0_3.nugg.zip | Bin 334594 -> 0 bytes build/old_releases/ABAP2XLSX_V_7_0_3.zip | Bin 1535022 -> 0 bytes build/old_releases/K902337.TIR | 7 - build/old_releases/NUGG_ABAP2XLSX_V_1_0.nugg | 11526 ---- .../NUGG_ABAP2XLSX_V_1_0.nugg.zip | Bin 86986 -> 0 bytes build/old_releases/NUGG_ABAP2XLSX_V_1_1.nugg | 6764 --- .../NUGG_ABAP2XLSX_V_1_1.nugg.zip | Bin 49055 -> 0 bytes build/old_releases/R902337.TIR | Bin 1988495 -> 0 bytes .../Binaries/OpenXMLValidator.exe | Bin 11264 -> 0 bytes .../Binaries/OpenXMLValidator.exe.config | 3 - .../Binaries/OpenXMLValidator.pdb | Bin 19968 -> 0 bytes tools/OpenXMLValidator/src/CommandLineArgs.cs | 77 - .../src/OpenXMLValidator.csproj | 74 - tools/OpenXMLValidator/src/Program.cs | 148 - .../src/Properties/AssemblyInfo.cs | 36 - .../src/Resources.Designer.cs | 89 - tools/OpenXMLValidator/src/Resources.resx | 124 - .../OpenXMLValidator/src/Resources/usage.txt | 20 - tools/OpenXMLValidator/src/app.config | 3 - tools/OpenXMLValidator/src/readme.txt | 2 - 51 files changed, 271041 deletions(-) delete mode 100644 additional objects/DEVC/ZABAP2XLSX.slnk delete mode 100644 additional objects/PROG/ZAKE_SVN_A2X.slnk delete mode 100644 additional objects/PROG/ZDEMO_EXCEL_GAPPS.slnk delete mode 100644 additional objects/WDYA/ZDEMO_EXCEL_WDA01.slnk delete mode 100644 additional objects/WDYN/ZDEMO_EXCEL_WDA01.slnk delete mode 100644 build/6.20 patch/abap2xlsx6.20patch.nugg.zip delete mode 100644 build/ABAP2XLSX_V_7_0_4.nugg delete mode 100644 build/ABAP2XLSX_V_7_0_4.nugg.zip delete mode 100644 build/ABAP2XLSX_V_7_0_5 - 2015-08-04.nugg delete mode 100644 build/ABAP2XLSX_V_7_0_5 - 2015-08-04.nugg.zip delete mode 100644 build/ABAP2XLSX_V_7_0_6 - 2016-04-01.nugg delete mode 100644 build/ABAP2XLSX_V_7_0_6 - 2016-04-01.nugg.zip delete mode 100644 build/ABAP2XLSX_V_7_0_6 - 2016-04-01.zip delete mode 100644 build/LICENSE.txt delete mode 100644 build/Transport-2019-02-20.zip delete mode 100644 build/Version history.docx delete mode 100644 build/Version history.pdf delete mode 100644 build/extra/NUGG_ABAP2XLSX - EXTRA.nugg delete mode 100644 build/extra/NUGG_ABAP2XLSX - EXTRA.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_2_0.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_3_0.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_4_0.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_5_0.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_6_0.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_7_0.nugg delete mode 100644 build/old_releases/ABAP2XLSX_V_7_0.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_7_0_1.nugg delete mode 100644 build/old_releases/ABAP2XLSX_V_7_0_1.nugg.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_7_0_1.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_7_0_2.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_7_0_3.nugg delete mode 100644 build/old_releases/ABAP2XLSX_V_7_0_3.nugg.zip delete mode 100644 build/old_releases/ABAP2XLSX_V_7_0_3.zip delete mode 100644 build/old_releases/K902337.TIR delete mode 100644 build/old_releases/NUGG_ABAP2XLSX_V_1_0.nugg delete mode 100644 build/old_releases/NUGG_ABAP2XLSX_V_1_0.nugg.zip delete mode 100644 build/old_releases/NUGG_ABAP2XLSX_V_1_1.nugg delete mode 100644 build/old_releases/NUGG_ABAP2XLSX_V_1_1.nugg.zip delete mode 100644 build/old_releases/R902337.TIR delete mode 100644 tools/OpenXMLValidator/Binaries/OpenXMLValidator.exe delete mode 100644 tools/OpenXMLValidator/Binaries/OpenXMLValidator.exe.config delete mode 100644 tools/OpenXMLValidator/Binaries/OpenXMLValidator.pdb delete mode 100644 tools/OpenXMLValidator/src/CommandLineArgs.cs delete mode 100644 tools/OpenXMLValidator/src/OpenXMLValidator.csproj delete mode 100644 tools/OpenXMLValidator/src/Program.cs delete mode 100644 tools/OpenXMLValidator/src/Properties/AssemblyInfo.cs delete mode 100644 tools/OpenXMLValidator/src/Resources.Designer.cs delete mode 100644 tools/OpenXMLValidator/src/Resources.resx delete mode 100644 tools/OpenXMLValidator/src/Resources/usage.txt delete mode 100644 tools/OpenXMLValidator/src/app.config delete mode 100644 tools/OpenXMLValidator/src/readme.txt diff --git a/additional objects/DEVC/ZABAP2XLSX.slnk b/additional objects/DEVC/ZABAP2XLSX.slnk deleted file mode 100644 index 87799ad..0000000 --- a/additional objects/DEVC/ZABAP2XLSX.slnk +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/additional objects/PROG/ZAKE_SVN_A2X.slnk b/additional objects/PROG/ZAKE_SVN_A2X.slnk deleted file mode 100644 index d21d043..0000000 --- a/additional objects/PROG/ZAKE_SVN_A2X.slnk +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - *&---------------------------------------------------------------------* -*& Report Z_ZAKE_SVN -*& -*&---------------------------------------------------------------------* -*& Checkout / Checkin the ZAKE_SVN Project -*& -*&---------------------------------------------------------------------* - -REPORT zake_svn_a2x. - -CONSTANTS cl_svn TYPE seoclsname VALUE 'ZCL_ZAKE_SVN'. -CONSTANTS cl_tortoise_svn TYPE seoclsname VALUE 'ZCL_ZAKE_TORTOISE_SVN'. - -DATA package TYPE devclass. -DATA zake TYPE REF TO zake. - -DATA objects TYPE scts_tadir. -DATA object LIKE LINE OF objects. - -DATA files TYPE string_table. -DATA file LIKE LINE OF files. - -DATA zake_build TYPE string. -DATA zake_nuggetname TYPE string. - -DATA comment_str TYPE string. -DATA loclpath_str TYPE string. -DATA svnpath_str TYPE string. -DATA username_str TYPE string. -DATA password_str TYPE string. -DATA class TYPE seoclsname. - -DATA: ex TYPE REF TO zcx_saplink, - message TYPE string. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE a. -PARAMETERS: - checkout TYPE flag RADIOBUTTON GROUP act, - update TYPE flag RADIOBUTTON GROUP act DEFAULT 'X', - install TYPE flag RADIOBUTTON GROUP act, - export TYPE flag RADIOBUTTON GROUP act, - build TYPE flag RADIOBUTTON GROUP act, - checkin TYPE flag RADIOBUTTON GROUP act. -SELECTION-SCREEN END OF BLOCK a. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE b. -PARAMETERS: - svn TYPE flag RADIOBUTTON GROUP cl, - tortoise TYPE flag RADIOBUTTON GROUP cl. -SELECTION-SCREEN END OF BLOCK b. - -SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE c. -PARAMETERS: - loclpath TYPE char512 DEFAULT 'C:\Projects\abap2xlsx\trunk' LOWER CASE OBLIGATORY, - zakenugg TYPE char512 DEFAULT 'C:\Projects\abap2xlsx\nuggs\abap2xlsx_Daily.nugg' LOWER CASE OBLIGATORY, - svnpath TYPE char512 DEFAULT 'https://code.sdn.sap.com/svn/abap2xlsx/trunk' LOWER CASE OBLIGATORY, - comment TYPE char512 DEFAULT '' LOWER CASE, - username TYPE char512 LOWER CASE, - password TYPE char512 LOWER CASE, - testrun TYPE flag DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK c. - -INITIALIZATION. - a = 'Action'. - b = 'Version Controll Program'. - c = 'Parameters'. - -START-OF-SELECTION. - - svnpath_str = svnpath. - loclpath_str = loclpath. - zake_nuggetname = zakenugg. - comment_str = comment. - - " SELECT * INTO TABLE objects FROM tadir WHERE devclass = 'ZABAP2XLSX'. - " DELETE zake_objects WHERE object = 'DEVC'. - - TRY. - IF svn = 'X'. - class = cl_svn. - ELSE. - class = cl_tortoise_svn. - ENDIF. - - CREATE OBJECT zake - TYPE - (class) - EXPORTING - i_svnpath = svnpath_str - i_localpath = loclpath_str. - zake->set_testrun( testrun ). - zake->set_package( 'ZA2X' ). - - IF checkout = 'X'. - zake->checkout( ). - ELSEIF update = 'X'. - zake->update( ). - ELSEIF install = 'X'. - zake->install_slinkees_from_lm( testrun ). - " zake->install_objects( zake_objects ). - ELSEIF export = 'X'. - " Build Object list for Export - " Programs - object-object = 'PROG'. - object-obj_name = 'ZAKE_SVN_A2X'. - APPEND object TO objects. - zake->set_checkin_objects( objects ). - zake->download_slinkees_to_lm = abap_true. - zake->download_nugget_to_lm = space. - zake->download_zip_to_lm_flag = space. - zake->create_slinkees( zake_nuggetname ). - ELSEIF build = 'X'. - " Build a complete package for download - zake->set_checkin_objects( objects ). - " We don't want that for the complete Package Slinkees are created - " in the ZAKE folder - zake->download_slinkees_to_lm = space. - zake->download_nugget_to_lm = space. - zake->create_slinkees( zake_nuggetname ). - ELSEIF checkin = 'X'. - zake->set_package( 'ZA2X' ). - zake->set_checkin_objects( objects ). - zake->create_slinkees( zake_nuggetname ). - IF testrun IS INITIAL. - zake->checkin( comment_str ). - ENDIF. - ENDIF. - CATCH zcx_saplink INTO ex. - message = ex->msg. - WRITE: / 'An Error occured: ', message. - ENDTRY. - diff --git a/additional objects/PROG/ZDEMO_EXCEL_GAPPS.slnk b/additional objects/PROG/ZDEMO_EXCEL_GAPPS.slnk deleted file mode 100644 index d80fc7e..0000000 --- a/additional objects/PROG/ZDEMO_EXCEL_GAPPS.slnk +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel_gapps. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i. - - -PARAMETERS: consumer TYPE zoauth2_consumer_name, - username TYPE zoauth2_user_name, - proxyhst TYPE string, - proxysrv TYPE string, - ssl_id TYPE ssfapplssl DEFAULT 'ANONYM'. - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://cw.sdn.sap.com/cw/groups/abap2xlsx' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_width( ip_width = 11 ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Save the file ONLINE - DATA: lo_spreadsheet TYPE REF TO zcl_docs_spreadsheet. - - CREATE OBJECT lo_spreadsheet - EXPORTING - i_consumer_name = consumer - i_user_name = username - i_proxy_host = proxyhst - i_proxy_service = proxysrv - i_ssl_id = ssl_id. - - lv_bytecount = XSTRLEN( lv_file ). - - lo_spreadsheet->zif_docs~upload( i_document = lv_file - i_title = 'demo1froma2xlsx' i_size = lv_bytecount ). - diff --git a/additional objects/WDYA/ZDEMO_EXCEL_WDA01.slnk b/additional objects/WDYA/ZDEMO_EXCEL_WDA01.slnk deleted file mode 100644 index 44ff5c6..0000000 --- a/additional objects/WDYA/ZDEMO_EXCEL_WDA01.slnk +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/additional objects/WDYN/ZDEMO_EXCEL_WDA01.slnk b/additional objects/WDYN/ZDEMO_EXCEL_WDA01.slnk deleted file mode 100644 index 05b9b41..0000000 --- a/additional objects/WDYN/ZDEMO_EXCEL_WDA01.slnk +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/6.20 patch/abap2xlsx6.20patch.nugg.zip b/build/6.20 patch/abap2xlsx6.20patch.nugg.zip deleted file mode 100644 index 96f0f3e8985421ce1ed74aee12b54469b2ee1ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17356 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 - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - ranges->add( ip_range ). - endmethod. - - - method CLEAR. - ranges->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT ranges. - - endmethod. - - - - - method GET. - eo_range ?= ranges->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= ranges->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = ranges->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - ranges->remove( ip_range ). - endmethod. - - - - method SIZE. - ep_size = ranges->if_object_collection~size( ). - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - TYPES: BEGIN OF t_relationship, - id TYPE string, - type TYPE string, - target TYPE string, - END OF t_relationship. - -* - CLASS lcl_abap_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: abap_zip TYPE REF TO cl_abap_zip. - METHODS constructor IMPORTING i_data TYPE xstring - RAISING zcx_excel. - ENDCLASS. "lcl_abap_zip_archive DEFINITION - -* - CLASS lcl_alternate_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: alternate_zip TYPE REF TO object. - METHODS constructor - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RAISING zcx_excel. - ENDCLASS. "lcl_alternate_zip_archive DEFINITION - -* - CLASS lcl_abap_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_abap_zip_archive - EXPORTING - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT abap_zip. - abap_zip->load( - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - CALL METHOD abap_zip->get - EXPORTING - name = i_filename - IMPORTING - content = r_content - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_abap_zip_archive IMPLEMENTATION - -* - CLASS lcl_alternate_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_alternate_zip_archive - EXPORTING - i_alternate_zip_class = i_alternate_zip_class - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT alternate_zip TYPE (i_alternate_zip_class). - TRY. - CALL METHOD alternate_zip->('LOAD') - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method LOAD missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - TRY. - CALL METHOD alternate_zip->('GET') - EXPORTING - name = i_filename - IMPORTING - content = r_content " Contents - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method GET missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_alternate_zip_archive IMPLEMENTATION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -* -class lcl_zip_archive definition abstract. - public section. - methods read abstract - importing i_filename type csequence - returning value(r_content) type xstring " Remember copy-on-write! - raising zcx_excel. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - IXML - - - - - - - METHOD zif_excel_reader~load. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Map Document Properties to ZCL_EXCEL -*--------------------------------------------------------------------* - - CONSTANTS: lcv_core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lcv_office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'. - - DATA: lo_rels TYPE REF TO if_ixml_document, - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship. - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller - -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets - -* §3 Extracting from this the path&file where the workbook is located -* Following is an example how this file could be set up -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* <Relationship Target="docProps/core.xml" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Id="rId2"/> -* <Relationship Target="xl/workbook.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Id="rId1"/> -* </Relationships> -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller -*--------------------------------------------------------------------* - IF iv_zcl_excel_classname IS INITIAL. - CREATE OBJECT r_excel. - ELSE. - CREATE OBJECT r_excel TYPE (iv_zcl_excel_classname). - ENDIF. - - zip = create_zip_archive( i_xlsx_binary = i_excel2007 - i_use_alternate_zip = i_use_alternate_zip ). - -*--------------------------------------------------------------------* -* §2 Get file in folderstructure -*--------------------------------------------------------------------* - lo_rels = get_ixml_from_zip_archive( '_rels/.rels' ). - -*--------------------------------------------------------------------* -* §3 Cycle through the Relationship Tags and use the ones we need -*--------------------------------------------------------------------* - lo_node ?= lo_rels->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_relationship ). - CASE ls_relationship-type. - - WHEN lcv_office_document. -*--------------------------------------------------------------------* -* Parse workbook - main part here -*--------------------------------------------------------------------* - load_workbook( iv_workbook_full_filename = ls_relationship-target - io_excel = r_excel ). - - WHEN lcv_core_properties. - " 2do§1 Map Document Properties to ZCL_EXCEL - - WHEN OTHERS. - - ENDCASE. - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - METHOD zif_excel_reader~load_file. - - DATA: lv_excel_data TYPE xstring. - -*--------------------------------------------------------------------* -* Read file into binary string -*--------------------------------------------------------------------* - IF i_from_applserver = abap_true. - lv_excel_data = read_from_applserver( i_filename ). - ELSE. - lv_excel_data = read_from_local_file( i_filename ). - ENDIF. - -*--------------------------------------------------------------------* -* Parse Excel data into ZCL_EXCEL object from binary string -*--------------------------------------------------------------------* - r_excel = zif_excel_reader~load( i_excel2007 = lv_excel_data - i_use_alternate_zip = i_use_alternate_zip - iv_zcl_excel_classname = iv_zcl_excel_classname ). - -ENDMETHOD. - - - - - - - METHOD create_zip_archive. - CASE i_use_alternate_zip. - WHEN space. - e_zip = lcl_abap_zip_archive=>create( i_xlsx_binary ). - WHEN OTHERS. - e_zip = lcl_alternate_zip_archive=>create( i_data = i_xlsx_binary - i_alternate_zip_class = i_use_alternate_zip ). - ENDCASE. -ENDMETHOD. - - - - - METHOD fill_row_outlines. - - TYPES: BEGIN OF lts_row_data, - row TYPE i, - outline_level TYPE i, - END OF lts_row_data, - ltt_row_data TYPE SORTED TABLE OF lts_row_data WITH UNIQUE KEY row. - - DATA: lt_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - - lt_row_data TYPE ltt_row_data, - ls_row_data LIKE LINE OF lt_row_data, - lt_collapse_rows TYPE HASHED TABLE OF i WITH UNIQUE KEY table_line, - - lv_collapsed TYPE abap_bool, - - lv_outline_level TYPE i, - lv_next_consecutive_row TYPE i, - lt_outline_rows TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - ls_outline_row LIKE LINE OF lt_outline_rows, - - lv_row_offset TYPE i, - lv_row_collapse_flag TYPE i. - - - FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF lt_row_dimensions, - <ls_row_data> LIKE LINE OF lt_row_data. - -* First collect information about outlines ( outline leven and collapsed state ) - lt_row_dimensions = io_worksheet->get_row_dimensions( ). - LOOP AT lt_row_dimensions ASSIGNING <ls_row_dimension>. - - ls_row_data-row = <ls_row_dimension>-row. - ls_row_data-outline_level = <ls_row_dimension>-row_dimension->get_outline_level( ). - IF ls_row_data-outline_level IS NOT INITIAL. - INSERT ls_row_data INTO TABLE lt_row_data. - ENDIF. - - lv_collapsed = <ls_row_dimension>-row_dimension->get_collapsed( ). - IF lv_collapsed = abap_true. - INSERT <ls_row_dimension>-row INTO TABLE lt_collapse_rows. - ENDIF. - - ENDLOOP. - -* Now parse this information - we need consecutive rows - any gap will create a new outline - DO 7 TIMES. " max number of outlines allowed - lv_outline_level = sy-index. - CLEAR lv_next_consecutive_row. - CLEAR ls_outline_row. - LOOP AT lt_row_data ASSIGNING <ls_row_data> WHERE outline_level >= lv_outline_level. - - IF lv_next_consecutive_row <> <ls_row_data>-row " A gap --> close all open outlines - AND lv_next_consecutive_row IS NOT INITIAL. " First time in loop. - INSERT ls_outline_row INTO TABLE lt_outline_rows. - CLEAR: ls_outline_row. - ENDIF. - - IF ls_outline_row-row_from IS INITIAL. - ls_outline_row-row_from = <ls_row_data>-row. - ENDIF. - ls_outline_row-row_to = <ls_row_data>-row. - - lv_next_consecutive_row = <ls_row_data>-row + 1. - - ENDLOOP. - IF ls_outline_row-row_from IS NOT INITIAL. - INSERT ls_outline_row INTO TABLE lt_outline_rows. - ENDIF. - ENDDO. - -* lt_outline_rows holds all outline information -* we now need to determine whether the outline is collapsed or not - LOOP AT lt_outline_rows INTO ls_outline_row. - - IF io_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. - lv_row_collapse_flag = ls_outline_row-row_from - 1. - ELSE. - lv_row_collapse_flag = ls_outline_row-row_to + 1. - ENDIF. - READ TABLE lt_collapse_rows TRANSPORTING NO FIELDS WITH TABLE KEY table_line = lv_row_collapse_flag. - IF sy-subrc = 0. - ls_outline_row-collapsed = abap_true. - ENDIF. - io_worksheet->set_row_outline( iv_row_from = ls_outline_row-row_from - iv_row_to = ls_outline_row-row_to - iv_collapsed = ls_outline_row-collapsed ). - - ENDLOOP. - -* Finally purge outline information ( collapsed state, outline leve) from row_dimensions, since we want to keep these in the outline-table - LOOP AT lt_row_dimensions ASSIGNING <ls_row_dimension>. - - <ls_row_dimension>-row_dimension->set_outline_level( 0 ). - <ls_row_dimension>-row_dimension->set_collapsed( abap_false ). - - ENDLOOP. - -ENDMETHOD. - - - - - method fill_struct_from_attributes. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - - data: lv_name type string, - lo_attributes type ref to if_ixml_named_node_map, - lo_attribute type ref to if_ixml_attribute, - lo_iterator type ref to if_ixml_node_iterator. - - field-symbols: <component> type any. - -*--------------------------------------------------------------------* -* The values of named attributes of a tag are being read and moved into corresponding -* fields of given structure -* Behaves like move-corresonding tag to structure - -* Example: -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* Here the attributes are Target, Type and Id. Thus if the passed -* structure has fieldnames Id and Target these would be filled with -* "rId3" and "docProps/app.xml" respectively -*--------------------------------------------------------------------* - clear cp_structure. - - lo_attributes = ip_element->get_attributes( ). - lo_iterator = lo_attributes->create_iterator( ). - lo_attribute ?= lo_iterator->get_next( ). - while lo_attribute is bound. - - lv_name = lo_attribute->get_name( ). - translate lv_name to upper case. - assign component lv_name of structure cp_structure to <component>. - if sy-subrc = 0. - <component> = lo_attribute->get_value( ). - endif. - lo_attribute ?= lo_iterator->get_next( ). - - endwhile. - - -endmethod. - - - - - - METHOD get_dxf_style_guid. - DATA: lo_ixml_dxf_children TYPE REF TO if_ixml_node_list, - lo_ixml_iterator_dxf_children TYPE REF TO if_ixml_node_iterator, - lo_ixml_dxf_child TYPE REF TO if_ixml_element, - - lv_dxf_child_type TYPE string, - - lo_ixml_element TYPE REF TO if_ixml_element, - lo_ixml_element2 TYPE REF TO if_ixml_element, - lv_val TYPE string. - - DATA: ls_cstyle TYPE zexcel_s_cstyle_complete, - ls_cstylex TYPE zexcel_s_cstylex_complete. - - - - lo_ixml_dxf_children = io_ixml_dxf->get_children( ). - lo_ixml_iterator_dxf_children = lo_ixml_dxf_children->create_iterator( ). - lo_ixml_dxf_child ?= lo_ixml_iterator_dxf_children->get_next( ). - WHILE lo_ixml_dxf_child IS BOUND. - - lv_dxf_child_type = lo_ixml_dxf_child->get_name( ). - CASE lv_dxf_child_type. - - WHEN 'font'. -*--------------------------------------------------------------------* -* italic -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'i' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'val' ). - IF lv_val <> '0'. - ls_cstyle-font-italic = 'X'. - ls_cstylex-font-italic = 'X'. - ENDIF. - - ENDIF. -*--------------------------------------------------------------------* -* bold -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'b' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'val' ). - IF lv_val <> '0'. - ls_cstyle-font-bold = 'X'. - ls_cstylex-font-bold = 'X'. - ENDIF. - - ENDIF. -*--------------------------------------------------------------------* -* strikethrough -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'strike' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'val' ). - IF lv_val <> '0'. - ls_cstyle-font-strikethrough = 'X'. - ls_cstylex-font-strikethrough = 'X'. - ENDIF. - - ENDIF. -*--------------------------------------------------------------------* -* color -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'color' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'rgb' ). - ls_cstyle-font-color-rgb = lv_val. - ls_cstylex-font-color-rgb = 'X'. - ENDIF. - - WHEN 'fill'. - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'patternFill' ). - IF lo_ixml_element IS BOUND. - lo_ixml_element2 = lo_ixml_element->find_from_name( 'bgColor' ). - IF lo_ixml_element2 IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element2->get_attribute_ns( 'rgb' ). - IF lv_val IS NOT INITIAL. - ls_cstyle-fill-filltype = zcl_excel_style_fill=>c_fill_solid. - ls_cstyle-fill-bgcolor-rgb = lv_val. - ls_cstylex-fill-filltype = 'X'. - ls_cstylex-fill-bgcolor-rgb = 'X'. - ENDIF. - ENDIF. - CLEAR lv_val. - lv_val = lo_ixml_element2->get_attribute_ns( 'theme' ). - IF lv_val IS NOT INITIAL. - ls_cstyle-fill-filltype = zcl_excel_style_fill=>c_fill_solid. - ls_cstyle-fill-bgcolor-theme = lv_val. - ls_cstylex-fill-filltype = 'X'. - ls_cstylex-fill-bgcolor-theme = 'X'. - ENDIF. - ENDIF. - -* 2do - borders into dxf-styles. Here and in writerclass -* WHEN 'border'. -* lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'left' ). -* IF lo_ixml_element IS BOUND. -* CLEAR lv_val. -* lv_val = lo_ixml_element2->get_attribute_ns( 'style' ). -* IF lv_val IS NOT INITIAL. -* ls_cstyle-borders-left-border_style = lv_val. -* ls_cstylex-borders-left-border_style = 'X'. -* ENDIF. -* ENDIF. - - ENDCASE. - - lo_ixml_dxf_child ?= lo_ixml_iterator_dxf_children->get_next( ). - - ENDWHILE. - - - - - rv_style_guid = io_excel->get_static_cellstyle_guid( ip_cstyle_complete = ls_cstyle - ip_cstylex_complete = ls_cstylex ). - - -ENDMETHOD. - - - - - - METHOD get_from_zip_archive. - - ASSERT zip IS BOUND. " zip object has to exist at this point - - r_content = zip->read( i_filename ). - -ENDMETHOD. - - - - - - - METHOD get_ixml_from_zip_archive. - - DATA: lv_content TYPE xstring, - lo_ixml TYPE REF TO if_ixml, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_istream TYPE REF TO if_ixml_istream, - lo_parser TYPE REF TO if_ixml_parser. - -*--------------------------------------------------------------------* -* Load XML file from archive into an input stream, -* and parse that stream into an ixml object -*--------------------------------------------------------------------* - lv_content = me->get_from_zip_archive( i_filename ). - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_istream = lo_streamfactory->create_istream_xstring( lv_content ). - r_ixml = lo_ixml->create_document( ). - lo_parser = lo_ixml->create_parser( stream_factory = lo_streamfactory - istream = lo_istream - document = r_ixml ). - lo_parser->set_normalizing( is_normalizing ). - lo_parser->set_validating( mode = if_ixml_parser=>co_no_validation ). - lo_parser->parse( ). - -ENDMETHOD. - - - - - - method LOAD_DRAWING_ANCHOR. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - TYPES: BEGIN OF t_ext, - cx TYPE string, - cy TYPE string, - END OF t_ext. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - node TYPE REF TO if_ixml_element, - node2 TYPE REF TO if_ixml_element, - node3 TYPE REF TO if_ixml_element, - node4 TYPE REF TO if_ixml_element, - - ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location, - ls_size TYPE zexcel_drawing_size, - ext TYPE t_ext, - lv_content TYPE xstring, - lv_relation_id TYPE string, - lv_title TYPE zexcel_sheet_title, - - cnvpr TYPE t_c_nv_pr, - blip TYPE t_blip, - chart TYPE t_chart, - drawing_type TYPE zexcel_drawing_type, - - rel_drawing TYPE t_rel_drawing. - - node ?= io_anchor_element->find_from_name( name = 'from' namespace = 'xdr' ). - CHECK node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_upper-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_upper-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_upper-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_upper-row_offset = node2->get_value( ). - - node ?= io_anchor_element->find_from_name( name = 'ext' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_size. - ELSE. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = ext ). - ls_size-width = ext-cx. - ls_size-height = ext-cy. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'to' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_lower. - ELSE. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_lower-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_lower-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_lower-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_lower-row_offset = node2->get_value( ). - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'pic' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvPicPr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'blipFill' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'blip' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = blip ). - lv_relation_id = blip-embed. - - drawing_type = zcl_excel_drawing=>type_image. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'graphicFrame' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvGraphicFramePr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'graphic' namespace = 'a' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'graphicData' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - node4 ?= node2->find_from_name( name = 'chart' namespace = 'c' ). - CHECK node4 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node4 CHANGING cp_structure = chart ). - lv_relation_id = chart-id. - - drawing_type = zcl_excel_drawing=>type_chart. - ENDIF. - - lo_drawing = io_worksheet->excel->add_new_drawing( - ip_type = drawing_type - ip_title = lv_title ). - io_worksheet->add_drawing( lo_drawing ). - - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - READ TABLE it_related_drawings INTO rel_drawing - WITH KEY id = lv_relation_id. - - lo_drawing->set_media( - EXPORTING - ip_media = rel_drawing-content - ip_media_type = rel_drawing-file_ext - ip_width = ls_size-width - ip_height = ls_size-height ). - - if drawing_type = zcl_excel_drawing=>type_chart. - "-------------Added by Alessandro Iannacci - Should load chart attributes - lo_drawing->load_chart_attributes( rel_drawing-content_xml ). - endif. - - endmethod. - - - - - - METHOD load_dxf_styles. - - DATA: lo_styles_xml TYPE REF TO if_ixml_document, - lo_node_dxfs TYPE REF TO if_ixml_element, - - lo_nodes_dxf TYPE REF TO if_ixml_node_collection, - lo_iterator_dxf TYPE REF TO if_ixml_node_iterator, - lo_node_dxf TYPE REF TO if_ixml_element, - - lv_dxf_count TYPE i. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF mt_dxf_styles. - -*--------------------------------------------------------------------* -* Look for dxfs-node -*--------------------------------------------------------------------* - lo_styles_xml = me->get_ixml_from_zip_archive( iv_path ). - lo_node_dxfs = lo_styles_xml->find_from_name( 'dxfs' ). - CHECK lo_node_dxfs IS BOUND. - - -*--------------------------------------------------------------------* -* loop through all dxf-nodes and create style for each -*--------------------------------------------------------------------* - lo_nodes_dxf ?= lo_node_dxfs->get_elements_by_tag_name( 'dxf' ). - lo_iterator_dxf = lo_nodes_dxf->create_iterator( ). - lo_node_dxf ?= lo_iterator_dxf->get_next( ). - WHILE lo_node_dxf IS BOUND. - - APPEND INITIAL LINE TO mt_dxf_styles ASSIGNING <ls_dxf_style>. - <ls_dxf_style>-dxf = lv_dxf_count. " We start counting at 0 - ADD 1 TO lv_dxf_count. " prepare next entry - - <ls_dxf_style>-guid = get_dxf_style_guid( io_ixml_dxf = lo_node_dxf - io_excel = io_excel ). - lo_node_dxf ?= lo_iterator_dxf->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - method LOAD_SHARED_STRINGS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support partial formatting of strings in cells -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: renaming variables to naming conventions -* renaming variables to indicate what they are used for -* aligning code -* adding comments to explain what we are trying to achieve -* rewriting code for better readibility -*--------------------------------------------------------------------* - - - - DATA: - lo_shared_strings_xml TYPE REF TO if_ixml_document, - lo_node_si TYPE REF TO if_ixml_element, - lo_node_si_child TYPE REF TO if_ixml_element, - lo_node_r_child_t TYPE REF TO if_ixml_element, - lv_tag_name TYPE string, - lv_node_value TYPE string. - - FIELD-SYMBOLS: <lv_shared_string> LIKE LINE OF me->shared_strings. - -*--------------------------------------------------------------------* - -* §1 Parse shared strings file and get into internal table -* So far I have encountered 2 ways how a string can be represented in the shared strings file -* §1.1 - "simple" strings -* §1.2 - rich text formatted strings - -* Following is an example how this file could be set up; 2 strings in simple formatting, 3rd string rich textformatted - - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <sst uniqueCount="6" count="6" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <si> -* <t>This is a teststring 1</t> -* </si> -* <si> -* <t>This is a teststring 2</t> -* </si> -* <si> -* <r> -* <t>T</t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color rgb="FFFF0000"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t xml:space="preserve">his is a </t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color theme="1"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t>teststring 3</t> -* </r> -* </si> -* </sst> -*--------------------------------------------------------------------* - - lo_shared_strings_xml = me->get_ixml_from_zip_archive( i_filename = ip_path - is_normalizing = space ). " NO!!! normalizing - otherwise leading blanks will be omitted and that is not really desired for the stringtable - lo_node_si ?= lo_shared_strings_xml->find_from_name( 'si' ). - WHILE lo_node_si IS BOUND. - - APPEND INITIAL LINE TO me->shared_strings ASSIGNING <lv_shared_string>. " Each <si>-entry in the xml-file must lead to an entry in our stringtable - lo_node_si_child ?= lo_node_si->get_first_child( ). - IF lo_node_si_child IS BOUND. - lv_tag_name = lo_node_si_child->get_name( ). - IF lv_tag_name = 't'. -*--------------------------------------------------------------------* -* §1.1 - "simple" strings -* Example: see above -*--------------------------------------------------------------------* - <lv_shared_string> = lo_node_si_child->get_value( ). - ELSE. -*--------------------------------------------------------------------* -* §1.2 - rich text formatted strings -* it is sufficient to strip the <t>...</t> tag from each <r>-tag and concatenate these -* as long as rich text formatting is not supported (2do§1) ignore all info about formatting -* Example: see above -*--------------------------------------------------------------------* - WHILE lo_node_si_child IS BOUND. " actually these children of <si> are <r>-tags - - lo_node_r_child_t ?= lo_node_si_child->find_from_name( 't' ). " extract the <t>...</t> part of each <r>-tag - IF lo_node_r_child_t IS BOUND. - lv_node_value = lo_node_r_child_t->get_value( ). - CONCATENATE <lv_shared_string> lv_node_value INTO <lv_shared_string> RESPECTING BLANKS. - ENDIF. - - lo_node_si_child ?= lo_node_si_child->get_next( ). - - ENDWHILE. - ENDIF. - ENDIF. - - lo_node_si ?= lo_node_si->get_next( ). - ENDWHILE. - - endmethod. - - - - - - METHOD load_styles. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (wip ) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_xf, - applyalignment TYPE string, - applyborder TYPE string, - applyfill TYPE string, - applyfont TYPE string, - applynumberformat TYPE string, - applyprotection TYPE string, - borderid TYPE string, - fillid TYPE string, - fontid TYPE string, - numfmtid TYPE string, - pivotbutton TYPE string, - quoteprefix TYPE string, - xfid TYPE string, - END OF lty_xf. - - TYPES: BEGIN OF lty_alignment, - horizontal TYPE string, - indent TYPE string, - justifylastline TYPE string, - readingorder TYPE string, - relativeindent TYPE string, - shrinktofit TYPE string, - textrotation TYPE string, - vertical TYPE string, - wraptext TYPE string, - END OF lty_alignment. - - TYPES: BEGIN OF lty_protection, - hidden TYPE string, - locked TYPE string, - END OF lty_protection. - - DATA: lo_styles_xml TYPE REF TO if_ixml_document, - lo_style TYPE REF TO zcl_excel_style, - - lt_num_formats TYPE t_num_formats, - lt_fills TYPE t_fills, - lt_borders TYPE t_borders, - lt_fonts TYPE t_fonts, - - ls_num_format TYPE t_num_format, - ls_fill TYPE REF TO zcl_excel_style_fill, - ls_cell_border TYPE REF TO zcl_excel_style_borders, - ls_font TYPE REF TO zcl_excel_style_font, - - lo_node_cellxfs TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_alignment TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_protection TYPE REF TO if_ixml_element, - - lo_nodes_xf TYPE REF TO if_ixml_node_collection, - lo_iterator_cellxfs TYPE REF TO if_ixml_node_iterator, - - ls_xf TYPE lty_xf, - ls_alignment TYPE lty_alignment, - ls_protection TYPE lty_protection, - lv_index TYPE i. - -*--------------------------------------------------------------------* -* To build a complete style that fully describes how a cell looks like -* we need the various parts -* §1 - Numberformat -* §2 - Fillstyle -* §3 - Borders -* §4 - Font -* §5 - Alignment -* §6 - Protection - -* Following is an example how this part of a file could be set up -* ... -* parts with various formatinformation - see §1,§2,§3,§4 -* ... -* <cellXfs count="26"> -* <xf numFmtId="0" borderId="0" fillId="0" fontId="0" xfId="0"/> -* <xf numFmtId="0" borderId="0" fillId="2" fontId="0" xfId="0" applyFill="1"/> -* <xf numFmtId="0" borderId="1" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="2" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="3" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="4" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="0" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* ... -* </cellXfs> -*--------------------------------------------------------------------* - - lo_styles_xml = me->get_ixml_from_zip_archive( ip_path ). - -*--------------------------------------------------------------------* -* The styles are build up from -* §1 number formats -* §2 fill styles -* §3 border styles -* §4 fonts -* These need to be read before we can try to build up a complete -* style that describes the look of a cell -*--------------------------------------------------------------------* - lt_num_formats = load_style_num_formats( lo_styles_xml ). " §1 - lt_fills = load_style_fills( lo_styles_xml ). " §2 - lt_borders = load_style_borders( lo_styles_xml ). " §3 - lt_fonts = load_style_fonts( lo_styles_xml ). " §4 - -*--------------------------------------------------------------------* -* Now everything is prepared to build a "full" style -*--------------------------------------------------------------------* - lo_node_cellxfs = lo_styles_xml->find_from_name( name = 'cellXfs' ). - IF lo_node_cellxfs IS BOUND. - lo_nodes_xf = lo_node_cellxfs->get_elements_by_tag_name( name = 'xf' ). - lo_iterator_cellxfs = lo_nodes_xf->create_iterator( ). - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - WHILE lo_node_cellxfs_xf IS BOUND. - - lo_style = ip_excel->add_new_style( ). - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf - CHANGING - cp_structure = ls_xf ). -*--------------------------------------------------------------------* -* §2 fill style -*--------------------------------------------------------------------* - IF ls_xf-applyfill = '1' AND ls_xf-fillid IS NOT INITIAL. - lv_index = ls_xf-fillid + 1. - READ TABLE lt_fills INTO ls_fill INDEX lv_index. - IF sy-subrc = 0. - lo_style->fill = ls_fill. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §1 number format -*--------------------------------------------------------------------* - IF ls_xf-numfmtid IS NOT INITIAL. - READ TABLE lt_num_formats INTO ls_num_format WITH TABLE KEY id = ls_xf-numfmtid. - IF sy-subrc = 0. - lo_style->number_format = ls_num_format-format. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §3 border style -*--------------------------------------------------------------------* - IF ls_xf-applyborder = '1' AND ls_xf-borderid IS NOT INITIAL. - lv_index = ls_xf-borderid + 1. - READ TABLE lt_borders INTO ls_cell_border INDEX lv_index. - IF sy-subrc = 0. - lo_style->borders = ls_cell_border. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §4 font -*--------------------------------------------------------------------* - IF ls_xf-applyfont = '1' AND ls_xf-fontid IS NOT INITIAL. - lv_index = ls_xf-fontid + 1. - READ TABLE lt_fonts INTO ls_font INDEX lv_index. - IF sy-subrc = 0. - lo_style->font = ls_font. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §5 - Alignment -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_alignment ?= lo_node_cellxfs_xf->find_from_name( 'alignment' ). - IF lo_node_cellxfs_xf_alignment IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_alignment - CHANGING - cp_structure = ls_alignment ). - IF ls_alignment-horizontal IS NOT INITIAL. - lo_style->alignment->horizontal = ls_alignment-horizontal. - ENDIF. - - IF ls_alignment-vertical IS NOT INITIAL. - lo_style->alignment->vertical = ls_alignment-vertical. - ENDIF. - - IF ls_alignment-textrotation IS NOT INITIAL. - lo_style->alignment->textrotation = ls_alignment-textrotation. - ENDIF. - - IF ls_alignment-wraptext = '1' OR ls_alignment-wraptext = 'true'. - lo_style->alignment->wraptext = abap_true. - ENDIF. - - IF ls_alignment-shrinktofit = '1' OR ls_alignment-shrinktofit = 'true'. - lo_style->alignment->shrinktofit = abap_true. - ENDIF. - - IF ls_alignment-indent IS NOT INITIAL. - lo_style->alignment->indent = ls_alignment-indent. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §6 - Protection -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_protection ?= lo_node_cellxfs_xf->find_from_name( 'protection' ). - IF lo_node_cellxfs_xf_protection IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_protection - CHANGING - cp_structure = ls_protection ). - IF ls_protection-locked = '1' OR ls_protection-locked = 'true'. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_locked. - ELSE. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - ENDIF. - - IF ls_protection-hidden = '1' OR ls_protection-hidden = 'true'. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_hidden. - ELSE. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_unhidden. - ENDIF. - - ENDIF. - - INSERT lo_style INTO TABLE me->styles. - - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - - ENDWHILE. - ENDIF. - -ENDMETHOD. - - - - - method LOAD_STYLE_BORDERS. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_border TYPE REF TO if_ixml_element, - lo_node_bordertype TYPE REF TO if_ixml_element, - lo_node_bordercolor TYPE REF TO if_ixml_element, - lo_cell_border TYPE REF TO zcl_excel_style_borders, - lo_border TYPE REF TO zcl_excel_style_border, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used borderformats to build up our styles -* §1 A cell has 4 outer borders and 2 diagonal "borders" -* These borders can be formatted separately but the diagonal borders -* are always being formatted the same -* We'll parse through the <border>-tag for each of the bordertypes -* §2 and read the corresponding formatting information - -* Following is an example how this part of a file could be set up -* <border diagonalDown="1"> -* <left style="mediumDashDotDot"> -* <color rgb="FFFF0000"/> -* </left> -* <right/> -* <top style="thick"> -* <color rgb="FFFF0000"/> -* </top> -* <bottom style="thick"> -* <color rgb="FFFF0000"/> -* </bottom> -* <diagonal style="thick"> -* <color rgb="FFFF0000"/> -* </diagonal> -* </border> -*--------------------------------------------------------------------* - lo_node_border ?= ip_xml->find_from_name( 'border' ). - WHILE lo_node_border IS BOUND. - - CREATE OBJECT lo_cell_border. - -*--------------------------------------------------------------------* -* Diagonal borderlines are formatted the equally. Determine what kind of diagonal borders are present if any -*--------------------------------------------------------------------* -* DiagonalNone = 0 -* DiagonalUp = 1 -* DiagonalDown = 2 -* DiagonalBoth = 3 -*--------------------------------------------------------------------* - IF lo_node_border->get_attribute( 'diagonalDown' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_down to lo_cell_border->diagonal_mode. - ENDIF. - - IF lo_node_border->get_attribute( 'diagonalUp' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_up to lo_cell_border->diagonal_mode. - ENDIF. - - lo_node_bordertype ?= lo_node_border->get_first_child( ). - WHILE lo_node_bordertype IS BOUND. -*--------------------------------------------------------------------* -* §1 Determine what kind of border we are talking about -*--------------------------------------------------------------------* -* Up, down, left, right, diagonal -*--------------------------------------------------------------------* - CREATE OBJECT lo_border. - - CASE lo_node_bordertype->get_name( ). - - WHEN 'left'. - lo_cell_border->left = lo_border. - - WHEN 'right'. - lo_cell_border->right = lo_border. - - WHEN 'top'. - lo_cell_border->top = lo_border. - - WHEN 'bottom'. - lo_cell_border->down = lo_border. - - WHEN 'diagonal'. - lo_cell_border->diagonal = lo_border. - - ENDCASE. - -*--------------------------------------------------------------------* -* §2 Read the border-formatting -*--------------------------------------------------------------------* - lo_border->border_style = lo_node_bordertype->get_attribute( 'style' ). - lo_node_bordercolor ?= lo_node_bordertype->find_from_name( 'color' ). - IF lo_node_bordercolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bordercolor - CHANGING - cp_structure = ls_color ). - - lo_border->border_color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_border->border_color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_border->border_color-theme = ls_color-theme. - ENDIF. - lo_border->border_color-tint = ls_color-tint. - ENDIF. - - lo_node_bordertype ?= lo_node_bordertype->get_next( ). - - ENDWHILE. - - INSERT lo_cell_border INTO TABLE ep_borders. - - lo_node_border ?= lo_node_border->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_FILLS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support gradientFill -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* commenting on problems/future enhancements/todos we already know of or should decide upon -* adding comments to explain what we are trying to achieve -* renaming variables to indicate what they are used for -*--------------------------------------------------------------------* - DATA: lv_value TYPE string, - lo_node_fill TYPE REF TO if_ixml_element, - lo_node_fill_child TYPE REF TO if_ixml_element, - lo_node_bgcolor TYPE REF TO if_ixml_element, - lo_node_fgcolor TYPE REF TO if_ixml_element, - lo_node_stop TYPE REF TO if_ixml_element, - lo_fill TYPE REF TO zcl_excel_style_fill, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fillformats to build up our styles - -* Following is an example how this part of a file could be set up -* <fill> -* <patternFill patternType="gray125"/> -* </fill> -* <fill> -* <patternFill patternType="solid"> -* <fgColor rgb="FFFFFF00"/> -* <bgColor indexed="64"/> -* </patternFill> -* </fill> -*--------------------------------------------------------------------* - - lo_node_fill ?= ip_xml->find_from_name( 'fill' ). - WHILE lo_node_fill IS BOUND. - - CREATE OBJECT lo_fill. - lo_node_fill_child ?= lo_node_fill->get_first_child( ). - lv_value = lo_node_fill_child->get_name( ). - CASE lv_value. - -*--------------------------------------------------------------------* -* Patternfill -*--------------------------------------------------------------------* - WHEN 'patternFill'. - lo_fill->filltype = lo_node_fill_child->get_attribute( 'patternType' ). -*--------------------------------------------------------------------* -* Patternfill - background color -*--------------------------------------------------------------------* - lo_node_bgcolor = lo_node_fill_child->find_from_name( 'bgColor' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - -*--------------------------------------------------------------------* -* Patternfill - foreground color -*--------------------------------------------------------------------* - lo_node_fgcolor = lo_node_fill->find_from_name( 'fgColor' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - - -*--------------------------------------------------------------------* -* gradientFill -*--------------------------------------------------------------------* - WHEN 'gradientFill'. - lo_fill->gradtype-type = lo_node_fill_child->get_attribute( 'type' ). - lo_fill->gradtype-top = lo_node_fill_child->get_attribute( 'top' ). - lo_fill->gradtype-left = lo_node_fill_child->get_attribute( 'left' ). - lo_fill->gradtype-right = lo_node_fill_child->get_attribute( 'right' ). - lo_fill->gradtype-bottom = lo_node_fill_child->get_attribute( 'bottom' ). - lo_fill->gradtype-degree = lo_node_fill_child->get_attribute( 'degree' ). - free lo_node_stop. - lo_node_stop ?= lo_node_fill_child->find_from_name( 'stop' ). - while lo_node_stop is bound. - if lo_fill->gradtype-position1 is initial. - lo_fill->gradtype-position1 = lo_node_stop->get_attribute( 'position' ). - lo_node_bgcolor = lo_node_stop->find_from_name( 'color' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - elseif lo_fill->gradtype-position2 is initial. - lo_fill->gradtype-position2 = lo_node_stop->get_attribute( 'position' ). - lo_node_fgcolor = lo_node_stop->find_from_name( 'color' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - elseif lo_fill->gradtype-position3 is initial. - lo_fill->gradtype-position3 = lo_node_stop->get_attribute( 'position' ). - "BGColor is filled already with position 1 no need to check again - endif. - - lo_node_stop ?= lo_node_stop->get_next( ). - ENDWHILE. - - WHEN OTHERS. - - ENDCASE. - - - INSERT lo_fill INTO TABLE ep_fills. - - lo_node_fill ?= lo_node_fill->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - METHOD load_style_fonts. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* removing unused variables -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_font TYPE REF TO if_ixml_element, - lo_node2 TYPE REF TO if_ixml_element, - lo_font TYPE REF TO zcl_excel_style_font, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fonts to build up our styles - -* Following is an example how this part of a file could be set up -* <font> -* <sz val="11"/> -* <color theme="1"/> -* <name val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </font> -*--------------------------------------------------------------------* - lo_node_font ?= ip_xml->find_from_name( 'font' ). - WHILE lo_node_font IS BOUND. - - CREATE OBJECT lo_font. -*--------------------------------------------------------------------* -* Bold -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'b' ) IS BOUND. - lo_font->bold = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Italic -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'i' ) IS BOUND. - lo_font->italic = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Underline -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'u' ). - IF lo_node2 IS BOUND. - lo_font->underline = abap_true. - lo_font->underline_mode = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* StrikeThrough -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'strike' ) IS BOUND. - lo_font->strikethrough = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Fontsize -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'sz' ). - IF lo_node2 IS BOUND. - lo_font->size = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontname -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'name' ). - IF lo_node2 IS BOUND. - lo_font->name = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontfamily -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'family' ). - IF lo_node2 IS BOUND. - lo_font->family = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontscheme -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'scheme' ). - IF lo_node2 IS BOUND. - lo_font->scheme = lo_node2->get_attribute( 'val' ). - ELSE. - CLEAR lo_font->scheme. - ENDIF. - -*--------------------------------------------------------------------* -* Fontcolor -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'color' ). - IF lo_node2 IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node2 - CHANGING - cp_structure = ls_color ). - lo_font->color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_font->color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_font->color-theme = ls_color-theme. - ENDIF. - lo_font->color-tint = ls_color-tint. - ENDIF. - - INSERT lo_font INTO TABLE ep_fonts. - - lo_node_font ?= lo_node_font->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - method LOAD_STYLE_NUM_FORMATS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Explain gaps in predefined formats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* adding comments to explain what we are trying to achieve -* aligning code -*--------------------------------------------------------------------* - DATA: lo_node_numfmt TYPE REF TO if_ixml_element, - ls_num_format TYPE t_num_format. - -*--------------------------------------------------------------------* -* We need a table of used numberformats to build up our styles -* there are two kinds of numberformats -* §1 those that have been explicitly added by the createor of the excel-file -* §2 and built-in numberformats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 Get non-internal numberformats that are found in the file explicitly - -* Following is an example how this part of a file could be set up -* <numFmts count="1"> -* <numFmt formatCode="#,###,###,###,##0.00" numFmtId="164"/> -* </numFmts> -*--------------------------------------------------------------------* - lo_node_numfmt ?= ip_xml->find_from_name( 'numFmt' ). - WHILE lo_node_numfmt IS BOUND. - - CLEAR ls_num_format. - - CREATE OBJECT ls_num_format-format. - ls_num_format-format->format_code = lo_node_numfmt->get_attribute( 'formatCode' ). - ls_num_format-id = lo_node_numfmt->get_attribute( 'numFmtId' ). - INSERT ls_num_format INTO TABLE ep_num_formats. - - lo_node_numfmt ?= lo_node_numfmt->get_next( ). - - ENDWHILE. - - DEFINE predefined_format. - ls_num_format-id = &1. - create object ls_num_format-format. - ls_num_format-format->format_code = &2. - insert ls_num_format into table ep_num_formats. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* §1 Get internal predefined numberformats -*--------------------------------------------------------------------* - predefined_format '1' '0'. - predefined_format '2' '0.00'. - predefined_format '3' '#,##0'. - predefined_format '4' '#,##0.00'. - predefined_format '5' '$#,##0_);($#,##0)'. - predefined_format '6' '$#,##0_);[Red]($#,##0)'. - predefined_format '7' '$#,##0.00_);($#,##0.00)'. - predefined_format '8' '$#,##0.00_);[Red]($#,##0.00)'. - predefined_format '9' '0%'. - predefined_format '10' '0.00%'. - predefined_format '11' '0.00E+00'. - predefined_format '12' '# ?/?'. - predefined_format '13' '# ??/??'. - predefined_format '14' 'm/d/yyyy'. - predefined_format '15' 'd-mmm-yy'. - predefined_format '16' 'd-mmm'. - predefined_format '17' 'mmm-yy'. - predefined_format '18' 'h:mm AM/PM'. - predefined_format '19' 'h:mm:ss AM/PM'. - predefined_format '20' 'h:mm'. - predefined_format '21' 'h:mm:ss'. - predefined_format '22' 'm/d/yyyy h:mm'. -* 2do§1 Why is there a gap in here? - - - - - - - - - - - - - - predefined_format '37' '#,##0_);(#,##0)'. - predefined_format '38' '#,##0_);[Red](#,##0)'. - predefined_format '39' '#,##0.00_);(#,##0.00)'. - predefined_format '40' '#,##0.00_);[Red](#,##0.00)'. -* 2do§1 Why is there a gap in here? - - - - predefined_format '45' 'mm:ss'. - predefined_format '46' '[h]:mm:ss'. - predefined_format '47' 'mm:ss.0'. - predefined_format '48' '##0.0E+0'. - predefined_format '49' '@'. -* 2do§1 Is 49 really the last predefined format? - - - endmethod. - - - - - - method LOAD_WORKBOOK. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Move macro-reading from zcl_excel_reader_xlsm to this class -* autodetect existance of macro/vba content -* Allow inputparameter to explicitly tell reader to ignore vba-content -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-10 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* removing unused variables -* adding me-> where possible -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -* renaming i/o parameters: previous input-parameter ip_path holds a (full) filename and not a path --> rename to iv_workbook_full_filename -* ip_excel renamed while being at it --> rename to io_excel -*--------------------------------------------------------------------* -* issue #232 - Read worksheetstate hidden/veryHidden -* - Stefan Schmöcker, 2012-11-11 -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 -* changes: correction in named ranges to correctly attach -* sheetlocal names/ranges to the correct sheet -*--------------------------------------------------------------------* -* issue#284 - Copied formulae ignored when reading excelfile -* - Stefan Schmöcker, 2013-08-02 -* changes: initialize area to hold referenced formulaedata -* after all worksheets have been read resolve formuae -*--------------------------------------------------------------------* - - CONSTANTS: lcv_shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - lcv_worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lcv_styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lcv_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - begin data declarations -*--------------------------------------------------------------------* - lcv_worksheet_state_hidden TYPE string VALUE 'hidden', - lcv_worksheet_state_veryhidden TYPE string VALUE 'veryHidden'. -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - end data declarations -*--------------------------------------------------------------------* - - DATA: - lv_path TYPE string, - lv_filename TYPE chkfile, - lv_full_filename TYPE string, - - lo_rels_workbook TYPE REF TO if_ixml_document, - lt_worksheets TYPE STANDARD TABLE OF t_relationship WITH NON-UNIQUE DEFAULT KEY, - lo_workbook TYPE REF TO if_ixml_document, - lv_workbook_index TYPE i, - lv_worksheet_path TYPE string, - ls_sheet TYPE t_sheet, - - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lv_worksheet_title TYPE zexcel_sheet_title, - lv_tabix TYPE sytabix, " #235 - repeat rows/cols. Needed to link defined name to correct worksheet - - ls_range TYPE t_range, - lv_range_value TYPE zexcel_range_value, -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin data declarations -*--------------------------------------------------------------------* - lv_active_sheet_string TYPE string, - lv_zexcel_active_worksheet TYPE zexcel_active_worksheet, -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - added autofilter support while changing this section - lo_autofilter TYPE REF TO zcl_excel_autofilter, - ls_area TYPE zexcel_s_autofilter_area, - lv_col_start_alpha TYPE zexcel_cell_column_alpha, - lv_col_end_alpha TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row , - lv_regex TYPE string, - lv_range_value_1 TYPE zexcel_range_value, - lv_range_value_2 TYPE zexcel_range_value. -*--------------------------------------------------------------------* -* #229: Set active worksheet - end data declarations -*--------------------------------------------------------------------* - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - -*--------------------------------------------------------------------* - -* §1 Get the position of files related to this workbook -* Usually this will be <root>/xl/workbook.xml -* Thus the workbookroot will be <root>/xl/ -* The position of all related files will be given in file -* <workbookroot>/_rels/<workbookfilename>.rels and their positions -* be be given relative to the workbookroot - -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="styles.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Id="rId6"/> -* <Relationship Target="theme/theme1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Id="rId5"/> -* <Relationship Target="worksheets/sheet1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId1"/> -* <Relationship Target="worksheets/sheet2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId2"/> -* <Relationship Target="worksheets/sheet3.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId3"/> -* <Relationship Target="worksheets/sheet4.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId4"/> -* <Relationship Target="sharedStrings.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Id="rId7"/> -* </Relationships> -* -* §2 Load data that is relevant to the complete workbook -* Currently supported is: -* §2.1 Shared strings - This holds all strings that are used in all worksheets -* §2.2 Styles - This holds all styles that are used in all worksheets -* §2.3 Worksheets - For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* §2.4 [Themes] - not supported -* §2.5 [VBA (Macro)] - supported in class zcl_excel_reader_xlsm but should be moved here and autodetect -* ... -* -* §3 Some information is held in the workbookfile as well -* §3.1 Names and order of of worksheets -* §3.2 Active worksheet -* §3.3 Defined names -* ... -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <fileVersion rupBuild="4506" lowestEdited="4" lastEdited="4" appName="xl"/> -* <workbookPr defaultThemeVersion="124226"/> -* <bookViews> -* <workbookView activeTab="1" windowHeight="8445" windowWidth="19035" yWindow="120" xWindow="120"/> -* </bookViews> -* <sheets> -* <sheet r:id="rId1" sheetId="1" name="Sheet1"/> -* <sheet r:id="rId2" sheetId="2" name="Sheet2"/> -* <sheet r:id="rId3" sheetId="3" name="Sheet3" state="hidden"/> -* <sheet r:id="rId4" sheetId="4" name="Sheet4"/> -* </sheets> -* <definedNames/> -* <calcPr calcId="125725"/> -* </workbook> -*--------------------------------------------------------------------* - - CLEAR me->mt_ref_formulae. " ins issue#284 - -*--------------------------------------------------------------------* -* §1 Get the position of files related to this workbook -* Entry into this method is with the filename of the workbook -*--------------------------------------------------------------------* - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = lv_filename - file_path = lv_path. - - CONCATENATE lv_path '_rels/' lv_filename '.rels' - INTO lv_full_filename. - lo_rels_workbook = me->get_ixml_from_zip_archive( lv_full_filename ). - - lo_node ?= lo_rels_workbook->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING ip_element = lo_node CHANGING cp_structure = ls_relationship ). - - CASE ls_relationship-type. - -*--------------------------------------------------------------------* -* §2.1 Shared strings - This holds all strings that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_shared_strings. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_shared_strings( lv_full_filename ). - -*--------------------------------------------------------------------* -* §2.3 Worksheets -* For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* Shared strings and styles have to be present before we can start with creating the worksheets -* thus we only store this information for use when parsing the workbookfile for sheetinformations -*--------------------------------------------------------------------* - WHEN lcv_worksheet. - APPEND ls_relationship TO lt_worksheets. - -*--------------------------------------------------------------------* -* §2.2 Styles - This holds the styles that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_styles. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_styles( ip_path = lv_full_filename - ip_excel = io_excel ). - me->load_dxf_styles( iv_path = lv_full_filename - io_excel = io_excel ). - - WHEN OTHERS. - - ENDCASE. - - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - -*--------------------------------------------------------------------* -* §3 Some information held in the workbookfile -*--------------------------------------------------------------------* - lo_workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - -*--------------------------------------------------------------------* -* §3.1 Names and order of of worksheets -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'sheet' ). - lv_workbook_index = 1. - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_sheet ). -*--------------------------------------------------------------------* -* Create new worksheet in workbook with correct name -*--------------------------------------------------------------------* - lv_worksheet_title = ls_sheet-name. - IF lv_workbook_index = 1. " First sheet has been added automatically by creating io_excel - lo_worksheet = io_excel->get_active_worksheet( ). - lo_worksheet->set_title( lv_worksheet_title ). - ELSE. - lo_worksheet = io_excel->add_new_worksheet( lv_worksheet_title ). - ENDIF. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - begin of coding -* Set status hidden if necessary -*--------------------------------------------------------------------* - CASE ls_sheet-state. - - WHEN lcv_worksheet_state_hidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - WHEN lcv_worksheet_state_veryhidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_veryhidden. - - ENDCASE. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - end of coding -*--------------------------------------------------------------------* -*--------------------------------------------------------------------* -* Load worksheetdata -*--------------------------------------------------------------------* - READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_sheet-id. - IF sy-subrc = 0. - <worksheet>-sheetid = ls_sheet-sheetid. "ins #235 - repeat rows/cols - needed to identify correct sheet - CONCATENATE lv_path <worksheet>-target - INTO lv_worksheet_path. - me->load_worksheet( ip_path = lv_worksheet_path - io_worksheet = lo_worksheet ). - <worksheet>-worksheet = lo_worksheet. - ENDIF. - - lo_node ?= lo_node->get_next( ). - ADD 1 TO lv_workbook_index. - - ENDWHILE. - SORT lt_worksheets BY sheetid. " needed for localSheetid -referencing - -*--------------------------------------------------------------------* -* #284: Set active worksheet - Resolve referenced formulae to -* explicit formulae those cells -*--------------------------------------------------------------------* - me->resolve_referenced_formulae( ). - " ins issue#284 -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin coding -* §3.2 Active worksheet -*--------------------------------------------------------------------* - lv_zexcel_active_worksheet = 1. " First sheet = active sheet if nothing else specified. - lo_node ?= lo_workbook->find_from_name( 'workbookView' ). - IF lo_node IS BOUND. - lv_active_sheet_string = lo_node->get_attribute( 'activeTab' ). - TRY. - lv_zexcel_active_worksheet = lv_active_sheet_string + 1. " EXCEL numbers the sheets from 0 onwards --> index into worksheettable is increased by one - CATCH cx_sy_conversion_error. "#EC NO_HANDLER - error here --> just use the default 1st sheet - ENDTRY. - ENDIF. - io_excel->set_active_sheet_index( lv_zexcel_active_worksheet ). -*--------------------------------------------------------------------* -* #229: Set active worksheet - end coding -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §3.3 Defined names -* So far I have encountered these -* - named ranges - sheetlocal -* - named ranges - workbookglobal -* - autofilters - sheetlocal ( special range ) -* - repeat rows/cols - sheetlocal ( special range ) -* -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'definedName' ). - WHILE lo_node IS BOUND. - - CLEAR lo_range. "ins issue #235 - repeat rows/cols - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_range ). - lv_range_value = lo_node->get_value( ). - - IF ls_range-localsheetid IS NOT INITIAL. " issue #163+ -* READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_range-localsheetid. "del issue #235 - repeat rows/cols " issue #163+ -* lo_range = <worksheet>-worksheet->add_new_range( ). "del issue #235 - repeat rows/cols " issue #163+ -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - begin -*--------------------------------------------------------------------* - lv_tabix = ls_range-localsheetid + 1. - READ TABLE lt_worksheets ASSIGNING <worksheet> INDEX lv_tabix. - IF sy-subrc = 0. - CASE ls_range-name. - -*--------------------------------------------------------------------* -* insert autofilters -*--------------------------------------------------------------------* - WHEN zcl_excel_autofilters=>c_autofilter. - lo_autofilter = io_excel->add_new_autofilter( io_sheet = <worksheet>-worksheet ) . - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = ls_area-row_start ). - ls_area-col_start = zcl_excel_common=>convert_column2int( lv_col_start_alpha ). - ls_area-col_end = zcl_excel_common=>convert_column2int( lv_col_end_alpha ). - lo_autofilter->set_filter_area( is_area = ls_area ). - -*--------------------------------------------------------------------* -* repeat print rows/columns -*--------------------------------------------------------------------* - WHEN zif_excel_sheet_printsettings=>gcv_print_title_name. - lo_range = <worksheet>-worksheet->add_new_range( ). -*--------------------------------------------------------------------* -* This might be a temporary solution. Maybe ranges get be reworked -* to support areas consisting of multiple rectangles -* But for now just split the range into row and columnpart -*--------------------------------------------------------------------* - CLEAR:lv_range_value_1, - lv_range_value_2. - IF lv_range_value IS INITIAL. -* Empty --> nothing to do - ELSE. - IF lv_range_value(1) = `'`. " Escaped - lv_regex = `^('[^']*')+![^,]*,`. - ELSE. - lv_regex = `^[^!]*![^,]*,`. - ENDIF. -* Split into two ranges if necessary - FIND REGEX lv_regex IN lv_range_value MATCH LENGTH sy-fdpos. - IF sy-subrc = 0 AND sy-fdpos > 0. - lv_range_value_2 = lv_range_value+sy-fdpos. - SUBTRACT 1 FROM sy-fdpos. - lv_range_value_1 = lv_range_value(sy-fdpos). - ELSE. - lv_range_value_1 = lv_range_value. - ENDIF. - ENDIF. -* 1st range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - -* 2nd range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - - WHEN OTHERS. - - ENDCASE. - ENDIF. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - end -*--------------------------------------------------------------------* - ELSE. " issue #163+ - lo_range = io_excel->add_new_range( ). " issue #163+ - ENDIF. " issue #163+ -* lo_range = ip_excel->add_new_range( ). " issue #163- - IF lo_range IS BOUND. "ins issue #235 - repeat rows/cols - lo_range->name = ls_range-name. - lo_range->set_range_value( lv_range_value ). - ENDIF. "ins issue #235 - repeat rows/cols - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - endmethod. - - - - - - METHOD load_worksheet. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Header/footer -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, -* - ... -* changes: renaming variables to naming conventions -* aligning code (started) -* add a list of open ToDos here -* adding comments to explain what we are trying to achieve (started) -*--------------------------------------------------------------------* -* issue #345 - Dump on small pagemargins -* Took the chance to modularize this very long method -* by extracting the code that needed correction into -* own method ( load_worksheet_pagemargins ) -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_cell, - r TYPE string, - t TYPE string, - s TYPE string, - END OF lty_cell. - - TYPES: BEGIN OF lty_column, - min TYPE string, - max TYPE string, - width TYPE float, - customwidth TYPE string, - style TYPE string, - bestfit TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_column. - - TYPES: BEGIN OF lty_sheetview, - showgridlines TYPE zexcel_show_gridlines, - tabselected TYPE string, - zoomscalenormal TYPE string, - workbookviewid TYPE string, - showrowcolheaders TYPE string, - END OF lty_sheetview. - - TYPES: BEGIN OF lty_mergecell, - ref TYPE string, - END OF lty_mergecell. - - TYPES: BEGIN OF lty_row, - r TYPE string, - customheight TYPE string, - ht TYPE float, - spans TYPE string, - thickbot TYPE string, - customformat TYPE string, - thicktop TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_row. - - TYPES: BEGIN OF lty_page_setup, - id TYPE string, - orientation TYPE string, - scale TYPE string, - END OF lty_page_setup. - - TYPES: BEGIN OF lty_sheetformatpr, - customheight TYPE string, - defaultrowheight TYPE string, - customwidth TYPE string, - defaultcolwidth TYPE string, - END OF lty_sheetformatpr. - - TYPES: BEGIN OF lty_headerfooter, - alignwithmargins TYPE string, - differentoddeven TYPE string, - END OF lty_headerfooter. - - TYPES: BEGIN OF lty_tabcolor, - rgb TYPE string, - theme TYPE string, - END OF lty_tabcolor. - - TYPES: BEGIN OF lty_datavalidation, - type TYPE zexcel_data_val_type, - allowblank TYPE flag, - showinputmessage TYPE flag, - showerrormessage TYPE flag, - showdropdown TYPE flag, - operator TYPE zexcel_data_val_operator, - formula1 TYPE zexcel_validation_formula1, - formula2 TYPE zexcel_validation_formula1, - sqref TYPE string, - cell_column TYPE zexcel_cell_column_alpha, - cell_column_to TYPE zexcel_cell_column_alpha, - cell_row TYPE zexcel_cell_row, - cell_row_to TYPE zexcel_cell_row, - error TYPE string, - errortitle TYPE string, - prompt TYPE string, - prompttitle TYPE string, - errorstyle TYPE zexcel_data_val_error_style, - END OF lty_datavalidation. - - - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1', - lc_rel_drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_rel_hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', - lc_rel_printer TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings'. - - DATA: lo_ixml_worksheet TYPE REF TO if_ixml_document, - lo_ixml_cells TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, - lo_ixml_row_elem TYPE REF TO if_ixml_element, - lo_ixml_cell_elem TYPE REF TO if_ixml_element, - ls_cell TYPE lty_cell, - lv_index TYPE i, - lo_ixml_value_elem TYPE REF TO if_ixml_element, - lo_ixml_formula_elem TYPE REF TO if_ixml_element, - lv_cell_value TYPE zexcel_cell_value, - lv_cell_formula TYPE zexcel_cell_formula, - lv_cell_column TYPE zexcel_cell_column_alpha, - lv_cell_row TYPE zexcel_cell_row, - lo_excel_style TYPE REF TO zcl_excel_style, - lv_style_guid TYPE zexcel_cell_style, - - lo_ixml_imension_elem TYPE REF TO if_ixml_element, "#+234 - lv_dimension_range TYPE string, "#+234 - - lo_ixml_sheetview_elem TYPE REF TO if_ixml_element, - ls_sheetview TYPE lty_sheetview, - lo_ixml_pane_elem TYPE REF TO if_ixml_element, - ls_excel_pane TYPE zexcel_pane, - lv_pane_cell_row TYPE zexcel_cell_row, - lv_pane_cell_col_a TYPE zexcel_cell_column_alpha, - lv_pane_cell_col TYPE zexcel_cell_column, - - lo_ixml_mergecells TYPE REF TO if_ixml_node_collection, - lo_ixml_mergecell_elem TYPE REF TO if_ixml_element, - ls_mergecell TYPE lty_mergecell, - lv_merge_column_start TYPE zexcel_cell_column_alpha, - lv_merge_column_end TYPE zexcel_cell_column_alpha, - lv_merge_row_start TYPE zexcel_cell_row, - lv_merge_row_end TYPE zexcel_cell_row, - - lo_ixml_sheetformatpr_elem TYPE REF TO if_ixml_element, - ls_sheetformatpr TYPE lty_sheetformatpr, - lv_height TYPE float, - - lo_ixml_headerfooter_elem TYPE REF TO if_ixml_element, - ls_headerfooter TYPE lty_headerfooter, - ls_odd_header TYPE zexcel_s_worksheet_head_foot, - ls_odd_footer TYPE zexcel_s_worksheet_head_foot, - ls_even_header TYPE zexcel_s_worksheet_head_foot, - ls_even_footer TYPE zexcel_s_worksheet_head_foot, - lo_ixml_hf_value_elem TYPE REF TO if_ixml_element, - - lo_ixml_pagesetup_elem TYPE REF TO if_ixml_element, - ls_pagesetup TYPE lty_page_setup, - - lo_ixml_columns TYPE REF TO if_ixml_node_collection, - lo_ixml_column_elem TYPE REF TO if_ixml_element, - ls_column TYPE lty_column, - lv_column_alpha TYPE zexcel_cell_column_alpha, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_outline_level TYPE int4, - - lo_ixml_tabcolor TYPE REF TO if_ixml_element, - ls_tabcolor TYPE lty_tabcolor, - ls_excel_s_tabcolor TYPE zexcel_s_tabcolor, - - lo_ixml_rows TYPE REF TO if_ixml_node_collection, - ls_row TYPE lty_row, - lv_max_col TYPE i, "for use with SPANS element -* lv_min_col TYPE i, "for use with SPANS element " not in use currently - lv_max_col_s TYPE char10, "for use with SPANS element - lv_min_col_s TYPE char10, "for use with SPANS element - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, -*--- End of current code aligning ------------------------------------------------------------------- - - lv_path TYPE string, - lo_ixml_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_ixml_rels_worksheet TYPE REF TO if_ixml_document, - lv_rels_worksheet_path TYPE string, - lv_stripped_name TYPE chkfile, - lv_dirname TYPE string, - - lt_external_hyperlinks TYPE gtt_external_hyperlinks, - ls_external_hyperlink LIKE LINE OF lt_external_hyperlinks, - - lo_ixml_datavalidations TYPE REF TO if_ixml_node_collection, - lo_ixml_datavalidation_elem TYPE REF TO if_ixml_element, - ls_datavalidation TYPE lty_datavalidation, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_datavalidation_range TYPE string, - lt_datavalidation_range TYPE TABLE OF string. - -*--------------------------------------------------------------------* -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets -*--------------------------------------------------------------------* - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = lv_stripped_name - file_path = lv_dirname. - CONCATENATE lv_dirname '_rels/' lv_stripped_name '.rels' - INTO lv_rels_worksheet_path. - TRY. " +#222 _rels/xxx.rels might not be present. If not found there can be no drawings --> just ignore this section - lo_ixml_rels_worksheet = me->get_ixml_from_zip_archive( lv_rels_worksheet_path ). - lo_ixml_node ?= lo_ixml_rels_worksheet->find_from_name( 'Relationship' ). - CATCH zcx_excel. "#EC NO_HANDLER +#222 - " +#222 No errorhandling necessary - node will be unbound if error occurs - ENDTRY. " +#222 - WHILE lo_ixml_node IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_node - CHANGING - cp_structure = ls_relationship ). - CONCATENATE lv_dirname ls_relationship-target INTO lv_path. - lv_path = resolve_path( lv_path ). - - CASE ls_relationship-type. - WHEN lc_rel_drawing. - " Read Drawings -* Issue # 339 Not all drawings are in the path mentioned below. -* Some Excel elements like textfields (which we don't support ) have a drawing-part in the relationsships -* but no "xl/drawings/_rels/drawing____.xml.rels" part. -* Since we don't support these there is no need to read them. Catching exceptions thrown -* in the "load_worksheet_drawing" shouldn't lead to an abortion of the reading - TRY. - me->load_worksheet_drawing( ip_path = lv_path - io_worksheet = io_worksheet ). - CATCH zcx_excel. "--> then ignore it - ENDTRY. - - WHEN lc_rel_printer. - " Read Printer settings - - WHEN lc_rel_hyperlink. - MOVE-CORRESPONDING ls_relationship TO ls_external_hyperlink. - INSERT ls_external_hyperlink INTO TABLE lt_external_hyperlinks. - - WHEN OTHERS. - ENDCASE. - - lo_ixml_node ?= lo_ixml_node->get_next( ). - ENDWHILE. - - - lo_ixml_worksheet = me->get_ixml_from_zip_archive( ip_path ). - - - lo_ixml_tabcolor ?= lo_ixml_worksheet->find_from_name( 'tabColor' ). - IF lo_ixml_tabcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_tabcolor - CHANGING - cp_structure = ls_tabcolor ). -* Theme not supported yet - IF ls_tabcolor-rgb IS NOT INITIAL. - ls_excel_s_tabcolor-rgb = ls_tabcolor-rgb. - io_worksheet->set_tabcolor( ls_excel_s_tabcolor ). - ENDIF. - ENDIF. - - lo_ixml_rows = lo_ixml_worksheet->get_elements_by_tag_name( name = 'row' ). - lo_ixml_iterator = lo_ixml_rows->create_iterator( ). - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_row_elem IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_row_elem - CHANGING - cp_structure = ls_row ). - SPLIT ls_row-spans AT ':' INTO lv_min_col_s lv_max_col_s. - lv_index = lv_max_col_s. - IF lv_index > lv_max_col. - lv_max_col = lv_index. - ENDIF. - lv_cell_row = ls_row-r. - IF ls_row-customheight = '1' - OR ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int - OR ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int - OR ls_row-outlinelevel > '0'. - lo_row_dimension = io_worksheet->get_row_dimension( lv_cell_row ). - IF ls_row-customheight = '1'. - lo_row_dimension->set_row_height( ls_row-ht ). - ENDIF. - - IF ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int. - lo_row_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int. - lo_row_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_row-outlinelevel > ''. -* outline_level = condense( row-outlineLevel ). "For basis 7.02 and higher - CONDENSE ls_row-outlinelevel. - lv_outline_level = ls_row-outlinelevel. - IF lv_outline_level > 0. - lo_row_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - ENDIF. - - lo_ixml_cells = lo_ixml_row_elem->get_elements_by_tag_name( name = 'c' ). - lo_ixml_iterator2 = lo_ixml_cells->create_iterator( ). - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - WHILE lo_ixml_cell_elem IS BOUND. - CLEAR: lv_cell_value, - lv_cell_formula, - lv_style_guid. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_cell_elem CHANGING cp_structure = ls_cell ). - - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'v' ). - - CASE ls_cell-t. - WHEN 's'. " String values are stored as index in shared string table - lv_index = lo_ixml_value_elem->get_value( ) + 1. - READ TABLE shared_strings INTO lv_cell_value INDEX lv_index. - WHEN 'inlineStr'. " inlineStr values are kept in special node - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'is' ). - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - WHEN OTHERS. "other types are stored directly - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - ENDCASE. - - CLEAR lv_style_guid. - "read style based on index - IF ls_cell-s IS NOT INITIAL. - lv_index = ls_cell-s + 1. - READ TABLE styles INTO lo_excel_style INDEX lv_index. - IF sy-subrc = 0. - lv_style_guid = lo_excel_style->get_guid( ). - ENDIF. - ENDIF. - - lo_ixml_formula_elem = lo_ixml_cell_elem->find_from_name( name = 'f' ). - IF lo_ixml_formula_elem IS BOUND. - lv_cell_formula = lo_ixml_formula_elem->get_value( ). -*--------------------------------------------------------------------* -* Begin of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - DATA: BEGIN OF ls_formula_attributes, - ref TYPE string, - si TYPE i, - t TYPE string, - END OF ls_formula_attributes, - ls_ref_formula TYPE ty_ref_formulae. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_formula_elem CHANGING cp_structure = ls_formula_attributes ). - IF ls_formula_attributes-t = 'shared'. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - - TRY. - CLEAR ls_ref_formula. - ls_ref_formula-sheet = io_worksheet. - ls_ref_formula-row = lv_cell_row. - ls_ref_formula-column = zcl_excel_common=>convert_column2int( lv_cell_column ). - ls_ref_formula-si = ls_formula_attributes-si. - ls_ref_formula-ref = ls_formula_attributes-ref. - ls_ref_formula-formula = lv_cell_formula. - INSERT ls_ref_formula INTO TABLE me->mt_ref_formulae. - CATCH cx_root. - BREAK-POINT. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* End of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - ENDIF. - - IF lv_cell_value IS NOT INITIAL - OR lv_cell_formula IS NOT INITIAL - OR lv_style_guid IS NOT INITIAL. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - io_worksheet->set_cell( ip_column = lv_cell_column " cell_elem Column - ip_row = lv_cell_row " cell_elem row_elem - ip_value = lv_cell_value " cell_elem Value - ip_formula = lv_cell_formula - ip_data_type = ls_cell-t - ip_style = lv_style_guid ). - ENDIF. - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - ENDWHILE. - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -*--------------------------------------------------------------------* -*#234 - column width not read correctly - begin of coding -* reason - libre office doesn't use SPAN in row - definitions -*--------------------------------------------------------------------* - IF lv_max_col = 0. - lo_ixml_imension_elem = lo_ixml_worksheet->find_from_name( name = 'dimension' ). - IF lo_ixml_imension_elem IS BOUND. - lv_dimension_range = lo_ixml_imension_elem->get_attribute( 'ref' ). - IF lv_dimension_range CS ':'. - REPLACE REGEX '\D+\d+:(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ELSE. - REPLACE REGEX '(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ENDIF. - lv_max_col = zcl_excel_common=>convert_column2int( lv_dimension_range ). - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -*#234 - column width not read correctly - end of coding -*--------------------------------------------------------------------* - - "Get the customized column width - lo_ixml_columns = lo_ixml_worksheet->get_elements_by_tag_name( name = 'col' ). - lo_ixml_iterator = lo_ixml_columns->create_iterator( ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_column_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_column_elem - CHANGING - cp_structure = ls_column ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int - OR ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int - OR ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int - OR ls_column-outlinelevel > '' - OR ls_column-style > ''. - lv_index = ls_column-min. - WHILE lv_index <= ls_column-max AND lv_index <= lv_max_col. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_index ). - lo_column_dimension = io_worksheet->get_column_dimension( lv_column_alpha ). - - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-width IS NOT INITIAL. "+#234 - lo_column_dimension->set_width( ls_column-width ). - ENDIF. - - IF ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int. - lo_column_dimension->set_auto_size( abap_true ). - ENDIF. - - IF ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int. - lo_column_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int. - lo_column_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_column-outlinelevel > ''. -* outline_level = condense( column-outlineLevel ). - CONDENSE ls_column-outlinelevel. - lv_outline_level = ls_column-outlinelevel. - IF lv_outline_level > 0. - lo_column_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - - IF ls_column-style > ''. - sy-index = ls_column-style + 1. - READ TABLE styles INTO lo_excel_style INDEX sy-index. - DATA: dummy_zexcel_cell_style TYPE zexcel_cell_style. - dummy_zexcel_cell_style = lo_excel_style->get_guid( ). - lo_column_dimension->set_column_style_by_guid( dummy_zexcel_cell_style ). - ENDIF. - - ADD 1 TO lv_index. - ENDWHILE. - ENDIF. - -* issue #367 - hide columns from - IF ls_column-max = zcl_excel_common=>c_excel_sheet_max_col. " Max = very right column - IF ls_column-hidden = 1 " all hidden - AND ls_column-min > 0. - io_worksheet->zif_excel_sheet_properties~hide_columns_from = zcl_excel_common=>convert_column2alpha( ls_column-min ). - ELSEIF ls_column-style > ''. -* Set default style for remaining columns - io_worksheet->zif_excel_sheet_properties~set_style( dummy_zexcel_cell_style ). - ENDIF. - ENDIF. - - - ENDWHILE. - - "Now we need to get information from the sheetView node - lo_ixml_sheetview_elem = lo_ixml_worksheet->find_from_name( name = 'sheetView' ). - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetview_elem CHANGING cp_structure = ls_sheetview ). - IF ls_sheetview-showgridlines IS INITIAL OR - ls_sheetview-showgridlines = lc_xml_attr_true OR - ls_sheetview-showgridlines = lc_xml_attr_true_int. - "If the attribute is not specified or set to true, we will show grid lines - ls_sheetview-showgridlines = abap_true. - ELSE. - ls_sheetview-showgridlines = abap_false. - ENDIF. - io_worksheet->set_show_gridlines( ls_sheetview-showgridlines ). - - - "Add merge cell information - lo_ixml_mergecells = lo_ixml_worksheet->get_elements_by_tag_name( name = 'mergeCell' ). - lo_ixml_iterator = lo_ixml_mergecells->create_iterator( ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_mergecell_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_mergecell_elem - CHANGING - cp_structure = ls_mergecell ). - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = ls_mergecell-ref - IMPORTING - e_column_start = lv_merge_column_start - e_column_end = lv_merge_column_end - e_row_start = lv_merge_row_start - e_row_end = lv_merge_row_end ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - io_worksheet->set_merge( EXPORTING - ip_column_start = lv_merge_column_start - ip_column_end = lv_merge_column_end - ip_row = lv_merge_row_start - ip_row_to = lv_merge_row_end ). - ENDWHILE. - - " read sheet format properties - lo_ixml_sheetformatpr_elem = lo_ixml_worksheet->find_from_name( 'sheetFormatPr' ). - IF lo_ixml_sheetformatpr_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetformatpr_elem CHANGING cp_structure = ls_sheetformatpr ). - IF ls_sheetformatpr-customheight = '1'. - lv_height = ls_sheetformatpr-defaultrowheight. - lo_row_dimension = io_worksheet->get_default_row_dimension( ). - lo_row_dimension->set_row_height( lv_height ). - ENDIF. - - " TODO... column - ENDIF. - - " Read in page margins - me->load_worksheet_pagemargins( EXPORTING - io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - - " Read in page setup - lo_ixml_pagesetup_elem = lo_ixml_worksheet->find_from_name( 'pageSetup' ). - IF lo_ixml_pagesetup_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagesetup_elem - CHANGING - cp_structure = ls_pagesetup ). - io_worksheet->sheet_setup->orientation = ls_pagesetup-orientation. - io_worksheet->sheet_setup->scale = ls_pagesetup-scale. - ENDIF. - - " Read header footer - lo_ixml_headerfooter_elem = lo_ixml_worksheet->find_from_name( 'headerFooter' ). - IF lo_ixml_headerfooter_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_headerfooter_elem CHANGING cp_structure = ls_headerfooter ). - io_worksheet->sheet_setup->diff_oddeven_headerfooter = ls_headerfooter-differentoddeven. - - lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name( 'oddFooter' ). - IF lo_ixml_hf_value_elem IS NOT INITIAL. - ls_odd_footer-left_value = lo_ixml_hf_value_elem->get_value( ). - ENDIF. - -* 2do§1 Header/footer - " TODO.. get the rest. - - io_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_odd_header - ip_odd_footer = ls_odd_footer - ip_even_header = ls_even_header - ip_even_footer = ls_even_footer ). - - ENDIF. - - " Start fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - " Read pane - lo_ixml_pane_elem = lo_ixml_sheetview_elem->find_from_name( name = 'pane' ). - IF lo_ixml_pane_elem IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_pane_elem CHANGING cp_structure = ls_excel_pane ). - " Issue #194 - " Replace REGEX with method from the common class - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_excel_pane-topleftcell - IMPORTING - e_column = lv_pane_cell_col_a " Cell Column - e_row = lv_pane_cell_row ). " Natural number - lv_pane_cell_col = zcl_excel_common=>convert_column2int( lv_pane_cell_col_a ). - SUBTRACT 1 FROM: lv_pane_cell_col, - lv_pane_cell_row. - IF lv_pane_cell_col > 0 - AND lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row - ip_num_columns = lv_pane_cell_col ). - ELSEIF lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row ). - ELSE. - io_worksheet->freeze_panes( ip_num_columns = lv_pane_cell_col ). - ENDIF. - ENDIF. - " End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - - " Start fix 276 Read data validations - lo_ixml_datavalidations = lo_ixml_worksheet->get_elements_by_tag_name( name = 'dataValidation' ). - lo_ixml_iterator = lo_ixml_datavalidations->create_iterator( ). - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_datavalidation_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_datavalidation_elem - CHANGING - cp_structure = ls_datavalidation ). - CLEAR lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula1' ). - IF lo_ixml_formula_elem IS BOUND. - ls_datavalidation-formula1 = lo_ixml_formula_elem->get_value( ). - ENDIF. - CLEAR lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula2' ). - IF lo_ixml_formula_elem IS BOUND. - ls_datavalidation-formula2 = lo_ixml_formula_elem->get_value( ). - ENDIF. - SPLIT ls_datavalidation-sqref AT space INTO TABLE lt_datavalidation_range. - LOOP AT lt_datavalidation_range INTO lv_datavalidation_range. - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_datavalidation_range - IMPORTING - e_column_start = ls_datavalidation-cell_column - e_column_end = ls_datavalidation-cell_column_to - e_row_start = ls_datavalidation-cell_row - e_row_end = ls_datavalidation-cell_row_to ). - lo_data_validation = io_worksheet->add_new_data_validation( ). - lo_data_validation->type = ls_datavalidation-type. - lo_data_validation->allowblank = ls_datavalidation-allowblank. - lo_data_validation->showinputmessage = ls_datavalidation-showinputmessage. - lo_data_validation->showerrormessage = ls_datavalidation-showerrormessage. - lo_data_validation->showdropdown = ls_datavalidation-showdropdown. - lo_data_validation->operator = ls_datavalidation-operator. - lo_data_validation->formula1 = ls_datavalidation-formula1. - lo_data_validation->formula2 = ls_datavalidation-formula2. - lo_data_validation->prompttitle = ls_datavalidation-prompttitle. - lo_data_validation->prompt = ls_datavalidation-prompt. - lo_data_validation->errortitle = ls_datavalidation-errortitle. - lo_data_validation->error = ls_datavalidation-error. - lo_data_validation->errorstyle = ls_datavalidation-errorstyle. - lo_data_validation->cell_row = ls_datavalidation-cell_row. - lo_data_validation->cell_row_to = ls_datavalidation-cell_row_to. - lo_data_validation->cell_column = ls_datavalidation-cell_column. - lo_data_validation->cell_column_to = ls_datavalidation-cell_column_to. - ENDLOOP. - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - " End fix 276 Read data validations - - " Read hyperlinks - TRY. - me->load_worksheet_hyperlinks( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet - it_external_hyperlinks = lt_external_hyperlinks ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - TRY. - me->fill_row_outlines( io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - " Issue #366 - conditional formatting - TRY. - me->load_worksheet_cond_format( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - " Issue #377 - pagebreaks - TRY. - me->load_worksheet_pagebreaks( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore pagebreak reading errors - pass everything we were able to identify - ENDTRY. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_cond_format. - - DATA: lo_ixml_cond_formats TYPE REF TO if_ixml_node_collection, - lo_ixml_cond_format TYPE REF TO if_ixml_element, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, -* lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, -* lo_ixml TYPE REF TO if_ixml_element, - lo_ixml_rule TYPE REF TO if_ixml_element, -* lo_ixml_rule_iconset TYPE REF TO if_ixml_element, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - - - DATA: lv_area TYPE string, - lv_area_start_row TYPE zexcel_cell_row, - lv_area_end_row TYPE zexcel_cell_row, - lv_area_start_col TYPE zexcel_cell_column_alpha, - lv_area_end_col TYPE zexcel_cell_column_alpha, - lv_rule TYPE zexcel_condition_rule. - - -* FIELD-SYMBOLS: <ls_external_hyperlink> LIKE LINE OF it_external_hyperlinks. - - lo_ixml_cond_formats = io_ixml_worksheet->get_elements_by_tag_name( name = 'conditionalFormatting' ). - lo_ixml_iterator = lo_ixml_cond_formats->create_iterator( ). - lo_ixml_cond_format ?= lo_ixml_iterator->get_next( ). - - WHILE lo_ixml_cond_format IS BOUND. - - CLEAR: lv_area, - lo_ixml_rule, - lo_style_conditional. - - -*--------------------------------------------------------------------* -* Get type of rule -*--------------------------------------------------------------------* - lo_ixml_rule ?= lo_ixml_cond_format->get_first_child( ). " = cfRule - IF lo_ixml_rule IS BOUND. - lv_rule = lo_ixml_rule->get_attribute_ns( 'type' ). - -*--------------------------------------------------------------------* -* Depending on ruletype get additional information -*--------------------------------------------------------------------* - CASE lv_rule. - - WHEN zcl_excel_style_conditional=>c_rule_cellis. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_ci( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - -* WHEN zcl_excel_style_conditional=>c_rule_containstext. -* - WHEN zcl_excel_style_conditional=>c_rule_databar. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_db( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_expression. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_ex( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_is( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_cs( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_top10. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_t10( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_above_average. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_aa( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - -* WHEN zcl_excel_style_conditional=>c_rule_none. -* - - WHEN OTHERS. - ENDCASE. - ENDIF. - - IF lo_style_conditional IS BOUND. - lo_style_conditional->rule = lv_rule. - lo_style_conditional->priority = lo_ixml_rule->get_attribute_ns( 'priority' ). -*--------------------------------------------------------------------* -* Set area to which conditional formatting belongs -*--------------------------------------------------------------------* - lv_area = lo_ixml_cond_format->get_attribute_ns( 'sqref' ). - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_area - IMPORTING - e_column_start = lv_area_start_col - e_column_end = lv_area_end_col - e_row_start = lv_area_start_row - e_row_end = lv_area_end_row ). - lo_style_conditional->set_range( ip_start_column = lv_area_start_col - ip_stop_column = lv_area_end_col - ip_start_row = lv_area_start_row - ip_stop_row = lv_area_end_row ). - - ENDIF. - - - lo_ixml_cond_format ?= lo_ixml_iterator->get_next( ). - - ENDWHILE. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_aa. - DATA: lv_dxf_style_index TYPE i, - val TYPE string. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - -*--------------------------------------------------------------------* -* above or below average -*--------------------------------------------------------------------* - val = io_ixml_rule->get_attribute_ns( 'aboveAverage' ). - IF val = '0'. " 0 = below average - io_style_conditional->mode_above_average-above_average = space. - ELSE. - io_style_conditional->mode_above_average-above_average = 'X'. " Not present or <> 0 --> we use above average - ENDIF. - -*--------------------------------------------------------------------* -* Equal average also? -*--------------------------------------------------------------------* - CLEAR val. - val = io_ixml_rule->get_attribute_ns( 'equalAverage' ). - IF val = '1'. " 0 = below average - io_style_conditional->mode_above_average-equal_average = 'X'. - ELSE. - io_style_conditional->mode_above_average-equal_average = ' '. " Not present or <> 1 --> we use not equal average - ENDIF. - -*--------------------------------------------------------------------* -* Standard deviation instead of value ( 2nd stddev, 3rd stdev ) -*--------------------------------------------------------------------* - CLEAR val. - val = io_ixml_rule->get_attribute_ns( 'stdDev' ). - CASE val. - WHEN 1 - OR 2 - OR 3. " These seem to be supported by excel - don't try anything more - io_style_conditional->mode_above_average-standard_deviation = val. - ENDCASE. - -*--------------------------------------------------------------------* -* Cell formatting for top10 -*--------------------------------------------------------------------* - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_above_average-cell_style = <ls_dxf_style>-guid. - ENDIF. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_ci. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element, - lv_dxf_style_index TYPE i, - lo_excel_style LIKE LINE OF me->styles. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - - io_style_conditional->mode_cellis-operator = io_ixml_rule->get_attribute_ns( 'operator' ). - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_cellis-cell_style = <ls_dxf_style>-guid. - ENDIF. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'formula' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_cellis-formula = lo_ixml->get_value( ). - - WHEN 2. - io_style_conditional->mode_cellis-formula2 = lo_ixml->get_value( ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_cs. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element. - - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'cfvo' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_colorscale-cfvo1_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_colorscale-cfvo1_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 2. - io_style_conditional->mode_colorscale-cfvo2_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_colorscale-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 3. - io_style_conditional->mode_colorscale-cfvo3_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_colorscale-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'color' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_colorscale-colorrgb1 = lo_ixml->get_attribute_ns( 'rgb' ). - - WHEN 2. - io_style_conditional->mode_colorscale-colorrgb2 = lo_ixml->get_attribute_ns( 'rgb' ). - - WHEN 3. - io_style_conditional->mode_colorscale-colorrgb3 = lo_ixml->get_attribute_ns( 'rgb' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_db. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element. - - lo_ixml ?= io_ixml_rule->find_from_name( 'color' ). - IF lo_ixml IS BOUND. - io_style_conditional->mode_databar-colorrgb = lo_ixml->get_attribute_ns( 'rgb' ). - ENDIF. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'cfvo' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_databar-cfvo1_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_databar-cfvo1_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 2. - io_style_conditional->mode_databar-cfvo2_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_databar-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_ex. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element, - lv_dxf_style_index TYPE i, - lo_excel_style LIKE LINE OF me->styles. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_expression-cell_style = <ls_dxf_style>-guid. - ENDIF. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'formula' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_expression-formula = lo_ixml->get_value( ). - - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_is. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element, - lo_ixml_rule_iconset TYPE REF TO if_ixml_element. - - lo_ixml_rule_iconset ?= io_ixml_rule->get_first_child( ). - io_style_conditional->mode_iconset-iconset = lo_ixml_rule_iconset->get_attribute_ns( 'iconSet' ). - io_style_conditional->mode_iconset-showvalue = lo_ixml_rule_iconset->get_attribute_ns( 'showValue' ). - lo_ixml_nodes ?= lo_ixml_rule_iconset->get_elements_by_tag_name( 'cfvo' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_iconset-cfvo1_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo1_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 2. - io_style_conditional->mode_iconset-cfvo2_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 3. - io_style_conditional->mode_iconset-cfvo3_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo3_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 4. - io_style_conditional->mode_iconset-cfvo4_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo4_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 5. - io_style_conditional->mode_iconset-cfvo5_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo5_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_t10. - DATA: lv_dxf_style_index TYPE i. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - - io_style_conditional->mode_top10-topxx_count = io_ixml_rule->get_attribute_ns( 'rank' ). " Top10, Top20, Top 50... - - io_style_conditional->mode_top10-percent = io_ixml_rule->get_attribute_ns( 'percent' ). " Top10 percent instead of Top10 values - if io_style_conditional->mode_top10-percent = '1'. - io_style_conditional->mode_top10-percent = 'X'. - else. - io_style_conditional->mode_top10-percent = ' '. - endif. - - io_style_conditional->mode_top10-bottom = io_ixml_rule->get_attribute_ns( 'bottom' ). " Bottom10 instead of Top10 - if io_style_conditional->mode_top10-bottom = '1'. - io_style_conditional->mode_top10-bottom = 'X'. - else. - io_style_conditional->mode_top10-bottom = ' '. - endif. -*--------------------------------------------------------------------* -* Cell formatting for top10 -*--------------------------------------------------------------------* - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_top10-cell_style = <ls_dxf_style>-guid. - ENDIF. - -ENDMETHOD. - - - - - - method LOAD_WORKSHEET_DRAWING. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: drawing TYPE REF TO if_ixml_document, - anchors TYPE REF TO if_ixml_node_collection, - node TYPE REF TO if_ixml_element, - coll_length TYPE i, - iterator TYPE REF TO if_ixml_node_iterator, - anchor_elem TYPE REF TO if_ixml_element, - - relationship TYPE t_relationship, - rel_drawings TYPE t_rel_drawings, - rel_drawing TYPE t_rel_drawing, - rels_drawing TYPE REF TO if_ixml_document, - rels_drawing_path TYPE string, - stripped_name TYPE chkfile, - dirname TYPE string, - - path TYPE string, - path2 TYPE text255, - file_ext2 TYPE char10. - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = stripped_name - file_path = dirname. - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_drawing_path. - rels_drawing_path = resolve_path( rels_drawing_path ). - rels_drawing = me->get_ixml_from_zip_archive( rels_drawing_path ). - node ?= rels_drawing->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - rel_drawing-id = relationship-id. - - CONCATENATE dirname relationship-target INTO path. - path = resolve_path( path ). - rel_drawing-content = me->get_from_zip_archive( path ). "------------> This is for template usage - - path2 = path. - zcl_excel_common=>split_file( EXPORTING ip_file = path2 - IMPORTING ep_extension = file_ext2 ). - rel_drawing-file_ext = file_ext2. - - "-------------Added by Alessandro Iannacci - Should load graph xml - CASE relationship-type. - WHEN lc_rel_chart. - "Read chart xml - rel_drawing-content_xml = me->get_ixml_from_zip_archive( path ). - WHEN OTHERS. - ENDCASE. - "---------------------------- - - - APPEND rel_drawing TO rel_drawings. - - node ?= node->get_next( ). - ENDWHILE. - - drawing = me->get_ixml_from_zip_archive( ip_path ). - -* one-cell anchor ************** - anchors = drawing->get_elements_by_tag_name( name = 'oneCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - -* two-cell anchor ****************** - anchors = drawing->get_elements_by_tag_name( name = 'twoCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - - endmethod. - - - - - - - METHOD load_worksheet_hyperlinks. - - DATA: lo_ixml_hyperlinks TYPE REF TO if_ixml_node_collection, - lo_ixml_hyperlink TYPE REF TO if_ixml_element, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lv_row TYPE zexcel_cell_row, - lv_column TYPE zexcel_cell_column_alpha, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lv_value TYPE zexcel_cell_value. - - DATA: BEGIN OF ls_hyperlink, - ref TYPE string, - display TYPE string, - location TYPE string, - tooltip TYPE string, - r_id TYPE string, - END OF ls_hyperlink. - - FIELD-SYMBOLS: <ls_external_hyperlink> LIKE LINE OF it_external_hyperlinks. - - lo_ixml_hyperlinks = io_ixml_worksheet->get_elements_by_tag_name( name = 'hyperlink' ). - lo_ixml_iterator = lo_ixml_hyperlinks->create_iterator( ). - lo_ixml_hyperlink ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_hyperlink IS BOUND. - - CLEAR ls_hyperlink. - CLEAR lo_hyperlink. - - ls_hyperlink-ref = lo_ixml_hyperlink->get_attribute_ns( 'ref' ). - ls_hyperlink-display = lo_ixml_hyperlink->get_attribute_ns( 'display' ). - ls_hyperlink-location = lo_ixml_hyperlink->get_attribute_ns( 'location' ). - ls_hyperlink-tooltip = lo_ixml_hyperlink->get_attribute_ns( 'tooltip' ). - ls_hyperlink-r_id = lo_ixml_hyperlink->get_attribute( name = 'id' - namespace = 'r' ). - IF ls_hyperlink-r_id IS INITIAL. " Internal link - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = ls_hyperlink-location ). - ELSE. " External link - READ TABLE it_external_hyperlinks ASSIGNING <ls_external_hyperlink> WITH TABLE KEY id = ls_hyperlink-r_id. - IF sy-subrc = 0. - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = <ls_external_hyperlink>-target ). - ENDIF. - ENDIF. - IF lo_hyperlink IS BOUND. " because of unsupported external links - - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_hyperlink-ref - IMPORTING - e_row = lv_row - e_column = lv_column ). -* Currently it is not allowed to pass a hyperlink w/o text, but text has already been read. -* So just reread it and be done with it - io_worksheet->get_cell( EXPORTING - ip_column = lv_column - ip_row = lv_row - IMPORTING - ep_value = lv_value ). - io_worksheet->set_cell( ip_column = lv_column - ip_row = lv_row - ip_value = lv_value - ip_hyperlink = lo_hyperlink ). - ENDIF. - - lo_ixml_hyperlink ?= lo_ixml_iterator->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_pagebreaks. - - DATA: lo_node TYPE REF TO if_ixml_element, - lo_ixml_rowbreaks TYPE REF TO if_ixml_node_collection, - lo_ixml_colbreaks TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_rowbreak TYPE REF TO if_ixml_element, - lo_ixml_colbreak TYPE REF TO if_ixml_element, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_count TYPE i. - - - DATA: lt_pagebreaks TYPE STANDARD TABLE OF zcl_excel_worksheet_pagebreaks=>ts_pagebreak_at, - lo_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks. - - FIELD-SYMBOLS: <ls_pagebreak_row> LIKE LINE OF lt_pagebreaks. - FIELD-SYMBOLS: <ls_pagebreak_col> LIKE LINE OF lt_pagebreaks. - -*--------------------------------------------------------------------* -* Get minimal number of cells where to add pagebreaks -* Since rows and columns are handled in separate nodes -* Build table to identify these cells -*--------------------------------------------------------------------* - lo_node ?= io_ixml_worksheet->find_from_name( 'rowBreaks' ). - lo_ixml_rowbreaks = lo_node->get_elements_by_tag_name( name = 'brk' ). - lo_ixml_iterator = lo_ixml_rowbreaks->create_iterator( ). - lo_ixml_rowbreak ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_rowbreak IS BOUND. - APPEND INITIAL LINE TO lt_pagebreaks ASSIGNING <ls_pagebreak_row>. - <ls_pagebreak_row>-cell_row = lo_ixml_rowbreak->get_attribute_ns( 'id' ). - - lo_ixml_rowbreak ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - CHECK <ls_pagebreak_row> IS ASSIGNED. - - lo_node ?= io_ixml_worksheet->find_from_name( 'colBreaks' ). - lo_ixml_colbreaks = lo_node->get_elements_by_tag_name( name = 'brk' ). - lo_ixml_iterator = lo_ixml_colbreaks->create_iterator( ). - lo_ixml_colbreak ?= lo_ixml_iterator->get_next( ). - CLEAR lv_count. - WHILE lo_ixml_colbreak IS BOUND. - ADD 1 TO lv_count. - READ TABLE lt_pagebreaks INDEX lv_count ASSIGNING <ls_pagebreak_col>. - IF sy-subrc <> 0. - APPEND INITIAL LINE TO lt_pagebreaks ASSIGNING <ls_pagebreak_col>. - <ls_pagebreak_col>-cell_row = <ls_pagebreak_row>-cell_row. - ENDIF. - <ls_pagebreak_col>-cell_column = lo_ixml_colbreak->get_attribute_ns( 'id' ). - - lo_ixml_colbreak ?= lo_ixml_iterator->get_next( ). - ENDWHILE. -*--------------------------------------------------------------------* -* Finally add each pagebreak -*--------------------------------------------------------------------* - lo_pagebreaks = io_worksheet->get_pagebreaks( ). - LOOP AT lt_pagebreaks ASSIGNING <ls_pagebreak_row>. - lo_pagebreaks->add_pagebreak( ip_column = <ls_pagebreak_row>-cell_column - ip_row = <ls_pagebreak_row>-cell_row ). - ENDLOOP. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_pagemargins. - - TYPES: BEGIN OF lty_page_margins, - footer TYPE string, - header TYPE string, - bottom TYPE string, - top TYPE string, - right TYPE string, - left TYPE string, - END OF lty_page_margins. - - DATA:lo_ixml_pagemargins_elem TYPE REF TO if_ixml_element, - ls_pagemargins TYPE lty_page_margins. - - - lo_ixml_pagemargins_elem = io_ixml_worksheet->find_from_name( 'pageMargins' ). - IF lo_ixml_pagemargins_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagemargins_elem - CHANGING - cp_structure = ls_pagemargins ). - io_worksheet->sheet_setup->margin_bottom = zcl_excel_common=>excel_string_to_number( ls_pagemargins-bottom ). - io_worksheet->sheet_setup->margin_footer = zcl_excel_common=>excel_string_to_number( ls_pagemargins-footer ). - io_worksheet->sheet_setup->margin_header = zcl_excel_common=>excel_string_to_number( ls_pagemargins-header ). - io_worksheet->sheet_setup->margin_left = zcl_excel_common=>excel_string_to_number( ls_pagemargins-left ). - io_worksheet->sheet_setup->margin_right = zcl_excel_common=>excel_string_to_number( ls_pagemargins-right ). - io_worksheet->sheet_setup->margin_top = zcl_excel_common=>excel_string_to_number( ls_pagemargins-top ). - ENDIF. - -ENDMETHOD. - - - - - METHOD read_from_applserver. - - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_max_length_line TYPE i, - lv_actual_length_line TYPE i, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - DESCRIBE FIELD ls_binary_data LENGTH lv_max_length_line IN BYTE MODE. - OPEN DATASET lv_filename FOR INPUT IN BINARY MODE. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - WHILE sy-subrc = 0. - - READ DATASET lv_filename INTO ls_binary_data MAXIMUM LENGTH lv_max_length_line ACTUAL LENGTH lv_actual_length_line. - APPEND ls_binary_data TO lt_binary_data. - lv_filelength = lv_filelength + lv_actual_length_line. - - ENDWHILE. - CLOSE DATASET lv_filename. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - ENDMETHOD. - - - - - - METHOD read_from_local_file. - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - cl_gui_frontend_services=>gui_upload( EXPORTING - filename = lv_filename - filetype = 'BIN' " We are basically working with zipped directories --> force binary read - IMPORTING - filelength = lv_filelength - CHANGING - data_tab = lt_binary_data - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 ). - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - - ENDMETHOD. - - - - - method RESOLVE_PATH. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Determine whether the replacement should be done -* iterative to allow /../../.. or something alike -* 2do§2 Determine whether /./ has to be supported as well -* 2do§3 Create unit-test for this method -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: replaced previous coding by regular expression -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 This routine will receive a path, that may have a relative pathname (/../) included somewhere -* The output should be a resolved path without relative references -* Example: Input xl/worksheets/../drawings/drawing1.xml -* Output xl/drawings/drawing1.xml -*--------------------------------------------------------------------* - - rp_result = ip_path. -*--------------------------------------------------------------------* -* §1 Remove relative pathnames -*--------------------------------------------------------------------* -* Regular expression [^/]*/\.\./ -* [^/]* --> any number of characters other than / -* followed by /\.\./ --> the sequence /../ -* ==> worksheets/../ will be found in the example -*--------------------------------------------------------------------* - REPLACE REGEX '[^/]*/\.\./' IN rp_result WITH ``. - - - endmethod. - - - method RESOLVE_REFERENCED_FORMULAE. - TYPES: BEGIN OF ty_referenced_cells, - sheet TYPE REF TO zcl_excel_worksheet, - si TYPE i, - row_from TYPE i, - row_to TYPE i, - col_from TYPE i, - col_to TYPE i, - formula TYPE string, - ref_cell TYPE char10, - END OF ty_referenced_cells. - - DATA: ls_ref_formula LIKE LINE OF me->mt_ref_formulae, - lts_referenced_cells TYPE SORTED TABLE OF ty_referenced_cells WITH NON-UNIQUE KEY sheet si row_from row_to col_from col_to, - ls_referenced_cell LIKE LINE OF lts_referenced_cells, - lv_col_from TYPE zexcel_cell_column_alpha, - lv_col_to TYPE zexcel_cell_column_alpha, - lv_resulting_formula TYPE string, - lv_current_cell TYPE char10. - - - me->mt_ref_formulae = me->mt_ref_formulae. - -*--------------------------------------------------------------------* -* Get referenced Cells, Build ranges for easy lookup -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref <> space. - - CLEAR ls_referenced_cell. - ls_referenced_cell-sheet = ls_ref_formula-sheet. - ls_referenced_cell-si = ls_ref_formula-si. - ls_referenced_cell-formula = ls_ref_formula-formula. - - TRY. - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = ls_ref_formula-ref - IMPORTING e_column_start = lv_col_from - e_column_end = lv_col_to - e_row_start = ls_referenced_cell-row_from - e_row_end = ls_referenced_cell-row_to ). - ls_referenced_cell-col_from = zcl_excel_common=>convert_column2int( lv_col_from ). - ls_referenced_cell-col_to = zcl_excel_common=>convert_column2int( lv_col_to ). - - - CLEAR ls_referenced_cell-ref_cell. - TRY. - ls_referenced_cell-ref_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - ls_referenced_cell-ref_cell+3 = ls_ref_formula-row. - CONDENSE ls_referenced_cell-ref_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - INSERT ls_referenced_cell INTO TABLE lts_referenced_cells. - CATCH zcx_excel. - ENDTRY. - - ENDLOOP. - -* break x0009004. -*--------------------------------------------------------------------* -* For each referencing cell determine the referenced cell -* and resolve the formula -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref = space. - - - CLEAR lv_current_cell. - TRY. - lv_current_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - lv_current_cell+3 = ls_ref_formula-row. - CONDENSE lv_current_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - LOOP AT lts_referenced_cells INTO ls_referenced_cell WHERE sheet = ls_ref_formula-sheet - AND si = ls_ref_formula-si - AND row_from <= ls_ref_formula-row - AND row_to >= ls_ref_formula-row - AND col_from <= ls_ref_formula-column - AND col_to >= ls_ref_formula-column. - - TRY. - - lv_resulting_formula = zcl_excel_common=>determine_resulting_formula( iv_reference_cell = ls_referenced_cell-ref_cell - iv_reference_formula = ls_referenced_cell-formula - iv_current_cell = lv_current_cell ). - - ls_referenced_cell-sheet->set_cell_formula( ip_column = ls_ref_formula-column - ip_row = ls_ref_formula-row - ip_formula = lv_resulting_formula ). - CATCH zcx_excel. - ENDTRY. - EXIT. - - ENDLOOP. - - ENDLOOP. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - METHOD load_vbaproject. - - DATA lv_content TYPE xstring. - - lv_content = me->get_from_zip_archive( ip_path ). - - ip_excel->zif_excel_book_vba_project~set_vbaproject( lv_content ). - - ENDMETHOD. - - - method LOAD_WORKBOOK. - super->load_workbook( EXPORTING iv_workbook_full_filename = iv_workbook_full_filename - io_excel = io_excel ). - - CONSTANTS: lc_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject'. - - DATA: rels_workbook_path TYPE string, - rels_workbook TYPE REF TO if_ixml_document, - path TYPE string, - node TYPE REF TO if_ixml_element, - workbook TYPE REF TO if_ixml_document, - stripped_name TYPE chkfile, - dirname TYPE string, - relationship TYPE t_relationship, - fileversion TYPE t_fileversion, - workbookpr TYPE t_workbookpr. - - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = stripped_name - file_path = dirname. - - " Read Workbook Relationships - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_workbook_path. - - rels_workbook = me->get_ixml_from_zip_archive( rels_workbook_path ). - - node ?= rels_workbook->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - CASE relationship-type. - WHEN lc_vba_project. - " Read VBA binary - CONCATENATE dirname relationship-target INTO path. - me->load_vbaproject( ip_path = path - ip_excel = io_excel ). - WHEN OTHERS. - ENDCASE. - - node ?= node->get_next( ). - ENDWHILE. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'fileVersion' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = fileversion ). - - io_excel->zif_excel_book_vba_project~set_codename( fileversion-codename ). - ENDIF. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'workbookPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = workbookpr ). - - io_excel->zif_excel_book_vba_project~set_codename_pr( workbookpr-codename ). - ENDIF. - - endmethod. - - - method LOAD_WORKSHEET. - - super->load_worksheet( EXPORTING ip_path = ip_path - io_worksheet = io_worksheet ). - - DATA: path TYPE string, - node TYPE REF TO if_ixml_element, - worksheet TYPE REF TO if_ixml_document, - sheetpr TYPE t_sheetpr. - - -* " Read Workbook codeName -* workbook = me->get_ixml_from_zip_archive( ip_path ). -* node ?= workbook->find_from_name( 'fileVersion' ). -* IF node IS BOUND. -* -* fill_struct_from_attributes( EXPORTING ip_element = node -* CHANGING cp_structure = fileversion ). -* -* IO_WORKSHEET->zif_excel_book_vba_project~set_codename( fileversion-codename ). -* ENDIF. - - " Read Workbook codeName - worksheet = me->get_ixml_from_zip_archive( ip_path ). - node ?= worksheet->find_from_name( 'sheetPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = sheetpr ). - - io_worksheet->zif_excel_sheet_vba_project~set_codename_pr( sheetpr-codename ). - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - METHOD is_security_enabled. - IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. - ep_security_enabled = abap_true. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - orientation = me->c_orientation_default. - -* default margins - margin_bottom = '0.75'. - margin_footer = '0.3'. - margin_header = '0.3'. - margin_left = '0.7'. - margin_right = '0.7'. - margin_top = '0.75'. - -* clear page settings - CLEAR: black_and_white, - cell_comments, - copies, - draft, - errors, - first_page_number, - fit_to_page, - fit_to_height, - fit_to_width, - horizontal_dpi, - orientation, - page_order, - paper_height, - paper_size, - paper_width, - scale, - use_first_page_num, - use_printer_defaults, - vertical_dpi. - endmethod. - - - - - - - method GET_HEADER_FOOTER_STRING. -* ---------------------------------------------------------------------- - DATA: lc_marker_left(2) TYPE c VALUE '&L' - , lc_marker_right(2) TYPE c VALUE '&R' - , lc_marker_center(2) TYPE c VALUE '&C' - , lv_value TYPE string - . -* ---------------------------------------------------------------------- - IF ep_odd_header IS SUPPLIED. - - IF me->odd_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'CENTER' ). - CONCATENATE ep_odd_header lc_marker_center lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'RIGHT' ). - CONCATENATE ep_odd_header lc_marker_right lv_value INTO ep_odd_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_odd_footer IS SUPPLIED. - - IF me->odd_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'CENTER' ). - CONCATENATE ep_odd_footer lc_marker_center lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'RIGHT' ). - CONCATENATE ep_odd_footer lc_marker_right lv_value INTO ep_odd_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_header IS SUPPLIED. - - IF me->even_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'CENTER' ). - CONCATENATE ep_even_header lc_marker_center lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'RIGHT' ). - CONCATENATE ep_even_header lc_marker_right lv_value INTO ep_even_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_footer IS SUPPLIED. - - IF me->even_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'CENTER' ). - CONCATENATE ep_even_footer lc_marker_center lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'RIGHT' ). - CONCATENATE ep_even_footer lc_marker_right lv_value INTO ep_even_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - endmethod. - - - - - - method PROCESS_HEADER_FOOTER. - -* ---------------------------------------------------------------------- -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size - - DATA: lv_fname(12) TYPE c - , lv_string TYPE string - . - - FIELD-SYMBOLS: <lv_value> TYPE string - , <ls_font> TYPE zexcel_s_style_font - . - -* ---------------------------------------------------------------------- - CONCATENATE ip_side '_VALUE' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <lv_value>. - - CONCATENATE ip_side '_FONT' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <ls_font>. - - IF <ls_font> IS ASSIGNED AND <lv_value> IS ASSIGNED. - - IF <ls_font>-name IS NOT INITIAL. - CONCATENATE '&"' <ls_font>-name ',' INTO rv_processed_string. - ELSE. - rv_processed_string = '&"-,'. - ENDIF. - - IF <ls_font>-bold = abap_true. - CONCATENATE rv_processed_string 'Bold"' INTO rv_processed_string. - ELSE. - CONCATENATE rv_processed_string 'Standard"' INTO rv_processed_string. - ENDIF. - - IF <ls_font>-size IS NOT INITIAL. - lv_string = <ls_font>-size. - CONCATENATE rv_processed_string '&' lv_string INTO rv_processed_string. - ENDIF. - - CONCATENATE rv_processed_string <lv_value> INTO rv_processed_string. - - ENDIF. -* ---------------------------------------------------------------------- - - endmethod. - - - - - - - method SET_HEADER_FOOTER. - -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size -* -* usefull placeholders, which can be used in header/footer value strings -* '&P' - page number -* '&N' - total number of pages -* '&D' - Date -* '&T' - Time -* '&F' - File Name -* '&Z' - Path -* '&A' - Sheet name -* new line via class constant CL_ABAP_CHAR_UTILITIES=>newline -* -* Example Value String 'page &P of &N' -* -* DO NOT USE &L , &C or &R which automatically created as position markers - - me->odd_header = ip_odd_header. - me->odd_footer = ip_odd_footer. - me->even_header = ip_even_header. - me->even_footer = ip_even_footer. - - IF me->even_header IS NOT INITIAL OR me->even_footer IS NOT INITIAL. - me->diff_oddeven_headerfooter = abap_true. - ENDIF. - - - endmethod. - - - - - - - - - - method SET_PAGE_MARGINS. - DATA: lv_coef TYPE f, - lv_unit TYPE string. - - lv_unit = ip_unit. - TRANSLATE lv_unit TO UPPER CASE. - - CASE lv_unit. - WHEN 'IN'. lv_coef = 1. - WHEN 'CM'. lv_coef = '0.393700787'. - WHEN 'MM'. lv_coef = '0.0393700787'. - ENDCASE. - - IF ip_bottom IS SUPPLIED. margin_bottom = lv_coef * ip_bottom. ENDIF. - IF ip_footer IS SUPPLIED. margin_footer = lv_coef * ip_footer. ENDIF. - IF ip_header IS SUPPLIED. margin_header = lv_coef * ip_header. ENDIF. - IF ip_left IS SUPPLIED. margin_left = lv_coef * ip_left. ENDIF. - IF ip_right IS SUPPLIED. margin_right = lv_coef * ip_right. ENDIF. - IF ip_top IS SUPPLIED. margin_top = lv_coef * ip_top. ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - METHOD constructor. - - - CREATE OBJECT font. - CREATE OBJECT fill. - CREATE OBJECT borders. - CREATE OBJECT alignment. - CREATE OBJECT number_format. - CREATE OBJECT protection. - -* Start of insertion # issue 139 - Dateretention of cellstyles - IF ip_guid IS NOT INITIAL. - me->guid = ip_guid. - ELSE. -* End of insertion # issue 139 - Dateretention of cellstyles -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = me->guid. - me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call -* Start of insertion # issue 139 - Dateretention of cellstyles - ENDIF. -* End of insertion # issue 139 - Dateretention of cellstyles - -ENDMETHOD. - - - - method GET_GUID. - - - ep_guid = me->guid. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - - - styles->add( ip_style ). - endmethod. - - - method CLEAR. - - - styles->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT styles. - endmethod. - - - - - method GET. - - - eo_style ?= styles->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - - - eo_iterator ?= styles->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - - - is_empty = styles->if_object_collection~is_empty( ). - endmethod. - - - - - method REGISTER_NEW_STYLE. - - - me->add( io_style ). - ep_style_code = me->size( ) - 1. "style count starts from 0 - endmethod. - - - - method REMOVE. - - - styles->remove( ip_style ). - endmethod. - - - - method SIZE. - - - ep_size = styles->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - styles_conditional->add( ip_style_conditional ). - endmethod. - - - method CLEAR. - styles_conditional->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT styles_conditional. - - endmethod. - - - - - method GET. - DATA lv_index TYPE i. - lv_index = ip_index. - eo_style_conditional ?= styles_conditional->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= styles_conditional->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = styles_conditional->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - styles_conditional->remove( ip_style_conditional ). - endmethod. - - - - method SIZE. - ep_size = styles_conditional->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - horizontal = me->c_horizontal_general. - vertical = me->c_vertical_bottom. - wrapText = abap_false. - shrinkToFit = abap_false. - endmethod. - - - - method GET_STRUCTURE. - - es_alignment-horizontal = me->horizontal. - es_alignment-vertical = me->vertical. - es_alignment-textrotation = me->textrotation. - es_alignment-wraptext = me->wraptext. - es_alignment-shrinktofit = me->shrinktofit. - es_alignment-indent = me->indent. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - border_style = zcl_excel_style_border=>c_border_none. - border_color-theme = zcl_excel_style_color=>c_theme_not_set. - border_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - method GET_STRUCTURE. -*initialize colors to 'not set' - es_fill-left_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-left_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-right_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-right_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-top_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-top_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-bottom_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-bottom_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-diagonal_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-diagonal_color-theme = zcl_excel_style_color=>c_theme_not_set. - -* Check if all borders is set otherwise check single border - IF me->allborders IS BOUND. - es_fill-left_color = me->allborders->border_color. - es_fill-left_style = me->allborders->border_style. - es_fill-right_color = me->allborders->border_color. - es_fill-right_style = me->allborders->border_style. - es_fill-top_color = me->allborders->border_color. - es_fill-top_style = me->allborders->border_style. - es_fill-bottom_color = me->allborders->border_color. - es_fill-bottom_style = me->allborders->border_style. - ELSE. - IF me->left IS BOUND. - es_fill-left_color = me->left->border_color. - es_fill-left_style = me->left->border_style. - ENDIF. - IF me->right IS BOUND. - es_fill-right_color = me->right->border_color. - es_fill-right_style = me->right->border_style. - ENDIF. - IF me->top IS BOUND. - es_fill-top_color = me->top->border_color. - es_fill-top_style = me->top->border_style. - ENDIF. - IF me->down IS BOUND. - es_fill-bottom_color = me->down->border_color. - es_fill-bottom_style = me->down->border_style. - ENDIF. - ENDIF. - -* Check if diagonal is set - IF me->diagonal IS BOUND. - es_fill-diagonal_color = me->diagonal->border_color. - es_fill-diagonal_style = me->diagonal->border_style. - CASE me->diagonal_mode. - WHEN 1. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 0. - WHEN 2. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 1. - WHEN 3. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 1. - WHEN OTHERS. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 0. - ENDCASE. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD create_new_arbg_int. - DATA: lv_red TYPE int1, - lv_green TYPE int1, - lv_blue TYPE int1, - lv_hex TYPE x, - lv_char_red TYPE zexcel_style_color_component, - lv_char_green TYPE zexcel_style_color_component, - lv_char_blue TYPE zexcel_style_color_component. - - lv_red = iv_red MOD 256. - lv_green = iv_green MOD 256. - lv_blue = iv_blue MOD 256. - - lv_hex = lv_red. - lv_char_red = lv_hex. - - lv_hex = lv_green. - lv_char_green = lv_hex. - - lv_hex = lv_blue. - lv_char_blue = lv_hex. - - - concatenate zcl_excel_style_color=>c_alpha lv_char_red lv_char_green lv_char_blue into rv_color_argb. - - -ENDMETHOD. - - - - - - - METHOD create_new_argb. - - CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - DATA: ls_iconset TYPE zexcel_conditional_iconset. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - - - me->rule = zcl_excel_style_conditional=>c_rule_none. -* me->iconset->operator = zcl_excel_style_conditional=>c_operator_none. - me->mode_iconset = ls_iconset. - me->priority = 1. - -* inizialize dimension range - me->stop_cell-cell_row = 1. - me->stop_cell-cell_column = 1. - me->start_cell-cell_row = 1. - me->start_cell-cell_column = 1. - endmethod. - - - - - - - - - - - - - - - - - METHOD factory_cond_style_iconset. - -*--------------------------------------------------------------------* -* Work in progress -* Missing: LE or LT may be specified --> extend structure ZEXCEL_CONDITIONAL_ICONSET to hold this information as well -*--------------------------------------------------------------------* - -* DATA: lv_needed_values TYPE i. -* CASE icon_type. -* -* WHEN 'C_ICONSET_3ARROWS' -* OR 'C_ICONSET_3ARROWSGRAY' -* OR 'C_ICONSET_3FLAGS' -* OR 'C_ICONSET_3SIGNS' -* OR 'C_ICONSET_3SYMBOLS' -* OR 'C_ICONSET_3SYMBOLS2' -* OR 'C_ICONSET_3TRAFFICLIGHTS' -* OR 'C_ICONSET_3TRAFFICLIGHTS2'. -* lv_needed_values = 3. -* -* WHEN 'C_ICONSET_4ARROWS' -* OR 'C_ICONSET_4ARROWSGRAY' -* OR 'C_ICONSET_4RATING' -* OR 'C_ICONSET_4REDTOBLACK' -* OR 'C_ICONSET_4TRAFFICLIGHTS'. -* lv_needed_values = 4. -* -* WHEN 'C_ICONSET_5ARROWS' -* OR 'C_ICONSET_5ARROWSGRAY' -* OR 'C_ICONSET_5QUARTERS' -* OR 'C_ICONSET_5RATING'. -* lv_needed_values = 5. -* -* WHEN OTHERS. -* RETURN. -* ENDCASE. - -ENDMETHOD. - - - - method GET_DIMENSION_RANGE. - IF stop_cell EQ start_cell. "only one cell - ep_dimension_range = start_cell-cell_coords. - ELSE. - CONCATENATE start_cell-cell_coords ':' stop_cell-cell_coords INTO ep_dimension_range. - ENDIF. - endmethod. - - - - - - - method SET_RANGE. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string. - - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - stop_cell-cell_row = 1. - stop_cell-cell_column = lv_column. - lv_row_alpha = ip_stop_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_stop_column lv_row_alpha INTO stop_cell-cell_coords. - - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - start_cell-cell_row = 1. - start_cell-cell_column = lv_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_start_column lv_row_alpha INTO start_cell-cell_coords. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method build_gradient. - check check_filltype_is_gradient( ) eq abap_true. - clear gradtype. - case filltype. - when c_fill_gradient_horizontal90. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontal270. - gradtype-degree = '270'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontalb. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_vertical. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_fromcenter. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - when c_fill_gradient_diagonal45. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal45b. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_diagonal135. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal135b. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_cornerlt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_cornerlb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '1'. - gradtype-top = '1'. - when c_fill_gradient_cornerrt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-left = '1'. - gradtype-right = '1'. - when c_fill_gradient_cornerrb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - endcase. - - endmethod. "build_gradient - - - - method check_filltype_is_gradient. - case filltype. - when c_fill_gradient_horizontal90 or - c_fill_gradient_horizontal270 or - c_fill_gradient_horizontalb or - c_fill_gradient_vertical or - c_fill_gradient_fromcenter or - c_fill_gradient_diagonal45 or - c_fill_gradient_diagonal45b or - c_fill_gradient_diagonal135 or - c_fill_gradient_diagonal135b or - c_fill_gradient_cornerlt or - c_fill_gradient_cornerlb or - c_fill_gradient_cornerrt or - c_fill_gradient_cornerrb. - rv_is_gradient = abap_true. - endcase. - endmethod. "check_filltype_is_gradient - - - method constructor. - filltype = zcl_excel_style_fill=>c_fill_none. - fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. - bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. - rotation = 0. - - endmethod. "CONSTRUCTOR - - - - method get_structure. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgcolor = me->fgcolor. - es_fill-bgcolor = me->bgcolor. - me->build_gradient( ). - es_fill-gradtype = me->gradtype. - endmethod. "GET_STRUCTURE - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CALCULATE_TEXT_WIDTH. - " Addition to solve issue #120, contribution by Stefan Schmöcker - r_width = strlen( i_text ). - " use scale factor based on default 11 - " ( don't know where defaultsetting is stored currently ) - r_width = r_width * me->size / 11. - endmethod. - - - method CONSTRUCTOR. - me->color-rgb = zcl_excel_style_color=>c_black. - me->color-theme = zcl_excel_style_color=>c_theme_not_set. - me->color-indexed = zcl_excel_style_color=>c_indexed_not_set. - me->scheme = zcl_excel_style_font=>c_scheme_minor. - me->underline_mode = zcl_excel_style_font=>c_underline_single. - endmethod. - - - - method GET_STRUCTURE. - - es_font-bold = me->bold. - es_font-italic = me->italic. - es_font-underline = me->underline. - es_font-underline_mode = me->underline_mode. - es_font-strikethrough = me->strikethrough. - es_font-size = me->size. - es_font-color = me->color. - es_font-name = me->name. - es_font-family = me->family. - es_font-scheme = me->scheme. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - format_code = me->c_format_general. - endmethod. - - - - method GET_STRUCTURE. - ep_number_format-numfmt = me->format_code. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method CONSTRUCTOR. - locked = me->c_protection_locked. - hidden = me->c_protection_unhidden. - endmethod. - - - - method GET_STRUCTURE. - ep_protection-locked = me->locked. - ep_protection-hidden = me->hidden. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method GET_BOTTOM_ROW_INTEGER. - DATA: lv_table_lines TYPE i. - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - IF settings-bottom_right_row IS NOT INITIAL. -* ev_row = zcl_excel_common=>convert_column2int( settings-bottom_right_row ). " del issue #246 - ev_row = settings-bottom_right_row . " ins issue #246 - EXIT. - ENDIF. - - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - - ev_row = settings-top_left_row + lv_table_lines. - - IF me->has_totals( ) = abap_true." ???? AND ip_include_totals_row = abap_true. - ADD 1 TO ev_row. - ENDIF. - endmethod. - - - - method GET_ID. - ov_id = id. - endmethod. - - - - method GET_NAME. - - IF me->name IS INITIAL. - me->name = zcl_excel_common=>number_to_excel_string( ip_value = me->id ). - CONCATENATE 'table' me->name INTO me->name. - ENDIF. - - ov_name = me->name. - endmethod. - - - - - method GET_REFERENCE. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - lv_right_column TYPE zexcel_cell_column_alpha, - ls_field_catalog TYPE zexcel_s_fieldcatalog, - lv_bottom_row TYPE zexcel_cell_row, - lv_top_row_string(10) TYPE c, - lv_bottom_row_string(10) TYPE c. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - -*column - lv_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - lv_table_lines = 0. - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO lv_table_lines. - ENDLOOP. - lv_column = lv_column + lv_table_lines - 1. - lv_right_column = zcl_excel_common=>convert_column2alpha( lv_column ). - -*row - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - lv_bottom_row = settings-top_left_row + lv_table_lines . - - IF me->has_totals( ) = abap_true AND ip_include_totals_row = abap_true. - ADD 1 TO lv_bottom_row. - ENDIF. - - lv_top_row_string = zcl_excel_common=>number_to_excel_string( settings-top_left_row ). - lv_bottom_row_string = zcl_excel_common=>number_to_excel_string( lv_bottom_row ). - - CONCATENATE settings-top_left_column lv_top_row_string - ':' - lv_right_column lv_bottom_row_string INTO ov_reference. - - endmethod. - - - - - method GET_RIGHT_COLUMN_INTEGER. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - ls_field_catalog TYPE zexcel_s_fieldcatalog. - - IF settings-bottom_right_column IS NOT INITIAL. - ev_column = zcl_excel_common=>convert_column2int( settings-bottom_right_column ). - EXIT. - ENDIF. - - ev_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO ev_column. - ENDLOOP. - - endmethod. - - - - - - method GET_TOTALS_FORMULA. - CONSTANTS: lc_function_id_sum TYPE string VALUE '109', - lc_function_id_min TYPE string VALUE '105', - lc_function_id_max TYPE string VALUE '104', - lc_function_id_count TYPE string VALUE '103', - lc_function_id_average TYPE string VALUE '101'. - - DATA: lv_function_id TYPE string. - - CASE ip_function. - WHEN zcl_excel_table=>totals_function_sum. - lv_function_id = lc_function_id_sum. - - WHEN zcl_excel_table=>totals_function_min. - lv_function_id = lc_function_id_min. - - WHEN zcl_excel_table=>totals_function_max. - lv_function_id = lc_function_id_max. - - WHEN zcl_excel_table=>totals_function_count. - lv_function_id = lc_function_id_count. - - WHEN zcl_excel_table=>totals_function_average. - lv_function_id = lc_function_id_average. - - WHEN zcl_excel_table=>totals_function_custom. " issue #292 - RETURN. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid totals formula. See ZCL_ for possible values'. - ENDCASE. - - CONCATENATE 'SUBTOTAL(' lv_function_id ',[' ip_column '])' INTO ep_formula. - endmethod. - - - - method HAS_TOTALS. - DATA: ls_field_catalog TYPE zexcel_s_fieldcatalog. - - ep_result = abap_false. - - LOOP AT fieldcat INTO ls_field_catalog. - IF ls_field_catalog-totals_function IS NOT INITIAL. - ep_result = abap_true. - EXIT. - ENDIF. - ENDLOOP. - - endmethod. - - - - METHOD set_data. - - DATA lr_temp TYPE REF TO data. - - FIELD-SYMBOLS: <lt_table_temp> TYPE ANY TABLE, - <lt_table> TYPE ANY TABLE. - - GET REFERENCE OF ir_data INTO lr_temp. - ASSIGN lr_temp->* TO <lt_table_temp>. - CREATE DATA table_data LIKE <lt_table_temp>. - ASSIGN me->table_data->* TO <lt_table>. - <lt_table> = <lt_table_temp>. - -ENDMETHOD. - - - - method SET_ID. - id = iv_id. - endmethod. - - - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - -*&---------------------------------------------------------------------* -*& Class (Implementation) C_OI_PROXY_ERROR -*&---------------------------------------------------------------------* -CLASS c_oi_proxy_error IMPLEMENTATION. - METHOD constructor. -* IMPORTING object_name TYPE c -* method_name TYPE c. - error_nr = ret_call_not_flushed. - me->i_oi_error~error_code = c_oi_errors=>ret_call_not_flushed. - me->i_oi_error~is_flushed = ' '. - me->i_oi_error~has_failed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->message_id = 'SOFFICEINTEGRATION'. - me->message_nr = '899'. - me->param1 = object_name. - me->param2 = method_name. - ENDMETHOD. "constructor - - METHOD i_oi_error~flush_error. - IF error_nr EQ 0. - me->i_oi_error~error_code = c_oi_errors=>ret_ok. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_failed = ' '. - me->i_oi_error~has_succeeded = 'X'. - me->message_id = ''. - me->message_nr = '000'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - IMPORTING - retcode = me->i_oi_error~error_code. - ELSEIF error_nr EQ ret_call_not_flushed. - "call still not flushed - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = me->param2 "method name - objectname = me->param1 - IMPORTING - retcode = me->i_oi_error~error_code. - ELSE. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->i_oi_error~has_failed = 'X'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = error_string - IMPORTING - retcode = me->i_oi_error~error_code. - CALL METHOD c_oi_errors=>get_message - IMPORTING - message_id = me->message_id - message_number = me->message_nr - param1 = me->param1 - param2 = me->param2 - param3 = me->param3 - param4 = me->param4. - ENDIF. - ENDMETHOD. "i_oi_error~flush_error - - METHOD i_oi_error~raise_message. -* IMPORTING type TYPE c. -* EXCEPTIONS message_raised flush_failed. - IF me->i_oi_error~has_succeeded IS INITIAL. - IF NOT me->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. "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->param1. param2 = me->param2. - param3 = me->param3. param4 = me->param4. - - message_id = me->message_id. - message_number = me->message_nr. - ENDMETHOD. "i_oi_error~get_message -ENDCLASS. "C_OI_PROXY_ERROR - -*&---------------------------------------------------------------------* -*& Class (Implementation) CL_GRID_ACCESSION -*&---------------------------------------------------------------------* -CLASS lcl_gui_alv_grid IMPLEMENTATION. - - METHOD get_alv_attributes. - CREATE DATA et_table LIKE io_grid->mt_outtab. - et_table = io_grid->mt_outtab. - ENDMETHOD. "get_data - -ENDCLASS. "CL_GRID_ACCESSION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method'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. "c_oi_proxy_error DEFINITION - -*--------------------------------------------------------------------* -* 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 " ALV grid - EXPORTING - et_table TYPE REF TO data. " dta table - -ENDCLASS. "lcl_gui_alv_grid DEFINITION - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_col_from, - me->print_title_col_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_row_from, - me->print_title_row_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS. - ev_columns_from = me->print_title_col_from. - ev_columns_to = me->print_title_col_to. - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS. - ev_rows_from = me->print_title_row_from. - ev_rows_to = me->print_title_row_to. - endmethod. - - - 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=>convert_column2int( iv_columns_from ). - lv_col_to_int = zcl_excel_common=>convert_column2int( iv_columns_to ). - -*--------------------------------------------------------------------* -* Check if valid range is supplied -*--------------------------------------------------------------------* - IF lv_col_from_int < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF lv_col_from_int > lv_col_to_int. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_col_from = iv_columns_from. - me->print_title_col_to = iv_columns_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - endmethod. - - - 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 < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF iv_rows_from > iv_rows_to. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_row_from = iv_rows_from. - me->print_title_row_to = iv_rows_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - 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->excel->get_default_style( ). - ENDIF. - endmethod. - - - method ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE. - - zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_showzero. - zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. - zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>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. - - - method ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE. - zif_excel_sheet_properties~style = ip_style. - endmethod. - - - method ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE. - - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_unprotected. - CLEAR me->zif_excel_sheet_protection~password. - me->zif_excel_sheet_protection~auto_filter = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_hyperlinks = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_noactive. -* me->zif_excel_sheet_protection~password = zif_excel_sheet_protection=>c_noactive. "issue #68 - me->zif_excel_sheet_protection~pivot_tables = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_locked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_unlocked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sort = zif_excel_sheet_protection=>c_noactive. - - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME. - me->zif_excel_sheet_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - - method ADD_DRAWING. - CASE ip_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - drawings->include( ip_drawing ). - WHEN zcl_excel_drawing=>type_chart. - charts->include( ip_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_CONDITIONAL_STYLE. - - CREATE OBJECT eo_conditional_style. - conditional_styles->add( eo_conditional_style ). - endmethod. - - - - method ADD_NEW_DATA_VALIDATION. - - CREATE OBJECT eo_data_validation. - data_validations->add( eo_data_validation ). - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - - - - - method BIND_ALV. - data: lo_converter type ref to zcl_excel_converter. - - create object lo_converter. - - try. - lo_converter->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. - - - - - - - - - - - - - - - - - - - - - - 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'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. "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: <f_collect00> type standard table. - field-symbols: <f_collect01> type standard table. - field-symbols: <f_collect02> type standard table. - field-symbols: <f_collect03> type standard table. - field-symbols: <f_collect04> type standard table. - field-symbols: <f_collect05> type standard table. - field-symbols: <f_collect06> type standard table. - field-symbols: <f_collect07> type standard table. - field-symbols: <f_collect08> type standard table. - field-symbols: <f_collect09> type standard table. - -* table before append subtotal lines - field-symbols: <f_alv_tab> 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: <f_excel_tab> type standard table. - field-symbols: <f_excel_line> type any. - -* dyn subtotal tables - field-symbols: <f_collect_tab> type standard table. - field-symbols: <f_collect_line> type any. - - field-symbols: <f_filter_idx_line> like line of LT_FILTER_IDX_KKBLO. - field-symbols: <f_fieldcat_line> like line of LT_FIELDCAT_KKBLO. - field-symbols: <f_grouplevels_line> like line of LT_GROUPLEVELS_KKBLO. - field-symbols: <f_line> 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. " currency / quantity flag - data: wa_t006 type t006. " decimal place of unit - - data: l_num type i. " table columns number - data: l_typ type c. " table type - data: wa type ref to data. - data: l_int type i. - data: l_counter type i. - - field-symbols: <f_excel_column> type any. - field-symbols: <f_fcat_column> 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. " exporting column number - data vkeycount type i. - data all type i. - data mit type i value 1. " index of recent row? - data li_col_pos type i value 1. " column position - data li_col_num type i. " table columns number - field-symbols: <line> type any. - field-symbols: <item> 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. "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 'X'. - data: li_head_top type i. "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->is_destroyed - IMPORTING - ret_value = l_is_closed. - -* if dun detroyed yet: close -> release proxy - - IF l_is_closed is initial. - call method lo_proxy->close_document -* EXPORTING -* do_save = do_save - IMPORTING - error = lo_error - retcode = lc_retcode. - ENDIF. - - call method lo_proxy->release_document - IMPORTING - error = lo_error - retcode = lC_retcode. - - else. - lc_retcode = c_oi_errors=>ret_document_not_open. - ENDIF. - -* Detroy control container - - IF lo_control is not initial. - CALL METHOD lo_control->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=>ret_ok. - close_document. - call method lo_error->raise_message - EXPORTING - type = 'E'. - clear: lo_error. - endif. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* SESSION 0: DOI CONSTRUCTOR -*--------------------------------------------------------------------* - -* check active windown - - call function 'GUI_HAS_ACTIVEX' - 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=>get_container_control - IMPORTING - control = lo_control - retcode = lC_retcode. - - error_doi. - -* Initialize Container control - - CALL METHOD lo_control->init_control - EXPORTING - parent = CL_GUI_CONTAINER=>DEFAULT_SCREEN - r3_application_name = '' - inplace_enabled = 'X' - no_flush = 'X' - register_on_close_event = 'X' - register_on_custom_event = 'X' - IMPORTING - error = lO_ERROR - retcode = lc_retcode. - - error_doi. - -* Get Proxy Document: -* check exist of document proxy, if exist -> 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 = 'Excel.Sheet.8'. - else. -* xlsx format, doctype = soi_doctype_excel_sheet - l_doctype_excel_sheet = 'Excel.Sheet'. - ENDIF. - - CALL METHOD lo_control->get_document_proxy - EXPORTING - document_type = l_doctype_excel_sheet - register_container = 'X' - 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->create_document - EXPORTING - create_view_data = 'X' - open_inplace = 'X' - no_flush = 'X' - 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->open_document - EXPORTING - document_url = i_document_url - open_inplace = 'X' - no_flush = 'X' - IMPORTING - error = lo_error - retcode = lc_retcode. - - error_doi. - - endif. - -* Check Spreadsheet Interface of Document Proxy - - CALL METHOD lo_proxy->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->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=>SCREEN0. - - call method lo_grid->get_alv_attributes - EXPORTING - io_grid = io_alv - IMPORTING - Et_table = lt_alv. - - assign lt_alv->* to <f_alv_tab>. - -* fieldcat - - CALL METHOD iO_alv->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 = '1'. - endif. - clear: wa_fieldcat_lvc. - -* sort table - - CALL METHOD IO_ALV->GET_SORT_CRITERIA - IMPORTING - ET_SORT = lt_sort_lvc. - - -* filter index - - CALL METHOD IO_ALV->GET_FILTERED_ENTRIES - IMPORTING - ET_FILTERED_ENTRIES = lt_filter_idx_lvc. - -* group level + subtotal - - CALL METHOD IO_ALV->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->* to <f_collect00>. - assign lt_collect01->* to <f_collect01>. - assign lt_collect02->* to <f_collect02>. - assign lt_collect03->* to <f_collect03>. - assign lt_collect04->* to <f_collect04>. - assign lt_collect05->* to <f_collect05>. - assign lt_collect06->* to <f_collect06>. - assign lt_collect07->* to <f_collect07>. - assign lt_collect08->* to <f_collect08>. - assign lt_collect09->* to <f_collect09>. - -* transfer to KKBLO struct - - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - 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 = <f_alv_tab> - EXCEPTIONS - IT_DATA_MISSING = 1 - IT_FIELDCAT_LVC_MISSING = 2 - OTHERS = 3. - IF SY-SUBRC <> 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 & total line - - create data lt_excel like <f_ALV_TAB>. - assign lt_excel->* to <f_excel_tab>. - - loop at <f_alv_tab> assigning <f_line>. - l_save_index = sy-tabix. - -* filter base on filter index table - - read table LT_FILTER_IDX_KKBLO assigning <f_filter_idx_line> - with key index = l_save_index - binary search. - if sy-subrc ne 0. - append <f_line> to <f_excel_tab>. - endif. - -* append subtotal lines - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - with key index_to = l_save_index - binary search. - if sy-subrc = 0. - l_tabix = sy-tabix. - do. - if <f_grouplevels_line>-subtot eq 'X' and - <f_grouplevels_line>-hide_level is initial and - <f_grouplevels_line>-cindex_from ne 0. - -* dynamic append subtotal line to excel table base on grouplevel table -* ex <f_GROUPLEVELS_line>-level = 1 -* then <f_collect_tab> = '<F_COLLECT01>' - - l_collect = <f_grouplevels_line>-level. - condense l_collect. - concatenate '<F_COLLECT0' - l_collect '>' -* '->*' - into l_collect. - - assign (l_collect) to <f_collect_tab>. - -* incase there're more than 1 total line of group, at the same level -* for example: subtotal of multi currency - - LOOP AT <f_collect_tab> assigning <f_collect_line>. - IF sy-tabix between <f_grouplevels_line>-cindex_from - and <f_grouplevels_line>-cindex_to. - - - append <f_collect_line> to <f_excel_tab>. - -* 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 'SUBTOT' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - clear: subrangeitem. - - ENDIF. - ENDLOOP. - unassign: <f_collect_tab>. - unassign: <f_collect_line>. - clear: l_collect. - endif. - -* check next subtotal level of group - - unassign: <f_grouplevels_line>. - add 1 to l_tabix. - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - index l_tabix. - if sy-subrc ne 0 - or <f_grouplevels_line>-index_to ne l_save_index. - exit. - endif. - - unassign: - <f_collect_tab>, - <f_collect_line>. - - enddo. - endif. - - clear: - l_tabix, - l_save_index. - - unassign: - <f_filter_idx_line>, - <f_grouplevels_line>. - - endloop. - -* free local data - - unassign: - <f_line>, - <f_collect_tab>, - <f_collect_line>, - <f_fieldcat_line>. - -* append grand total line - - IF <f_collect00> is assigned. - assign <f_collect00> to <f_collect_tab>. - if <f_collect_tab> is not initial. - LOOP AT <f_collect_tab> assigning <f_collect_line>. - - append <f_collect_line> to <f_excel_tab>. - -* 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 'TOTAL' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - ENDLOOP. - endif. - ENDIF. - - clear: - subrangeitem, - LT_SORT_KKBLO, - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>. - - unassign: - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>, - <f_collect_tab>, - <f_collect_line>. - -*--------------------------------------------------------------------* -* SESSION 3: MAP DATA TO SEMANTIC TABLE -*--------------------------------------------------------------------* - -* get dependent field field: currency and quantity - - create data wa like line of <f_excel_tab>. - assign wa->* to <f_excel_line>. - - describe field <f_excel_line> type l_typ components l_num. - - do l_num times. - l_save_index = sy-index. - assign component l_save_index of structure <f_excel_line> - to <f_excel_column>. - if sy-subrc ne 0. - message e059(0k) with 'FATAL ERROR' raising fatal_error. - endif. - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname. - assign component <f_fieldcat_line>-fieldname - of structure <f_excel_line> to <f_fcat_column>. - - describe distance between <f_excel_column> and <f_fcat_column> - 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 = <f_fieldcat_line>-fieldname. - wa_column_index-tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-cfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-ctabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - - if <f_fieldcat_line>-qfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-qfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-qtabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - -* rewrite field data type - - if <f_fieldcat_line>-inttype = 'X' - and <f_fieldcat_line>-datatype(3) = 'INT'. - <f_fieldcat_line>-inttype = 'I'. - endif. - - endloop. - - clear: l_save_index. - unassign: <f_fieldcat_line>. - - enddo. - -* build semantic tables - - l_n_hrz_keys = 1. - -* Get keyfigures - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - - clear wa_sema. - clear wa_hkey. - -* Units belong to keyfigures -> display as str - - read table lt_fieldcat_depf into wa_fieldcat_depf with key - fieldname = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-tabname. - - if sy-subrc = 0. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - -* Keyfigures - - else. - case <f_fieldcat_line>-datatype. - when 'QUAN'. - wa_sema-col_typ = 'N03'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. " no dependent field - endif. - - when 'DATS'. - wa_sema-col_typ = 'DAT'. - wa_sema-col_ops = 'NOP'. - - when 'CHAR' OR 'UNIT' OR 'CUKY'. " Added fieldformats UNIT and CUKY - dd. 26-10-2012 Wouter Heuvelmans - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. " dependent field - -* incase numeric, ex '00120' -> display as '12' - - when 'NUMC'. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - - when others. - wa_sema-col_typ = 'NUM'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. - 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 = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-cfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-qfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-qfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-currency is initial. - - select * from tcurx into table lt_tcurx. - sort lt_tcurx. - read table lt_tcurx into wa_tcurx - with key currkey = <f_fieldcat_line>-currency. - if sy-subrc = 0. - l_num_help = wa_tcurx-currdec. - concatenate 'N' 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 = <f_fieldcat_line>-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: - <f_fieldcat_line>, - <f_excel_line>, - <f_excel_column>, - <f_fcat_column>. - -*--------------------------------------------------------------------* -* 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=>ret_interface_not_supported. - call method c_oi_errors=>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 = 'OLE_DOCUMENT_PROXY' - method_name = 'get_ranges_names'. - - call method c_oi_errors=>add_error - EXPORTING - error = l_error. - - - describe table lt_sema lines datareal. - describe table <f_excel_tab> 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 ('.', ',', ...) in Office config - - call method lo_proxy->get_application_property - EXPORTING - property_name = 'INTERNATIONAL' - subproperty_name = 'DECIMAL_SEPARATOR' - 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 <g> type any. - data search_item(4) value ' #'. - - concatenate ',' decimal '.' decimal into comma_elim. - - data help type i. " table (with subtotal) line number - - help = datac. - - data: rowmax type i value 1. " header row number - data: columnmax type i value 0. " header columns number - - loop at lt_hkey into hkeyitem. - if hkeyitem-col_no > columnmax. - columnmax = hkeyitem-col_no. - endif. - - if hkeyitem-row_no > rowmax. - rowmax = hkeyitem-row_no. - endif. - endloop. - - data: hkeycolumns type i. " header columns no - - hkeycolumns = columnmax. - - if hkeycolumns < l_n_att_cols. - hkeycolumns = l_n_att_cols. - endif. - - columnmax = 0. - - loop at lt_vkey into vkeyitem. - if vkeyitem-col_no > columnmax. - columnmax = vkeyitem-col_no. - endif. - endloop. - - data overflow type i value 1. - data testname(10) type c. - data temp2 type i. " 1st item row position in excel - data realmit type i value 1. - data realoverflow type i value 1. " row index in content - - call method lo_spreadsheet->screen_update - EXPORTING - updating = ''. - - call method lo_spreadsheet->load_lib. - - data: str(40) type c. " range names of columns range (w/o col header) - data: rows type i. " 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 'TITLE'. - 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->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 'H'. "title - li_font_size = 16. - li_font_bold = 1. - li_font_italic = -1. - when 'S'. "subtile - li_font_size = -1. - li_font_bold = 1. - li_font_italic = -1. - when others. "'A' comment - li_font_size = -1. - li_font_bold = -1. - li_font_italic = 1. - endcase. - - call method lo_spreadsheet->set_font - EXPORTING - rangename = ls_commentary_range - family = '' - 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->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 = 'DAT' or semaitem-col_typ = 'MON' or - semaitem-col_typ = 'N00' or semaitem-col_typ = 'N01' or - semaitem-col_typ = 'N01' or semaitem-col_typ = 'N02' or - semaitem-col_typ = 'N03' or semaitem-col_typ = 'PCT' or - semaitem-col_typ = 'STR' or semaitem-col_typ = 'NUM'. - clear str. - str = semaitem-col_no. - condense str. - concatenate 'DATA' 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->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 <f_excel_tab> assigning <line>. - assign component semaitem-col_no of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - dec = typeinfo-decimals. - elseif typeinfo-type = 'I'. - dec = 0. - endif. - - describe field <line> type typ components count. - mit = 1. - do count times. - if mit = semaitem-col_src. - assign component sy-index of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - 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 = 'DAT'. - if semaitem-col_no > vkeycount. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = all - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'STR'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'MON'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 10 - no_flush = no_flush. - elseif semaitem-col_typ = 'N00'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'N01'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 1 - no_flush = no_flush. - elseif semaitem-col_typ = 'N02'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - elseif semaitem-col_typ = 'N03'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 3 - no_flush = no_flush. - elseif semaitem-col_typ = 'N04'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 4 - no_flush = no_flush. - elseif semaitem-col_typ = 'NUM'. - if dec eq -1. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = dec - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'PCT'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - 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 = ''. - curritem-size = -1. - curritem-bold = -1. - curritem-italic = -1. - curritem-align = -1. - curritem-frametyp = -1. - curritem-framecolor = -1. - curritem-currency = ''. - 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 <f_excel_tab> assigning <line>. - -* save line index to compare with lt_subtot_indexs, -* to discover line is a subtotal / totale line or not -* ex use to set 'dun display zero in subtotal / total line' - - 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 <line> to <item>. - else. - assign component sy-index - of structure <line> to <item>. - endif. - - contentsitem-row = realoverflow. - - if sy-subrc = 0. - move semaitem-col_ops to search_item(3). - search 'ADD#CNT#MIN#MAX#AVG#NOP#DFT#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - move semaitem-col_typ to search_item(3). - search 'NUM#N00#N01#N02#N03#N04#PCT#DAT#MON#STR#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - contentsitem-column = sy-index. - if semaitem-col_typ eq 'DAT' or semaitem-col_typ eq 'MON'. - if semaitem-col_no > vkeycount. - - " Hinweis 512418 - " EXCEL bezieht Datumsangaben - " auf den 31.12.1899, behandelt - " aber 1900 als ein Schaltjahr - " d.h. ab 1.3.1900 korrekt - " 1.3.1900 als Zahl = 61 - - data: genesis type d value '18991230'. - data: number_of_days type p. -* change for date in char format & sema_type = X - data: temp_date type d. - - if not <item> is initial and not <item> co ' ' and not - <item> co '0'. -* change for date in char format & sema_type = X starts - if sema_type = 'X'. - describe field <item> type typ. - if typ = 'C'. - temp_date = <item>. - number_of_days = temp_date - genesis. - else. - number_of_days = <item> - genesis. - endif. - else. - number_of_days = <item> - genesis. - endif. -* change for date in char format & sema_type = X ends - if number_of_days < 61. - number_of_days = number_of_days - 1. - endif. - - set country 'DE'. - 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 <item> to contentsitem-value. - endif. - elseif semaitem-col_typ eq 'NUM' or - semaitem-col_typ eq 'N00' or - semaitem-col_typ eq 'N01' or - semaitem-col_typ eq 'N02' or - semaitem-col_typ eq 'N03' or - semaitem-col_typ eq 'N04' or - semaitem-col_typ eq 'PCT'. - set country 'DE'. - describe field <item> type typ. - - if semaitem-col_cur is initial. - if typ ne 'F'. - write <item> to contentsitem-value no-grouping - no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - no-sign. - endif. - else. -* Treat of fixed curreny for column >>Y9CK007319 - if semaitem-col_cur < 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 'F'. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign. - endif. - endif. - else. - assign component semaitem-col_cur - of structure <line> to <g>. -* 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 <f_fieldcat_line> - with key tabname = l_tabname - tech = space - no_out = space - col_pos = semaitem-col_no. - IF sy-subrc = 0. - IF <f_fieldcat_line>-cfieldname is not initial. - l_def = 'C'. - else."if <f_fieldcat_line>-qfieldname is not initial. - l_def = 'Q'. - ENDIF. - ENDIF. - -* if field is amount field -* exporting of amount field base on currency decimal table: TCURX - IF l_def = 'C'. "field is amount field - select single * from tcurx into wa_tcurx - where currkey = <g>. -* if amount ref to un-know currency -> 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 'F'. - write <item> to contentsitem-value - currency <g> - no-sign no-grouping. - else. - write <item> to contentsitem-value - decimals 14 currency <g> - no-sign no-grouping. - endif. - -* if field is quantity field -* exporting of quantity field base on quantity decimal table: T006 - - else."if l_def = 'Q'. " field is quantity field - clear: wa_t006. - select single * from t006 into wa_t006 - where MSEHI = <g>. -* if quantity ref to un-know unit-> default decimal = 2 - if sy-subrc eq 0. - curritem-decimals = wa_t006-decan. - else. - curritem-decimals = 2. - endif. - append curritem to currcells. - - write <item> to contentsitem-value - unit <g> - no-sign no-grouping. - condense contentsitem-value. - - ENDIF. - - endif. "Y9CK007319 - endif. - condense contentsitem-value. - -* add function fieldcat-no zero display - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - if <f_fieldcat_line>-col_pos = semaitem-col_no. - if <f_fieldcat_line>-no_zero = 'X'. - if <item> = '0'. - 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 <item> = '0'. - clear: contentsitem-value. - endif. - ENDIF. - endif. - endif. - endloop. - unassign: <f_fieldcat_line>. - - if <item> lt 0. - search contentsitem-value for 'E'. - if sy-fdpos eq 0. - -* use prefix notation for signed numbers - - translate contentsitem-value using '- '. - condense contentsitem-value no-gaps. - concatenate '-' contentsitem-value - into contentsitem-value. - else. - concatenate '-' 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 ":" enthalten. -* Für die -* darf keine Kommaseparierung stattfinden. -* Changing for correction request - Y6BK041073 - if contentsitem-value co '0123456789.,-+E '. - translate contentsitem-value using comma_elim. - endif. - else. - clear contentsitem-value. - -* if type is not numeric -> dun display with zero - - write <item> 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: <f_fieldcat_line>. - -* set item range for set_range_data method - - testname = mit / const. - condense testname. - - concatenate 'TEST' 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->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 = 'X'. - -* 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 > 1. - rowmaxtemp = rowmax - 1. - rowcount = 1. - do rowmaxtemp times. - columncount = 1. - do columnmax times. - contentsitem-column = columncount. - contentsitem-row = rowcount. - contentsitem-value = ''. - 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 = 'TESTHKEY'. - rangeitem-rows = rowmax. - rangeitem-columns = hkeycolumns. - append rangeitem to ranges. - clear: rangeitem. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'TESTHKEY' - 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. " 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: <f_source> type any. - field-symbols: <f_des> type any. - -* columns header format - - wa_format-front = -1. - wa_format-back = 15. "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 -* -> map input format - - if i_columns_header = 'X'. - wa_format-name = 'TESTHKEY'. - 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. " dun map range name - assign component sy-index of structure i_format_col_header - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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 = 'X'. - 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 = 'X'. - 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->cell_format - EXPORTING - cells = currcells - no_flush = no_flush. - -* item data: write item table content - - call method lo_spreadsheet->set_ranges_data - EXPORTING - ranges = ranges - contents = contents - no_flush = no_flush. - -* whole table range to format all table - - if i_columns_header = 'X'. - li_head_top = li_commentary_rows + 1. - else. - li_head_top = li_commentary_rows + 2. - help = help - 1. - endif. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'WHOLE_TABLE' - 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 = 'X'. - call method lo_spreadsheet->fit_widest - EXPORTING - name = 'WHOLE_TABLE' - 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=>FLUSH ) - - call method lo_spreadsheet->set_frame - EXPORTING - rangename = 'WHOLE_TABLE' - 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->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) = 'SUB'. - wa_format-back = 36. "subtotal line - wa_format_temp = i_format_subtotal. - else. - wa_format-back = 27. "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. " dun map range name - assign component sy-index of structure wa_format_temp - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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->set_ranges_format - EXPORTING - formattable = lt_format - no_flush = no_flush. - refresh: lt_format. - endif. -*--------------------------------------------------------------------* - call method lo_spreadsheet->screen_update - EXPORTING - updating = 'X'. - - call method c_oi_errors=>flush_errors. - - lo_error_w = l_error. - lc_retcode = lo_error_w->error_code. - -** catch no_flush -> led to dump ( optional ) -* go_error = l_error. -* gc_retcode = go_error->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, - <f_excel_tab>. - - clear: - lo_error_w. - - unassign: - <line>, - <item>, - <f_excel_tab>. - -*--------------------------------------------------------------------* -* SESSION 5: SAVE AND CLOSE FILE -*--------------------------------------------------------------------* - -* ex of save path: 'FILE://C:\temp\test.xlsx' - concatenate 'FILE://' I_save_path - into ls_path. - - call method lo_proxy->save_document_to_url - EXPORTING - no_flush = 'X' - url = ls_path - IMPORTING - error = lo_error - retcode = lc_retcode - CHANGING - document_size = li_document_size. - - error_doi. - -* if save successfully -> raise successful message -* message i499(sy) with 'Document is Exported to ' p_path. - message i499(sy) with 'Data has been exported successfully'. - - clear: - ls_path, - li_document_size. - - close_document. - endmethod. - - - - - - - - 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 'B', - lc_top_left_row TYPE zexcel_cell_row VALUE 3. - - 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_value_lowercase TYPE string, - lv_syindex TYPE char3, - lv_errormessage TYPE string, "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: - <ls_field_catalog> TYPE zexcel_s_fieldcatalog, - <ls_field_catalog_custom> TYPE zexcel_s_fieldcatalog, - <fs_table_line> TYPE ANY, - <fs_fldval> 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=>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=>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 -*--------------------------------------------------------------------* - "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. - - "Calculate the top left row of the current table - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - lv_row_int = ls_settings-top_left_row. - - "Get number of row for the current table - DESCRIBE TABLE ip_table LINES lv_rows. - - "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=>convert_column2alpha( lv_maxcol ). - ls_settings-bottom_right_row = lv_maxrow. - - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - - lo_iterator = me->tables->if_object_collection~get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_curtable ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF ( ( ls_settings-top_left_row GE lo_curtable->settings-top_left_row AND ls_settings-top_left_row LE lo_curtable->settings-bottom_right_row ) - OR - ( ls_settings-bottom_right_row GE lo_curtable->settings-top_left_row AND ls_settings-bottom_right_row LE lo_curtable->settings-bottom_right_row ) - ) - AND - ( ( lv_column_int GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_column_int LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - OR - ( lv_maxcol GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_maxcol LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - ). - lv_errormessage = 'Table overlaps with previously bound table and will not be added to worksheet.'(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->settings = ls_settings. - lo_table->set_data( ir_data = ip_table ). - lv_id = me->excel->get_next_table_id( ). - lo_table->set_id( iv_id = lv_id ). -* lo_table->fieldcat = lt_field_catalog[]. - - me->tables->add( lo_table ). - -* It is better to loop column by column (only visible column) - LOOP AT lt_field_catalog ASSIGNING <ls_field_catalog> WHERE dynpfld EQ abap_true. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - " Due restrinction of new table object we cannot have two column with the same name - " Check if a column with the same name exists, if exists add a counter - " If no medium description is provided we try to use small or long -* lv_value = <ls_field_catalog>-scrtext_m. - IF <ls_field_catalog>-scrtext_m IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_m. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_s IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_s. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_l IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_l. - ELSE. - lv_value = 'Column'. " default value as Excel does - <ls_field_catalog>-scrtext_l = lv_value. - ENDIF. - WHILE 1 = 1. - lv_value_lowercase = lv_value. - TRANSLATE lv_value_lowercase TO LOWER CASE. - READ TABLE lt_column_name_buffer TRANSPORTING NO FIELDS WITH KEY table_line = lv_value_lowercase BINARY SEARCH. - IF sy-subrc <> 0. - <ls_field_catalog>-scrtext_l = lv_value. - INSERT lv_value_lowercase INTO TABLE lt_column_name_buffer. - EXIT. - ELSE. - lv_syindex = sy-index. - CONCATENATE <ls_field_catalog>-scrtext_l lv_syindex INTO lv_value. - ENDIF. - - ENDWHILE. - " First of all write column header - IF <ls_field_catalog>-style_header IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_value - ip_style = <ls_field_catalog>-style_header ). - ELSE. - me->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 <fs_table_line>. - - ASSIGN COMPONENT <ls_field_catalog>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - " issue #290 Add formula support in table - IF <ls_field_catalog>-formula EQ abap_true. - IF <ls_field_catalog>-style IS NOT INITIAL. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> - ip_abap_type = <ls_field_catalog>-abap_type - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ENDIF. - ELSE. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - - ip_formula = <fs_fldval> - ip_abap_type = <ls_field_catalog>-abap_type ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> ). - ENDIF. - ENDIF. - ELSE. - IF <ls_field_catalog>-style IS NOT INITIAL. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> - ip_abap_type = <ls_field_catalog>-abap_type - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ENDIF. - ELSE. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_abap_type = <ls_field_catalog>-abap_type - ip_value = <fs_fldval> ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> ). - ENDIF. - ENDIF. - ENDIF. - ADD 1 TO lv_row_int. - - ENDLOOP. - IF sy-subrc <> 0. "create empty row if table has no data - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = space ). - ADD 1 TO lv_row_int. - ENDIF. - -*--------------------------------------------------------------------* - " totals -*--------------------------------------------------------------------* - IF <ls_field_catalog>-totals_function IS NOT INITIAL. - lv_formula = lo_table->get_totals_formula( ip_column = <ls_field_catalog>-scrtext_l ip_function = <ls_field_catalog>-totals_function ). - IF <ls_field_catalog>-style_total IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = lv_formula - ip_style = <ls_field_catalog>-style_total ). - ELSE. - me->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. - -*--------------------------------------------------------------------* - " conditional formatting -*--------------------------------------------------------------------* - IF <ls_field_catalog>-cond_style IS NOT INITIAL. - lv_first_row = ls_settings-top_left_row + 1. " +1 to exclude header - lv_last_row = ls_settings-top_left_row + lv_rows. - <ls_field_catalog>-cond_style->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. - -*--------------------------------------------------------------------* - " Set field catalog -*--------------------------------------------------------------------* - lo_table->fieldcat = lt_field_catalog[]. - - es_table_settings = ls_settings. - es_table_settings-bottom_right_column = lv_column_alpha. - " >> Issue #291 - IF ip_table IS INITIAL. - es_table_settings-bottom_right_row = ls_settings-top_left_row + 2. "Last rows - ELSE. - es_table_settings-bottom_right_row = ls_settings-top_left_row + lv_rows + 1. "Last rows - ENDIF. - " << Issue #291 - - endmethod. - - - - - - - *--------------------------------------------------------------------* -* issue #293 - Roberto Bianco -* - Christian Assig 2014-03-14 -* -* changes: - Calculate widths using SAPscript font metrics -* (transaction SE73) -* - Calculate the width of dates -* - Add additional width for auto filter buttons -* - Add cell padding to simulate Excel behavior -*--------------------------------------------------------------------* -METHOD calculate_cell_width. - - CONSTANTS: - lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT - lc_default_font_height TYPE tdfontsize VALUE '110', - lc_excel_cell_padding TYPE float VALUE '0.75'. - - DATA: ld_cell_value TYPE zexcel_cell_value, - ld_current_character TYPE c LENGTH 1, - ld_style_guid TYPE zexcel_cell_style, - ls_stylemapping TYPE zexcel_s_stylemapping, - lo_table_object TYPE REF TO object, - lo_table TYPE REF TO zcl_excel_table, - ld_table_top_left_column TYPE zexcel_cell_column, - ld_table_bottom_right_column TYPE zexcel_cell_column, - ld_flag_contains_auto_filter TYPE abap_bool VALUE abap_false, - ld_flag_bold TYPE abap_bool VALUE abap_false, - ld_flag_italic TYPE abap_bool VALUE abap_false, - ld_date TYPE d, - ld_date_char TYPE c LENGTH 50, - ld_font_height TYPE tdfontsize VALUE lc_default_font_height, - lt_itcfc TYPE STANDARD TABLE OF itcfc, - ld_offset TYPE i, - ld_length TYPE i, - ld_uccp TYPE i, - ls_font_metric TYPE mty_s_font_metric, - ld_width_from_font_metrics TYPE i, - ld_font_family TYPE itcfh-tdfamily, - ld_font_name TYPE zexcel_style_font_name VALUE lc_default_font_name, - lt_font_families LIKE STANDARD TABLE OF ld_font_family, - ls_font_cache TYPE mty_s_font_cache. - - FIELD-SYMBOLS: <ls_font_cache> TYPE mty_s_font_cache, - <ls_font_metric> TYPE mty_s_font_metric, - <ls_itcfc> TYPE itcfc. - - " Determine cell content and cell style - me->get_cell( EXPORTING ip_column = ip_column - ip_row = ip_row - IMPORTING ep_value = ld_cell_value - ep_guid = ld_style_guid ). - - " ABAP2XLSX uses tables to define areas containing headers and - " auto-filters. Find out if the current cell is in the header - " of one of these tables. - LOOP AT me->tables->collection INTO lo_table_object. - " Downcast: OBJECT -> ZCL_EXCEL_TABLE - lo_table ?= lo_table_object. - - " Convert column letters to corresponding integer values - ld_table_top_left_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-top_left_column ). - - ld_table_bottom_right_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-bottom_right_column ). - - " Is the current cell part of the table header? - IF ip_column BETWEEN ld_table_top_left_column AND - ld_table_bottom_right_column AND - ip_row EQ lo_table->settings-top_left_row. - " Current cell is part of the table header - " -> Assume that an auto filter is present and that the font is - " bold - ld_flag_contains_auto_filter = abap_true. - ld_flag_bold = abap_true. - ENDIF. - ENDLOOP. - - " If a style GUID is present, read style attributes - IF ld_style_guid IS NOT INITIAL. - TRY. - " Read style attributes - ls_stylemapping = me->excel->get_style_to_guid( ld_style_guid ). - - " If the current cell contains the default date format, - " convert the cell value to a date and calculate its length - IF ls_stylemapping-complete_style-number_format-format_code = - zcl_excel_style_number_format=>c_format_date_std. - - " Convert excel date to ABAP date - ld_date = - zcl_excel_common=>excel_string_to_date( ld_cell_value ). - - " Format ABAP date using user's formatting settings - WRITE ld_date TO ld_date_char. - - " Remember the formatted date to calculate the cell size - ld_cell_value = ld_date_char. - - ENDIF. - - " Read the font size and convert it to the font height - " used by SAPscript (multiplication by 10) - IF ls_stylemapping-complete_stylex-font-size = abap_true. - ld_font_height = ls_stylemapping-complete_style-font-size * 10. - ENDIF. - - " If set, remember the font name - IF ls_stylemapping-complete_stylex-font-name = abap_true. - ld_font_name = ls_stylemapping-complete_style-font-name. - ENDIF. - - " If set, remember whether font is bold and italic. - IF ls_stylemapping-complete_stylex-font-bold = abap_true. - ld_flag_bold = ls_stylemapping-complete_style-font-bold. - ENDIF. - - IF ls_stylemapping-complete_stylex-font-italic = abap_true. - ld_flag_italic = ls_stylemapping-complete_style-font-italic. - ENDIF. - - CATCH zcx_excel. "#EC NO_HANDLER - " Style GUID is present, but style was not found - " Continue with default values - - ENDTRY. - ENDIF. - - " Check if the same font (font name and font attributes) was already - " used before - READ TABLE mth_font_cache - WITH TABLE KEY - font_name = ld_font_name - font_height = ld_font_height - flag_bold = ld_flag_bold - flag_italic = ld_flag_italic - ASSIGNING <ls_font_cache>. - - IF sy-subrc <> 0. - " Font is used for the first time - " Add the font to our local font cache - ls_font_cache-font_name = ld_font_name. - ls_font_cache-font_height = ld_font_height. - ls_font_cache-flag_bold = ld_flag_bold. - ls_font_cache-flag_italic = ld_flag_italic. - INSERT ls_font_cache INTO TABLE mth_font_cache - ASSIGNING <ls_font_cache>. - - " Determine the SAPscript font family name from the Excel - " font name - SELECT tdfamily - FROM tfo01 - INTO TABLE lt_font_families - UP TO 1 ROWS - WHERE tdtext = ld_font_name. - - " Check if a matching font family was found - " Fonts can be uploaded from TTF files using transaction SE73 - IF lines( lt_font_families ) > 0. - READ TABLE lt_font_families INDEX 1 INTO ld_font_family. - - " Load font metrics (returns a table with the size of each letter - " in the font) - CALL FUNCTION 'LOAD_FONT' - EXPORTING - family = ld_font_family - height = ld_font_height - printer = 'SWIN' - bold = ld_flag_bold - italic = ld_flag_italic - TABLES - metric = lt_itcfc - EXCEPTIONS - font_family = 1 - codepage = 2 - device_type = 3 - OTHERS = 4. - IF sy-subrc <> 0. - CLEAR lt_itcfc. - ENDIF. - - " For faster access, convert each character number to the actual - " character, and store the characters and their sizes in a hash - " table - LOOP AT lt_itcfc ASSIGNING <ls_itcfc>. - ld_uccp = <ls_itcfc>-cpcharno. - ls_font_metric-char = - cl_abap_conv_in_ce=>uccpi( ld_uccp ). - ls_font_metric-char_width = <ls_itcfc>-tdcwidths. - INSERT ls_font_metric - INTO TABLE <ls_font_cache>-th_font_metrics. - ENDLOOP. - - ENDIF. - ENDIF. - - " Calculate the cell width - " If available, use font metrics - IF lines( <ls_font_cache>-th_font_metrics ) = 0. - " Font metrics are not available - " -> Calculate the cell width using only the font size - ld_length = strlen( ld_cell_value ). - ep_width = ld_length * ld_font_height / lc_default_font_height + lc_excel_cell_padding. - - ELSE. - " Font metrics are available - - " Calculate the size of the text by adding the sizes of each - " letter - ld_length = strlen( ld_cell_value ). - DO ld_length TIMES. - " Subtract 1, because the first character is at offset 0 - ld_offset = sy-index - 1. - - " Read the current character from the cell value - ld_current_character = ld_cell_value+ld_offset(1). - - " Look up the size of the current letter - READ TABLE <ls_font_cache>-th_font_metrics - WITH TABLE KEY char = ld_current_character - ASSIGNING <ls_font_metric>. - IF sy-subrc = 0. - " The size of the letter is known - " -> Add the actual size of the letter - ADD <ls_font_metric>-char_width TO ld_width_from_font_metrics. - ELSE. - " The size of the letter is unknown - " -> Add the font height as the default letter size - ADD ld_font_height TO ld_width_from_font_metrics. - ENDIF. - ENDDO. - - " Add cell padding (Excel makes columns a bit wider than the space - " that is needed for the text itself) and convert unit - " (division by 100) - ep_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding. - ENDIF. - - " If the current cell contains an auto filter, make it a bit wider. - " The size used by the auto filter button does not depend on the font - " size. - IF ld_flag_contains_auto_filter = abap_true. - ADD 2 TO ep_width. - ENDIF. - -ENDMETHOD. - - - - 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." 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 float. - - FIELD-SYMBOLS: <column_dimension> LIKE LINE OF column_dimensions. - FIELD-SYMBOLS: <auto_size> LIKE LINE OF auto_sizes. - - column_dimensions[] = me->get_column_dimensions( ). - LOOP AT column_dimensions ASSIGNING <column_dimension>. - auto_size = <column_dimension>-column_dimension->get_auto_size( ). - IF auto_size = abap_true. - APPEND INITIAL LINE TO auto_sizes ASSIGNING <auto_size>. - <auto_size>-col_index = <column_dimension>-column_dimension->get_column_index( ). - <auto_size>-width = -1. - ENDIF. - ENDLOOP. - - " There is only something to do if there are some auto-size columns - IF NOT auto_sizes IS INITIAL. - highest_row = me->get_highest_row( ). - LOOP AT auto_sizes ASSIGNING <auto_size>. -* col_alpha = zcl_excel_common=>convert_column2alpha( <auto_size>-col_index )." issue #155 - less restrictive typing for ip_column - count = 1. - WHILE count <= highest_row. -* Do not check merged cells - IF is_cell_merged( - ip_column = <auto_size>-col_index - ip_row = count ) = abap_false. -* Start of change # issue 139 - Dateretention of cellstyles -* IF cell_style IS BOUND. -* CREATE OBJECT cell_style. -* ENDIF. -* me->get_cell( -* EXPORTING -* ip_column = col_alpha " Cell Column -* ip_row = count " Cell Row -* IMPORTING -* ep_value = cell_value " Cell Value -* ep_style = cell_style " Request Cell Style as well -* ). -* " For an easy start we just take the number of characters as the width -* width = strlen( cell_value ). -* " Addition to solve issue #120, contribution by Stefan Schmöcker -* " Calculate width using Font Size and Font Type -* IF cell_style IS BOUND -* AND cell_style->font IS BOUND. -* width = cell_style->font->calculate_text_width( cell_value ). -* ENDIF. -* width = calculate_cell_width( ip_column = col_alpha " issue #155 - less restrictive typing for ip_column - width = calculate_cell_width( ip_column = <auto_size>-col_index " issue #155 - less restrictive typing for ip_column - ip_row = count ). -* End of change # issue 139 - Dateretention of cellstyles - IF width > <auto_size>-width. - <auto_size>-width = width. - ENDIF. - ENDIF. - count = count + 1. - ENDWHILE. -* column_dimension = me->get_column_dimension( col_alpha ). " issue #155 - less restrictive typing for ip_column - column_dimension = me->get_column_dimension( <auto_size>-col_index ). " issue #155 - less restrictive typing for ip_column - column_dimension->set_width( <auto_size>-width ). - ENDLOOP. - ENDIF. - - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD change_cell_style. - " 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 zexcel_cell_style. "issue # 177 - -* We have a lot of parameters. Use some macros to make the coding more structured - - DEFINE clear_initial_colorxfields. - if &1-rgb is initial. - clear &2-rgb. - endif. - if &1-indexed is initial. - clear &2-indexed. - endif. - if &1-theme is initial. - clear &2-theme. - endif. - if &1-tint is initial. - clear &2-tint. - endif. - END-OF-DEFINITION. - - DEFINE move_supplied_borders. - if ip_&1 is supplied. " only act if parameter was supplied - if ip_x&1 is supplied. " - borderx = ip_x&1. " use supplied x-parameter - else. - clear borderx with 'X'. -* clear in a way that would be expected to work easily - if ip_&1-border_style is initial. - clear borderx-border_style. - endif. - clear_initial_colorxfields ip_&1-border_color borderx-border_color. - endif. - move-corresponding ip_&1 to complete_style-&2. - move-corresponding borderx to complete_stylex-&2. - endif. - END-OF-DEFINITION. - -* First get current stylsettings - TRY. - me->get_cell( EXPORTING ip_column = ip_column " Cell Column - ip_row = ip_row " Cell Row - IMPORTING ep_guid = l_guid )." Cell Value ). "issue # 177 - - - stylemapping = me->excel->get_style_to_guid( l_guid ). "issue # 177 - complete_style = stylemapping-complete_style. - complete_stylex = stylemapping-complete_stylex. - CATCH zcx_excel. -* Error --> 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 = 'Complete styleinfo has to be supplied with corresponding X-field'. - 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 'X' TO: fontx-bold, - fontx-italic, - fontx-strikethrough, - fontx-underline_mode. - CLEAR fontx-color WITH 'X'. - clear_initial_colorxfields ip_font-color fontx-color. - IF ip_font-family IS NOT INITIAL. - fontx-family = 'X'. - ENDIF. - IF ip_font-name IS NOT INITIAL. - fontx-name = 'X'. - ENDIF. - IF ip_font-scheme IS NOT INITIAL. - fontx-scheme = 'X'. - ENDIF. - IF ip_font-size IS NOT INITIAL. - fontx-size = 'X'. - ENDIF. - IF ip_font-underline_mode IS NOT INITIAL. - fontx-underline_mode = 'X'. - 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 'X'. - 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 'X'. - 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 'X'. - 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_protection TO complete_style-protection. - IF ip_xprotection IS SUPPLIED. - MOVE-CORRESPONDING ip_xprotection TO complete_stylex-protection. - ELSE. - IF ip_protection-hidden IS NOT INITIAL. - complete_stylex-protection-hidden = 'X'. - ENDIF. - IF ip_protection-locked IS NOT INITIAL. - complete_stylex-protection-locked = 'X'. - 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_&1 is supplied. - complete_style-&2 = ip_&1. - complete_stylex-&2 = 'X'. - 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, - - fill_gradtype_type fill-gradtype-TYPE, - fill_gradtype_degree fill-gradtype-DEGREE, - fill_gradtype_bottom fill-gradtype-BOTTOM, - fill_gradtype_left fill-gradtype-LEFT, - fill_gradtype_top fill-gradtype-TOP, - fill_gradtype_right fill-gradtype-RIGHT, - fill_gradtype_position1 fill-gradtype-POSITION1, - fill_gradtype_position2 fill-gradtype-POSITION2, - fill_gradtype_position3 fill-gradtype-POSITION3, - - - - 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&paste of styles is requested - ep_guid = me->excel->get_static_cellstyle_guid( ip_cstyle_complete = complete_style - ip_cstylex_complete = complete_stylex ). - me->set_cell_style( ip_column = ip_column - ip_row = ip_row - ip_style = ep_guid ). - -ENDMETHOD. - - - - - - METHOD constructor. - DATA: lv_title TYPE zexcel_sheet_title. - - me->excel = ip_excel. - -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = me->guid. - me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call - - IF ip_title IS NOT INITIAL. - lv_title = ip_title. - ELSE. -* lv_title = me->guid. " del issue #154 - Names of worksheets - lv_title = me->generate_title( ). " ins issue #154 - Names of worksheets - ENDIF. - - me->set_title( ip_title = lv_title ). - - CREATE OBJECT sheet_setup. - CREATE OBJECT conditional_styles. - CREATE OBJECT data_validations. - CREATE OBJECT tables. - CREATE OBJECT ranges. " issue #163 - CREATE OBJECT mo_pagebreaks. - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - me->zif_excel_sheet_protection~initialize( ). - me->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. - - - - - METHOD delete_merge. - - FIELD-SYMBOLS: <ls_merged_cell> LIKE LINE OF me->mt_merged_cells. - DATA: is_merged TYPE abap_bool. -*--------------------------------------------------------------------* -* If cell information is passed delete merge including this cell, -* otherwise delete all merges -*--------------------------------------------------------------------* - IF ip_cell_column IS INITIAL - OR ip_cell_row IS INITIAL. - CLEAR me->mt_merged_cells. - ELSE. - LOOP AT me->mt_merged_cells ASSIGNING <ls_merged_cell>. - - is_merged = me->is_cell_merged( ip_column = ip_cell_column - ip_row = ip_cell_row ). - IF is_merged = abap_true. - DELETE me->mt_merged_cells. " Delete this merge, that includes this cell - EXIT. - ENDIF. - - ENDLOOP. - ENDIF. - -ENDMETHOD. - - - - - - METHOD delete_row_outline. - - DELETE me->mt_row_outlines WHERE row_from = iv_row_from - AND row_to = iv_row_to. - IF sy-subrc <> 0. " didn't find outline that was to be deleted - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Row outline to be deleted does not exist'. - ENDIF. - -ENDMETHOD. - - - - - - 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 = 'Pleas provide number of rows and/or columns to freeze'. - ENDIF. - - IF ip_num_columns IS SUPPLIED AND ip_num_columns <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of columns to freeze should be positive'. - ENDIF. - - IF ip_num_rows IS SUPPLIED AND ip_num_rows <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of rows to freeze should be positive'. - ENDIF. - - freeze_pane_cell_column = ip_num_columns + 1. - freeze_pane_cell_row = ip_num_rows + 1. - endmethod. - - - - 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->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = abap_true. - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - title = lo_worksheet->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. " Start counting with next number - DO. - title = sheetnumber. - SHIFT title LEFT DELETING LEADING space. - CONCATENATE 'Sheet'(001) title INTO ep_title. - INSERT ep_title INTO TABLE t_titles. - IF sy-subrc = 0. " Title not used so far --> take it - EXIT. - ENDIF. - - ADD 1 TO sheetnumber. - ENDDO. - endmethod. - - - - - method GET_ACTIVE_CELL. - - DATA: lv_active_column TYPE zexcel_cell_column_alpha, - lv_active_row TYPE string. - - lv_active_column = zcl_excel_common=>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. - - - - - - - - - - method GET_CELL. - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = zcl_excel_common=>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. " issue 139 - added this to be used for columnwidth calculation - - " 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->excel->get_styles_iterator( ). - WHILE style_iterator->has_next( ) = 'X'. - style ?= style_iterator->get_next( ). - IF style->get_guid( ) = ls_sheet_content-cell_style. - ep_style = style. - EXIT. - ENDIF. - ENDWHILE. - ENDIF. - endmethod. - - - - - - method GET_COLUMN_DIMENSION. - FIELD-SYMBOLS: <fs_column_dimension> LIKE LINE OF column_dimensions. - DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. " issue #155 - less restrictive typing for ip_column - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column )." issue #155 - less restrictive typing for ip_column - READ TABLE me->column_dimensions ASSIGNING <fs_column_dimension> - WITH KEY column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - - IF NOT <fs_column_dimension> IS ASSIGNED. - CREATE OBJECT r_column_dimension - EXPORTING - ip_index = lv_column_alpha " issue #155 - less restrictive typing for ip_column - ip_excel = me->excel " issue #157 - Allow style for columns - ip_worksheet = me. " issue #157 - Allow style for columns - APPEND INITIAL LINE TO me->column_dimensions ASSIGNING <fs_column_dimension>. - <fs_column_dimension>-column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - <fs_column_dimension>-column_dimension = r_column_dimension. - ELSE. - r_column_dimension = <fs_column_dimension>-column_dimension. - ENDIF. - - endmethod. - - - - method GET_COLUMN_DIMENSIONS. - r_column_dimension[] = me->column_dimensions[]. - endmethod. - - - - method GET_COND_STYLES_ITERATOR. - - eo_iterator = me->conditional_styles->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_ITERATOR. - - eo_iterator = me->data_validations->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_SIZE. - ep_size = me->data_validations->size( ). - endmethod. - - - - method GET_DEFAULT_COLUMN_DIMENSION. - IF me->default_column_dimension IS NOT BOUND. - CREATE OBJECT me->default_column_dimension - EXPORTING - ip_index = 'A' " ???? - ip_worksheet = me - ip_excel = me->excel. - ENDIF. - - r_column_dimension = me->default_column_dimension. - endmethod. - - - - method GET_DEFAULT_EXCEL_DATE_FORMAT. - CONSTANTS: c_lang_e TYPE lang VALUE 'E'. - - IF default_excel_date_format IS NOT INITIAL. - ep_default_excel_date_format = default_excel_date_format. - RETURN. - ENDIF. - - "try to get defaults - TRY. - cl_abap_datfm=>get_date_format_des( EXPORTING im_langu = c_lang_e - IMPORTING ex_dateformat = default_excel_date_format ). - CATCH cx_abap_datfm_format_unknown. - - ENDTRY. - - " and fallback to fixed format - IF default_excel_date_format IS INITIAL. - default_excel_date_format = zcl_excel_style_number_format=>c_format_date_ddmmyyyydot. - ENDIF. - - ep_default_excel_date_format = default_excel_date_format. - endmethod. - - - - 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's get default - l_timefm = cl_abap_timefm=>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=>c_format_date_time6. - WHEN 1. -*1 12 Hour Format (Example: 12:05:10 PM) - default_excel_time_format = zcl_excel_style_number_format=>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=>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=>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=>c_format_date_time2. - WHEN OTHERS. - " and fallback to fixed format - default_excel_time_format = zcl_excel_style_number_format=>c_format_date_time6. - ENDCASE. - - ep_default_excel_time_format = default_excel_time_format. - endmethod. - - - - method GET_DEFAULT_ROW_DIMENSION. - IF me->default_row_dimension IS NOT BOUND. - CREATE OBJECT me->default_row_dimension. - ENDIF. - - r_row_dimension = me->default_row_dimension. - endmethod. - - - - - method GET_DIMENSION_RANGE. - - me->update_dimension_range( ). - IF upper_cell EQ lower_cell. "only one cell - " Worksheet not filled -* IF upper_cell-cell_coords = '0'. - IF upper_cell-cell_coords IS INITIAL. - ep_dimension_range = 'A1'. - ELSE. - ep_dimension_range = upper_cell-cell_coords. - ENDIF. - ELSE. - CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. - ENDIF. - - endmethod. - - - - - 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=>type_image. - r_drawings = drawings. - WHEN zcl_excel_drawing=>type_chart. - r_drawings = charts. - WHEN space. - CREATE OBJECT r_drawings - EXPORTING - ip_type = ''. - - lo_iterator = drawings->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - lo_iterator = charts->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - WHEN OTHERS. - ENDCASE. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = charts->get_iterator( ). - ENDCASE. - endmethod. - - - - - method GET_FREEZE_CELL. - ep_row = me->freeze_pane_cell_row. - ep_column = me->freeze_pane_cell_column. - endmethod. - - - - METHOD get_guid. - - ep_guid = me->guid. - -ENDMETHOD. - - - - - method GET_HIGHEST_COLUMN. - me->update_dimension_range( ). - r_highest_column = me->lower_cell-cell_column. - endmethod. - - - - - METHOD get_highest_row. - me->update_dimension_range( ). - r_highest_row = me->lower_cell-cell_row. -ENDMETHOD. - - - - method GET_HYPERLINKS_ITERATOR. - eo_iterator = hyperlinks->get_iterator( ). - endmethod. - - - - method GET_HYPERLINKS_SIZE. - ep_size = hyperlinks->size( ). - endmethod. - - - - - METHOD get_merge. - - FIELD-SYMBOLS: <ls_merged_cell> LIKE LINE OF me->mt_merged_cells. - - DATA: lv_col_from TYPE string, - lv_col_to TYPE string, - lv_row_from TYPE string, - lv_row_to TYPE string, - lv_merge_range TYPE string. - - LOOP AT me->mt_merged_cells ASSIGNING <ls_merged_cell>. - - lv_col_from = zcl_excel_common=>convert_column2alpha( <ls_merged_cell>-col_from ). - lv_col_to = zcl_excel_common=>convert_column2alpha( <ls_merged_cell>-col_to ). - lv_row_from = <ls_merged_cell>-row_from. - lv_row_to = <ls_merged_cell>-row_to . - CONCATENATE lv_col_from lv_row_from ':' lv_col_to lv_row_to - INTO lv_merge_range. - CONDENSE lv_merge_range NO-GAPS. - APPEND lv_merge_range TO merge_range. - - ENDLOOP. - -ENDMETHOD. - - - - - method GET_PAGEBREAKS. - ro_pagebreaks = mo_pagebreaks. -endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - METHOD GET_ROW_DIMENSION. - - FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF me->row_dimensions. - - DATA: ls_row_dimension LIKE LINE OF me->row_dimensions. - - READ TABLE me->row_dimensions ASSIGNING <ls_row_dimension> - WITH TABLE KEY row = ip_row. - - IF NOT <ls_row_dimension> IS ASSIGNED. - CREATE OBJECT r_row_dimension - EXPORTING - ip_index = ip_row. - ls_row_dimension-row = ip_row. - ls_row_dimension-row_dimension = r_row_dimension. - INSERT ls_row_dimension INTO TABLE me->row_dimensions. - ELSE. - r_row_dimension = <ls_row_dimension>-row_dimension. - ENDIF. - -ENDMETHOD. - - - - METHOD get_row_dimensions. - - r_row_dimension[] = me->row_dimensions[]. - -ENDMETHOD. - - - - METHOD get_row_outlines. - - rt_row_outlines = me->mt_row_outlines. - -ENDMETHOD. - - - - method GET_TABCOLOR. - ev_tabcolor = me->tabcolor. - endmethod. - - - - method GET_TABLES_ITERATOR. - eo_iterator = tables->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TABLES_SIZE. - ep_size = tables->if_object_collection~size( ). - endmethod. - - - - - method GET_TITLE. - DATA lv_value TYPE string. - IF ip_escaped EQ abap_true. - lv_value = me->title. - ep_title = zcl_excel_common=>escape_string( lv_value ). - ELSE. - ep_title = me->title. - ENDIF. - endmethod. - - - - - - 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=>typekind_string. " Thats our default if something goes wrong. - - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ip_value ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - ENDTRY. - IF lo_addit IS BOUND. - lo_addit->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 'CONVERSION_EXIT_' ls_dfies-convexit '_OUTPUT' 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 <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ELSE. - TRY. - ep_value = l_value. - CATCH cx_root. - ep_value = ip_value. - ENDTRY. - ENDIF. - ENDIF. - ENDIF. - ELSE. - ep_value_type = lo_addit->get_data_type_kind( ip_value ). - ENDIF. - ENDIF. - -ENDMETHOD. - - - - - - - METHOD is_cell_merged. - - DATA: lv_column TYPE i. - - FIELD-SYMBOLS: <ls_merged_cell> LIKE LINE OF me->mt_merged_cells. - - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - - rp_is_merged = abap_false. " Assume not in merged area - - LOOP AT me->mt_merged_cells ASSIGNING <ls_merged_cell>. - - IF <ls_merged_cell>-col_from <= lv_column - AND <ls_merged_cell>-col_to >= lv_column - AND <ls_merged_cell>-row_from <= ip_row - AND <ls_merged_cell>-row_to >= ip_row. - rp_is_merged = abap_true. " until we are proven different - RETURN. - ENDIF. - - ENDLOOP. - -ENDMETHOD. - - - method PRINT_TITLE_SET_RANGE. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmoecker, 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->get_ranges_iterator( ). - WHILE lo_range_iterator->has_next( ) = abap_true. - - lo_range ?= lo_range_iterator->get_next( ). - IF lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - EXIT. " Found it - ENDIF. - CLEAR lo_range. - - ENDWHILE. - - - IF me->print_title_col_from IS INITIAL AND - me->print_title_row_from IS INITIAL. -*--------------------------------------------------------------------* -* No print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS BOUND. - me->ranges->remove( lo_range ). - ENDIF. - ELSE. -*--------------------------------------------------------------------* -* Print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS NOT BOUND. - lo_range = me->add_new_range( ). - lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - ENDIF. - - lv_repeat_range_sheetname = me->get_title( ). - lv_repeat_range_sheetname = zcl_excel_common=>escape_string( lv_repeat_range_sheetname ). - -*--------------------------------------------------------------------* -* Repeat-columns -*--------------------------------------------------------------------* - IF me->print_title_col_from IS NOT INITIAL. - CONCATENATE lv_repeat_range_sheetname - '!$' me->print_title_col_from - ':$' me->print_title_col_to - INTO lv_repeat_range_col. - ENDIF. - -*--------------------------------------------------------------------* -* Repeat-rows -*--------------------------------------------------------------------* - IF me->print_title_row_from IS NOT INITIAL. - lv_row_char_from = me->print_title_row_from. - lv_row_char_to = me->print_title_row_to. - CONCATENATE '!$' lv_row_char_from - ':$' 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 ','. - ENDIF. - - - lo_range->set_range_value( lv_repeat_range ). - ENDIF. - - - - endmethod. - - - - - - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_numeric> TYPE numeric, - <fs_date> TYPE d, - <fs_time> TYPE t, - <fs_value> TYPE simple. - - IF ip_value IS NOT SUPPLIED AND ip_formula IS NOT SUPPLIED. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please provide the value or formula'. - ENDIF. - -* Begin of change issue #152 - don't touch exisiting style if only value is passed -* lv_style_guid = ip_style. - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 - cell_column = lv_column. - IF sy-subrc = 0. - IF ip_style IS INITIAL. - " If no style is provided as method-parameter and cell is found use cell's current style - lv_style_guid = <fs_sheet_content>-cell_style. - ELSE. - " Style provided as method-parameter --> use this - lv_style_guid = ip_style. - ENDIF. - ELSE. - " No cell found --> use supplied style even if empty - lv_style_guid = ip_style. - ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - IF ip_value IS SUPPLIED. - "if data type is passed just write the value. Otherwise map abap type to excel and perform conversion - "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->* TO <fs_value>. - <fs_value> = 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 = <fs_value> ) . - ENDIF. - lv_value = <fs_value>. - 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 = <fs_value> - ep_value_type = lv_value_type ). - ENDIF. - CASE lv_value_type. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - lo_addit = cl_abap_elemdescr=>get_i( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - lo_addit = cl_abap_elemdescr=>get_f( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_char OR cl_abap_typedescr=>typekind_string OR cl_abap_typedescr=>typekind_num OR - cl_abap_typedescr=>typekind_hex. - lv_value = <fs_value>. - lv_data_type = 's'. - - WHEN cl_abap_typedescr=>typekind_date. - lo_addit = cl_abap_elemdescr=>get_d( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_date>. - IF sy-subrc = 0. - <fs_date> = <fs_value>. - lv_value = zcl_excel_common=>date_to_excel_string( ip_value = <fs_date> ) . - ENDIF. -* Begin of change issue #152 - don'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. "get default date format in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = get_default_excel_date_format( ). -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN cl_abap_typedescr=>typekind_time. - lo_addit = cl_abap_elemdescr=>get_t( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_time>. - IF sy-subrc = 0. - <fs_time> = <fs_value>. - lv_value = zcl_excel_common=>time_to_excel_string( ip_value = <fs_time> ). - ENDIF. -* Begin of change issue #152 - don'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. "get default time format for user in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_date_time6. -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid data type of input value'. - ENDCASE. - ENDIF. - - ENDIF. - - IF ip_hyperlink IS BOUND. - ip_hyperlink->set_cell_reference( ip_column = ip_column - ip_row = ip_row ). - me->hyperlinks->add( ip_hyperlink ). - ENDIF. - -* Begin of change issue #152 - don'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=>convert_column2int( ip_column ). - -* READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row -* cell_column = lv_column. -* -* IF sy-subrc EQ 0. - IF <fs_sheet_content> IS ASSIGNED. -* End of change issue #152 - don't touch exisiting style if only value is passed - <fs_sheet_content>-cell_value = lv_value. - <fs_sheet_content>-cell_formula = ip_formula. - <fs_sheet_content>-cell_style = lv_style_guid. - <fs_sheet_content>-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."del #152 - replaced with condense - should be faster -* SHIFT lv_row_alpha LEFT DELETING LEADING space. "del #152 - replaced with condense - should be faster - CONDENSE lv_row_alpha NO-GAPS. "ins #152 - replaced 2 shifts - should be faster - lv_col_alpha = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - CONCATENATE lv_col_alpha lv_row_alpha INTO ls_sheet_content-cell_coords. " issue #155 - less restrictive typing for ip_column - INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING <fs_sheet_content>. "ins #152 - Now <fs_sheet_content> always holds the data -* APPEND ls_sheet_content TO sheet_content. -* SORT sheet_content BY cell_row cell_column. - " me->update_dimension_range( ). - - ENDIF. - -* Begin of change issue #152 - don'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=>typekind_date. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_std. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_number_format_format_code = lo_format_code_datetime ). - - WHEN cl_abap_typedescr=>typekind_time. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_time6. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->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't touch exisiting style if only value is passed - -* Fix issue #162 - lv_value = ip_value. - IF lv_value CS cl_abap_char_utilities=>cr_lf. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_alignment_wraptext = abap_true ). - ENDIF. -* End of Fix issue #162 - - endmethod. - - - - - - - method SET_CELL_FORMULA. - DATA: - lv_column TYPE zexcel_cell_column, - ls_sheet_content LIKE LINE OF me->sheet_content. - - FIELD-SYMBOLS: - <sheet_content> LIKE LINE OF me->sheet_content. - -*--------------------------------------------------------------------* -* Get cell to set formula into -*--------------------------------------------------------------------* - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE me->sheet_content ASSIGNING <sheet_content> WITH TABLE KEY cell_row = ip_row - cell_column = lv_column. - IF sy-subrc <> 0. " Create new entry in sheet_content if necessary - CHECK ip_formula IS INITIAL. " no need to create new entry in sheet_content when no formula is passed - ls_sheet_content-cell_row = ip_row. - ls_sheet_content-cell_column = lv_column. - INSERT ls_sheet_content INTO TABLE me->sheet_content ASSIGNING <sheet_content>. - ENDIF. - -*--------------------------------------------------------------------* -* Fieldsymbol now holds the relevant cell -*--------------------------------------------------------------------* - <sheet_content>-cell_formula = ip_formula. - - - endmethod. - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_style_guid = ip_style. - - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row - cell_column = lv_column. - - IF sy-subrc EQ 0. - <fs_sheet_content>-cell_style = lv_style_guid. - ELSE. - set_cell( ip_column = ip_column ip_row = ip_row ip_value = '' ip_style = ip_style ). - ENDIF. - - endmethod. - - - - - - - method SET_COLUMN_WIDTH. - DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - DATA: width TYPE float. - - column_dimension = me->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 <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as column-width'. - ENDIF. - column_dimension->set_width( width ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - ENDIF. - -* If we get down to here, we have to use whatever is found in autosize. - column_dimension->set_auto_size( ip_width_autosize ). - - - endmethod. - - - - - method SET_DEFAULT_EXCEL_DATE_FORMAT. - - IF ip_default_excel_date_format IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Default date format cannot be blank'. - ENDIF. - - default_excel_date_format = ip_default_excel_date_format. - endmethod. - - - - - - - - METHOD set_merge. - - DATA: ls_merge TYPE mty_merge, - lv_errormessage TYPE string. - - FIELD-SYMBOLS: <ls_merge> LIKE LINE OF me->mt_merged_cells. - -*--------------------------------------------------------------------* -* Build new range area to insert into range table -*--------------------------------------------------------------------* - ls_merge-row_from = ip_row. - IF ip_row IS SUPPLIED AND ip_row IS NOT INITIAL AND ip_row_to IS NOT SUPPLIED. - ls_merge-row_to = ls_merge-row_from. - ELSE. - ls_merge-row_to = ip_row_to. - ENDIF. - IF ls_merge-row_from > ls_merge-row_to. - lv_errormessage = 'Merge: First row larger then last row'(405). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ls_merge-col_from = zcl_excel_common=>convert_column2int( ip_column_start ). - IF ip_column_start IS SUPPLIED AND ip_column_start IS NOT INITIAL AND ip_column_end IS NOT SUPPLIED. - ls_merge-col_to = ls_merge-col_from. - ELSE. - ls_merge-col_to = zcl_excel_common=>convert_column2int( ip_column_end ). - ENDIF. - IF ls_merge-col_from > ls_merge-col_to. - lv_errormessage = 'Merge: First column larger then last column'(406). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Check merge not overlapping with existing merges -*--------------------------------------------------------------------* - LOOP AT me->mt_merged_cells TRANSPORTING NO FIELDS WHERE NOT ( row_from > ls_merge-row_to - OR row_to < ls_merge-row_from - OR col_from > ls_merge-col_to - OR col_to < ls_merge-col_from ). - lv_errormessage = 'Overlapping merges'(404). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - - ENDLOOP. - -*--------------------------------------------------------------------* -* Everything seems ok --> add to merge table -*--------------------------------------------------------------------* - INSERT ls_merge INTO TABLE me->mt_merged_cells. - -ENDMETHOD. - - - - method SET_PRINT_GRIDLINES. - me->print_gridlines = i_print_gridlines. - endmethod. - - - - - - method SET_ROW_HEIGHT. - DATA: row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: height TYPE float. - - row_dimension = me->get_row_dimension( ip_row ). - -* if a fix size is supplied use this - TRY. - height = ip_height_fix. - IF height <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as row-height'. - ENDIF. - row_dimension->set_row_height( height ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - - - - endmethod. - - - - - - - METHOD set_row_outline. - - DATA: ls_row_outline LIKE LINE OF me->mt_row_outlines. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF me->mt_row_outlines. - - READ TABLE me->mt_row_outlines ASSIGNING <ls_row_outline> WITH TABLE KEY row_from = iv_row_from - row_to = iv_row_to. - IF sy-subrc <> 0. - IF iv_row_from <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'First row of outline must be a positive number'. - ENDIF. - IF iv_row_to < iv_row_from. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Last row of outline may not be less than first line of outline'. - ENDIF. - ls_row_outline-row_from = iv_row_from. - ls_row_outline-row_to = iv_row_to. - INSERT ls_row_outline INTO TABLE me->mt_row_outlines ASSIGNING <ls_row_outline>. - ENDIF. - - CASE iv_collapsed. - - WHEN abap_true - OR abap_false. - <ls_row_outline>-collapsed = iv_collapsed. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unknown collapse state'. - - ENDCASE. -ENDMETHOD. - - - - method SET_SHOW_GRIDLINES. - me->show_gridlines = i_show_gridlines. - endmethod. - - - - method SET_SHOW_ROWCOLHEADERS. - me->show_rowcolheaders = i_show_rowcolheaders. - endmethod. - - - - method SET_TABCOLOR. - me->tabcolor = iv_tabcolor. - endmethod. - - - - - - - - - - - - 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 2, - lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - 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: <fs_table_line> TYPE ANY, - <fs_fldval> TYPE ANY, - <fs_dfies> TYPE dfies, - <fs_cell_value> TYPE zexcel_cell_value. - - lv_column_int = zcl_excel_common=>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=>describe_by_data_ref( lr_data ). - - ls_header = lo_tabdescr->get_ddic_header( ). - - lt_dfies = lo_tabdescr->get_ddic_field_list( ). - -* It is better to loop column by column - LOOP AT lt_dfies ASSIGNING <fs_dfies>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - IF ip_no_header = abap_false. - " First of all write column header - lv_cell_value = <fs_dfies>-scrtext_m. - me->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 <fs_table_line>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - ASSIGN COMPONENT <fs_dfies>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - MOVE <fs_fldval> TO lv_cell_value. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> "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=>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. - - - - - method SET_TITLE. -*--------------------------------------------------------------------* -* ToDos: -* 2do §1 The current coding for replacing a named ranges name -* after renaming a sheet should be checked if it is -* really working if sheetname should be escaped -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (wip ) 2012-12-08 -* - ... -* changes: aligning code -* message made to support multilinguality -*--------------------------------------------------------------------* -* issue#243 - ' is not allowed as first character in sheet title -* - Stefan Schmoecker, 2012-12-02 -* changes: added additional check for ' as first character -*--------------------------------------------------------------------* - 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, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Check whether title consists only of allowed characters -* Illegal characters are: / \ [ ] * ? : --> http://msdn.microsoft.com/en-us/library/ff837411.aspx -* Illegal characters not in documentation: ' as first character -*--------------------------------------------------------------------* - IF ip_title CA '/\[]*?:'. - lv_errormessage = 'Found illegal character in sheetname. List of forbidden characters: /\[]*?:'(402). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF ip_title IS NOT INITIAL AND ip_title(1) = `'`. - lv_errormessage = 'Sheetname may not start with &'(403). " & used instead of ' to allow fallbacklanguage - REPLACE '&' IN lv_errormessage WITH `'`. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -*--------------------------------------------------------------------* -* Check whether title is unique in workbook -*--------------------------------------------------------------------* - lo_worksheets_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = 'X'. - - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - CHECK me->guid <> lo_worksheet->get_guid( ). " Don't check against itself - IF ip_title = lo_worksheet->get_title( ). " Not unique --> raise exception - errormessage = 'Duplicate sheetname &'. - REPLACE '&' IN errormessage WITH ip_title. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = errormessage. - ENDIF. - - ENDWHILE. - -*--------------------------------------------------------------------* -* Remember old sheetname and rename sheet to desired name -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_old. - me->title = ip_title. - -*--------------------------------------------------------------------* -* After changing this worksheet's title we have to adjust -* all ranges that are referring to this worksheet. -*--------------------------------------------------------------------* -* 2do §1 - Check if the following quickfix is solid -* I fear it isn't - but this implementation is better then -* nothing at all since it handles a supposed majority of cases -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_new. - - lo_ranges_iterator = me->excel->get_ranges_iterator( ). - WHILE lo_ranges_iterator->has_next( ) = 'X'. - - lo_range ?= lo_ranges_iterator->get_next( ). - lv_range_value = lo_range->get_value( ). - REPLACE ALL OCCURRENCES OF lv_rangesheetname_old IN lv_range_value WITH lv_rangesheetname_new. - IF sy-subrc = 0. - lo_range->set_range_value( lv_range_value ). - ENDIF. - - ENDWHILE. - - - endmethod. - - - - 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. - "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=>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. - - "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=>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. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ADD. - - worksheets->add( ip_worksheet ). - - endmethod. - - - method CLEAR. - - worksheets->clear( ). - - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT worksheets. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_worksheet ?= worksheets->if_object_collection~get( lv_index ). - - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= worksheets->if_object_collection~get_iterator( ). - - endmethod. - - - - method IS_EMPTY. - - is_empty = worksheets->if_object_collection~is_empty( ). - - endmethod. - - - - method REMOVE. - - worksheets->remove( ip_worksheet ). - - endmethod. - - - - method SIZE. - - ep_size = worksheets->if_object_collection~size( ). - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - method CONSTRUCTOR. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - me->width = -1. - me->auto_size = abap_false. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - me->excel = ip_excel. "ins issue #157 - Allow Style for columns - me->worksheet = ip_worksheet. "ins issue #157 - Allow Style for columns - - " set default index to cellXf - me->xf_index = 0. - - endmethod. - - - - method GET_AUTO_SIZE. - r_auto_size = me->auto_size. - endmethod. - - - - method GET_COLLAPSED. - r_Collapsed = me->Collapsed. - endmethod. - - - - method GET_COLUMN_INDEX. - r_column_index = me->column_index. - endmethod. - - - - - method GET_COLUMN_STYLE_GUID. - IF me->style_guid IS NOT INITIAL. - ep_style_guid = me->style_guid. - ELSE. - ep_style_guid = me->worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - endmethod. - - - - method GET_OUTLINE_LEVEL. - r_outline_level = me->outline_level. - endmethod. - - - - method GET_VISIBLE. - r_Visible = me->Visible. - endmethod. - - - - method GET_WIDTH. - r_WIDTH = me->WIDTH. - endmethod. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - - method SET_AUTO_SIZE. - me->auto_size = ip_auto_size. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLLAPSED. - me->Collapsed = ip_Collapsed. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_INDEX. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_STYLE_BY_GUID. - DATA: stylemapping TYPE zexcel_s_stylemapping. - - IF me->excel IS NOT BOUND. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Internal error - reference to ZCL_EXCEL not bound'. - ENDIF. - TRY. - stylemapping = me->excel->get_style_to_guid( ip_style_guid ). - me->style_guid = stylemapping-guid. - - CATCH zcx_excel . - EXIT. " leave as is in case of error - ENDTRY. - - endmethod. - - - - method SET_OUTLINE_LEVEL. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_VISIBLE. - me->Visible = ip_Visible. - r_worksheet_columndime = me. - endmethod. - - - - - - method SET_WIDTH. - TRY. - me->width = ip_width. - r_worksheet_columndime = me. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret width as number'. - ENDTRY. - endmethod. - - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - r_worksheet_columndime = me. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - method CONSTRUCTOR. - " Initialise values - me->row_index = ip_index. - me->row_height = -1. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - - " set row dimension as unformatted by default - me->xf_index = 0. - endmethod. - - - - - METHOD get_collapsed. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - lv_previous_row TYPE i, - lv_following_row TYPE i. - - r_collapsed = me->collapsed. - - CHECK r_collapsed = abap_false. " Maybe new method for outlines is being used - CHECK io_worksheet IS BOUND. - -* If an outline is collapsed ( even inside an outer outline ) the line following the last line -* of the group gets the flag "collapsed" - IF io_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. - lv_following_row = me->row_index + 1. - lt_row_outlines = io_worksheet->get_row_outlines( ). - READ TABLE lt_row_outlines TRANSPORTING NO FIELDS WITH KEY row_from = lv_following_row " first line of an outline - collapsed = abap_true. " that is collapsed - ELSE. - lv_previous_row = me->row_index - 1. - lt_row_outlines = io_worksheet->get_row_outlines( ). - READ TABLE lt_row_outlines TRANSPORTING NO FIELDS WITH KEY row_to = lv_previous_row " last line of an outline - collapsed = abap_true. " that is collapsed - ENDIF. - CHECK sy-subrc = 0. " ok - we found it - r_collapsed = abap_true. - - -ENDMETHOD. - - - - - METHOD get_outline_level. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF lt_row_outlines. - -* if someone has set the outline level explicitly - just use that - IF me->outline_level IS NOT INITIAL. - r_outline_level = me->outline_level. - RETURN. - ENDIF. -* Maybe we can use the outline information in the worksheet - CHECK io_worksheet IS BOUND. - - lt_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lt_row_outlines ASSIGNING <ls_row_outline> WHERE row_from <= me->row_index - AND row_to >= me->row_index. - - ADD 1 TO r_outline_level. - - ENDLOOP. - -ENDMETHOD. - - - - method GET_ROW_HEIGHT. - r_row_height = me->row_height. - endmethod. - - - - method GET_ROW_INDEX. - r_row_index = me->row_index. - endmethod. - - - - - METHOD get_visible. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF lt_row_outlines. - - r_visible = me->visible. - CHECK r_visible = 'X'. " Currently visible --> but maybe the new outline methodology will hide it implicitly - CHECK io_worksheet IS BOUND. " But we have to see the worksheet to make sure - - lt_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lt_row_outlines ASSIGNING <ls_row_outline> WHERE row_from <= me->row_index - AND row_to >= me->row_index - AND collapsed = abap_true. " row is in a collapsed outline --> not visible - CLEAR r_visible. - RETURN. " one hit is enough to ensure invisibility - - ENDLOOP. - -ENDMETHOD. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - method SET_COLLAPSED. - me->collapsed = ip_collapsed. - endmethod. - - - - - method SET_OUTLINE_LEVEL. - IF ip_outline_level < 0 - OR ip_outline_level > 7. - - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Outline level must range between 0 and 7.'. - - ENDIF. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_ROW_HEIGHT. - TRY. - me->row_height = ip_row_height. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret ip_row_height as number'. - ENDTRY. - endmethod. - - - - method SET_ROW_INDEX. - me->row_index = ip_index. - endmethod. - - - - method SET_VISIBLE. - me->visible = ip_visible. - endmethod. - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - - ep_file = me->create( ). - endmethod. - - - - METHOD add_further_data_to_zip. -* Can be used by child classes like xlsm-writer to write additional data to zip archive -ENDMETHOD. - - - - method CREATE. - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - - "-------------Added by Alessandro Iannacci - Only if template exist - IF lv_content IS NOT INITIAL AND me->excel->use_template EQ abap_true. - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ELSE. "ADD CUSTOM CHART!!!! - lv_content = me->create_xl_charts( lo_drawing ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDIF. - "------------------------------------------------- - ENDWHILE. - -* Second to last step: Allow further information put into the zip archive by child classes - me->add_further_data_to_zip( lo_zip ). - -********************************************************************** -* Last step: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - - method CREATE_CONTENT_TYPES. - - -** Constant node name - DATA: lc_xml_node_types TYPE string VALUE 'Types', - lc_xml_node_override TYPE string VALUE 'Override', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - " Node namespace - lc_xml_node_types_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/content-types', - " Node extension - lc_xml_node_rels_ext TYPE string VALUE 'rels', - lc_xml_node_xml_ext TYPE string VALUE 'xml', - " Node partnumber - lc_xml_node_theme_pn TYPE string VALUE '/xl/theme/theme1.xml', - lc_xml_node_styles_pn TYPE string VALUE '/xl/styles.xml', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_props_pn TYPE string VALUE '/docProps/app.xml', - lc_xml_node_worksheet_pn TYPE string VALUE '/xl/worksheets/sheet#.xml', - lc_xml_node_strings_pn TYPE string VALUE '/xl/sharedStrings.xml', - lc_xml_node_core_pn TYPE string VALUE '/docProps/core.xml', - lc_xml_node_chart_pn TYPE string VALUE '/xl/charts/chart#.xml', - " Node contentType - lc_xml_node_theme_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.theme+xml', - lc_xml_node_styles_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', - lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', - lc_xml_node_rels_ct TYPE string VALUE 'application/vnd.openxmlformats-package.relationships+xml', - lc_xml_node_xml_ct TYPE string VALUE 'application/xml', - lc_xml_node_props_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.extended-properties+xml', - lc_xml_node_worksheet_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', - lc_xml_node_strings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', - lc_xml_node_core_ct TYPE string VALUE 'application/vnd.openxmlformats-package.core-properties+xml', - lc_xml_node_table_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml', - lc_xml_node_drawings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawing+xml', - lc_xml_node_chart_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table. - - DATA: lv_worksheets_num TYPE i, - lv_worksheets_numc TYPE numc3, - lv_xml_node_worksheet_pn TYPE string, - lv_xml_size TYPE i, - lv_value TYPE string, - lv_drawing_index TYPE i VALUE 1, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node types - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_types - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_types_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_rels_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_rels_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_xml_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_xml_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_theme_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_theme_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_styles_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_styles_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Workbook node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_workb_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Properties node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_props_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_props_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Worksheet node - lv_worksheets_num = excel->get_worksheets_size( ). - DO lv_worksheets_num TIMES. - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - - MOVE sy-index TO lv_worksheets_numc. - SHIFT lv_worksheets_numc LEFT DELETING LEADING '0'. - lv_xml_node_worksheet_pn = lc_xml_node_worksheet_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_worksheet_pn WITH lv_worksheets_numc. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_xml_node_worksheet_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_worksheet_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - lo_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - - lv_value = lo_table->get_name( ). - CONCATENATE '/xl/tables/' lv_value '.xml' INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_table_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Drawings - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lv_index_str = lv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - CONCATENATE '/' me->c_xl_drawings INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_drawings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - - " media mimes - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - lt_media_type TYPE TABLE OF mimetypes-extension, - lv_media_type TYPE mimetypes-extension, - lv_mime_type TYPE mimetypes-type. - - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_media_type = lo_drawing->get_media_type( ). - COLLECT lv_media_type INTO lt_media_type. - ENDWHILE. - - LOOP AT lt_media_type INTO lv_media_type. - CALL FUNCTION 'SDOK_MIMETYPE_GET' - EXPORTING - extension = lv_media_type - IMPORTING - mimetype = lv_mime_type. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lv_value = lv_media_type. - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lv_value ). - lv_value = lv_mime_type. - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - - " Charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lv_index_str = lo_drawing->get_index( ). - CONDENSE lv_index_str. - lv_value = lc_xml_node_chart_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_value WITH lv_index_str. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_chart_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_strings_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_strings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_core_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_core_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_APP. - - -** Constant node name - DATA: lc_xml_node_properties TYPE string VALUE 'Properties', - lc_xml_node_application TYPE string VALUE 'Application', - lc_xml_node_docsecurity TYPE string VALUE 'DocSecurity', - lc_xml_node_scalecrop TYPE string VALUE 'ScaleCrop', - lc_xml_node_headingpairs TYPE string VALUE 'HeadingPairs', - lc_xml_node_vector TYPE string VALUE 'vector', - lc_xml_node_variant TYPE string VALUE 'variant', - lc_xml_node_lpstr TYPE string VALUE 'lpstr', - lc_xml_node_i4 TYPE string VALUE 'i4', - lc_xml_node_titlesofparts TYPE string VALUE 'TitlesOfParts', - lc_xml_node_company TYPE string VALUE 'Company', - lc_xml_node_linksuptodate TYPE string VALUE 'LinksUpToDate', - lc_xml_node_shareddoc TYPE string VALUE 'SharedDoc', - lc_xml_node_hyperlinkschanged TYPE string VALUE 'HyperlinksChanged', - lc_xml_node_appversion TYPE string VALUE 'AppVersion', - " Namespace prefix - lc_vt_ns TYPE string VALUE 'vt', - lc_xml_node_props_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', - lc_xml_node_props_vt_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - " Node attributes - lc_xml_attr_size TYPE string VALUE 'size', - lc_xml_attr_basetype TYPE string VALUE 'baseType'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element_vector TYPE REF TO if_ixml_element, - lo_sub_element_variant TYPE REF TO if_ixml_element, - lo_sub_element_lpstr TYPE REF TO if_ixml_element, - lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node properties - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_properties - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_props_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:vt' - value = lc_xml_node_props_vt_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Application - lo_element = lo_document->create_simple_element( name = lc_xml_node_application - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~application. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " DocSecurity - lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~docsecurity. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " ScaleCrop - lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~scalecrop ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HeadingPairs - lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = '2' ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_variant ). - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** i4 node - lo_sub_element_i4 = lo_document->create_simple_element_ns( name = lc_xml_node_i4 - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_i4 ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " HeadingPairs - - - " TitlesOfParts - lo_element = lo_document->create_simple_element( name = lc_xml_node_titlesofparts - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = lv_value ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_lpstr ). - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " ** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->get_title( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_vector->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - ENDWHILE. - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " TitlesOfParts - - - - " Company - IF excel->zif_excel_book_properties~company IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_company - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~company. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " LinksUpToDate - lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~linksuptodate ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " SharedDoc - lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~shareddoc ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HyperlinksChanged - lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~hyperlinkschanged ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " AppVersion - lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~appversion. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_CORE. - - -** Constant node name - DATA: lc_xml_node_coreproperties TYPE string VALUE 'coreProperties', - lc_xml_node_creator TYPE string VALUE 'creator', - lc_xml_node_description TYPE string VALUE 'description', - lc_xml_node_lastmodifiedby TYPE string VALUE 'lastModifiedBy', - lc_xml_node_created TYPE string VALUE 'created', - lc_xml_node_modified TYPE string VALUE 'modified', - " Node attributes - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_target TYPE string VALUE 'dcterms:W3CDTF', - " Node namespace - lc_cp_ns TYPE string VALUE 'cp', - lc_dc_ns TYPE string VALUE 'dc', - lc_dcterms_ns TYPE string VALUE 'dcterms', -* lc_dcmitype_ns TYPE string VALUE 'dcmitype', - lc_xsi_ns TYPE string VALUE 'xsi', - lc_xml_node_cp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', - lc_xml_node_dc_ns TYPE string VALUE 'http://purl.org/dc/elements/1.1/', - lc_xml_node_dcterms_ns TYPE string VALUE 'http://purl.org/dc/terms/', - lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', - lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_value TYPE string, - lv_date TYPE sydatum, - lv_time TYPE syuzeit. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node coreProperties - lo_element_root = lo_document->create_simple_element_ns( name = lc_xml_node_coreproperties - prefix = lc_cp_ns - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:cp' - value = lc_xml_node_cp_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dc' - value = lc_xml_node_dc_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcterms' - value = lc_xml_node_dcterms_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcmitype' - value = lc_xml_node_dcmitype_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:xsi' - value = lc_xml_node_xsi_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Creator node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_creator - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~creator. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Description node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_description - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~description. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " lastModifiedBy node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby - prefix = lc_cp_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~lastmodifiedby. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Created node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - - CONVERT TIME STAMP excel->zif_excel_book_properties~created TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~created. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Modified node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - CONVERT TIME STAMP excel->zif_excel_book_properties~modified TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~modified. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - - - - METHOD create_dxf_style. - - CONSTANTS: lc_xml_node_dxf TYPE string VALUE 'dxf', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - y TYPE i VALUE 0. - - DATA: ls_styles_mapping TYPE zexcel_s_styles_mapping, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lv_index TYPE i, - ls_font TYPE zexcel_s_style_font, - lo_element_font TYPE REF TO if_ixml_element, - lv_value TYPE string, - ls_fill TYPE zexcel_s_style_fill, - lo_element_fill TYPE REF TO if_ixml_element, - x. - - CHECK iv_cell_style IS NOT INITIAL. - - READ TABLE me->styles_mapping INTO ls_styles_mapping WITH KEY guid = iv_cell_style. - ADD 1 TO ls_styles_mapping-style. " the numbering starts from 0 - READ TABLE it_cellxfs INTO ls_cellxfs INDEX ls_styles_mapping-style. - ADD 1 TO ls_cellxfs-fillid. " the numbering starts from 0 - - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY style = ls_styles_mapping-style. - IF sy-subrc EQ 0. - ls_style_cond_mapping-guid = iv_cell_style. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ELSE. - ls_style_cond_mapping-guid = iv_cell_style. - ls_style_cond_mapping-style = ls_styles_mapping-style. - ls_style_cond_mapping-dxf = cv_dfx_count. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ADD 1 TO cv_dfx_count. - - " dxf node - lo_sub_element = io_ixml_document->create_simple_element( name = lc_xml_node_dxf - parent = io_ixml_document ). - - "Conditional formatting font style correction by Alessandro Iannacci START - lv_index = ls_cellxfs-fontid + 1. - READ TABLE it_fonts INTO ls_font INDEX lv_index. - IF ls_font IS NOT INITIAL. - lo_element_font = io_ixml_document->create_simple_element( name = lc_xml_node_font - parent = io_ixml_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_b - parent = io_ixml_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_i - parent = io_ixml_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_u - parent = io_ixml_document ). - lv_value = ls_font-underline_mode. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_strike - parent = io_ixml_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - "color - create_xl_styles_color_node( - io_document = io_ixml_document - io_parent = lo_element_font - is_color = ls_font-color ). - lo_sub_element->append_child( new_child = lo_element_font ). - ENDIF. - "---Conditional formatting font style correction by Alessandro Iannacci END - - - READ TABLE it_fills INTO ls_fill INDEX ls_cellxfs-fillid. - IF ls_fill IS NOT INITIAL. - " fill properties - lo_element_fill = io_ixml_document->create_simple_element( name = lc_xml_node_fill - parent = io_ixml_document ). - "pattern - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_patternfill - parent = io_ixml_document ). - lv_value = ls_fill-filltype. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = io_ixml_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = io_ixml_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - - lo_element_fill->append_child( new_child = lo_sub_element_2 ). "pattern - - lo_sub_element->append_child( new_child = lo_element_fill ). - ENDIF. - ENDIF. - - io_dxf_element->append_child( new_child = lo_sub_element ). -ENDMETHOD. - - - - method CREATE_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_rId1_id TYPE string VALUE 'rId1', - lc_xml_node_rId2_id TYPE string VALUE 'rId2', - lc_xml_node_rId3_id TYPE string VALUE 'rId3', - " Node type - lc_xml_node_rId1_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - lc_xml_node_rId2_tp TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lc_xml_node_rId3_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - " Node target - lc_xml_node_rId1_tg TYPE string VALUE 'xl/workbook.xml', - lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', - lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId3_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId3_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId2_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId2_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId1_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId1_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_CHARTS. - - -** Constant node name - CONSTANTS: lc_xml_node_chartspace TYPE string VALUE 'c:chartSpace', - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_date1904 TYPE string VALUE 'c:date1904', - lc_xml_node_lang TYPE string VALUE 'c:lang', - lc_xml_node_roundedcorners TYPE string VALUE 'c:roundedCorners', - lc_xml_node_altcont TYPE string VALUE 'mc:AlternateContent', - lc_xml_node_altcont_ns_mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_choice TYPE string VALUE 'mc:Choice', - lc_xml_node_choice_ns_requires TYPE string VALUE 'c14', - lc_xml_node_choice_ns_c14 TYPE string VALUE 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart', - lc_xml_node_style TYPE string VALUE 'c14:style', - lc_xml_node_fallback TYPE string VALUE 'mc:Fallback', - lc_xml_node_style2 TYPE string VALUE 'c:style', - - "---------------------------CHART - lc_xml_node_chart TYPE string VALUE 'c:chart', - lc_xml_node_autotitledeleted TYPE string VALUE 'c:autoTitleDeleted', - "plotArea - lc_xml_node_plotarea TYPE string VALUE 'c:plotArea', - lc_xml_node_layout TYPE string VALUE 'c:layout', - lc_xml_node_varycolors TYPE string VALUE 'c:varyColors', - lc_xml_node_ser TYPE string VALUE 'c:ser', - lc_xml_node_idx TYPE string VALUE 'c:idx', - lc_xml_node_order TYPE string VALUE 'c:order', - lc_xml_node_tx TYPE string VALUE 'c:tx', - lc_xml_node_v TYPE string VALUE 'c:v', - lc_xml_node_val TYPE string VALUE 'c:val', - lc_xml_node_cat TYPE string VALUE 'c:cat', - lc_xml_node_numref TYPE string VALUE 'c:numRef', - lc_xml_node_strref TYPE string VALUE 'c:strRef', - lc_xml_node_f TYPE string VALUE 'c:f', "this is the range - "note: numcache avoided - lc_xml_node_dlbls TYPE string VALUE 'c:dLbls', - lc_xml_node_showlegendkey TYPE string VALUE 'c:showLegendKey', - lc_xml_node_showval TYPE string VALUE 'c:showVal', - lc_xml_node_showcatname TYPE string VALUE 'c:showCatName', - lc_xml_node_showsername TYPE string VALUE 'c:showSerName', - lc_xml_node_showpercent TYPE string VALUE 'c:showPercent', - lc_xml_node_showbubblesize TYPE string VALUE 'c:showBubbleSize', - "plotArea->pie - lc_xml_node_piechart TYPE string VALUE 'c:pieChart', - lc_xml_node_showleaderlines TYPE string VALUE 'c:showLeaderLines', - lc_xml_node_firstsliceang TYPE string VALUE 'c:firstSliceAng', - "plotArea->line - lc_xml_node_linechart TYPE string VALUE 'c:lineChart', - lc_xml_node_symbol TYPE string VALUE 'c:symbol', - lc_xml_node_marker TYPE string VALUE 'c:marker', - lc_xml_node_smooth TYPE string VALUE 'c:smooth', - "plotArea->bar - lc_xml_node_invertifnegative TYPE string VALUE 'c:invertIfNegative', - lc_xml_node_barchart TYPE string VALUE 'c:barChart', - lc_xml_node_bardir TYPE string VALUE 'c:barDir', - lc_xml_node_gapwidth TYPE string VALUE 'c:gapWidth', - "plotArea->line + plotArea->bar - lc_xml_node_grouping TYPE string VALUE 'c:grouping', - lc_xml_node_axid TYPE string VALUE 'c:axId', - lc_xml_node_catax TYPE string VALUE 'c:catAx', - lc_xml_node_valax TYPE string VALUE 'c:valAx', - lc_xml_node_scaling TYPE string VALUE 'c:scaling', - lc_xml_node_orientation TYPE string VALUE 'c:orientation', - lc_xml_node_delete TYPE string VALUE 'c:delete', - lc_xml_node_axpos TYPE string VALUE 'c:axPos', - lc_xml_node_numfmt TYPE string VALUE 'c:numFmt', - lc_xml_node_majorgridlines TYPE string VALUE 'c:majorGridlines', - lc_xml_node_majortickmark TYPE string VALUE 'c:majorTickMark', - lc_xml_node_minortickmark TYPE string VALUE 'c:minorTickMark', - lc_xml_node_ticklblpos TYPE string VALUE 'c:tickLblPos', - lc_xml_node_crossax TYPE string VALUE 'c:crossAx', - lc_xml_node_crosses TYPE string VALUE 'c:crosses', - lc_xml_node_auto TYPE string VALUE 'c:auto', - lc_xml_node_lblalgn TYPE string VALUE 'c:lblAlgn', - lc_xml_node_lbloffset TYPE string VALUE 'c:lblOffset', - lc_xml_node_nomultilvllbl TYPE string VALUE 'c:noMultiLvlLbl', - lc_xml_node_crossbetween TYPE string VALUE 'c:crossBetween', - "legend - lc_xml_node_legend TYPE string VALUE 'c:legend', - "legend->pie - lc_xml_node_legendpos TYPE string VALUE 'c:legendPos', -* lc_xml_node_layout TYPE string VALUE 'c:layout', "already exist - lc_xml_node_overlay TYPE string VALUE 'c:overlay', - lc_xml_node_txpr TYPE string VALUE 'c:txPr', - lc_xml_node_bodypr TYPE string VALUE 'a:bodyPr', - lc_xml_node_lststyle TYPE string VALUE 'a:lstStyle', - lc_xml_node_p TYPE string VALUE 'a:p', - lc_xml_node_ppr TYPE string VALUE 'a:pPr', - lc_xml_node_defrpr TYPE string VALUE 'a:defRPr', - lc_xml_node_endpararpr TYPE string VALUE 'a:endParaRPr', - "legend->bar + legend->line - lc_xml_node_plotvisonly TYPE string VALUE 'c:plotVisOnly', - lc_xml_node_dispblanksas TYPE string VALUE 'c:dispBlanksAs', - lc_xml_node_showdlblsovermax TYPE string VALUE 'c:showDLblsOverMax', - "---------------------------END OF CHART - - lc_xml_node_printsettings TYPE string VALUE 'c:printSettings', - lc_xml_node_headerfooter TYPE string VALUE 'c:headerFooter', - lc_xml_node_pagemargins TYPE string VALUE 'c:pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'c:pageSetup'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - DATA: lv_rel_id TYPE i. - - DATA lo_element TYPE REF TO if_ixml_element. - DATA lo_element2 TYPE REF TO if_ixml_element. - DATA lo_element3 TYPE REF TO if_ixml_element. - DATA lo_el_rootchart TYPE REF TO if_ixml_element. - DATA lo_element4 TYPE REF TO if_ixml_element. - DATA lo_element5 TYPE REF TO if_ixml_element. - DATA lo_element6 TYPE REF TO if_ixml_element. - DATA lo_element7 TYPE REF TO if_ixml_element. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_chartspace - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - -********************************************************************** -* STEP 4: Create chart - - DATA lo_chartb TYPE REF TO zcl_excel_graph_bars. - DATA lo_chartp TYPE REF TO zcl_excel_graph_pie. - DATA lo_chartl TYPE REF TO zcl_excel_graph_line. - DATA lo_chart TYPE REF TO zcl_excel_graph. - - DATA ls_serie TYPE zcl_excel_graph=>s_series. - DATA ls_ax TYPE zcl_excel_graph_bars=>s_ax. - DATA lv_str TYPE string. - - "Identify chart type - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - lo_chartb ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_pie. - lo_chartp ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_line. - lo_chartl ?= io_drawing->graph. - WHEN OTHERS. - ENDCASE. - - - lo_chart = io_drawing->graph. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_date1904 - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_1904val ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_lang - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_langval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_roundedcorners - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_roundedcornersval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_altcont - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_altcont_ns_mc ). - - "Choice - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_choice - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'Requires' - value = lc_xml_node_choice_ns_requires ). - lo_element2->set_attribute_ns( name = 'xmlns:c14' - value = lc_xml_node_choice_ns_c14 ). - - "C14:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_c14styleval ). - - "Fallback - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_fallback - parent = lo_element ). - - "C:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style2 - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_styleval ). - - "---------------------------CHART - lo_element = lo_document->create_simple_element( name = lc_xml_node_chart - parent = lo_element_root ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_autotitledeleted - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_autotitledeletedval ). - - "plotArea - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotarea - parent = lo_element ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_barchart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bardir - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_bardirval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_varycolorsval ). - - "series - LOOP AT lo_chartb->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_invertifnegative - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-invertifnegative ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_gapwidth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_gapwidthval ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartb->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_bars=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_bars=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_piechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_varycolorsval ). - - "series - LOOP AT lo_chartp->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showbubblesizeval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showleaderlines - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showleaderlinesval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_firstsliceang - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_firstsliceangval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_linechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_varycolorsval ). - - "series - LOOP AT lo_chartl->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_symbol - parent = lo_element5 ). - lo_element6->set_attribute_ns( name = 'val' - value = ls_serie-symbol ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-smooth ). - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_MARKERVAL ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_SMOOTHVAL ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartl->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_line=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). -* lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt -* parent = lo_element3 ). -* lo_element4->set_attribute_ns( name = 'formatCode' -* value = ls_ax-formatcode ). -* lo_element4->set_attribute_ns( name = 'sourceLinked' -* value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_line=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN OTHERS. - ENDCASE. - - "legend - IF lo_chart->print_label EQ abap_true. - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_legend - parent = lo_element ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_overlayval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_txpr - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bodypr - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lststyle - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_p - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_ppr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'rtl' - value = lo_chartp->ns_pprrtl ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_defrpr - parent = lo_element5 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_endpararpr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'lang' - value = lo_chartp->ns_endpararprlang ). - WHEN OTHERS. - ENDCASE. - ENDIF. - - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotvisonly - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_plotvisonlyval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_dispblanksas - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_dispblanksasval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_showdlblsovermax - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_showdlblsovermaxval ). - "---------------------------END OF CHART - - "printSettings - lo_element = lo_document->create_simple_element( name = lc_xml_node_printsettings - parent = lo_element_root ). - "headerFooter - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_element ). - "pageMargins - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'b' - value = lo_chart->pagemargins-b ). - lo_element2->set_attribute_ns( name = 'l' - value = lo_chart->pagemargins-l ). - lo_element2->set_attribute_ns( name = 'r' - value = lo_chart->pagemargins-r ). - lo_element2->set_attribute_ns( name = 't' - value = lo_chart->pagemargins-t ). - lo_element2->set_attribute_ns( name = 'header' - value = lo_chart->pagemargins-header ). - lo_element2->set_attribute_ns( name = 'footer' - value = lo_chart->pagemargins-footer ). - "pageSetup - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS. - - -** Constant node name - CONSTANTS: lc_xml_node_wsdr TYPE string VALUE 'xdr:wsDr', - lc_xml_node_ns_xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main'. - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - DATA: lv_rel_id TYPE i. - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_wsdr - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:xdr' - value = lc_xml_node_ns_xdr ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - -********************************************************************** -* STEP 4: Create drawings - - CLEAR: lv_rel_id. - - lo_drawings = io_worksheet->get_drawings( ). - - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - ADD 1 TO lv_rel_id. - lo_element_cellanchor = me->create_xl_drawing_anchor( - io_drawing = lo_drawing - io_document = lo_document - ip_index = lv_rel_id ). - - lo_element_root->append_child( new_child = lo_element_cellanchor ). - - ENDWHILE. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS_RELS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lv_value TYPE string, - lv_counter TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_counter = 0. - lo_drawings = io_worksheet->get_drawings( ). - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_counter. - - lv_value = lv_counter. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - lv_value = lo_drawing->get_media_name( ). - CASE lo_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - CONCATENATE '../media/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_image_tp ). - - WHEN zcl_excel_drawing=>type_chart. - CONCATENATE '../charts/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_chart_tp ). - - ENDCASE. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - method CREATE_XL_DRAWING_ANCHOR. - -** Constant node name - CONSTANTS: lc_xml_node_onecellanchor TYPE string VALUE 'xdr:oneCellAnchor', - lc_xml_node_twocellanchor TYPE string VALUE 'xdr:twoCellAnchor', - lc_xml_node_from TYPE string VALUE 'xdr:from', - lc_xml_node_to TYPE string VALUE 'xdr:to', - lc_xml_node_pic TYPE string VALUE 'xdr:pic', - lc_xml_node_ext TYPE string VALUE 'xdr:ext', - lc_xml_node_clientdata TYPE string VALUE 'xdr:clientData', - - lc_xml_node_col TYPE string VALUE 'xdr:col', - lc_xml_node_coloff TYPE string VALUE 'xdr:colOff', - lc_xml_node_row TYPE string VALUE 'xdr:row', - lc_xml_node_rowoff TYPE string VALUE 'xdr:rowOff', - - lc_xml_node_nvpicpr TYPE string VALUE 'xdr:nvPicPr', - lc_xml_node_cnvpr TYPE string VALUE 'xdr:cNvPr', - lc_xml_node_cnvpicpr TYPE string VALUE 'xdr:cNvPicPr', - lc_xml_node_piclocks TYPE string VALUE 'a:picLocks', - - lc_xml_node_sppr TYPE string VALUE 'xdr:spPr', - lc_xml_node_apgeom TYPE string VALUE 'a:prstGeom', - lc_xml_node_aavlst TYPE string VALUE 'a:avLst', - - lc_xml_node_graphicframe TYPE string VALUE 'xdr:graphicFrame', - lc_xml_node_nvgraphicframepr TYPE string VALUE 'xdr:nvGraphicFramePr', - lc_xml_node_cnvgraphicframepr TYPE string VALUE 'xdr:cNvGraphicFramePr', - lc_xml_node_graphicframelocks TYPE string VALUE 'a:graphicFrameLocks', - lc_xml_node_xfrm TYPE string VALUE 'xdr:xfrm', - lc_xml_node_aoff TYPE string VALUE 'a:off', - lc_xml_node_aext TYPE string VALUE 'a:ext', - lc_xml_node_agraphic TYPE string VALUE 'a:graphic', - lc_xml_node_agraphicdata TYPE string VALUE 'a:graphicData', - - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_cchart TYPE string VALUE 'c:chart', - - lc_xml_node_blipfill TYPE string VALUE 'xdr:blipFill', - lc_xml_node_ablip TYPE string VALUE 'a:blip', - lc_xml_node_astretch TYPE string VALUE 'a:stretch', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'. - - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_element_graphicframe TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_element3 TYPE REF TO if_ixml_element, - lo_element_from TYPE REF TO if_ixml_element, - lo_element_to TYPE REF TO if_ixml_element, - lo_element_ext TYPE REF TO if_ixml_element, - lo_element_pic TYPE REF TO if_ixml_element, - lo_element_clientdata TYPE REF TO if_ixml_element, - - ls_position TYPE zexcel_drawing_position, - - lv_col TYPE string, " zexcel_cell_column, - lv_row TYPE string, " zexcel_cell_row. - lv_col_offset TYPE string, - lv_row_offset TYPE string, - lv_value TYPE string. - - ls_position = io_drawing->get_position( ). - - IF ls_position-anchor = 'ONE'. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_onecellanchor - parent = io_document ). - ELSE. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_twocellanchor - parent = io_document ). - ENDIF. - -* from cell ****************************** - lo_element_from = io_document->create_simple_element( name = lc_xml_node_from - parent = io_document ). - - lv_col = ls_position-from-col. - lv_row = ls_position-from-row. - lv_col_offset = ls_position-from-col_offset. - lv_row_offset = ls_position-from-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_from->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_from ). - - IF ls_position-anchor = 'ONE'. - -* ext ****************************** - lo_element_ext = io_document->create_simple_element( name = lc_xml_node_ext - parent = io_document ). - - lv_value = io_drawing->get_width_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cx' - value = lv_value ). - lv_value = io_drawing->get_height_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cy' - value = lv_value ). - ep_anchor->append_child( new_child = lo_element_ext ). - - ELSEIF ls_position-anchor = 'TWO'. - -* to cell ****************************** - lo_element_to = io_document->create_simple_element( name = lc_xml_node_to - parent = io_document ). - - lv_col = ls_position-to-col. - lv_row = ls_position-to-row. - lv_col_offset = ls_position-to-col_offset. - lv_row_offset = ls_position-to-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_to->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_to ). - - ENDIF. - - CASE io_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. -* pic ********************************** - lo_element_pic = io_document->create_simple_element( name = lc_xml_node_pic - parent = io_document ). -* nvPicPr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvpicpr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). - -* cNvPicPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpicpr - parent = io_document ). - -* picLocks - lo_element3 = io_document->create_simple_element( name = lc_xml_node_piclocks - parent = io_document ). - lo_element3->set_attribute_ns( name = 'noChangeAspect' - value = '1' ). - - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_pic->append_child( new_child = lo_element ). - -* blipFill - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = io_document->create_simple_element( name = lc_xml_node_blipfill - parent = io_document ). - lo_element2 = io_document->create_simple_element( name = lc_xml_node_ablip - parent = io_document ). - lo_element2->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element2->set_attribute_ns( name = 'r:embed' - value = lv_value ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_astretch - parent = io_document ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - -* spPr - lo_element = io_document->create_simple_element( name = lc_xml_node_sppr - parent = io_document ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_apgeom - parent = io_document ). - lo_element2->set_attribute_ns( name = 'prst' - value = 'rect' ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_aavlst - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_pic ). - WHEN zcl_excel_drawing=>type_chart. -* graphicFrame ********************************** - lo_element_graphicframe = io_document->create_simple_element( name = lc_xml_node_graphicframe - parent = io_document ). -* nvGraphicFramePr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvgraphicframepr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). -* cNvGraphicFramePr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvgraphicframepr - parent = io_document ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_graphicframelocks - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* xfrm - lo_element = io_document->create_simple_element( name = lc_xml_node_xfrm - parent = io_document ). -* off - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aoff - parent = io_document ). - lo_element2->set_attribute_ns( name = 'y' value = '0' ). - lo_element2->set_attribute_ns( name = 'x' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). -* ext - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aext - parent = io_document ). - lo_element2->set_attribute_ns( name = 'cy' value = '0' ). - lo_element2->set_attribute_ns( name = 'cx' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* graphic - lo_element = io_document->create_simple_element( name = lc_xml_node_agraphic - parent = io_document ). -* graphicData - lo_element2 = io_document->create_simple_element( name = lc_xml_node_agraphicdata - parent = io_document ). - lo_element2->set_attribute_ns( name = 'uri' value = lc_xml_node_ns_c ). - -* chart - lo_element3 = io_document->create_simple_element( name = lc_xml_node_cchart - parent = io_document ). - - lo_element3->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element3->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element3->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_graphicframe ). - - ENDCASE. - -* client data *************************** - lo_element_clientdata = io_document->create_simple_element( name = lc_xml_node_clientdata - parent = io_document ). - ep_anchor->append_child( new_child = lo_element_clientdata ). - - endmethod. - - - - method CREATE_XL_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_sheet_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lc_xml_node_rid_theme_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - lc_xml_node_rid_styles_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lc_xml_node_rid_shared_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - " Node target - lc_xml_node_ridx_tg TYPE string VALUE 'worksheets/sheet#.xml', - lc_xml_node_rid_shared_tg TYPE string VALUE 'sharedStrings.xml', - lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', - lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_syindex(3) TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 2. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_styles_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( new_child = lo_element ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size - 1. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_theme_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( new_child = lo_element ). - - lv_size = excel->get_worksheets_size( ). - - DO lv_size TIMES. - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - lv_xml_node_ridx_tg = lc_xml_node_ridx_tg. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_tg WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_sheet_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 3 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_shared_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - METHOD create_xl_sharedstrings. - - -** Constant node name - DATA: lc_xml_node_sst TYPE string VALUE 'sst', - lc_xml_node_si TYPE string VALUE 'si', - lc_xml_node_t TYPE string VALUE 't', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_value TYPE string, - lv_count_str TYPE string, - lv_uniquecount_str TYPE string, - lv_sytabix TYPE sytabix, - lv_count TYPE i, - lv_uniquecount TYPE i. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_sheet_string> TYPE zexcel_s_shared_string. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - DESCRIBE TABLE lt_cell_data LINES lv_count. - MOVE lv_count TO lv_count_str. - - SHIFT lv_count_str RIGHT DELETING TRAILING space. - SHIFT lv_count_str LEFT DELETING LEADING space. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - DESCRIBE TABLE lt_cell_data LINES lv_uniquecount. - MOVE lv_uniquecount TO lv_uniquecount_str. - - SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. - SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - lv_sytabix = sy-tabix - 1. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. - MOVE <fs_sheet_content>-data_type TO ls_shared_string-string_type. - APPEND ls_shared_string TO shared_strings. - ENDLOOP. - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_sst - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_count - value = lv_count_str ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_uniquecount - value = lv_uniquecount_str ). - -********************************************************************** -* STEP 4: Create subnode - LOOP AT shared_strings ASSIGNING <fs_sheet_string>. - lo_element = lo_document->create_simple_element( name = lc_xml_node_si - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). -* if <fs_sheet_string>-string_type EQ 's_leading_blanks'. - IF <fs_sheet_string>-string_value IS NOT INITIAL AND <fs_sheet_string>-string_value(1) EQ ` `. - lo_sub_element->set_attribute( name = 'space' namespace = 'xml' value = 'preserve' ). - ENDIF. - lo_sub_element->set_value( value = <fs_sheet_string>-string_value ). - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_sheet. -*--------------------------------------------------------------------* -* issue #330 - Adding ColorScale conditional formatting -* - Ivan Femia, 2014-08-25 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF colors, - colorrgb TYPE zexcel_color, - END OF colors. - -*--------------------------------------------------------------------* -* issue #237 - Error writing column-style -* - Stefan Schmöcker, 2012-11-01 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF cfvo, - value TYPE zexcel_conditional_value, - type TYPE zexcel_conditional_type, - END OF cfvo. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - start -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, - END OF lty_table_area. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - end -*--------------------------------------------------------------------* -** Constants - CONSTANTS: - lc_dummy_cell_content TYPE zexcel_s_cell_data-cell_value VALUE '})~~~ This is a dummy value for ABAP2XLSX and you should never find this in a real excelsheet Ihope'. - - -** Constant node name - DATA: lc_xml_node_worksheet TYPE string VALUE 'worksheet', - lc_xml_node_sheetpr TYPE string VALUE 'sheetPr', - lc_xml_node_tabcolor TYPE string VALUE 'tabColor', - lc_xml_node_outlinepr TYPE string VALUE 'outlinePr', - lc_xml_node_dimension TYPE string VALUE 'dimension', - lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', - lc_xml_node_sheetview TYPE string VALUE 'sheetView', - lc_xml_node_selection TYPE string VALUE 'selection', - lc_xml_node_pane TYPE string VALUE 'pane', - lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', - lc_xml_node_cols TYPE string VALUE 'cols', - lc_xml_node_col TYPE string VALUE 'col', - lc_xml_node_sheetdata TYPE string VALUE 'sheetData', - lc_xml_node_row TYPE string VALUE 'row', - lc_xml_node_c TYPE string VALUE 'c', - lc_xml_node_v TYPE string VALUE 'v', - lc_xml_node_f TYPE string VALUE 'f', - lc_xml_node_sheetprotection TYPE string VALUE 'sheetProtection', - lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'pageSetup', - lc_xml_node_pagesetuppr TYPE string VALUE 'pageSetUpPr', - lc_xml_node_condformatting TYPE string VALUE 'conditionalFormatting', - lc_xml_node_cfrule TYPE string VALUE 'cfRule', - lc_xml_node_color TYPE string VALUE 'color', " Databar by Albert Lladanosa - lc_xml_node_databar TYPE string VALUE 'dataBar', " Databar by Albert Lladanosa - lc_xml_node_colorscale TYPE string VALUE 'colorScale', - lc_xml_node_iconset TYPE string VALUE 'iconSet', - lc_xml_node_cfvo TYPE string VALUE 'cfvo', - lc_xml_node_formula TYPE string VALUE 'formula', - lc_xml_node_datavalidations TYPE string VALUE 'dataValidations', - lc_xml_node_datavalidation TYPE string VALUE 'dataValidation', - lc_xml_node_formula1 TYPE string VALUE 'formula1', - lc_xml_node_formula2 TYPE string VALUE 'formula2', - lc_xml_node_mergecell TYPE string VALUE 'mergeCell', - lc_xml_node_mergecells TYPE string VALUE 'mergeCells', - lc_xml_node_drawing TYPE string VALUE 'drawing', - lc_xml_node_headerfooter TYPE string VALUE 'headerFooter', - lc_xml_node_oddheader TYPE string VALUE 'oddHeader', - lc_xml_node_oddfooter TYPE string VALUE 'oddFooter', - lc_xml_node_evenheader TYPE string VALUE 'evenHeader', - lc_xml_node_evenfooter TYPE string VALUE 'evenFooter', - lc_xml_node_autofilter TYPE string VALUE 'autoFilter', - lc_xml_node_filtercolumn TYPE string VALUE 'filterColumn', - lc_xml_node_filters TYPE string VALUE 'filters', - lc_xml_node_filter TYPE string VALUE 'filter', - " Node attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_summarybelow TYPE string VALUE 'summaryBelow', - lc_xml_attr_summaryright TYPE string VALUE 'summaryRight', - lc_xml_attr_tabselected TYPE string VALUE 'tabSelected', - lc_xml_attr_showzeros TYPE string VALUE 'showZeros', - lc_xml_attr_zoomscale TYPE string VALUE 'zoomScale', - lc_xml_attr_zoomscalenormal TYPE string VALUE 'zoomScaleNormal', - lc_xml_attr_zoomscalepageview TYPE string VALUE 'zoomScalePageLayoutView', - lc_xml_attr_zoomscalesheetview TYPE string VALUE 'zoomScaleSheetLayoutView', - lc_xml_attr_workbookviewid TYPE string VALUE 'workbookViewId', - lc_xml_attr_showgridlines TYPE string VALUE 'showGridLines', - lc_xml_attr_gridlines TYPE string VALUE 'gridLines', - lc_xml_attr_showrowcolheaders TYPE string VALUE 'showRowColHeaders', - lc_xml_attr_activecell TYPE string VALUE 'activeCell', - lc_xml_attr_sqref TYPE string VALUE 'sqref', - lc_xml_attr_min TYPE string VALUE 'min', - lc_xml_attr_max TYPE string VALUE 'max', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_width TYPE string VALUE 'width', - lc_xml_attr_defaultwidth TYPE string VALUE '9.10', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_bestfit TYPE string VALUE 'bestFit', - lc_xml_attr_customheight TYPE string VALUE 'customHeight', - lc_xml_attr_customwidth TYPE string VALUE 'customWidth', - lc_xml_attr_collapsed TYPE string VALUE 'collapsed', - lc_xml_attr_defaultrowheight TYPE string VALUE 'defaultRowHeight', - lc_xml_attr_defaultcolwidth TYPE string VALUE 'defaultColWidth', - lc_xml_attr_outlinelevelrow TYPE string VALUE 'x14ac:outlineLevelRow', - lc_xml_attr_outlinelevelcol TYPE string VALUE 'x14ac:outlineLevelCol', - lc_xml_attr_outlinelevel TYPE string VALUE 'outlineLevel', - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_s TYPE string VALUE 's', - lc_xml_attr_spans TYPE string VALUE 'spans', - lc_xml_attr_t TYPE string VALUE 't', - lc_xml_attr_password TYPE string VALUE 'password', - lc_xml_attr_sheet TYPE string VALUE 'sheet', - lc_xml_attr_objects TYPE string VALUE 'objects', - lc_xml_attr_scenarios TYPE string VALUE 'scenarios', - lc_xml_attr_autofilter TYPE string VALUE 'autoFilter', - lc_xml_attr_deletecolumns TYPE string VALUE 'deleteColumns', - lc_xml_attr_deleterows TYPE string VALUE 'deleteRows', - lc_xml_attr_formatcells TYPE string VALUE 'formatCells', - lc_xml_attr_formatcolumns TYPE string VALUE 'formatColumns', - lc_xml_attr_formatrows TYPE string VALUE 'formatRows', - lc_xml_attr_insertcolumns TYPE string VALUE 'insertColumns', - lc_xml_attr_inserthyperlinks TYPE string VALUE 'insertHyperlinks', - lc_xml_attr_insertrows TYPE string VALUE 'insertRows', - lc_xml_attr_pivottables TYPE string VALUE 'pivotTables', - lc_xml_attr_selectlockedcells TYPE string VALUE 'selectLockedCells', - lc_xml_attr_selectunlockedcell TYPE string VALUE 'selectUnlockedCells', - lc_xml_attr_sort TYPE string VALUE 'sort', - lc_xml_attr_left TYPE string VALUE 'left', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_header TYPE string VALUE 'header', - lc_xml_attr_footer TYPE string VALUE 'footer', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_iconset TYPE string VALUE 'iconSet', - lc_xml_attr_showvalue TYPE string VALUE 'showValue', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_dxfid TYPE string VALUE 'dxfId', - lc_xml_attr_priority TYPE string VALUE 'priority', - lc_xml_attr_operator TYPE string VALUE 'operator', - lc_xml_attr_allowblank TYPE string VALUE 'allowBlank', - lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage', - lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage', - lc_xml_attr_errortitle TYPE string VALUE 'errorTitle', - lc_xml_attr_error TYPE string VALUE 'error', - lc_xml_attr_prompttitle TYPE string VALUE 'promptTitle', - lc_xml_attr_prompt TYPE string VALUE 'prompt', - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_blackandwhite TYPE string VALUE 'blackAndWhite', - lc_xml_attr_cellcomments TYPE string VALUE 'cellComments', - lc_xml_attr_copies TYPE string VALUE 'copies', - lc_xml_attr_draft TYPE string VALUE 'draft', - lc_xml_attr_errors TYPE string VALUE 'errors', - lc_xml_attr_firstpagenumber TYPE string VALUE 'firstPageNumber', - lc_xml_attr_fittopage TYPE string VALUE 'fitToPage', - lc_xml_attr_fittoheight TYPE string VALUE 'fitToHeight', - lc_xml_attr_fittowidth TYPE string VALUE 'fitToWidth', - lc_xml_attr_horizontaldpi TYPE string VALUE 'horizontalDpi', - lc_xml_attr_orientation TYPE string VALUE 'orientation', - lc_xml_attr_pageorder TYPE string VALUE 'pageOrder', - lc_xml_attr_paperheight TYPE string VALUE 'paperHeight', - lc_xml_attr_papersize TYPE string VALUE 'paperSize', - lc_xml_attr_paperwidth TYPE string VALUE 'paperWidth', - lc_xml_attr_scale TYPE string VALUE 'scale', - lc_xml_attr_usefirstpagenumber TYPE string VALUE 'useFirstPageNumber', - lc_xml_attr_useprinterdefaults TYPE string VALUE 'usePrinterDefaults', - lc_xml_attr_verticaldpi TYPE string VALUE 'verticalDpi', - lc_xml_attr_differentoddeven TYPE string VALUE 'differentOddEven', - lc_xml_attr_colid TYPE string VALUE 'colId', - lc_xml_attr_filtermode TYPE string VALUE 'filterMode', - lc_xml_attr_tabcolor_rgb TYPE string VALUE 'rgb', - lc_xml_attr_tabcolor_theme TYPE string VALUE 'theme', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_comp_pref TYPE string VALUE 'x14ac', - lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_table TYPE REF TO zcl_excel_table, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_row_dim_empty TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, - default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_value TYPE string, - lt_range_merge TYPE string_table, - lv_merge TYPE string, - lv_column_p TYPE zexcel_cell_column_alpha, - lv_column TYPE zexcel_cell_column, - lv_cell_value TYPE zexcel_cell_value, - lv_style_guid TYPE zexcel_cell_style, - lv_flag TYPE c, - ls_databar TYPE zexcel_conditional_databar, " Databar by Albert Lladanosa - ls_colorscale TYPE zexcel_conditional_colorscale, - ls_iconset TYPE zexcel_conditional_iconset, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - ls_conditional_top10 TYPE zexcel_conditional_top10, - ls_conditional_above_avg TYPE zexcel_conditional_above_avg, - lt_cfvo TYPE TABLE OF cfvo, - ls_cfvo TYPE cfvo, - lt_colors TYPE TABLE OF colors, - ls_colors TYPE colors, - lv_cell_row_s TYPE string, - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping, - lv_freeze_cell_row TYPE zexcel_cell_row, - lv_freeze_cell_column TYPE zexcel_cell_column, - lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, - row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - lv_relation_id TYPE i VALUE 0, - outline_level_row TYPE i VALUE 0, - outline_level_col TYPE i VALUE 0, - lv_current_row TYPE i, - lv_next_row TYPE i, - ls_sheet_content LIKE LINE OF io_worksheet->sheet_content, - ls_sheet_content_empty LIKE LINE OF io_worksheet->sheet_content, - lv_last_row TYPE i, - lts_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - lts_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - col_count TYPE int4, - merge_count TYPE int4, - write_current_row TYPE boolean, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values, -* lv_guid TYPE uuid, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter, - l_autofilter_hidden TYPE flag, - ls_area TYPE zexcel_s_autofilter_area, - lv_ref TYPE string, - lv_style_index TYPE i. " issue #237 - - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data, - <fs_range_merge> LIKE LINE OF lt_range_merge, - <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio, - <ls_row_outline> LIKE LINE OF lts_row_outlines. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - start -*--------------------------------------------------------------------* - DATA: lt_table_areas TYPE SORTED TABLE OF lty_table_area WITH NON-UNIQUE KEY left right top bottom, - ls_table_area LIKE LINE OF lt_table_areas. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - end -*--------------------------------------------------------------------* - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_worksheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_comp_ns ). - lo_element_root->set_attribute_ns( name = 'mc:Ignorable' - value = lc_xml_node_comp_pref ). - lo_element_root->set_attribute_ns( name = 'xmlns:x14ac' - value = lc_xml_node_ig_ns ). - - -********************************************************************** -* STEP 4: Create subnodes - " sheetPr - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetpr - parent = lo_document ). - " TODO tabColor - IF io_worksheet->tabcolor IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_tabcolor - parent = lo_element ). -* Theme not supported yet - start with RGB - lv_value = io_worksheet->tabcolor-rgb. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - ENDIF. - - " outlinePr - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_outlinepr - parent = lo_document ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summarybelow. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summarybelow - value = lv_value ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summaryright. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summaryright - value = lv_value ). - - lo_element->append_child( new_child = lo_element_2 ). - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_pagesetuppr - parent = lo_document ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_fittopage - value = `1` ). - lo_element->append_child( new_child = lo_element_2 ). " pageSetupPr node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - - " dimension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension - parent = lo_document ). - lv_value = io_worksheet->get_dimension_range( ). - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " sheetViews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews - parent = lo_document ). - " sheetView node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_sheetview - parent = lo_document ). - IF io_worksheet->zif_excel_sheet_properties~show_zeros EQ abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showzeros - value = '0' ). - ENDIF. - IF iv_active = abap_true - OR io_worksheet->zif_excel_sheet_properties~selected EQ abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '0' ). - ENDIF. - " Zoom scale - IF io_worksheet->zif_excel_sheet_properties~zoomscale GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscale - value = lv_value ). - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_normal LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_normal. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalenormal - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalepageview - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalesheetview - value = lv_value ). - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid - value = '0' ). - " showGridLines attribute - IF io_worksheet->show_gridlines = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '0' ). - ENDIF. - - " showRowColHeaders attribute - IF io_worksheet->show_rowcolheaders = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '0' ). - ENDIF. - - - " freeze panes - io_worksheet->get_freeze_cell( IMPORTING ep_row = lv_freeze_cell_row - ep_column = lv_freeze_cell_column ). - - IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_pane - parent = lo_element_2 ). - - IF lv_freeze_cell_row > 1. - lv_value = lv_freeze_cell_row - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'ySplit' - value = lv_value ). - ENDIF. - - IF lv_freeze_cell_column > 1. - lv_value = lv_freeze_cell_column - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'xSplit' - value = lv_value ). - ENDIF. - - lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ). - CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value. - lo_element_3->set_attribute_ns( name = 'topLeftCell' - value = lv_value ). - - lo_element_3->set_attribute_ns( name = 'activePane' - value = 'bottomRight' ). - - lo_element_3->set_attribute_ns( name = 'state' - value = 'frozen' ). - - lo_element_2->append_child( new_child = lo_element_3 ). - ENDIF. - " selection node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection - parent = lo_document ). - lv_value = io_worksheet->get_active_cell( ). - lo_element_3->set_attribute_ns( name = lc_xml_attr_activecell - value = lv_value ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " sheetView node - - lo_element->append_child( new_child = lo_element_2 ). " sheetView node - - lo_element_root->append_child( new_child = lo_element ). " sheetViews node - - - column_dimensions[] = io_worksheet->get_column_dimensions( ). - " Calculate col - IF NOT column_dimensions IS INITIAL. - io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). - ENDIF. - row_dimensions[] = io_worksheet->get_row_dimensions( ). - " sheetFormatPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetformatpr - parent = lo_document ). - " defaultRowHeight - default_row_dimension = io_worksheet->get_default_row_dimension( ). - IF default_row_dimension IS BOUND. - IF default_row_dimension->get_row_height( ) >= 0. - lo_element->set_attribute_ns( name = lc_xml_attr_customheight - value = lc_xml_attr_true ). - lv_value = default_row_dimension->get_row_height( ). - ELSE. - lv_value = '12.75'. - ENDIF. - ELSE. - lv_value = '12.75'. - ENDIF. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight - value = lv_value ). - " defaultColWidth - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - lv_value = default_col_dimension->get_width( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultcolwidth - value = lv_value ). - ENDIF. - ENDIF. - " outlineLevelRow -* Excel is recalculating the outlinelevel on startup from the outline levels found in the rows -* If we place anything incorrect here it gets corrected, if don't place anything it gets added -* So no need to calculate the outlinelevel here ( at least for rows - probably for columns as well but I haven't tested yet -* LOOP AT row_dimensions ASSIGNING <row_dimension>. -* IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. -* outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). -* ENDIF. -* ENDLOOP. -* lv_value = outline_level_row. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow -* value = lv_value ). - " outlineLevelCol - LOOP AT column_dimensions ASSIGNING <column_dimension>. - IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. - outline_level_col = <column_dimension>-column_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - lv_value = outline_level_col. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelcol - value = lv_value ). -* lv_value = 0. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_dydescent -* value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). " sheetFormatPr node - - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL OR NOT column_dimensions IS INITIAL. - " cols node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cols - parent = lo_document ). - " This code have to be enhanced in order to manage also column style properties - " Now it is an out/out - IF NOT column_dimensions IS INITIAL. - LOOP AT column_dimensions ASSIGNING <column_dimension>. - " col node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). - lv_value = <column_dimension>-column_dimension->get_column_index( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - " Width - IF <column_dimension>-column_dimension->get_width( ) < 0. - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - ELSE. - lv_value = <column_dimension>-column_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lv_value ). - ENDIF. - " Column visibility - IF <column_dimension>-column_dimension->get_visible( ) = abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lc_xml_attr_true ). - ENDIF. - " Auto size? - IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_bestfit - value = lc_xml_attr_true ). - ENDIF. - " Custom width? - IF default_col_dimension IS BOUND. - IF <column_dimension>-column_dimension->get_width( ) - <> default_col_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - - ENDIF. - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - ENDIF. - " Collapsed - IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_collapsed - value = lc_xml_attr_true ). - ENDIF. - " outlineLevel - IF <column_dimension>-column_dimension->get_outline_level( ) > 0. - lv_value = <column_dimension>-column_dimension->get_outline_level( ). - - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_outlinelevel - value = lv_value ). - ENDIF. - " Style -* lv_value = <column_dimension>-column_dimension->get_xf_index( ). "del issue #157 - set column style - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). "ins issue #157 - set column style -* lv_value = me->excel->get_style_index_in_styles( lv_style_guid ). "del issue #237 - CLEAR ls_style_mapping. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* lv_style_index = ls_style_mapping-style. "del issue #295 -* IF lv_style_index > 0. "ins issue #237 - del issue #295 -* lv_value = lv_style_index - 1. "ins issue #237 - del issue #295 - IF sy-subrc = 0. "ins issue #295 - lv_value = ls_style_mapping-style. "ins issue #295 - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. "ins issue #237 - - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. -* ELSE. "del issue #157 - set sheet style ( add missing columns -* IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. "del issue #157 - set sheet style ( add missing columns -* Begin of insertion issue #157 - set sheet style ( add missing columns - ENDIF. -* Always pass through this coding - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. - DATA: lts_sorted_columns TYPE SORTED TABLE OF zexcel_cell_column WITH UNIQUE KEY table_line. - TYPES: BEGIN OF ty_missing_columns, - first_column TYPE zexcel_cell_column, - last_column TYPE zexcel_cell_column, - END OF ty_missing_columns. - DATA: t_missing_columns TYPE STANDARD TABLE OF ty_missing_columns WITH NON-UNIQUE DEFAULT KEY, - missing_column LIKE LINE OF t_missing_columns. - -* First collect columns that were already handled before. The rest has to be inserted now - LOOP AT column_dimensions ASSIGNING <column_dimension>. - lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-column ). - INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. - -* Now find all columns that were missing so far - missing_column-first_column = 1. - LOOP AT lts_sorted_columns INTO lv_column. - IF lv_column > missing_column-first_column. - missing_column-last_column = lv_column - 1. - APPEND missing_column TO t_missing_columns. - ENDIF. - missing_column-first_column = lv_column + 1. - ENDLOOP. - missing_column-last_column = zcl_excel_common=>c_excel_sheet_max_col. - APPEND missing_column TO t_missing_columns. -* Now apply stylesetting ( and other defaults - I copy it from above. Whoever programmed that seems to know what to do :o) - LOOP AT t_missing_columns INTO missing_column. -* End of insertion issue #157 - set column style - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). -* lv_value = zcl_excel_common=>c_excel_sheet_min_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-first_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). -* lv_value = zcl_excel_common=>c_excel_sheet_max_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-last_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. - lv_value = ls_style_mapping-style. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. "ins issue #157 - set sheet style ( add missing columns - - ENDIF. -*--------------------------------------------------------------------* -* issue #367 add feature hide columns from -*--------------------------------------------------------------------* - IF io_worksheet->zif_excel_sheet_properties~hide_columns_from IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). - lv_value = zcl_excel_common=>convert_column2int( io_worksheet->zif_excel_sheet_properties~hide_columns_from ). - CONDENSE lv_value NO-GAPS. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = '16384' ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = '1' ). - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " cols node - ENDIF. - " sheetData node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata - parent = lo_document ). - " Get column count - col_count = io_worksheet->get_highest_column( ). - " Get autofilter -* lv_guid = io_worksheet->get_guid( ) . - lo_autofilters = excel->get_autofilters_reference( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = io_worksheet->get_guid( ) ) . - IF lo_autofilter IS BOUND. - lt_values = lo_autofilter->get_values( ) . - ls_area = lo_autofilter->get_filter_area( ) . - l_autofilter_hidden = abap_true. " First defautl is not showing - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - start -*--------------------------------------------------------------------* -* Build table to hold all table-areas attached to this sheet - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). - ls_table_area-right = lo_table->get_right_column_integer( ). - ls_table_area-top = lo_table->settings-top_left_row. - ls_table_area-bottom = lo_table->get_bottom_row_integer( ). - INSERT ls_table_area INTO TABLE lt_table_areas. - ENDWHILE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end -*--------------------------------------------------------------------* -* We have problems when the first rows or trailing rows are not set but we have rowinformation -* to solve this we add dummycontent into first and last line that will not be set -* Set first line if necessary - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = 1. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = 1. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. -* Set last line if necessary -* Last row with cell content - lv_last_row = io_worksheet->get_highest_row( ). -* Last line with row-information set directly ( like line height, hidden-status ... ) - lts_row_dimensions = io_worksheet->get_row_dimensions( ). - SORT lts_row_dimensions BY row DESCENDING. - READ TABLE lts_row_dimensions INDEX 1 ASSIGNING <row_dimension>. - IF sy-subrc = 0 AND <row_dimension>-row > lv_last_row. - lv_last_row = <row_dimension>-row. - ENDIF. -* Last line with row-information set indirectly by row outline - lts_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lts_row_outlines ASSIGNING <ls_row_outline>. - IF <ls_row_outline>-collapsed = 'X'. - lv_current_row = <ls_row_outline>-row_to + 1. " collapsed-status may be set on following row - ELSE. - lv_current_row = <ls_row_outline>-row_to. " collapsed-status may be set on following row - ENDIF. - IF lv_current_row > lv_last_row. - lv_last_row = lv_current_row. - ENDIF. - ENDLOOP. - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = lv_last_row. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = lv_last_row. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. - - - CLEAR ls_sheet_content. - LOOP AT io_worksheet->sheet_content INTO ls_sheet_content. - IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much - CLEAR l_autofilter_hidden. - ELSE. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - ENDIF. - CLEAR ls_style_mapping. -* Create row element -* issues #346,#154, #195 - problems when we have information in row_dimension but no cell content in that row -* Get next line that may have to be added. If we have empty lines this is the next line after previous cell content -* Otherwise it is the line of the current cell content - lv_current_row = ls_last_row-cell_row + 1. - IF lv_current_row > ls_sheet_content-cell_row. - lv_current_row = ls_sheet_content-cell_row. - ENDIF. -* Fill in empty lines if necessary - assign an emtpy sheet content - lv_next_row = lv_current_row. - WHILE lv_next_row <= ls_sheet_content-cell_row. - lv_current_row = lv_next_row. - lv_next_row = lv_current_row + 1. - IF lv_current_row = ls_sheet_content-cell_row. " cell value found in this row - ASSIGN ls_sheet_content TO <ls_sheet_content>. - ELSE. -* Check if empty row is really necessary - this is basically the case when we have information in row_dimension - lo_row_dim_empty = io_worksheet->get_row_dimension( lv_current_row ). - CHECK lo_row_dim_empty->get_row_height( ) >= 0 OR - lo_row_dim_empty->get_collapsed( io_worksheet ) = abap_true OR - lo_row_dim_empty->get_outline_level( io_worksheet ) > 0 OR - lo_row_dim_empty->get_xf_index( ) <> 0. - " Dummyentry A1 - ls_sheet_content_empty-cell_row = lv_current_row. - ls_sheet_content_empty-cell_column = 1. - ASSIGN ls_sheet_content_empty TO <ls_sheet_content>. - ENDIF. - - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - IF ls_last_row-cell_row IS NOT INITIAL. - " Row visibility of previos row. - IF row_dimension->get_visible( io_worksheet ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - " Add new row - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - " r - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - " Spans - lv_value = col_count. - CONCATENATE '1:' lv_value INTO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = lv_value ). - row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). - " Do we need the row dimension attributes? - IF row_dimension->get_row_height( ) >= 0 OR - row_dimension->get_collapsed( io_worksheet ) = abap_true OR - row_dimension->get_outline_level( io_worksheet ) > 0 OR - row_dimension->get_xf_index( ) <> 0 OR - l_autofilter_hidden = abap_true. - " Row dimensions - IF row_dimension->get_row_height( ) >= 0. - lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). - lv_value = row_dimension->get_row_height( ). - lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). - ENDIF. - " Collapsed - IF row_dimension->get_collapsed( io_worksheet ) = abap_true. - lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). - ENDIF. - " Outline level - IF row_dimension->get_outline_level( io_worksheet ) > 0. - lv_value = row_dimension->get_outline_level( io_worksheet ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). - ENDIF. - " Style - IF row_dimension->get_xf_index( ) <> 0. - lv_value = row_dimension->get_xf_index( ). - lo_element_2->set_attribute_ns( name = 's' value = lv_value ). - lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). - ENDIF. - ENDIF. - IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much - CLEAR l_autofilter_hidden. - ELSE. - l_autofilter_hidden = abap_true. " First default is not showing - ENDIF. - ELSE. - - ENDIF. - ENDWHILE. - - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_r - value = <ls_sheet_content>-cell_coords ). - -* begin of change issue #157 - allow column cellstyle -* if no cellstyle is set, look into column, then into sheet - IF <ls_sheet_content>-cell_style IS NOT INITIAL. - lv_style_guid = <ls_sheet_content>-cell_style. - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - start -*--------------------------------------------------------------------* -* Check if cell in any of the table areas - LOOP AT lt_table_areas TRANSPORTING NO FIELDS WHERE top <= <ls_sheet_content>-cell_row - AND bottom >= <ls_sheet_content>-cell_row - AND left <= <ls_sheet_content>-cell_column - AND right >= <ls_sheet_content>-cell_column. - EXIT. - ENDLOOP. - IF sy-subrc = 0. - CLEAR lv_style_guid. " No style --> EXCEL will use built-in-styles as declared in the tables-section - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - end -*--------------------------------------------------------------------* - lv_column_p = zcl_excel_common=>convert_column2alpha( <ls_sheet_content>-cell_column ). - READ TABLE column_dimensions WITH KEY column = lv_column_p ASSIGNING <column_dimension>. - IF sy-subrc = 0. - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). - IF lv_style_guid IS INITIAL. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - ELSE. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - start -*--------------------------------------------------------------------* - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - end -*--------------------------------------------------------------------* - ENDIF. -* IF <ls_sheet_content>-cell_style IS NOT INITIAL. -* READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. - IF lv_style_guid IS NOT INITIAL. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* end of change issue #157 - allow column cellstyles - lv_value = ls_style_mapping-style. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_3->set_attribute_ns( name = lc_xml_attr_s - value = lv_value ). - ENDIF. - - " For cells with formula ignore the value - Excel will calculate it - IF <ls_sheet_content>-cell_formula IS NOT INITIAL. - " fomula node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_formula. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " fomula node - ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL "cell can have just style or formula - AND <ls_sheet_content>-cell_value <> lc_dummy_cell_content. - IF <ls_sheet_content>-data_type IS NOT INITIAL. - IF <ls_sheet_content>-data_type EQ 's_leading_blanks'. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = 's' ). - ELSE. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = <ls_sheet_content>-data_type ). - ENDIF. - ENDIF. - - " value node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_document ). - - IF <ls_sheet_content>-data_type EQ 's' OR <ls_sheet_content>-data_type EQ 's_leading_blanks'. - lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ELSE. - lv_value = <ls_sheet_content>-cell_value. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ENDIF. - - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDIF. - - lo_element_2->append_child( new_child = lo_element_3 ). " column node - ls_last_row = <ls_sheet_content>. - ENDLOOP. - IF sy-subrc = 0. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - " Row visibility of previos row. - IF row_dimension->get_visible( ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - DELETE io_worksheet->sheet_content WHERE cell_value = lc_dummy_cell_content. " Get rid of dummyentries - - lo_element_root->append_child( new_child = lo_element ). " sheetData node - - IF lo_autofilter IS BOUND. -* Create node autofilter - lo_element = lo_document->create_simple_element( name = lc_xml_node_autofilter - parent = lo_document ). - lv_ref = lo_autofilter->get_filter_range( ) . - CONDENSE lv_ref NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - lt_values = lo_autofilter->get_values( ) . - IF lt_values IS NOT INITIAL. -* If we filter we need to set the filter mode to 1. - lo_element_2 = lo_document->find_from_name( name = lc_xml_node_sheetpr ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_filtermode - value = '1' ). -* Create node filtercolumn - CLEAR lv_column. - LOOP AT lt_values INTO ls_values. - IF ls_values-column <> lv_column. - IF lv_column IS NOT INITIAL. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_filtercolumn - parent = lo_element ). - lv_column = ls_values-column - lo_autofilter->filter_area-col_start. - lv_value = lv_column. - CONDENSE lv_value NO-GAPS. - lo_element_2->set_attribute_ns( name = lc_xml_attr_colid - value = lv_value ). - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_filters - parent = lo_element_2 ). - lv_column = ls_values-column. - ENDIF. - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_filter - parent = lo_element_3 ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = ls_values-value ). - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDLOOP. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - IF io_worksheet->zif_excel_sheet_protection~protected EQ abap_true. - " sheetProtection node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetprotection - parent = lo_document ). - MOVE io_worksheet->zif_excel_sheet_protection~password TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_password - value = lv_value ). - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_protection~auto_filter. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_autofilter - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deletecolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deleterows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_hyperlinks. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_inserthyperlinks - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~objects. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_objects - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~pivot_tables. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_pivottables - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~scenarios. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scenarios - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_locked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectlockedcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_unlocked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectunlockedcell - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sheet. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sheet - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sort. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sort - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " Merged cells - lt_range_merge = io_worksheet->get_merge( ). - IF lt_range_merge IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_mergecells - parent = lo_document ). - DESCRIBE TABLE lt_range_merge LINES merge_count. - lv_value = merge_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - LOOP AT lt_range_merge ASSIGNING <fs_range_merge>. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_mergecell - parent = lo_document ). - - lo_element_2->set_attribute_ns( name = lc_xml_attr_ref - value = <fs_range_merge> ). - lo_element->append_child( new_child = lo_element_2 ). - lo_element_root->append_child( new_child = lo_element ). - io_worksheet->delete_merge( ). - ENDLOOP. - ENDIF. - - " Conditional formatting node - lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_style_conditional->rule IS INITIAL. - CONTINUE. - ENDIF. - lo_element = lo_document->create_simple_element( name = lc_xml_node_condformatting - parent = lo_document ). - lv_value = lo_style_conditional->get_dimension_range( ) . - lo_element->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - " cfRule node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_cfrule - parent = lo_document ). - lv_value = lo_style_conditional->rule. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = lo_style_conditional->priority. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_priority - value = lv_value ). - - CASE lo_style_conditional->rule. - " Start >> Databar by Albert Lladanosa - WHEN zcl_excel_style_conditional=>c_rule_databar. - - ls_databar = lo_style_conditional->mode_databar. - - CLEAR lt_cfvo. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_databar - parent = lo_document ). - - MOVE ls_databar-cfvo1_value TO ls_cfvo-value. - MOVE ls_databar-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_databar-cfvo2_value TO ls_cfvo-value. - MOVE ls_databar-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_databar-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - " End << Databar by Albert Lladanosa - - WHEN zcl_excel_style_conditional=>c_rule_colorscale. - - ls_colorscale = lo_style_conditional->mode_colorscale. - - CLEAR: lt_cfvo, lt_colors. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_colorscale - parent = lo_document ). - - MOVE ls_colorscale-cfvo1_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo2_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo3_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - APPEND ls_colorscale-colorrgb1 TO lt_colors. - APPEND ls_colorscale-colorrgb2 TO lt_colors. - APPEND ls_colorscale-colorrgb3 TO lt_colors. - - LOOP AT lt_cfvo INTO ls_cfvo. - - IF ls_cfvo IS INITIAL. - CONTINUE. - ENDIF. - - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - LOOP AT lt_colors INTO ls_colors. - - IF ls_colors IS INITIAL. - CONTINUE. - ENDIF. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_colors-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - ENDLOOP. - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - - WHEN zcl_excel_style_conditional=>c_rule_iconset. - - ls_iconset = lo_style_conditional->mode_iconset. - - CLEAR lt_cfvo. - " iconset node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_iconset - parent = lo_document ). - IF ls_iconset-iconset NE zcl_excel_style_conditional=>c_iconset_3trafficlights. - lv_value = ls_iconset-iconset. - lo_element_3->set_attribute_ns( name = lc_xml_attr_iconset - value = lv_value ). - ENDIF. - - " Set the showValue attribute - lv_value = ls_iconset-showvalue. - lo_element_3->set_attribute_ns( name = lc_xml_attr_showvalue - value = lv_value ). - - CASE ls_iconset-iconset. - WHEN zcl_excel_style_conditional=>c_iconset_3trafficlights2 OR - zcl_excel_style_conditional=>c_iconset_3arrows OR - zcl_excel_style_conditional=>c_iconset_3arrowsgray OR - zcl_excel_style_conditional=>c_iconset_3flags OR - zcl_excel_style_conditional=>c_iconset_3signs OR - zcl_excel_style_conditional=>c_iconset_3symbols OR - zcl_excel_style_conditional=>c_iconset_3symbols2 OR - zcl_excel_style_conditional=>c_iconset_3trafficlights OR - zcl_excel_style_conditional=>c_iconset_3trafficlights2. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_4arrows OR - zcl_excel_style_conditional=>c_iconset_4arrowsgray OR - zcl_excel_style_conditional=>c_iconset_4rating OR - zcl_excel_style_conditional=>c_iconset_4redtoblack OR - zcl_excel_style_conditional=>c_iconset_4trafficlights. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_5arrows OR - zcl_excel_style_conditional=>c_iconset_5arrowsgray OR - zcl_excel_style_conditional=>c_iconset_5quarters OR - zcl_excel_style_conditional=>c_iconset_5rating. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo5_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo5_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN OTHERS. - CLEAR lt_cfvo. - ENDCASE. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - - lo_element_2->append_child( new_child = lo_element_3 ). " iconset node - - WHEN zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis = lo_style_conditional->mode_cellis. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_cellis-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - lv_value = ls_cellis-operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_cellis-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - IF ls_cellis-formula2 IS NOT INITIAL. - lv_value = ls_cellis-formula2. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " 2nd formula node - ENDIF. - - WHEN zcl_excel_style_conditional=>c_rule_expression. - ls_expression = lo_style_conditional->mode_expression. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_expression-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_expression-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - -* begin of ins issue #366 - missing conditional rules: top10 - WHEN zcl_excel_style_conditional=>c_rule_top10. - ls_conditional_top10 = lo_style_conditional->mode_top10. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_conditional_top10-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - lv_value = ls_conditional_top10-topxx_count. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = 'rank' - value = lv_value ). - IF ls_conditional_top10-bottom = 'X'. - lo_element_2->set_attribute_ns( name = 'bottom' - value = '1' ). - ENDIF. - IF ls_conditional_top10-percent = 'X'. - lo_element_2->set_attribute_ns( name = 'percent' - value ='1' ). - ENDIF. - - WHEN zcl_excel_style_conditional=>c_rule_above_average. - ls_conditional_above_avg = lo_style_conditional->mode_above_average. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_conditional_above_avg-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - - IF ls_conditional_above_avg-above_average IS INITIAL. " = below average - lo_element_2->set_attribute_ns( name = 'aboveAverage' - value = '0' ). - ENDIF. - IF ls_conditional_above_avg-equal_average = 'X'. " = equal average also - lo_element_2->set_attribute_ns( name = 'equalAverage' - value = '1' ). - ENDIF. - IF ls_conditional_above_avg-standard_deviation <> 0. " standard deviation instead of value - lv_value = ls_conditional_above_avg-standard_deviation. - lo_element_2->set_attribute_ns( name = 'stdDev' - value = lv_value ). - ENDIF. - -* end of ins issue #366 - missing conditional rules: top10 - - ENDCASE. - - lo_element->append_child( new_child = lo_element_2 ). " cfRule node - - lo_element_root->append_child( new_child = lo_element ). " Conditional formatting node - ENDWHILE. - - IF io_worksheet->get_data_validations_size( ) GT 0. - " dataValidations node - lo_element = lo_document->create_simple_element( name = lc_xml_node_datavalidations - parent = lo_document ). - " Conditional formatting node - lo_iterator = io_worksheet->get_data_validations_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_data_validation ?= lo_iterator->if_object_collection_iterator~get_next( ). - " dataValidation node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_datavalidation - parent = lo_document ). - lv_value = lo_data_validation->type. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - IF NOT lo_data_validation->operator IS INITIAL. - lv_value = lo_data_validation->operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - ENDIF. - IF lo_data_validation->allowblank EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_allowblank - value = lv_value ). - IF lo_data_validation->showinputmessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showinputmessage - value = lv_value ). - IF lo_data_validation->showerrormessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showerrormessage - value = lv_value ). - IF NOT lo_data_validation->errortitle IS INITIAL. - lv_value = lo_data_validation->errortitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_errortitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->error IS INITIAL. - lv_value = lo_data_validation->error. - lo_element_2->set_attribute_ns( name = lc_xml_attr_error - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompttitle IS INITIAL. - lv_value = lo_data_validation->prompttitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompttitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompt IS INITIAL. - lv_value = lo_data_validation->prompt. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompt - value = lv_value ). - ENDIF. - lv_cell_row_s = lo_data_validation->cell_row. - CONDENSE lv_cell_row_s. - CONCATENATE lo_data_validation->cell_column lv_cell_row_s INTO lv_value. - IF lo_data_validation->cell_row_to IS NOT INITIAL. - lv_cell_row_s = lo_data_validation->cell_row_to. - CONDENSE lv_cell_row_s. - CONCATENATE lv_value ':' lo_data_validation->cell_column_to lv_cell_row_s INTO lv_value. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - " formula1 node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula1 - parent = lo_document ). - lv_value = lo_data_validation->formula1. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula1 node - " formula2 node - IF NOT lo_data_validation->formula2 IS INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula2 - parent = lo_document ). - lv_value = lo_data_validation->formula2. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula2 node - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). " dataValidation node - ENDWHILE. - lo_element_root->append_child( new_child = lo_element ). " dataValidations node - ENDIF. - - " Hyperlinks - DATA: lv_hyperlinks_count TYPE i, - lo_link TYPE REF TO zcl_excel_hyperlink. - - lv_hyperlinks_count = io_worksheet->get_hyperlinks_size( ). - IF lv_hyperlinks_count > 0. - lo_element = lo_document->create_simple_element( name = 'hyperlinks' - parent = lo_document ). - - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element_2 = lo_document->create_simple_element( name = 'hyperlink' - parent = lo_element ). - - lv_value = lo_link->get_ref( ). - lo_element_2->set_attribute_ns( name = 'ref' - value = lv_value ). - - IF lo_link->is_internal( ) = abap_true. - lv_value = lo_link->get_url( ). - lo_element_2->set_attribute_ns( name = 'location' - value = lv_value ). - ELSE. - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - - " PrintOptions - IF io_worksheet->print_gridlines = abap_true OR - io_worksheet->sheet_setup->vertical_centered = abap_true OR - io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element = lo_document->create_simple_element( name = 'printOptions' - parent = lo_document ). - - IF io_worksheet->print_gridlines = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_gridlines - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element->set_attribute_ns( name = 'horizontalCentered' - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_centered = abap_true. - lo_element->set_attribute_ns( name = 'verticalCentered' - value = 'true' ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - " pageMargins node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_document ). - - lv_value = io_worksheet->sheet_setup->margin_left. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_left - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_right. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_right - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_top. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_top - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_bottom. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_bottom - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_header. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_header - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_footer. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_footer - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). " pageMargins node - -* pageSetup node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_document ). - - IF io_worksheet->sheet_setup->black_and_white IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_blackandwhite - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->cell_comments IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_cellcomments - value = io_worksheet->sheet_setup->cell_comments ). - ENDIF. - - IF io_worksheet->sheet_setup->copies IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->copies. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_copies - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->draft IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_draft - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->errors IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_errors - value = io_worksheet->sheet_setup->errors ). - ENDIF. - - IF io_worksheet->sheet_setup->first_page_number IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->first_page_number. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_firstpagenumber - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->fit_to_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittoheight - value = lv_value ). - lv_value = io_worksheet->sheet_setup->fit_to_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittowidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->horizontal_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_horizontaldpi - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->orientation IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->orientation. - lo_element->set_attribute_ns( name = lc_xml_attr_orientation - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->page_order IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_pageorder - value = io_worksheet->sheet_setup->page_order ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_height IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperheight - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_size IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_size. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_papersize - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_width IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperwidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->scale IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->scale. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scale - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->use_first_page_num IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_usefirstpagenumber - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->use_printer_defaults IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_useprinterdefaults - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->vertical_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_verticaldpi - value = lv_value ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " pageSetup node - -* { headerFooter necessary? > - IF io_worksheet->sheet_setup->odd_header IS NOT INITIAL - OR io_worksheet->sheet_setup->odd_footer IS NOT INITIAL - OR io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_document ). - - " Different header/footer for odd/even pages? - IF io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_differentoddeven - value = '1' ). - ENDIF. - - " OddHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " OddFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - - lo_element_root->append_child( new_child = lo_element ). " headerFooter - - ENDIF. - -* issue #377 pagebreaks - TRY. - create_xl_sheet_pagebreaks( io_document = lo_document - io_parent = lo_element_root - io_worksheet = io_worksheet ) . - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_drawing - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute( name = 'r:id' - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -* tables - DATA lv_table_count TYPE i. - - lv_table_count = io_worksheet->get_tables_size( ). - IF lv_table_count > 0. - lo_element = lo_document->create_simple_element( name = 'tableParts' - parent = lo_document ). - lv_value = lv_table_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element_2 = lo_document->create_simple_element( name = 'tablePart' - parent = lo_element ). - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - - ENDIF. - - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_sheet_pagebreaks. - DATA: lo_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks, - lt_pagebreaks TYPE zcl_excel_worksheet_pagebreaks=>tt_pagebreak_at, - lt_rows TYPE HASHED TABLE OF int4 WITH UNIQUE KEY table_line, - lt_columns TYPE HASHED TABLE OF int4 WITH UNIQUE KEY table_line, - - lo_node_rowbreaks TYPE REF TO if_ixml_element, - lo_node_colbreaks TYPE REF TO if_ixml_element, - lo_node_break TYPE REF TO if_ixml_element, - - lv_value TYPE string. - - - FIELD-SYMBOLS: <ls_pagebreak> LIKE LINE OF lt_pagebreaks. - - lo_pagebreaks = io_worksheet->get_pagebreaks( ). - CHECK lo_pagebreaks IS BOUND. - - lt_pagebreaks = lo_pagebreaks->get_all_pagebreaks( ). - CHECK lt_pagebreaks IS NOT INITIAL. " No need to proceed if don't have any pagebreaks. - - lo_node_rowbreaks = io_document->create_simple_element( name = 'rowBreaks' - parent = io_document ). - - lo_node_colbreaks = io_document->create_simple_element( name = 'colBreaks' - parent = io_document ). - - - LOOP AT lt_pagebreaks ASSIGNING <ls_pagebreak>. - -* Count how many rows and columns need to be broken - INSERT <ls_pagebreak>-cell_row INTO TABLE lt_rows. - IF sy-subrc = 0. " New - lv_value = <ls_pagebreak>-cell_row. - CONDENSE lv_value. - - lo_node_break = io_document->create_simple_element( name = 'brk' - parent = io_document ). - lo_node_break->set_attribute( name = 'id' value = lv_value ). - lo_node_break->set_attribute( name = 'man' value = '1' ). " Manual break - lo_node_break->set_attribute( name = 'max' value = '16383' ). " Max columns - - lo_node_rowbreaks->append_child( new_child = lo_node_break ). - ENDIF. - - INSERT <ls_pagebreak>-cell_column INTO TABLE lt_columns. - IF sy-subrc = 0. " New - lv_value = <ls_pagebreak>-cell_column. - CONDENSE lv_value. - - lo_node_break = io_document->create_simple_element( name = 'brk' - parent = io_document ). - lo_node_break->set_attribute( name = 'id' value = lv_value ). - lo_node_break->set_attribute( name = 'man' value = '1' ). " Manual break - lo_node_break->set_attribute( name = 'max' value = '1048575' ). " Max rows - - lo_node_colbreaks->append_child( new_child = lo_node_break ). - ENDIF. - - - ENDLOOP. - - lv_value = lines( lt_rows ). - CONDENSE lv_value. - lo_node_rowbreaks->set_attribute( name = 'count' value = lv_value ). - lo_node_rowbreaks->set_attribute( name = 'manualBreakCount' value = lv_value ). - - lv_value = lines( lt_rows ). - CONDENSE lv_value. - lo_node_colbreaks->set_attribute( name = 'count' value = lv_value ). - lo_node_colbreaks->set_attribute( name = 'manualBreakCount' value = lv_value ). - - - - - io_parent->append_child( new_child = lo_node_rowbreaks ). - io_parent->append_child( new_child = lo_node_colbreaks ). - -ENDMETHOD. - - - - - - METHOD create_xl_sheet_rels. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', - lc_xml_val_external TYPE string VALUE 'External', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', - lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_link TYPE REF TO zcl_excel_hyperlink. - - DATA: lv_value TYPE string, - lv_relation_id TYPE i, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_relation_id = 0. - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_link->is_internal( ) = abap_false. " issue #340 - don't put internal links here - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_link_tp ). - - lv_value = lo_link->get_url( ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_target_mode - value = lc_xml_val_external ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_drawing_tp ). - - lv_index_str = iv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - MOVE me->c_xl_drawings TO lv_value. - REPLACE 'xl' WITH '..' INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_table_tp ). - - lv_value = lo_table->get_name( ). - CONCATENATE '../tables/' lv_value '.xml' INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* IF io_worksheet->get_print_settings( )->is_empty( ) = abap_false. -* ADD 1 TO lv_relation_id. -* lv_value = lv_relation_id. -* CONDENSE lv_value. -* CONCATENATE 'rId' lv_value INTO lv_value. -* -* lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship -* parent = lo_document ). -* lo_element->set_attribute_ns( name = lc_xml_attr_id -* value = lv_value ). -* lo_element->set_attribute_ns( name = lc_xml_attr_type -* value = lc_xml_node_rid_printer_tp ). -* -* lv_index_str = iv_printer_index. -* CONDENSE lv_index_str NO-GAPS. -* MOVE me->c_xl_printersettings TO lv_value. -* REPLACE 'xl' WITH '..' INTO lv_value. -* REPLACE '#' WITH lv_index_str INTO lv_value. -* lo_element->set_attribute_ns( name = lc_xml_attr_target -* value = lv_value ). -* -* lo_element_root->append_child( new_child = lo_element ). -* ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_styles. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 dxfs-cellstyles are used in conditional formats: -* CellIs, Expression, top10 ( forthcoming above average as well ) -* create own method to write dsfx-cellstyle to be reuseable by all these -*--------------------------------------------------------------------* - - -** Constant node name - CONSTANTS: lc_xml_node_stylesheet TYPE string VALUE 'styleSheet', - " font - lc_xml_node_fonts TYPE string VALUE 'fonts', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - " fill - lc_xml_node_fills TYPE string VALUE 'fills', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - lc_xml_node_gradientfill TYPE string VALUE 'gradientFill', - lc_xml_node_stop TYPE string VALUE 'stop', - " borders - lc_xml_node_borders TYPE string VALUE 'borders', - lc_xml_node_border TYPE string VALUE 'border', - lc_xml_node_left TYPE string VALUE 'left', - lc_xml_node_right TYPE string VALUE 'right', - lc_xml_node_top TYPE string VALUE 'top', - lc_xml_node_bottom TYPE string VALUE 'bottom', - lc_xml_node_diagonal TYPE string VALUE 'diagonal', - " numfmt - lc_xml_node_numfmts TYPE string VALUE 'numFmts', - lc_xml_node_numfmt TYPE string VALUE 'numFmt', - " Styles - lc_xml_node_cellstylexfs TYPE string VALUE 'cellStyleXfs', - lc_xml_node_xf TYPE string VALUE 'xf', - lc_xml_node_cellxfs TYPE string VALUE 'cellXfs', - lc_xml_node_cellstyles TYPE string VALUE 'cellStyles', - lc_xml_node_cellstyle TYPE string VALUE 'cellStyle', - lc_xml_node_dxfs TYPE string VALUE 'dxfs', - lc_xml_node_dxf TYPE string VALUE 'dxf', - lc_xml_node_tablestyles TYPE string VALUE 'tableStyles', - " Colors - lc_xml_node_colors TYPE string VALUE 'colors', - lc_xml_node_indexedcolors TYPE string VALUE 'indexedColors', - lc_xml_node_rgbcolor TYPE string VALUE 'rgbColor', - lc_xml_node_mrucolors TYPE string VALUE 'mruColors', - " Alignment - lc_xml_node_alignment TYPE string VALUE 'alignment', - " Protection - lc_xml_node_protection TYPE string VALUE 'protection', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_position TYPE string VALUE 'position', - lc_xml_attr_degree TYPE string VALUE 'degree', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_attr_numfmtid TYPE string VALUE 'numFmtId', - lc_xml_attr_fontid TYPE string VALUE 'fontId', - lc_xml_attr_fillid TYPE string VALUE 'fillId', - lc_xml_attr_borderid TYPE string VALUE 'borderId', - lc_xml_attr_xfid TYPE string VALUE 'xfId', - lc_xml_attr_applynumberformat TYPE string VALUE 'applyNumberFormat', - lc_xml_attr_applyprotection TYPE string VALUE 'applyProtection', - lc_xml_attr_applyfont TYPE string VALUE 'applyFont', - lc_xml_attr_applyfill TYPE string VALUE 'applyFill', - lc_xml_attr_applyborder TYPE string VALUE 'applyBorder', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_builtinid TYPE string VALUE 'builtinId', - lc_xml_attr_defaulttablestyle TYPE string VALUE 'defaultTableStyle', - lc_xml_attr_defaultpivotstyle TYPE string VALUE 'defaultPivotStyle', - lc_xml_attr_applyalignment TYPE string VALUE 'applyAlignment', - lc_xml_attr_horizontal TYPE string VALUE 'horizontal', - lc_xml_attr_formatcode TYPE string VALUE 'formatCode', - lc_xml_attr_vertical TYPE string VALUE 'vertical', - lc_xml_attr_wraptext TYPE string VALUE 'wrapText', - lc_xml_attr_textrotation TYPE string VALUE 'textRotation', - lc_xml_attr_shrinktofit TYPE string VALUE 'shrinkToFit', - lc_xml_attr_indent TYPE string VALUE 'indent', - lc_xml_attr_locked TYPE string VALUE 'locked', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_diagonalup TYPE string VALUE 'diagonalUp', - lc_xml_attr_diagonaldown TYPE string VALUE 'diagonalDown', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_left TYPE string VALUE 'left'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_fonts TYPE REF TO if_ixml_element, - lo_element_font TYPE REF TO if_ixml_element, - lo_element_fills TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_borders TYPE REF TO if_ixml_element, - lo_element_border TYPE REF TO if_ixml_element, - lo_element_numfmts TYPE REF TO if_ixml_element, - lo_element_numfmt TYPE REF TO if_ixml_element, - lo_element_cellxfs TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator2 TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style TYPE REF TO zcl_excel_style. - - - DATA: lt_fonts TYPE zexcel_t_style_font, - ls_font TYPE zexcel_s_style_font, - lt_fills TYPE zexcel_t_style_fill, - ls_fill TYPE zexcel_s_style_fill, - lt_borders TYPE zexcel_t_style_border, - ls_border TYPE zexcel_s_style_border, - lt_numfmts TYPE zexcel_t_style_numfmt, - ls_numfmt TYPE zexcel_s_style_numfmt, - lt_protections TYPE zexcel_t_style_protection, - ls_protection TYPE zexcel_s_style_protection, - lt_alignments TYPE zexcel_t_style_alignment, - ls_alignment TYPE zexcel_s_style_alignment, - lt_cellxfs TYPE zexcel_t_cellxfs, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_styles_mapping TYPE zexcel_s_styles_mapping, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - ls_conditional_top10 TYPE zexcel_conditional_top10, - - lt_colors TYPE zexcel_t_style_color_argb, - ls_color LIKE LINE OF lt_colors. - - DATA: lv_value TYPE string, - lv_dfx_count TYPE i, - lv_fonts_count TYPE i, - lv_fills_count TYPE i, - lv_borders_count TYPE i, - lv_cellxfs_count TYPE i, - lv_index TYPE i, - lv_align_flag TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_stylesheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lo_element_fonts = lo_document->create_simple_element( name = lc_xml_node_fonts - parent = lo_document ). - - lo_element_fills = lo_document->create_simple_element( name = lc_xml_node_fills - parent = lo_document ). - - lo_element_borders = lo_document->create_simple_element( name = lc_xml_node_borders - parent = lo_document ). - - lo_element_cellxfs = lo_document->create_simple_element( name = lc_xml_node_cellxfs - parent = lo_document ). - - lo_element_numfmts = lo_document->create_simple_element( name = lc_xml_node_numfmts - parent = lo_document ). - - -* Compress styles - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_font = lo_style->font->get_structure( ). - ls_fill = lo_style->fill->get_structure( ). - ls_border = lo_style->borders->get_structure( ). - ls_alignment = lo_style->alignment->get_structure( ). - ls_protection = lo_style->protection->get_structure( ). - ls_numfmt = lo_style->number_format->get_structure( ). - - CLEAR ls_cellxfs. - - -* Compress fonts - READ TABLE lt_fonts FROM ls_font TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fontid = sy-tabix. - ELSE. - APPEND ls_font TO lt_fonts. - DESCRIBE TABLE lt_fonts LINES ls_cellxfs-fontid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fontid. - -* Compress alignment - READ TABLE lt_alignments FROM ls_alignment TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-alignmentid = sy-tabix. - ELSE. - APPEND ls_alignment TO lt_alignments. - DESCRIBE TABLE lt_alignments LINES ls_cellxfs-alignmentid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - -* Compress fills - READ TABLE lt_fills FROM ls_fill TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fillid = sy-tabix. - ELSE. - APPEND ls_fill TO lt_fills. - DESCRIBE TABLE lt_fills LINES ls_cellxfs-fillid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fillid. - -* Compress borders - READ TABLE lt_borders FROM ls_border TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-borderid = sy-tabix. - ELSE. - APPEND ls_border TO lt_borders. - DESCRIBE TABLE lt_borders LINES ls_cellxfs-borderid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-borderid. - -* Compress protection - IF ls_protection-locked EQ c_on AND ls_protection-hidden EQ c_off. - ls_cellxfs-applyprotection = 0. - ELSE. - READ TABLE lt_protections FROM ls_protection TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-protectionid = sy-tabix. - ELSE. - APPEND ls_protection TO lt_protections. - DESCRIBE TABLE lt_protections LINES ls_cellxfs-protectionid. - ENDIF. - ls_cellxfs-applyprotection = 1. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - -* Compress number formats - - "----------- - IF ls_numfmt-numfmt NE zcl_excel_style_number_format=>c_format_date_std." and ls_numfmt-NUMFMT ne 'STD_NDEC'. " ALE Changes on going - "--- - IF ls_numfmt IS NOT INITIAL. - - READ TABLE lt_numfmts FROM ls_numfmt TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-numfmtid = sy-tabix. - ELSE. - APPEND ls_numfmt TO lt_numfmts. - DESCRIBE TABLE lt_numfmts LINES ls_cellxfs-numfmtid. - ENDIF. - ADD zcl_excel_common=>c_excel_numfmt_offset TO ls_cellxfs-numfmtid. " Add OXML offset for custom styles - ls_cellxfs-applynumberformat = 1. - ELSE. - ls_cellxfs-applynumberformat = 0. - ENDIF. - "----------- " ALE changes on going - ELSE. - ls_cellxfs-applynumberformat = 1. - IF ls_numfmt-numfmt EQ zcl_excel_style_number_format=>c_format_date_std. - ls_cellxfs-numfmtid = 14. -* elseif ls_numfmt-NUMFMT eq 'STD_NDEC'. -* ls_cellxfs-numfmtid = 2. - ENDIF. - ENDIF. - "--- - - IF ls_cellxfs-fontid NE 0. - ls_cellxfs-applyfont = 1. - ELSE. - ls_cellxfs-applyfont = 0. - ENDIF. - IF ls_cellxfs-alignmentid NE 0. - ls_cellxfs-applyalignment = 1. - ELSE. - ls_cellxfs-applyalignment = 0. - ENDIF. - IF ls_cellxfs-fillid NE 0. - ls_cellxfs-applyfill = 1. - ELSE. - ls_cellxfs-applyfill = 0. - ENDIF. - IF ls_cellxfs-borderid NE 0. - ls_cellxfs-applyborder = 1. - ELSE. - ls_cellxfs-applyborder = 0. - ENDIF. - -* Remap styles - READ TABLE lt_cellxfs FROM ls_cellxfs TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_styles_mapping-style = sy-tabix. - ELSE. - APPEND ls_cellxfs TO lt_cellxfs. - DESCRIBE TABLE lt_cellxfs LINES ls_styles_mapping-style. - ENDIF. - SUBTRACT 1 FROM ls_styles_mapping-style. - ls_styles_mapping-guid = lo_style->get_guid( ). - APPEND ls_styles_mapping TO me->styles_mapping. - ENDWHILE. - - " create numfmt elements - LOOP AT lt_numfmts INTO ls_numfmt. - lo_element_numfmt = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_document ). - lv_value = sy-tabix + zcl_excel_common=>c_excel_numfmt_offset. - CONDENSE lv_value. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - lv_value = ls_numfmt-numfmt. -* REPLACE ALL OCCURRENCES OF '.' IN lv_value WITH '\.'. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_formatcode - value = lv_value ). - lo_element_numfmts->append_child( new_child = lo_element_numfmt ). - ENDLOOP. - - " create font elements - LOOP AT lt_fonts INTO ls_font. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz - parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). - - "name - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name - parent = lo_document ). - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family - parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "scheme - IF ls_font-scheme IS NOT INITIAL. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - lo_element_fonts->append_child( new_child = lo_element_font ). - ENDLOOP. - - " create fill elements - LOOP AT lt_fills INTO ls_fill. - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - - IF ls_fill-gradtype IS NOT INITIAL. - "gradient - - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_gradientfill - parent = lo_document ). - IF ls_fill-gradtype-degree IS NOT INITIAL. - lv_value = ls_fill-gradtype-degree. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_degree value = lv_value ). - ENDIF. - IF ls_fill-gradtype-type IS NOT INITIAL. - lv_value = ls_fill-gradtype-type. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_type value = lv_value ). - ENDIF. - IF ls_fill-gradtype-bottom IS NOT INITIAL. - lv_value = ls_fill-gradtype-bottom. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_bottom value = lv_value ). - ENDIF. - IF ls_fill-gradtype-top IS NOT INITIAL. - lv_value = ls_fill-gradtype-top. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_top value = lv_value ). - ENDIF. - IF ls_fill-gradtype-right IS NOT INITIAL. - lv_value = ls_fill-gradtype-right. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_right value = lv_value ). - ENDIF. - IF ls_fill-gradtype-left IS NOT INITIAL. - lv_value = ls_fill-gradtype-left. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_left value = lv_value ). - ENDIF. - - IF ls_fill-gradtype-position3 IS NOT INITIAL. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position3. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - ELSE. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - - - - - ELSE. - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - ENDIF. - - lo_element_fill->append_child( new_child = lo_sub_element )."pattern - lo_element_fills->append_child( new_child = lo_element_fill ). - ENDLOOP. - - " create border elements - LOOP AT lt_borders INTO ls_border. - lo_element_border = lo_document->create_simple_element( name = lc_xml_node_border - parent = lo_document ). - - IF ls_border-diagonalup IS NOT INITIAL. - lv_value = ls_border-diagonalup. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonalup - value = lv_value ). - ENDIF. - - IF ls_border-diagonaldown IS NOT INITIAL. - lv_value = ls_border-diagonaldown. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonaldown - value = lv_value ). - ENDIF. - - "left - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_left - parent = lo_document ). - IF ls_border-left_style IS NOT INITIAL. - lv_value = ls_border-left_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-left_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "right - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right - parent = lo_document ). - IF ls_border-right_style IS NOT INITIAL. - lv_value = ls_border-right_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-right_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "top - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top - parent = lo_document ). - IF ls_border-top_style IS NOT INITIAL. - lv_value = ls_border-top_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-top_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "bottom - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom - parent = lo_document ). - IF ls_border-bottom_style IS NOT INITIAL. - lv_value = ls_border-bottom_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-bottom_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "diagonal - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal - parent = lo_document ). - IF ls_border-diagonal_style IS NOT INITIAL. - lv_value = ls_border-diagonal_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-diagonal_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - lo_element_borders->append_child( new_child = lo_element_border ). - ENDLOOP. - - " update attribute "count" - DESCRIBE TABLE lt_fonts LINES lv_fonts_count. - MOVE lv_fonts_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fonts->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_fills LINES lv_fills_count. - MOVE lv_fills_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fills->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_borders LINES lv_borders_count. - MOVE lv_borders_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_borders->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_cellxfs LINES lv_cellxfs_count. - MOVE lv_cellxfs_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_cellxfs->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - - " Append to root node - lo_element_root->append_child( new_child = lo_element_numfmts ). - lo_element_root->append_child( new_child = lo_element_fonts ). - lo_element_root->append_child( new_child = lo_element_fills ). - lo_element_root->append_child( new_child = lo_element_borders ). - - " cellstylexfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fontid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fillid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT lt_cellxfs INTO ls_cellxfs. - lo_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - MOVE ls_cellxfs-numfmtid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - MOVE ls_cellxfs-fontid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fontid - value = lv_value ). - MOVE ls_cellxfs-fillid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fillid - value = lv_value ). - MOVE ls_cellxfs-borderid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_borderid - value = lv_value ). - MOVE ls_cellxfs-xfid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_xfid - value = lv_value ). - IF ls_cellxfs-applynumberformat EQ 1. - MOVE ls_cellxfs-applynumberformat TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applynumberformat - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfont EQ 1. - MOVE ls_cellxfs-applyfont TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfont - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfill EQ 1. - MOVE ls_cellxfs-applyfill TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfill - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyborder EQ 1. - MOVE ls_cellxfs-applyborder TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyborder - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyalignment EQ 1. " depends on each style not for all the sheet - MOVE ls_cellxfs-applyalignment TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyalignment - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_alignment - parent = lo_document ). - ADD 1 TO ls_cellxfs-alignmentid. "Table index starts from 1 - READ TABLE lt_alignments INTO ls_alignment INDEX ls_cellxfs-alignmentid. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - IF ls_alignment-horizontal IS NOT INITIAL. - MOVE ls_alignment-horizontal TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_horizontal - value = lv_value ). - ENDIF. - IF ls_alignment-vertical IS NOT INITIAL. - MOVE ls_alignment-vertical TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_vertical - value = lv_value ). - ENDIF. - IF ls_alignment-wraptext EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_wraptext - value = c_on ). - ENDIF. - IF ls_alignment-textrotation IS NOT INITIAL. - MOVE ls_alignment-textrotation TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_textrotation - value = lv_value ). - ENDIF. - IF ls_alignment-shrinktofit EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_shrinktofit - value = c_on ). - ENDIF. - IF ls_alignment-indent IS NOT INITIAL. - MOVE ls_alignment-indent TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indent - value = lv_value ). - ENDIF. - - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_cellxfs-applyprotection EQ 1. - MOVE ls_cellxfs-applyprotection TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_applyprotection - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_protection - parent = lo_document ). - ADD 1 TO ls_cellxfs-protectionid. "Table index starts from 1 - READ TABLE lt_protections INTO ls_protection INDEX ls_cellxfs-protectionid. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - IF ls_protection-locked IS NOT INITIAL. - MOVE ls_protection-locked TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_locked - value = lv_value ). - ENDIF. - IF ls_protection-hidden IS NOT INITIAL. - MOVE ls_protection-hidden TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - lo_element_cellxfs->append_child( new_child = lo_element ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element_cellxfs ). - - " cellStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_cellstyle - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = 'Normal' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xfid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - " dxfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs - parent = lo_document ). - - lo_iterator = me->excel->get_worksheets_iterator( ). - " get sheets - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - " Conditional formatting styles into exch sheet - lo_iterator2 = lo_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator2->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator2->if_object_collection_iterator~get_next( ). - CASE lo_style_conditional->rule. -* begin of change issue #366 - missing conditional rules: top10, move dfx-styles to own method - WHEN zcl_excel_style_conditional=>c_rule_cellis. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_cellis-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). - - WHEN zcl_excel_style_conditional=>c_rule_expression. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_expression-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). - - - - WHEN zcl_excel_style_conditional=>c_rule_top10. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_top10-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). - - WHEN zcl_excel_style_conditional=>c_rule_above_average. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_above_average-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). -* begin of change issue #366 - missing conditional rules: top10, move dfx-styles to own method - - WHEN OTHERS. - CONTINUE. - ENDCASE. - ENDWHILE. - ENDWHILE. - - lv_value = lv_dfx_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " tableStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaulttablestyle - value = zcl_excel_table=>builtinstyle_medium9 ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle - value = zcl_excel_table=>builtinstyle_pivot_light16 ). - lo_element_root->append_child( new_child = lo_element ). - - "write legacy color palette in case any indexed color was changed - IF excel->legacy_palette->is_modified( ) = abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_colors - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_indexedcolors - parent = lo_document ). - lo_element->append_child( new_child = lo_sub_element ). - - lt_colors = excel->legacy_palette->get_colors( ). - LOOP AT lt_colors INTO ls_color. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_rgbcolor - parent = lo_document ). - lv_value = ls_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_styles_color_node. - DATA: lo_sub_element TYPE REF TO if_ixml_element, - lv_value TYPE string. - - CONSTANTS: lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint'. - - "add node only if at least one attribute is set - CHECK is_color-rgb IS NOT INITIAL OR - is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set OR - is_color-theme <> zcl_excel_style_color=>c_theme_not_set OR - is_color-tint IS NOT INITIAL. - - lo_sub_element = io_document->create_simple_element( - name = iv_color_elem_name - parent = io_parent ). - - IF is_color-rgb IS NOT INITIAL. - lv_value = is_color-rgb. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - ENDIF. - - IF is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-indexed ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_indexed - value = lv_value ). - ENDIF. - - IF is_color-theme <> zcl_excel_style_color=>c_theme_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-theme ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_theme - value = lv_value ). - ENDIF. - - IF is_color-tint IS NOT INITIAL. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-tint ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_tint - value = lv_value ). - ENDIF. - - io_parent->append_child( new_child = lo_sub_element ). -ENDMETHOD. - - - - - METHOD create_xl_table. - - DATA: lc_xml_node_table TYPE string VALUE 'table', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_display_name TYPE string VALUE 'displayName', - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_totals TYPE string VALUE 'totalsRowShown', - " Node namespace - lc_xml_node_table_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - - lv_table_name TYPE string, - lv_id TYPE i, - lv_match TYPE i, - lv_syindex TYPE char3, - lv_ref TYPE string, - lv_value TYPE string, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_num_columns TYPE i, - ls_fieldcat TYPE zexcel_s_fieldcatalog. - - -********************************************************************** -* STEP 1: Create xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node table - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_table - parent = lo_document ). - - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_table_ns ). - - lv_id = io_table->get_id( ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_id ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - FIND ALL OCCURRENCES OF REGEX '[^_a-zA-Z0-9]' IN io_table->settings-table_name IGNORING CASE MATCH COUNT lv_match. - IF io_table->settings-table_name IS NOT INITIAL AND lv_match EQ 0. - lv_table_name = io_table->settings-table_name. - ELSE. - lv_table_name = io_table->get_name( ). - ENDIF. - lo_element_root->set_attribute_ns( name = lc_xml_attr_name - value = lv_table_name ). - - lo_element_root->set_attribute_ns( name = lc_xml_attr_display_name - value = lv_table_name ). - - lv_ref = io_table->get_reference( ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - IF io_table->has_totals( ) = abap_true. - lo_element_root->set_attribute_ns( name = 'totalsRowCount' - value = '1' ). - ELSE. - lo_element_root->set_attribute_ns( name = lc_xml_attr_totals - value = '0' ). - ENDIF. - -********************************************************************** -* STEP 4: Create subnodes - - " autoFilter - IF io_table->settings-nofilters EQ abap_false. - lo_element = lo_document->create_simple_element( name = 'autoFilter' - parent = lo_document ). - - lv_ref = io_table->get_reference( ip_include_totals_row = abap_false ). - lo_element->set_attribute_ns( name = 'ref' - value = lv_ref ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - "columns - lo_element = lo_document->create_simple_element( name = 'tableColumns' - parent = lo_document ). - -* lo_columns = io_table->get_columns( ). - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - ADD 1 TO lv_num_columns. - ENDLOOP. - - lv_value = lv_num_columns. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - lo_element2 = lo_document->create_simple_element_ns( name = 'tableColumn' - parent = lo_element ). - - lv_value = ls_fieldcat-position. - SHIFT lv_value LEFT DELETING LEADING '0'. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lv_value = ls_fieldcat-scrtext_l. - lo_element2->set_attribute_ns( name = 'name' - value = lv_value ). - - IF ls_fieldcat-totals_function IS NOT INITIAL. - lo_element2->set_attribute_ns( name = 'totalsRowFunction' - value = ls_fieldcat-totals_function ). - ENDIF. - - lo_element->append_child( new_child = lo_element2 ). - ENDLOOP. - - - lo_element = lo_document->create_simple_element( name = 'tableStyleInfo' - parent = lo_element_root ). - - lo_element->set_attribute_ns( name = 'name' - value = io_table->settings-table_style ). - - lo_element->set_attribute_ns( name = 'showFirstColumn' - value = '0' ). - - lo_element->set_attribute_ns( name = 'showLastColumn' - value = '0' ). - - IF io_table->settings-show_row_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showRowStripes' - value = lv_value ). - - IF io_table->settings-show_column_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showColumnStripes' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - method CREATE_XL_THEME. - - -* @TODO * - - DATA: lv_xl_theme TYPE string, - lv_xl_theme_01 TYPE string, - lv_xl_theme_02 TYPE string, - lv_xl_theme_03 TYPE string, - lv_xl_theme_04 TYPE string, - lv_xl_theme_05 TYPE string, - lv_xl_theme_06 TYPE string, - lv_xl_theme_07 TYPE string, - lv_xl_theme_08 TYPE string, - lv_xl_theme_09 TYPE string, - lv_xl_theme_10 TYPE string, - lv_xl_theme_11 TYPE string, - lv_xl_theme_12 TYPE string, - lv_xl_theme_13 TYPE string, - lv_xl_theme_14 TYPE string, - lv_xl_theme_15 TYPE string, - lv_xl_theme_16 TYPE string, - lv_xl_theme_17 TYPE string, - lv_xl_theme_18 TYPE string, - lv_xl_theme_19 TYPE string, - lv_xl_theme_20 TYPE string, - lv_xl_theme_21 TYPE string, - lv_xl_theme_22 TYPE string, - lv_xl_theme_23 TYPE string, - lv_xl_theme_24 TYPE string, - lv_xl_theme_25 TYPE string, - lv_xl_theme_26 TYPE string, - lv_xl_theme_27 TYPE string, - lv_xl_theme_28 TYPE string, - lv_xl_theme_29 TYPE string, - lv_xl_theme_30 TYPE string, - lv_xl_theme_31 TYPE string, - lv_xl_theme_32 TYPE string. - - lv_xl_theme_01 = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'. - lv_xl_theme_02 = '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" '. - lv_xl_theme_03 = 'lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr '. - lv_xl_theme_04 = 'val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink>'. - lv_xl_theme_05 = '<a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_06 = '<a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" '. - lv_xl_theme_07 = 'typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font '. - lv_xl_theme_08 = 'script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" '. - lv_xl_theme_09 = 'typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_10 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_11 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_12 = '<a:font script="Arab" typeface="Arial"/><a:font script="Hebr" '. - lv_xl_theme_13 = 'typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font '. - lv_xl_theme_14 = 'script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font '. - lv_xl_theme_15 = 'script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_16 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_17 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_18 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod '. - lv_xl_theme_19 = 'val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1">'. - lv_xl_theme_20 = '<a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs '. - lv_xl_theme_21 = 'pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" '. - lv_xl_theme_22 = 'algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr '. - lv_xl_theme_23 = 'val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst>'. - lv_xl_theme_24 = '<a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst>'. - lv_xl_theme_25 = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" '. - lv_xl_theme_26 = 'dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig '. - lv_xl_theme_27 = 'rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_28 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade '. - lv_xl_theme_29 = 'val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" '. - lv_xl_theme_30 = 't="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr '. - lv_xl_theme_31 = 'val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme>'. - lv_xl_theme_32 = '</a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>'. - - - CONCATENATE lv_xl_theme_01 lv_xl_theme_02 lv_xl_theme_03 lv_xl_theme_04 lv_xl_theme_05 lv_xl_theme_06 lv_xl_theme_07 lv_xl_theme_08 lv_xl_theme_09 lv_xl_theme_10 lv_xl_theme_11 lv_xl_theme_12 lv_xl_theme_13 lv_xl_theme_14 lv_xl_theme_15 - lv_xl_theme_16 lv_xl_theme_17 lv_xl_theme_18 lv_xl_theme_19 lv_xl_theme_20 lv_xl_theme_21 lv_xl_theme_22 lv_xl_theme_23 lv_xl_theme_24 lv_xl_theme_25 lv_xl_theme_26 lv_xl_theme_27 lv_xl_theme_28 lv_xl_theme_29 lv_xl_theme_30 - lv_xl_theme_31 lv_xl_theme_32 - INTO lv_xl_theme SEPARATED BY space. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - text = lv_xl_theme - IMPORTING - buffer = ep_content. - - - endmethod. - - - - METHOD create_xl_workbook. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-01 -* changes: correction of pointer to localSheetId -*--------------------------------------------------------------------* - -** Constant node name - DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', - lc_xml_node_fileversion TYPE string VALUE 'fileVersion', - lc_xml_node_workbookpr TYPE string VALUE 'workbookPr', - lc_xml_node_bookviews TYPE string VALUE 'bookViews', - lc_xml_node_workbookview TYPE string VALUE 'workbookView', - lc_xml_node_sheets TYPE string VALUE 'sheets', - lc_xml_node_sheet TYPE string VALUE 'sheet', - lc_xml_node_calcpr TYPE string VALUE 'calcPr', - lc_xml_node_workbookprotection TYPE string VALUE 'workbookProtection', - lc_xml_node_definednames TYPE string VALUE 'definedNames', - lc_xml_node_definedname TYPE string VALUE 'definedName', - " Node attributes - lc_xml_attr_appname TYPE string VALUE 'appName', - lc_xml_attr_lastedited TYPE string VALUE 'lastEdited', - lc_xml_attr_lowestedited TYPE string VALUE 'lowestEdited', - lc_xml_attr_rupbuild TYPE string VALUE 'rupBuild', - lc_xml_attr_themeversion TYPE string VALUE 'defaultThemeVersion', - lc_xml_attr_xwindow TYPE string VALUE 'xWindow', - lc_xml_attr_ywindow TYPE string VALUE 'yWindow', - lc_xml_attr_windowwidth TYPE string VALUE 'windowWidth', - lc_xml_attr_windowheight TYPE string VALUE 'windowHeight', - lc_xml_attr_activetab TYPE string VALUE 'activeTab', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_sheetid TYPE string VALUE 'sheetId', - lc_xml_attr_state TYPE string VALUE 'state', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_calcid TYPE string VALUE 'calcId', - lc_xml_attr_lockrevision TYPE string VALUE 'lockRevision', - lc_xml_attr_lockstructure TYPE string VALUE 'lockStructure', - lc_xml_attr_lockwindows TYPE string VALUE 'lockWindows', - lc_xml_attr_revisionspassword TYPE string VALUE 'revisionsPassword', - lc_xml_attr_workbookpassword TYPE string VALUE 'workbookPassword', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_localsheetid TYPE string VALUE 'localSheetId', - " Node namespace - lc_r_ns TYPE string VALUE 'r', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_range TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator_range TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - - DATA: lv_xml_node_ridx_id TYPE string, - lv_value TYPE string, - lv_syindex TYPE string, - l_guid TYPE uuid, - lv_active_sheet TYPE zexcel_active_worksheet. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_workbook - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnode - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_fileversion - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_appname - value = 'xl' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lastedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lowestedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild - value = '4506' ). - lo_element_root->append_child( new_child = lo_element ). - - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_themeversion - value = '124226' ). - lo_element_root->append_child( new_child = lo_element ). - - " workbookProtection node - IF me->excel->zif_excel_book_protection~protected EQ abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookprotection - parent = lo_document ). - MOVE me->excel->zif_excel_book_protection~workbookpassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_workbookpassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~revisionspassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_revisionspassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~lockrevision TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockrevision - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockstructure TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockstructure - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockwindows TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockwindows - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " bookviews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews - parent = lo_document ). - " bookview node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_workbookview - parent = lo_document ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xwindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_ywindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowwidth - value = '19035' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight - value = '8445' ). - " Set Active Sheet - lv_active_sheet = excel->get_active_sheet_index( ). -* issue #365 - test if sheet exists - otherwise set active worksheet to 1 - lo_worksheet = excel->get_worksheet_by_index( lv_active_sheet ). - IF lo_worksheet IS NOT BOUND. - lv_active_sheet = 1. - excel->SET_ACTIVE_SHEET_INDEX( lv_active_sheet ). - ENDIF. - IF lv_active_sheet > 1. - lv_active_sheet = lv_active_sheet - 1. - lv_value = lv_active_sheet. - CONDENSE lv_value. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_activetab - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element )." bookview node - lo_element_root->append_child( new_child = lo_element )." bookviews node - - " sheets node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets - parent = lo_document ). - lo_iterator = excel->get_worksheets_iterator( ). - - " ranges node - lo_element_range = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 + - parent = lo_document ). " issue 163 + - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " sheet node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index. " question by Stefan Schmöcker 2012-12-02: sy-index seems to do the job - but is it proven to work or purely coincedence - lv_value = lo_worksheet->get_title( ). - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_sheetid - value = lv_syindex ). - IF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_hidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'hidden' ). - ELSEIF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_veryhidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'veryHidden' ). - ENDIF. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_id - prefix = lc_r_ns - value = lv_xml_node_ridx_id ). - lo_element->append_child( new_child = lo_sub_element ). " sheet node - - " issue 163 >>> - lo_iterator_range = lo_worksheet->get_ranges_iterator( ). - -*--------------------------------------------------------------------* -* Defined names sheetlocal: Ranges, Repeat rows and columns -*--------------------------------------------------------------------* - WHILE lo_iterator_range->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator_range->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - -* lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid "del #235 Repeat rows/cols - EXCEL starts couting from zero -* value = lv_xml_node_ridx_id ). "del #235 Repeat rows/cols - and needs absolute referencing to localSheetId - lv_value = lv_syindex - 1. "ins #235 Repeat rows/cols - CONDENSE lv_value NO-GAPS. "ins #235 Repeat rows/cols - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - " issue 163 <<< - - ENDWHILE. - lo_element_root->append_child( new_child = lo_element )." sheets node - - -*--------------------------------------------------------------------* -* Defined names workbookgolbal: Ranges -*--------------------------------------------------------------------* -* " ranges node -* lo_element = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 - -* parent = lo_document ). " issue 163 - - lo_iterator = excel->get_ranges_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - -*--------------------------------------------------------------------* -* Defined names - Autofilters ( also sheetlocal ) -*--------------------------------------------------------------------* - lo_autofilters = excel->get_autofilters_reference( ). - IF lo_autofilters->is_empty( ) = abap_false. - lo_iterator = excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index - 1 . - l_guid = lo_worksheet->get_guid( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = l_guid ) . - IF lo_autofilter IS BOUND. - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lv_value = lo_autofilters->c_autofilter. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lv_syindex. - CONDENSE lv_value NO-GAPS. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - lv_value = '1'. " Always hidden - lo_sub_element->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - lv_value = lo_autofilter->get_filter_reference( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - ENDIF. - - ENDWHILE. - ENDIF. - lo_element_root->append_child( new_child = lo_element_range ). " ranges node - - - " calcPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_calcid - value = '125725' ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - method FLAG2BOOL. - - - IF ip_flag EQ abap_true. - ep_boolean = 'true'. - ELSE. - ep_boolean = 'false'. - ENDIF. - endmethod. - - - - - METHOD get_shared_string_index. - - - DATA ls_shared_string TYPE zexcel_s_shared_string. - - READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH. - ep_index = ls_shared_string-string_no. - -ENDMETHOD. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - ep_file = me->create( ). - endmethod. - - - - method CREATE. - -* .csv format with ; delimiter - - ep_excel = me->CREATE_CSV( ). - - endmethod. - - - - method CREATE_CSV. - - TYPES: BEGIN OF lty_format, - cmpname TYPE SEOCMPNAME, - attvalue TYPE SEOVALUE, - END OF lty_format. - DATA: lt_format TYPE STANDARD TABLE OF lty_format, - ls_format LIKE LINE OF lt_format, - lv_date TYPE DATS, - lv_tmp TYPE string, - lv_time TYPE CHAR08. - - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - lv_row TYPE sytabix, - lv_col TYPE sytabix, - lv_string TYPE string, - lc_value TYPE string, - lv_attrname TYPE SEOCMPNAME. - - DATA: ls_numfmt TYPE zexcel_s_style_numfmt, - lo_style TYPE REF TO zcl_excel_style. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - -* --- Retrieve supported cell format - REFRESH lt_format. - SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_format - FROM seocompodf - WHERE clsname = 'ZCL_EXCEL_STYLE_NUMBER_FORMAT' - AND typtype = 1 - AND type = 'ZEXCEL_NUMBER_FORMAT'. - -* --- Retrieve SAP date format - CLEAR ls_format. - SELECT ddtext INTO ls_format-attvalue FROM dd07t WHERE domname = 'XUDATFM' - AND ddlanguage = sy-langu. - ls_format-cmpname = 'DATE'. - CONDENSE ls_format-attvalue. - CONCATENATE '''' ls_format-attvalue '''' INTO ls_format-attvalue. - APPEND ls_format TO lt_format. - ENDSELECT. - - - LOOP AT lt_format INTO ls_format. - TRANSLATE ls_format-attvalue TO UPPER CASE. - MODIFY lt_format FROM ls_format. - ENDLOOP. - - -* STEP 1: Collect strings from the first worksheet - lo_iterator = excel->get_worksheets_iterator( ). - data: current_worksheet_title type ZEXCEL_SHEET_TITLE. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - IF worksheet_name IS NOT INITIAL. - current_worksheet_title = lo_worksheet->get_title( ). - CHECK current_worksheet_title = worksheet_name. - ELSE. - IF worksheet_index IS INITIAL. - worksheet_index = 1. - ENDIF. - CHECK worksheet_index = sy-index. - ENDIF. - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - EXIT. " Take first worksheet only - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - SORT lt_cell_data BY cell_row - cell_column. - lv_row = 1. - lv_col = 1. - CLEAR lv_string. - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - -* --- Retrieve Cell Style format and data type - CLEAR ls_numfmt. - IF <fs_sheet_content>-data_type IS INITIAL AND <fs_sheet_content>-cell_style IS NOT INITIAL. - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_style->get_guid( ) = <fs_sheet_content>-cell_style. - ls_numfmt = lo_style->number_format->get_structure( ). - EXIT. - ENDWHILE. - ENDIF. - IF <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - " determine data-type - CLEAR lv_attrname. - CONCATENATE '''' ls_numfmt-NUMFMT '''' INTO ls_numfmt-NUMFMT. - TRANSLATE ls_numfmt-numfmt TO UPPER CASE. - READ TABLE lt_format INTO ls_format WITH KEY attvalue = ls_numfmt-NUMFMT. - IF sy-subrc = 0. - lv_attrname = ls_format-cmpname. - ENDIF. - - IF lv_attrname IS NOT INITIAL. - FIND FIRST OCCURRENCE OF 'DATETIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'TIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 't'. - ELSE. - FIND FIRST OCCURRENCE OF 'DATE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'CURRENCY' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'NUMBER' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'PERCENTAGE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ENDIF. " Purcentage - ENDIF. " Number - ENDIF. " Currency - ENDIF. " Date - ENDIF. " TIME - ENDIF. " DATETIME - ENDIF. " lv_attrname IS NOT INITIAL. - ENDIF. " <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - -* --- Add empty rows - WHILE lv_row < <fs_sheet_content>-cell_row. -* CONCATENATE lv_string cl_abap_char_utilities=>newline INTO lv_string. -* CONCATENATE lv_string cl_abap_char_utilities=>cr_lf INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>eol INTO lv_string. - lv_row = lv_row + 1. - lv_col = 1. - ENDWHILE. - -* --- Add empty columns - WHILE lv_col < <fs_sheet_content>-cell_column. -* CONCATENATE lv_string ';' INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>delimiter INTO lv_string. - lv_col = lv_col + 1. - ENDWHILE. - -* ----- Use format to determine the data type and display format. - CASE <fs_sheet_content>-data_type. -* WHEN 'n' OR 'N'. -* lc_value = zcl_excel_common=>excel_number_to_string( ip_value = <fs_sheet_content>-cell_value ). - - WHEN 'd' OR 'D'. - lc_value = zcl_excel_common=>excel_string_to_date( ip_value = <fs_sheet_content>-cell_value ). - TRY. - lv_date = lc_value. - CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' - EXPORTING - DATE_INTERNAL = lv_date - IMPORTING - DATE_EXTERNAL = lv_tmp - EXCEPTIONS - DATE_INTERNAL_IS_INVALID = 1 - OTHERS = 2 - . - IF SY-SUBRC = 0. - lc_value = lv_tmp. - ENDIF. - - CATCH CX_SY_CONVERSION_NO_NUMBER. - - ENDTRY. - - WHEN 't' OR 'T'. - lc_value = zcl_excel_common=>excel_string_to_time( ip_value = <fs_sheet_content>-cell_value ). - write lc_value to lv_time USING EDIT MASK '__:__:__'. - lc_value = lv_time. - WHEN OTHERS. - lc_value = <fs_sheet_content>-cell_value. - - ENDCASE. - -* REPLACE ALL OCCURRENCES OF '"' in lc_value with '""'. - CONCATENATE zcl_excel_writer_csv=>enclosure zcl_excel_writer_csv=>enclosure INTO lv_tmp. - CONDENSE lv_tmp. - REPLACE ALL OCCURRENCES OF zcl_excel_writer_csv=>enclosure in lc_value with lv_tmp. - -* FIND FIRST OCCURRENCE OF ';' IN lc_value. - FIND FIRST OCCURRENCE OF zcl_excel_writer_csv=>delimiter IN lc_value. - IF sy-subrc = 0. - CONCATENATE lv_string zcl_excel_writer_csv=>enclosure lc_value zcl_excel_writer_csv=>enclosure INTO lv_string. - ELSE. - CONCATENATE lv_string lc_value INTO lv_string. - ENDIF. - - ENDLOOP. " AT lt_cell_data - - CLEAR ep_content. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - TEXT = lv_string -* MIMETYPE = ' ' -* ENCODING = - IMPORTING - BUFFER = ep_content - EXCEPTIONS - FAILED = 1 - OTHERS = 2 - . - - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX. - CLEAR WORKSHEET_NAME. - WORKSHEET_INDEX = i_active_worksheet. - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX_BY_NAME. - CLEAR WORKSHEET_INDEX. - WORKSHEET_NAME = i_worksheet_name. - endmethod. - - - - method SET_DELIMITER. - delimiter = ip_value. - endmethod. - - - - method SET_ENCLOSURE. - zcl_excel_writer_csv=>enclosure = ip_value. - endmethod. - - - - method SET_ENDOFLINE. - zcl_excel_writer_csv=>eol = ip_value. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - METHOD add_further_data_to_zip. - - super->add_further_data_to_zip( io_zip = io_zip ). - -* Add vbaProject.bin to zip - io_zip->add( name = me->c_xl_vbaproject - content = me->excel->zif_excel_book_vba_project~vbaproject ). - -ENDMETHOD. - - - method CREATE. - - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 9: Add vbaProject.bin to zip - lo_zip->add( name = me->c_xl_vbaproject - content = me->excel->zif_excel_book_vba_project~vbaproject ). - -********************************************************************** -* STEP 12: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - method CREATE_CONTENT_TYPES. -** Constant node name - DATA: lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.ms-excel.sheet.macroEnabled.main+xml', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - lc_xml_attr_codename TYPE string VALUE 'codeName', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_bin_ext TYPE string VALUE 'bin', - lc_xml_node_bin_ct TYPE string VALUE 'application/vnd.ms-office.vbaProject'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_contenttype TYPE string, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard contentType - ep_content = super->create_content_types( ). - -********************************************************************** -* STEP 2: modify XML adding the extension bin definition - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_bin_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_bin_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: modify XML changing the contentType of node Override /xl/workbook.xml - - lo_collection = lo_document->get_elements_by_tag_name( 'Override' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lv_contenttype = lo_element->get_attribute_ns( lc_xml_attr_partname ). - IF lv_contenttype EQ lc_xml_node_workb_pn. - lo_element->remove_attribute_ns( lc_xml_attr_contenttype ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - EXIT. - ENDIF. - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - method CREATE_XL_RELATIONSHIPS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_vba_tp TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', - " Node target - lc_xml_node_rid_vba_tg TYPE string VALUE 'vbaProject.bin'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_relationships( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 4 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_vba_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_vba_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - method CREATE_XL_SHEET. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_sheet( io_worksheet = io_worksheet - iv_active = iv_active ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - -* lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). -* lo_iterator = lo_collection->create_iterator( ). -* lo_element ?= lo_iterator->get_next( ). -* WHILE lo_element IS BOUND. -* lo_element->set_attribute_ns( name = lc_xml_attr_codename -* value = me->excel->zif_excel_book_vba_project~codename ). -* lo_element ?= lo_iterator->get_next( ). -* ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'sheetPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = io_worksheet->zif_excel_sheet_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - endmethod. - - - method CREATE_XL_WORKBOOK. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_workbook( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'workbookPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - method IF_MESSAGE~GET_LONGTEXT. - - IF me->error IS NOT INITIAL - OR me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this as longtext as well -*--------------------------------------------------------------------* - result = me->get_text( ). - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - super->if_message~get_longtext( EXPORTING - preserve_newlines = preserve_newlines - RECEIVING - result = result ). - ENDIF. - endmethod. - - - method IF_MESSAGE~GET_TEXT. - - IF me->error IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this -*--------------------------------------------------------------------* - result = me->error . - ELSEIF me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied by syst create messagetext now -*--------------------------------------------------------------------* - MESSAGE ID syst_at_raise-msgid TYPE syst_at_raise-msgty NUMBER syst_at_raise-msgno - WITH syst_at_raise-msgv1 syst_at_raise-msgv2 syst_at_raise-msgv3 syst_at_raise-msgv4 - INTO result. - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - CALL METHOD super->if_message~get_text - RECEIVING - result = result. - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_VALUE. - - ep_value = me->value. - - endmethod. - - - - method SET_RANGE_VALUE. - me->value = ip_value. - endmethod. - - - - - - - - method SET_VALUE. - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7, - lv_value TYPE string. - lv_stop_row_c = ip_stop_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_start_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - lv_value = ip_sheet_name. - me->value = zcl_excel_common=>escape_string( ip_value = lv_value ). - - CONCATENATE me->value '!$' ip_start_column '$' lv_start_row_c ':$' ip_stop_column '$' lv_stop_row_c INTO me->value. - endmethod. - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - -* Signal "not found" -class lcx_not_found implementation. - method constructor. - super->constructor( textid = textid previous = previous ). - me->error = error. - endmethod. "constructor - method if_message~get_text. - result = error. - endmethod. "if_message~get_text -endclass. "lcx_not_found IMPLEMENTATION - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - -* Signal for "Not found" -class lcx_not_found definition inheriting from cx_static_check. - public section. - data error type string. - methods constructor - importing error type string - textid type sotr_conc optional - previous type ref to cx_root optional. - methods if_message~get_text redefinition. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes -class lcl_test definition deferred. -class zcl_excel_reader_huge_file definition local friends lcl_test. - -* -class lcl_test definition for testing " #AU Risk_Level Harmless - inheriting from cl_aunit_assert. " #AU Duration Short - - private section. - data: - out type ref to zcl_excel_reader_huge_file, " object under test - excel type ref to zcl_excel, - worksheet type ref to zcl_excel_worksheet. - methods: - setup, - test_number for testing, - test_shared_string for testing, - test_shared_string_missing for testing, - test_inline_string for testing, - test_empty_cells for testing, - test_boolean for testing, - test_style for testing, - test_style_missing for testing, - test_formula for testing, - test_read_shared_strings for testing, - test_shared_string_some_empty for testing, - test_skip_to_inexistent for testing, - get_reader importing iv_xml type string returning value(eo_reader) type ref to if_sxml_reader, - assert_value_equals importing iv_row type i default 1 iv_col type i default 1 iv_value type string, - assert_formula_equals importing iv_row type i default 1 iv_col type i default 1 iv_formula type string, - assert_style_equals importing iv_row type i default 1 iv_col type i default 1 iv_style type ZEXCEL_CELL_STYLE, - assert_datatype_equals importing iv_row type i default 1 iv_col type i default 1 iv_datatype type string. - -endclass. "lcl_test DEFINITION - -* -class lcl_test implementation. - -* - method test_number. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><v>17</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `17` ). - assert_datatype_equals( `n` ). - endmethod. "test_shared_string - -* - method test_shared_string. - data lo_reader type ref to if_sxml_reader. - append `Test1` to out->shared_strings. - append `Test2` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Test2` ). - assert_datatype_equals( `s` ). - endmethod. "test_shared_string -* - method test_shared_string_missing. - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `Test` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Index to non-existent shared string should give an error`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. -* - method test_inline_string. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Alpha` ). - assert_datatype_equals( `inlineStr` ). - endmethod. "test_inline_string - -* - method test_boolean. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="b"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `1` ). - assert_datatype_equals( `b` ). - endmethod. "test_boolean - -* - method test_formula. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><f>A2*A2</f></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_formula_equals( `A2*A2` ). - assert_datatype_equals( `n` ). - endmethod. "test_formula - -* - method test_empty_cells. - -* There is no need to store an empty cell in the ABAP worksheet structure - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `` to out->shared_strings. - append `t` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>0</v></c>` & - `<c r="A2" t="inlineStr"><is><t></t></is></c>` & - `<c r="A3" t="s"><v>1</v></c>` - ). - - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). - - endmethod. - -* - method test_style. - data: - lo_reader type ref to if_sxml_reader, - lo_style type ref to zcl_excel_style, - lv_guid type ZEXCEL_CELL_STYLE. - create object lo_style. - append lo_style to out->styles. - lv_guid = lo_style->get_guid( ). - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_style_equals( lv_guid ). - - endmethod. "test_style - -* - method test_style_missing. - - data: - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Reference to non-existent style should throw an lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. "test_style - -* - method test_read_shared_strings. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. - - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - importing buffer = lv_xstring ). - lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `Bravo` to lt_exp. - - lt_act = out->read_shared_strings( lo_reader ). - - assert_equals( act = lt_act - exp = lt_exp ). - - endmethod. - -* - method test_shared_string_some_empty. - data: lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. - lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( - `<sst><si><t/></si>` & - `<si><t>Alpha</t></si>` & - `<si><t/></si>` & - `<si><t>Bravo</t></si></sst>` - ) ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `` to lt_exp, - `Bravo` to lt_exp. - - lt_act = out->read_shared_strings( lo_reader ). - - assert_equals( act = lt_act - exp = lt_exp ). - - endmethod. - - -* - method test_skip_to_inexistent. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - importing buffer = lv_xstring ). - lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - try. - out->skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ). - fail(`Skipping to non-existing element must raise lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " May inspect exception text in debugger - endtry. - endmethod. - -* - method get_reader. - data: lv_full type string, - lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring. - concatenate `<root><sheetData><row>` iv_xml `</row></sheetData></root>` into lv_full. - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = lv_full - importing buffer = lv_xstring ). - eo_reader = cl_sxml_string_reader=>create( lv_xstring ). - endmethod. "get_reader -* - method assert_value_equals. - - constants: lc_empty_string type string value is initial. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data, - <lv_value> type string. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - if sy-subrc eq 0. - assign <ls_cell_data>-cell_value to <lv_value>. - else. - assign lc_empty_string to <lv_value>. - endif. - - assert_equals( act = <lv_value> - exp = iv_value ). - - endmethod. "assert_value_equals -** - method assert_formula_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_formula - exp = iv_formula ). - - endmethod. "assert_formula_equals -* - method assert_style_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_style - exp = iv_style ). - - endmethod. -* - method assert_datatype_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-data_type - exp = iv_datatype ). - - endmethod. "assert_datatype_equals - method setup. - create object out. - create object excel. - create object worksheet - exporting - ip_excel = excel. - endmethod. "setup -endclass. "lcl_test IMPLEMENTATION - - - - - - - - - - - - - - - - method FILL_CELL_FROM_ATTRIBUTES. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_attribute( ). - if io_reader->node_type ne c_attribute. - exit. - endif. - case io_reader->name. - when `t`. - es_cell-datatype = io_reader->value. - when `s`. - if io_reader->value is not initial. - es_cell-style = get_style( io_reader->value ). - endif. - when `r`. - es_cell-coord = get_cell_coord( io_reader->value ). - endcase. - endwhile. - -endmethod. - - - - - method GET_CELL_COORD. - - zcl_excel_common=>convert_columnrow2column_a_row( - exporting - i_columnrow = iv_coord - importing - e_column = es_coord-column - e_row = es_coord-row - ). - -endmethod. - - - - - - method GET_SHARED_STRING. - data: lv_tabix type i, - lv_error type string. - lv_tabix = iv_index + 1. - read table shared_strings into ev_value index lv_tabix. - if sy-subrc ne 0. - concatenate 'Entry ' iv_index ' not found in Shared String Table' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - endif. -endmethod. - - - - - - method GET_STYLE. - - data: lv_tabix type i, - lo_style type ref to zcl_excel_style, - lv_error type string. - - if gs_buffer_style-index ne iv_index. - lv_tabix = iv_index + 1. - read table styles into lo_style index lv_tabix. - if sy-subrc ne 0. - concatenate 'Entry ' iv_index ' not found in Style Table' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - else. - gs_buffer_style-index = iv_index. - gs_buffer_style-guid = lo_style->get_guid( ). - endif. - endif. - - ev_style_guid = gs_buffer_style-guid. - -endmethod. - - - - - - method GET_SXML_READER. - - data: lv_xml type xstring. - - lv_xml = get_from_zip_archive( iv_path ). - eo_reader = cl_sxml_string_reader=>create( lv_xml ). - -endmethod. - - - method LOAD_SHARED_STRINGS. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - shared_strings = read_shared_strings( lo_reader ). - -endmethod. - - - method LOAD_WORKSHEET. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - read_worksheet_data( io_reader = lo_reader - io_worksheet = io_worksheet ). - -endmethod. - - - - - method PUT_CELL_TO_WORKSHEET. - check is_cell-value is not initial - or is_cell-formula is not initial - or is_cell-style is not initial. - call method io_worksheet->set_cell - exporting - ip_column = is_cell-column - ip_row = is_cell-row - ip_value = is_cell-value - ip_formula = is_cell-formula - ip_data_type = is_cell-datatype - ip_style = is_cell-style. -endmethod. - - - - - method read_shared_strings. - - data lv_value type string. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - if io_reader->name eq `t`. - case io_reader->node_type . - when c_element_open . - clear lv_value . - when c_node_value . - lv_value = lv_value && io_reader->value . - when c_element_close . - append lv_value to et_shared_strings. - endcase . - endif. - endwhile. - -endmethod. - - - - - - method READ_WORKSHEET_DATA. - - data: ls_cell type t_cell. - -* Skip to <sheetData> element - skip_to( iv_element_name = `sheetData` io_reader = io_reader ). - -* Main loop: Evaluate the <c> elements and its children - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - case io_reader->node_type. - when c_element_open. - if io_reader->name eq `c`. - ls_cell = fill_cell_from_attributes( io_reader ). - endif. - when c_node_value. - case io_reader->name. - when `f`. - ls_cell-formula = io_reader->value. - when `v`. - if ls_cell-datatype eq `s`. - ls_cell-value = get_shared_string( io_reader->value ). - else. - ls_cell-value = io_reader->value. - endif. - when `t` or `is`. - ls_cell-value = io_reader->value. - endcase. - when c_element_close. - case io_reader->name. - when `c`. - put_cell_to_worksheet( is_cell = ls_cell io_worksheet = io_worksheet ). - when `sheetData`. - exit. - endcase. - endcase. - endwhile. - -endmethod. - - - - - - method SKIP_TO. - - data: lv_error type string. - -* Skip forward to given element - while io_reader->name ne iv_element_name or - io_reader->node_type ne c_element_open. - io_reader->next_node( ). - if io_reader->node_type = c_end_of_stream. - concatenate 'XML error: Didn''t find element <' iv_element_name '>' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - endif. - endwhile. - - -endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD add_pagebreak. - DATA: ls_pagebreak LIKE LINE OF me->mt_pagebreaks. - - ls_pagebreak-cell_row = ip_row. - ls_pagebreak-cell_column = zcl_excel_common=>convert_column2int( ip_column ). - - INSERT ls_pagebreak INTO TABLE me->mt_pagebreaks. - - -ENDMETHOD. - - - - METHOD get_all_pagebreaks. - rt_pagebreaks = me->mt_pagebreaks. -ENDMETHOD. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - METHOD guid_create. - - TRY. - rv_guid_16 = cl_system_uuid=>if_system_uuid_static~create_uuid_x16( ). - CATCH cx_uuid_error. - ENDTRY. - -*--------------------------------------------------------------------* -* If you are on a release that does not yet have the class cl_system_uuid -* please use the following coding instead which is using the function -* call that was used before but which has been flagged as obsolete -* in newer SAP releases -*--------------------------------------------------------------------* -* -* CALL FUNCTION 'GUID_CREATE' -* IMPORTING -* ev_guid_16 = rv_guid_16. - -ENDMETHOD. - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS zcl_tc_excel DEFINITION DEFERRED. -CLASS zcl_excel DEFINITION LOCAL FRIENDS zcl_tc_excel. - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel DEFINITION FOR TESTING - DURATION SHORT - RISK LEVEL HARMLESS -. -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>zcl_Tc_Excel -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - f_cut TYPE REF TO zcl_excel. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. - METHODS: create_empty_excel FOR TESTING. - -ENDCLASS. "zcl_Tc_Excel - - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel IMPLEMENTATION. -* ================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - -*// START TEST METHODS - - METHOD create_empty_excel. -* ================================== - - DATA: lv_count TYPE i. - lv_count = f_cut->get_worksheets_size( ). - - cl_abap_unit_assert=>assert_equals( act = lv_count - exp = 1 - msg = 'Testing number of sheet' - level = if_aunit_constants=>tolerable ). - ENDMETHOD. "create_empty_excel - -*// END TEST METHODS - - -ENDCLASS. "zcl_Tc_Excel - - - - - - - - - - - - - - - - - - - - - METHOD zif_excel_book_properties~initialize. - DATA: lv_timestamp TYPE timestampl. - - me->zif_excel_book_properties~application = 'Microsoft Excel'. - me->zif_excel_book_properties~appversion = '12.0000'. - - GET TIME STAMP FIELD lv_timestamp. - me->zif_excel_book_properties~created = lv_timestamp. - me->zif_excel_book_properties~creator = sy-uname. - me->zif_excel_book_properties~description = zcl_excel=>version. - me->zif_excel_book_properties~modified = lv_timestamp. - me->zif_excel_book_properties~lastmodifiedby = sy-uname. -ENDMETHOD. - - - method ZIF_EXCEL_BOOK_PROTECTION~INITIALIZE. - me->zif_excel_book_protection~protected = zif_excel_book_protection=>c_unprotected. - me->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_unlocked. - CLEAR me->zif_excel_book_protection~workbookpassword. - CLEAR me->zif_excel_book_protection~revisionspassword. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME. - me->zif_excel_book_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_book_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_VBAPROJECT. - me->zif_excel_book_vba_project~vbaproject = ip_vbaproject. - endmethod. - - - - - - METHOD add_new_autofilter. -* Check for autofilter reference: new or overwrite; only one per sheet - ro_autofilter = autofilters->add( io_sheet ) . -ENDMETHOD. - - - - - - method ADD_NEW_DRAWING. - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_drawing - EXPORTING - ip_type = ip_type - ip_title = ip_title. - - CASE ip_type. - WHEN 'image'. - drawings->add( eo_drawing ). - WHEN 'chart'. - charts->add( eo_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - method ADD_NEW_STYLE. -* Start of deletion # issue 139 - Dateretention of cellstyles -* CREATE OBJECT eo_style. -* styles->add( eo_style ). -* End of deletion # issue 139 - Dateretention of cellstyles -* Start of insertion # issue 139 - Dateretention of cellstyles -* Create default style - CREATE OBJECT eo_style - EXPORTING - ip_guid = ip_guid. - styles->add( eo_style ). - - DATA: style2 TYPE zexcel_s_stylemapping. -* Copy to new representations - style2 = stylemapping_dynamic_style( eo_style ). - INSERT style2 INTO TABLE t_stylemapping1. - INSERT style2 INTO TABLE t_stylemapping2. -* End of insertion # issue 139 - Dateretention of cellstyles - - endmethod. - - - - - - method ADD_NEW_WORKSHEET. - DATA: lv_guid TYPE guid_16. - -* Create default blank worksheet - CREATE OBJECT eo_worksheet - EXPORTING - ip_excel = me - ip_title = ip_title. - - worksheets->add( eo_worksheet ). - worksheets->active_worksheet = worksheets->size( ). - endmethod. - - - METHOD add_static_styles. - " # issue 139 - FIELD-SYMBOLS: <style1> LIKE LINE OF t_stylemapping1, - <style2> LIKE LINE OF t_stylemapping2. - DATA: style TYPE REF TO zcl_excel_style. - - LOOP AT me->t_stylemapping1 ASSIGNING <style1> WHERE added_to_iterator IS INITIAL. - READ TABLE me->t_stylemapping2 ASSIGNING <style2> WITH TABLE KEY guid = <style1>-guid. - CHECK sy-subrc = 0. " Should always be true since these tables are being filled parallel - - style = me->add_new_style( <style1>-guid ). - - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <style1>-complete_style - i_sourcex = <style1>-complete_stylex - CHANGING e_target = style ). - - ENDLOOP. -ENDMETHOD. - - - method CONSTRUCTOR. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style. - -* Inizialize instance objects - CREATE OBJECT security. - CREATE OBJECT worksheets. - CREATE OBJECT ranges. - CREATE OBJECT styles. - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - CREATE OBJECT legacy_palette. - CREATE OBJECT autofilters. - - me->zif_excel_book_protection~initialize( ). - me->zif_excel_book_properties~initialize( ). - - me->add_new_worksheet( ). - me->add_new_style( ). " Standard style - lo_style = me->add_new_style( ). " Standard style with fill gray125 - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_pattern_gray125. - - endmethod. - - - - - METHOD delete_worksheet. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - l_size TYPE i, - lv_errormessage TYPE string. - - l_size = get_worksheets_size( ). - IF l_size = 1. " Only 1 worksheet left --> check whether this is the worksheet to be deleted - lo_worksheet = me->get_worksheet_by_index( 1 ). - IF lo_worksheet = io_worksheet. - lv_errormessage = 'Deleting last remaining worksheet is not allowed'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - ENDIF. - - me->worksheets->remove( io_worksheet ). - -ENDMETHOD. - - - - METHOD delete_worksheet_by_index. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_errormessage TYPE string. - - lo_worksheet = me->get_worksheet_by_index( iv_index ). - IF lo_worksheet IS NOT BOUND. - lv_errormessage = 'Worksheet not existing'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - me->delete_worksheet( lo_worksheet ). - -ENDMETHOD. - - - - METHOD delete_worksheet_by_name. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_errormessage TYPE string. - - lo_worksheet = me->get_worksheet_by_name( iv_title ). - IF lo_worksheet IS NOT BOUND. - lv_errormessage = 'Worksheet not existing'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - me->delete_worksheet( lo_worksheet ). - -ENDMETHOD. - - - - method GET_ACTIVE_SHEET_INDEX. - r_active_worksheet = me->worksheets->active_worksheet. - endmethod. - - - - method GET_ACTIVE_WORKSHEET. - - eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). - - endmethod. - - - - method GET_AUTOFILTERS_REFERENCE. - - ro_autofilters = autofilters. - - endmethod. - - - - method GET_DEFAULT_STYLE. - ep_style = me->default_style. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = me->drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = me->charts->get_iterator( ). - WHEN OTHERS. - ENDCASE. - - endmethod. - - - - method GET_NEXT_TABLE_ID. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_tables_count TYPE i. - - lo_iterator = me->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_tables_count = lo_worksheet->get_tables_size( ). - ADD lv_tables_count TO ep_id. - - ENDWHILE. - - ADD 1 TO ep_id. - - endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - - METHOD get_static_cellstyle_guid. - " # issue 139 - DATA: style LIKE LINE OF me->t_stylemapping1. - - READ TABLE me->t_stylemapping1 INTO style - WITH TABLE KEY dynamic_style_guid = style-guid " no dynamic style --> look for initial guid here - complete_style = ip_cstyle_complete - complete_stylex = ip_cstylex_complete. - IF sy-subrc <> 0. - style-complete_style = ip_cstyle_complete. - style-complete_stylex = ip_cstylex_complete. -* CALL FUNCTION 'GUID_CREATE' -* IMPORTING -* ev_guid_16 = style-guid. - style-guid = zcl_excel_obsolete_func_wrap=>guid_create( ). - INSERT style INTO TABLE me->t_stylemapping1. - INSERT style INTO TABLE me->t_stylemapping2. - - ENDIF. - - ep_guid = style-guid. -ENDMETHOD. - - - - method GET_STYLES_ITERATOR. - - eo_iterator = me->styles->get_iterator( ). - - endmethod. - - - - - - method GET_STYLE_INDEX_IN_STYLES. - DATA: index TYPE syindex. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style TYPE REF TO zcl_excel_style. - - CHECK ip_guid IS NOT INITIAL. - - - lo_iterator = me->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) = 'X'. - ADD 1 TO index. - lo_style ?= lo_iterator->get_next( ). - IF lo_style->get_guid( ) = ip_guid. - ep_index = index. - EXIT. - ENDIF. - ENDWHILE. - - IF ep_index IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index not found'. - else. - SUBTRACT 1 from ep_index. " In excel list starts with "0" - ENDIF. - endmethod. - - - - - - method GET_STYLE_TO_GUID. - " # issue 139 - - READ TABLE me->t_stylemapping2 INTO ep_stylemapping WITH TABLE KEY guid = ip_guid. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'GUID not found'. - ENDIF. - - IF ep_stylemapping-dynamic_style_guid IS NOT INITIAL. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = ep_stylemapping-cl_style - CHANGING e_target = ep_stylemapping-complete_style - e_targetx = ep_stylemapping-complete_stylex ). - ENDIF. - - - endmethod. - - - - method GET_WORKSHEETS_ITERATOR. - - eo_iterator = me->worksheets->get_iterator( ). - - endmethod. - - - - method GET_WORKSHEETS_NAME. - - ep_name = me->worksheets->name. - - endmethod. - - - - METHOD get_worksheets_size. - - ep_size = me->worksheets->size( ). - -ENDMETHOD. - - - - - METHOD get_worksheet_by_index. - - - DATA: lv_index TYPE zexcel_active_worksheet. - - lv_index = iv_index. - eo_worksheet = me->worksheets->get( lv_index ). - -ENDMETHOD. - - - - - METHOD get_worksheet_by_name. - - DATA: lv_index TYPE zexcel_active_worksheet, - l_size TYPE i. - - l_size = get_worksheets_size( ). - - DO l_size TIMES. - lv_index = sy-index. - eo_worksheet = me->worksheets->get( lv_index ). - IF eo_worksheet->get_title( ) = ip_sheet_name. - RETURN. - ENDIF. - ENDDO. - - CLEAR eo_worksheet. - -ENDMETHOD. - - - - - METHOD set_active_sheet_index. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_errormessage TYPE string. - -*--------------------------------------------------------------------* -* Check whether worksheet exists -*--------------------------------------------------------------------* - lo_worksheet = me->get_worksheet_by_index( i_active_worksheet ). - IF lo_worksheet IS NOT BOUND. - lv_errormessage = 'Worksheet not existing'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - me->worksheets->active_worksheet = i_active_worksheet. - -ENDMETHOD. - - - - METHOD set_active_sheet_index_by_name. - - DATA: ws_it TYPE REF TO cl_object_collection_iterator, - ws TYPE REF TO zcl_excel_worksheet, - lv_title TYPE zexcel_sheet_title, - count TYPE i VALUE 1. - - ws_it = me->worksheets->get_iterator( ). - - WHILE ws_it->if_object_collection_iterator~has_next( ) = abap_true. - ws ?= ws_it->if_object_collection_iterator~get_next( ). - lv_title = ws->get_title( ). - IF lv_title = i_worksheet_name. - me->worksheets->active_worksheet = count. - EXIT. - ENDIF. - count = count + 1. - ENDWHILE. - -ENDMETHOD. - - - - - method SET_DEFAULT_STYLE. - me->default_style = ip_style. - endmethod. - - - - - method STYLEMAPPING_DYNAMIC_STYLE. -" # issue 139 - eo_style2-dynamic_style_guid = ip_style->get_guid( ). - eo_style2-guid = eo_style2-dynamic_style_guid. - eo_style2-added_to_iterator = abap_true. - eo_style2-cl_style = ip_style. - -* don't care about attributes here, since this data may change -* dynamically - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method CONSTRUCTOR. - worksheet = io_sheet. - endmethod. - - - - method GET_FILTER_AREA. - - validate_area( ). - - rs_area = filter_area. - - endmethod. - - - - method GET_FILTER_RANGE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - - CONCATENATE l_col_start_c l_row_start_c ':' l_col_end_c l_row_end_c INTO r_range. - - endmethod. - - - - method GET_FILTER_REFERENCE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - l_value = worksheet->get_title( ) . - - r_ref = zcl_excel_common=>escape_string( ip_value = l_value ). - - CONCATENATE r_ref '!$' l_col_start_c '$' l_row_start_c ':$' l_col_end_c '$' l_row_end_c INTO r_ref. - - endmethod. - - - - method GET_VALUES. - - rt_filter = values. - - endmethod. - - - - method SET_FILTER_AREA. - - filter_area = is_area. - - endmethod. - - - - - method SET_VALUE. - DATA: ls_values TYPE zexcel_s_autofilter_values. - -* Checks a re missing. - ls_values-column = i_column. - ls_values-value = i_value. - - INSERT ls_values INTO TABLE values. -* Now we need to be sure we don't get the same value again. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. - - endmethod. - - - - method SET_VALUES. - -* Checks are missing. - values = it_values. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. - - endmethod. - - - method VALIDATE_AREA. - DATA: l_col TYPE zexcel_cell_column, - l_row TYPE zexcel_cell_row. - - l_row = worksheet->get_highest_row( ) . - l_col = worksheet->get_highest_column( ) . - - IF filter_area IS INITIAL. - filter_area-row_start = 1. - filter_area-col_start = 1. - filter_area-row_end = l_row . - filter_area-col_end = l_col . - ENDIF. - - IF filter_area-row_start < 1. - filter_area-row_start = 1. - ENDIF. - IF filter_area-col_start < 1. - filter_area-col_start = 1. - ENDIF. - IF filter_area-row_end > l_row OR - filter_area-row_end < 1. - filter_area-row_end = l_row. - ENDIF. - IF filter_area-col_end > l_col OR - filter_area-col_end < 1. - filter_area-col_end = l_col. - ENDIF. - IF filter_area-row_start >= filter_area-row_end. - filter_area-row_start = filter_area-row_end - 1. - IF filter_area-row_start < 1. - filter_area-row_start = 1. - filter_area-row_end = 2. - ENDIF. - ENDIF. - IF filter_area-col_start > filter_area-col_end. - filter_area-col_start = filter_area-col_end. - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_objects, - sheet_guid TYPE uuid, - autofilter TYPE REF TO zcl_excel_autofilter, - END OF ts_objects, - - tt_objects TYPE HASHED TABLE OF ts_objects WITH UNIQUE KEY sheet_guid. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - method ADD. - DATA: ls_autofilters TYPE ts_objects, - l_guid TYPE uuid. - l_guid = io_sheet->get_guid( ) . - READ TABLE autofilters INTO ls_autofilters WITH TABLE KEY sheet_guid = l_guid. - IF sy-subrc = 0. - ro_autofilter = ls_autofilters-autofilter. - ELSE. - CREATE OBJECT ro_autofilter - EXPORTING - io_sheet = io_sheet. - ls_autofilters-autofilter = ro_autofilter. - ls_autofilters-sheet_guid = l_guid. - INSERT ls_autofilters INTO TABLE autofilters . - ENDIF. - endmethod. - - - method CLEAR. - - REFRESH autofilters. - - endmethod. - - - - - method GET. - - DATA: ls_autofilters TYPE ts_objects. - - READ TABLE autofilters INTO ls_autofilters WITH TABLE KEY sheet_guid = i_sheet_guid. - IF sy-subrc = 0. - ro_autofilter = ls_autofilters-autofilter. - ELSE. - CLEAR ro_autofilter. - ENDIF. - - endmethod. - - - - method IS_EMPTY. - IF autofilters IS INITIAL. - r_empty = abap_true. - ENDIF. - endmethod. - - - - method REMOVE. - DATA: ls_autofilters TYPE ts_objects. - - DELETE autofilters WHERE sheet_guid = i_sheet_guid. - - endmethod. - - - - method SIZE. - DESCRIBE TABLE autofilters LINES r_size. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS lcl_excel_common_test DEFINITION DEFERRED. -CLASS zcl_excel_common DEFINITION LOCAL FRIENDS lcl_excel_common_test. - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmless - . "#AU Duration Short -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>lcl_Excel_Common_Test -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL_COMMON -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - lx_excel TYPE REF TO zcx_excel, - ls_symsg_act TYPE symsg, " actual messageinformation of exception - ls_symsg_exp TYPE symsg, " expected messageinformation of exception - f_cut TYPE REF TO zcl_excel_common. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. -* METHODS: char2hex FOR TESTING. - METHODS: convert_column2alpha FOR TESTING. - METHODS: convert_column2int FOR TESTING. - METHODS: date_to_excel_string FOR TESTING. - METHODS: encrypt_password FOR TESTING. - METHODS: excel_string_to_date FOR TESTING. - METHODS: excel_string_to_time FOR TESTING. -* METHODS: number_to_excel_string FOR TESTING. - METHODS: time_to_excel_string FOR TESTING. - METHODS: split_file FOR TESTING. - METHODS: convert_range2column_a_row FOR TESTING. - METHODS: describe_structure FOR TESTING. - METHODS: calculate_cell_distance FOR TESTING. - METHODS: shift_formula FOR TESTING. - METHODS: is_cell_in_range FOR TESTING. -ENDCLASS. "lcl_Excel_Common_Test - - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test IMPLEMENTATION. -* =========================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - - - METHOD convert_column2alpha. -* ============================ - DATA ep_column TYPE zexcel_cell_column_alpha. - -* Test 1. Simple test - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 1 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column for OXML #16,384 = XFD - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16384 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'XFD' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 0 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum index 0 is out of bounds, min column index is 1' - level = if_aunit_constants=>fatal - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16385 ). - - zcl_excel_common=>assert_differs( - act = ep_column - exp = 'XFE' - msg = 'Colum index 16385 is out of bounds, max column index is 16384' - level = if_aunit_constants=>fatal - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "convert_Column2alpha - - - METHOD convert_column2int. -* ========================== - DATA ep_column TYPE zexcel_cell_column. - -* Test 1. Basic test - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'A' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 1 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFD' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 16384 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( '' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = '0' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - CLEAR: ls_symsg_act, - ls_symsg_exp. - ls_symsg_exp-msgid = 'ZABAP2XLSX'. - ls_symsg_exp-msgno = '800'. - ls_symsg_act-msgid = lx_excel->syst_at_raise-msgid. - ls_symsg_act-msgno = lx_excel->syst_at_raise-msgno. - zcl_excel_common=>assert_equals( act = ls_symsg_act - exp = ls_symsg_exp - msg = 'Colum name should be a valid string' - level = if_aunit_constants=>fatal ). - ENDTRY. - -* Test 4. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFE' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = 16385 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum XFE is out of range' - level = if_aunit_constants=>fatal ). - ENDTRY. - ENDMETHOD. "convert_Column2int - - - METHOD date_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000101' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 1 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000228' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 59 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000301' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 61 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '99991212' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 2958446 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - DATA: lv_date TYPE d. - ep_value = zcl_excel_common=>date_to_excel_string( lv_date ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - DATA exp_value TYPE zexcel_cell_value VALUE 0. - ep_value = zcl_excel_common=>date_to_excel_string( '18991231' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = exp_value - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Dates prior of 1900 are not available in excel' - level = if_aunit_constants=>critical - ). - ENDTRY. - - ENDMETHOD. "date_To_Excel_String - - - METHOD encrypt_password. -* ======================== - DATA lv_encrypted_pwd TYPE zexcel_aes_password. - - TRY. - lv_encrypted_pwd = zcl_excel_common=>encrypt_password( 'test' ). - - zcl_excel_common=>assert_equals( - act = lv_encrypted_pwd - exp = 'CBEB' - msg = 'Wrong password encryption' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - ENDMETHOD. "encrypt_Password - - - METHOD excel_string_to_date. -* ============================ - DATA ep_value TYPE d. - - -* Test 1. Simple test -> ABAP Manage also date prior of 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '18991231' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '59' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000228' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '61' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000301' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000101' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958446' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958447' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '00000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Date - - - METHOD excel_string_to_time. -* ============================ - DATA ep_value TYPE t. - -* Test 1. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0.99999' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '235959' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Also string greater than 1 should be managed - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '4.1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '022400' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. string is not a number - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( 'NaN' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Unable to interpret time' - msg = 'Time should be a valid string' - level = if_aunit_constants=>fatal - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Time - - - METHOD time_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000001' ). - " A test directly in Excel returns the value 0.0000115740740740741000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.0000115740740741' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '235959' ). - " A test directly in Excel returns the value 0.9999884259259260000000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.9999884259259260' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000000' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '022400' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.1000000000000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - ENDMETHOD. "time_To_Excel_String - - METHOD split_file. -* ============================ - - DATA: ep_file TYPE text255, - ep_extension TYPE char10, - ep_dotextension TYPE char10. - - -* Test 1. Basic conversion - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename.xml' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = 'xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '.xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - -* Test 2. no extension - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "split_file - - METHOD convert_range2column_a_row. - DATA: lv_range TYPE string. - DATA: lv_column_start TYPE zexcel_cell_column_alpha, - lv_column_end TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row, - lv_sheet TYPE string. - -* a) input empty --> nothing to do - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 - lv_range = `'Sheet 1'!$B$6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet 1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 - lv_range = `Sheet1!B6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* d) no sheetname - just area example $B$6:$D$13 - lv_range = `$B$6:D13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - ENDMETHOD. "convert_range2column_a_row - - - METHOD describe_structure. - DATA: ls_test TYPE scarr. - DATA: lo_structdescr TYPE REF TO cl_abap_structdescr. - DATA: lt_structure TYPE ddfields. - FIELD-SYMBOLS: <line> LIKE LINE OF lt_structure. - - " Test with DDIC Type - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_test ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'MANDT' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - " Test with local defined structure having DDIC and non DDIC elements - TYPES: - BEGIN OF t_test, - carrid TYPE s_carr_id, - carrname TYPE s_carrname, - carrdesc TYPE string, - END OF t_test. - DATA: ls_ttest TYPE t_test. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_ttest ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'CARRID' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "describe_structure - - - METHOD calculate_cell_distance. - DATA: lv_offset_rows TYPE i, - lv_offset_cols TYPE i, - lv_message TYPE string. - - DEFINE macro_calculate_cell_distance. - zcl_excel_common=>calculate_cell_distance( exporting iv_reference_cell = &1 - iv_current_cell = &2 - importing ev_row_difference = lv_offset_rows - ev_col_difference = lv_offset_cols ). -* Check delta columns - concatenate 'Error calculating column difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_cols - exp = &3 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). -* Check delta rows - concatenate 'Error calculating row difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_rows - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - END-OF-DEFINITION. - - - macro_calculate_cell_distance: - 'C12' 'C12' 0 0 , " Same cell - 'C12' 'C13' 0 1 , " Shift down 1 place - 'C12' 'C25' 0 13 , " Shift down some places - 'C12' 'C11' 0 -1 , " Shift up 1 place - 'C12' 'C1' 0 -11 , " Shift up some place - 'C12' 'D12' 1 0 , " Shift right 1 place - 'C12' 'AA12' 24 0 , " Shift right some places - 'C12' 'B12' -1 0 , " Shift left 1 place - 'AA12' 'C12' -24 0 , " Shift left some place - 'AA121' 'C12' -24 -109 . " The full package. - - ENDMETHOD. "CALCULATE_CELL_DISTANCE - - METHOD shift_formula. - DATA: lv_resulting_formula TYPE string, - lv_message TYPE string, - lv_counter TYPE num8. - - DEFINE macro_shift_formula. - add 1 to lv_counter. - clear lv_resulting_formula. - try. - lv_resulting_formula = zcl_excel_common=>shift_formula( iv_reference_formula = &1 - iv_shift_cols = &2 - iv_shift_rows = &3 ). - concatenate 'Wrong result in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - catch zcx_excel. - concatenate 'Unexpected exception occurred in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - endtry. - END-OF-DEFINITION. - -* Test shifts that should result in a valid output - macro_shift_formula: - 'C17' 0 0 'C17', " Very basic check - 'C17' 2 3 'E20', " Check shift right and down - 'C17' -2 -3 'A14', " Check shift left and up - '$C$17' 1 1 '$C$17', " Fixed columns/rows - 'SUM($C17:C$23)+C30' 1 11 'SUM($C28:D$23)+D41', " Operators and Ranges, mixed fixed rows or columns - 'RNGNAME1+C7' -1 -4 'RNGNAME1+B3', " Operators and Rangename - '"Date:"&TEXT(B2)' 1 1 '"Date:"&TEXT(C3)', " String literals and string concatenation - '[TEST6.XLSX]SHEET1!A1' 1 11 '[TEST6.XLSX]SHEET1!B12', " External sheet reference - `X(B13, "KK" ) ` 1 1 `X(C14,"KK")`, " superflous blanks, multi-argument functions, literals in function, unknown functions -* 'SIN((((((B2))))))' 1 1 'SIN((((((C3))))))', " Deep nesting -* 'SIN(SIN(SIN(SIN(E22))))' 0 1 'SIN(SIN(SIN(SIN(E23))))', " Different type of deep nesting - `SIN(SIN(SIN(SIN(E22))))` 0 1 'SIN(SIN(SIN(SIN(E23))))', " same as above - but with string input instead of Char-input - 'HEUTE()' 2 5 'HEUTE()', " Functions w/o arguments, No cellreferences - '"B2"' 2 5 '"B2"', " No cellreferences - '' 2 5 '', " Empty - 'A1+$A1+A$1+$A$1+B2' -1 0 '#REF!+$A1+#REF!+$A$1+A2', " Referencing error , column only , underflow - 'A1+$A1+A$1+$A$1+B2' 0 -1 '#REF!+#REF!+A$1+$A$1+B1', " Referencing error , row only , underflow - 'A1+$A1+A$1+$A$1+B2' -1 -1 '#REF!+#REF!+#REF!+$A$1+A1'. " Referencing error , row and column , underflow - ENDMETHOD. "SHIFT_FORMULA - - METHOD is_cell_in_range. - DATA ep_cell_in_range TYPE abap_bool. - -* Test 1: upper left corner (in range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'B' - ip_row = 2 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_true - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 2: lower right corner (in range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'D' - ip_row = 4 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_true - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 3: left side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'A' - ip_row = 3 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 4: upper side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'C' - ip_row = 1 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 5: right side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'E' - ip_row = 3 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 6: lower side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'C' - ip_row = 5 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - ENDMETHOD. - -ENDCLASS. "lcl_Excel_Common_Test - - - - - - - - - - - - - - - - - - ABAP - - - - - - - - - - - - - - - - - - - - method ASSERT_DIFFERS. - DATA: ls_seoclass TYPE seoclass. - -" Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -" Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -endmethod. - - - - - - - - - - - METHOD assert_equals. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -ENDMETHOD. - - - - - - - - METHOD calculate_cell_distance. - - DATA: lv_reference_row TYPE i, - lv_reference_col_alpha TYPE zexcel_cell_column_alpha, - lv_reference_col TYPE i, - lv_current_row TYPE i, - lv_current_col_alpha TYPE zexcel_cell_column_alpha, - lv_current_col TYPE i. - -*--------------------------------------------------------------------* -* Split reference cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_reference_cell - IMPORTING - e_column = lv_reference_col_alpha - e_row = lv_reference_row ). - lv_reference_col = convert_column2int( lv_reference_col_alpha ). - -*--------------------------------------------------------------------* -* Split current cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_current_cell - IMPORTING - e_column = lv_current_col_alpha - e_row = lv_current_row ). - lv_current_col = convert_column2int( lv_current_col_alpha ). - -*--------------------------------------------------------------------* -* Calculate row and column difference -* Positive: Current cell below reference cell -* or Current cell right of reference cell -* Negative: Current cell above reference cell -* or Current cell left of reference cell -*--------------------------------------------------------------------* - ev_row_difference = lv_current_row - lv_reference_row. - ev_col_difference = lv_current_col - lv_reference_col. - -ENDMETHOD. - - - - - method CHAR2HEX. - - IF o_conv IS NOT BOUND. - o_conv = cl_abap_conv_out_ce=>create( endian = 'L' - ignore_cerr = abap_true - replacement = '#' ). - ENDIF. - - CALL METHOD o_conv->reset( ). - CALL METHOD o_conv->write( data = i_char ). - r_hex+1 = o_conv->get_buffer( ). " x'65' must be x'0065' - -endmethod. - - - METHOD class_constructor. - c_xlsx_file_filter = 'Excel Workbook (*.xlsx)|*.xlsx|'(005). -ENDMETHOD. - - - - - - METHOD convert_column2alpha. - - DATA: lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - -* Propagate zcx_excel if error occurs " issue #155 - less restrictive typing for ip_column - lv_column = convert_column2int( ip_column ). " issue #155 - less restrictive typing for ip_column - -*--------------------------------------------------------------------* -* Check whether column is in allowed range for EXCEL to handle ( 1-16384 ) -*--------------------------------------------------------------------* - IF lv_column > 16384 - OR lv_column < 1. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDIF. - -*--------------------------------------------------------------------* -* Build alpha representation of column -*--------------------------------------------------------------------* - WHILE lv_column GT 0. - - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - - ENDWHILE. - -ENDMETHOD. - - - - - - METHOD convert_column2int. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-29 -* - ... -* changes: renaming variables to naming conventions -* removing unused variables -* removing commented out code that is inactive for more then half a year -* message made to support multilinguality -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#246 - error converting lower case column names -* - Stefan Schmöcker, 2012-12-29 -* changes: translating the correct variable to upper dase -* adding missing exception if input is a number -* that is out of bounds -* adding missing exception if input contains -* illegal characters like german umlauts -*--------------------------------------------------------------------* - - DATA: lv_column TYPE zexcel_cell_column_alpha, - lv_column_c TYPE char10, - lv_column_s TYPE string, - lv_errormessage TYPE string, " Can't pass '...'(abc) to exception-class - lv_modulo TYPE i. - -*--------------------------------------------------------------------* -* This module tries to identify which column a user wants to access -* Numbers as input are just passed back, anything else will be converted -* using EXCEL nomenclatura A = 1, AA = 27, ..., XFD = 16384 -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Normalize input ( upper case , no gaps ) -*--------------------------------------------------------------------* - lv_column_c = ip_column. -* TRANSLATE lv_column TO UPPER CASE. " Fix #246 - TRANSLATE lv_column_c TO UPPER CASE. " Fix #246 - CONDENSE lv_column_c NO-GAPS. - IF lv_column_c EQ ''. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* If a number gets passed, just convert it to an integer and return -* the converted value -*--------------------------------------------------------------------* - TRY. - IF lv_column_c CO '1234567890 '. " Fix #164 - ep_column = lv_column_c. " Fix #164 -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - EXIT. - ENDIF. - CATCH cx_sy_conversion_no_number. "#EC NO_HANDLER - " Try the character-approach if approach via number has failed - ENDTRY. - -*--------------------------------------------------------------------* -* Raise error if unexpected characters turns up -*--------------------------------------------------------------------* - lv_column_s = lv_column_c. - IF lv_column_s CN sy-abcde. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* Interpret input as number to base 26 with A=1, ... Z=26 -* Raise error if unexpected character turns up -*--------------------------------------------------------------------* -* 1st character -*--------------------------------------------------------------------* - lv_column = lv_column_c. - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+0(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = lv_modulo. " Leftmost digit - -*--------------------------------------------------------------------* -* 2nd character if present -*--------------------------------------------------------------------* - CHECK lv_column+1(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+1(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if second digit is present first digit is for 26^1 - -*--------------------------------------------------------------------* -* 3rd character if present -*--------------------------------------------------------------------* - CHECK lv_column+2(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+2(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if third digit is present first digit is for 26^2 and second digit for 26^1 - -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -ENDMETHOD. - - - - - - method CONVERT_COLUMNROW2COLUMN_A_ROW. -*--------------------------------------------------------------------* - "issue #256 - replacing char processing with regex -*--------------------------------------------------------------------* -* Stefan Schmöcker, 2013-08-11 -* Allow input to be CLIKE instead of STRING -*--------------------------------------------------------------------* - - DATA: pane_cell_row_a TYPE string, - lv_columnrow type string. - - lv_columnrow = i_columnrow. " Get rid of trailing blanks - - FIND REGEX '^(\D+)(\d+)$' IN lv_columnrow SUBMATCHES e_column - pane_cell_row_a. - e_row = pane_cell_row_a. - -endmethod. - - - - - - - - - - method CONVERT_RANGE2COLUMN_A_ROW. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* added exceptionclass -* added errorhandling for invalid range -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#241 - error when sheetname contains "!" -* - sheetname should be returned unescaped -* - Stefan Schmöcker, 2012-12-07 -* changes: changed coding to support sheetnames with "!" -* unescaping sheetname -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-07 -* changes: i_range changed to clike -* e_sheet changed to clike -*--------------------------------------------------------------------* - - DATA: lv_sheet TYPE string, - lv_range TYPE string, - lv_columnrow_start TYPE string, - lv_columnrow_end TYPE string, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Split input range into sheetname and Area -* 4 cases - a) input empty --> nothing to do -* - b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 -* - c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 -* - d) no sheetname - just area example $B$6:$D$13 -*--------------------------------------------------------------------* -* Initialize output parameters - CLEAR: e_column_start, - e_column_end, - e_row_start, - e_row_end, - e_sheet. - - IF i_range IS INITIAL. " a) input empty --> nothing to do - EXIT. - - ELSEIF i_range(1) = `'`. " b) sheetname existing - starts with ' - FIND REGEX '\![^\!]*$' IN i_range MATCH OFFSET sy-fdpos. " Find last ! - IF sy-subrc = 0. - lv_sheet = i_range(sy-fdpos). - ADD 1 TO sy-fdpos. - lv_range = i_range. - SHIFT lv_range LEFT BY sy-fdpos PLACES. - ELSE. - lv_errormessage = 'Invalid range'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ELSEIF i_range CS '!'. " c) sheetname existing - does not start with ' - SPLIT i_range AT '!' INTO lv_sheet lv_range. - - ELSE. " d) no sheetname - just area - lv_range = i_range. - ENDIF. - - REPLACE ALL OCCURRENCES OF '$' IN lv_range WITH ''. - SPLIT lv_range AT ':' INTO lv_columnrow_start lv_columnrow_end. - - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_start - IMPORTING - e_column = e_column_start - e_row = e_row_start ). - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_end - IMPORTING - e_column = e_column_end - e_row = e_row_end ). - - e_sheet = unescape_string( lv_sheet ). " Return in unescaped form -endmethod. - - - - - method DATE_TO_EXCEL_STRING. - DATA: lv_date_diff TYPE i. - - CHECK ip_value IS NOT INITIAL. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ip_value > c_excel_1900_leap_year. - lv_date_diff = ip_value - c_excel_baseline_date + 2. - ELSE. - lv_date_diff = ip_value - c_excel_baseline_date + 1. - ENDIF. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_date_diff ). -endmethod. - - - - - method DESCRIBE_STRUCTURE. - DATA: lt_components TYPE abap_component_tab, - lt_comps TYPE abap_component_tab, - lo_struct TYPE REF TO cl_abap_structdescr, - ls_component TYPE abap_componentdescr, - lo_elemdescr TYPE REF TO cl_abap_elemdescr, - ls_dfies TYPE dfies, - l_position TYPE tabfdpos. - - "for DDIC structure get the info directly - IF io_struct->is_ddic_type( ) = abap_true. - rt_dfies = io_struct->get_ddic_field_list( ). - ELSE. - lt_components = io_struct->get_components( ). - - LOOP AT lt_components INTO ls_component. - structure_case( EXPORTING is_component = ls_component - CHANGING xt_components = lt_comps ) . - ENDLOOP. - LOOP AT lt_comps INTO ls_component. - CLEAR ls_dfies. - IF ls_component-type->kind = cl_abap_typedescr=>kind_elem. "E Elementary Type - ADD 1 TO l_position. - lo_elemdescr ?= ls_component-type. - IF lo_elemdescr->is_ddic_type( ) = abap_true. - ls_dfies = lo_elemdescr->get_ddic_field( ). - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ELSE. - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ls_dfies-inttype = lo_elemdescr->type_kind. - ls_dfies-leng = lo_elemdescr->length. - ls_dfies-outputlen = lo_elemdescr->length. - ls_dfies-decimals = lo_elemdescr->decimals. - ls_dfies-fieldtext = ls_component-name. - ls_dfies-reptext = ls_component-name. - ls_dfies-scrtext_s = ls_component-name. - ls_dfies-scrtext_m = ls_component-name. - ls_dfies-scrtext_l = ls_component-name. - ls_dfies-dynpfld = abap_true. - ENDIF. - INSERT ls_dfies INTO TABLE rt_dfies. - ENDIF. - ENDLOOP. - ENDIF. -endmethod. - - - - - - - - METHOD determine_resulting_formula. - - DATA: lv_row_difference TYPE i, - lv_col_difference TYPE i. - -*--------------------------------------------------------------------* -* Calculate distance of reference and current cell -*--------------------------------------------------------------------* - calculate_cell_distance( EXPORTING - iv_reference_cell = iv_reference_cell - iv_current_cell = iv_current_cell - IMPORTING - ev_row_difference = lv_row_difference - ev_col_difference = lv_col_difference ). - -*--------------------------------------------------------------------* -* and shift formula by using the row- and columndistance -*--------------------------------------------------------------------* - ev_resulting_formula = shift_formula( iv_reference_formula = iv_reference_formula - iv_shift_rows = lv_row_difference - iv_shift_cols = lv_col_difference ). - -ENDMETHOD. "determine_resulting_formula - - - - - method ENCRYPT_PASSWORD. - - DATA lv_curr_offset TYPE i. - DATA lv_curr_char TYPE c LENGTH 1. - DATA lv_curr_hex TYPE zexcel_pwd_hash. - DATA lv_pwd_len TYPE zexcel_pwd_hash. - DATA lv_pwd_hash TYPE zexcel_pwd_hash. - - CONSTANTS: - lv_0x7fff TYPE zexcel_pwd_hash VALUE '7FFF', - lv_0x0001 TYPE zexcel_pwd_hash VALUE '0001', - lv_0xce4b TYPE zexcel_pwd_hash VALUE 'CE4B'. - - DATA lv_pwd TYPE zexcel_aes_password. - - lv_pwd = i_pwd(15). - - lv_pwd_len = STRLEN( lv_pwd ). - lv_curr_offset = lv_pwd_len - 1. - - WHILE lv_curr_offset GE 0. - - lv_curr_char = lv_pwd+lv_curr_offset(1). - lv_curr_hex = char2hex( lv_curr_char ). - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex. - SUBTRACT 1 FROM lv_curr_offset. - ENDWHILE. - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b. - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len. - - WRITE lv_pwd_hash TO r_encrypted_pwd. - -endmethod. - - - - - method ESCAPE_STRING. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-08 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#242 - Support escaping for white-spaces -* - Escaping also necessary when ' encountered in input -* - Stefan Schmöcker, 2012-12-08 -* changes: switched check if escaping is necessary to regular expression -* and moved the "REPLACE" -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-08 -* changes: ip_value changed to clike -*--------------------------------------------------------------------* - DATA: lv_value TYPE string. - -*--------------------------------------------------------------------* -* There exist various situations when a space will be used to separate -* different parts of a string. When we have a string consisting spaces -* that will cause errors unless we "escape" the string by putting ' at -* the beginning and at the end of the string. -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -* Now any remaining spaces ( white-spaces or normal spaces ) should -* trigger the escaping as well as any ' -*--------------------------------------------------------------------* - lv_value = ip_value. - - - FIND REGEX `\s|'` IN lv_value. " \s finds regular and white spaces - IF sy-subrc = 0. - REPLACE ALL OCCURRENCES OF `'` IN lv_value WITH `''`. - CONCATENATE `'` lv_value `'` INTO lv_value . - ENDIF. - - ep_escaped_value = lv_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_DATE. - DATA: lv_date_int TYPE i. - - TRY. - lv_date_int = ip_value. - ep_value = lv_date_int + c_excel_baseline_date - 2. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ep_value < c_excel_1900_leap_year. - ep_value = ep_value + 1. - ENDIF. - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDTRY. -endmethod. - - - - - - method EXCEL_STRING_TO_NUMBER. - -* If we encounter anything more complicated in EXCEL we might have to extend this -* But currently this works fine - even for numbers in scientific notation - - ep_value = ip_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_TIME. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_seconds_in_day TYPE i VALUE 86400. - - TRY. - - lv_day_fraction = ip_value. - lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day. - - ep_value = lv_seconds_in_day. - - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret time'. - ENDTRY. -endmethod. - - - - - - - method FAIL. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. - -endmethod. - - - - - method GET_FIELDCATALOG. - DATA: lr_dref_tab TYPE REF TO data, - lo_salv_table TYPE REF TO cl_salv_table, - lo_salv_columns_table TYPE REF TO cl_salv_columns_table, - lt_salv_t_column_ref TYPE salv_t_column_ref, - ls_salv_t_column_ref LIKE LINE OF lt_salv_t_column_ref, - lo_salv_column_table TYPE REF TO cl_salv_column_table. - - FIELD-SYMBOLS: <tab> TYPE STANDARD TABLE. - FIELD-SYMBOLS: <fcat> LIKE LINE OF ep_fieldcatalog. - -* Get copy of IP_TABLE-structure <-- must be changeable to create salv - CREATE DATA lr_dref_tab LIKE ip_table. - ASSIGN lr_dref_tab->* TO <tab>. -* Create salv --> implicitly create fieldcat - TRY. - cl_salv_table=>factory( IMPORTING - r_salv_table = lo_salv_table - CHANGING - t_table = <tab> ). - lo_salv_columns_table = lo_salv_table->get_columns( ). - lt_salv_t_column_ref = lo_salv_columns_table->get( ). - CATCH cx_root. -* maybe some errorhandling here - just haven't made up my mind yet - ENDTRY. - -* Loop through columns and set relevant fields ( fieldname, texts ) - LOOP AT lt_salv_t_column_ref INTO ls_salv_t_column_ref. - - lo_salv_column_table ?= ls_salv_t_column_ref-r_column. - APPEND INITIAL LINE TO ep_fieldcatalog ASSIGNING <fcat>. - <fcat>-position = sy-tabix. - <fcat>-fieldname = ls_salv_t_column_ref-columnname. - <fcat>-scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ). - <fcat>-scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ). - <fcat>-scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ). - - <fcat>-dynpfld = 'X'. " What in the world would we exclude here? - IF <fcat>-position = 1. " except for the MANDT-field of most tables ( 1st column that is ) - IF lo_salv_column_table->get_ddic_datatype( ) = 'CLNT'. - CLEAR <fcat>-dynpfld. - ENDIF. - ENDIF. - -* For fields that don't a description ( i.e. defined by "field type i," ) -* just use the fieldname as description - that is better than nothing - IF <fcat>-scrtext_s IS INITIAL - AND <fcat>-scrtext_m IS INITIAL - AND <fcat>-scrtext_l IS INITIAL. - CONCATENATE 'Col:' <fcat>-fieldname INTO <fcat>-scrtext_l SEPARATED BY space. - <fcat>-scrtext_m = <fcat>-scrtext_l. - <fcat>-scrtext_s = <fcat>-scrtext_l. - ENDIF. - - ENDLOOP. - -endmethod. - - - - - - - - method IS_CELL_IN_RANGE. - DATA lv_column_start TYPE zexcel_cell_column_alpha. - DATA lv_column_end TYPE zexcel_cell_column_alpha. - DATA lv_row_start TYPE zexcel_cell_row. - DATA lv_row_end TYPE zexcel_cell_row. - DATA lv_column_start_i TYPE zexcel_cell_column. - DATA lv_column_end_i TYPE zexcel_cell_column. - DATA lv_column_i TYPE zexcel_cell_column. - - -* Split range and convert columns - convert_range2column_a_row( - exporting - i_range = ip_range - IMPORTING - e_column_start = lv_column_start - e_column_end = lv_column_end - e_row_start = lv_row_start - e_row_end = lv_row_end ). - - lv_column_start_i = convert_column2int( ip_column = lv_column_start ). - lv_column_end_i = convert_column2int( ip_column = lv_column_end ). - - lv_column_i = convert_column2int( ip_column = ip_column ). - -* Check if cell is in range - IF lv_column_i >= lv_column_start_i AND - lv_column_i <= lv_column_end_i AND - ip_row >= lv_row_start AND - ip_row <= lv_row_end. - rp_in_range = abap_true. - ENDIF. -endmethod. - - - - - method NUMBER_TO_EXCEL_STRING. - DATA: lv_value_c TYPE c LENGTH 100. - - WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN. - REPLACE ALL OCCURRENCES OF ',' IN lv_value_c WITH '.'. - - ep_value = lv_value_c. - CONDENSE ep_value. - - IF ip_value < 0. - CONCATENATE '-' ep_value INTO ep_value. - ELSEIF ip_value EQ 0. - ep_value = '0'. - ENDIF. -endmethod. - - - - - - method RECURSIVE_CLASS_TO_STRUCT. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any. - - - descr ?= cl_abap_structdescr=>describe_by_data( e_target ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_targetx TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CLEAR flag_class. -* maybe source is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'i_source->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0. - EXIT. - ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursio -* IF flag_class = abap_true. -** Only borders will be passed as unbound references. But since we want to set a value we have to create an instance -* ENDIF. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = <attribute> - CHANGING e_target = <field> - e_targetx = <fieldx> ). - WHEN OTHERS. - <field> = <attribute>. - <fieldx> = abap_true. - - ENDCASE. - ENDLOOP. - -endmethod. - - - - - - METHOD recursive_struct_to_class. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any, - <attribute_s> TYPE ANY TABLE. - - - descr ?= cl_abap_structdescr=>describe_by_data( i_source ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_sourcex TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CHECK <fieldx> CA abap_true. - CLEAR flag_class. -* maybe target is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'E_TARGET->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0.EXIT.ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursion - " To avoid dump with attribute GRADTYPE of class ZCL_EXCEL_STYLE_FILL - " quick and really dirty fix -> check the attribute name - " Border has to be initialized somewhere else - IF wa_component-name EQ 'GRADTYPE'. - flag_class = abap_false. - ENDIF. - - IF flag_class = abap_true AND <attribute> IS INITIAL. -* Only borders will be passed as unbound references. But since we want to set a value we have to create an instance - CREATE OBJECT o_border. - <attribute> = o_border. - ENDIF. - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <field> - i_sourcex = <fieldx> - CHANGING e_target = <attribute> ). -* WHEN cl_abap_structdescr=>typekind_struct2. " String -* CHECK <fieldx> = abap_true. " Marked for change -* <attribute_s> = <field>. - WHEN OTHERS. - CHECK <fieldx> = abap_true. " Marked for change - <attribute> = <field>. - - ENDCASE. - ENDLOOP. - -ENDMETHOD. - - - - - - - - METHOD shift_formula. - - CONSTANTS: lcv_operators TYPE string VALUE '+-/*^%=<>&, !', - lcv_letters TYPE string VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$', - lcv_digits TYPE string VALUE '0123456789', - lcv_cell_reference_error TYPE string VALUE '#REF!'. - - DATA: lv_tcnt TYPE i, " Counter variable - lv_tlen TYPE i, " Temp variable length - lv_cnt TYPE i, " Counter variable - lv_cnt2 TYPE i, " Counter variable - lv_offset1 TYPE i, " Character offset - lv_numchars TYPE i, " Number of characters counter - lv_tchar(1) TYPE c, " Temp character - lv_tchar2(1) TYPE c, " Temp character - lv_cur_form(2000) TYPE c, " Formula for current cell - lv_ref_cell_addr TYPE string, " Reference cell address - lv_tcol1 TYPE string, " Temp column letter - lv_tcol2 TYPE string, " Temp column letter - lv_tcoln TYPE i, " Temp column number - lv_trow1 TYPE string, " Temp row number - lv_trow2 TYPE string, " Temp row number - lv_flen TYPE i, " Length of reference formula - lv_tlen2 TYPE i, " Temp variable length - lv_substr1 TYPE string, " Substring variable - lv_abscol TYPE string, " Absolute column symbol - lv_absrow TYPE string, " Absolute row symbol - - lv_errormessage TYPE string. - - FIELD-SYMBOLS: <find_my_include> TYPE ANY. - -*--------------------------------------------------------------------* -* When copying a cell in EXCEL to another cell any inherent formulas -* are copied as well. Cell-references in the formula are being adjusted -* by the distance of the new cell to the original one -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -* §2 Identify Cell-references -* §3 Shift cell-reference -* §4 Build resulting formula -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* No distance --> Reference = resulting cell/formula -*--------------------------------------------------------------------* - IF iv_shift_cols = 0 - AND iv_shift_rows = 0. - ev_resulting_formula = iv_reference_formula. - EXIT. " done - ENDIF. - - - lv_flen = STRLEN( iv_reference_formula ). - lv_numchars = 1. - -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -*--------------------------------------------------------------------* - DO lv_flen TIMES. - - CLEAR: lv_tchar, - lv_substr1, - lv_ref_cell_addr. - lv_cnt2 = lv_cnt + 1. - IF lv_cnt2 > lv_flen. - EXIT. " Done - ENDIF. - -*--------------------------------------------------------------------* -* Here we have the current character in the formula -*--------------------------------------------------------------------* - lv_tchar = iv_reference_formula+lv_cnt(1). - -*--------------------------------------------------------------------* -* Operators or opening parenthesis will separate possible cellreferences -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators - OR lv_tchar CA '(' ) - AND lv_cnt2 = 1. - lv_substr1 = iv_reference_formula+lv_offset1(1). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - -*--------------------------------------------------------------------* -* Quoted literal text holds no cell reference --> advance to end of text -*--------------------------------------------------------------------* - IF lv_tchar EQ '"'. - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - WHILE lv_tchar NE '"'. - - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - - ENDWHILE. - lv_cnt2 = lv_cnt + 1. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - IF lv_cnt = lv_flen. - EXIT. - ENDIF. - lv_offset1 = lv_cnt. - lv_numchars = 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - lv_cnt2 = lv_cnt + 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - -*--------------------------------------------------------------------* -* Operators or parenthesis or last character in formula will separate possible cellreferences -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA '():' - OR lv_cnt2 = lv_flen. - IF lv_cnt > 0. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). -*--------------------------------------------------------------------* -* Check for text concatenation and functions -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators AND lv_tchar EQ lv_substr1 ) OR lv_tchar EQ '('. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - lv_tlen = lv_cnt2 - lv_offset1. -*--------------------------------------------------------------------* -* Exclude mathematical operators and closing parentheses -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - IF lv_cnt2 = lv_flen - AND lv_numchars = 1. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ELSE. - lv_tlen = lv_tlen - 1. - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -* Capture reference cell address -*--------------------------------------------------------------------* - TRY. - MOVE: iv_reference_formula+lv_offset1(lv_tlen) TO lv_ref_cell_addr. "Ref cell address - CATCH cx_root. - lv_errormessage = 'Internal error in Class ZCL_EXCEL_COMMON Method SHIFT_FORMULA Spot 1 '. " Change to messageclass if possible - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - -*--------------------------------------------------------------------* -* Split cell address into characters and numbers -*--------------------------------------------------------------------* - CLEAR: lv_tlen, - lv_tcnt, - lv_tcol1, - lv_trow1. - lv_tlen = STRLEN( lv_ref_cell_addr ). - IF lv_tlen <> 0. - CLEAR: lv_tcnt. - DO lv_tlen TIMES. - CLEAR: lv_tchar2. - lv_tchar2 = lv_ref_cell_addr+lv_tcnt(1). - IF lv_tchar2 CA lcv_letters. - CONCATENATE lv_tcol1 lv_tchar2 INTO lv_tcol1. - ELSEIF lv_tchar2 CA lcv_digits. - CONCATENATE lv_trow1 lv_tchar2 INTO lv_trow1. - ENDIF. - lv_tcnt = lv_tcnt + 1. - ENDDO. - ENDIF. -*--------------------------------------------------------------------* -* Check for invalid cell address -*--------------------------------------------------------------------* - IF lv_tcol1 IS INITIAL OR lv_trow1 IS INITIAL. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for range names -*--------------------------------------------------------------------* - CLEAR: lv_tlen. - lv_tlen = STRLEN( lv_tcol1 ). - IF lv_tlen GT 3. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for valid row -*--------------------------------------------------------------------* - IF lv_trow1 GT 1048576. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for absolute column or row reference -*--------------------------------------------------------------------* - CLEAR: lv_tcol2, - lv_trow2, - lv_abscol, - lv_absrow. - lv_tlen2 = STRLEN( lv_tcol1 ) - 1. - IF lv_tcol1 IS NOT INITIAL. - lv_abscol = lv_tcol1(1). - ENDIF. - IF lv_tlen2 GE 0. - lv_absrow = lv_tcol1+lv_tlen2(1). - ENDIF. - IF lv_abscol EQ '$' AND lv_absrow EQ '$'. - lv_tlen2 = lv_tlen2 - 1. - IF lv_tlen2 > 0. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ENDIF. - lv_tlen2 = lv_tlen2 + 1. - ELSEIF lv_abscol EQ '$'. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ELSEIF lv_absrow EQ '$'. - lv_tcol1 = lv_tcol1(lv_tlen2). - ENDIF. -*--------------------------------------------------------------------* -* Check for valid column -*--------------------------------------------------------------------* - TRY. - lv_tcoln = zcl_excel_common=>convert_column2int( lv_tcol1 ) + iv_shift_cols. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. -*--------------------------------------------------------------------* -* Check whether there is a referencing problem -*--------------------------------------------------------------------* - lv_trow2 = lv_trow1 + iv_shift_rows. - IF ( lv_tcoln < 1 AND lv_abscol <> '$' ) " Maybe we should add here max-column and max row-tests as well. - OR ( lv_trow2 < 1 AND lv_absrow <> '$' ). " Check how EXCEL behaves in this case -*--------------------------------------------------------------------* -* Referencing problem encountered --> set error -*--------------------------------------------------------------------* - CONCATENATE lv_cur_form lcv_cell_reference_error INTO lv_cur_form. - ELSE. -*--------------------------------------------------------------------* -* No referencing problems --> adjust row and column -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Adjust column -*--------------------------------------------------------------------* - IF lv_abscol EQ '$'. - CONCATENATE lv_cur_form lv_abscol lv_tcol1 INTO lv_cur_form. - ELSEIF iv_shift_cols EQ 0. - CONCATENATE lv_cur_form lv_tcol1 INTO lv_cur_form. - ELSE. - TRY. - lv_tcol2 = zcl_excel_common=>convert_column2alpha( lv_tcoln ). - CONCATENATE lv_cur_form lv_tcol2 INTO lv_cur_form. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* Adjust row -*--------------------------------------------------------------------* - IF lv_absrow EQ '$'. - CONCATENATE lv_cur_form lv_absrow lv_trow1 INTO lv_cur_form. - ELSEIF iv_shift_rows = 0. - CONCATENATE lv_cur_form lv_trow1 INTO lv_cur_form. -* elseif lv_trow2 < 1. -* CONCATENATE lv_cur_form lc_cell_reference_error INTO lv_cur_form. - ELSE. - CONCATENATE lv_cur_form lv_trow2 INTO lv_cur_form. - ENDIF. - ENDIF. - - lv_numchars = 0. - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - CONCATENATE lv_cur_form lv_tchar INTO lv_cur_form. - ENDIF. - lv_offset1 = lv_cnt2. - ENDIF. - ENDIF. - lv_numchars = lv_numchars + 1. - lv_cnt = lv_cnt + 1. - lv_cnt2 = lv_cnt + 1. - - ENDDO. - - - -*--------------------------------------------------------------------* -* Return resulting formula -*--------------------------------------------------------------------* - IF lv_cur_form IS NOT INITIAL. - MOVE lv_cur_form TO ev_resulting_formula. - ENDIF. - -ENDMETHOD. - - - - - method SHL01. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i VALUE 2, - lv_prev_pos TYPE i VALUE 1. - - DO 15 TIMES. - GET BIT lv_curr_pos OF i_pwd_hash INTO lv_bit. - SET BIT lv_prev_pos OF r_pwd_hash TO lv_bit. - ADD 1 TO lv_curr_pos. - ADD 1 TO lv_prev_pos. - ENDDO. - SET BIT 16 OF r_pwd_hash TO 0. - -endmethod. - - - - - method SHR14. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i, - lv_next_pos TYPE i. - - r_pwd_hash = i_pwd_hash. - - DO 14 TIMES. - lv_curr_pos = 15. - lv_next_pos = 16. - - DO 15 TIMES. - GET BIT lv_curr_pos OF r_pwd_hash INTO lv_bit. - SET BIT lv_next_pos OF r_pwd_hash TO lv_bit. - SUBTRACT 1 FROM lv_curr_pos. - SUBTRACT 1 FROM lv_next_pos. - ENDDO. - SET BIT 1 OF r_pwd_hash TO 0. - ENDDO. - -endmethod. - - - - - - - method SPLIT_FILE. - - DATA: lt_hlp TYPE TABLE OF text255, - ls_hlp TYPE text255. - - DATA: lf_ext(10) TYPE c, - lf_dot_ext(10) TYPE c. - DATA: lf_str TYPE text255, - lf_anz TYPE i, - lf_len TYPE i. -** --------------------------------------------------------------------- - - CLEAR: lt_hlp, - ep_file, - ep_extension, - ep_dotextension. - -** Split the whole file at '.' - SPLIT ip_file AT '.' INTO TABLE lt_hlp. - -** get the extenstion from the last line of table - DESCRIBE TABLE lt_hlp LINES lf_anz. - IF lf_anz <= 1. - ep_file = ip_file. - EXIT. - ENDIF. - - READ TABLE lt_hlp INTO ls_hlp INDEX lf_anz. - ep_extension = ls_hlp. - lf_ext = ls_hlp. - IF NOT lf_ext IS INITIAL. - CONCATENATE '.' lf_ext INTO lf_dot_ext. - ENDIF. - ep_dotextension = lf_dot_ext. - -** get only the filename - lf_len = strlen( ip_file ) - strlen( lf_dot_ext ). - IF lf_len > 0. - ep_file = ip_file(lf_len). - ENDIF. - -endmethod. - - - - - method STRUCTURE_CASE. - DATA: lt_comp_str TYPE abap_component_tab. - - CASE is_component-type->kind. - WHEN cl_abap_typedescr=>kind_elem. "E Elementary Type - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_table. "T Table - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_struct. "S Structure - lt_comp_str = structure_recursive( is_component = is_component ). - INSERT LINES OF lt_comp_str INTO TABLE xt_components. - WHEN OTHERS. "cl_abap_typedescr=>kind_ref or cl_abap_typedescr=>kind_class or cl_abap_typedescr=>kind_intf. -* We skip it. for now. - ENDCASE. -endmethod. - - - - - method STRUCTURE_RECURSIVE. - DATA: lo_struct TYPE REF TO cl_abap_structdescr, - lt_components TYPE abap_component_tab, - ls_components TYPE abap_componentdescr. - - REFRESH rt_components. - - lo_struct ?= is_component-type. - lt_components = lo_struct->get_components( ). - - LOOP AT lt_components INTO ls_components. - structure_case( EXPORTING is_component = ls_components - CHANGING xt_components = rt_components ) . - ENDLOOP. - -endmethod. - - - - - method TIME_TO_EXCEL_STRING. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_time_baseline TYPE t VALUE '000000', - lc_seconds_in_day TYPE i VALUE 86400. - - lv_seconds_in_day = ip_value - lc_time_baseline. - lv_day_fraction = lv_seconds_in_day / lc_seconds_in_day. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_day_fraction ). -endmethod. - - - - - - method UNESCAPE_STRING. - - CONSTANTS lcv_regex TYPE string VALUE `^'[^']` & `|` & " Beginning single ' OR - `[^']'$` & `|` & " Trailing single ' OR - `[^']'[^']`. " Single ' somewhere in between - - - DATA: lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - -*--------------------------------------------------------------------* -* This method is used to extract the "real" string from an escaped string. -* An escaped string can be identified by a beginning ' which must be -* accompanied by a trailing ' -* All '' in between beginning and trailing ' are treated as single ' -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -*--------------------------------------------------------------------* - ev_unescaped_string = iv_escaped. " Pass through if not escaped - - CHECK ev_unescaped_string IS NOT INITIAL. " Nothing to do if empty - CHECK ev_unescaped_string(1) = `'`. " Nothing to do if not escaped - -*--------------------------------------------------------------------* -* Remove leading and trailing ' -*--------------------------------------------------------------------* - REPLACE REGEX `^'(.*)'$` IN ev_unescaped_string WITH '$1'. - IF sy-subrc <> 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Any remaining single ' should not be here -*--------------------------------------------------------------------* - FIND REGEX lcv_regex IN ev_unescaped_string. - IF sy-subrc = 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Replace '' with ' -*--------------------------------------------------------------------* - REPLACE ALL OCCURRENCES OF `''` IN ev_unescaped_string WITH `'`. - - -endmethod. - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -TYPES: BEGIN OF ts_alv_types, - seoclass TYPE seoclsname, - clsname TYPE seoclsname, - END OF ts_alv_types, - tt_alv_types TYPE HASHED TABLE OF ts_alv_types WITH UNIQUE KEY seoclass. - -TYPES: BEGIN OF ts_sort_values, - fieldname TYPE fieldname, - row_int TYPE zexcel_cell_row, - value TYPE REF TO data, - new TYPE flag, - sort_level TYPE int4, - is_collapsed type flag, - END OF ts_sort_values, - - tt_sort_values TYPE HASHED TABLE OF ts_sort_values WITH UNIQUE KEY fieldname. -TYPES: BEGIN OF ts_subtotal_rows, - row_int TYPE zexcel_cell_row, - row_int_start TYPE zexcel_cell_row, - columnname TYPE fieldname, - END OF ts_subtotal_rows, - - tt_subtotal_rows TYPE HASHED TABLE OF ts_subtotal_rows WITH UNIQUE KEY row_int. - -TYPES: BEGIN OF ts_styles, - type TYPE char1, - alignment TYPE zexcel_alignment, - inttype TYPE inttype, - decimals TYPE int1, - style TYPE REF TO zcl_excel_style, - guid TYPE zexcel_cell_style, - END OF ts_styles, - - tt_styles TYPE HASHED TABLE OF ts_styles WITH UNIQUE KEY type alignment inttype decimals. - -TYPES: BEGIN OF ts_color_styles, - guid_old TYPE zexcel_cell_style, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - style_new TYPE REF TO zcl_excel_style, - END OF ts_color_styles, - - tt_color_styles TYPE HASHED TABLE OF ts_color_styles WITH UNIQUE KEY guid_old fontcolor fillcolor. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ASK_OPTION. - DATA: ls_sval TYPE sval, - lt_sval TYPE STANDARD TABLE OF sval, - l_returncode TYPE string, - lt_fields TYPE ddfields, - ls_fields TYPE dfies. - - FIELD-SYMBOLS: <fs> TYPE ANY. - - rs_option = ws_option. - - CALL FUNCTION 'DDIF_FIELDINFO_GET' - EXPORTING - tabname = 'ZEXCEL_S_CONVERTER_OPTION' -* FIELDNAME = ' ' -* LANGU = sy-langu -* LFIELDNAME = ' ' -* ALL_TYPES = ' ' -* GROUP_NAMES = ' ' -* UCLEN = -* IMPORTING -* X030L_WA = -* DDOBJTYPE = -* DFIES_WA = -* LINES_DESCR = - TABLES - dfies_tab = lt_fields -* FIXED_VALUES = - EXCEPTIONS - not_found = 1 - internal_error = 2 - OTHERS = 3 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - LOOP AT lt_fields INTO ls_fields. - ASSIGN COMPONENT ls_fields-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - CLEAR ls_sval. - ls_sval-tabname = ls_fields-tabname. - ls_sval-fieldname = ls_fields-fieldname. - ls_sval-value = <fs>. - ls_sval-field_attr = space. - ls_sval-field_obl = space. - ls_sval-comp_code = space. - ls_sval-fieldtext = ls_fields-scrtext_m. - ls_sval-comp_tab = space. - ls_sval-comp_field = space. - ls_sval-novaluehlp = space. - INSERT ls_sval INTO TABLE lt_sval. - ENDIF. - ENDLOOP. - - CALL FUNCTION 'POPUP_GET_VALUES' - EXPORTING -* NO_VALUE_CHECK = space - popup_title = 'Excel creation options'(008) -* START_COLUMN = '5' -* START_ROW = '5' - IMPORTING - returncode = l_returncode - TABLES - fields = lt_sval - EXCEPTIONS - error_in_fields = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ELSE. - IF l_returncode = 'A'. - RAISE EXCEPTION TYPE zcx_excel. - ELSE. - LOOP AT lt_sval INTO ls_sval. - ASSIGN COMPONENT ls_sval-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - <fs> = ls_sval-value. - ENDIF. - ENDLOOP. - set_option( is_option = ws_option ) . - rs_option = ws_option. - ENDIF. - ENDIF. - endmethod. - - - - - method BIND_CELLS. - -* Do we need subtotals with grouping - READ TABLE wt_fieldcatalog TRANSPORTING NO FIELDS WITH KEY is_subtotalled = abap_true. - IF sy-subrc = 0 . - r_freeze_col = loop_subtotal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ELSE. - r_freeze_col = loop_normal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ENDIF. - - endmethod. - - - - - - method BIND_TABLE. - data: lt_field_catalog type zexcel_t_fieldcatalog, - ls_field_catalog type zexcel_s_fieldcatalog, - ls_fcat type zexcel_s_converter_fcat, - lo_col_dim type ref to zcl_excel_worksheet_columndime, - lo_row_dim type ref to zcl_excel_worksheet_rowdimensi, - l_col_int type zexcel_cell_column, - l_col_alpha type zexcel_cell_column_alpha, - ls_settings type zexcel_s_table_settings, - l_line type i. - - field-symbols: <fs_tab> type any table. - - assign wo_data->* to <fs_tab> . - - ls_settings-table_style = i_style_table. - ls_settings-top_left_column = zcl_excel_common=>convert_column2alpha( ip_column = w_col_int ). - ls_settings-top_left_row = w_row_int. - ls_settings-show_row_stripes = ws_layout-is_stripped. - - describe table wt_fieldcatalog lines l_line. - l_line = l_line + 1 + w_col_int. - ls_settings-bottom_right_column = zcl_excel_common=>convert_column2alpha( ip_column = l_line ). - - describe table <fs_tab> lines l_line. - ls_settings-bottom_right_row = l_line + 1 + w_row_int. - sort wt_fieldcatalog by position. - loop at wt_fieldcatalog into ls_fcat. - move-corresponding ls_fcat to ls_field_catalog. - ls_field_catalog-dynpfld = abap_true. - insert ls_field_catalog into table lt_field_catalog. - endloop. - - wo_worksheet->bind_table( - exporting - ip_table = <fs_tab> - it_field_catalog = lt_field_catalog - is_table_settings = ls_settings - importing - es_table_settings = ls_settings - ). - loop at wt_fieldcatalog into ls_fcat. - l_col_int = w_col_int + ls_fcat-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Freeze panes - if ls_fcat-fix_column = abap_true. - add 1 to r_freeze_col. - endif. -* Now let's check for optimized - if ls_fcat-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - endif. -* Now let's check for visible - if ls_fcat-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - endif. - endloop. - - endmethod. - - - method CLASS_CONSTRUCTOR. - DATA: ls_objects TYPE ts_alv_types. - DATA: ls_option TYPE zexcel_s_converter_option, - l_uname TYPE sy-uname. - - GET PARAMETER ID 'ZUS' FIELD l_uname. - IF l_uname IS INITIAL OR l_uname = space. - l_uname = sy-uname. - ENDIF. - -* Object CL_GUI_ALV_GRID - ls_objects-seoclass = 'CL_GUI_ALV_GRID'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_ALV_GRID'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_TABLE - ls_objects-seoclass = 'CL_SALV_TABLE'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_SALV_TABLE'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_RESULT - ls_objects-seoclass = 'CL_SALV_EX_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_EX'. - INSERT ls_objects INTO TABLE wt_objects. -* Object CL_SALV_WD_RESULT - ls_objects-seoclass = 'CL_SALV_WD_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_WD'. - INSERT ls_objects INTO TABLE wt_objects. - - CONCATENATE 'EXCEL_' sy-uname INTO ws_indx-srtfd. - - IMPORT p1 = ls_option FROM DATABASE indx(xl) TO ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = ls_option. - ELSE. - init_option( ) . - ENDIF. - - endmethod. - - - method CLEAN_FIELDCATALOG. - DATA: l_position TYPE int1. - - FIELD-SYMBOLS: <fs_sfcat> TYPE zexcel_s_converter_fcat. - - SORT wt_fieldcatalog BY position col_id. - - CLEAR l_position. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - ADD 1 TO l_position. - <fs_sfcat>-position = l_position. -* Default stype with alignment and format - <fs_sfcat>-style_hdr = get_style( i_type = c_type_hdr - i_alignment = <fs_sfcat>-alignment ). - IF ws_layout-is_stripped = abap_true. - <fs_sfcat>-style_stripped = get_style( i_type = c_type_str - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDIF. - <fs_sfcat>-style_normal = get_style( i_type = c_type_nor - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_subtotal = get_style( i_type = c_type_sub - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_total = get_style( i_type = c_type_tot - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDLOOP. - - endmethod. - - - - - - - - - - - - - method CONVERT. - - IF is_option IS SUPPLIED. - ws_option = is_option. - ENDIF. - - TRY. - execute_converter( EXPORTING io_object = io_alv - it_table = it_table ) . - ENDTRY. - - IF io_worksheet IS SUPPLIED AND io_worksheet IS BOUND. - wo_worksheet = io_worksheet. - ENDIF. - IF co_excel IS SUPPLIED. - IF co_excel IS NOT BOUND. - CREATE OBJECT co_excel. - co_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - wo_excel = co_excel. - ENDIF. - -* Move table to data object and clean it up - IF wt_fieldcatalog IS NOT INITIAL. - create_table( ). - ELSE. - wo_data = wo_table . - ENDIF. - - IF wo_excel IS NOT BOUND. - CREATE OBJECT wo_excel. - wo_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - IF wo_worksheet IS NOT BOUND. - " Get active sheet - wo_worksheet = wo_excel->get_active_worksheet( ). - wo_worksheet->set_title( ip_title = 'Sheet1'(001) ). - ENDIF. - - IF i_row_int <= 0. - w_row_int = 1. - ELSE. - w_row_int = i_row_int. - ENDIF. - IF i_column_int <= 0. - w_col_int = 1. - ELSE. - w_col_int = i_column_int. - ENDIF. - - create_worksheet( i_table = i_table - i_style_table = i_style_table ) . - - endmethod. - - - - - - method CREATE_COLOR_STYLE. - DATA: ls_styles TYPE ts_styles. - DATA: lo_style TYPE REF TO zcl_excel_style. - - READ TABLE wt_styles INTO ls_styles WITH KEY guid = i_style. - IF sy-subrc = 0. - lo_style = wo_excel->add_new_style( ). -* lo_style->borders = ls_styles-style->borders. -* lo_style->protection = ls_styles-style->protection. - lo_style->font->bold = ls_styles-style->font->bold. - lo_style->alignment->horizontal = ls_styles-style->alignment->horizontal. - lo_style->number_format->format_code = ls_styles-style->number_format->format_code. - - lo_style->font->color-rgb = is_colors-fontcolor. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = is_colors-fillcolor. - - ro_style = lo_style. - ENDIF. - endmethod. - - - - - - - - method CREATE_FORMULAR_SUBTOTAL. - data: l_row_alpha_start type string, - l_row_alpha_end type string, - l_func_num type string. - - l_row_alpha_start = i_row_int_start. - l_row_alpha_end = i_row_int_end. - - l_func_num = get_function_number( i_totals_function = i_totals_function ). - concatenate 'SUBTOTAL(' l_func_num ',' i_column l_row_alpha_start ':' i_column l_row_alpha_end ')' into r_formula. - endmethod. - - - - - - - method CREATE_FORMULAR_TOTAL. - data: l_row_alpha type string, - l_row_e_alpha type string. - - l_row_alpha = w_row_int + 1. - l_row_e_alpha = i_row_int. - - concatenate i_totals_function '(' i_column l_row_alpha ':' i_column l_row_e_alpha ')' into r_formula. - endmethod. - - - - method CREATE_PATH. - DATA: l_sep TYPE c , - l_path TYPE string, - l_return TYPE i . - - CLEAR r_path. - - " Save the file - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING - sapworkdir = l_path - EXCEPTIONS - get_sapworkdir_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - ). - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - CONCATENATE 'Excel_' w_fcount '.xlsx' INTO r_path. - ELSE. - DO. - ADD 1 TO w_fcount. -*-obtain file separator character--------------------------------------- - CALL METHOD cl_gui_frontend_services=>get_file_separator - CHANGING - file_separator = l_sep - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4. - - IF sy-subrc <> 0. - l_sep = ''. - ENDIF. - - CONCATENATE l_path l_sep 'Excel_' w_fcount '.xlsx' INTO r_path. - - IF cl_gui_frontend_services=>file_exist( file = r_path ) = abap_true. - cl_gui_frontend_services=>file_delete( EXPORTING filename = r_path - CHANGING rc = l_return - EXCEPTIONS OTHERS = 1 ). - IF sy-subrc = 0 . - RETURN. - ENDIF. - ELSE. - RETURN. - ENDIF. - ENDDO. - ENDIF. - - endmethod. - - - - - method CREATE_STYLE_HDR. - data: lo_style type ref to zcl_excel_style. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - lo_style->font->color-rgb = zcl_excel_style_color=>c_white. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FF4F81BD'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - ro_style = lo_style . - endmethod. - - - - - - - method CREATE_STYLE_NORMAL. - DATA: lo_style TYPE REF TO zcl_excel_style, - l_format TYPE zexcel_number_format. - - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - ENDIF. - IF l_format IS NOT INITIAL OR - ( i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL ) . - - lo_style = wo_excel->add_new_style( ). - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - - ro_style = lo_style . - - ENDIF. - endmethod. - - - - - - - method CREATE_STYLE_STRIPPED. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFDBE5F1'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - ro_style = lo_style. - - endmethod. - - - - - - - method CREATE_STYLE_SUBTOTAL. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - - ro_style = lo_style . - - endmethod. - - - - - - - method CREATE_STYLE_TOTAL. - DATA: lo_style TYPE REF TO zcl_excel_style. - DATA: l_format TYPE zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - CREATE OBJECT lo_style->borders->top. - lo_style->borders->top->border_style = zcl_excel_style_border=>c_border_thin. - lo_style->borders->top->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->right. - lo_style->borders->right->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->right->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->down. - lo_style->borders->down->border_style = zcl_excel_style_border=>c_border_double. - lo_style->borders->down->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->left. - lo_style->borders->left->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->left->border_color-rgb = zcl_excel_style_color=>c_black. - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - ENDIF. - - ro_style = lo_style . - - endmethod. - - - method CREATE_TABLE. - TYPES: BEGIN OF ts_output, - fieldname TYPE fieldname, - function TYPE funcname, - END OF ts_output. - - DATA: lo_data TYPE REF TO data. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lt_fieldcatalog TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat, - <fs_stab> TYPE ANY, - <fs_ttab> TYPE STANDARD TABLE, - <fs> TYPE ANY, - <fs_table> TYPE STANDARD TABLE. - - SORT wt_fieldcatalog BY position. - ASSIGN wo_table->* TO <fs_table>. - - READ TABLE <fs_table> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc EQ 0 . - LOOP AT wt_fieldcatalog ASSIGNING <fs_scat>. - ASSIGN COMPONENT <fs_scat>-columnname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - ls_components-name = <fs_scat>-columnname. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - DELETE TABLE wt_fieldcatalog FROM <fs_scat>. - ENDTRY. - IF lo_addit IS BOUND. - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ENDIF. - ENDIF. - ENDLOOP. - IF lt_components_tab IS NOT INITIAL. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( P_COMPONENTS = lt_components_tab - P_STRICT = abap_false ). - CATCH cx_sy_struct_creation. - RETURN. " We can not do anything in this case. - ENDTRY. - - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA wo_data TYPE HANDLE lo_table. - CREATE DATA lo_data TYPE HANDLE lo_struc. - - ASSIGN wo_data->* TO <fs_ttab>. - ASSIGN lo_data->* TO <fs_stab>. - LOOP AT <fs_table> ASSIGNING <fs>. - CLEAR <fs_stab>. - MOVE-CORRESPONDING <fs> TO <fs_stab>. - APPEND <fs_stab> TO <fs_ttab>. - ENDLOOP. - ENDIF. - ENDIF. - - endmethod. - - - - - - METHOD create_text_subtotal. - DATA: l_string(256) TYPE c, - l_func TYPE string. - - CASE i_totals_function. - WHEN zcl_excel_table=>totals_function_sum. " Total - l_func = 'Total'(003). - WHEN zcl_excel_table=>totals_function_min. " Minimum - l_func = 'Minimum'(004). - WHEN zcl_excel_table=>totals_function_max. " Maximum - l_func = 'Maximum'(005). - WHEN zcl_excel_table=>totals_function_average. " Mean Value - l_func = 'Average'(006). - WHEN zcl_excel_table=>totals_function_count. " Count - l_func = 'Count'(007). - WHEN OTHERS. - CLEAR l_func. - ENDCASE. - - MOVE i_value TO l_string. - - CONCATENATE l_string l_func INTO r_text SEPARATED BY space. - -ENDMETHOD. - - - - - - method CREATE_WORKSHEET. - DATA: l_freeze_col TYPE i. - DATA: l_guid TYPE oltpguid16. - - IF wo_data IS BOUND AND wo_worksheet IS BOUND. - - wo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. " By default is on - - IF wt_fieldcatalog IS INITIAL. - set_fieldcatalog( ) . - ELSE. - clean_fieldcatalog( ) . - ENDIF. - - IF i_table = abap_true. - l_freeze_col = bind_table( i_style_table = i_style_table ) . - ELSE. -* Let's check for filter. - IF wt_filter IS NOT INITIAL. - wo_autofilter = wo_excel->add_new_autofilter( io_sheet = wo_worksheet ). - l_freeze_col = bind_cells( ) . - set_autofilter_area( ) . - ELSE. - l_freeze_col = bind_cells( ) . - ENDIF. - - ENDIF. - -* Check for freeze panes - IF ws_layout-is_fixed = abap_true. - IF l_freeze_col = 0. - l_freeze_col = w_col_int. - ENDIF. - wo_worksheet->freeze_panes( EXPORTING ip_num_columns = l_freeze_col - ip_num_rows = w_row_int ) . - ENDIF. - ENDIF. - - endmethod. - - - - - - method EXECUTE_CONVERTER. - DATA: lt_fieldcatalog TYPE zexcel_t_fieldcatalog, - ls_fieldcatalog TYPE zexcel_s_converter_fcat, - lo_if TYPE REF TO zif_excel_converter, - ls_types TYPE ts_alv_types, - lo_addit TYPE REF TO cl_abap_classdescr. - - IF io_object IS BOUND. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_object_ref( io_object ). - CATCH cx_sy_move_cast_error. - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - ls_types-seoclass = lo_addit->get_relative_name( ). - READ TABLE wt_objects INTO ls_types WITH TABLE KEY seoclass = ls_types-seoclass. - IF sy-subrc = 0. - CREATE OBJECT lo_if TYPE (ls_types-clsname). - - TRY. - lo_if->create_fieldcatalog( - EXPORTING - is_option = ws_option - io_object = io_object - it_table = it_table - IMPORTING - es_layout = ws_layout - et_fieldcatalog = wt_fieldcatalog - eo_table = wo_table - et_colors = wt_colors - et_filter = wt_filter - ). - ENDTRY. -* data lines of highest level. - IF ws_layout-max_subtotal_level > 0. - ADD 1 TO ws_layout-max_subtotal_level. - ENDIF. - ELSE. - RAISE EXCEPTION TYPE zcx_excel. - ENDIF. - ELSE. - REFRESH wt_fieldcatalog. - GET REFERENCE OF it_table INTO wo_table. - ENDIF. - - endmethod. - - - - - - - method GET_COLOR_STYLE. - DATA: ls_colors TYPE zexcel_s_converter_col, - ls_color_styles TYPE ts_color_styles, - lo_style TYPE REF TO zcl_excel_style. - - r_style = i_style. " Default we change nothing - - IF wt_colors IS NOT INITIAL. -* Full line has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = space. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - r_style = lo_style->get_guid( ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - ENDIF. - ELSE. -* Only field has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = i_fieldname. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - r_style = ls_color_styles-style_new->get_guid( ). - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - - endmethod. - - - - - - method GET_FILE. - data: lo_excel_writer type ref to zif_excel_writer, - lo_excel type ref to zcl_excel. - - data: ls_seoclass type seoclass. - - - if wo_excel is bound. - create object lo_excel_writer type zcl_excel_writer_2007. - e_file = lo_excel_writer->write_file( wo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = e_file - receiving - et_solix = et_file. - e_bytecount = xstrlen( e_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = e_file - importing - output_length = e_bytecount - tables - binary_tab = et_file. - endif. - endif. - - endmethod. - - - - - method GET_FUNCTION_NUMBER. -*Number Function -*1 AVERAGE -*2 COUNT -*3 COUNTA -*4 MAX -*5 MIN -*6 PRODUCT -*7 STDEV -*8 STDEVP -*9 SUM -*10 VAR -*11 VARP - - case i_totals_function. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_SUM. " Total - r_function_number = 9. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MIN. " Minimum - r_function_number = 5. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MAX. " Maximum - r_function_number = 4. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_AVERAGE. " Mean Value - r_function_number = 1. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_count. " Count - r_function_number = 2. - when others. - clear r_function_number. - endcase. - endmethod. - - - - method GET_OPTION. - - rs_option = ws_option. - - endmethod. - - - - - - - - method GET_STYLE. - DATA: ls_styles TYPE ts_styles, - lo_style TYPE REF TO zcl_excel_style. - - CLEAR r_style. - - READ TABLE wt_styles INTO ls_styles WITH TABLE KEY type = i_type - alignment = i_alignment - inttype = i_inttype - decimals = i_decimals. - IF sy-subrc = 0. - r_style = ls_styles-guid. - ELSE. - CASE i_type. - WHEN c_type_hdr. " Header - lo_style = create_style_hdr( i_alignment = i_alignment ). - WHEN c_type_str. "Stripped - lo_style = create_style_stripped( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_nor. "Normal - lo_style = create_style_normal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_sub. "Subtotals - lo_style = create_style_subtotal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_tot. "Totals - lo_style = create_style_total( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - ENDCASE. - IF lo_style IS NOT INITIAL. - r_style = lo_style->get_guid( ). - ls_styles-type = i_type. - ls_styles-alignment = i_alignment. - ls_styles-inttype = i_inttype. - ls_styles-decimals = i_decimals. - ls_styles-guid = r_style. - ls_styles-style = lo_style. - INSERT ls_styles INTO TABLE wt_styles. - ENDIF. - ENDIF. - endmethod. - - - method INIT_OPTION. - - ws_option-filter = abap_true. - ws_option-hidenc = abap_true. - ws_option-subtot = abap_true. - - endmethod. - - - - - - - method LOOP_NORMAL. - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - -* It is better to loop column by column - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - -* Only if the Header is required create it. - IF ws_option-hidehd IS INITIAL. - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - ENDIF. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true . - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. -* Now let's check for total versus subtotal. - IF <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_total( i_row_int = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_total ). - ENDIF. - ENDLOOP. - endmethod. - - - - - - - method LOOP_SUBTOTAL. - - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_subtotalled TYPE flag, - l_text TYPE string, - ls_sort_values TYPE ts_sort_values, - ls_subtotal_rows TYPE ts_subtotal_rows, - l_sort_level TYPE int4, - l_hidden TYPE int4, - l_line TYPE i, - l_guid TYPE guid_22, - l_tabix TYPE sy-tabix, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i, - lt_fcat TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_sortval> TYPE ANY, - <fs_sortv> TYPE ts_sort_values, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - REFRESH: wt_sort_values, - wt_subtotal_rows. - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - - READ TABLE <fs_tab> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc = 0. - l_row_int = i_row_int + 1. - lt_fcat = wt_fieldcatalog. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - ls_sort_values-fieldname = <fs_sfcat>-columnname. - ls_sort_values-row_int = l_row_int. - ls_sort_values-sort_level = <fs_sfcat>-sort_level. - ls_sort_values-is_collapsed = <fs_sfcat>-is_collapsed. - CREATE DATA ls_sort_values-value LIKE <fs_fldval>. - ASSIGN ls_sort_values-value->* TO <fs_sortval>. - <fs_sortval> = <fs_fldval>. - INSERT ls_sort_values INTO TABLE wt_sort_values. - ENDLOOP. - ENDIF. - l_row_int = i_row_int. -* Let's check if we need to hide a sort level. - DESCRIBE TABLE wt_sort_values LINES l_line. - IF l_line <= 1. - CLEAR l_hidden. - ELSE. - LOOP AT wt_sort_values INTO ls_sort_values WHERE is_collapsed = abap_false. - IF l_hidden < ls_sort_values-sort_level. - l_hidden = ls_sort_values-sort_level. - ENDIF. - ENDLOOP. - ENDIF. - ADD 1 TO l_hidden. " As this is the first level we show. -* First loop without formular only addtional rows with subtotal text. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - ADD 1 TO l_row_int. " 1 is for header row. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - IF sy-subrc = 0. - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - IF <fs_sortval> <> <fs_fldval> OR <fs_sortv>-new = abap_true. -* First let's remmember the subtotal values as it has to appear later. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* Now let's write the subtotal line - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = <fs_sfcat>-sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's change the key - ADD 1 TO l_row_int. - <fs_sortval> = <fs_fldval>. - <fs_sortv>-new = abap_false. - l_line = <fs_sortv>-sort_level. - LOOP AT wt_sort_values ASSIGNING <fs_sortv> WHERE sort_level >= l_line. - <fs_sortv>-row_int = l_row_int. - ENDLOOP. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - ENDLOOP. - ADD 1 TO l_row_int. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* First let's write the value as it has to appear. - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - - l_sort_level = <fs_sfcat>-sort_level. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. - ADD 1 TO l_row_int. - ENDIF. - ENDLOOP. -* Let's write the Grand total - l_sort_level = 0. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . -* lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . Not on grand total - - l_text = create_text_subtotal( i_value = 'Grand'(002) - i_totals_function = <fs_sfcat>-totals_function ). - - l_col_alpha_start = zcl_excel_common=>convert_column2alpha( i_col_int ). - wo_worksheet->set_cell( ip_column = l_col_alpha_start - ip_row = l_row_int - ip_value = l_text - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - -* It is better to loop column by column second time around -* Second loop with formular and data. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Let's set the row dimension values - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = ws_layout-max_subtotal_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim->set_visible( ip_visible = abap_false ) . - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Now let's check for Grand total - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_start = i_row_int + 1. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - ENDIF. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDLOOP. - - endmethod. - - - method OPEN_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string, - l_sep type c. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - - l_dir = create_path( ) . - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - cl_gui_frontend_services=>execute( - exporting - document = l_dir -* application = -* parameter = -* default_directory = -* maximized = -* minimized = -* synchronous = -* operation = 'OPEN' - exceptions - cntl_error = 1 - error_no_gui = 2 - bad_parameter = 3 - file_not_found = 4 - path_not_found = 5 - file_extension_unknown = 6 - error_execute_failed = 7 - synchronous_failed = 8 - not_supported_by_gui = 9 - ). - if sy-subrc <> 0. - message id sy-msgid type sy-msgty number sy-msgno - with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - endif. - - endif. - - - endmethod. - - - method SET_AUTOFILTER_AREA. - DATA: ls_area TYPE zexcel_s_autofilter_area, - l_lines TYPE i, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values. - -* Let's check for filter. - IF wo_autofilter IS BOUND. - ls_area-row_start = 1. - lt_values = wo_autofilter->get_values( ) . - SORT lt_values BY column ASCENDING. - DESCRIBE TABLE lt_values LINES l_lines. - READ TABLE lt_values INTO ls_values INDEX 1. - IF sy-subrc = 0. - ls_area-col_start = ls_values-column. - ENDIF. - READ TABLE lt_values INTO ls_values INDEX l_lines. - IF sy-subrc = 0. - ls_area-col_end = ls_values-column. - ENDIF. - wo_autofilter->set_filter_area( is_area = ls_area ) . - ENDIF. - - endmethod. - - - - - - method SET_CELL_FORMAT. - DATA: l_format TYPE zexcel_number_format. - - CLEAR r_format. - CASE i_inttype. - WHEN cl_abap_typedescr=>typekind_date. - r_format = wo_worksheet->get_default_excel_date_format( ). - WHEN cl_abap_typedescr=>typekind_time. - r_format = wo_worksheet->get_default_excel_time_format( ). - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - IF i_decimals > 0 . - l_format = '#,##0.'. - DO i_decimals TIMES. - CONCATENATE l_format '0' INTO l_format. - ENDDO. - r_format = l_format. - ENDIF. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - r_format = '#,##0'. - ENDCASE. - - endmethod. - - - method SET_FIELDCATALOG. - - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - ls_fieldcatalog TYPE zexcel_s_fieldcatalog. - DATA: ls_fcat TYPE zexcel_s_converter_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN wo_data->* TO <fs_tab> . - - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - LOOP AT lt_dfies INTO ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. - ls_fcat-columnname = ls_dfies-fieldname. - INSERT ls_fcat INTO TABLE wt_fieldcatalog. - ENDLOOP. - - clean_fieldcatalog( ). - - endmethod. - - - - method SET_OPTION. - - IF ws_indx-begdt IS INITIAL. - ws_indx-begdt = sy-datum. - ENDIF. - - ws_indx-aedat = sy-datum. - ws_indx-usera = sy-uname. - ws_indx-pgmid = sy-cprog. - - EXPORT p1 = is_option TO DATABASE indx(xl) FROM ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = is_option. - ENDIF. - - endmethod. - - - - method WRITE_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - if i_path is initial. - l_dir = create_path( ) . - else. - l_dir = i_path. - endif. - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - endif. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_col_converter, - col TYPE lvc_col, - int TYPE lvc_int, - inv TYPE lvc_inv, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - END OF ts_col_converter, - - tt_col_converter TYPE HASHED TABLE OF ts_col_converter WITH UNIQUE KEY col int inv. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - ABAP - KKBLO - - - - - - - - - - method APPLY_SORT. - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE, - <fs_sort> TYPE lvc_s_sort. - - CREATE DATA eo_table LIKE it_table. - ASSIGN eo_table->* TO <fs_table>. - - <fs_table> = it_table. - - SORT wt_sort BY spos. - LOOP AT wt_sort ASSIGNING <fs_sort>. - IF <fs_sort>-up = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_false. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - IF <fs_sort>-down = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_true. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - ENDLOOP. - IF lt_otab IS NOT INITIAL. - SORT <fs_table> BY (lt_otab). - ENDIF. - - endmethod. - - - method CLASS_CONSTRUCTOR. -* let's fill the color conversion routines. - DATA: ls_color TYPE ts_col_converter. -* 0 all combination the same - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Blue - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFB0E4FC'. " 176 228 252 blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFB0E4FC'. " 176 228 252 blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF5FCBFE'. " 095 203 254 Int blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF5FCBFE'. " 095 203 254 - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 - INSERT ls_color INTO TABLE wt_colors. - -* Gray - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. - ls_color-fillcolor = 'FFE5EAF0'. " 229 234 240 gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFE5EAF0'. " 229 234 240 gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFD8E8F4'. " 216 234 244 int gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFD8E8F4'. " 216 234 244 int gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -*Yellow - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFEFEB8'. " 254 254 184 yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFEFEB8'. " 254 254 184 yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFF9ED5D'. " 249 237 093 int yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFF9ED5D'. " 249 237 093 int yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* light blue - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEE7FB'. " 206 231 251 light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEE7FB'. " 206 231 251 light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF9ACCEF'. " 154 204 239 int light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF9ACCEF'. " 154 204 239 int light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Green - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEF8AE'. " 206 248 174 Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEF8AE'. " 206 248 174 Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF7AC769'. " 122 199 105 int Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF7AC769'. " 122 199 105 int Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Red - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFDBBBC'. " 253 187 188 Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFDBBBC'. " 253 187 188 Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFB6B6B'. " 251 107 107 int Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFB6B6B'. " 251 107 107 int Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - endmethod. - - - - - method GET_COLOR. - DATA: ls_con_col TYPE zexcel_s_converter_col, - ls_color TYPE ts_col_converter, - l_line TYPE i, - l_color(4) TYPE c. - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_stab> TYPE ANY, - <fs> TYPE ANY, - <fs_tcol> TYPE lvc_t_scol, - <fs_scol> TYPE lvc_s_scol. - -* Loop trough the table to set the color properties of each line. The color properties field is -* Char 4 and the characters is set as follows: -* Char 1 = C = This is a color property -* Char 2 = 6 = Color code (1 - 7) -* Char 3 = Intensified on/of = 1 = on -* Char 4 = Inverse display = 0 = of - - ASSIGN io_table->* TO <fs_tab>. - - IF ws_layo-info_fname IS NOT INITIAL OR - ws_layo-ctab_fname IS NOT INITIAL. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - IF ws_layo-info_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-info_fname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF <fs> IS NOT INITIAL. - l_color = <fs>. - IF l_color(1) = 'C'. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = l_color+1(1) - int = l_color+2(1) - inv = l_color+3(1). - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = space. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - IF ws_layo-ctab_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-ctab_fname OF STRUCTURE <fs_stab> TO <fs_tcol>. - IF sy-subrc = 0. - LOOP AT <fs_tcol> ASSIGNING <fs_scol>. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = <fs_scol>-color-col - int = <fs_scol>-color-int - inv = <fs_scol>-color-inv. - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = <fs_scol>-fname. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - ls_con_col-nokeycol = <fs_scol>-nokeycol. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDLOOP. - ENDIF. - ENDIF. - ENDLOOP. - ENDIF. - endmethod. - - - - - METHOD get_filter. - DATA: ls_filt TYPE lvc_s_filt, - l_line TYPE i, - ls_filter TYPE zexcel_s_converter_fil. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lo_trange TYPE REF TO data, - lo_srange TYPE REF TO data, - lo_ltabdata TYPE REF TO data. - - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_ltab> TYPE STANDARD TABLE, - <fs_stab> TYPE any, - <fs> TYPE any, - <fs1> TYPE any, - <fs_srange> TYPE any, - <fs_trange> TYPE STANDARD TABLE. - - IF ws_option-filter = abap_false. - REFRESH et_filter. - RETURN. - ENDIF. - - ASSIGN xo_table->* TO <fs_tab>. - - CREATE DATA lo_ltabdata LIKE <fs_tab>. - ASSIGN lo_ltabdata->* TO <fs_ltab>. - - LOOP AT wt_filt INTO ls_filt. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - ASSIGN COMPONENT ls_filt-fieldname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF l_line = 1. - REFRESH lt_components_tab. - ls_components-name = 'SIGN'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-sign ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'OPTION'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-option ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'LOW'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'HIGH'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( p_components = lt_components_tab - p_strict = abap_false ). - CATCH cx_sy_struct_creation. - CONTINUE. - ENDTRY. - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA lo_trange TYPE HANDLE lo_table. - CREATE DATA lo_srange TYPE HANDLE lo_struc. - - ASSIGN lo_trange->* TO <fs_trange>. - ASSIGN lo_srange->* TO <fs_srange>. - ENDIF. - REFRESH <fs_trange>. - ASSIGN COMPONENT 'SIGN' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-sign. - ASSIGN COMPONENT 'OPTION' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-option. - ASSIGN COMPONENT 'LOW' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-low. - ASSIGN COMPONENT 'HIGH' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-high. - INSERT <fs_srange> INTO TABLE <fs_trange>. - IF <fs> IN <fs_trange>. - IF ws_option-filter = abap_true. - ls_filter-rownumber = l_line. - ls_filter-columnname = ls_filt-fieldname. - INSERT ls_filter INTO TABLE et_filter. - ELSE. - INSERT <fs_stab> INTO TABLE <fs_ltab>. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - IF ws_option-filter = abap_undefined. - <fs_tab> = <fs_ltab>. - REFRESH <fs_ltab>. - ENDIF. - ENDLOOP. - -ENDMETHOD. - - - - - method UPDATE_CATALOG. - DATA: ls_fieldcatalog TYPE zexcel_s_converter_fcat, - ls_ref TYPE salv_s_ddic_reference, - ls_fcat TYPE lvc_s_fcat, - ls_sort TYPE lvc_s_sort, - l_decimals TYPE lvc_decmls. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat. - - IF ws_layo-zebra IS NOT INITIAL. - cs_layout-is_stripped = abap_true. - ENDIF. - IF ws_layo-no_keyfix IS INITIAL OR - ws_layo-no_keyfix = '0'. - cs_layout-is_fixed = abap_true. - ENDIF. - - LOOP AT wt_fcat INTO ls_fcat. - CLEAR: ls_fieldcatalog, - l_decimals. - CASE ws_option-hidenc. - WHEN abap_false. " We make hiden columns visible - CLEAR ls_fcat-no_out. - WHEN abap_true. -* We convert column and hide it. - WHEN abap_undefined. "We don't convert hiden columns - IF ls_fcat-no_out = abap_true. - ls_fcat-tech = abap_true. - ENDIF. - ENDCASE. - IF ls_fcat-tech = abap_false. - ls_fieldcatalog-tabname = ls_fcat-tabname. - ls_fieldcatalog-fieldname = ls_fcat-fieldname . - ls_fieldcatalog-columnname = ls_fcat-fieldname . - ls_fieldcatalog-position = ls_fcat-col_pos. - ls_fieldcatalog-col_id = ls_fcat-col_id. - ls_fieldcatalog-convexit = ls_fcat-convexit. - ls_fieldcatalog-inttype = ls_fcat-inttype. - ls_fieldcatalog-scrtext_s = ls_fcat-scrtext_s . - ls_fieldcatalog-scrtext_m = ls_fcat-scrtext_m . - ls_fieldcatalog-scrtext_l = ls_fcat-scrtext_l. - l_decimals = ls_fcat-decimals_o. - IF l_decimals IS NOT INITIAL. - ls_fieldcatalog-decimals = l_decimals. - ELSE. - ls_fieldcatalog-decimals = ls_fcat-decimals . - ENDIF. - CASE ws_option-subtot. - WHEN abap_false. " We ignore subtotals - CLEAR ls_fcat-do_sum. - WHEN abap_true. " We convert subtotals and detail - - WHEN abap_undefined. " We should only take subtotals and displayed detail -* for now abap_true - ENDCASE. - CASE ls_fcat-do_sum. - WHEN abap_true. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. - WHEN 'A'. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_min. - WHEN 'B' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_max. - WHEN 'C' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_average. - WHEN OTHERS. - CLEAR ls_fieldcatalog-totals_function . - ENDCASE. - ls_fieldcatalog-fix_column = ls_fcat-fix_column. - IF ws_layo-cwidth_opt IS INITIAL. - IF ls_fcat-col_opt IS NOT INITIAL. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - ELSE. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - IF ls_fcat-no_out IS NOT INITIAL. - ls_fieldcatalog-is_hidden = abap_true. - ls_fieldcatalog-position = ls_fieldcatalog-col_id. " We hide based on orginal data structure - ENDIF. -* Alignment in each cell - CASE ls_fcat-just. - WHEN 'R'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_right. - WHEN 'L'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_left. - WHEN 'C'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_center. - WHEN OTHERS. - CLEAR ls_fieldcatalog-alignment. - ENDCASE. -* Check for subtotals. - READ TABLE wt_sort INTO ls_sort WITH KEY fieldname = ls_fcat-fieldname. - IF sy-subrc = 0 AND ws_option-subtot <> abap_false. - ls_fieldcatalog-sort_level = 0 . -* IF ls_fieldcatalog-totals_function IS INITIAL. " Not clear why not -* CLEAR ls_fieldcatalog-is_subtotalled. -* ELSE. - ls_fieldcatalog-is_subtotalled = ls_sort-subtot. -* ENDIF. - ls_fieldcatalog-is_collapsed = ls_sort-expa. - IF ls_fieldcatalog-is_subtotalled = abap_true. - ls_fieldcatalog-sort_level = ls_sort-spos. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. " we need function for text - ENDIF. - ENDIF. - APPEND ls_fieldcatalog TO ct_fieldcatalog. - ENDIF. - ENDLOOP. - - SORT ct_fieldcatalog BY sort_level ASCENDING. - cs_layout-max_subtotal_level = 0. - LOOP AT ct_fieldcatalog ASSIGNING <fs_scat> WHERE sort_level > 0. - cs_layout-max_subtotal_level = cs_layout-max_subtotal_level + 1. - <fs_scat>-sort_level = cs_layout-max_subtotal_level. - ENDLOOP. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - data: lo_alv type REF TO cl_gui_alv_grid. - - try. - lo_alv ?= io_object. - catch cx_sy_move_cast_error . - raise exception type zcx_excel. - endtry. - -endmethod. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_alv TYPE REF TO cl_gui_alv_grid. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_alv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_alv IS BOUND. - lo_alv->get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ). - lo_alv->get_frontend_layout( IMPORTING es_layout = ws_layo ). - lo_alv->get_sort_criteria( IMPORTING et_sort = wt_sort ) . - lo_alv->get_filter_criteria( IMPORTING et_filter = wt_filt ) . - - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method GET_TABLE. - DATA: lo_object TYPE REF TO object, - ls_seoclass TYPE seoclass, - l_method TYPE string. - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'IF_SALV_BS_DATA_SOURCE'. - - IF sy-subrc = 0. - l_method = 'GET_TABLE_REF'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ELSE. - l_method = 'GET_REF_TO_TABLE'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table, - lo_ex_cm TYPE REF TO cl_salv_ex_cm, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - lo_ex_cm ?= lo_result->r_model->r_model. - ws_layo = lo_ex_cm->s_layo. -* T_DRDN Instance Attribute Public Type LVC_T_DROP - wt_fcat = lo_ex_cm->t_fcat. - wt_filt = lo_ex_cm->t_filt. -* T_HYPE Instance Attribute Public Type LVC_T_HYPE -* T_SELECTED_CELLS Instance Attribute Public Type LVC_T_CELL -* T_SELECTED_COLUMNS Instance Attribute Public Type LVC_T_COL - wt_sort = lo_ex_cm->t_sort. - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - else. -* We have a problem and should stop here. - ENDIF. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - wo_config ?= lo_result->r_model->r_model. - - IF wo_config IS BOUND. - wt_fields = wo_config->if_salv_wd_field_settings~get_fields( ) . - wt_columns = wo_config->if_salv_wd_column_settings~get_columns( ) . - ENDIF. - - create_wt_fcat( io_table = lo_data ). - create_wt_sort( ). - create_wt_filt( ). - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - -* get_color( EXPORTING io_table = eo_table -* IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ELSE. -* We have a problem and should stop here - ENDIF. - ENDIF. -ENDMETHOD. - - - - method CREATE_WT_FCAT. - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - lv_sytabix TYPE sytabix. - - DATA: ls_fcat TYPE lvc_s_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN io_table->* TO <fs_tab> . - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - loop at lt_dfies into ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. -* ls_fcat-columnname = ls_dfies-fieldname. - ls_fcat-col_pos = ls_dfies-position. - ls_fcat-key = ls_dfies-keyflag. - get_fields_info( CHANGING xs_fcat = ls_fcat ) . - - ls_fcat-col_opt = abap_true. - - get_columns_info( CHANGING xs_fcat = ls_fcat ) . - - INSERT ls_fcat INTO TABLE wt_fcat. - endloop. - - endmethod. - - - method CREATE_WT_FILT. -* No neeed for superclass. -* Only for WD - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - DATA: lt_filters TYPE salv_wd_t_filter_rule_ref, - ls_filt TYPE lvc_s_filt. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref, - <fs_filter> TYPE salv_wd_s_filter_rule_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - REFRESH lt_filters. - lt_filters = <fs_fields>-r_field->if_salv_wd_filter~get_filter_rules( ) . - LOOP AT lt_filters ASSIGNING <fs_filter>. - ls_filt-fieldname = <fs_fields>-fieldname. - IF <fs_filter>-r_filter_rule->get_included( ) = abap_true. - ls_filt-sign = 'I'. - ELSE. - ls_filt-sign = 'E'. - ENDIF. - ls_filt-option = <fs_filter>-r_filter_rule->get_operator( ). - ls_filt-high = <fs_filter>-r_filter_rule->get_high_value( ) . - ls_filt-low = <fs_filter>-r_filter_rule->get_low_value( ) . - INSERT ls_filt INTO TABLE wt_filt. - ENDLOOP. - ENDLOOP. - - endmethod. - - - method CREATE_WT_SORT. - DATA: lo_sort TYPE REF TO cl_salv_wd_sort_rule, - l_sort_order TYPE salv_wd_constant, - ls_sort TYPE lvc_s_sort. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - lo_sort = <fs_fields>-r_field->if_salv_wd_sort~get_sort_rule( ) . - IF lo_sort IS BOUND. - l_sort_order = lo_sort->get_sort_order( ). - IF l_sort_order <> if_salv_wd_c_sort=>sort_order. - CLEAR ls_sort. - ls_sort-spos = lo_sort->get_sort_position( ). - ls_sort-fieldname = <fs_fields>-fieldname. -* ls_sort-GROUP - ls_sort-subtot = lo_sort->get_group_aggregation( ). -* ls_sort-COMP -* ls_sort-EXPA -* ls_sort-SELTEXT -* ls_sort-OBLIGATORY -* ls_sort-LEVEL -* ls_sort-NO_OUT - IF l_sort_order = if_salv_wd_c_sort=>sort_order_ascending. - ls_sort-up = abap_true. - ELSE. - ls_sort-down = abap_true. - ENDIF. - INSERT ls_sort INTO TABLE wt_sort. - ENDIF. - ENDIF. - ENDLOOP. - - endmethod. - - - - method GET_COLUMNS_INFO. - DATA: l_numc2 TYPE salv_wd_constant. - - - FIELD-SYMBOLS: <fs_column> TYPE salv_wd_s_column_ref. - - READ TABLE wt_columns ASSIGNING <fs_column> WITH KEY id = xs_fcat-fieldname . - IF sy-subrc = 0. - xs_fcat-col_pos = <fs_column>-r_column->get_position( ) . - l_numc2 = <fs_column>-r_column->get_fixed_position( ). - IF l_numc2 = '02'. - xs_fcat-fix_column = abap_true . - ENDIF. - l_numc2 = <fs_column>-r_column->get_visible( ). - IF l_numc2 = '01'. - xs_fcat-no_out = abap_true . - ENDIF. - ENDIF. - - endmethod. - - - - method GET_FIELDS_INFO. - DATA: lo_aggr TYPE REF TO cl_salv_wd_aggr_rule, - l_aggrtype TYPE salv_wd_constant. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - READ TABLE wt_fields ASSIGNING <fs_fields> WITH KEY fieldname = xs_fcat-fieldname. - IF sy-subrc = 0. - lo_aggr = <fs_fields>-r_field->if_salv_wd_aggr~get_aggr_rule( ) . - IF lo_aggr IS BOUND. - l_aggrtype = lo_aggr->get_aggregation_type( ) . - CASE l_aggrtype. - WHEN if_salv_wd_c_aggregation=>aggrtype_total. - xs_fcat-do_sum = abap_true. - WHEN if_salv_wd_c_aggregation=>aggrtype_minimum. - xs_fcat-do_sum = 'A'. - WHEN if_salv_wd_c_aggregation=>aggrtype_maximum . - xs_fcat-do_sum = 'B'. - WHEN if_salv_wd_c_aggregation=>aggrtype_average . - xs_fcat-do_sum = 'C'. - WHEN OTHERS. - CLEAR xs_fcat-do_sum . - ENDCASE. - ENDIF. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD zif_excel_converter~can_convert_object. - - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - lo_salv ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_salv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog, - et_colors . - - IF lo_salv IS BOUND. - load_data( EXPORTING io_salv = lo_salv - it_table = it_table ). - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - - method LOAD_DATA. - DATA: lo_columns TYPE REF TO cl_salv_columns_table, - lo_aggregations TYPE REF TO cl_salv_aggregations, - lo_sorts TYPE REF TO cl_salv_sorts, - lo_filters TYPE REF TO cl_salv_filters, - lo_functional TYPE REF TO cl_salv_functional_settings, - lo_display TYPE REF TO cl_salv_display_settings, - lo_selections TYPE REF TO cl_salv_selections. - - DATA: ls_vari TYPE disvariant, - lo_layout TYPE REF TO cl_salv_layout. - - DATA: lr_form_tol TYPE REF TO cl_salv_form, - lr_form_eol TYPE REF TO cl_salv_form. - - DATA lt_kkblo_fieldcat TYPE kkblo_t_fieldcat. - DATA ls_kkblo_layout TYPE kkblo_layout. - DATA lt_kkblo_filter TYPE kkblo_t_filter. - DATA lt_kkblo_sort TYPE kkblo_t_sortinfo. - - lo_layout = io_salv->get_layout( ) . - lo_columns = io_salv->get_columns( ). - lo_aggregations = io_salv->get_aggregations( ) . - lo_sorts = io_salv->get_sorts( ) . - lo_filters = io_salv->get_filters( ) . - lo_display = io_salv->get_display_settings( ) . - lo_functional = io_salv->get_functional_settings( ) . - - REFRESH: wt_fcat, - wt_sort, - wt_filt. - -* First update metadata if we can. - IF io_salv->is_offline( ) = abap_false. - io_salv->get_metadata( ) . - ELSE. -* If we are offline we need to build this. - cl_salv_controller_metadata=>get_variant( - EXPORTING - r_layout = lo_layout - CHANGING - s_variant = ls_vari ). - ENDIF. - -*... get the column information - wt_fcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog( - r_columns = lo_columns - r_aggregations = lo_aggregations ). - -*... get the layout information - cl_salv_controller_metadata=>get_lvc_layout( - EXPORTING - r_functional_settings = lo_functional - r_display_settings = lo_display - r_columns = lo_columns - r_aggregations = lo_aggregations - CHANGING - s_layout = ws_layo ). - -* the fieldcatalog is not complete yet! - CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' - EXPORTING - i_complete = 'X' - i_refresh_buffer = space - i_buffer_active = space - is_layout = ws_layo - i_test = '1' - i_fcat_complete = 'X' - IMPORTING -* E_EDIT = - es_layout = ws_layo - CHANGING - ct_fieldcat = wt_fcat. - - IF ls_vari IS NOT INITIAL AND io_salv->is_offline( ) = abap_true. - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - EXPORTING - it_fieldcat_lvc = wt_fcat - is_layout_lvc = ws_layo - IMPORTING - et_fieldcat_kkblo = lt_kkblo_fieldcat - es_layout_kkblo = ls_kkblo_layout - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - it_fieldcat_lvc_missing = 2 - OTHERS = 3. - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LT_VARIANT_LOAD' - EXPORTING -* I_TOOL = 'LT' - i_tabname = '1' -* I_TABNAME_SLAVE = - i_dialog = ' ' -* I_USER_SPECIFIC = ' ' -* I_DEFAULT = 'X' -* I_NO_REPTEXT_OPTIMIZE = -* I_VIA_GRID = - i_fcat_complete = 'X' - IMPORTING -* E_EXIT = - et_fieldcat = lt_kkblo_fieldcat - et_sort = lt_kkblo_sort - et_filter = lt_kkblo_filter - CHANGING - cs_layout = ls_kkblo_layout - ct_default_fieldcat = lt_kkblo_fieldcat - cs_variant = ls_vari - EXCEPTIONS - wrong_input = 1 - fc_not_complete = 2 - not_found = 3 - OTHERS = 4 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO' - EXPORTING -* I_TECH_COMPLETE = -* I_STRUCTURE_NAME = - it_fieldcat_kkblo = lt_kkblo_fieldcat - it_sort_kkblo = lt_kkblo_sort - it_filter_kkblo = lt_kkblo_filter -* IT_SPECIAL_GROUPS_KKBLO = -* IT_FILTERED_ENTRIES_KKBLO = -* IT_GROUPLEVELS_KKBLO = -* IS_SUBTOT_OPTIONS_KKBLO = - is_layout_kkblo = ls_kkblo_layout -* IS_REPREP_ID_KKBLO = -* I_CALLBACK_PROGRAM_KKBLO = -* IT_ADD_FIELDCAT = -* IT_EXCLUDING_KKBLO = -* IT_EXCEPT_QINFO_KKBLO = - IMPORTING - et_fieldcat_lvc = wt_fcat - et_sort_lvc = wt_sort - et_filter_lvc = wt_filt -* ET_SPECIAL_GROUPS_LVC = -* ET_FILTER_INDEX_LVC = -* ET_GROUPLEVELS_LVC = -* ES_TOTAL_OPTIONS_LVC = - es_layout_lvc = ws_layo -* ES_VARIANT_LVC = -* E_VARIANT_SAVE_LVC = -* ES_PRINT_INFO_LVC = -* ES_REPREP_LVC = -* E_REPREP_ACTIVE_LVC = -* ET_EXCLUDING_LVC = -* ET_EXCEPT_QINFO_LVC = - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - ELSE. -* ... get the sort information - wt_sort = cl_salv_controller_metadata=>get_lvc_sort( lo_sorts ). - -* ... get the filter information - wt_filt = cl_salv_controller_metadata=>get_lvc_filter( lo_filters ). - ENDIF. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - " Initialise instance variables - formula1 = ''. - formula2 = ''. - type = me->c_type_none. - errorstyle = me->c_style_stop. - operator = ''. - allowblank = abap_false. - showdropdown = abap_false. - showinputmessage = abap_true. - showerrormessage = abap_true. - errortitle = ''. - error = ''. - prompttitle = ''. - prompt = ''. -* inizialize dimension range - cell_row = 1. - cell_column = 'A'. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method ADD. - data_validations->add( ip_data_validation ). - endmethod. - - - method CLEAR. - data_validations->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT data_validations. - - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= data_validations->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = data_validations->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - data_validations->remove( ip_data_validation ). - endmethod. - - - - method SIZE. - ep_size = data_validations->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = me->guid. - me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - - me->type = ip_type. - -* inizialize dimension range - anchor = anchor_one_cell. - from_loc-col = 1. - from_loc-row = 1. -ENDMETHOD. - - - - method CREATE_MEDIA_NAME. - -* if media name is initial, create unique name - CHECK media_name IS INITIAL. - - index = ip_index. - CONCATENATE me->type index INTO media_name. - CONDENSE media_name NO-GAPS. - endmethod. - - - - method GET_FROM_COL. - r_from_col = me->from_loc-col. - endmethod. - - - - method GET_FROM_ROW. - r_from_row = me->from_loc-row. - endmethod. - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_HEIGHT_EMU_STR. - r_height = pixel2emu( size-height ). - CONDENSE r_height NO-GAPS. - endmethod. - - - - method GET_INDEX. - rp_index = me->index. - endmethod. - - - - METHOD get_media. - - DATA: lv_language TYPE sylangu. - DATA: lt_bin_mime TYPE sdokcntbins. - DATA: lt_mime TYPE tsfmime, - lv_filesize TYPE i, - lv_filesizec(10). - - CASE media_source. - WHEN c_media_source_xstring. - r_media = media. - WHEN c_media_source_www. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = media_key_www - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. - - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - WHEN c_media_source_mime. - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = me->io - IMPORTING - filesize = lv_filesize - bin_data = lt_bin_mime - CHANGING - language = lv_language ). - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_bin_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - ENDCASE. -ENDMETHOD. - - - - method GET_MEDIA_NAME. - CONCATENATE media_name `.` media_type INTO r_name. - endmethod. - - - - method GET_MEDIA_TYPE. - r_type = media_type. - endmethod. - - - - method GET_NAME. - r_name = title. - endmethod. - - - - method GET_POSITION. - rp_position-anchor = anchor. - rp_position-from = from_loc. - rp_position-to = to_loc. - rp_position-size = size. - endmethod. - - - - method GET_TO_COL. - r_to_col = me->to_loc-col. - endmethod. - - - - method GET_TO_ROW. - r_to_row = me->to_loc-row. - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method GET_WIDTH_EMU_STR. - r_width = pixel2emu( size-width ). - CONDENSE r_width NO-GAPS. - endmethod. - - - - method LOAD_CHART_ATTRIBUTES. - DATA: node TYPE REF TO if_ixml_element. - DATA: node2 TYPE REF TO if_ixml_element. - DATA: node3 TYPE REF TO if_ixml_element. - DATA: node4 TYPE REF TO if_ixml_element. - DATA: iterator TYPE REF TO if_ixml_node_iterator. - - DATA: chartspace TYPE REF TO if_ixml_node_collection. - DATA: coll_length TYPE i. - DATA: chartelem TYPE REF TO if_ixml_element. - - DATA lo_barchart TYPE REF TO zcl_excel_graph_bars. - DATA lo_piechart TYPE REF TO zcl_excel_graph_pie. - DATA lo_linechart TYPE REF TO zcl_excel_graph_line. - - TYPES: BEGIN OF t_prop, - val TYPE string, - rtl TYPE string, - lang TYPE string, - formatcode TYPE string, - sourcelinked TYPE string, - END OF t_prop. - - TYPES: BEGIN OF t_pagemargins, - b TYPE string, - l TYPE string, - r TYPE string, - t TYPE string, - header TYPE string, - footer TYPE string, - END OF t_pagemargins. - - DATA ls_prop TYPE t_prop. - DATA ls_pagemargins TYPE t_pagemargins. - - DATA lo_collection TYPE REF TO if_ixml_node_collection. - DATA lo_node TYPE REF TO if_ixml_node. - DATA lo_iterator TYPE REF TO if_ixml_node_iterator. - DATA lv_idx TYPE i. - DATA lv_order TYPE i. - DATA lv_invertifnegative TYPE string. - DATA lv_symbol TYPE string. - DATA lv_smooth TYPE c. - DATA lv_sername TYPE string. - DATA lv_label TYPE string. - DATA lv_value TYPE string. - DATA lv_axid TYPE string. - DATA lv_orientation TYPE string. - DATA lv_delete TYPE string. - DATA lv_axpos TYPE string. - DATA lv_formatcode TYPE string. - DATA lv_sourcelinked TYPE string. - DATA lv_majortickmark TYPE string. - DATA lv_minortickmark TYPE string. - DATA lv_ticklblpos TYPE string. - DATA lv_crossax TYPE string. - DATA lv_crosses TYPE string. - DATA lv_auto TYPE string. - DATA lv_lblalgn TYPE string. - DATA lv_lbloffset TYPE string. - DATA lv_nomultilvllbl TYPE string. - DATA lv_crossbetween TYPE string. - - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - CASE me->graph_type. - WHEN c_graph_bars. - CREATE OBJECT lo_barchart. - me->graph = lo_barchart. - WHEN c_graph_pie. - CREATE OBJECT lo_piechart. - me->graph = lo_piechart. - WHEN c_graph_line. - CREATE OBJECT lo_linechart. - me->graph = lo_linechart. - WHEN OTHERS. - ENDCASE. - - "Fill properties - node2 ?= node->find_from_name( name = 'date1904' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_1904val = ls_prop-val. - node2 ?= node->find_from_name( name = 'lang' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_langval = ls_prop-val. - node2 ?= node->find_from_name( name = 'roundedCorners' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_roundedcornersval = ls_prop-val. - - "style - node2 ?= node->find_from_name( name = 'style' namespace = 'c14' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_c14styleval = ls_prop-val. - node2 ?= node->find_from_name( name = 'style' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_styleval = ls_prop-val. - "---------------------------Read graph properties - node2 ?= node->find_from_name( name = 'autoTitleDeleted' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_autotitledeletedval = ls_prop-val. - - "plotArea - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'barDir' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_bardirval = ls_prop-val. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'invertIfNegative' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_invertifnegative = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_barchart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_invertifnegative = lv_invertifnegative - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'gapWidth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_gapwidthval = ls_prop-val. - - "Load axes - node2 ?= node->find_from_name( name = 'barChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_piechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showLeaderLines' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showleaderlinesval = ls_prop-val. - node2 ?= node->find_from_name( name = 'firstSliceAng' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_firstsliceangval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'symbol' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_symbol = ls_prop-val. - node3 ?= node2->find_from_name( name = 'smooth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_smooth = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_linechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_symbol = lv_symbol - ip_smooth = lv_smooth - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showbubblesizeval = ls_prop-val. - - node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - node2 ?= node->find_from_name( name = 'marker' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_MARKERVAL = ls_prop-val. - node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_SMOOTHVAL = ls_prop-val. - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - "Load axes - node2 ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. -* node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). -* zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). -* lv_formatcode = ls_prop-formatcode. -* lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - WHEN OTHERS. - ENDCASE. - - "legend - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_overlayval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_overlayval = ls_prop-val. - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_overlayval = ls_prop-val. - node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_pprrtl = ls_prop-rtl. - node2 ?= node->find_from_name( name = 'endParaRPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_endpararprlang = ls_prop-lang. - - WHEN OTHERS. - ENDCASE. - - node2 ?= node->find_from_name( name = 'plotVisOnly' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_plotvisonlyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'dispBlanksAs' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_dispblanksasval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showDLblsOverMax' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_showdlblsovermaxval = ls_prop-val. - "--------------------- - - node2 ?= node->find_from_name( name = 'pageMargins' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_pagemargins ). - me->graph->pagemargins = ls_pagemargins. - - - endmethod. - - - - - - method PIXEL2EMU. -* suppose 96 DPI - IF ip_dpi IS SUPPLIED. - r_emu = ip_pixel * 914400 / ip_dpi. - ELSE. -* suppose 96 DPI - r_emu = ip_pixel * 914400 / 96. - ENDIF. - endmethod. - - - - - - - method SET_MEDIA. - IF ip_media IS SUPPLIED. - media = ip_media. - ENDIF. - media_type = ip_media_type. - media_source = c_media_source_xstring. - IF ip_width IS SUPPLIED. - size-width = ip_width. - ENDIF. - IF ip_height IS SUPPLIED. - size-height = ip_height. - ENDIF. - endmethod. - - - - - - METHOD set_media_mime. - - DATA: lv_language TYPE sylangu. - - io = ip_io. - media_source = c_media_source_mime. - size-width = ip_width. - size-height = ip_height. - - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = ip_io - IMPORTING - filename = media_name - "mimetype = media_type - CHANGING - language = lv_language ). - - SPLIT media_name AT '.' INTO media_name media_type. - -ENDMETHOD. - - - - - - method SET_MEDIA_WWW. - DATA: lv_value(20). - - media_key_www = ip_key. - media_source = c_media_source_www. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'fileextension' - IMPORTING - value = lv_value. - media_type = lv_value. - SHIFT media_type LEFT DELETING LEADING '.'. - - size-width = ip_width. - size-height = ip_height. - endmethod. - - - - - - - method SET_POSITION. - from_loc-col = zcl_excel_common=>convert_column2int( ip_from_col ) - 1. - IF ip_coloff IS SUPPLIED. - from_loc-col_offset = ip_coloff. - ENDIF. - from_loc-row = ip_from_row - 1. - IF ip_rowoff IS SUPPLIED. - from_loc-row_offset = ip_rowoff. - ENDIF. - anchor = anchor_one_cell. - endmethod. - - - - - - method SET_POSITION2. - - data: lv_anchor type zexcel_drawing_anchor. - lv_anchor = ip_anchor. - - IF lv_anchor IS INITIAL. - IF ip_to IS NOT INITIAL. - lv_anchor = anchor_two_cell. - ELSE. - lv_anchor = anchor_one_cell. - ENDIF. - ENDIF. - - CASE lv_anchor. - WHEN anchor_absolute OR anchor_one_cell. - CLEAR: me->to_loc. - WHEN anchor_two_cell. - CLEAR: me->size. - ENDCASE. - - me->from_loc = ip_from. - me->to_loc = ip_to. - me->anchor = lv_anchor. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method ADD. - DATA: lv_index TYPE i. - - drawings->add( ip_drawing ). - lv_index = drawings->if_object_collection~size( ). - ip_drawing->create_media_name( - ip_index = lv_index ). - endmethod. - - - method CLEAR. - - drawings->clear( ). - endmethod. - - - - method CONSTRUCTOR. - - CREATE OBJECT drawings. - type = ip_type. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_drawing ?= drawings->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= drawings->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method INCLUDE. - drawings->add( ip_drawing ). - endmethod. - - - - method IS_EMPTY. - - is_empty = drawings->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - - drawings->remove( ip_drawing ). - endmethod. - - - - method SIZE. - - ep_size = drawings->if_object_collection~size( ). - endmethod. - - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - "Load default values - me->pagemargins-b = '0.75'. - me->pagemargins-l = '0.7'. - me->pagemargins-r = '0.7'. - me->pagemargins-t = '0.75'. - me->pagemargins-header = '0.3'. - me->pagemargins-footer = '0.3'. - endmethod. - - - - - - - - - - - - - - - - - - - - method CREATE_SERIE. - DATA ls_serie TYPE s_series. - - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7. - - - IF ip_lbl IS NOT SUPPLIED. - lv_stop_row_c = ip_lbl_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_lbl_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-lbl = ip_sheet. - ls_serie-lbl = zcl_excel_common=>escape_string( ip_value = ls_serie-lbl ). - CONCATENATE ls_serie-lbl '!$' ip_lbl_from_col '$' lv_start_row_c ':$' ip_lbl_to_col '$' lv_stop_row_c INTO ls_serie-lbl. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-lbl = ip_lbl. - ENDIF. - IF ip_ref IS NOT SUPPLIED. - lv_stop_row_c = ip_ref_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_ref_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-ref = ip_sheet. - ls_serie-ref = zcl_excel_common=>escape_string( ip_value = ls_serie-ref ). - CONCATENATE ls_serie-ref '!$' ip_ref_from_col '$' lv_start_row_c ':$' ip_ref_to_col '$' lv_stop_row_c INTO ls_serie-ref. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-ref = ip_ref. - ENDIF. - ls_serie-idx = ip_idx. - ls_serie-order = ip_order. - ls_serie-invertifnegative = ip_invertifnegative. - ls_serie-symbol = ip_symbol. - ls_serie-smooth = ip_smooth. - ls_serie-sername = ip_sername. - APPEND ls_serie TO me->series. - SORT me->series BY order ASCENDING. - endmethod. - - - - method SET_PRINT_LBL. - me->print_label = ip_value. - endmethod. - - - - method SET_STYLE. - me->ns_c14styleval = ip_style-c14style. - CONDENSE me->ns_c14styleval NO-GAPS. - me->ns_styleval = ip_style-cstyle. - CONDENSE me->ns_styleval NO-GAPS. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - if ip_type = c_catax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '1'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'b'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '2'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_auto is SUPPLIED. - ls_ax-auto = ip_auto. - else. - ls_ax-auto = '1'. - endif. - if ip_lblAlgn is SUPPLIED. - ls_ax-lblAlgn = ip_lblAlgn. - else. - ls_ax-lblAlgn = 'ctr'. - endif. - if ip_lblOffset is SUPPLIED. - ls_ax-lblOffset = ip_lblOffset. - else. - ls_ax-lblOffset = '100'. - endif. - if ip_noMultiLvlLbl is SUPPLIED. - ls_ax-noMultiLvlLbl = ip_noMultiLvlLbl. - else. - ls_ax-noMultiLvlLbl = '0'. - endif. - elseif ip_type = c_valax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '2'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'l'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '1'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_crossBetween is SUPPLIED. - ls_ax-crossBetween = ip_crossBetween. - else. - ls_ax-crossBetween = 'between'. - endif. - endif. - - APPEND ls_ax TO me->axes. - sort me->axes by axid ascending. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - IF ip_type = c_catax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '1'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'b'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '2'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_auto IS SUPPLIED. - ls_ax-auto = ip_auto. - ELSE. - ls_ax-auto = '1'. - ENDIF. - IF ip_lblalgn IS SUPPLIED. - ls_ax-lblalgn = ip_lblalgn. - ELSE. - ls_ax-lblalgn = 'ctr'. - ENDIF. - IF ip_lbloffset IS SUPPLIED. - ls_ax-lbloffset = ip_lbloffset. - ELSE. - ls_ax-lbloffset = '100'. - ENDIF. - IF ip_nomultilvllbl IS SUPPLIED. - ls_ax-nomultilvllbl = ip_nomultilvllbl. - ELSE. - ls_ax-nomultilvllbl = '0'. - ENDIF. - ELSEIF ip_type = c_valax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '2'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'l'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '1'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_crossbetween IS SUPPLIED. - ls_ax-crossbetween = ip_crossbetween. - ELSE. - ls_ax-crossbetween = 'between'. - ENDIF. - ENDIF. - - APPEND ls_ax TO me->axes. - SORT me->axes BY axid ASCENDING. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEADER_LINES. - ns_showleaderlinesval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - method CREATE. - data: lo_hyperlink type REF TO zcl_excel_hyperlink. - - create OBJECT lo_hyperlink. - - lo_hyperlink->location = iv_url. - lo_hyperlink->internal = iv_internal. - - ov_link = lo_hyperlink. - endmethod. - - - - - method CREATE_EXTERNAL_LINK. - - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_url - iv_internal = abap_false ). - endmethod. - - - - - method CREATE_INTERNAL_LINK. - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_location - iv_internal = abap_true ). - endmethod. - - - - method GET_REF. - ev_ref = row. - CONDENSE ev_ref. - CONCATENATE column ev_ref INTO ev_ref. - endmethod. - - - - method GET_URL. - ev_url = me->location. - endmethod. - - - - method IS_INTERNAL. - ev_ret = me->internal. - endmethod. - - - - - - method SET_CELL_REFERENCE. - me->column = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - me->row = ip_row. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method CONSTRUCTOR. - " default Excel palette based on - " http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.indexedcolors.aspx - - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800000' TO colors. - APPEND '00008000' TO colors. - APPEND '00000080' TO colors. - APPEND '00808000' TO colors. - - APPEND '00800080' TO colors. - APPEND '00008080' TO colors. - APPEND '00C0C0C0' TO colors. - APPEND '00808080' TO colors. - APPEND '009999FF' TO colors. - APPEND '00993366' TO colors. - APPEND '00FFFFCC' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00660066' TO colors. - APPEND '00FF8080' TO colors. - - APPEND '000066CC' TO colors. - APPEND '00CCCCFF' TO colors. - APPEND '00000080' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800080' TO colors. - APPEND '00800000' TO colors. - APPEND '00008080' TO colors. - APPEND '000000FF' TO colors. - - APPEND '0000CCFF' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00CCFFCC' TO colors. - APPEND '00FFFF99' TO colors. - APPEND '0099CCFF' TO colors. - APPEND '00FF99CC' TO colors. - APPEND '00CC99FF' TO colors. - APPEND '00FFCC99' TO colors. - APPEND '003366FF' TO colors. - APPEND '0033CCCC' TO colors. - - APPEND '0099CC00' TO colors. - APPEND '00FFCC00' TO colors. - APPEND '00FF9900' TO colors. - APPEND '00FF6600' TO colors. - APPEND '00666699' TO colors. - APPEND '00969696' TO colors. - APPEND '00003366' TO colors. - APPEND '00339966' TO colors. - APPEND '00003300' TO colors. - APPEND '00333300' TO colors. - - APPEND '00993300' TO colors. - APPEND '00993366' TO colors. - APPEND '00333399' TO colors. - APPEND '00333333' TO colors. - - endmethod. - - - - - - method GET_COLOR. - DATA: lv_index type i. - - lv_index = ip_index + 1. - READ TABLE colors INTO ep_color INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - endmethod. - - - - method GET_COLORS. - ep_colors = colors. - endmethod. - - - - method IS_MODIFIED. - ep_modified = modified. - endmethod. - - - - - method SET_COLOR. - DATA: lv_index TYPE i. - - FIELD-SYMBOLS: <lv_color> LIKE LINE OF colors. - - lv_index = ip_index + 1. - READ TABLE colors ASSIGNING <lv_color> INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - - IF <lv_color> <> ip_color. - modified = abap_true. - <lv_color> = ip_color. - ENDIF. - - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel3. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: ls_table_settings TYPE zexcel_s_table_settings. - - -DATA: lv_title TYPE zexcel_sheet_title, - lt_carr TYPE TABLE OF scarr, - row TYPE zexcel_cell_row VALUE 2, - lo_range TYPE REF TO zcl_excel_range. -DATA: lo_data_validation TYPE REF TO zcl_excel_data_validation. -FIELD-SYMBOLS: <carr> LIKE LINE OF lt_carr. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '03_iTab.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_empty TYPE flag. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - DATA lt_test TYPE TABLE OF sflight. - - IF p_empty <> abap_true. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - ENDIF. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - ls_table_settings-nofilters = abap_true. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). "make date field a bit wider - column_dimension->set_width( ip_width = 11 ). - " Add another table for data validations - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = c_airlines ). - SELECT * FROM scarr INTO TABLE lt_carr. "#EC CI_NOWHERE - LOOP AT lt_carr ASSIGNING <carr>. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = <carr>-carrid ). - row = row + 1. - ENDLOOP. - row = row - 1. - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_airlines. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 2 - ip_stop_column = 'A' - ip_stop_row = row ). - " Set Data Validation - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_airlines. - lo_data_validation->cell_row = 4. - lo_data_validation->cell_column = 'C'. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel30. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: lv_value TYPE string, - lv_count TYPE i VALUE 10, - lv_packed TYPE p LENGTH 16 DECIMALS 1 VALUE '1234567890.5'. - -CONSTANTS: lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string, - lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed, - lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num, - lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date, - lc_typekind_s_ls TYPE string VALUE 's_leading_blanks'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '30_CellDataTypes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Cell data types' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Number as String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = '11' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = ' String with leading spaces' - ip_data_type = lc_typekind_s_ls ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = ' Negative Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.01-' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = '0 %' - ip_abap_type = lc_typekind_num ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = 'Date' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = '20110831' - ip_abap_type = lc_typekind_date ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.02' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %' - ip_abap_type = lc_typekind_num ). - - WHILE lv_count <= 15. - lv_value = lv_count. - CONCATENATE 'Positive Value with' lv_value 'Digits' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_packed ). - CONCATENATE 'Positive Value with' lv_value 'Digits formated as string' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_string ). - lv_packed = lv_packed * 10. - lv_count = lv_count + 1. - ENDWHILE. - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). - column_dimension->set_auto_size( abap_true ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel31. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: fieldval TYPE text80, - row TYPE i, - style_column_a TYPE REF TO zcl_excel_style, - style_column_a_guid TYPE zexcel_cell_style, - style_column_b TYPE REF TO zcl_excel_style, - style_column_b_guid TYPE zexcel_cell_style, - style_column_c TYPE REF TO zcl_excel_style, - style_column_c_guid TYPE zexcel_cell_style, - style_font TYPE REF TO zcl_excel_style_font. - -CONSTANTS: gc_save_file_name TYPE string VALUE '31_AutosizeWithDifferentFontSizes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - " Use active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Regular Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a_guid = style_column_a->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c_guid = style_column_c->get_guid( ). - - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Bold Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->bold = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->bold = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->bold = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Italic Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->italic = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->italic = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->italic = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet for merged cells - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Merged cells' ). - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'This is a very long header text' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = 'Some data' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Some more data' ). - - lo_worksheet->set_merge( - EXPORTING - ip_column_start = 'A' - ip_column_end = 'C' - ip_row = 1 ). - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - lo_excel->set_active_sheet_index( i_active_worksheet = 1 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL32 -* Demo for export options from ALV GRID: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -REPORT zdemo_excel32. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '32_Export_ALV.xlsx', - lv_default_file_name2 TYPE string VALUE '32_Export_Convert.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 100 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - - -* export file to save file path - CASE sy-ucomm. - WHEN 'EXCELBIND'. - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - PERFORM export_to_excel_bind. - - WHEN 'EXCELCONV'. - - CONCATENATE l_path lv_file_separator lv_default_file_name2 - INTO l_path. - PERFORM export_to_excel_conv. - - ENDCASE. -ENDFORM. " USER_COMMAND -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_CONV -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_conv. - DATA: lo_converter TYPE REF TO zcl_excel_converter. - - CREATE OBJECT lo_converter. -*TRY. - lo_converter->convert( - EXPORTING - io_alv = lo_salv - it_table = gt_sbook - i_row_int = 2 - i_column_int = 2 -* i_table = -* i_style_table = -* io_worksheet = -* CHANGING -* co_excel = - ). -* CATCH zcx_excel . -*ENDTRY. - lo_converter->write_file( i_path = l_path ). - -ENDFORM. "EXPORT_TO_EXCEL_CONV - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_BIND -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_bind. -* create zcl_excel_worksheet object - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object -*try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). -* catch zcx_excel . -*endtry. - - - PERFORM write_file. - -ENDFORM. "EXPORT_TO_EXCEL_BIND -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -FORM write_file . - DATA: lt_file TYPE solix_tab, - l_bytecount TYPE i, - l_file TYPE xstring. - - DATA: lo_excel_writer TYPE REF TO zif_excel_writer. - - DATA: ls_seoclass TYPE seoclass. - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_BCS_CONVERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>xstring_to_solix - EXPORTING - iv_xstring = l_file - RECEIVING - et_solix = lt_file. - - l_bytecount = XSTRLEN( l_file ). - ELSE. - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = l_file - IMPORTING - output_length = l_bytecount - TABLES - binary_tab = lt_file. - ENDIF. - - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - CHANGING data_tab = lt_file ). - -ENDFORM. " WRITE_FILE - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel33. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_converter TYPE REF TO zcl_excel_converter, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - -DATA lt_test TYPE TABLE OF t005t. - -DATA: l_cell_value TYPE zexcel_cell_value, - ls_area TYPE zexcel_s_autofilter_area. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '33_autofilter.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - SELECT * UP TO 2 ROWS FROM t005t INTO TABLE lt_test. "#EC CI_NOWHERE - - CREATE OBJECT lo_converter. - - lo_converter->convert( EXPORTING - it_table = lt_test - i_row_int = 1 - i_column_int = 1 - io_worksheet = lo_worksheet - CHANGING - co_excel = lo_excel ) . - - lo_autofilter = lo_excel->add_new_autofilter( io_sheet = lo_worksheet ) . - - ls_area-row_start = 1. - ls_area-col_start = 1. - ls_area-row_end = lo_worksheet->get_highest_row( ). - ls_area-col_end = lo_worksheet->get_highest_column( ). - - lo_autofilter->set_filter_area( is_area = ls_area ). - - lo_worksheet->get_cell( EXPORTING - ip_column = 'C' - ip_row = 2 - IMPORTING - ep_value = l_cell_value ). - lo_autofilter->set_value( i_column = 3 - i_value = l_cell_value ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel34. - -CONSTANTS: width TYPE f VALUE '10.14'. -CONSTANTS: height TYPE f VALUE '57.75'. - -DATA: current_row TYPE i, - col TYPE i, - col_alpha TYPE zexcel_cell_column_alpha, - row TYPE i, - row_board TYPE i, - colorflag TYPE i, - color TYPE zexcel_style_color_argb, - - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - - writing1 TYPE string, - writing2 TYPE string. - - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -CONSTANTS: gc_save_file_name TYPE string VALUE '34_Static Styles_Chess.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Spassky_vs_Bronstein' ). - -* Header - current_row = 1. - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'White' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Spassky, Boris V -- wins in turn 23' ). - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'Black' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Bronstein, David I' ). - - ADD 1 TO current_row. -* Set size of column + Writing above chessboard - DO 8 TIMES. - - writing1 = zcl_excel_common=>convert_column2alpha( sy-index ). - writing2 = sy-index . - row = current_row + sy-index. - - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - -* Set size of column - column_dimension = lo_worksheet->get_column_dimension( col_alpha ). - column_dimension->set_width( width ). - -* Set size of row - row_dimension = lo_worksheet->get_row_dimension( row ). - row_dimension->set_row_height( height ). - -* Set writing on chessboard - lo_worksheet->set_cell( ip_row = row - ip_column = 'A' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'A' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = 'J' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'J' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - - row = current_row + 9. - lo_worksheet->set_cell( ip_row = current_row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = current_row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'J' ). - column_dimension->set_auto_size( abap_true ). - -* Set win-position - CONSTANTS: c_pawn TYPE string VALUE 'Pawn'. - CONSTANTS: c_rook TYPE string VALUE 'Rook'. - CONSTANTS: c_knight TYPE string VALUE 'Knight'. - CONSTANTS: c_bishop TYPE string VALUE 'Bishop'. - CONSTANTS: c_queen TYPE string VALUE 'Queen'. - CONSTANTS: c_king TYPE string VALUE 'King'. - - row = current_row + 1. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_knight ). - row = current_row + 2. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_king ). - row = current_row + 3. - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 4. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_knight ). - row = current_row + 5. - lo_worksheet->set_cell( ip_row = row ip_column = 'E' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - row = current_row + 6. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_bishop ). - row = current_row + 7. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 8. - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_king ). - -* Set Chessboard - DO 8 TIMES. - IF sy-index <= 3. " Black - color = zcl_excel_style_color=>c_black. - ELSE. - color = zcl_excel_style_color=>c_white. - ENDIF. - row_board = sy-index. - row = current_row + sy-index. - DO 8 TIMES. - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - TRY. -* Borders around outer limits - IF row_board = 1. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_top_style = zcl_excel_style_border=>c_border_thick - ip_borders_top_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF row_board = 8. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_down_style = zcl_excel_style_border=>c_border_thick - ip_borders_down_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 2. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_left_style = zcl_excel_style_border=>c_border_thick - ip_borders_left_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 9. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_right_style = zcl_excel_style_border=>c_border_thick - ip_borders_right_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. -* Style for writing - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_font_color_rgb = color - ip_font_bold = 'X' - ip_font_size = 16 - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid ). -* Color of field - colorflag = ( row + col ) MOD 2. - IF colorflag = 0. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFB5866A' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - ELSE. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFF5DEBF' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - ENDIF. - - - - CATCH zcx_excel . - ENDTRY. - - ENDDO. - ENDDO. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel35. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '35_Static_Styles.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>GET_DESKTOP_DIRECTORY( CHANGING DESKTOP_DIRECTORY = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - sy-title = 'ZDEMO_EXCEL2;Issue 139: Change cellstyle retroactivly'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - -* Demonstrate how to retroactivly change the cellstyle -*Filled text and underlinded text - lo_worksheet->change_cell_style( ip_column = 'B' - ip_row = 5 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - lo_worksheet->change_cell_style( ip_column = 'D' - ip_row = 4 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL36 -REPORT zdemo_excel36. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - col TYPE i. - -DATA: lo_style_arial20 TYPE REF TO zcl_excel_style, - lo_style_times11 TYPE REF TO zcl_excel_style, - lo_style_cambria8red TYPE REF TO zcl_excel_style. - -DATA: lv_style_arial20_guid TYPE zexcel_cell_style, - lv_style_times11_guid TYPE zexcel_cell_style, - lv_style_cambria8red_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '36_DefaultStyles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create a bold / italic style - lo_style_arial20 = lo_excel->add_new_style( ). - lo_style_arial20->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_arial20->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_arial20->font->size = 20. - lv_style_arial20_guid = lo_style_arial20->get_guid( ). - - lo_style_times11 = lo_excel->add_new_style( ). - lo_style_times11->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_times11->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_times11->font->size = 11. - lv_style_times11_guid = lo_style_times11->get_guid( ). - - lo_style_cambria8red = lo_excel->add_new_style( ). - lo_style_cambria8red->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_cambria8red->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_cambria8red->font->size = 8. - lo_style_cambria8red->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_cambria8red_guid = lo_style_cambria8red->get_guid( ). - - lo_excel->set_default_style( lv_style_arial20_guid ). " Default for all new worksheets - -* 1st sheet - do not change anything --> defaultstyle from lo_excel should apply - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Style for complete document' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 2nd sheet - defaultstyle for this sheet set explicitly ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for this sheet' ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Times New Roman, fontsize 11' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because this style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'thus the default style from zcl_excel does not apply to this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 3rd sheet - defaultstyle for columns ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for 3 columns' ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'F' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'The columns B,C and F are set to Times New Roman' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 10 ip_value = 'All other cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 11 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 12 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - - lo_worksheet->set_cell( ip_column = 8 ip_row = 1 ip_value = 'Of course' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 2 ip_value = 'setting a specific style to a cell' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 3 ip_value = 'takes precedence over all defaults' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 4 ip_value = 'Here: Cambria 8 in red' ip_style = lv_style_cambria8red_guid ). - - -* Set entry into each of the first 10 columns - DO 20 TIMES. - col = sy-index. - CASE col. - WHEN 2 " B - OR 3 " C - OR 6." F - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Times 11' ). - WHEN OTHERS. - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Arial 20' ). - ENDCASE. - ENDDO. - - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - - - lo_excel->set_active_sheet_index( 1 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - REPORT zdemo_excel37. - -TYPE-POOLS: vrm. - -DATA: excel TYPE REF TO zcl_excel, - reader TYPE REF TO zif_excel_reader, - go_error TYPE REF TO cx_root, - gv_memid_gr8 TYPE text255, - gv_message TYPE string, - lv_extension TYPE string, - gv_error_program_name TYPE syrepid, - gv_error_include_name TYPE syrepid, - gv_error_line TYPE i. - -DATA: gc_save_file_name TYPE string VALUE '37- Read template and output.&'. - -SELECTION-SCREEN BEGIN OF BLOCK blx WITH FRAME. -PARAMETERS: p_upfile TYPE string LOWER CASE MEMORY ID gr8. -SELECTION-SCREEN END OF BLOCK blx. - -INCLUDE zdemo_excel_outputopt_incl. - -SELECTION-SCREEN BEGIN OF BLOCK cls WITH FRAME TITLE text-cls. -PARAMETERS: lb_read TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -PARAMETERS: lb_write TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -SELECTION-SCREEN END OF BLOCK cls. - -SELECTION-SCREEN BEGIN OF BLOCK bl_err WITH FRAME TITLE text-err. -PARAMETERS: cb_errl AS CHECKBOX DEFAULT 'X'. -SELECTION-SCREEN BEGIN OF LINE. -PARAMETERS: cb_dump AS CHECKBOX DEFAULT space. -SELECTION-SCREEN COMMENT (60) cmt_dump FOR FIELD cb_dump. -SELECTION-SCREEN END OF LINE. -SELECTION-SCREEN END OF BLOCK bl_err. - -INITIALIZATION. - PERFORM setup_listboxes. - cmt_dump = text-dum. - GET PARAMETER ID 'GR8' FIELD gv_memid_gr8. - p_upfile = gv_memid_gr8. - - IF p_upfile IS INITIAL. - p_upfile = 'c:\temp\whatever.xlsx'. - ENDIF. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile. - PERFORM f4_p_upfile CHANGING p_upfile. - - -START-OF-SELECTION. - IF cb_dump IS INITIAL. - TRY. - PERFORM read_template. - PERFORM write_template. -*** Create output - CATCH cx_root INTO go_error. - MESSAGE 'Error reading excelfile' TYPE 'I'. - gv_message = go_error->get_text( ). - IF cb_errl = ' '. - IF gv_message IS NOT INITIAL. - MESSAGE gv_message TYPE 'I'. - ENDIF. - ELSE. - go_error->get_source_position( IMPORTING program_name = gv_error_program_name - include_name = gv_error_include_name - source_line = gv_error_line ). - WRITE:/ 'Errormessage:' ,gv_message. - WRITE:/ 'Errorposition:', - AT /10 'Program:' ,gv_error_program_name, - AT /10 'include_name:' ,gv_error_include_name, - AT /10 'source_line:' ,gv_error_line. - ENDIF. - ENDTRY. - ELSE. " This will dump if an error occurs. In some cases the information given in cx_root is not helpful - this will show exactly where the problem is - PERFORM read_template. - PERFORM write_template. - ENDIF. - - - -*&---------------------------------------------------------------------* -*& Form F4_P_UPFILE -*&---------------------------------------------------------------------* -FORM f4_p_upfile CHANGING p_upfile TYPE string. - - DATA: lv_repid TYPE syrepid, - lt_fields TYPE dynpread_tabtype, - ls_field LIKE LINE OF lt_fields, - lt_files TYPE filetable, - lv_file_filter TYPE string. - - lv_repid = sy-repid. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = lv_repid - dynumb = '1000' - request = 'A' - TABLES - dynpfields = lt_fields - EXCEPTIONS - invalid_abapworkarea = 01 - invalid_dynprofield = 02 - invalid_dynproname = 03 - invalid_dynpronummer = 04 - invalid_request = 05 - no_fielddescription = 06 - undefind_error = 07. - READ TABLE lt_fields INTO ls_field WITH KEY fieldname = 'P_UPFILE'. - p_upfile = ls_field-fieldvalue. - - lv_file_filter = 'Excel Files (*.XLSX;*.XLSM)|*.XLSX;*.XLSM'. - cl_gui_frontend_services=>file_open_dialog( EXPORTING - default_filename = p_upfile - file_filter = lv_file_filter - CHANGING - file_table = lt_files - rc = sy-tabix - EXCEPTIONS - OTHERS = 1 ). - READ TABLE lt_files INDEX 1 INTO p_upfile. - -ENDFORM. " F4_P_UPFILE - - -*&---------------------------------------------------------------------* -*& Form SETUP_LISTBOXES -*&---------------------------------------------------------------------* -FORM setup_listboxes . - - DATA: lv_id TYPE vrm_id, - lt_values TYPE vrm_values, - lt_implementing_classes TYPE seo_relkeys. - - FIELD-SYMBOLS: <ls_implementing_class> LIKE LINE OF lt_implementing_classes, - <ls_value> LIKE LINE OF lt_values. - -*--------------------------------------------------------------------* -* Possible READER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_READ'. - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = 'Autodetect'(001). - <ls_value>-text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_READER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING <ls_implementing_class>. - - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = <ls_implementing_class>-clsname. - <ls_value>-text = <ls_implementing_class>-clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -*--------------------------------------------------------------------* -* Possible WRITER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_WRITE'. - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = 'Autodetect'(001). - <ls_value>-text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_WRITER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING <ls_implementing_class>. - - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = <ls_implementing_class>-clsname. - <ls_value>-text = <ls_implementing_class>-clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -ENDFORM. " SETUP_LISTBOXES - - -*&---------------------------------------------------------------------* -*& Form GET_IMPLEMENTING_CLASSDS -*&---------------------------------------------------------------------* -FORM get_implementing_classds USING iv_interface_name TYPE clike - CHANGING ct_implementing_classes TYPE seo_relkeys. - - DATA: lo_oo_interface TYPE REF TO cl_oo_interface, - lo_oo_class TYPE REF TO cl_oo_class, - lt_implementing_subclasses TYPE seo_relkeys. - - FIELD-SYMBOLS: <ls_implementing_class> LIKE LINE OF ct_implementing_classes. - - TRY. - lo_oo_interface ?= cl_oo_interface=>get_instance( iv_interface_name ). - CATCH cx_class_not_existent. - RETURN. - ENDTRY. - ct_implementing_classes = lo_oo_interface->get_implementing_classes( ). - - LOOP AT ct_implementing_classes ASSIGNING <ls_implementing_class>. - TRY. - lo_oo_class ?= cl_oo_class=>get_instance( <ls_implementing_class>-clsname ). - lt_implementing_subclasses = lo_oo_class->get_subclasses( ). - APPEND LINES OF lt_implementing_subclasses TO ct_implementing_classes. - CATCH cx_class_not_existent. - ENDTRY. - ENDLOOP. - - -ENDFORM. " GET_IMPLEMENTING_CLASSDS - - -*&---------------------------------------------------------------------* -*& Form READ_TEMPLATE -*&---------------------------------------------------------------------* -FORM read_template RAISING zcx_excel . - - CASE lb_read. - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - WHEN '.XLSM'. - CREATE OBJECT reader TYPE zcl_excel_reader_xlsm. - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - CREATE OBJECT reader TYPE (lb_read). - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - ENDCASE. - -ENDFORM. " READ_TEMPLATE - - -*&---------------------------------------------------------------------* -*& Form WRITE_TEMPLATE -*&---------------------------------------------------------------------* -FORM write_template RAISING zcx_excel. - - CASE lb_write. - - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - REPLACE '&' IN gc_save_file_name WITH 'xlsx'. " Pass extension for standard writer - lcl_output=>output( excel ). - - WHEN '.XLSM'. - REPLACE '&' IN gc_save_file_name WITH 'xlsm'. " Pass extension for macro-writer - lcl_output=>output( cl_excel = excel - iv_writerclass_name = 'ZCL_EXCEL_WRITER_XLSM' ). - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - lcl_output=>output( cl_excel = excel - iv_writerclass_name = lb_write ). - ENDCASE. - -ENDFORM. " WRITE_TEMPLATE - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_drawing TYPE REF TO zcl_excel_drawing. - -TYPES: BEGIN OF gty_icon, -* name TYPE icon_name, "Fix #228 - name TYPE iconname, "Fix #228 - objid TYPE w3objid, - END OF gty_icon, - gtyt_icon TYPE STANDARD TABLE OF gty_icon WITH NON-UNIQUE DEFAULT KEY. - -DATA: lt_icon TYPE gtyt_icon, - lv_row TYPE sytabix, - ls_wwwdatatab TYPE wwwdatatab, - lt_mimedata TYPE STANDARD TABLE OF w3mime WITH NON-UNIQUE DEFAULT KEY, - lv_xstring TYPE xstring. - -FIELD-SYMBOLS: <icon> LIKE LINE OF lt_icon, - <mimedata> LIKE LINE OF lt_mimedata. - -CONSTANTS: gc_save_file_name TYPE string VALUE '38_SAP-Icons.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -TABLES: icon. -SELECT-OPTIONS: s_icon FOR icon-name DEFAULT 'ICON_LED_*' OPTION CP. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Icons' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - lo_column_dimension->set_auto_size( 'X' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( 'X' ). - -* Get all icons - SELECT name - INTO TABLE lt_icon - FROM icon - WHERE name IN s_icon - ORDER BY name. - LOOP AT lt_icon ASSIGNING <icon>. - - lv_row = sy-tabix. -*--------------------------------------------------------------------* -* Set name of icon -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'A' - ip_value = <icon>-name ). -*--------------------------------------------------------------------* -* Check whether the mime-repository holds some icondata for us -*--------------------------------------------------------------------* - -* Get key - SELECT SINGLE objid - INTO <icon>-objid - FROM wwwdata - WHERE text = <icon>-name. - CHECK sy-subrc = 0. " :o( - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'B' - ip_value = <icon>-objid ). - -* Load mimedata - CLEAR lt_mimedata. - CLEAR ls_wwwdatatab. - ls_wwwdatatab-relid = 'MI' . - ls_wwwdatatab-objid = <icon>-objid. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_wwwdatatab - TABLES - mime = lt_mimedata - EXCEPTIONS - wrong_object_type = 1 - import_error = 2 - OTHERS = 3. - CHECK sy-subrc = 0. " :o( - - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = lv_row - ip_from_col = 'C' ). - CLEAR lv_xstring. - LOOP AT lt_mimedata ASSIGNING <mimedata>. - CONCATENATE lv_xstring <mimedata>-line INTO lv_xstring IN BYTE MODE. - ENDLOOP. - - lo_drawing->set_media( ip_media = lv_xstring - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = 16 - ip_height = 14 ). - lo_worksheet->add_drawing( lo_drawing ). - - ENDLOOP. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel39. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - -DATA lv_value TYPE i. - -DATA: ls_io TYPE skwf_io. - -DATA: ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location. - -DATA lo_bar1 TYPE REF TO zcl_excel_graph_bars. -DATA lo_bar2 TYPE REF TO zcl_excel_graph_bars. -DATA lo_pie TYPE REF TO zcl_excel_graph_pie. -DATA lo_line TYPE REF TO zcl_excel_graph_line. - -CONSTANTS: gc_save_file_name TYPE string VALUE '39_Charts.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Create a pie chart and series - CREATE OBJECT lo_pie. - - CALL METHOD lo_pie->create_serie - EXPORTING - ip_order = 0 - ip_sheet = 'Values' - ip_lbl_from_col = 'B' - ip_lbl_from_row = '1' - ip_lbl_to_col = 'B' - ip_lbl_to_row = '3' - ip_ref_from_col = 'A' - ip_ref_from_row = '1' - ip_ref_to_col = 'A' - ip_ref_to_row = '3' - ip_sername = 'My serie 1'. - - " Set style - lo_pie->set_style( zcl_excel_graph=>c_style_15 ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar1. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set style - lo_bar1->set_style( zcl_excel_graph=>c_style_default ). - - " Set label to none - lo_bar1->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar2. - - CALL METHOD lo_bar2->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_yes - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set layout - lo_bar2->set_show_legend_key( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_values( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_cat_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_ser_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_percent( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_varycolor( zcl_excel_graph_bars=>c_show_true ). - - " Create a line chart, series and axes - CREATE OBJECT lo_line. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 0 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 1 - ip_symbol = zcl_excel_graph_line=>c_symbol_none - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 2 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$F$1:$F$3' - ip_ref = 'Values!$E$1:$E$3' - ip_sername = 'My serie 3'. - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - - - - - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet (Pie sheet) - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'PieChart' ). - - " Create global drawing, set type as pie chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART PIE' ). - lo_drawing->graph = lo_pie. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_pie. - - "Set chart position (anchor 2 cells) - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart1 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart1' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 2 SERIES' ). - lo_drawing->graph = lo_bar1. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 11. - ls_lower-row = 22. - ls_lower-col = 21. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart2 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart2' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 1 SERIE' ). - lo_drawing->graph = lo_bar2. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " LineChart sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'LineChart' ). - - " Create global drawing, set type as line chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART LINES' ). - lo_drawing->graph = lo_line. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_line. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " Values sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for chart - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = lv_value ). - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = lv_value ). - lv_value = -1. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'One (Minus)' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = lv_value ). - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'F' ip_row = 3 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 1 ip_value = 'Three' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL4 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - - lv_tabcolor TYPE zexcel_s_tabcolor, - - ls_header TYPE zexcel_s_worksheet_head_foot, - ls_footer TYPE zexcel_s_worksheet_head_foot. - -CONSTANTS: gc_save_file_name TYPE string VALUE '04_Sheets.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). -* Set color to tab with sheetname - Red - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = 'FF' - ip_green = '00' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to second sheet' ip_hyperlink = lo_hyperlink ). - - " Page printing settings - lo_worksheet->sheet_setup->set_page_margins( ip_header = '1' ip_footer = '1' ip_unit = 'cm' ). - lo_worksheet->sheet_setup->black_and_white = 'X'. - lo_worksheet->sheet_setup->fit_to_page = 'X'. " you should turn this on to activate fit_to_height and fit_to_width - lo_worksheet->sheet_setup->fit_to_height = 0. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->fit_to_width = 2. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lo_worksheet->sheet_setup->page_order = zcl_excel_sheet_setup=>c_ord_downthenover. - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->scale = 80. " used only if ip_fit_to_page = SPACE - - " Header and Footer - ls_header-right_value = 'print date &D'. - ls_header-right_font-size = 8. - ls_header-right_font-name = zcl_excel_style_font=>c_name_arial. - - ls_footer-left_value = '&Z&F'. "Path / Filename - ls_footer-left_font = ls_header-right_font. - ls_footer-right_value = 'page &P of &N'. "page x of y - ls_footer-right_font = ls_header-right_font. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). -* Set color to tab with sheetname - Green - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to first sheet' ip_hyperlink = lo_hyperlink ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Sheet3 is hidden' ). - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). -* Set color to tab with sheetname - Blue - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = '00' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). -* Set color to tab with sheetname - other color - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Cell B3 has value 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 0 ). - lo_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_hidezero. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_row TYPE zexcel_cell_row, - lv_col TYPE i, - lv_row_char TYPE char10, - lv_value TYPE string, - ls_fontcolor TYPE zexcel_style_color_argb. - -CONSTANTS: gc_save_file_name TYPE string VALUE '40_Printsettings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Printsettings' ). - -*--------------------------------------------------------------------* -* Prepare sheet with trivial data -* - first 4 columns will have fontocolor set -* - first 3 rows will have fontcolor set -* These marked cells will be used for repeatable rows/columns on printpages -*--------------------------------------------------------------------* - DO 100 TIMES. " Rows - - lv_row = sy-index . - WRITE lv_row TO lv_row_char. - - DO 20 TIMES. - - lv_col = sy-index - 1. - CONCATENATE sy-abcde+lv_col(1) lv_row_char INTO lv_value. - lv_col = sy-index. - lo_worksheet->set_cell( ip_row = lv_row - ip_column = lv_col - ip_value = lv_value ). - - TRY. - IF lv_row <= 3. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid - ip_fill_fgcolor_rgb = zcl_excel_style_color=>c_yellow ). - ENDIF. - IF lv_col <= 4. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_font_color_rgb = zcl_excel_style_color=>c_red ). - ENDIF. - CATCH zcx_excel . - ENDTRY. - - ENDDO. - - - - ENDDO. - - -*--------------------------------------------------------------------* -* Printsettings -*--------------------------------------------------------------------* - TRY. - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = 'A' - iv_columns_to = 'D' ). - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = 1 - iv_rows_to = 3 ). - CATCH zcx_excel . - ENDTRY. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL5 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel5. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset TYPE zexcel_conditional_iconset. - - - -CONSTANTS: gc_save_file_name TYPE string VALUE '05_Conditional.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '33'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '66'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_false. - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 500 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL6 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel6. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_row TYPE syindex, - lv_formula TYPE string. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '06_Formulas.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -*--------------------------------------------------------------------* -* Get some testdata -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = -10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - -*--------------------------------------------------------------------* -* Demonstrate using formulas -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_formula = 'SUM(C4:C8)' ). - - -*--------------------------------------------------------------------* -* Demonstrate standard EXCEL-behaviour when copying a formula to another cell -* by calculating the resulting formula to put into another cell -*--------------------------------------------------------------------* - DO 10 TIMES. - - lv_formula = zcl_excel_common=>shift_formula( iv_reference_formula = 'SUM(C4:C8)' - iv_shift_cols = 0 " Offset in Columns - here we copy in same column --> 0 - iv_shift_rows = sy-index ). " Offset in Row - here we copy downward --> sy-index - lv_row = 9 + sy-index. " Absolute row = sy-index rows below reference cell - lo_worksheet->set_cell( ip_row = lv_row ip_column = 'C' ip_formula = lv_formula ). - - ENDDO. - -*--------------------------------------------------------------------* -*** Create output -*--------------------------------------------------------------------* - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL7 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel7. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset3 TYPE zexcel_conditional_iconset, - ls_iconset4 TYPE zexcel_conditional_iconset, - ls_iconset5 TYPE zexcel_conditional_iconset, - ls_databar TYPE zexcel_conditional_databar, - ls_colorscale2 TYPE zexcel_conditional_colorscale, - ls_colorscale3 TYPE zexcel_conditional_colorscale. - -CONSTANTS: gc_save_file_name TYPE string VALUE '07_ConditionalAll.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - ls_iconset3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo1_value = '0'. - ls_iconset3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo2_value = '33'. - ls_iconset3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo3_value = '66'. - ls_iconset3-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset4-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo1_value = '0'. - ls_iconset4-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo2_value = '25'. - ls_iconset4-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo3_value = '50'. - ls_iconset4-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo4_value = '75'. - ls_iconset4-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset5-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo1_value = '0'. - ls_iconset5-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo2_value = '20'. - ls_iconset5-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo3_value = '40'. - ls_iconset5-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo4_value = '60'. - ls_iconset5-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo5_value = '80'. - ls_iconset5-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_databar-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_databar-cfvo1_value = '0'. - ls_databar-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_databar-cfvo2_value = '0'. - ls_databar-colorrgb = 'FF638EC6'. - - ls_colorscale2-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale2-cfvo1_value = '0'. - ls_colorscale2-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale2-cfvo2_value = '50'. - ls_colorscale2-colorrgb1 = 'FFF8696B'. - ls_colorscale2-colorrgb2 = 'FF63BE7B'. - - ls_colorscale3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale3-cfvo1_value = '0'. - ls_colorscale3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale3-cfvo2_value = '50'. - ls_colorscale3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_colorscale3-cfvo3_value = '0'. - ls_colorscale3-colorrgb1 = 'FFF8696B'. - ls_colorscale3-colorrgb2 = 'FFFFEB84'. - ls_colorscale3-colorrgb3 = 'FF63BE7B'. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -* ICONSET - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrows. - - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 5 - ip_stop_column = 'B' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'C_ICONSET_3ARROWS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 5 - ip_stop_column = 'C' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'C_ICONSET_3ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = 50 ). - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3flags. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 5 - ip_stop_column = 'D' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'C_ICONSET_3FLAGS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 5 - ip_stop_column = 'E' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'C_ICONSET_3TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 5 - ip_stop_column = 'F' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'C_ICONSET_3TRAFFICLIGHTS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3signs. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'G' - ip_start_row = 5 - ip_stop_column = 'G' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = 'C_ICONSET_3SIGNS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'G' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'G' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'G' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'G' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'G' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'H' - ip_start_row = 5 - ip_stop_column = 'H' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'H' ip_value = 'C_ICONSET_3SYMBOLS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'H' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'H' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'H' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'H' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'H' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'I' - ip_start_row = 5 - ip_stop_column = 'I' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'I' ip_value = 'C_ICONSET_3SYMBOLS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'I' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'I' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'I' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'I' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'I' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrows. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 12 - ip_stop_column = 'B' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = 'C_ICONSET_4ARROWS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 12 - ip_stop_column = 'C' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'C' ip_value = 'C_ICONSET_4ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4redtoblack. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 12 - ip_stop_column = 'D' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'D' ip_value = 'C_ICONSET_4REDTOBLACK' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4rating. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 12 - ip_stop_column = 'E' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'E' ip_value = 'C_ICONSET_4RATING' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4trafficlights. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 12 - ip_stop_column = 'F' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'F' ip_value = 'C_ICONSET_4TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 19 - ip_stop_column = 'B' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'B' ip_value = 'C_ICONSET_5ARROWS' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 19 - ip_stop_column = 'C' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'C' ip_value = 'C_ICONSET_5ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5rating. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 19 - ip_stop_column = 'D' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'D' ip_value = 'C_ICONSET_5RATING' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5quarters. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 19 - ip_stop_column = 'E' - ip_stop_row = 23 ). - -* DATABAR - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'B' ip_value = 'DATABAR' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_databar. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_databar = ls_databar. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 26 - ip_stop_column = 'B' - ip_stop_row = 30 ). - -* COLORSCALE - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'C' ip_value = 'COLORSCALE 2 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 26 - ip_stop_column = 'C' - ip_stop_row = 30 ). - - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'D' ip_value = 'COLORSCALE 3 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 26 - ip_stop_column = 'D' - ip_stop_row = 30 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL8 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel8. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range. - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '08_Range.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Sheet1'. - lo_worksheet->set_title( lv_title ). - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'range'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - " Define another Range with a name longer than 40 characters that - " tests the fix of issue #168 ranges namescan be only up to 20 chars - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'A_range_with_a_name_that_is_longer_than_20_characters'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Range Value 1' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Range Value 2' ). - - " issue #163 - " Define another Range with sheet visibility - lo_range = lo_worksheet->add_new_range( ). - lo_range->name = 'A_range_with_sheet_visibility'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'Range Value 3' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 'Range Value 4' ). - " issue #163 - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL9 -*& -*&---------------------------------------------------------------------* -*& abap2xlsx Demo: Data validations -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel9. - -CONSTANTS: c_fruits TYPE string VALUE 'Fruits', - c_vegetables TYPE string VALUE 'Vegetables', - c_meat TYPE string VALUE 'Meat', - c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: row TYPE zexcel_cell_row. - - -DATA: lv_title TYPE zexcel_sheet_title. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '09_DataValidation.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_sbook TYPE flag. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = c_meat ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Pork' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Beef' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Chicken' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'Turkey' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_meat. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'B' - ip_start_row = 4 - ip_stop_column = 'B' - ip_stop_row = 7 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fruits. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = c_vegetables ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Cucumber' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Sweet pepper ' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Lettuce' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_vegetables. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 6 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Table with Data Validation'. - lo_worksheet->set_title( lv_title ). - - " Maximum Text length - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'Validate Maximum Text length of <= 10 in Cell A2:' ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'abcdefghij' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_textlength. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_lessthanorequal. - lo_data_validation->formula1 = 10. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'A'. - - " Integer Value between 1 and 10 - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Validate Integer Value between 1 and 10 in Cell A5:' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = '5' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_whole. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_between. - lo_data_validation->formula1 = 1. - lo_data_validation->formula2 = 10. - lo_data_validation->prompttitle = 'Range'. - lo_data_validation->prompt = 'Enter a value between 1 and 10'. - lo_data_validation->errortitle = 'Error'. - lo_data_validation->error = 'You have entered a wrong value. Please use only numbers between 1 and 10.'. - lo_data_validation->cell_row = 5. - lo_data_validation->cell_column = 'A'. - - " Evaluation by Formula from issue #161 - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Validate if B8 contains a "-":' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Text' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = '-' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lo_data_validation->formula1 = '"IF(B8<>"""";INDIRECT(LEFT(B8;SEARCH(""-"";B8;1)));EMPTY)"'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'A'. - - " There was an error when data validation was combined with cell merges this should test that: - lo_worksheet->set_cell( ip_row = 10 ip_column = 'A' ip_value = 'Demo for data validation with a dropdown list' ). - lo_worksheet->set_merge( ip_row = 10 ip_column_start = 'A' ip_column_end = 'F' ). - - " Headlines - lo_worksheet->set_cell( ip_row = 11 ip_column = 'A' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = c_vegetables ). - - row = 12. - WHILE row < 20. " Starting with 14500 the data validation is dropped 14000 are still ok - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fruits. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'A'. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = 'Select a value' ). - " 2nd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_vegetables. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'B'. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = 'Select a value' ). - " 3rd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_meat. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = 'Select a value' ). - " 4th - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'D'. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = 'Select a value' ). - " Increment row - row = row + 1. - ENDWHILE. - - IF p_sbook = abap_true. - DATA: bookings type TABLE OF sbook. - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'SBOOK'. - lo_worksheet->set_title( lv_title ). - - SELECT * from sbook INTO TABLE bookings UP TO 4000 ROWS. - - lo_worksheet->bind_table( - EXPORTING - ip_table = bookings -* it_field_catalog = " Table binding field catalog -* is_table_settings = " Excel table binding settings -* IMPORTING -* es_table_settings = " Excel table binding settings - ). - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_EXCEL_OUTPUTOPT_INCL -*&---------------------------------------------------------------------* -CLASS lcl_output DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: - output IMPORTING cl_excel TYPE REF TO zcl_excel - iv_writerclass_name TYPE clike OPTIONAL, - f4_path RETURNING VALUE(selected_folder) TYPE string, - parametertexts. - - PRIVATE SECTION. - METHODS: - download_frontend, - download_backend, - display_online, - send_email. - - DATA: xdata TYPE xstring, " Will be used for sending as email - t_rawdata TYPE solix_tab, " Will be used for downloading or open directly - bytecount TYPE i. " Will be used for downloading or open directly -ENDCLASS. "lcl_output DEFINITION - - -SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE txt_bl1. -PARAMETERS: rb_down RADIOBUTTON GROUP rb1 USER-COMMAND space. - -PARAMETERS: rb_back RADIOBUTTON GROUP rb1. - -PARAMETERS: rb_show RADIOBUTTON GROUP rb1 DEFAULT 'X' . - -PARAMETERS: rb_send RADIOBUTTON GROUP rb1. - -PARAMETERS: p_path TYPE string LOWER CASE MODIF ID pat. -PARAMETERS: p_email TYPE string LOWER CASE MODIF ID ema OBLIGATORY DEFAULT 'insert_your_emailadress@here'. -PARAMETERS: p_backfn TYPE text40 NO-DISPLAY. -SELECTION-SCREEN END OF BLOCK bl1. - - -AT SELECTION-SCREEN OUTPUT. - LOOP AT SCREEN. - - IF rb_down IS INITIAL AND screen-group1 = 'PAT'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - IF rb_send IS INITIAL AND screen-group1 = 'EMA'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - MODIFY SCREEN. - - ENDLOOP. - -INITIALIZATION. - IF sy-batch IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = p_path ). - cl_gui_cfw=>flush( ). - ENDIF. - lcl_output=>parametertexts( ). " If started in language w/o textelements translated set defaults - sy-title = gc_save_file_name. - txt_bl1 = 'Output options'(bl1). - p_backfn = gc_save_file_name. " Use as default if nothing else is supplied by submit - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - p_path = lcl_output=>f4_path( ). - - -*----------------------------------------------------------------------* -* CLASS lcl_output IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_output IMPLEMENTATION. - METHOD output. - - DATA: cl_output TYPE REF TO lcl_output, - cl_writer TYPE REF TO zif_excel_writer. - - IF iv_writerclass_name IS INITIAL. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. - ELSE. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE (iv_writerclass_name). - ENDIF. - cl_output->xdata = cl_writer->write_file( cl_excel ). - -* After 6.40 via cl_bcs_convert - cl_output->t_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstring = cl_output->xdata ). - cl_output->bytecount = xstrlen( cl_output->xdata ). - -* before 6.40 -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = cl_output->xdata -* IMPORTING -* output_length = cl_output->bytecount -* TABLES -* binary_tab = cl_output->t_rawdata. - - CASE 'X'. - WHEN rb_down. - IF sy-batch IS INITIAL. - cl_output->download_frontend( ). - ELSE. - MESSAGE e001(00) WITH 'Frontenddownload impossible in background processing'. - ENDIF. - - WHEN rb_back. - cl_output->download_backend( ). - - WHEN rb_show. - IF sy-batch IS INITIAL. - cl_output->display_online( ). - ELSE. - MESSAGE e001(00) WITH 'Online display absurd in background processing'. - ENDIF. - - WHEN rb_send. - cl_output->send_email( ). - - ENDCASE. - ENDMETHOD. "output - - METHOD f4_path. - DATA: new_path TYPE string, - repid TYPE syrepid, - dynnr TYPE sydynnr, - lt_dynpfields TYPE TABLE OF dynpread, - ls_dynpfields LIKE LINE OF lt_dynpfields. - -* Get current value - dynnr = sy-dynnr. - repid = sy-repid. - ls_dynpfields-fieldname = 'P_PATH'. - APPEND ls_dynpfields TO lt_dynpfields. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = repid - dynumb = dynnr - TABLES - dynpfields = lt_dynpfields - EXCEPTIONS - invalid_abapworkarea = 1 - invalid_dynprofield = 2 - invalid_dynproname = 3 - invalid_dynpronummer = 4 - invalid_request = 5 - no_fielddescription = 6 - invalid_parameter = 7 - undefind_error = 8 - double_conversion = 9 - stepl_not_found = 10 - OTHERS = 11. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - EXIT. - ENDIF. - - READ TABLE lt_dynpfields INTO ls_dynpfields INDEX 1. - - new_path = ls_dynpfields-fieldvalue. - selected_folder = new_path. - - cl_gui_frontend_services=>directory_browse( - EXPORTING - window_title = 'Select path to download EXCEL-file' - initial_folder = new_path - CHANGING - selected_folder = new_path - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4 - ). - cl_gui_cfw=>flush( ). - CHECK new_path IS NOT INITIAL. - selected_folder = new_path. - - ENDMETHOD. "f4_path - - METHOD parametertexts. -* If started in language w/o textelements translated set defaults -* Furthermore I don't have to change the selectiontexts of all demoreports. - DEFINE default_parametertext. - if %_&1_%_app_%-text = '&1' or - %_&1_%_app_%-text is initial. - %_&1_%_app_%-text = &2. - endif. - END-OF-DEFINITION. - - default_parametertext: rb_down 'Save to frontend', - rb_back 'Save to backend', - rb_show 'Direct display', - rb_send 'Send via email', - - p_path 'Frontend-path to download to', - p_email 'Email to send xlsx to'. - - ENDMETHOD. "parametertexts - - METHOD: download_frontend. - DATA: filename TYPE string. -* I don't like p_path here - but for this include it's ok - filename = p_path. -* Add trailing "\" or "/" - IF filename CA '/'. - REPLACE REGEX '([^/])\s*$' IN filename WITH '$1/' . - ELSE. - REPLACE REGEX '([^\\])\s*$' IN filename WITH '$1\\'. - ENDIF. - - CONCATENATE filename gc_save_file_name INTO filename. -* Get trailing blank - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = bytecount - filename = filename - filetype = 'BIN' - CHANGING data_tab = t_rawdata ). - ENDMETHOD. "download_frontend - - METHOD download_backend. - DATA: bytes_remain TYPE i. - FIELD-SYMBOLS: <rawdata> LIKE LINE OF t_rawdata. - - OPEN DATASET p_backfn FOR OUTPUT IN BINARY MODE. - CHECK sy-subrc = 0. - - bytes_remain = bytecount. - - LOOP AT t_rawdata ASSIGNING <rawdata>. - - AT LAST. - CHECK bytes_remain >= 0. - TRANSFER <rawdata> TO p_backfn LENGTH bytes_remain. - EXIT. - ENDAT. - - TRANSFER <rawdata> TO p_backfn. - SUBTRACT 255 FROM bytes_remain. " Solix has length 255 - - ENDLOOP. - - CLOSE DATASET p_backfn. - - - - - IF sy-calld = 'X'. " no need to display anything if download was selected and report was called for demo purposes - LEAVE PROGRAM. - ELSE. - MESSAGE 'Data transferred to default backend directory' TYPE 'I'. - ENDIF. - ENDMETHOD. "download_backend - - METHOD display_online. - DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control, "OIContainerCtrl - cl_document TYPE REF TO i_oi_document_proxy. "Office Dokument - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = cl_gui_container=>screen0 - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - WRITE: '.'. " To create an output. That way screen0 will exist - ENDMETHOD. "display_online - - METHOD send_email. -* Needed to send emails - DATA: bcs_exception TYPE REF TO cx_bcs, - errortext TYPE string, - cl_send_request TYPE REF TO cl_bcs, - cl_document TYPE REF TO cl_document_bcs, - cl_recipient TYPE REF TO if_recipient_bcs, - cl_sender TYPE REF TO cl_cam_address_bcs, - t_attachment_header TYPE soli_tab, - wa_attachment_header LIKE LINE OF t_attachment_header, - attachment_subject TYPE sood-objdes, - - sood_bytecount TYPE sood-objlen, - mail_title TYPE so_obj_des, - t_mailtext TYPE soli_tab, - wa_mailtext LIKE LINE OF t_mailtext, - send_to TYPE adr6-smtp_addr, - sent TYPE os_boolean. - - - mail_title = 'Mail title'. - wa_mailtext = 'Mailtext'. - APPEND wa_mailtext TO t_mailtext. - - TRY. -* Create send request - cl_send_request = cl_bcs=>create_persistent( ). -* Create new document with mailtitle and mailtextg - cl_document = cl_document_bcs=>create_document( i_type = 'RAW' "#EC NOTEXT - i_text = t_mailtext - i_subject = mail_title ). -* Add attachment to document -* since the new excelfiles have an 4-character extension .xlsx but the attachment-type only holds 3 charactes .xls, -* we have to specify the real filename via attachment header -* Use attachment_type xls to have SAP display attachment with the excel-icon - attachment_subject = gc_save_file_name. - CONCATENATE '&SO_FILENAME=' attachment_subject INTO wa_attachment_header. - APPEND wa_attachment_header TO t_attachment_header. -* Attachment - sood_bytecount = bytecount. " next method expects sood_bytecount instead of any positive integer *sigh* - cl_document->add_attachment( i_attachment_type = 'XLS' "#EC NOTEXT - i_attachment_subject = attachment_subject - i_attachment_size = sood_bytecount - i_att_content_hex = t_rawdata - i_attachment_header = t_attachment_header ). - -* add document to send request - cl_send_request->set_document( cl_document ). - -* set sender in case if no own email is availabe -* cl_sender = cl_cam_address_bcs=>create_internet_address( 'sender@sender.sender' ). -* cl_send_request->set_sender( cl_sender ). - -* add recipient(s) - here only 1 will be needed - send_to = p_email. - IF send_to IS INITIAL. - send_to = 'no_email@no_email.no_email'. " Place into SOST in any case for demonstration purposes - ENDIF. - cl_recipient = cl_cam_address_bcs=>create_internet_address( send_to ). - cl_send_request->add_recipient( cl_recipient ). - -* Und abschicken - sent = cl_send_request->send( i_with_error_screen = 'X' ). - - COMMIT WORK. - - IF sent IS INITIAL. - MESSAGE i500(sbcoms) WITH p_email. - ELSE. - MESSAGE s022(so). - MESSAGE 'Document ready to be sent - Check SOST or SCOT' TYPE 'I'. - ENDIF. - - CATCH cx_bcs INTO bcs_exception. - errortext = bcs_exception->if_message~get_text( ). - MESSAGE errortext TYPE 'I'. - - ENDTRY. - ENDMETHOD. "send_email - - -ENDCLASS. "lcl_output IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched1. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo01' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_reader TYPE REF TO zif_excel_reader, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lt_files TYPE filetable, - ls_file TYPE file_table, - lv_rc TYPE i, - lv_value TYPE zexcel_cell_value. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'TechEd01.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - -******************************* -* abap2xlsx read XLSX * -******************************* - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_2007. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_worksheet->get_cell( EXPORTING ip_column = 'C' - ip_row = 10 - IMPORTING ep_value = lv_value ). - - WRITE: 'abap2xlsx total score is ', lv_value. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED2 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched2. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lv_style_title_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - -* ls_key-relid = 'MI'. -* ls_key-objid = 'WBLOGO'. -* lo_drawing->set_media_www( ip_key = ls_key -* ip_width = 140 -* ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lo_send_request TYPE REF TO cl_bcs, - lo_document TYPE REF TO cl_document_bcs, - lo_sender TYPE REF TO cl_sapuser_bcs, - lo_recipient TYPE REF TO cl_sapuser_bcs, - lo_recipient_i TYPE REF TO CL_CAM_ADDRESS_BCS. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lv_bytecount_c TYPE sood-objlen, - lt_file_tab TYPE solix_tab. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - lv_bytecount_c = lv_bytecount. - - " Send via email - lo_document = cl_document_bcs=>create_document( i_type = 'RAW' - i_subject = 'Demo TechEd' ). - - lo_document->add_attachment( i_attachment_type = 'EXT' - i_attachment_subject = 'abap2xlsx.xlsx' - i_attachment_size = lv_bytecount_c - i_att_content_hex = lt_file_tab ). - - lo_sender = cl_sapuser_bcs=>create( sy-uname ). - lo_recipient = cl_sapuser_bcs=>create( sy-uname ). -* lo_recipient_i = cl_cam_address_bcs=>create_internet_address( 'ivan.femia@techedge.it' ). - - lo_send_request = cl_bcs=>create_persistent( ). - lo_send_request->set_document( lo_document ). - lo_send_request->set_sender( lo_sender ). - lo_send_request->add_recipient( lo_recipient ). - lo_send_request->set_send_immediately( abap_true ). - lo_send_request->send( ). - - - - - - - - - - - - - - - - PROCESS BEFORE OUTPUT. - MODULE STATUS_9000. - -PROCESS AFTER INPUT. - MODULE USER_COMMAND_9000 AT EXIT-COMMAND. - MODULE USER_COMMAND_9000. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REPORT. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'ABAP2XLSX Inheritance.xlsx'. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL1 -* Variation of ZCL_EXCEL that creates numerous sheets -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel1 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor IMPORTING iv_sheetcount TYPE i DEFAULT 5. -ENDCLASS. - -CLASS lcl_my_zcl_excel1 IMPLEMENTATION. - METHOD constructor. - DATA: lv_sheets_to_create TYPE i. - super->constructor( ). - lv_sheets_to_create = iv_sheetcount - 1. " one gets created by standard class - DO lv_sheets_to_create TIMES. - TRY. - me->add_new_worksheet( ). - CATCH zcx_excel. - ENDTRY. - ENDDO. - me->set_active_sheet_index( 1 ). - - ENDMETHOD. -ENDCLASS. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL_WORKSHEET -* Variation of ZCL_EXCEL_WORKSHEET ( and ZCL_EXCEL that calls the new type of worksheet ) -* that sets a fixed title -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel2 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet DEFINITION INHERITING FROM zcl_excel_worksheet. - PUBLIC SECTION. - METHODS: constructor IMPORTING ip_excel TYPE REF TO zcl_excel - ip_title TYPE zexcel_sheet_title OPTIONAL " Will be ignored - keep parameter for demonstration purpose - RAISING zcx_excel. -ENDCLASS. - -CLASS lcl_my_zcl_excel2 IMPLEMENTATION. - METHOD constructor. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet. - - super->constructor( ). - -* To use own worksheet we have to remove the standard worksheet - lo_worksheet = get_active_worksheet( ). - me->worksheets->remove( lo_worksheet ). -* and replace it with own version - CREATE OBJECT lo_worksheet TYPE lcl_my_zcl_excel_worksheet - EXPORTING - ip_excel = me - ip_title = 'This title will be ignored'. - me->worksheets->add( lo_worksheet ). - - ENDMETHOD. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet IMPLEMENTATION. - METHOD constructor. - super->constructor( ip_excel = ip_excel - ip_title = 'Inherited Worksheet' ). - - ENDMETHOD. -ENDCLASS. - -DATA: go_excel1 TYPE REF TO lcl_my_zcl_excel1. -DATA: go_excel2 TYPE REF TO lcl_my_zcl_excel2. - - -SELECTION-SCREEN BEGIN OF BLOCK bli WITH FRAME TITLE text-bli. -PARAMETERS: rbi_1 RADIOBUTTON GROUP rbi DEFAULT 'X' , " Simple inheritance - rbi_2 RADIOBUTTON GROUP rbi. -SELECTION-SCREEN END OF BLOCK bli. - -INCLUDE zdemo_excel_outputopt_incl. - -END-OF-SELECTION. - - CASE 'X'. - - WHEN rbi_1. " Simple inheritance of zcl_excel, object created directly - CREATE OBJECT go_excel1 - EXPORTING - iv_sheetcount = 5. - lcl_output=>output( go_excel1 ). - - WHEN rbi_2. " Inheritance of zcl_excel_worksheet, inheritance of zcl_excel needed to allow this - CREATE OBJECT go_excel2. - lcl_output=>output( go_excel2 ). - - - ENDCASE. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZABAP2XLSX_DEMO_SHOW -*&---------------------------------------------------------------------* -REPORT zabap2xlsx_demo_like_se83. - - -*----------------------------------------------------------------------* -* CLASS lcl_perform DEFINITION -*----------------------------------------------------------------------* -CLASS lcl_perform DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: setup_objects, - collect_reports, - - handle_nav FOR EVENT double_click OF cl_gui_alv_grid - IMPORTING e_row. - - PRIVATE SECTION. - TYPES: BEGIN OF ty_reports, - progname TYPE reposrc-progname, - sort TYPE reposrc-progname, - filename TYPE string, - END OF ty_reports. - - CLASS-DATA: - lo_grid TYPE REF TO cl_gui_alv_grid, - lo_text TYPE REF TO cl_gui_textedit, - cl_document TYPE REF TO i_oi_document_proxy, - - t_reports TYPE STANDARD TABLE OF ty_reports WITH NON-UNIQUE DEFAULT KEY. - CLASS-DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control. "Office Dokument - -ENDCLASS. "lcl_perform DEFINITION - - -START-OF-SELECTION. - lcl_perform=>collect_reports( ). - lcl_perform=>setup_objects( ). - -END-OF-SELECTION. - - WRITE '.'. " Force output - - -*----------------------------------------------------------------------* -* CLASS lcl_perform IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_perform IMPLEMENTATION. - METHOD setup_objects. - DATA: lo_split TYPE REF TO cl_gui_splitter_container, - lo_container TYPE REF TO cl_gui_container. - - DATA: it_fieldcat TYPE lvc_t_fcat, - is_layout TYPE lvc_s_layo, - is_variant TYPE disvariant. - FIELD-SYMBOLS: <fc> LIKE LINE OF it_fieldcat. - - - CREATE OBJECT lo_split - EXPORTING - parent = cl_gui_container=>screen0 - rows = 1 - columns = 3 - no_autodef_progid_dynnr = 'X'. - lo_split->set_column_width( EXPORTING id = 1 - width = 20 ). - lo_split->set_column_width( EXPORTING id = 2 - width = 40 ). - -* Left: List of reports - lo_container = lo_split->get_container( row = 1 - column = 1 ). - - CREATE OBJECT lo_grid - EXPORTING - i_parent = lo_container. - SET HANDLER lcl_perform=>handle_nav FOR lo_grid. - - is_variant-report = sy-repid. - is_variant-handle = '0001'. - - is_layout-cwidth_opt = 'X'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'PROGNAME'. - <fc>-tabname = 'REPOSRC'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'SORT'. - <fc>-ref_field = 'PROGNAME'. - <fc>-ref_table = 'REPOSRC'. - - - lo_grid->set_table_for_first_display( EXPORTING - is_variant = is_variant - i_save = 'A' - is_layout = is_layout - CHANGING - it_outtab = t_reports - it_fieldcatalog = it_fieldcat - EXCEPTIONS - invalid_parameter_combination = 1 - program_error = 2 - too_many_lines = 3 - OTHERS = 4 ). - -* Middle: Text with coding - lo_container = lo_split->get_container( row = 1 - column = 2 ). - CREATE OBJECT lo_text - EXPORTING - parent = lo_container. - lo_text->set_readonly_mode( cl_gui_textedit=>true ). - lo_text->set_font_fixed( ). - - - -* right: DemoOutput - lo_container = lo_split->get_container( row = 1 - column = 3 ). - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = lo_container - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - - ENDMETHOD. "setup_objects - - "collect_reports - METHOD collect_reports. - FIELD-SYMBOLS:<report> LIKE LINE OF t_reports. - DATA: t_source TYPE STANDARD TABLE OF text255 WITH NON-UNIQUE DEFAULT KEY. - -* Get all demoreports - SELECT progname - INTO CORRESPONDING FIELDS OF TABLE t_reports - FROM reposrc - WHERE progname LIKE 'ZDEMO_EXCEL%' - AND progname <> sy-repid - AND subc = '1'. - - LOOP AT t_reports ASSIGNING <report>. - -* Check if already switched to new outputoptions - READ REPORT <report>-progname INTO t_source. - IF sy-subrc = 0. - FIND 'INCLUDE zdemo_excel_outputopt_incl.' IN TABLE t_source IGNORING CASE. - ENDIF. - IF sy-subrc <> 0. - DELETE t_reports. - CONTINUE. - ENDIF. - - -* Build half-numeric sort - <report>-sort = <report>-progname. - REPLACE REGEX '(ZDEMO_EXCEL)(\d\d)\s*$' IN <report>-sort WITH '$1\0$2'. " REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE - - REPLACE REGEX '(ZDEMO_EXCEL)(\d)\s*$' IN <report>-sort WITH '$1\0\0$2'. - ENDLOOP. - SORT t_reports BY sort progname. - - ENDMETHOD. "collect_reports - - METHOD handle_nav. - CONSTANTS: filename TYPE text80 VALUE 'ZABAP2XLSX_DEMO_SHOW.xlsx'. - DATA: wa_report LIKE LINE OF t_reports, - t_source TYPE STANDARD TABLE OF text255, - t_rawdata TYPE solix_tab, - wa_rawdata LIKE LINE OF t_rawdata, - bytecount TYPE i, - length TYPE i, - add_selopt TYPE flag. - - - READ TABLE t_reports INTO wa_report INDEX e_row-index. - CHECK sy-subrc = 0. - -* Set new text into middle frame - READ REPORT wa_report-progname INTO t_source. - lo_text->set_text_as_r3table( EXPORTING table = t_source ). - - -* Unload old xls-file - cl_document->close_document( ). - -* Get the demo -* If additional parameters found on selection screen, start via selection screen , otherwise start w/o - CLEAR add_selopt. - FIND 'PARAMETERS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ELSE. - FIND 'SELECT-OPTIONS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ENDIF. - ENDIF. - IF add_selopt IS INITIAL. - SUBMIT (wa_report-progname) AND RETURN "#EC CI_SUBMIT - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ELSE. - SUBMIT (wa_report-progname) VIA SELECTION-SCREEN AND RETURN "#EC CI_SUBMIT - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ENDIF. - - OPEN DATASET filename FOR INPUT IN BINARY MODE. - IF sy-subrc = 0. - DO. - CLEAR wa_rawdata. - READ DATASET filename INTO wa_rawdata LENGTH length. - IF sy-subrc <> 0. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - EXIT. - ENDIF. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - ENDDO. - CLOSE DATASET filename. - ENDIF. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - ENDMETHOD. "handle_nav - -ENDCLASS. "lcl_perform IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZANGRY_BIRDS -*& Just for fun -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zangry_birds. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_border_light TYPE REF TO zcl_excel_style_border, - lo_style_color0 TYPE REF TO zcl_excel_style, - lo_style_color1 TYPE REF TO zcl_excel_style, - lo_style_color2 TYPE REF TO zcl_excel_style, - lo_style_color3 TYPE REF TO zcl_excel_style, - lo_style_color4 TYPE REF TO zcl_excel_style, - lo_style_color5 TYPE REF TO zcl_excel_style, - lo_style_color6 TYPE REF TO zcl_excel_style, - lo_style_color7 TYPE REF TO zcl_excel_style, - lo_style_credit TYPE REF TO zcl_excel_style, - lo_style_link TYPE REF TO zcl_excel_style, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_style_color0_guid TYPE zexcel_cell_style, - lv_style_color1_guid TYPE zexcel_cell_style, - lv_style_color2_guid TYPE zexcel_cell_style, - lv_style_color3_guid TYPE zexcel_cell_style, - lv_style_color4_guid TYPE zexcel_cell_style, - lv_style_color5_guid TYPE zexcel_cell_style, - lv_style_color6_guid TYPE zexcel_cell_style, - lv_style_color7_guid TYPE zexcel_cell_style, - lv_style_credit_guid TYPE zexcel_cell_style, - lv_style_link_guid TYPE zexcel_cell_style, - lv_style TYPE zexcel_cell_style. - -DATA: lv_col_str TYPE zexcel_cell_column_alpha, - lv_row TYPE i, - lv_col TYPE i, - lt_mapper TYPE TABLE OF zexcel_cell_style, - ls_mapper TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'angry_birds.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_white. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - - " Create color white - lo_style_color0 = lo_excel->add_new_style( ). - lo_style_color0->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color0->fill->fgcolor-rgb = 'FFFFFFFF'. - lo_style_color0->borders->allborders = lo_border_light. - lv_style_color0_guid = lo_style_color0->get_guid( ). - - " Create color black - lo_style_color1 = lo_excel->add_new_style( ). - lo_style_color1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color1->fill->fgcolor-rgb = 'FF252525'. - lo_style_color1->borders->allborders = lo_border_light. - lv_style_color1_guid = lo_style_color1->get_guid( ). - - " Create color dark green - lo_style_color2 = lo_excel->add_new_style( ). - lo_style_color2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color2->fill->fgcolor-rgb = 'FF75913A'. - lo_style_color2->borders->allborders = lo_border_light. - lv_style_color2_guid = lo_style_color2->get_guid( ). - - " Create color light green - lo_style_color3 = lo_excel->add_new_style( ). - lo_style_color3->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color3->fill->fgcolor-rgb = 'FF9DFB73'. - lo_style_color3->borders->allborders = lo_border_light. - lv_style_color3_guid = lo_style_color3->get_guid( ). - - " Create color green - lo_style_color4 = lo_excel->add_new_style( ). - lo_style_color4->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color4->fill->fgcolor-rgb = 'FF92CF56'. - lo_style_color4->borders->allborders = lo_border_light. - lv_style_color4_guid = lo_style_color4->get_guid( ). - - " Create color 2dark green - lo_style_color5 = lo_excel->add_new_style( ). - lo_style_color5->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color5->fill->fgcolor-rgb = 'FF506228'. - lo_style_color5->borders->allborders = lo_border_light. - lv_style_color5_guid = lo_style_color5->get_guid( ). - - " Create color yellow - lo_style_color6 = lo_excel->add_new_style( ). - lo_style_color6->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color6->fill->fgcolor-rgb = 'FFC3E224'. - lo_style_color6->borders->allborders = lo_border_light. - lv_style_color6_guid = lo_style_color6->get_guid( ). - - " Create color yellow - lo_style_color7 = lo_excel->add_new_style( ). - lo_style_color7->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color7->fill->fgcolor-rgb = 'FFB3C14F'. - lo_style_color7->borders->allborders = lo_border_light. - lv_style_color7_guid = lo_style_color7->get_guid( ). - - " Credits - lo_style_credit = lo_excel->add_new_style( ). - lo_style_credit->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_credit->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_credit->font->size = 20. - lv_style_credit_guid = lo_style_credit->get_guid( ). - - " Link - lo_style_link = lo_excel->add_new_style( ). - lo_style_link->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_link->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. -* lo_style_link->font->size = 20. - lv_style_link_guid = lo_style_link->get_guid( ). - - " Create image map " line 2 - DO 30 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 3 - DO 28 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 4 - DO 27 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 5 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 6 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 7 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 8 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 9 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 10 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 11 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 12 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 13 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 14 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 12 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 15 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 16 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 17 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 18 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 19 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 27 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 20 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 21 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 19 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 22 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 23 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 24 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 25 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 26 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 27 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 28 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 29 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 30 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 31 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 32 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 33 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 34 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 35 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 36 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 37 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 38 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 39 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 22 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 40 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 41 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 42 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 43 - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 44 - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 45 - DO 16 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 46 - DO 18 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Angry Birds' ). - - lv_row = 1. - lv_col = 1. - - LOOP AT lt_mapper INTO ls_mapper. - lv_col_str = zcl_excel_common=>convert_column2alpha( lv_col ). - IF ls_mapper IS INITIAL. - lo_row_dimension = lo_worksheet->get_row_dimension( ip_row = lv_row ). - lo_row_dimension->set_row_height( ip_row_height = 8 ). - lv_col = 1. - lv_row = lv_row + 1. - CONTINUE. - ENDIF. - lo_worksheet->set_cell( ip_column = lv_col_str - ip_row = lv_row - ip_value = space - ip_style = ls_mapper ). - lv_col = lv_col + 1. - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = lv_col_str ). - lo_column_dimension->set_width( ip_width = 2 ). - ENDLOOP. - - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 15 - ip_value = 'Created with abap2xlsx' - ip_style = lv_style_credit_guid ). - - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 24 - ip_value = 'http://www.abap2xlsx.org' - ip_style = lv_style_link_guid - ip_hyperlink = lo_hyperlink ). - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'AP' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->set_merge( ip_row = 15 ip_column_start = 'AP' ip_row_to = 22 ip_column_end = 'AR' ). - lo_worksheet->set_merge( ip_row = 24 ip_column_start = 'AP' ip_row_to = 26 ip_column_end = 'AR' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_CALENDAR -*& abap2xlsx Demo: Create Calendar with Pictures -*&---------------------------------------------------------------------* -*& This report creates a monthly calendar in the specified date range. -*& Each month is put on a seperate worksheet. The pictures for each -*& month can be specified in a tab delimited file called "Calendar.txt" -*& which is saved in the Export Directory. By default this is the SAP -*& Workdir. The file contains 3 fields: -*& -*& Month (with leading 0) -*& Image Filename -*& Image Description -*& URL for the Description -*& -*& The Images should be landscape JPEG's with a 3:2 ratio and min. -*& 450 pixel height. They must also be saved in the Export Directory. -*& In my tests I've discovered a limit of 20 MB in the -*& cl_gui_frontend_services=>gui_download method. So keep your images -*& smaller or change to a server export using OPEN DATASET. -*&---------------------------------------------------------------------* - -REPORT zdemo_calendar. - -TYPE-POOLS: abap. -CONSTANTS: gc_save_file_name TYPE string VALUE 'Calendar.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. -INCLUDE zdemo_calendar_classes. - -DATA: lv_workdir TYPE string. - -PARAMETERS: p_from TYPE dfrom DEFAULT '20130101', - p_to TYPE dto DEFAULT '20131231'. - -SELECTION-SCREEN BEGIN OF BLOCK orientation WITH FRAME TITLE orient. -PARAMETERS: p_portr TYPE flag RADIOBUTTON GROUP orie, - p_lands TYPE flag RADIOBUTTON GROUP orie DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK orientation. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - orient = 'Orientation'(000). - -START-OF-SELECTION. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lo_style_month TYPE REF TO zcl_excel_style, - lv_style_month_guid TYPE zexcel_cell_style. - DATA: lo_style_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lv_style_border_guid TYPE zexcel_cell_style. - DATA: lo_style_center TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lv_full_path TYPE string, - image_descr_path TYPE string, - lv_file_separator TYPE c. - DATA: lv_content TYPE xstring, - width TYPE i, - lv_height TYPE i, - lv_from_row TYPE zexcel_cell_row. - - DATA: month TYPE i, - month_nr TYPE fcmnr, - count TYPE i VALUE 1, - title TYPE zexcel_sheet_title, - value TYPE string, - image_path TYPE string, - date_from TYPE datum, - date_to TYPE datum, - row TYPE zexcel_cell_row, - to_row TYPE zexcel_cell_row, - to_col TYPE zexcel_cell_column_alpha, - to_col_end TYPE zexcel_cell_column_alpha, - to_col_int TYPE i. - - DATA: month_names TYPE TABLE OF t247. - FIELD-SYMBOLS: <month_name> LIKE LINE OF month_names. - - TYPES: BEGIN OF tt_datatab, - month_nr TYPE fcmnr, - filename TYPE string, - descr TYPE string, - url TYPE string, - END OF tt_datatab. - - DATA: image_descriptions TYPE TABLE OF tt_datatab. - FIELD-SYMBOLS: <img_descr> LIKE LINE OF image_descriptions. - - CONSTANTS: lv_default_file_name TYPE string VALUE 'Calendar', "#EC NOTEXT - c_from_row_portrait TYPE zexcel_cell_row VALUE 28, - c_from_row_landscape TYPE zexcel_cell_row VALUE 38, - from_col TYPE zexcel_cell_column_alpha VALUE 'C', - c_height_portrait TYPE i VALUE 450, " Image Height in Portrait Mode - c_height_landscape TYPE i VALUE 670, " Image Height in Landscape Mode - c_factor TYPE f VALUE '1.5'. " Image Ratio, default 3:2 - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name '.xlsx' INTO lv_full_path. "#EC NOTEXT - - " Read Image Names for Month and Description - CONCATENATE p_path lv_file_separator lv_default_file_name '.txt' INTO image_descr_path. "#EC NOTEXT - cl_gui_frontend_services=>gui_upload( - EXPORTING - filename = image_descr_path " Name of file - filetype = 'ASC' " File Type (ASCII, Binary) - has_field_separator = 'X' - read_by_line = 'X' " File Written Line-By-Line to the Internal Table - CHANGING - data_tab = image_descriptions " Transfer table for file contents - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create Styles - " Create an underline double style - lo_style_month = lo_excel->add_new_style( ). - " lo_style_month->font->underline = abap_true. - " lo_style_month->font->underline_mode = zcl_excel_style_font=>c_underline_single. - lo_style_month->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_month->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_month->font->family = zcl_excel_style_font=>c_family_roman. - lo_style_month->font->bold = abap_true. - lo_style_month->font->size = 36. - lv_style_month_guid = lo_style_month->get_guid( ). - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lo_style_border->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_border_guid = lo_style_border->get_guid( ). - "Create style alignment center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_center->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_center_guid = lo_style_center->get_guid( ). - - " Get Month Names - CALL FUNCTION 'MONTH_NAMES_GET' - TABLES - month_names = month_names. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = p_from - i_date_to = p_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - date_from = p_from. - - WHILE count <= month. - IF count = 1. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - ELSE. - lo_worksheet = lo_excel->add_new_worksheet( ). - ENDIF. - - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - - title = count. - value = count. - CONDENSE title. - CONDENSE value. - lo_worksheet->set_title( title ). - lo_worksheet->set_print_gridlines( abap_false ). - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_col_dim = lo_worksheet->get_column_dimension( 'A' ). - lo_col_dim->set_width( '1.0' ). - lo_col_dim = lo_worksheet->get_column_dimension( 'B' ). - lo_col_dim->set_width( '2.0' ). - IF p_lands = abap_true. - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lv_height = c_height_landscape. - lv_from_row = c_from_row_landscape. - lo_worksheet->sheet_setup->margin_top = '0.10'. - lo_worksheet->sheet_setup->margin_left = '0.10'. - lo_worksheet->sheet_setup->margin_right = '0.10'. - lo_worksheet->sheet_setup->margin_bottom = '0.10'. - ELSE. - lo_col_dim = lo_worksheet->get_column_dimension( 'K' ). - lo_col_dim->set_width( '3.0' ). - lo_worksheet->sheet_setup->margin_top = '0.80'. - lo_worksheet->sheet_setup->margin_left = '0.55'. - lo_worksheet->sheet_setup->margin_right = '0.05'. - lo_worksheet->sheet_setup->margin_bottom = '0.30'. - lv_height = c_height_portrait. - lv_from_row = c_from_row_portrait. - ENDIF. - - " Add Month Name - month_nr = date_from+4(2). - IF p_portr = abap_true. - READ TABLE month_names WITH KEY mnr = month_nr ASSIGNING <month_name>. - CONCATENATE <month_name>-ltx ` ` date_from(4) INTO value. - row = lv_from_row - 2. - to_col = from_col. - ELSE. - row = lv_from_row - 1. - to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 32. - to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). - to_col_int = to_col_int + 1. - to_col_end = zcl_excel_common=>convert_column2alpha( to_col_int ). - CONCATENATE month_nr '/' date_from+2(2) INTO value. - to_row = row + 2. - lo_worksheet->set_merge( - EXPORTING - ip_column_start = to_col " Cell Column Start - ip_column_end = to_col_end " Cell Column End - ip_row = row " Cell Row - ip_row_to = to_row " Cell Row - ). - ENDIF. - lo_worksheet->set_cell( - EXPORTING - ip_column = to_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = lv_style_month_guid - ). - -* to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 7. -* to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). -* -* lo_worksheet->set_merge( -* EXPORTING -* ip_column_start = from_col " Cell Column Start -* ip_column_end = to_col " Cell Column End -* ip_row = row " Cell Row -* ip_row_to = row " Cell Row -* ). - - " Add drawing from a XSTRING read from a file - UNASSIGN <img_descr>. - READ TABLE image_descriptions WITH KEY month_nr = month_nr ASSIGNING <img_descr>. - IF <img_descr> IS ASSIGNED. - value = <img_descr>-descr. - IF p_portr = abap_true. - row = lv_from_row - 3. - ELSE. - row = lv_from_row - 2. - ENDIF. - IF NOT <img_descr>-url IS INITIAL. - hyperlink = zcl_excel_hyperlink=>create_external_link( <img_descr>-url ). - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - ELSE. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ). - ENDIF. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '22.0' ). - - " In Landscape mode the row between the description and the - " dates should be not so high - IF p_lands = abap_true. - row = lv_from_row - 3. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '7.0' ). - row = lv_from_row - 1. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - ENDIF. - - CONCATENATE p_path lv_file_separator <img_descr>-filename INTO image_path. - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 1 - ip_from_col = 'B' ). - - lv_content = zcl_helper=>load_image( image_path ). - width = lv_height * c_factor. - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = width - ip_height = lv_height ). - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - " Add Calendar -* CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH' -* EXPORTING -* day_in = date_from -* IMPORTING -* last_day_of_month = date_to. - date_to = date_from. - date_to+6(2) = '01'. " First of month - add 31 to date_to. " Somewhere in following month - date_to = date_to - date_to+6(2). " Last of month - IF p_portr = abap_true. - zcl_helper=>add_calendar( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ELSE. - zcl_helper=>add_calendar_landscape( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ENDIF. - count = count + 1. - date_from = date_to + 1. - ENDWHILE. - - lo_excel->set_active_sheet_index_by_name( '1' ). -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_CALENDAR_CLASSES -*&---------------------------------------------------------------------* - -*&---------------------------------------------------------------------* -*& Class ZCL_DATE_CALCULATION -*&---------------------------------------------------------------------* -* Text -*----------------------------------------------------------------------* -CLASS zcl_date_calculation DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: months_between_two_dates - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_incl_to TYPE flag - EXPORTING - e_month TYPE i. -ENDCLASS. "ZCL_DATE_CALCULATION - - -*----------------------------------------------------------------------* -* CLASS ZCL_DATE_CALCULATION IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation IMPLEMENTATION. - METHOD months_between_two_dates. - DATA: date_to TYPE datum. - DATA: BEGIN OF datum_von, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_von. - - DATA: BEGIN OF datum_bis, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_bis. - - e_month = 0. - - CHECK NOT ( i_date_from IS INITIAL ) - AND NOT ( i_date_to IS INITIAL ). - - date_to = i_date_to. - IF i_incl_to = abap_true. - date_to = date_to + 1. - ENDIF. - - datum_von = i_date_from. - datum_bis = date_to. - - e_month = ( datum_bis-jjjj - datum_von-jjjj ) * 12 - + ( datum_bis-mm - datum_von-mm ). - ENDMETHOD. "MONTHS_BETWEEN_TWO_DATES -ENDCLASS. "ZCL_DATE_CALCULATION IMPLEMENTATION - -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test DEFINITION FOR TESTING - " DURATION SHORT - " RISK LEVEL HARMLESS - "#AU Duration Medium - "#AU Risk_Level Harmless - . - PUBLIC SECTION. - METHODS: - months_between_two_dates FOR TESTING. -ENDCLASS. "zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test IMPLEMENTATION. - METHOD months_between_two_dates. - - DATA: date_from TYPE datum VALUE '20120101', - date_to TYPE datum VALUE '20121231'. - DATA: month TYPE i. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - cl_aunit_assert=>assert_equals( - exp = 12 " Data Object with Expected Type - act = month " Data Object with Current Value - msg = 'Calculated date is wrong' " Message in Case of Error - ). - - ENDMETHOD. "months_between_two_dates -ENDCLASS. "zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* CLASS zcl_helper DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: - load_image - IMPORTING - filename TYPE string - RETURNING value(r_image) TYPE xstring, - add_calendar - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calendar_landscape - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_a2x_footer - IMPORTING - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calender_week - IMPORTING - i_date TYPE datum - i_row TYPE zexcel_cell_row - i_col TYPE zexcel_cell_column_alpha - i_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet. -ENDCLASS. "zcl_helper DEFINITION - -*----------------------------------------------------------------------* -* CLASS zcl_helper IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper IMPLEMENTATION. - METHOD load_image. - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = filename - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = r_image - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - ENDMETHOD. "load_image - METHOD add_calendar. - DATA: day_names TYPE TABLE OF t246. - DATA: row TYPE zexcel_cell_row, - row_max TYPE i, - col_int TYPE zexcel_cell_column, - col_max TYPE i, - from_col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha, - lr_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lr_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: lv_date TYPE datum, - value TYPE string, - weekday TYPE wotnr, - weekrow TYPE wotnr VALUE 1, - day TYPE i, - width TYPE f, - height TYPE f. - DATA: hyperlink TYPE REF TO zcl_excel_hyperlink. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - from_col_int = zcl_excel_common=>convert_column2int( i_from_col ). - " Add description for Calendar Week - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = 'CW'(001) " Cell Value - ip_style = i_cw_style - ). - - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - LOOP AT day_names ASSIGNING <day_name>. - row = i_from_row. - col_int = from_col_int + <day_name>-wotnr. - col = zcl_excel_common=>convert_column2alpha( col_int ). - value = <day_name>-langt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - ENDLOOP. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - - row = i_from_row + weekrow. - col_int = from_col_int + weekday. - col = zcl_excel_common=>convert_column2alpha( col_int ). - - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - - IF weekday = 7. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - weekrow = weekrow + 1. - ENDIF. - lv_date = lv_date + 1. - ENDWHILE. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - " Add Created with abap2xlsx - row = row + 2. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - col_int = from_col_int. - col_max = from_col_int + 7. - WHILE col_int <= col_max. - col = zcl_excel_common=>convert_column2alpha( col_int ). - IF sy-index = 1. - width = '5.0'. - ELSE. - width = '11.4'. - ENDIF. - lr_col_dim = c_worksheet->get_column_dimension( col ). - lr_col_dim->set_width( width ). - col_int = col_int + 1. - ENDWHILE. - row = i_from_row + 1. - row_max = i_from_row + 6. - WHILE row <= row_max. - height = 50. - lr_row_dim = c_worksheet->get_row_dimension( row ). - lr_row_dim->set_row_height( height ). - row = row + 1. - ENDWHILE. - ENDMETHOD. "add_calendar - METHOD add_a2x_footer. - DATA: value TYPE string, - hyperlink TYPE REF TO zcl_excel_hyperlink. - - value = 'Created with abap2xlsx. Find more information at http://abap2xlsx.org.'(002). - hyperlink = zcl_excel_hyperlink=>create_external_link( 'http://abap2xlsx.org' ). "#EC NOTEXT - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - - ENDMETHOD. "add_a2x_footer - METHOD add_calendar_landscape. - DATA: day_names TYPE TABLE OF t246. - - DATA: lv_date TYPE datum, - day TYPE i, - value TYPE string, - weekday TYPE wotnr. - DATA: row TYPE zexcel_cell_row, - from_col_int TYPE zexcel_cell_column, - col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha. - DATA: lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - " Day name row - row = i_from_row. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - READ TABLE day_names ASSIGNING <day_name> - WITH KEY wotnr = weekday. - value = <day_name>-kurzt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - - " Day row - row = i_from_row + 1. - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - - - lv_date = lv_date + 1. - ENDWHILE. - " Add ABAP2XLSX Footer - row = i_from_row + 2. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = c_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - row = i_from_row + 3. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - - " Set with for all 31 coulumns - WHILE day < 32. - day = day + 1. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - ENDWHILE. - ENDMETHOD. "ADD_CALENDAR_LANDSCAPE - - METHOD add_calender_week. - DATA: week TYPE kweek, - week_int TYPE i, - value TYPE string. - " Add Calender Week - CALL FUNCTION 'DATE_GET_WEEK' - EXPORTING - date = i_date " Date for which the week should be calculated - IMPORTING - week = week. " Week for date (format:YYYYWW) - value = week+4(2). - week_int = value. - value = week_int. - CONDENSE value. - c_worksheet->set_cell( - EXPORTING - ip_column = i_col " Cell Column - ip_row = i_row " Cell Row - ip_value = value " Cell Value - ip_style = i_style - ). - ENDMETHOD. "add_calender_week -ENDCLASS. "zcl_helper IMPLEMENTATION - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel. - -DATA: lv_workdir TYPE string, - lv_upfile TYPE string. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = sy-lisel ). - CONCATENATE p_path sy-lisel '01_HelloWorld.xlsx' INTO lv_upfile. - - SUBMIT zdemo_excel1 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Hello world - SUBMIT zdemo_excel2 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Styles - SUBMIT zdemo_excel3 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: iTab binding - SUBMIT zdemo_excel4 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multi sheets, page setup and sheet properties - SUBMIT zdemo_excel5 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel6 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Formulas - SUBMIT zdemo_excel7 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel8 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Ranges - SUBMIT zdemo_excel9 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Data validation - SUBMIT zdemo_excel10 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind table with field catalog - " zdemo_excel11 is not added because it has a selection screen and - " you also need to have business partners maintained in transaction BP - SUBMIT zdemo_excel12 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Column size - SUBMIT zdemo_excel13 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Merge cell - SUBMIT zdemo_excel14 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Alignment - " zdemo_excel15 added at the end - SUBMIT zdemo_excel16 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Drawing - SUBMIT zdemo_excel17 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Lock sheet - SUBMIT zdemo_excel18 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Lock workbook - SUBMIT zdemo_excel19 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Set active sheet - " zdemo_excel20 is not added because it uses ALV and cannot be processed (OLE2) - SUBMIT zdemo_excel21 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Color Picker - SUBMIT zdemo_excel22 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind table with field catalog & sheet style - SUBMIT zdemo_excel23 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multiple sheets with and w/o grid lines, print options - SUBMIT zdemo_excel24 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multiple sheets with different default date formats - SUBMIT zdemo_excel25 AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Create and xlsx on Application Server (could be executed in batch mode) - " zdemo_excel26 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel27 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional Formatting - SUBMIT zdemo_excel28 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: CSV writer - " SUBMIT zdemo_excel29 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Macro enabled workbook - SUBMIT zdemo_excel30 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: ABAP Cell data types + leading blanks string - SUBMIT zdemo_excel31 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Autosize Column with different Font sizes - " zdemo_excel32 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel33 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Table autofilter - SUBMIT zdemo_excel34 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Static Styles Chess - SUBMIT zdemo_excel35 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Static Styles - SUBMIT zdemo_excel36 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Style applied to sheet, column and single cell - SUBMIT zdemo_excel37 WITH p_upfile = lv_upfile - WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Simplest call of the reader and writer - passthrough data - SUBMIT zdemo_excel38 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Show off integration of drawings ( here using the SAP-Icons ) - SUBMIT zdemo_excel39 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Charts - SUBMIT zdemo_excel40 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Demo Printsettings - SUBMIT zdemo_excel41 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Inheritance - " - " Reader/Writer Demo must always run at the end - " to make sure all documents where created - " - SUBMIT zdemo_excel15 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT Read Excel and write it back - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel1. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -CONSTANTS: gc_save_file_name TYPE string VALUE '01_HelloWorld.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). -* lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_width( ip_width = 11 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL10 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel10. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_iconset TYPE zexcel_conditional_iconset. - -CONSTANTS: gc_save_file_name TYPE string VALUE '10_iTabFieldCatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - "Conditional style - lo_style_conditional2 = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional2->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional2->mode_iconset = ls_iconset. - lo_style_conditional2->priority = 1. - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_count. - WHEN 'CONNID'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'PRICE'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - <fs_field_catalog>-cond_style = lo_style_conditional2. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). "make date field a bit wider - column_dimension->set_width( ip_width = 13 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL11 -*& Export Organisation and Contact Persons using ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel11. - -TYPE-POOLS: abap. - -DATA: central_search TYPE bapibus1006_central_search, - addressdata_search TYPE bapibus1006_addr_search, - others_search TYPE bapibus1006_other_data. -DATA: searchresult TYPE TABLE OF bapibus1006_bp_addr, - return TYPE TABLE OF bapiret2. -DATA: lines TYPE i. -FIELD-SYMBOLS: <searchresult_line> LIKE LINE OF searchresult. -DATA: centraldata TYPE bapibus1006_central, - centraldataperson TYPE bapibus1006_central_person, - centraldataorganization TYPE bapibus1006_central_organ. -DATA: addressdata TYPE bapibus1006_address. -DATA: relationships TYPE TABLE OF bapibus1006_relations. -FIELD-SYMBOLS: <relationship> LIKE LINE OF relationships. -DATA: relationship_centraldata TYPE bapibus1006002_central. -DATA: relationship_addresses TYPE TABLE OF bapibus1006002_addresses. -FIELD-SYMBOLS: <relationship_address> LIKE LINE OF relationship_addresses. - -DATA: lt_download TYPE TABLE OF zexcel_s_org_rel. -FIELD-SYMBOLS: <download> LIKE LINE OF lt_download. - -CONSTANTS: gc_save_file_name TYPE string VALUE '11_Export_Org_and_Contact.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -PARAMETERS: md TYPE flag RADIOBUTTON GROUP act. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-00a. -PARAMETERS: partnerc TYPE bu_type DEFAULT 2, " Organizations - postlcod TYPE ad_pstcd1 DEFAULT '8334*', - country TYPE land1 DEFAULT 'DE', - maxsel TYPE bu_maxsel DEFAULT 100. -SELECTION-SCREEN END OF BLOCK a. - -PARAMETERS: rel TYPE flag RADIOBUTTON GROUP act DEFAULT 'X'. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-00b. -PARAMETERS: reltyp TYPE bu_reltyp DEFAULT 'BUR011', - partner TYPE bu_partner DEFAULT '191'. -SELECTION-SCREEN END OF BLOCK b. - -START-OF-SELECTION. - IF md = abap_true. - " Read all Companies by Master Data - central_search-partnercategory = partnerc. - addressdata_search-postl_cod1 = postlcod. - addressdata_search-country = country. - others_search-maxsel = maxsel. - others_search-no_search_for_contactperson = 'X'. - - CALL FUNCTION 'BAPI_BUPA_SEARCH_2' - EXPORTING - centraldata = central_search - addressdata = addressdata_search - OTHERS = others_search - TABLES - searchresult = searchresult - return = return. - - SORT searchresult BY partner. - DELETE ADJACENT DUPLICATES FROM searchresult COMPARING partner. - ELSEIF rel = abap_true. - " Read by Relationship - SELECT but050~partner1 AS partner FROM but050 - INNER JOIN but000 ON but000~partner = but050~partner1 AND but000~type = '2' - INTO CORRESPONDING FIELDS OF TABLE searchresult - WHERE but050~partner2 = partner - AND but050~reltyp = reltyp. - ENDIF. - - DESCRIBE TABLE searchresult LINES lines. - WRITE: / 'Number of search results: ', lines. - - LOOP AT searchresult ASSIGNING <searchresult_line>. - " Read Details of Organization - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - centraldataorganization = centraldataorganization. - " Read Standard Address of Organization - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - addressdata = addressdata. - - " Add Organization to Download - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - " Fill Organization Partner Numbers - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - CLEAR: addressdata. - - " Read all Relationships - CLEAR: relationships. - CALL FUNCTION 'BAPI_BUPA_RELATIONSHIPS_GET' - EXPORTING - businesspartner = <searchresult_line>-partner - TABLES - relationships = relationships. - DELETE relationships WHERE relationshipcategory <> 'BUR001'. - LOOP AT relationships ASSIGNING <relationship>. - " Read details of Contact person - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - centraldata = centraldata - centraldataperson = centraldataperson. - " Read details of the Relationship - CALL FUNCTION 'BAPI_BUPR_CONTP_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - IMPORTING - centraldata = relationship_centraldata. - " Read relationship address - CLEAR: relationship_addresses. - - CALL FUNCTION 'BAPI_BUPR_CONTP_ADDRESSES_GET' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - TABLES - addresses = relationship_addresses. - - READ TABLE relationship_addresses - ASSIGNING <relationship_address> - WITH KEY standardaddress = 'X'. - - IF <relationship_address> IS ASSIGNED. - " Read Relationship Address - CLEAR addressdata. - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - addressguid = <relationship_address>-addressguid - IMPORTING - addressdata = addressdata. - - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner1 - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - businesspartnerout = <download>-contpers_number - businesspartnerguidout = <download>-contpers_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - MOVE-CORRESPONDING centraldataperson TO <download>. - MOVE-CORRESPONDING relationship_centraldata TO <download>. - - WRITE: / <relationship>-partner1, <relationship>-partner2. - WRITE: centraldataorganization-name1(20), centraldataorganization-name2(10). - WRITE: centraldataperson-firstname(15), centraldataperson-lastname(15). - WRITE: addressdata-street(25), addressdata-house_no, - addressdata-postl_cod1, addressdata-city(25). - ENDIF. - ENDLOOP. - - ENDLOOP. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_body TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_style_body_even_guid TYPE zexcel_cell_style, - lv_style_body_green TYPE zexcel_cell_style. - - DATA: row TYPE zexcel_cell_row. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings. - - DATA: column TYPE zexcel_cell_column, - column_alpha TYPE zexcel_cell_column_alpha, - value TYPE zexcel_cell_value. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border even - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_yellow. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_even_guid = lo_style_body->get_guid( ). - "Create style with border and green fill - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_green = lo_style_body->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_download ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'ORG_NUMBER'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CONTPERS_NUMBER'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME1'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME2'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'STREET'. - <fs_field_catalog>-position = 5. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'HOUSE_NO'. - <fs_field_catalog>-position = 6. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'POSTL_COD1'. - <fs_field_catalog>-position = 7. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CITY'. - <fs_field_catalog>-position = 8. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'COUNTRYISO'. - <fs_field_catalog>-position = 9. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FIRSTNAME'. - <fs_field_catalog>-position = 10. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'LASTNAME'. - <fs_field_catalog>-position = 11. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FUNCTIONNAME'. - <fs_field_catalog>-position = 12. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'DEPARTMENTNAME'. - <fs_field_catalog>-position = 13. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_NUMBR'. - <fs_field_catalog>-position = 14. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_EXT'. - <fs_field_catalog>-position = 15. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_NUMBER'. - <fs_field_catalog>-position = 16. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_EXTENS'. - <fs_field_catalog>-position = 17. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'E_MAIL'. - <fs_field_catalog>-position = 18. - <fs_field_catalog>-dynpfld = abap_true. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = '2'. - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_download - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - LOOP AT lt_download ASSIGNING <download>. - row = sy-tabix + 2. - IF NOT <download>-org_number IS INITIAL - AND <download>-contpers_number IS INITIAL. - " Mark fields of Organization which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'C' - ip_row = row - ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'D' - ip_row = row - ip_style = lv_style_body_green - ). -* CATCH zcx_excel. " Exceptions for ABAP2XLSX - ELSEIF NOT <download>-org_number IS INITIAL - AND NOT <download>-contpers_number IS INITIAL. - " Mark fields of Relationship which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'L' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'M' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'N' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'O' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'P' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'Q' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'R' ip_row = row ip_style = lv_style_body_green - ). - ENDIF. - ENDLOOP. - " Add Fieldnames in first row and hide the row - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog> - WHERE position <> '' AND dynpfld = abap_true. - column = <fs_field_catalog>-position. - column_alpha = zcl_excel_common=>convert_column2alpha( column ). - value = <fs_field_catalog>-fieldname. - lo_worksheet->set_cell( ip_column = column_alpha - ip_row = 1 - ip_value = value - ip_style = lv_style_body_even_guid ). - ENDLOOP. - " Hide first row - row_dimension = lo_worksheet->get_row_dimension( 1 ). - row_dimension->set_visible( abap_false ). - - DATA: highest_column TYPE zexcel_cell_column, - count TYPE int4, - col_alpha TYPE zexcel_cell_column_alpha. - - highest_column = lo_worksheet->get_highest_column( ). - count = 1. - WHILE count <= highest_column. - col_alpha = zcl_excel_common=>convert_column2alpha( ip_column = count ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = col_alpha ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - count = count + 1. - ENDWHILE. -* " Set Column width manuall -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). -* column_dimension->set_width( ip_width = 35 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). -* column_dimension->set_width( ip_width = 18 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). -* column_dimension->set_width( ip_width = 5 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). -* column_dimension->set_width( ip_width = 6 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). -* column_dimension->set_width( ip_width = 3 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'J' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'K' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'L' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'M' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'N' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'O' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'P' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'Q' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'R' ). -* column_dimension->set_width( ip_width = 40 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL12 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel12. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: gc_save_file_name TYPE string VALUE '12_HideSizeOutlineRowsAndColumns.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world in AutoSize column' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Hello world in a column width size 50' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Hello world (hidden column)' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'Outline column level 0' ). - lo_worksheet->set_cell( ip_column = 'G' ip_row = 2 ip_value = 'Outline column level 1' ). - lo_worksheet->set_cell( ip_column = 'H' ip_row = 2 ip_value = 'Outline column level 2' ). - lo_worksheet->set_cell( ip_column = 'I' ip_row = 2 ip_value = 'Small' ). - - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Hello world (hidden row)' ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 5 ip_value = 'Hello world in a row height size 20' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Simple outline rows 10-16 ( collapsed )' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 19 ip_value = '3 Outlines - Outlinelevel 1 is collapsed' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_value = 'One of the two inner outlines is expanded, one collapsed' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_value = 'Inner outline level - expanded' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 24 ip_value = 'Inner outline level - lines 25-28 are collapsed' ). - - lo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. " By default is on - lo_worksheet->zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>c_right_off. " By default is on - - " Column Settings - " Auto size - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - " Manual Width - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_width( ip_width = 50 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_visible( ip_visible = abap_false ). - " Implementation in the Writer is not working yet ===== TODO ===== - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). - column_dimension->set_outline_level( ip_outline_level = 0 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). - column_dimension->set_outline_level( ip_outline_level = 1 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). - column_dimension->set_outline_level( ip_outline_level = 2 ). - - row_dimension = lo_worksheet->get_row_dimension( ip_row = 1 ). - row_dimension->set_visible( ip_visible = abap_false ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 5 ). - row_dimension->set_row_height( ip_row_height = 20 ). -* obsolete, not intuitive. Use new method shown below -* " Implementation in the Writer is not working yet ===== TODO ===== -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 6 ). -* row_dimension->set_outline_level( ip_outline_level = 0 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 7 ). -* row_dimension->set_outline_level( ip_outline_level = 1 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 8 ). -* row_dimension->set_outline_level( ip_outline_level = 2 ). - -* Define an outline rows 10-16, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 10 - iv_row_to = 16 - iv_collapsed = abap_true ). " collapsed - -* Define an inner outline rows 21-22, expanded when outer outline becomes extended - lo_worksheet->set_row_outline( iv_row_from = 21 - iv_row_to = 22 - iv_collapsed = abap_false ). " expanded - -* Define an inner outline rows 25-28, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 25 - iv_row_to = 28 - iv_collapsed = abap_true ). " collapsed - -* Define an outer outline rows 20-30, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 20 - iv_row_to = 30 - iv_collapsed = abap_true ). " collapsed - -* Hint: the order you create the outlines can be arbitrary -* You can start with inner outlines or with outer outlines - -*--------------------------------------------------------------------* -* Hide columns right of column M -*--------------------------------------------------------------------* - lo_worksheet->zif_excel_sheet_properties~hide_columns_from = 'M'. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL13 -*& -*&---------------------------------------------------------------------* -*& Example by: Alvaro "Blag" Tejada Galindo. -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel13. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_bold_border_guid TYPE zexcel_cell_style, - lo_style_bold_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '13_MergedCells.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - - lo_style_bold_border = lo_excel->add_new_style( ). - lo_style_bold_border->font->bold = abap_true. - lo_style_bold_border->font->italic = abap_false. - lo_style_bold_border->font->color-rgb = zcl_excel_style_color=>c_black. - lo_style_bold_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_bold_border->borders->allborders = lo_border_dark. - lv_style_bold_border_guid = lo_style_bold_border->get_guid( ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - - lo_worksheet->set_merge( ip_row = 4 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test also if merge works when oher merged chells are empty - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Tomato' ). - lo_worksheet->set_merge( ip_row = 6 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test the patch provided by Victor Alekhin to merge cells in one column - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 'Merge cells also over multiple rows by Victor Alekhin' ). - lo_worksheet->set_merge( ip_row = 8 ip_column_start = 'B' ip_column_end = 'G' ip_row_to = 10 ). - - " Test the patch provided by Alexander Budeyev with different column merges - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 'Merge cells with different merges by Alexander Budeyev' ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - - " Test merge (issue) - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'B' ip_column_end = 'C' ip_row_to = 15 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'D' ip_column_end = 'D' ip_row_to = 14 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'E' ip_column_end = 'F' ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL14 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel14. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_center TYPE REF TO zcl_excel_style, - lo_style_right TYPE REF TO zcl_excel_style, - lo_style_left TYPE REF TO zcl_excel_style, - lo_style_general TYPE REF TO zcl_excel_style, - lo_style_bottom TYPE REF TO zcl_excel_style, - lo_style_middle TYPE REF TO zcl_excel_style, - lo_style_top TYPE REF TO zcl_excel_style, - lo_style_justify TYPE REF TO zcl_excel_style, - lo_style_mixed TYPE REF TO zcl_excel_style, - lo_style_mixed_wrap TYPE REF TO zcl_excel_style, - lo_style_rotated TYPE REF TO zcl_excel_style, - lo_style_shrink TYPE REF TO zcl_excel_style, - lo_style_indent TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style, - lv_style_right_guid TYPE zexcel_cell_style, - lv_style_left_guid TYPE zexcel_cell_style, - lv_style_general_guid TYPE zexcel_cell_style, - lv_style_bottom_guid TYPE zexcel_cell_style, - lv_style_middle_guid TYPE zexcel_cell_style, - lv_style_top_guid TYPE zexcel_cell_style, - lv_style_justify_guid TYPE zexcel_cell_style, - lv_style_mixed_guid TYPE zexcel_cell_style, - lv_style_mixed_wrap_guid TYPE zexcel_cell_style, - lv_style_rotated_guid TYPE zexcel_cell_style, - lv_style_shrink_guid TYPE zexcel_cell_style, - lv_style_indent_guid TYPE zexcel_cell_style. - -DATA: lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '14_Alignment.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - "Center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lv_style_center_guid = lo_style_center->get_guid( ). - "Right - lo_style_right = lo_excel->add_new_style( ). - lo_style_right->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lv_style_right_guid = lo_style_right->get_guid( ). - "Left - lo_style_left = lo_excel->add_new_style( ). - lo_style_left->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_left. - lv_style_left_guid = lo_style_left->get_guid( ). - "General - lo_style_general = lo_excel->add_new_style( ). - lo_style_general->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_general. - lv_style_general_guid = lo_style_general->get_guid( ). - "Bottom - lo_style_bottom = lo_excel->add_new_style( ). - lo_style_bottom->alignment->vertical = zcl_excel_style_alignment=>c_vertical_bottom. - lv_style_bottom_guid = lo_style_bottom->get_guid( ). - "Middle - lo_style_middle = lo_excel->add_new_style( ). - lo_style_middle->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_middle_guid = lo_style_middle->get_guid( ). - "Top - lo_style_top = lo_excel->add_new_style( ). - lo_style_top->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_top_guid = lo_style_top->get_guid( ). - "Justify - lo_style_justify = lo_excel->add_new_style( ). - lo_style_justify->alignment->vertical = zcl_excel_style_alignment=>c_vertical_justify. - lv_style_justify_guid = lo_style_justify->get_guid( ). - - "Shrink - lo_style_shrink = lo_excel->add_new_style( ). - lo_style_shrink->alignment->shrinktofit = abap_true. - lv_style_shrink_guid = lo_style_shrink->get_guid( ). - - "Indent - lo_style_indent = lo_excel->add_new_style( ). - lo_style_indent->alignment->indent = 5. - lv_style_indent_guid = lo_style_indent->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed_wrap = lo_excel->add_new_style( ). - lo_style_mixed_wrap->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed_wrap->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_mixed_wrap->alignment->wraptext = abap_true. - lv_style_mixed_wrap_guid = lo_style_mixed_wrap->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed = lo_excel->add_new_style( ). - lo_style_mixed->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_mixed_guid = lo_style_mixed->get_guid( ). - - "Center - lo_style_rotated = lo_excel->add_new_style( ). - lo_style_rotated->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_rotated->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_rotated->alignment->textrotation = 165. " -75° == 90° + 75° - lv_style_rotated_guid = lo_style_rotated->get_guid( ). - - - " Set row size for first 7 rows to 40 - DO 7 TIMES. - lo_row_dimension = lo_worksheet->get_row_dimension( sy-index ). - lo_row_dimension->set_row_height( 40 ). - ENDDO. - - "Horizontal alignment - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Centered Text' ip_style = lv_style_center_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Right Text' ip_style = lv_style_right_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Left Text' ip_style = lv_style_left_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'General Text' ip_style = lv_style_general_guid ). - - " Shrink & indent - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'Text shrinked' ip_style = lv_style_shrink_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 'Text indented' ip_style = lv_style_indent_guid ). - - "Vertical alignment - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Bottom Text' ip_style = lv_style_bottom_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Middle Text' ip_style = lv_style_middle_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Top Text' ip_style = lv_style_top_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 'Justify Text' ip_style = lv_style_justify_guid ). - - " Wrapped - lo_worksheet->set_cell( ip_row = 10 ip_column = 'B' - ip_value = 'This is a wrapped text centered in the middle' - ip_style = lv_style_mixed_wrap_guid ). - - " Rotated - lo_worksheet->set_cell( ip_row = 10 ip_column = 'D' - ip_value = 'This is a centered text rotated by -75°' - ip_style = lv_style_rotated_guid ). - - " forced line break - DATA: lv_value TYPE string. - CONCATENATE 'This is a wrapped text centered in the middle' cl_abap_char_utilities=>cr_lf - 'and a manuall line break.' INTO lv_value. - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' - ip_value = lv_value - ip_style = lv_style_mixed_guid ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL15 -*& -*&---------------------------------------------------------------------* -*& 2010-10-30, Gregor Wolf: -*& Added the functionality to ouput the read table content -*& 2011-12-19, Shahrin Shahrulzaman: -*& Added the functionality to have multiple input and output files -*&---------------------------------------------------------------------* - -REPORT zdemo_excel15. - -TYPE-POOLS: abap. - -TYPES: - BEGIN OF t_demo_excel15, - input TYPE string, - END OF t_demo_excel15. - -DATA: excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - reader TYPE REF TO zif_excel_reader. - -DATA: ex TYPE REF TO zcx_excel, - msg TYPE string. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_workdir TYPE string, - output_file_path TYPE string, - input_file_path TYPE string, - lv_file_separator TYPE c. - -DATA: worksheet TYPE REF TO zcl_excel_worksheet, - highest_column TYPE zexcel_cell_column, - highest_row TYPE int4, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha, - row TYPE int4 VALUE 1, - value TYPE zexcel_cell_value. - -DATA: - lt_files TYPE TABLE OF t_demo_excel15. -FIELD-SYMBOLS: <wa_files> TYPE t_demo_excel15. - -PARAMETERS: p_path TYPE zexcel_export_dir, - p_noout TYPE xfeld DEFAULT abap_true. - - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '01_HelloWorld.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '02_Styles.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '03_iTab.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '04_Sheets.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '08_Range.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '13_MergedCells.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '31_AutosizeWithDifferentFontSizes.xlsx'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - - LOOP AT lt_files ASSIGNING <wa_files>. - CONCATENATE p_path lv_file_separator <wa_files>-input INTO input_file_path. - CONCATENATE p_path lv_file_separator '15_' <wa_files>-input INTO output_file_path. - REPLACE '.xlsx' IN output_file_path WITH 'FromReader.xlsx'. - - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( input_file_path ). - - IF p_noout EQ abap_false. - worksheet = excel->get_active_worksheet( ). - highest_column = worksheet->get_highest_column( ). - highest_row = worksheet->get_highest_row( ). - - WRITE: 'Highest column: ', highest_column, 'Highest row: ', highest_row. - WRITE: /. - - WHILE row <= highest_row. - WHILE column <= highest_column. - col_str = zcl_excel_common=>convert_column2alpha( column ). - worksheet->get_cell( - EXPORTING - ip_column = col_str - ip_row = row - IMPORTING - ep_value = value - ). - WRITE: value. - column = column + 1. - ENDWHILE. - WRITE: /. - column = 1. - row = row + 1. - ENDWHILE. - ENDIF. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = output_file_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - CATCH zcx_excel INTO ex. " Exceptions for ABAP2XLSX - msg = ex->get_text( ). - WRITE: / msg. - ENDTRY. - ENDLOOP. - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel16. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - - -DATA: ls_io TYPE skwf_io. - -CONSTANTS: gc_save_file_name TYPE string VALUE '16_Drawings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_objid TYPE sdok_docid DEFAULT '456694429165174BE10000000A1550C0', " Question mark in standard Web Dynpro WDT_QUIZ - p_class TYPE sdok_class DEFAULT 'M_IMAGE_P', - pobjtype TYPE skwf_ioty DEFAULT 'P'. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i, - lv_content TYPE xstring, - ls_key TYPE wwwdatatab. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = 'c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp' - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. -* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno -* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = lv_content - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Image from web repository (SMW0)' ). - - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 3 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Image from a file (c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 9 - ip_from_col = 'B' ). - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_bmp - ip_width = 83 - ip_height = 160 ). - - lo_worksheet->add_drawing( lo_drawing ). - - ls_io-objid = p_objid. - ls_io-class = p_class. - ls_io-objtype = pobjtype. - IF ls_io IS NOT INITIAL. - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_value = 'Mime repository (by default Question mark in standard Web Dynpro WDT_QUIZ)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 19 - ip_from_col = 'B' ). - lo_drawing->set_media_mime( ip_io = ls_io - ip_width = 126 - ip_height = 145 ). - - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL26 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel29. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_excel_reader TYPE REF TO zif_excel_reader. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_filename TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -PARAMETERS: p_path TYPE zexcel_export_dir OBLIGATORY. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - DATA: lt_filetable TYPE filetable, - lv_rc TYPE i. - - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - CALL METHOD cl_gui_frontend_services=>file_open_dialog - EXPORTING - window_title = 'Select Macro-Enabled Workbook template' - default_extension = '*.xlsm' - file_filter = 'Excel Macro-Enabled Workbook (*.xlsm)|*.xlsm' - initial_directory = lv_workdir - CHANGING - file_table = lt_filetable - rc = lv_rc - EXCEPTIONS - file_open_dialog_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - OTHERS = 5. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - READ TABLE lt_filetable INTO lv_filename INDEX 1. - p_path = lv_filename. - -START-OF-SELECTION. - - lv_full_path = p_path. - - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_xlsm. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_xlsm. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE '.xlsm' IN lv_full_path WITH 'FromReader.xlsm'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL28 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel28. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_file_name TYPE string, - lv_file_path TYPE string, - lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '28_HelloWorld.csv'. - -PARAMETERS: p_path TYPE string. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = p_path - CHANGING selected_folder = p_path ). - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_width( 11 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_csv. - zcl_excel_writer_csv=>set_delimiter( ip_value = cl_abap_char_utilities=>horizontal_tab ). - zcl_excel_writer_csv=>set_enclosure( ip_value = '''' ). - zcl_excel_writer_csv=>set_endofline( ip_value = cl_abap_char_utilities=>cr_lf ). - - zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). -* zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet2' ). - - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - REPLACE FIRST OCCURRENCE OF '.csv' IN lv_full_path WITH '_Sheet2.csv'. - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - -* zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). - zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet1' ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE FIRST OCCURRENCE OF '_Sheet2.csv' IN lv_full_path WITH '_Sheet1.csv'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL27 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel27. - -CONSTANTS: c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_1 TYPE REF TO zcl_excel_style, - lo_style_2 TYPE REF TO zcl_excel_style, - lv_style_1_guid TYPE zexcel_cell_style, - lv_style_2_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis. - - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '27_ConditionalFormatting.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - lo_style_1 = lo_excel->add_new_style( ). - lo_style_1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_1->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_1_guid = lo_style_1->get_guid( ). - - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_2->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_2_guid = lo_style_2->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = 'Select a value' ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Anchovy"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_1_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Carp"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_2_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL26 -* Demo for method zcl_excel_worksheet-bind_object: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -report zdemo_excel26. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events definition. - public section. - methods: - on_user_command for event added_function of cl_salv_events - importing e_salv_function. -endclass. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events implementation. - method on_user_command. - perform user_command." using e_salv_function text-i08. - endmethod. "on_user_command -endclass. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -data: lo_excel type ref to zcl_excel, - lo_worksheet type ref to zcl_excel_worksheet, - lo_salv type ref to cl_salv_table, - gr_events type ref to lcl_handle_events, - lr_events type ref to cl_salv_events_table, - gt_sbook type table of sbook. - -data: l_path type string, " local dir - lv_workdir type string, - lv_file_separator type c. - -constants: - lv_default_file_name type string value '26_Bind_ALV.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -start-of-selection. - -* get data -* ------------------------------------------ - - select * - into table gt_sbook[] - from sbook "#EC CI_NOWHERE - up to 10 rows. - -* Display ALV -* ------------------------------------------ - - try. - cl_salv_table=>factory( - exporting - list_display = abap_false - importing - r_salv_table = lo_salv - changing - t_table = gt_sbook[] ). - catch cx_salv_msg . - endtry. - - try. - lo_salv->set_screen_status( - exporting - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - catch cx_salv_msg . - endtry. - - lr_events = lo_salv->get_event( ). - create object gr_events. - set handler gr_events->on_user_command for lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -form user_command . - if sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( changing sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - exporting initial_folder = l_path - changing selected_folder = l_path ). - - if l_path is initial. - cl_gui_frontend_services=>get_sapgui_workdir( - changing sapworkdir = lv_workdir ). - l_path = lv_workdir. - endif. - - cl_gui_frontend_services=>get_file_separator( - changing file_separator = lv_file_separator ). - - concatenate l_path lv_file_separator lv_default_file_name - into l_path. - -* export file to save file path - perform export_to_excel. - - endif. -endform. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -form export_to_excel. - data: lo_converter type ref to zcl_excel_converter. -* create zcl_excel_worksheet object - - create object lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object - try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). - catch zcx_excel . - endtry. - - perform write_file. - -endform. "EXPORT_TO_EXCEL -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -form write_file . - data: lt_file type solix_tab, - l_bytecount type i, - l_file type xstring. - - data: lo_excel_writer type ref to zif_excel_writer. - - data: ls_seoclass type seoclass. - - create object lo_excel_writer type zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = l_file - receiving - et_solix = lt_file. - - l_bytecount = xstrlen( l_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = l_file - importing - output_length = l_bytecount - tables - binary_tab = lt_file. - endif. - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - changing data_tab = lt_file ). - -endform. " WRITE_FILE - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL25 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel25. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_exception TYPE REF TO cx_root. - -DATA: lv_file TYPE xstring. - -CONSTANTS: lv_file_name TYPE string VALUE '25_HelloWorld.xlsx'. -DATA: lv_default_file_name TYPE string. -DATA: lv_error TYPE string. - -CALL FUNCTION 'FILE_GET_NAME_USING_PATH' - EXPORTING - logical_path = 'LOCAL_TEMPORARY_FILES' " Logical path' - file_name = lv_file_name " File name - IMPORTING - file_name_with_path = lv_default_file_name. " File name with path -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->set_title( ip_title = 'Sheet1' ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - -CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -lv_file = lo_excel_writer->write_file( lo_excel ). - -TRY. - OPEN DATASET lv_default_file_name FOR OUTPUT IN BINARY MODE. - TRANSFER lv_file TO lv_default_file_name. - CLOSE DATASET lv_default_file_name. - CATCH cx_root INTO lo_exception. - lv_error = lo_exception->get_text( ). - MESSAGE lv_error TYPE 'I'. -ENDTRY. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel24. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lv_value TYPE string. - -CONSTANTS: gc_save_file_name TYPE string VALUE '24_Sheets_with_different_default_date_formats.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Default Date Format' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!A1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmdd ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYYMMDD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " TODO: It seems that the zcl_excel_style_number_format=>c_format_date_yyyymmddslash - " does not produce a valid output - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmddslash ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYY/MM/DD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the 4th sheet' ip_hyperlink = lo_hyperlink ). - - " 4th sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " Illustrate the Problem caused by: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year. - " http://support.microsoft.com/kb/214326/en-us - lo_worksheet->set_title( ip_title = 'Sheet4' ). - " Loop from Start Date to the Max Date current data in daily steps - CONSTANTS: lv_max type d VALUE '19000302'. - - DATA: lv_date TYPE d VALUE '19000226', - lv_row TYPE i. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Formated date' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Integer value for this date' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'Date as string' ). - - lv_row = 4. - WHILE lv_date < lv_max. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_row ip_value = lv_date ). - lv_value = zcl_excel_common=>date_to_excel_string( lv_date ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_row ip_value = lv_value ). - lv_value = lv_date. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_row ip_value = lv_value ). - lv_date = lv_date + 1. - lv_row = lv_row + 1. - ENDWHILE. - - lv_row = lv_row + 1. - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_row ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel23. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '23_Sheets_with_and_without_grid_lines.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet with grid lines and print centered horizontal & vertical' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet with grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 160. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_PAGELAYOUTVIEW = 200. - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the third sheet without grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_false ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the fourth sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 170. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_SHEETLAYOUTVIEW = 150. - - " Fourth sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the fourth sheet with grid lines and print centered ONLY horizontal' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - -" lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL17 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel17. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_protection TYPE REF TO zcl_excel_style, - lv_style_protection_guid TYPE zexcel_cell_style, - lo_style TYPE REF TO zcl_excel_style, - lv_style TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '17_SheetProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_pwd TYPE zexcel_aes_password LOWER CASE DEFAULT 'secret'. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. -* lo_worksheet->zif_excel_sheet_protection~password = 'DAA7'. "it is the encoded word "secret" - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( p_pwd ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - " First style to unlock a cell - lo_style_protection = lo_excel->add_new_style( ). - lo_style_protection->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - lv_style_protection_guid = lo_style_protection->get_guid( ). - " Another style which should not affect the unlock style - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFCC3333'. - lv_style = lo_style->get_guid( ). - lo_worksheet->set_cell( ip_row = 3 ip_column = 'C' ip_value = 'This cell is locked locked and has the second formating' ip_style = lv_style ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL18 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel18. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_protection_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '18_BookProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_excel->zif_excel_book_protection~protected = zif_excel_book_protection=>c_protected. - lo_excel->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_locked. - - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL19 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel19. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '19_SetActiveSheet.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_noout TYPE xfeld DEFAULT abap_true. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " First Worksheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'First' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 1' ). - - " Second Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Second' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 2' ). - - " Third Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Third' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 3' ). - - IF p_noout EQ abap_false. - " lo_excel->set_active_sheet_index_by_name( data_sheet_name ). - DATA: active_sheet_index TYPE zexcel_active_worksheet. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index before: ', active_sheet_index. - ENDIF. - lo_excel->set_active_sheet_index( '2' ). - IF p_noout EQ abap_false. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index after: ', active_sheet_index. - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel2. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style, - lv_style_gr_cornerlb_guid TYPE zexcel_cell_style, - lv_style_gr_cornerlt_guid TYPE zexcel_cell_style, - lv_style_gr_cornerrb_guid TYPE zexcel_cell_style, - lv_style_gr_cornerrt_guid TYPE zexcel_cell_style, - lv_style_gr_horizontal90_guid TYPE zexcel_cell_style, - lv_style_gr_horizontal270_guid TYPE zexcel_cell_style, - lv_style_gr_horizontalb_guid TYPE zexcel_cell_style, - lv_style_gr_vertical_guid TYPE zexcel_cell_style, - lv_style_gr_vertical2_guid TYPE zexcel_cell_style, - lv_style_gr_fromcenter_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal45_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal45b_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal135_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal135b_guid TYPE zexcel_cell_style . - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. -DATA: lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '02_Styles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled with gradients - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerlb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerlt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerrb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerrt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal90. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontal90_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal270. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontal270_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontalb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontalb_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_vertical_guid = lo_style_filled->get_guid( ). - - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_vertical2_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_fromcenter. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_fromcenter_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal45_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal45b_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal135_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal135b_guid = lo_style_filled->get_guid( ). - - - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_style = lv_style_gr_cornerlb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 10 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 11 ip_style = lv_style_gr_cornerlt_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 11 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 12 ip_style = lv_style_gr_cornerrb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 12 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 13 ip_style = lv_style_gr_cornerrt_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 13 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 14 ip_style = lv_style_gr_horizontal90_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal90 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 14 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 15 ip_style = lv_style_gr_horizontal270_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal270 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 15 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 16 ip_style = lv_style_gr_horizontalb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontalb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 16 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 17 ip_style = lv_style_gr_vertical_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 17 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_style = lv_style_gr_vertical2_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 18 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_style = lv_style_gr_fromcenter_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_fromcenter ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 19 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_style = lv_style_gr_diagonal45_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 20 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 21 ip_style = lv_style_gr_diagonal45b_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 21 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 22 ip_style = lv_style_gr_diagonal135_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 22 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 23 ip_style = lv_style_gr_diagonal135b_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 23 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - - - -* CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -* lv_file = lo_excel_writer->write_file( lo_excel ). -* -* " Convert to binary -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = lv_file -* IMPORTING -* output_length = lv_bytecount -* TABLES -* binary_tab = lt_file_tab. -** " This method is only available on AS ABAP > 6.40 -** lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -** lv_bytecount = xstrlen( lv_file ). -* -* " Save the file -* cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount -* filename = lv_full_path -* filetype = 'BIN' -* CHANGING data_tab = lt_file_tab ). - - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL22 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel22. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style, - lo_style_date TYPE REF TO zcl_excel_style, - lo_style_editable TYPE REF TO zcl_excel_style, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_table_settings_out TYPE zexcel_s_table_settings. - -DATA: lv_style_guid TYPE zexcel_cell_style. - -DATA: lv_row TYPE char10. - -FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - -CONSTANTS: gc_save_file_name TYPE string VALUE '22_itab_fieldcatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'PN_MASSIVE'). - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - " sheet style (white background) - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lv_style_guid = lo_style->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_guid ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( 'test' ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - - " Create cell style for display only fields - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_text. - - " Create cell style for display only date field - lo_style_date = lo_excel->add_new_style( ). - lo_style_date->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_date->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style_date->number_format->format_code = zcl_excel_style_number_format=>c_format_date_ddmmyyyy. - - " Create cell style for editable fields - lo_style_editable = lo_excel->add_new_style( ). - lo_style_editable->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'CONNID'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_date->get_guid( ). - WHEN 'PRICE'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_editable->get_guid( ). - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( EXPORTING - ip_table = lt_test - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - IMPORTING - es_table_settings = ls_table_settings_out ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lv_row = ls_table_settings_out-top_left_row. - CONDENSE lv_row. - CONCATENATE 'ISNUMBER(' ls_table_settings_out-top_left_column lv_row ')' INTO lo_data_validation->formula1. - lo_data_validation->cell_row = ls_table_settings_out-top_left_row. - lo_data_validation->cell_column = ls_table_settings_out-top_left_column. - lo_data_validation->cell_row_to = ls_table_settings_out-bottom_right_row. - lo_data_validation->cell_column_to = ls_table_settings_out-bottom_right_column. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL21 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel21. - -TYPES: - BEGIN OF t_color_style, - color TYPE zexcel_style_color_argb, - style TYPE zexcel_cell_style, - END OF t_color_style. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_filled TYPE REF TO zcl_excel_style. - -DATA: color_styles TYPE TABLE OF t_color_style. - -FIELD-SYMBOLS: <color_style> LIKE LINE OF color_styles. - -CONSTANTS: max TYPE i VALUE 255, - step TYPE i VALUE 51. - -DATA: red TYPE i, - green TYPE i, - blue TYPE i, - red_hex(1) TYPE x, - green_hex(1) TYPE x, - blue_hex(1) TYPE x, - red_str TYPE string, - green_str TYPE string, - blue_str TYPE string. - -DATA: color TYPE zexcel_style_color_argb, - tint TYPE zexcel_style_color_tint. - -DATA: row TYPE i, - row_tmp TYPE i, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha. - -CONSTANTS: gc_save_file_name TYPE string VALUE '21_BackgroundColorPicker.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - WHILE red <= max. - green = 0. - WHILE green <= max. - blue = 0. - WHILE blue <= max. - red_hex = red. - red_str = red_hex. - green_hex = green. - green_str = green_hex. - blue_hex = blue. - blue_str = blue_hex. - " Create filled - CONCATENATE 'FF' red_str green_str blue_str INTO color. - APPEND INITIAL LINE TO color_styles ASSIGNING <color_style>. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = color. - <color_style>-color = color. - <color_style>-style = lo_style_filled->get_guid( ). - blue = blue + step. - ENDWHILE. - green = green + step. - ENDWHILE. - red = red + step. - ENDWHILE. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Color Picker' ). - LOOP AT color_styles ASSIGNING <color_style>. - row_tmp = ( max / step + 1 ) * 3. - IF row = row_tmp. - row = 0. - column = column + 1. - ENDIF. - row = row + 1. - col_str = zcl_excel_common=>convert_column2alpha( column ). - - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = col_str - ip_row = row - ip_value = <color_style>-color - ip_style = <color_style>-style ). - ENDLOOP. - - row = row + 2. - tint = '-0.5'. - DO 10 TIMES. - column = 1. - DO 10 TIMES. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = sy-index - 1. - lo_style_filled->fill->fgcolor-tint = tint. - <color_style>-style = lo_style_filled->get_guid( ). - col_str = zcl_excel_common=>convert_column2alpha( column ). - lo_worksheet->set_cell_style( ip_column = col_str - ip_row = row - ip_style = <color_style>-style ). - - ADD 1 TO column. - ENDDO. - ADD '0.1' TO tint. - ADD 1 TO row. - ENDDO. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL20 -* Demo for method zcl_excel_worksheet-bind_alv: -* export data from ALV (CL_GUI_ALV_GRID) object to excel -*--------------------------------------------------------------------* -REPORT zdemo_excel20. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_alv TYPE REF TO cl_gui_alv_grid, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook, - gt_listheader TYPE slis_t_listheader, - wa_listheader LIKE LINE OF gt_listheader. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '20_BindAlv.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 10 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - IF sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - -* export file to save file path - - PERFORM export_to_excel. - - ENDIF. -ENDFORM. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel. - -* create zcl_excel_worksheet object - - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - -* get ALV object from screen - - CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' - IMPORTING - e_grid = lo_alv. - -* build list header - - wa_listheader-typ = 'H'. - wa_listheader-info = sy-title. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'S'. - wa_listheader-info = 'Created by: ABAP2XLSX Group'. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'A'. - wa_listheader-info = - 'Project hosting at https://cw.sdn.sap.com/cw/groups/abap2xlsx'. - APPEND wa_listheader TO gt_listheader. - -* write to excel using method Bin_ALV - - lo_worksheet->bind_alv_ole2( - EXPORTING -* I_DOCUMENT_URL = SPACE " excel template -* I_XLS = 'X' " create in xls format? - i_save_path = l_path - io_alv = lo_alv - it_listheader = gt_listheader - i_top = 2 - i_left = 1 -* I_COLUMNS_HEADER = 'X' -* I_COLUMNS_AUTOFIT = 'X' -* I_FORMAT_COL_HEADER = -* I_FORMAT_SUBTOTAL = -* I_FORMAT_TOTAL = - EXCEPTIONS - miss_guide = 1 - ex_transfer_kkblo_error = 2 - fatal_error = 3 - inv_data_range = 4 - dim_mismatch_vkey = 5 - dim_mismatch_sema = 6 - error_in_sema = 7 - OTHERS = 8 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - -ENDFORM. "EXPORT_TO_EXCEL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/ABAP2XLSX_V_7_0_4.nugg.zip b/build/ABAP2XLSX_V_7_0_4.nugg.zip deleted file mode 100644 index d9d4b422e2c728387f89d1a023c1b9404b8d836e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324753 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 knKKTTbk_PxVC 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

mY&ZZr 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%0DYHcf5p=uzx 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 z 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%0A`39wri_;{x#DYG7HM%UKz)LQjnTw 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 Y{zp~hVPOAz2;}E&^GPx9p+D3A0~+lEy#N3J diff --git a/build/ABAP2XLSX_V_7_0_5 - 2015-08-04.nugg b/build/ABAP2XLSX_V_7_0_5 - 2015-08-04.nugg deleted file mode 100644 index 8834596..0000000 --- a/build/ABAP2XLSX_V_7_0_5 - 2015-08-04.nugg +++ /dev/null @@ -1,43758 +0,0 @@ - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS zcl_tc_excel DEFINITION DEFERRED. -CLASS zcl_excel DEFINITION LOCAL FRIENDS zcl_tc_excel. - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel DEFINITION FOR TESTING - DURATION SHORT - RISK LEVEL HARMLESS -. -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>zcl_Tc_Excel -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - f_cut TYPE REF TO zcl_excel. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. - METHODS: create_empty_excel FOR TESTING. - -ENDCLASS. "zcl_Tc_Excel - - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel IMPLEMENTATION. -* ================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - -*// START TEST METHODS - - METHOD create_empty_excel. -* ================================== - - DATA: lv_count TYPE i. - lv_count = f_cut->get_worksheets_size( ). - - cl_abap_unit_assert=>assert_equals( act = lv_count - exp = 1 - msg = 'Testing number of sheet' - level = if_aunit_constants=>tolerable ). - ENDMETHOD. "create_empty_excel - -*// END TEST METHODS - - -ENDCLASS. "zcl_Tc_Excel - - - - - - - - - - - - - - - - - - - - - METHOD zif_excel_book_properties~initialize. - DATA: lv_timestamp TYPE timestampl. - - me->zif_excel_book_properties~application = 'Microsoft Excel'. - me->zif_excel_book_properties~appversion = '12.0000'. - - GET TIME STAMP FIELD lv_timestamp. - me->zif_excel_book_properties~created = lv_timestamp. - me->zif_excel_book_properties~creator = sy-uname. - me->zif_excel_book_properties~description = zcl_excel=>version. - me->zif_excel_book_properties~modified = lv_timestamp. - me->zif_excel_book_properties~lastmodifiedby = sy-uname. -ENDMETHOD. - - - method ZIF_EXCEL_BOOK_PROTECTION~INITIALIZE. - me->zif_excel_book_protection~protected = zif_excel_book_protection=>c_unprotected. - me->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_unlocked. - CLEAR me->zif_excel_book_protection~workbookpassword. - CLEAR me->zif_excel_book_protection~revisionspassword. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME. - me->zif_excel_book_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_book_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_VBAPROJECT. - me->zif_excel_book_vba_project~vbaproject = ip_vbaproject. - endmethod. - - - - - - METHOD add_new_autofilter. -* Check for autofilter reference: new or overwrite; only one per sheet - ro_autofilter = autofilters->add( io_sheet ) . -ENDMETHOD. - - - - - - method ADD_NEW_DRAWING. - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_drawing - EXPORTING - ip_type = ip_type - ip_title = ip_title. - - CASE ip_type. - WHEN 'image'. - drawings->add( eo_drawing ). - WHEN 'chart'. - charts->add( eo_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - method ADD_NEW_STYLE. -* Start of deletion # issue 139 - Dateretention of cellstyles -* CREATE OBJECT eo_style. -* styles->add( eo_style ). -* End of deletion # issue 139 - Dateretention of cellstyles -* Start of insertion # issue 139 - Dateretention of cellstyles -* Create default style - CREATE OBJECT eo_style - EXPORTING - ip_guid = ip_guid. - styles->add( eo_style ). - - DATA: style2 TYPE zexcel_s_stylemapping. -* Copy to new representations - style2 = stylemapping_dynamic_style( eo_style ). - INSERT style2 INTO TABLE t_stylemapping1. - INSERT style2 INTO TABLE t_stylemapping2. -* End of insertion # issue 139 - Dateretention of cellstyles - - endmethod. - - - - - - method ADD_NEW_WORKSHEET. - DATA: lv_guid TYPE guid_16. - -* Create default blank worksheet - CREATE OBJECT eo_worksheet - EXPORTING - ip_excel = me - ip_title = ip_title. - - worksheets->add( eo_worksheet ). - worksheets->active_worksheet = worksheets->size( ). - endmethod. - - - METHOD add_static_styles. - " # issue 139 - FIELD-SYMBOLS: <style1> LIKE LINE OF t_stylemapping1, - <style2> LIKE LINE OF t_stylemapping2. - DATA: style TYPE REF TO zcl_excel_style. - - LOOP AT me->t_stylemapping1 ASSIGNING <style1> WHERE added_to_iterator IS INITIAL. - READ TABLE me->t_stylemapping2 ASSIGNING <style2> WITH TABLE KEY guid = <style1>-guid. - CHECK sy-subrc = 0. " Should always be true since these tables are being filled parallel - - style = me->add_new_style( <style1>-guid ). - - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <style1>-complete_style - i_sourcex = <style1>-complete_stylex - CHANGING e_target = style ). - - ENDLOOP. -ENDMETHOD. - - - method CONSTRUCTOR. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style. - -* Inizialize instance objects - CREATE OBJECT security. - CREATE OBJECT worksheets. - CREATE OBJECT ranges. - CREATE OBJECT styles. - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - CREATE OBJECT legacy_palette. - CREATE OBJECT autofilters. - - me->zif_excel_book_protection~initialize( ). - me->zif_excel_book_properties~initialize( ). - - me->add_new_worksheet( ). - me->add_new_style( ). " Standard style - lo_style = me->add_new_style( ). " Standard style with fill gray125 - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_pattern_gray125. - - endmethod. - - - - - METHOD delete_worksheet. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - l_size TYPE i, - lv_errormessage TYPE string. - - l_size = get_worksheets_size( ). - IF l_size = 1. " Only 1 worksheet left --> check whether this is the worksheet to be deleted - lo_worksheet = me->get_worksheet_by_index( 1 ). - IF lo_worksheet = io_worksheet. - lv_errormessage = 'Deleting last remaining worksheet is not allowed'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - ENDIF. - - me->worksheets->remove( io_worksheet ). - -ENDMETHOD. - - - - METHOD delete_worksheet_by_index. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_errormessage TYPE string. - - lo_worksheet = me->get_worksheet_by_index( iv_index ). - IF lo_worksheet IS NOT BOUND. - lv_errormessage = 'Worksheet not existing'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - me->delete_worksheet( lo_worksheet ). - -ENDMETHOD. - - - - METHOD delete_worksheet_by_name. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_errormessage TYPE string. - - lo_worksheet = me->get_worksheet_by_name( iv_title ). - IF lo_worksheet IS NOT BOUND. - lv_errormessage = 'Worksheet not existing'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - me->delete_worksheet( lo_worksheet ). - -ENDMETHOD. - - - - method GET_ACTIVE_SHEET_INDEX. - r_active_worksheet = me->worksheets->active_worksheet. - endmethod. - - - - method GET_ACTIVE_WORKSHEET. - - eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). - - endmethod. - - - - method GET_AUTOFILTERS_REFERENCE. - - ro_autofilters = autofilters. - - endmethod. - - - - method GET_DEFAULT_STYLE. - ep_style = me->default_style. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = me->drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = me->charts->get_iterator( ). - WHEN OTHERS. - ENDCASE. - - endmethod. - - - - method GET_NEXT_TABLE_ID. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_tables_count TYPE i. - - lo_iterator = me->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_tables_count = lo_worksheet->get_tables_size( ). - ADD lv_tables_count TO ep_id. - - ENDWHILE. - - ADD 1 TO ep_id. - - endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - - METHOD get_static_cellstyle_guid. - " # issue 139 - DATA: style LIKE LINE OF me->t_stylemapping1. - - READ TABLE me->t_stylemapping1 INTO style - WITH TABLE KEY dynamic_style_guid = style-guid " no dynamic style --> look for initial guid here - complete_style = ip_cstyle_complete - complete_stylex = ip_cstylex_complete. - IF sy-subrc <> 0. - style-complete_style = ip_cstyle_complete. - style-complete_stylex = ip_cstylex_complete. -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = style-guid. - style-guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call - INSERT style INTO TABLE me->t_stylemapping1. - INSERT style INTO TABLE me->t_stylemapping2. - - ENDIF. - - ep_guid = style-guid. -ENDMETHOD. - - - - method GET_STYLES_ITERATOR. - - eo_iterator = me->styles->get_iterator( ). - - endmethod. - - - - - - method GET_STYLE_INDEX_IN_STYLES. - DATA: index TYPE syindex. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style TYPE REF TO zcl_excel_style. - - CHECK ip_guid IS NOT INITIAL. - - - lo_iterator = me->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) = 'X'. - ADD 1 TO index. - lo_style ?= lo_iterator->get_next( ). - IF lo_style->get_guid( ) = ip_guid. - ep_index = index. - EXIT. - ENDIF. - ENDWHILE. - - IF ep_index IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index not found'. - else. - SUBTRACT 1 from ep_index. " In excel list starts with "0" - ENDIF. - endmethod. - - - - - - method GET_STYLE_TO_GUID. - " # issue 139 - - READ TABLE me->t_stylemapping2 INTO ep_stylemapping WITH TABLE KEY guid = ip_guid. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'GUID not found'. - ENDIF. - - IF ep_stylemapping-dynamic_style_guid IS NOT INITIAL. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = ep_stylemapping-cl_style - CHANGING e_target = ep_stylemapping-complete_style - e_targetx = ep_stylemapping-complete_stylex ). - ENDIF. - - - endmethod. - - - - method GET_WORKSHEETS_ITERATOR. - - eo_iterator = me->worksheets->get_iterator( ). - - endmethod. - - - - method GET_WORKSHEETS_NAME. - - ep_name = me->worksheets->name. - - endmethod. - - - - METHOD get_worksheets_size. - - ep_size = me->worksheets->size( ). - -ENDMETHOD. - - - - - METHOD get_worksheet_by_index. - - - DATA: lv_index TYPE zexcel_active_worksheet. - - lv_index = iv_index. - eo_worksheet = me->worksheets->get( lv_index ). - -ENDMETHOD. - - - - - METHOD get_worksheet_by_name. - - DATA: lv_index TYPE zexcel_active_worksheet, - l_size TYPE i. - - l_size = get_worksheets_size( ). - - DO l_size TIMES. - lv_index = sy-index. - eo_worksheet = me->worksheets->get( lv_index ). - IF eo_worksheet->get_title( ) = ip_sheet_name. - RETURN. - ENDIF. - ENDDO. - - CLEAR eo_worksheet. - -ENDMETHOD. - - - - - METHOD set_active_sheet_index. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_errormessage TYPE string. - -*--------------------------------------------------------------------* -* Check whether worksheet exists -*--------------------------------------------------------------------* - lo_worksheet = me->get_worksheet_by_index( i_active_worksheet ). - IF lo_worksheet IS NOT BOUND. - lv_errormessage = 'Worksheet not existing'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - me->worksheets->active_worksheet = i_active_worksheet. - -ENDMETHOD. - - - - METHOD set_active_sheet_index_by_name. - - DATA: ws_it TYPE REF TO cl_object_collection_iterator, - ws TYPE REF TO zcl_excel_worksheet, - lv_title TYPE zexcel_sheet_title, - count TYPE i VALUE 1. - - ws_it = me->worksheets->get_iterator( ). - - WHILE ws_it->if_object_collection_iterator~has_next( ) = abap_true. - ws ?= ws_it->if_object_collection_iterator~get_next( ). - lv_title = ws->get_title( ). - IF lv_title = i_worksheet_name. - me->worksheets->active_worksheet = count. - EXIT. - ENDIF. - count = count + 1. - ENDWHILE. - -ENDMETHOD. - - - - - method SET_DEFAULT_STYLE. - me->default_style = ip_style. - endmethod. - - - - - method STYLEMAPPING_DYNAMIC_STYLE. -" # issue 139 - eo_style2-dynamic_style_guid = ip_style->get_guid( ). - eo_style2-guid = eo_style2-dynamic_style_guid. - eo_style2-added_to_iterator = abap_true. - eo_style2-cl_style = ip_style. - -* don't care about attributes here, since this data may change -* dynamically - - endmethod. - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - METHOD constructor. - worksheet = io_sheet. -ENDMETHOD. - - - - - METHOD get_column_filter. - - DATA: ls_filter LIKE LINE OF me->mt_filters. - - READ TABLE me->mt_filters REFERENCE INTO rr_filter WITH TABLE KEY column = i_column. - IF sy-subrc <> 0. - ls_filter-column = i_column. - INSERT ls_filter INTO TABLE me->mt_filters REFERENCE INTO rr_filter. - ENDIF. - -ENDMETHOD. - - - - METHOD get_filter_area. - - validate_area( ). - - rs_area = filter_area. - -ENDMETHOD. - - - - METHOD get_filter_range. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - - CONCATENATE l_col_start_c l_row_start_c ':' l_col_end_c l_row_end_c INTO r_range. - -ENDMETHOD. - - - - METHOD get_filter_reference. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - l_value = worksheet->get_title( ) . - - r_ref = zcl_excel_common=>escape_string( ip_value = l_value ). - - CONCATENATE r_ref '!$' l_col_start_c '$' l_row_start_c ':$' l_col_end_c '$' l_row_end_c INTO r_ref. - -ENDMETHOD. - - - - METHOD get_values. - - FIELD-SYMBOLS: <ls_filter> LIKE LINE OF me->mt_filters, - <ls_value> LIKE LINE OF <ls_filter>-t_values. - - DATA: ls_filter LIKE LINE OF rt_filter. - - LOOP AT me->mt_filters ASSIGNING <ls_filter> WHERE rule = mc_filter_rule_single_values. - - ls_filter-column = <ls_filter>-column. - LOOP AT <ls_filter>-t_values ASSIGNING <ls_value>. - ls_filter-value = <ls_value>. - APPEND ls_filter TO rt_filter. - ENDLOOP. - - ENDLOOP. - -ENDMETHOD. - - - - - METHOD is_row_hidden. - - - DATA: lr_filter TYPE REF TO ts_filter, - lv_col TYPE i, - ls_value TYPE zexcel_s_autofilter_values. - - FIELD-SYMBOLS: <ls_filter> TYPE ts_filter. - - rv_is_hidden = abap_false. - -*--------------------------------------------------------------------* -* 1st row of filter area is never hidden, because here the filter -* symbol is being shown -*--------------------------------------------------------------------* - IF iv_row = me->filter_area-row_start. - RETURN. - ENDIF. - - - lv_col = me->filter_area-col_start. - - - WHILE lv_col <= me->filter_area-col_end. - - lr_filter = me->get_column_filter( lv_col ). - ASSIGN lr_filter->* TO <ls_filter>. - - CASE <ls_filter>-rule. - - WHEN mc_filter_rule_single_values. - rv_is_hidden = me->is_row_hidden_single_values( iv_row = iv_row - iv_col = lv_col - is_filter = <ls_filter> ). - - WHEN mc_filter_rule_text_pattern. - rv_is_hidden = me->is_row_hidden_text_pattern( iv_row = iv_row - iv_col = lv_col - is_filter = <ls_filter> ). - - ENDCASE. - - IF rv_is_hidden = abap_true. - RETURN. - ENDIF. - - - ADD 1 TO lv_col. - - ENDWHILE. - - -ENDMETHOD. - - - - - - - METHOD is_row_hidden_single_values. - - - DATA: lv_value TYPE string. - - FIELD-SYMBOLS: <ls_sheet_content> LIKE LINE OF me->worksheet->sheet_content. - - rv_is_hidden = abap_false. " Default setting is NOT HIDDEN = is in filter range - -*--------------------------------------------------------------------* -* No filter values --> only symbol should be shown but nothing is being hidden -*--------------------------------------------------------------------* - IF is_filter-t_values IS INITIAL. - RETURN. - ENDIF. - -*--------------------------------------------------------------------* -* Get value of cell -*--------------------------------------------------------------------* - READ TABLE me->worksheet->sheet_content ASSIGNING <ls_sheet_content> WITH TABLE KEY cell_row = iv_row - cell_column = iv_col. - IF sy-subrc = 0. - lv_value = <ls_sheet_content>-cell_value. - ELSE. - CLEAR lv_value. - ENDIF. - -*--------------------------------------------------------------------* -* Check whether it is affected by filter -* this needs to be extended if we support other filtertypes -* other than single values -*--------------------------------------------------------------------* - READ TABLE is_filter-t_values TRANSPORTING NO FIELDS WITH TABLE KEY table_line = lv_value. - IF sy-subrc <> 0. - rv_is_hidden = abap_true. - RETURN. - ENDIF. - -ENDMETHOD. - - - - - - - METHOD is_row_hidden_text_pattern. - - - - DATA: lv_value TYPE string. - - FIELD-SYMBOLS: <ls_sheet_content> LIKE LINE OF me->worksheet->sheet_content. - - rv_is_hidden = abap_false. " Default setting is NOT HIDDEN = is in filter range - -*--------------------------------------------------------------------* -* Get value of cell -*--------------------------------------------------------------------* - READ TABLE me->worksheet->sheet_content ASSIGNING <ls_sheet_content> WITH TABLE KEY cell_row = iv_row - cell_column = iv_col. - IF sy-subrc = 0. - lv_value = <ls_sheet_content>-cell_value. - ELSE. - CLEAR lv_value. - ENDIF. - -*--------------------------------------------------------------------* -* Check whether it is affected by filter -* this needs to be extended if we support other filtertypes -* other than single values -*--------------------------------------------------------------------* - IF lv_value NOT IN is_filter-tr_textfilter1. - rv_is_hidden = abap_true. - RETURN. - ENDIF. - -ENDMETHOD. - - - - METHOD set_filter_area. - - filter_area = is_area. - -ENDMETHOD. - - - - - - - METHOD set_text_filter. -* see method documentation how to use this - - DATA: lr_filter TYPE REF TO ts_filter, - ls_value1 TYPE LINE OF ts_filter-tr_textfilter1. - - FIELD-SYMBOLS: <ls_filter> TYPE ts_filter. - - - lr_filter = me->get_column_filter( i_column ). - ASSIGN lr_filter->* TO <ls_filter>. - - <ls_filter>-rule = mc_filter_rule_text_pattern. - CLEAR <ls_filter>-tr_textfilter1. - - IF iv_textfilter1 CA '*+'. " Pattern - ls_value1-sign = 'I'. - ls_value1-option = 'CP'. - ls_value1-low = iv_textfilter1. - ELSE. - ls_value1-sign = 'I'. - ls_value1-option = 'EQ'. - ls_value1-low = iv_textfilter1. - ENDIF. - APPEND ls_value1 TO <ls_filter>-tr_textfilter1. - -ENDMETHOD. - - - - - - - - - - - - - - - - - - - - - - - - METHOD set_value. - - DATA: lr_filter TYPE REF TO ts_filter, - ls_value TYPE zexcel_s_autofilter_values. - - FIELD-SYMBOLS: <ls_filter> TYPE ts_filter. - - - lr_filter = me->get_column_filter( i_column ). - ASSIGN lr_filter->* TO <ls_filter>. - - <ls_filter>-rule = mc_filter_rule_single_values. - - INSERT i_value INTO TABLE <ls_filter>-t_values. - -ENDMETHOD. - - - - METHOD set_values. - - FIELD-SYMBOLS: <ls_value> LIKE LINE OF it_values. - - LOOP AT it_values ASSIGNING <ls_value>. - - me->set_value( i_column = <ls_value>-column - i_value = <ls_value>-value ). - - ENDLOOP. - -ENDMETHOD. - - - METHOD validate_area. - DATA: l_col TYPE zexcel_cell_column, - l_row TYPE zexcel_cell_row. - - l_row = worksheet->get_highest_row( ) . - l_col = worksheet->get_highest_column( ) . - - IF filter_area IS INITIAL. - filter_area-row_start = 1. - filter_area-col_start = 1. - filter_area-row_end = l_row . - filter_area-col_end = l_col . - ENDIF. - - IF filter_area-row_start < 1. - filter_area-row_start = 1. - ENDIF. - IF filter_area-col_start < 1. - filter_area-col_start = 1. - ENDIF. - IF filter_area-row_end > l_row OR - filter_area-row_end < 1. - filter_area-row_end = l_row. - ENDIF. - IF filter_area-col_end > l_col OR - filter_area-col_end < 1. - filter_area-col_end = l_col. - ENDIF. - IF filter_area-row_start >= filter_area-row_end. - filter_area-row_start = filter_area-row_end - 1. - IF filter_area-row_start < 1. - filter_area-row_start = 1. - filter_area-row_end = 2. - ENDIF. - ENDIF. - IF filter_area-col_start > filter_area-col_end. - filter_area-col_start = filter_area-col_end. - ENDIF. -ENDMETHOD. - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - METHOD add. - - DATA: ls_autofilter LIKE LINE OF me->mt_autofilters. - - FIELD-SYMBOLS: <ls_autofilter> LIKE LINE OF me->mt_autofilters. - - READ TABLE me->mt_autofilters ASSIGNING <ls_autofilter> WITH TABLE KEY worksheet = io_sheet. - IF sy-subrc = 0. - RAISE EXCEPTION TYPE zcx_excel. " adding another autofilter to sheet is not allowed - ENDIF. - - CREATE OBJECT ro_autofilter - EXPORTING - io_sheet = io_sheet. - - ls_autofilter-worksheet = io_sheet. - ls_autofilter-autofilter = ro_autofilter. - INSERT ls_autofilter INTO TABLE me->mt_autofilters. - - -ENDMETHOD. - - - METHOD clear. - - CLEAR me->mt_autofilters. - -ENDMETHOD. - - - - - - METHOD get. - - DATA: ls_autofilter LIKE LINE OF me->mt_autofilters. - - FIELD-SYMBOLS: <ls_autofilter> LIKE LINE OF me->mt_autofilters. - - READ TABLE me->mt_autofilters ASSIGNING <ls_autofilter> WITH TABLE KEY worksheet = io_worksheet. - IF sy-subrc = 0. - ro_autofilter = <ls_autofilter>-autofilter. - ELSE. - CLEAR ro_autofilter. - ENDIF. - -ENDMETHOD. - - - - METHOD is_empty. - IF me->mt_autofilters IS INITIAL. - r_empty = abap_true. - ENDIF. -ENDMETHOD. - - - - METHOD remove. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet. - - FIELD-SYMBOLS: <ls_autofilter> LIKE LINE OF me->mt_autofilters. - - DELETE TABLE me->mt_autofilters WITH TABLE KEY worksheet = lo_worksheet. - -ENDMETHOD. - - - - METHOD size. - DESCRIBE TABLE me->mt_autofilters LINES r_size. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS lcl_excel_common_test DEFINITION DEFERRED. -CLASS zcl_excel_common DEFINITION LOCAL FRIENDS lcl_excel_common_test. - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmless - . "#AU Duration Short -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>lcl_Excel_Common_Test -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL_COMMON -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - lx_excel TYPE REF TO zcx_excel, - ls_symsg_act TYPE symsg, " actual messageinformation of exception - ls_symsg_exp TYPE symsg, " expected messageinformation of exception - f_cut TYPE REF TO zcl_excel_common. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. -* METHODS: char2hex FOR TESTING. - METHODS: convert_column2alpha FOR TESTING. - METHODS: convert_column2int FOR TESTING. - METHODS: date_to_excel_string FOR TESTING. - METHODS: encrypt_password FOR TESTING. - METHODS: excel_string_to_date FOR TESTING. - METHODS: excel_string_to_time FOR TESTING. -* METHODS: number_to_excel_string FOR TESTING. - METHODS: time_to_excel_string FOR TESTING. - METHODS: split_file FOR TESTING. - METHODS: convert_range2column_a_row FOR TESTING. - METHODS: describe_structure FOR TESTING. - METHODS: calculate_cell_distance FOR TESTING. - METHODS: shift_formula FOR TESTING. - METHODS: is_cell_in_range FOR TESTING. -ENDCLASS. "lcl_Excel_Common_Test - - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test IMPLEMENTATION. -* =========================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - - - METHOD convert_column2alpha. -* ============================ - DATA ep_column TYPE zexcel_cell_column_alpha. - -* Test 1. Simple test - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 1 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column for OXML #16,384 = XFD - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16384 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'XFD' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 0 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum index 0 is out of bounds, min column index is 1' - level = if_aunit_constants=>fatal - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16385 ). - - zcl_excel_common=>assert_differs( - act = ep_column - exp = 'XFE' - msg = 'Colum index 16385 is out of bounds, max column index is 16384' - level = if_aunit_constants=>fatal - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "convert_Column2alpha - - - METHOD convert_column2int. -* ========================== - DATA ep_column TYPE zexcel_cell_column. - -* Test 1. Basic test - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'A' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 1 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFD' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 16384 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( '' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = '0' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - CLEAR: ls_symsg_act, - ls_symsg_exp. - ls_symsg_exp-msgid = 'ZABAP2XLSX'. - ls_symsg_exp-msgno = '800'. - ls_symsg_act-msgid = lx_excel->syst_at_raise-msgid. - ls_symsg_act-msgno = lx_excel->syst_at_raise-msgno. - zcl_excel_common=>assert_equals( act = ls_symsg_act - exp = ls_symsg_exp - msg = 'Colum name should be a valid string' - level = if_aunit_constants=>fatal ). - ENDTRY. - -* Test 4. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFE' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = 16385 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum XFE is out of range' - level = if_aunit_constants=>fatal ). - ENDTRY. - ENDMETHOD. "convert_Column2int - - - METHOD date_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000101' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 1 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000228' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 59 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000301' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 61 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '99991212' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 2958446 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - DATA: lv_date TYPE d. - ep_value = zcl_excel_common=>date_to_excel_string( lv_date ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - DATA exp_value TYPE zexcel_cell_value VALUE 0. - ep_value = zcl_excel_common=>date_to_excel_string( '18991231' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = exp_value - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Dates prior of 1900 are not available in excel' - level = if_aunit_constants=>critical - ). - ENDTRY. - - ENDMETHOD. "date_To_Excel_String - - - METHOD encrypt_password. -* ======================== - DATA lv_encrypted_pwd TYPE zexcel_aes_password. - - TRY. - lv_encrypted_pwd = zcl_excel_common=>encrypt_password( 'test' ). - - zcl_excel_common=>assert_equals( - act = lv_encrypted_pwd - exp = 'CBEB' - msg = 'Wrong password encryption' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - ENDMETHOD. "encrypt_Password - - - METHOD excel_string_to_date. -* ============================ - DATA ep_value TYPE d. - - -* Test 1. Simple test -> ABAP Manage also date prior of 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '18991231' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '59' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000228' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '61' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000301' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000101' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958446' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958447' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '00000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Date - - - METHOD excel_string_to_time. -* ============================ - DATA ep_value TYPE t. - -* Test 1. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0.99999' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '235959' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Also string greater than 1 should be managed - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '4.1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '022400' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. string is not a number - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( 'NaN' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Unable to interpret time' - msg = 'Time should be a valid string' - level = if_aunit_constants=>fatal - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Time - - - METHOD time_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000001' ). - " A test directly in Excel returns the value 0.0000115740740740741000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.0000115740740741' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '235959' ). - " A test directly in Excel returns the value 0.9999884259259260000000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.9999884259259260' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000000' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '022400' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.1000000000000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - ENDMETHOD. "time_To_Excel_String - - METHOD split_file. -* ============================ - - DATA: ep_file TYPE text255, - ep_extension TYPE char10, - ep_dotextension TYPE char10. - - -* Test 1. Basic conversion - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename.xml' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = 'xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '.xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - -* Test 2. no extension - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "split_file - - METHOD convert_range2column_a_row. - DATA: lv_range TYPE string. - DATA: lv_column_start TYPE zexcel_cell_column_alpha, - lv_column_end TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row, - lv_sheet TYPE string. - -* a) input empty --> nothing to do - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 - lv_range = `'Sheet 1'!$B$6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet 1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 - lv_range = `Sheet1!B6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* d) no sheetname - just area example $B$6:$D$13 - lv_range = `$B$6:D13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - ENDMETHOD. "convert_range2column_a_row - - - METHOD describe_structure. - DATA: ls_test TYPE scarr. - DATA: lo_structdescr TYPE REF TO cl_abap_structdescr. - DATA: lt_structure TYPE ddfields. - FIELD-SYMBOLS: <line> LIKE LINE OF lt_structure. - - " Test with DDIC Type - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_test ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'MANDT' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - " Test with local defined structure having DDIC and non DDIC elements - TYPES: - BEGIN OF t_test, - carrid TYPE s_carr_id, - carrname TYPE s_carrname, - carrdesc TYPE string, - END OF t_test. - DATA: ls_ttest TYPE t_test. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_ttest ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'CARRID' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "describe_structure - - - METHOD calculate_cell_distance. - DATA: lv_offset_rows TYPE i, - lv_offset_cols TYPE i, - lv_message TYPE string. - - DEFINE macro_calculate_cell_distance. - zcl_excel_common=>calculate_cell_distance( exporting iv_reference_cell = &1 - iv_current_cell = &2 - importing ev_row_difference = lv_offset_rows - ev_col_difference = lv_offset_cols ). -* Check delta columns - concatenate 'Error calculating column difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_cols - exp = &3 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). -* Check delta rows - concatenate 'Error calculating row difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_rows - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - END-OF-DEFINITION. - - - macro_calculate_cell_distance: - 'C12' 'C12' 0 0 , " Same cell - 'C12' 'C13' 0 1 , " Shift down 1 place - 'C12' 'C25' 0 13 , " Shift down some places - 'C12' 'C11' 0 -1 , " Shift up 1 place - 'C12' 'C1' 0 -11 , " Shift up some place - 'C12' 'D12' 1 0 , " Shift right 1 place - 'C12' 'AA12' 24 0 , " Shift right some places - 'C12' 'B12' -1 0 , " Shift left 1 place - 'AA12' 'C12' -24 0 , " Shift left some place - 'AA121' 'C12' -24 -109 . " The full package. - - ENDMETHOD. "CALCULATE_CELL_DISTANCE - - METHOD shift_formula. - DATA: lv_resulting_formula TYPE string, - lv_message TYPE string, - lv_counter TYPE num8. - - DEFINE macro_shift_formula. - add 1 to lv_counter. - clear lv_resulting_formula. - try. - lv_resulting_formula = zcl_excel_common=>shift_formula( iv_reference_formula = &1 - iv_shift_cols = &2 - iv_shift_rows = &3 ). - concatenate 'Wrong result in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - catch zcx_excel. - concatenate 'Unexpected exception occurred in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - endtry. - END-OF-DEFINITION. - -* Test shifts that should result in a valid output - macro_shift_formula: - 'C17' 0 0 'C17', " Very basic check - 'C17' 2 3 'E20', " Check shift right and down - 'C17' -2 -3 'A14', " Check shift left and up - '$C$17' 1 1 '$C$17', " Fixed columns/rows - 'SUM($C17:C$23)+C30' 1 11 'SUM($C28:D$23)+D41', " Operators and Ranges, mixed fixed rows or columns - 'RNGNAME1+C7' -1 -4 'RNGNAME1+B3', " Operators and Rangename - '"Date:"&TEXT(B2)' 1 1 '"Date:"&TEXT(C3)', " String literals and string concatenation - '[TEST6.XLSX]SHEET1!A1' 1 11 '[TEST6.XLSX]SHEET1!B12', " External sheet reference - `X(B13, "KK" ) ` 1 1 `X(C14,"KK")`, " superflous blanks, multi-argument functions, literals in function, unknown functions -* 'SIN((((((B2))))))' 1 1 'SIN((((((C3))))))', " Deep nesting -* 'SIN(SIN(SIN(SIN(E22))))' 0 1 'SIN(SIN(SIN(SIN(E23))))', " Different type of deep nesting - `SIN(SIN(SIN(SIN(E22))))` 0 1 'SIN(SIN(SIN(SIN(E23))))', " same as above - but with string input instead of Char-input - 'HEUTE()' 2 5 'HEUTE()', " Functions w/o arguments, No cellreferences - '"B2"' 2 5 '"B2"', " No cellreferences - '' 2 5 '', " Empty - 'A1+$A1+A$1+$A$1+B2' -1 0 '#REF!+$A1+#REF!+$A$1+A2', " Referencing error , column only , underflow - 'A1+$A1+A$1+$A$1+B2' 0 -1 '#REF!+#REF!+A$1+$A$1+B1', " Referencing error , row only , underflow - 'A1+$A1+A$1+$A$1+B2' -1 -1 '#REF!+#REF!+#REF!+$A$1+A1'. " Referencing error , row and column , underflow - ENDMETHOD. "SHIFT_FORMULA - - METHOD is_cell_in_range. - DATA ep_cell_in_range TYPE abap_bool. - -* Test 1: upper left corner (in range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'B' - ip_row = 2 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_true - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 2: lower right corner (in range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'D' - ip_row = 4 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_true - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 3: left side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'A' - ip_row = 3 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 4: upper side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'C' - ip_row = 1 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 5: right side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'E' - ip_row = 3 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 6: lower side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'C' - ip_row = 5 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - ENDMETHOD. - -ENDCLASS. "lcl_Excel_Common_Test - - - - - - - - - - - - - - - - - - ABAP - - - - - - - - - - - - - - - - - - - - method ASSERT_DIFFERS. - DATA: ls_seoclass TYPE seoclass. - -" Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -" Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -endmethod. - - - - - - - - - - - METHOD assert_equals. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -ENDMETHOD. - - - - - - - - METHOD calculate_cell_distance. - - DATA: lv_reference_row TYPE i, - lv_reference_col_alpha TYPE zexcel_cell_column_alpha, - lv_reference_col TYPE i, - lv_current_row TYPE i, - lv_current_col_alpha TYPE zexcel_cell_column_alpha, - lv_current_col TYPE i. - -*--------------------------------------------------------------------* -* Split reference cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_reference_cell - IMPORTING - e_column = lv_reference_col_alpha - e_row = lv_reference_row ). - lv_reference_col = convert_column2int( lv_reference_col_alpha ). - -*--------------------------------------------------------------------* -* Split current cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_current_cell - IMPORTING - e_column = lv_current_col_alpha - e_row = lv_current_row ). - lv_current_col = convert_column2int( lv_current_col_alpha ). - -*--------------------------------------------------------------------* -* Calculate row and column difference -* Positive: Current cell below reference cell -* or Current cell right of reference cell -* Negative: Current cell above reference cell -* or Current cell left of reference cell -*--------------------------------------------------------------------* - ev_row_difference = lv_current_row - lv_reference_row. - ev_col_difference = lv_current_col - lv_reference_col. - -ENDMETHOD. - - - - - method CHAR2HEX. - - IF o_conv IS NOT BOUND. - o_conv = cl_abap_conv_out_ce=>create( endian = 'L' - ignore_cerr = abap_true - replacement = '#' ). - ENDIF. - - CALL METHOD o_conv->reset( ). - CALL METHOD o_conv->write( data = i_char ). - r_hex+1 = o_conv->get_buffer( ). " x'65' must be x'0065' - -endmethod. - - - METHOD class_constructor. - c_xlsx_file_filter = 'Excel Workbook (*.xlsx)|*.xlsx|'(005). -ENDMETHOD. - - - - - - METHOD convert_column2alpha. - - DATA: lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - -* Propagate zcx_excel if error occurs " issue #155 - less restrictive typing for ip_column - lv_column = convert_column2int( ip_column ). " issue #155 - less restrictive typing for ip_column - -*--------------------------------------------------------------------* -* Check whether column is in allowed range for EXCEL to handle ( 1-16384 ) -*--------------------------------------------------------------------* - IF lv_column > 16384 - OR lv_column < 1. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDIF. - -*--------------------------------------------------------------------* -* Build alpha representation of column -*--------------------------------------------------------------------* - WHILE lv_column GT 0. - - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - - ENDWHILE. - -ENDMETHOD. - - - - - - METHOD convert_column2int. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-29 -* - ... -* changes: renaming variables to naming conventions -* removing unused variables -* removing commented out code that is inactive for more then half a year -* message made to support multilinguality -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#246 - error converting lower case column names -* - Stefan Schmöcker, 2012-12-29 -* changes: translating the correct variable to upper dase -* adding missing exception if input is a number -* that is out of bounds -* adding missing exception if input contains -* illegal characters like german umlauts -*--------------------------------------------------------------------* - - DATA: lv_column TYPE zexcel_cell_column_alpha, - lv_column_c TYPE char10, - lv_column_s TYPE string, - lv_errormessage TYPE string, " Can't pass '...'(abc) to exception-class - lv_modulo TYPE i. - -*--------------------------------------------------------------------* -* This module tries to identify which column a user wants to access -* Numbers as input are just passed back, anything else will be converted -* using EXCEL nomenclatura A = 1, AA = 27, ..., XFD = 16384 -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Normalize input ( upper case , no gaps ) -*--------------------------------------------------------------------* - lv_column_c = ip_column. -* TRANSLATE lv_column TO UPPER CASE. " Fix #246 - TRANSLATE lv_column_c TO UPPER CASE. " Fix #246 - CONDENSE lv_column_c NO-GAPS. - IF lv_column_c EQ ''. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* If a number gets passed, just convert it to an integer and return -* the converted value -*--------------------------------------------------------------------* - TRY. - IF lv_column_c CO '1234567890 '. " Fix #164 - ep_column = lv_column_c. " Fix #164 -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - EXIT. - ENDIF. - CATCH cx_sy_conversion_no_number. "#EC NO_HANDLER - " Try the character-approach if approach via number has failed - ENDTRY. - -*--------------------------------------------------------------------* -* Raise error if unexpected characters turns up -*--------------------------------------------------------------------* - lv_column_s = lv_column_c. - IF lv_column_s CN sy-abcde. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* Interpret input as number to base 26 with A=1, ... Z=26 -* Raise error if unexpected character turns up -*--------------------------------------------------------------------* -* 1st character -*--------------------------------------------------------------------* - lv_column = lv_column_c. - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+0(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = lv_modulo. " Leftmost digit - -*--------------------------------------------------------------------* -* 2nd character if present -*--------------------------------------------------------------------* - CHECK lv_column+1(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+1(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if second digit is present first digit is for 26^1 - -*--------------------------------------------------------------------* -* 3rd character if present -*--------------------------------------------------------------------* - CHECK lv_column+2(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+2(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if third digit is present first digit is for 26^2 and second digit for 26^1 - -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -ENDMETHOD. - - - - - - method CONVERT_COLUMNROW2COLUMN_A_ROW. -*--------------------------------------------------------------------* - "issue #256 - replacing char processing with regex -*--------------------------------------------------------------------* -* Stefan Schmöcker, 2013-08-11 -* Allow input to be CLIKE instead of STRING -*--------------------------------------------------------------------* - - DATA: pane_cell_row_a TYPE string, - lv_columnrow type string. - - lv_columnrow = i_columnrow. " Get rid of trailing blanks - - FIND REGEX '^(\D+)(\d+)$' IN lv_columnrow SUBMATCHES e_column - pane_cell_row_a. - e_row = pane_cell_row_a. - -endmethod. - - - - - - - - - - method CONVERT_RANGE2COLUMN_A_ROW. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* added exceptionclass -* added errorhandling for invalid range -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#241 - error when sheetname contains "!" -* - sheetname should be returned unescaped -* - Stefan Schmöcker, 2012-12-07 -* changes: changed coding to support sheetnames with "!" -* unescaping sheetname -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-07 -* changes: i_range changed to clike -* e_sheet changed to clike -*--------------------------------------------------------------------* - - DATA: lv_sheet TYPE string, - lv_range TYPE string, - lv_columnrow_start TYPE string, - lv_columnrow_end TYPE string, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Split input range into sheetname and Area -* 4 cases - a) input empty --> nothing to do -* - b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 -* - c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 -* - d) no sheetname - just area example $B$6:$D$13 -*--------------------------------------------------------------------* -* Initialize output parameters - CLEAR: e_column_start, - e_column_end, - e_row_start, - e_row_end, - e_sheet. - - IF i_range IS INITIAL. " a) input empty --> nothing to do - EXIT. - - ELSEIF i_range(1) = `'`. " b) sheetname existing - starts with ' - FIND REGEX '\![^\!]*$' IN i_range MATCH OFFSET sy-fdpos. " Find last ! - IF sy-subrc = 0. - lv_sheet = i_range(sy-fdpos). - ADD 1 TO sy-fdpos. - lv_range = i_range. - SHIFT lv_range LEFT BY sy-fdpos PLACES. - ELSE. - lv_errormessage = 'Invalid range'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ELSEIF i_range CS '!'. " c) sheetname existing - does not start with ' - SPLIT i_range AT '!' INTO lv_sheet lv_range. - - ELSE. " d) no sheetname - just area - lv_range = i_range. - ENDIF. - - REPLACE ALL OCCURRENCES OF '$' IN lv_range WITH ''. - SPLIT lv_range AT ':' INTO lv_columnrow_start lv_columnrow_end. - - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_start - IMPORTING - e_column = e_column_start - e_row = e_row_start ). - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_end - IMPORTING - e_column = e_column_end - e_row = e_row_end ). - - e_sheet = unescape_string( lv_sheet ). " Return in unescaped form -endmethod. - - - - - method DATE_TO_EXCEL_STRING. - DATA: lv_date_diff TYPE i. - - CHECK ip_value IS NOT INITIAL. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ip_value > c_excel_1900_leap_year. - lv_date_diff = ip_value - c_excel_baseline_date + 2. - ELSE. - lv_date_diff = ip_value - c_excel_baseline_date + 1. - ENDIF. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_date_diff ). -endmethod. - - - - - method DESCRIBE_STRUCTURE. - DATA: lt_components TYPE abap_component_tab, - lt_comps TYPE abap_component_tab, - lo_struct TYPE REF TO cl_abap_structdescr, - ls_component TYPE abap_componentdescr, - lo_elemdescr TYPE REF TO cl_abap_elemdescr, - ls_dfies TYPE dfies, - l_position TYPE tabfdpos. - - "for DDIC structure get the info directly - IF io_struct->is_ddic_type( ) = abap_true. - rt_dfies = io_struct->get_ddic_field_list( ). - ELSE. - lt_components = io_struct->get_components( ). - - LOOP AT lt_components INTO ls_component. - structure_case( EXPORTING is_component = ls_component - CHANGING xt_components = lt_comps ) . - ENDLOOP. - LOOP AT lt_comps INTO ls_component. - CLEAR ls_dfies. - IF ls_component-type->kind = cl_abap_typedescr=>kind_elem. "E Elementary Type - ADD 1 TO l_position. - lo_elemdescr ?= ls_component-type. - IF lo_elemdescr->is_ddic_type( ) = abap_true. - ls_dfies = lo_elemdescr->get_ddic_field( ). - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ELSE. - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ls_dfies-inttype = lo_elemdescr->type_kind. - ls_dfies-leng = lo_elemdescr->length. - ls_dfies-outputlen = lo_elemdescr->length. - ls_dfies-decimals = lo_elemdescr->decimals. - ls_dfies-fieldtext = ls_component-name. - ls_dfies-reptext = ls_component-name. - ls_dfies-scrtext_s = ls_component-name. - ls_dfies-scrtext_m = ls_component-name. - ls_dfies-scrtext_l = ls_component-name. - ls_dfies-dynpfld = abap_true. - ENDIF. - INSERT ls_dfies INTO TABLE rt_dfies. - ENDIF. - ENDLOOP. - ENDIF. -endmethod. - - - - - - - - METHOD determine_resulting_formula. - - DATA: lv_row_difference TYPE i, - lv_col_difference TYPE i. - -*--------------------------------------------------------------------* -* Calculate distance of reference and current cell -*--------------------------------------------------------------------* - calculate_cell_distance( EXPORTING - iv_reference_cell = iv_reference_cell - iv_current_cell = iv_current_cell - IMPORTING - ev_row_difference = lv_row_difference - ev_col_difference = lv_col_difference ). - -*--------------------------------------------------------------------* -* and shift formula by using the row- and columndistance -*--------------------------------------------------------------------* - ev_resulting_formula = shift_formula( iv_reference_formula = iv_reference_formula - iv_shift_rows = lv_row_difference - iv_shift_cols = lv_col_difference ). - -ENDMETHOD. "determine_resulting_formula - - - - - method ENCRYPT_PASSWORD. - - DATA lv_curr_offset TYPE i. - DATA lv_curr_char TYPE c LENGTH 1. - DATA lv_curr_hex TYPE zexcel_pwd_hash. - DATA lv_pwd_len TYPE zexcel_pwd_hash. - DATA lv_pwd_hash TYPE zexcel_pwd_hash. - - CONSTANTS: - lv_0x7fff TYPE zexcel_pwd_hash VALUE '7FFF', - lv_0x0001 TYPE zexcel_pwd_hash VALUE '0001', - lv_0xce4b TYPE zexcel_pwd_hash VALUE 'CE4B'. - - DATA lv_pwd TYPE zexcel_aes_password. - - lv_pwd = i_pwd(15). - - lv_pwd_len = STRLEN( lv_pwd ). - lv_curr_offset = lv_pwd_len - 1. - - WHILE lv_curr_offset GE 0. - - lv_curr_char = lv_pwd+lv_curr_offset(1). - lv_curr_hex = char2hex( lv_curr_char ). - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex. - SUBTRACT 1 FROM lv_curr_offset. - ENDWHILE. - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b. - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len. - - WRITE lv_pwd_hash TO r_encrypted_pwd. - -endmethod. - - - - - method ESCAPE_STRING. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-08 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#242 - Support escaping for white-spaces -* - Escaping also necessary when ' encountered in input -* - Stefan Schmöcker, 2012-12-08 -* changes: switched check if escaping is necessary to regular expression -* and moved the "REPLACE" -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-08 -* changes: ip_value changed to clike -*--------------------------------------------------------------------* - DATA: lv_value TYPE string. - -*--------------------------------------------------------------------* -* There exist various situations when a space will be used to separate -* different parts of a string. When we have a string consisting spaces -* that will cause errors unless we "escape" the string by putting ' at -* the beginning and at the end of the string. -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -* Now any remaining spaces ( white-spaces or normal spaces ) should -* trigger the escaping as well as any ' -*--------------------------------------------------------------------* - lv_value = ip_value. - - - FIND REGEX `\s|'` IN lv_value. " \s finds regular and white spaces - IF sy-subrc = 0. - REPLACE ALL OCCURRENCES OF `'` IN lv_value WITH `''`. - CONCATENATE `'` lv_value `'` INTO lv_value . - ENDIF. - - ep_escaped_value = lv_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_DATE. - DATA: lv_date_int TYPE i. - - TRY. - lv_date_int = ip_value. - ep_value = lv_date_int + c_excel_baseline_date - 2. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ep_value < c_excel_1900_leap_year. - ep_value = ep_value + 1. - ENDIF. - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDTRY. -endmethod. - - - - - - method EXCEL_STRING_TO_NUMBER. - -* If we encounter anything more complicated in EXCEL we might have to extend this -* But currently this works fine - even for numbers in scientific notation - - ep_value = ip_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_TIME. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_seconds_in_day TYPE i VALUE 86400. - - TRY. - - lv_day_fraction = ip_value. - lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day. - - ep_value = lv_seconds_in_day. - - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret time'. - ENDTRY. -endmethod. - - - - - - - method FAIL. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. - -endmethod. - - - - - METHOD get_fieldcatalog. - DATA: lr_dref_tab TYPE REF TO data, - lo_salv_table TYPE REF TO cl_salv_table, - lo_salv_columns_table TYPE REF TO cl_salv_columns_table, - lt_salv_t_column_ref TYPE salv_t_column_ref, - ls_salv_t_column_ref LIKE LINE OF lt_salv_t_column_ref, - lo_salv_column_table TYPE REF TO cl_salv_column_table. - - FIELD-SYMBOLS: <tab> TYPE STANDARD TABLE. - FIELD-SYMBOLS: <fcat> LIKE LINE OF ep_fieldcatalog. - -* Get copy of IP_TABLE-structure <-- must be changeable to create salv - CREATE DATA lr_dref_tab LIKE ip_table. - ASSIGN lr_dref_tab->* TO <tab>. -* Create salv --> implicitly create fieldcat - TRY. - cl_salv_table=>factory( IMPORTING - r_salv_table = lo_salv_table - CHANGING - t_table = <tab> ). - lo_salv_columns_table = lo_salv_table->get_columns( ). - lt_salv_t_column_ref = lo_salv_columns_table->get( ). - CATCH cx_root. -* maybe some errorhandling here - just haven't made up my mind yet - ENDTRY. - -* Loop through columns and set relevant fields ( fieldname, texts ) - LOOP AT lt_salv_t_column_ref INTO ls_salv_t_column_ref. - - lo_salv_column_table ?= ls_salv_t_column_ref-r_column. - APPEND INITIAL LINE TO ep_fieldcatalog ASSIGNING <fcat>. - <fcat>-position = sy-tabix. - <fcat>-fieldname = ls_salv_t_column_ref-columnname. - <fcat>-scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ). - <fcat>-scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ). - <fcat>-scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ). - <fcat>-abap_type = lo_salv_column_table->get_ddic_inttype( ). - - <fcat>-dynpfld = 'X'. " What in the world would we exclude here? - IF <fcat>-position = 1. " except for the MANDT-field of most tables ( 1st column that is ) - IF lo_salv_column_table->get_ddic_datatype( ) = 'CLNT'. - CLEAR <fcat>-dynpfld. - ENDIF. - ENDIF. - -* For fields that don't a description ( i.e. defined by "field type i," ) -* just use the fieldname as description - that is better than nothing - IF <fcat>-scrtext_s IS INITIAL - AND <fcat>-scrtext_m IS INITIAL - AND <fcat>-scrtext_l IS INITIAL. - CONCATENATE 'Col:' <fcat>-fieldname INTO <fcat>-scrtext_l SEPARATED BY space. - <fcat>-scrtext_m = <fcat>-scrtext_l. - <fcat>-scrtext_s = <fcat>-scrtext_l. - ENDIF. - - ENDLOOP. - -ENDMETHOD. - - - - - - - - method IS_CELL_IN_RANGE. - DATA lv_column_start TYPE zexcel_cell_column_alpha. - DATA lv_column_end TYPE zexcel_cell_column_alpha. - DATA lv_row_start TYPE zexcel_cell_row. - DATA lv_row_end TYPE zexcel_cell_row. - DATA lv_column_start_i TYPE zexcel_cell_column. - DATA lv_column_end_i TYPE zexcel_cell_column. - DATA lv_column_i TYPE zexcel_cell_column. - - -* Split range and convert columns - convert_range2column_a_row( - exporting - i_range = ip_range - IMPORTING - e_column_start = lv_column_start - e_column_end = lv_column_end - e_row_start = lv_row_start - e_row_end = lv_row_end ). - - lv_column_start_i = convert_column2int( ip_column = lv_column_start ). - lv_column_end_i = convert_column2int( ip_column = lv_column_end ). - - lv_column_i = convert_column2int( ip_column = ip_column ). - -* Check if cell is in range - IF lv_column_i >= lv_column_start_i AND - lv_column_i <= lv_column_end_i AND - ip_row >= lv_row_start AND - ip_row <= lv_row_end. - rp_in_range = abap_true. - ENDIF. -endmethod. - - - - - method NUMBER_TO_EXCEL_STRING. - DATA: lv_value_c TYPE c LENGTH 100. - - WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN. - REPLACE ALL OCCURRENCES OF ',' IN lv_value_c WITH '.'. - - ep_value = lv_value_c. - CONDENSE ep_value. - - IF ip_value < 0. - CONCATENATE '-' ep_value INTO ep_value. - ELSEIF ip_value EQ 0. - ep_value = '0'. - ENDIF. -endmethod. - - - - - - method RECURSIVE_CLASS_TO_STRUCT. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any. - - - descr ?= cl_abap_structdescr=>describe_by_data( e_target ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_targetx TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CLEAR flag_class. -* maybe source is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'i_source->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0. - EXIT. - ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursio -* IF flag_class = abap_true. -** Only borders will be passed as unbound references. But since we want to set a value we have to create an instance -* ENDIF. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = <attribute> - CHANGING e_target = <field> - e_targetx = <fieldx> ). - WHEN OTHERS. - <field> = <attribute>. - <fieldx> = abap_true. - - ENDCASE. - ENDLOOP. - -endmethod. - - - - - - METHOD recursive_struct_to_class. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any, - <attribute_s> TYPE ANY TABLE. - - - descr ?= cl_abap_structdescr=>describe_by_data( i_source ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_sourcex TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CHECK <fieldx> CA abap_true. - CLEAR flag_class. -* maybe target is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'E_TARGET->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0.EXIT.ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursion - " To avoid dump with attribute GRADTYPE of class ZCL_EXCEL_STYLE_FILL - " quick and really dirty fix -> check the attribute name - " Border has to be initialized somewhere else - IF wa_component-name EQ 'GRADTYPE'. - flag_class = abap_false. - ENDIF. - - IF flag_class = abap_true AND <attribute> IS INITIAL. -* Only borders will be passed as unbound references. But since we want to set a value we have to create an instance - CREATE OBJECT o_border. - <attribute> = o_border. - ENDIF. - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <field> - i_sourcex = <fieldx> - CHANGING e_target = <attribute> ). -* WHEN cl_abap_structdescr=>typekind_struct2. " String -* CHECK <fieldx> = abap_true. " Marked for change -* <attribute_s> = <field>. - WHEN OTHERS. - CHECK <fieldx> = abap_true. " Marked for change - <attribute> = <field>. - - ENDCASE. - ENDLOOP. - -ENDMETHOD. - - - - - - - - METHOD shift_formula. - - CONSTANTS: lcv_operators TYPE string VALUE '+-/*^%=<>&, !', - lcv_letters TYPE string VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$', - lcv_digits TYPE string VALUE '0123456789', - lcv_cell_reference_error TYPE string VALUE '#REF!'. - - DATA: lv_tcnt TYPE i, " Counter variable - lv_tlen TYPE i, " Temp variable length - lv_cnt TYPE i, " Counter variable - lv_cnt2 TYPE i, " Counter variable - lv_offset1 TYPE i, " Character offset - lv_numchars TYPE i, " Number of characters counter - lv_tchar(1) TYPE c, " Temp character - lv_tchar2(1) TYPE c, " Temp character - lv_cur_form(2000) TYPE c, " Formula for current cell - lv_ref_cell_addr TYPE string, " Reference cell address - lv_tcol1 TYPE string, " Temp column letter - lv_tcol2 TYPE string, " Temp column letter - lv_tcoln TYPE i, " Temp column number - lv_trow1 TYPE string, " Temp row number - lv_trow2 TYPE string, " Temp row number - lv_flen TYPE i, " Length of reference formula - lv_tlen2 TYPE i, " Temp variable length - lv_substr1 TYPE string, " Substring variable - lv_abscol TYPE string, " Absolute column symbol - lv_absrow TYPE string, " Absolute row symbol - - lv_errormessage TYPE string. - - FIELD-SYMBOLS: <find_my_include> TYPE ANY. - -*--------------------------------------------------------------------* -* When copying a cell in EXCEL to another cell any inherent formulas -* are copied as well. Cell-references in the formula are being adjusted -* by the distance of the new cell to the original one -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -* §2 Identify Cell-references -* §3 Shift cell-reference -* §4 Build resulting formula -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* No distance --> Reference = resulting cell/formula -*--------------------------------------------------------------------* - IF iv_shift_cols = 0 - AND iv_shift_rows = 0. - ev_resulting_formula = iv_reference_formula. - EXIT. " done - ENDIF. - - - lv_flen = STRLEN( iv_reference_formula ). - lv_numchars = 1. - -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -*--------------------------------------------------------------------* - DO lv_flen TIMES. - - CLEAR: lv_tchar, - lv_substr1, - lv_ref_cell_addr. - lv_cnt2 = lv_cnt + 1. - IF lv_cnt2 > lv_flen. - EXIT. " Done - ENDIF. - -*--------------------------------------------------------------------* -* Here we have the current character in the formula -*--------------------------------------------------------------------* - lv_tchar = iv_reference_formula+lv_cnt(1). - -*--------------------------------------------------------------------* -* Operators or opening parenthesis will separate possible cellreferences -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators - OR lv_tchar CA '(' ) - AND lv_cnt2 = 1. - lv_substr1 = iv_reference_formula+lv_offset1(1). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - -*--------------------------------------------------------------------* -* Quoted literal text holds no cell reference --> advance to end of text -*--------------------------------------------------------------------* - IF lv_tchar EQ '"'. - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - WHILE lv_tchar NE '"'. - - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - - ENDWHILE. - lv_cnt2 = lv_cnt + 1. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - IF lv_cnt = lv_flen. - EXIT. - ENDIF. - lv_offset1 = lv_cnt. - lv_numchars = 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - lv_cnt2 = lv_cnt + 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - -*--------------------------------------------------------------------* -* Operators or parenthesis or last character in formula will separate possible cellreferences -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA '():' - OR lv_cnt2 = lv_flen. - IF lv_cnt > 0. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). -*--------------------------------------------------------------------* -* Check for text concatenation and functions -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators AND lv_tchar EQ lv_substr1 ) OR lv_tchar EQ '('. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - lv_tlen = lv_cnt2 - lv_offset1. -*--------------------------------------------------------------------* -* Exclude mathematical operators and closing parentheses -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - IF lv_cnt2 = lv_flen - AND lv_numchars = 1. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ELSE. - lv_tlen = lv_tlen - 1. - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -* Capture reference cell address -*--------------------------------------------------------------------* - TRY. - MOVE: iv_reference_formula+lv_offset1(lv_tlen) TO lv_ref_cell_addr. "Ref cell address - CATCH cx_root. - lv_errormessage = 'Internal error in Class ZCL_EXCEL_COMMON Method SHIFT_FORMULA Spot 1 '. " Change to messageclass if possible - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - -*--------------------------------------------------------------------* -* Split cell address into characters and numbers -*--------------------------------------------------------------------* - CLEAR: lv_tlen, - lv_tcnt, - lv_tcol1, - lv_trow1. - lv_tlen = STRLEN( lv_ref_cell_addr ). - IF lv_tlen <> 0. - CLEAR: lv_tcnt. - DO lv_tlen TIMES. - CLEAR: lv_tchar2. - lv_tchar2 = lv_ref_cell_addr+lv_tcnt(1). - IF lv_tchar2 CA lcv_letters. - CONCATENATE lv_tcol1 lv_tchar2 INTO lv_tcol1. - ELSEIF lv_tchar2 CA lcv_digits. - CONCATENATE lv_trow1 lv_tchar2 INTO lv_trow1. - ENDIF. - lv_tcnt = lv_tcnt + 1. - ENDDO. - ENDIF. -*--------------------------------------------------------------------* -* Check for invalid cell address -*--------------------------------------------------------------------* - IF lv_tcol1 IS INITIAL OR lv_trow1 IS INITIAL. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for range names -*--------------------------------------------------------------------* - CLEAR: lv_tlen. - lv_tlen = STRLEN( lv_tcol1 ). - IF lv_tlen GT 3. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for valid row -*--------------------------------------------------------------------* - IF lv_trow1 GT 1048576. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for absolute column or row reference -*--------------------------------------------------------------------* - CLEAR: lv_tcol2, - lv_trow2, - lv_abscol, - lv_absrow. - lv_tlen2 = STRLEN( lv_tcol1 ) - 1. - IF lv_tcol1 IS NOT INITIAL. - lv_abscol = lv_tcol1(1). - ENDIF. - IF lv_tlen2 GE 0. - lv_absrow = lv_tcol1+lv_tlen2(1). - ENDIF. - IF lv_abscol EQ '$' AND lv_absrow EQ '$'. - lv_tlen2 = lv_tlen2 - 1. - IF lv_tlen2 > 0. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ENDIF. - lv_tlen2 = lv_tlen2 + 1. - ELSEIF lv_abscol EQ '$'. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ELSEIF lv_absrow EQ '$'. - lv_tcol1 = lv_tcol1(lv_tlen2). - ENDIF. -*--------------------------------------------------------------------* -* Check for valid column -*--------------------------------------------------------------------* - TRY. - lv_tcoln = zcl_excel_common=>convert_column2int( lv_tcol1 ) + iv_shift_cols. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. -*--------------------------------------------------------------------* -* Check whether there is a referencing problem -*--------------------------------------------------------------------* - lv_trow2 = lv_trow1 + iv_shift_rows. - IF ( lv_tcoln < 1 AND lv_abscol <> '$' ) " Maybe we should add here max-column and max row-tests as well. - OR ( lv_trow2 < 1 AND lv_absrow <> '$' ). " Check how EXCEL behaves in this case -*--------------------------------------------------------------------* -* Referencing problem encountered --> set error -*--------------------------------------------------------------------* - CONCATENATE lv_cur_form lcv_cell_reference_error INTO lv_cur_form. - ELSE. -*--------------------------------------------------------------------* -* No referencing problems --> adjust row and column -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Adjust column -*--------------------------------------------------------------------* - IF lv_abscol EQ '$'. - CONCATENATE lv_cur_form lv_abscol lv_tcol1 INTO lv_cur_form. - ELSEIF iv_shift_cols EQ 0. - CONCATENATE lv_cur_form lv_tcol1 INTO lv_cur_form. - ELSE. - TRY. - lv_tcol2 = zcl_excel_common=>convert_column2alpha( lv_tcoln ). - CONCATENATE lv_cur_form lv_tcol2 INTO lv_cur_form. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* Adjust row -*--------------------------------------------------------------------* - IF lv_absrow EQ '$'. - CONCATENATE lv_cur_form lv_absrow lv_trow1 INTO lv_cur_form. - ELSEIF iv_shift_rows = 0. - CONCATENATE lv_cur_form lv_trow1 INTO lv_cur_form. -* elseif lv_trow2 < 1. -* CONCATENATE lv_cur_form lc_cell_reference_error INTO lv_cur_form. - ELSE. - CONCATENATE lv_cur_form lv_trow2 INTO lv_cur_form. - ENDIF. - ENDIF. - - lv_numchars = 0. - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - CONCATENATE lv_cur_form lv_tchar INTO lv_cur_form. - ENDIF. - lv_offset1 = lv_cnt2. - ENDIF. - ENDIF. - lv_numchars = lv_numchars + 1. - lv_cnt = lv_cnt + 1. - lv_cnt2 = lv_cnt + 1. - - ENDDO. - - - -*--------------------------------------------------------------------* -* Return resulting formula -*--------------------------------------------------------------------* - IF lv_cur_form IS NOT INITIAL. - MOVE lv_cur_form TO ev_resulting_formula. - ENDIF. - -ENDMETHOD. - - - - - method SHL01. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i VALUE 2, - lv_prev_pos TYPE i VALUE 1. - - DO 15 TIMES. - GET BIT lv_curr_pos OF i_pwd_hash INTO lv_bit. - SET BIT lv_prev_pos OF r_pwd_hash TO lv_bit. - ADD 1 TO lv_curr_pos. - ADD 1 TO lv_prev_pos. - ENDDO. - SET BIT 16 OF r_pwd_hash TO 0. - -endmethod. - - - - - method SHR14. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i, - lv_next_pos TYPE i. - - r_pwd_hash = i_pwd_hash. - - DO 14 TIMES. - lv_curr_pos = 15. - lv_next_pos = 16. - - DO 15 TIMES. - GET BIT lv_curr_pos OF r_pwd_hash INTO lv_bit. - SET BIT lv_next_pos OF r_pwd_hash TO lv_bit. - SUBTRACT 1 FROM lv_curr_pos. - SUBTRACT 1 FROM lv_next_pos. - ENDDO. - SET BIT 1 OF r_pwd_hash TO 0. - ENDDO. - -endmethod. - - - - - - - method SPLIT_FILE. - - DATA: lt_hlp TYPE TABLE OF text255, - ls_hlp TYPE text255. - - DATA: lf_ext(10) TYPE c, - lf_dot_ext(10) TYPE c. - DATA: lf_str TYPE text255, - lf_anz TYPE i, - lf_len TYPE i. -** --------------------------------------------------------------------- - - CLEAR: lt_hlp, - ep_file, - ep_extension, - ep_dotextension. - -** Split the whole file at '.' - SPLIT ip_file AT '.' INTO TABLE lt_hlp. - -** get the extenstion from the last line of table - DESCRIBE TABLE lt_hlp LINES lf_anz. - IF lf_anz <= 1. - ep_file = ip_file. - EXIT. - ENDIF. - - READ TABLE lt_hlp INTO ls_hlp INDEX lf_anz. - ep_extension = ls_hlp. - lf_ext = ls_hlp. - IF NOT lf_ext IS INITIAL. - CONCATENATE '.' lf_ext INTO lf_dot_ext. - ENDIF. - ep_dotextension = lf_dot_ext. - -** get only the filename - lf_len = strlen( ip_file ) - strlen( lf_dot_ext ). - IF lf_len > 0. - ep_file = ip_file(lf_len). - ENDIF. - -endmethod. - - - - - method STRUCTURE_CASE. - DATA: lt_comp_str TYPE abap_component_tab. - - CASE is_component-type->kind. - WHEN cl_abap_typedescr=>kind_elem. "E Elementary Type - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_table. "T Table - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_struct. "S Structure - lt_comp_str = structure_recursive( is_component = is_component ). - INSERT LINES OF lt_comp_str INTO TABLE xt_components. - WHEN OTHERS. "cl_abap_typedescr=>kind_ref or cl_abap_typedescr=>kind_class or cl_abap_typedescr=>kind_intf. -* We skip it. for now. - ENDCASE. -endmethod. - - - - - method STRUCTURE_RECURSIVE. - DATA: lo_struct TYPE REF TO cl_abap_structdescr, - lt_components TYPE abap_component_tab, - ls_components TYPE abap_componentdescr. - - REFRESH rt_components. - - lo_struct ?= is_component-type. - lt_components = lo_struct->get_components( ). - - LOOP AT lt_components INTO ls_components. - structure_case( EXPORTING is_component = ls_components - CHANGING xt_components = rt_components ) . - ENDLOOP. - -endmethod. - - - - - method TIME_TO_EXCEL_STRING. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_time_baseline TYPE t VALUE '000000', - lc_seconds_in_day TYPE i VALUE 86400. - - lv_seconds_in_day = ip_value - lc_time_baseline. - lv_day_fraction = lv_seconds_in_day / lc_seconds_in_day. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_day_fraction ). -endmethod. - - - - - - method UNESCAPE_STRING. - - CONSTANTS lcv_regex TYPE string VALUE `^'[^']` & `|` & " Beginning single ' OR - `[^']'$` & `|` & " Trailing single ' OR - `[^']'[^']`. " Single ' somewhere in between - - - DATA: lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - -*--------------------------------------------------------------------* -* This method is used to extract the "real" string from an escaped string. -* An escaped string can be identified by a beginning ' which must be -* accompanied by a trailing ' -* All '' in between beginning and trailing ' are treated as single ' -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -*--------------------------------------------------------------------* - ev_unescaped_string = iv_escaped. " Pass through if not escaped - - CHECK ev_unescaped_string IS NOT INITIAL. " Nothing to do if empty - CHECK ev_unescaped_string(1) = `'`. " Nothing to do if not escaped - -*--------------------------------------------------------------------* -* Remove leading and trailing ' -*--------------------------------------------------------------------* - REPLACE REGEX `^'(.*)'$` IN ev_unescaped_string WITH '$1'. - IF sy-subrc <> 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Any remaining single ' should not be here -*--------------------------------------------------------------------* - FIND REGEX lcv_regex IN ev_unescaped_string. - IF sy-subrc = 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Replace '' with ' -*--------------------------------------------------------------------* - REPLACE ALL OCCURRENCES OF `''` IN ev_unescaped_string WITH `'`. - - -endmethod. - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -TYPES: BEGIN OF ts_alv_types, - seoclass TYPE seoclsname, - clsname TYPE seoclsname, - END OF ts_alv_types, - tt_alv_types TYPE HASHED TABLE OF ts_alv_types WITH UNIQUE KEY seoclass. - -TYPES: BEGIN OF ts_sort_values, - fieldname TYPE fieldname, - row_int TYPE zexcel_cell_row, - value TYPE REF TO data, - new TYPE flag, - sort_level TYPE int4, - is_collapsed type flag, - END OF ts_sort_values, - - tt_sort_values TYPE HASHED TABLE OF ts_sort_values WITH UNIQUE KEY fieldname. -TYPES: BEGIN OF ts_subtotal_rows, - row_int TYPE zexcel_cell_row, - row_int_start TYPE zexcel_cell_row, - columnname TYPE fieldname, - END OF ts_subtotal_rows, - - tt_subtotal_rows TYPE HASHED TABLE OF ts_subtotal_rows WITH UNIQUE KEY row_int. - -TYPES: BEGIN OF ts_styles, - type TYPE char1, - alignment TYPE zexcel_alignment, - inttype TYPE inttype, - decimals TYPE int1, - style TYPE REF TO zcl_excel_style, - guid TYPE zexcel_cell_style, - END OF ts_styles, - - tt_styles TYPE HASHED TABLE OF ts_styles WITH UNIQUE KEY type alignment inttype decimals. - -TYPES: BEGIN OF ts_color_styles, - guid_old TYPE zexcel_cell_style, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - style_new TYPE REF TO zcl_excel_style, - END OF ts_color_styles, - - tt_color_styles TYPE HASHED TABLE OF ts_color_styles WITH UNIQUE KEY guid_old fontcolor fillcolor. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ASK_OPTION. - DATA: ls_sval TYPE sval, - lt_sval TYPE STANDARD TABLE OF sval, - l_returncode TYPE string, - lt_fields TYPE ddfields, - ls_fields TYPE dfies. - - FIELD-SYMBOLS: <fs> TYPE ANY. - - rs_option = ws_option. - - CALL FUNCTION 'DDIF_FIELDINFO_GET' - EXPORTING - tabname = 'ZEXCEL_S_CONVERTER_OPTION' -* FIELDNAME = ' ' -* LANGU = sy-langu -* LFIELDNAME = ' ' -* ALL_TYPES = ' ' -* GROUP_NAMES = ' ' -* UCLEN = -* IMPORTING -* X030L_WA = -* DDOBJTYPE = -* DFIES_WA = -* LINES_DESCR = - TABLES - dfies_tab = lt_fields -* FIXED_VALUES = - EXCEPTIONS - not_found = 1 - internal_error = 2 - OTHERS = 3 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - LOOP AT lt_fields INTO ls_fields. - ASSIGN COMPONENT ls_fields-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - CLEAR ls_sval. - ls_sval-tabname = ls_fields-tabname. - ls_sval-fieldname = ls_fields-fieldname. - ls_sval-value = <fs>. - ls_sval-field_attr = space. - ls_sval-field_obl = space. - ls_sval-comp_code = space. - ls_sval-fieldtext = ls_fields-scrtext_m. - ls_sval-comp_tab = space. - ls_sval-comp_field = space. - ls_sval-novaluehlp = space. - INSERT ls_sval INTO TABLE lt_sval. - ENDIF. - ENDLOOP. - - CALL FUNCTION 'POPUP_GET_VALUES' - EXPORTING -* NO_VALUE_CHECK = space - popup_title = 'Excel creation options'(008) -* START_COLUMN = '5' -* START_ROW = '5' - IMPORTING - returncode = l_returncode - TABLES - fields = lt_sval - EXCEPTIONS - error_in_fields = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ELSE. - IF l_returncode = 'A'. - RAISE EXCEPTION TYPE zcx_excel. - ELSE. - LOOP AT lt_sval INTO ls_sval. - ASSIGN COMPONENT ls_sval-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - <fs> = ls_sval-value. - ENDIF. - ENDLOOP. - set_option( is_option = ws_option ) . - rs_option = ws_option. - ENDIF. - ENDIF. - endmethod. - - - - - method BIND_CELLS. - -* Do we need subtotals with grouping - READ TABLE wt_fieldcatalog TRANSPORTING NO FIELDS WITH KEY is_subtotalled = abap_true. - IF sy-subrc = 0 . - r_freeze_col = loop_subtotal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ELSE. - r_freeze_col = loop_normal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ENDIF. - - endmethod. - - - - - - method BIND_TABLE. - data: lt_field_catalog type zexcel_t_fieldcatalog, - ls_field_catalog type zexcel_s_fieldcatalog, - ls_fcat type zexcel_s_converter_fcat, - lo_col_dim type ref to zcl_excel_worksheet_columndime, - lo_row_dim type ref to zcl_excel_worksheet_rowdimensi, - l_col_int type zexcel_cell_column, - l_col_alpha type zexcel_cell_column_alpha, - ls_settings type zexcel_s_table_settings, - l_line type i. - - field-symbols: <fs_tab> type any table. - - assign wo_data->* to <fs_tab> . - - ls_settings-table_style = i_style_table. - ls_settings-top_left_column = zcl_excel_common=>convert_column2alpha( ip_column = w_col_int ). - ls_settings-top_left_row = w_row_int. - ls_settings-show_row_stripes = ws_layout-is_stripped. - - describe table wt_fieldcatalog lines l_line. - l_line = l_line + 1 + w_col_int. - ls_settings-bottom_right_column = zcl_excel_common=>convert_column2alpha( ip_column = l_line ). - - describe table <fs_tab> lines l_line. - ls_settings-bottom_right_row = l_line + 1 + w_row_int. - sort wt_fieldcatalog by position. - loop at wt_fieldcatalog into ls_fcat. - move-corresponding ls_fcat to ls_field_catalog. - ls_field_catalog-dynpfld = abap_true. - insert ls_field_catalog into table lt_field_catalog. - endloop. - - wo_worksheet->bind_table( - exporting - ip_table = <fs_tab> - it_field_catalog = lt_field_catalog - is_table_settings = ls_settings - importing - es_table_settings = ls_settings - ). - loop at wt_fieldcatalog into ls_fcat. - l_col_int = w_col_int + ls_fcat-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Freeze panes - if ls_fcat-fix_column = abap_true. - add 1 to r_freeze_col. - endif. -* Now let's check for optimized - if ls_fcat-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - endif. -* Now let's check for visible - if ls_fcat-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - endif. - endloop. - - endmethod. - - - method CLASS_CONSTRUCTOR. - DATA: ls_objects TYPE ts_alv_types. - DATA: ls_option TYPE zexcel_s_converter_option, - l_uname TYPE sy-uname. - - GET PARAMETER ID 'ZUS' FIELD l_uname. - IF l_uname IS INITIAL OR l_uname = space. - l_uname = sy-uname. - ENDIF. - -* Object CL_GUI_ALV_GRID - ls_objects-seoclass = 'CL_GUI_ALV_GRID'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_ALV_GRID'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_TABLE - ls_objects-seoclass = 'CL_SALV_TABLE'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_SALV_TABLE'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_RESULT - ls_objects-seoclass = 'CL_SALV_EX_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_EX'. - INSERT ls_objects INTO TABLE wt_objects. -* Object CL_SALV_WD_RESULT - ls_objects-seoclass = 'CL_SALV_WD_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_WD'. - INSERT ls_objects INTO TABLE wt_objects. - - CONCATENATE 'EXCEL_' sy-uname INTO ws_indx-srtfd. - - IMPORT p1 = ls_option FROM DATABASE indx(xl) TO ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = ls_option. - ELSE. - init_option( ) . - ENDIF. - - endmethod. - - - method CLEAN_FIELDCATALOG. - DATA: l_position TYPE int1. - - FIELD-SYMBOLS: <fs_sfcat> TYPE zexcel_s_converter_fcat. - - SORT wt_fieldcatalog BY position col_id. - - CLEAR l_position. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - ADD 1 TO l_position. - <fs_sfcat>-position = l_position. -* Default stype with alignment and format - <fs_sfcat>-style_hdr = get_style( i_type = c_type_hdr - i_alignment = <fs_sfcat>-alignment ). - IF ws_layout-is_stripped = abap_true. - <fs_sfcat>-style_stripped = get_style( i_type = c_type_str - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDIF. - <fs_sfcat>-style_normal = get_style( i_type = c_type_nor - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_subtotal = get_style( i_type = c_type_sub - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_total = get_style( i_type = c_type_tot - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDLOOP. - - endmethod. - - - - - - - - - - - - - method CONVERT. - - IF is_option IS SUPPLIED. - ws_option = is_option. - ENDIF. - - TRY. - execute_converter( EXPORTING io_object = io_alv - it_table = it_table ) . - ENDTRY. - - IF io_worksheet IS SUPPLIED AND io_worksheet IS BOUND. - wo_worksheet = io_worksheet. - ENDIF. - IF co_excel IS SUPPLIED. - IF co_excel IS NOT BOUND. - CREATE OBJECT co_excel. - co_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - wo_excel = co_excel. - ENDIF. - -* Move table to data object and clean it up - IF wt_fieldcatalog IS NOT INITIAL. - create_table( ). - ELSE. - wo_data = wo_table . - ENDIF. - - IF wo_excel IS NOT BOUND. - CREATE OBJECT wo_excel. - wo_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - IF wo_worksheet IS NOT BOUND. - " Get active sheet - wo_worksheet = wo_excel->get_active_worksheet( ). - wo_worksheet->set_title( ip_title = 'Sheet1'(001) ). - ENDIF. - - IF i_row_int <= 0. - w_row_int = 1. - ELSE. - w_row_int = i_row_int. - ENDIF. - IF i_column_int <= 0. - w_col_int = 1. - ELSE. - w_col_int = i_column_int. - ENDIF. - - create_worksheet( i_table = i_table - i_style_table = i_style_table ) . - - endmethod. - - - - - - method CREATE_COLOR_STYLE. - DATA: ls_styles TYPE ts_styles. - DATA: lo_style TYPE REF TO zcl_excel_style. - - READ TABLE wt_styles INTO ls_styles WITH KEY guid = i_style. - IF sy-subrc = 0. - lo_style = wo_excel->add_new_style( ). -* lo_style->borders = ls_styles-style->borders. -* lo_style->protection = ls_styles-style->protection. - lo_style->font->bold = ls_styles-style->font->bold. - lo_style->alignment->horizontal = ls_styles-style->alignment->horizontal. - lo_style->number_format->format_code = ls_styles-style->number_format->format_code. - - lo_style->font->color-rgb = is_colors-fontcolor. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = is_colors-fillcolor. - - ro_style = lo_style. - ENDIF. - endmethod. - - - - - - - - method CREATE_FORMULAR_SUBTOTAL. - data: l_row_alpha_start type string, - l_row_alpha_end type string, - l_func_num type string. - - l_row_alpha_start = i_row_int_start. - l_row_alpha_end = i_row_int_end. - - l_func_num = get_function_number( i_totals_function = i_totals_function ). - concatenate 'SUBTOTAL(' l_func_num ',' i_column l_row_alpha_start ':' i_column l_row_alpha_end ')' into r_formula. - endmethod. - - - - - - - method CREATE_FORMULAR_TOTAL. - data: l_row_alpha type string, - l_row_e_alpha type string. - - l_row_alpha = w_row_int + 1. - l_row_e_alpha = i_row_int. - - concatenate i_totals_function '(' i_column l_row_alpha ':' i_column l_row_e_alpha ')' into r_formula. - endmethod. - - - - method CREATE_PATH. - DATA: l_sep TYPE c , - l_path TYPE string, - l_return TYPE i . - - CLEAR r_path. - - " Save the file - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING - sapworkdir = l_path - EXCEPTIONS - get_sapworkdir_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - ). - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - CONCATENATE 'Excel_' w_fcount '.xlsx' INTO r_path. - ELSE. - DO. - ADD 1 TO w_fcount. -*-obtain file separator character--------------------------------------- - CALL METHOD cl_gui_frontend_services=>get_file_separator - CHANGING - file_separator = l_sep - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4. - - IF sy-subrc <> 0. - l_sep = ''. - ENDIF. - - CONCATENATE l_path l_sep 'Excel_' w_fcount '.xlsx' INTO r_path. - - IF cl_gui_frontend_services=>file_exist( file = r_path ) = abap_true. - cl_gui_frontend_services=>file_delete( EXPORTING filename = r_path - CHANGING rc = l_return - EXCEPTIONS OTHERS = 1 ). - IF sy-subrc = 0 . - RETURN. - ENDIF. - ELSE. - RETURN. - ENDIF. - ENDDO. - ENDIF. - - endmethod. - - - - - method CREATE_STYLE_HDR. - data: lo_style type ref to zcl_excel_style. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - lo_style->font->color-rgb = zcl_excel_style_color=>c_white. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FF4F81BD'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - ro_style = lo_style . - endmethod. - - - - - - - method CREATE_STYLE_NORMAL. - DATA: lo_style TYPE REF TO zcl_excel_style, - l_format TYPE zexcel_number_format. - - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - ENDIF. - IF l_format IS NOT INITIAL OR - ( i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL ) . - - lo_style = wo_excel->add_new_style( ). - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - - ro_style = lo_style . - - ENDIF. - endmethod. - - - - - - - method CREATE_STYLE_STRIPPED. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFDBE5F1'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - ro_style = lo_style. - - endmethod. - - - - - - - method CREATE_STYLE_SUBTOTAL. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - - ro_style = lo_style . - - endmethod. - - - - - - - method CREATE_STYLE_TOTAL. - DATA: lo_style TYPE REF TO zcl_excel_style. - DATA: l_format TYPE zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - CREATE OBJECT lo_style->borders->top. - lo_style->borders->top->border_style = zcl_excel_style_border=>c_border_thin. - lo_style->borders->top->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->right. - lo_style->borders->right->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->right->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->down. - lo_style->borders->down->border_style = zcl_excel_style_border=>c_border_double. - lo_style->borders->down->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->left. - lo_style->borders->left->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->left->border_color-rgb = zcl_excel_style_color=>c_black. - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - ENDIF. - - ro_style = lo_style . - - endmethod. - - - method CREATE_TABLE. - TYPES: BEGIN OF ts_output, - fieldname TYPE fieldname, - function TYPE funcname, - END OF ts_output. - - DATA: lo_data TYPE REF TO data. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lt_fieldcatalog TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat, - <fs_stab> TYPE ANY, - <fs_ttab> TYPE STANDARD TABLE, - <fs> TYPE ANY, - <fs_table> TYPE STANDARD TABLE. - - SORT wt_fieldcatalog BY position. - ASSIGN wo_table->* TO <fs_table>. - - READ TABLE <fs_table> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc EQ 0 . - LOOP AT wt_fieldcatalog ASSIGNING <fs_scat>. - ASSIGN COMPONENT <fs_scat>-columnname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - ls_components-name = <fs_scat>-columnname. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - DELETE TABLE wt_fieldcatalog FROM <fs_scat>. - ENDTRY. - IF lo_addit IS BOUND. - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ENDIF. - ENDIF. - ENDLOOP. - IF lt_components_tab IS NOT INITIAL. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( P_COMPONENTS = lt_components_tab - P_STRICT = abap_false ). - CATCH cx_sy_struct_creation. - RETURN. " We can not do anything in this case. - ENDTRY. - - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA wo_data TYPE HANDLE lo_table. - CREATE DATA lo_data TYPE HANDLE lo_struc. - - ASSIGN wo_data->* TO <fs_ttab>. - ASSIGN lo_data->* TO <fs_stab>. - LOOP AT <fs_table> ASSIGNING <fs>. - CLEAR <fs_stab>. - MOVE-CORRESPONDING <fs> TO <fs_stab>. - APPEND <fs_stab> TO <fs_ttab>. - ENDLOOP. - ENDIF. - ENDIF. - - endmethod. - - - - - - METHOD create_text_subtotal. - DATA: l_string(256) TYPE c, - l_func TYPE string. - - CASE i_totals_function. - WHEN zcl_excel_table=>totals_function_sum. " Total - l_func = 'Total'(003). - WHEN zcl_excel_table=>totals_function_min. " Minimum - l_func = 'Minimum'(004). - WHEN zcl_excel_table=>totals_function_max. " Maximum - l_func = 'Maximum'(005). - WHEN zcl_excel_table=>totals_function_average. " Mean Value - l_func = 'Average'(006). - WHEN zcl_excel_table=>totals_function_count. " Count - l_func = 'Count'(007). - WHEN OTHERS. - CLEAR l_func. - ENDCASE. - - MOVE i_value TO l_string. - - CONCATENATE l_string l_func INTO r_text SEPARATED BY space. - -ENDMETHOD. - - - - - - method CREATE_WORKSHEET. - DATA: l_freeze_col TYPE i. - DATA: l_guid TYPE oltpguid16. - - IF wo_data IS BOUND AND wo_worksheet IS BOUND. - - wo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. " By default is on - - IF wt_fieldcatalog IS INITIAL. - set_fieldcatalog( ) . - ELSE. - clean_fieldcatalog( ) . - ENDIF. - - IF i_table = abap_true. - l_freeze_col = bind_table( i_style_table = i_style_table ) . - ELSE. -* Let's check for filter. - IF wt_filter IS NOT INITIAL. - wo_autofilter = wo_excel->add_new_autofilter( io_sheet = wo_worksheet ). - l_freeze_col = bind_cells( ) . - set_autofilter_area( ) . - ELSE. - l_freeze_col = bind_cells( ) . - ENDIF. - - ENDIF. - -* Check for freeze panes - IF ws_layout-is_fixed = abap_true. - IF l_freeze_col = 0. - l_freeze_col = w_col_int. - ENDIF. - wo_worksheet->freeze_panes( EXPORTING ip_num_columns = l_freeze_col - ip_num_rows = w_row_int ) . - ENDIF. - ENDIF. - - endmethod. - - - - - - method EXECUTE_CONVERTER. - DATA: lt_fieldcatalog TYPE zexcel_t_fieldcatalog, - ls_fieldcatalog TYPE zexcel_s_converter_fcat, - lo_if TYPE REF TO zif_excel_converter, - ls_types TYPE ts_alv_types, - lo_addit TYPE REF TO cl_abap_classdescr, - lo_addit_superclass type ref to cl_abap_classdescr. - - IF io_object IS BOUND. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_object_ref( io_object ). - CATCH cx_sy_move_cast_error. - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - ls_types-seoclass = lo_addit->get_relative_name( ). - READ TABLE wt_objects INTO ls_types WITH TABLE KEY seoclass = ls_types-seoclass. - if sy-subrc ne 0. - do. - free lo_addit_superclass. - lo_addit_superclass = lo_addit->get_super_class_type( ). - if lo_addit_superclass is initial. - sy-subrc = '4'. - exit. - endif. - lo_addit = lo_addit_superclass. - ls_types-seoclass = lo_addit->get_relative_name( ). - read table wt_objects into ls_types with table key seoclass = ls_types-seoclass. - if sy-subrc eq 0. - exit. - endif. - enddo. - endif. - if sy-subrc = 0. - CREATE OBJECT lo_if type (ls_types-clsname). - try. - lo_if->create_fieldcatalog( - exporting - is_option = ws_option - io_object = io_object - it_table = it_table - importing - es_layout = ws_layout - et_fieldcatalog = wt_fieldcatalog - eo_table = wo_table - et_colors = wt_colors - et_filter = wt_filter - ). - endtry. -* data lines of highest level. - if ws_layout-max_subtotal_level > 0. add 1 to ws_layout-max_subtotal_level. endif. - else. - RAISE EXCEPTION type zcx_excel. - endif. - else. - refresh wt_fieldcatalog. - get reference of it_table into wo_table. - endif. -endmethod. - - - - - - - method GET_COLOR_STYLE. - DATA: ls_colors TYPE zexcel_s_converter_col, - ls_color_styles TYPE ts_color_styles, - lo_style TYPE REF TO zcl_excel_style. - - r_style = i_style. " Default we change nothing - - IF wt_colors IS NOT INITIAL. -* Full line has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = space. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - r_style = lo_style->get_guid( ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - ENDIF. - ELSE. -* Only field has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = i_fieldname. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - r_style = ls_color_styles-style_new->get_guid( ). - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - - endmethod. - - - - - - method GET_FILE. - data: lo_excel_writer type ref to zif_excel_writer, - lo_excel type ref to zcl_excel. - - data: ls_seoclass type seoclass. - - - if wo_excel is bound. - create object lo_excel_writer type zcl_excel_writer_2007. - e_file = lo_excel_writer->write_file( wo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = e_file - receiving - et_solix = et_file. - e_bytecount = xstrlen( e_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = e_file - importing - output_length = e_bytecount - tables - binary_tab = et_file. - endif. - endif. - - endmethod. - - - - - method GET_FUNCTION_NUMBER. -*Number Function -*1 AVERAGE -*2 COUNT -*3 COUNTA -*4 MAX -*5 MIN -*6 PRODUCT -*7 STDEV -*8 STDEVP -*9 SUM -*10 VAR -*11 VARP - - case i_totals_function. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_SUM. " Total - r_function_number = 9. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MIN. " Minimum - r_function_number = 5. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MAX. " Maximum - r_function_number = 4. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_AVERAGE. " Mean Value - r_function_number = 1. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_count. " Count - r_function_number = 2. - when others. - clear r_function_number. - endcase. - endmethod. - - - - method GET_OPTION. - - rs_option = ws_option. - - endmethod. - - - - - - - - method GET_STYLE. - DATA: ls_styles TYPE ts_styles, - lo_style TYPE REF TO zcl_excel_style. - - CLEAR r_style. - - READ TABLE wt_styles INTO ls_styles WITH TABLE KEY type = i_type - alignment = i_alignment - inttype = i_inttype - decimals = i_decimals. - IF sy-subrc = 0. - r_style = ls_styles-guid. - ELSE. - CASE i_type. - WHEN c_type_hdr. " Header - lo_style = create_style_hdr( i_alignment = i_alignment ). - WHEN c_type_str. "Stripped - lo_style = create_style_stripped( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_nor. "Normal - lo_style = create_style_normal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_sub. "Subtotals - lo_style = create_style_subtotal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_tot. "Totals - lo_style = create_style_total( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - ENDCASE. - IF lo_style IS NOT INITIAL. - r_style = lo_style->get_guid( ). - ls_styles-type = i_type. - ls_styles-alignment = i_alignment. - ls_styles-inttype = i_inttype. - ls_styles-decimals = i_decimals. - ls_styles-guid = r_style. - ls_styles-style = lo_style. - INSERT ls_styles INTO TABLE wt_styles. - ENDIF. - ENDIF. - endmethod. - - - method INIT_OPTION. - - ws_option-filter = abap_true. - ws_option-hidenc = abap_true. - ws_option-subtot = abap_true. - - endmethod. - - - - - - - method LOOP_NORMAL. - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - -* It is better to loop column by column - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - -* Only if the Header is required create it. - IF ws_option-hidehd IS INITIAL. - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - ENDIF. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true . - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. -* Now let's check for total versus subtotal. - IF <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_total( i_row_int = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_total ). - ENDIF. - ENDLOOP. - endmethod. - - - - - - - method LOOP_SUBTOTAL. - - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_subtotalled TYPE flag, - l_text TYPE string, - ls_sort_values TYPE ts_sort_values, - ls_subtotal_rows TYPE ts_subtotal_rows, - l_sort_level TYPE int4, - l_hidden TYPE int4, - l_line TYPE i, - l_guid TYPE guid_22, - l_tabix TYPE sy-tabix, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i, - lt_fcat TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_sortval> TYPE ANY, - <fs_sortv> TYPE ts_sort_values, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - REFRESH: wt_sort_values, - wt_subtotal_rows. - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - - READ TABLE <fs_tab> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc = 0. - l_row_int = i_row_int + 1. - lt_fcat = wt_fieldcatalog. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - ls_sort_values-fieldname = <fs_sfcat>-columnname. - ls_sort_values-row_int = l_row_int. - ls_sort_values-sort_level = <fs_sfcat>-sort_level. - ls_sort_values-is_collapsed = <fs_sfcat>-is_collapsed. - CREATE DATA ls_sort_values-value LIKE <fs_fldval>. - ASSIGN ls_sort_values-value->* TO <fs_sortval>. - <fs_sortval> = <fs_fldval>. - INSERT ls_sort_values INTO TABLE wt_sort_values. - ENDLOOP. - ENDIF. - l_row_int = i_row_int. -* Let's check if we need to hide a sort level. - DESCRIBE TABLE wt_sort_values LINES l_line. - IF l_line <= 1. - CLEAR l_hidden. - ELSE. - LOOP AT wt_sort_values INTO ls_sort_values WHERE is_collapsed = abap_false. - IF l_hidden < ls_sort_values-sort_level. - l_hidden = ls_sort_values-sort_level. - ENDIF. - ENDLOOP. - ENDIF. - ADD 1 TO l_hidden. " As this is the first level we show. -* First loop without formular only addtional rows with subtotal text. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - ADD 1 TO l_row_int. " 1 is for header row. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - IF sy-subrc = 0. - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - IF <fs_sortval> <> <fs_fldval> OR <fs_sortv>-new = abap_true. -* First let's remmember the subtotal values as it has to appear later. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* Now let's write the subtotal line - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = <fs_sfcat>-sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's change the key - ADD 1 TO l_row_int. - <fs_sortval> = <fs_fldval>. - <fs_sortv>-new = abap_false. - l_line = <fs_sortv>-sort_level. - LOOP AT wt_sort_values ASSIGNING <fs_sortv> WHERE sort_level >= l_line. - <fs_sortv>-row_int = l_row_int. - ENDLOOP. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - ENDLOOP. - ADD 1 TO l_row_int. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* First let's write the value as it has to appear. - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - - l_sort_level = <fs_sfcat>-sort_level. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. - ADD 1 TO l_row_int. - ENDIF. - ENDLOOP. -* Let's write the Grand total - l_sort_level = 0. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . -* lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . Not on grand total - - l_text = create_text_subtotal( i_value = 'Grand'(002) - i_totals_function = <fs_sfcat>-totals_function ). - - l_col_alpha_start = zcl_excel_common=>convert_column2alpha( i_col_int ). - wo_worksheet->set_cell( ip_column = l_col_alpha_start - ip_row = l_row_int - ip_value = l_text - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - -* It is better to loop column by column second time around -* Second loop with formular and data. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Let's set the row dimension values - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = ws_layout-max_subtotal_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim->set_visible( ip_visible = abap_false ) . - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Now let's check for Grand total - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_start = i_row_int + 1. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - ENDIF. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDLOOP. - - endmethod. - - - method OPEN_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string, - l_sep type c. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - - l_dir = create_path( ) . - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - cl_gui_frontend_services=>execute( - exporting - document = l_dir -* application = -* parameter = -* default_directory = -* maximized = -* minimized = -* synchronous = -* operation = 'OPEN' - exceptions - cntl_error = 1 - error_no_gui = 2 - bad_parameter = 3 - file_not_found = 4 - path_not_found = 5 - file_extension_unknown = 6 - error_execute_failed = 7 - synchronous_failed = 8 - not_supported_by_gui = 9 - ). - if sy-subrc <> 0. - message id sy-msgid type sy-msgty number sy-msgno - with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - endif. - - endif. - - - endmethod. - - - method SET_AUTOFILTER_AREA. - DATA: ls_area TYPE zexcel_s_autofilter_area, - l_lines TYPE i, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values. - -* Let's check for filter. - IF wo_autofilter IS BOUND. - ls_area-row_start = 1. - lt_values = wo_autofilter->get_values( ) . - SORT lt_values BY column ASCENDING. - DESCRIBE TABLE lt_values LINES l_lines. - READ TABLE lt_values INTO ls_values INDEX 1. - IF sy-subrc = 0. - ls_area-col_start = ls_values-column. - ENDIF. - READ TABLE lt_values INTO ls_values INDEX l_lines. - IF sy-subrc = 0. - ls_area-col_end = ls_values-column. - ENDIF. - wo_autofilter->set_filter_area( is_area = ls_area ) . - ENDIF. - - endmethod. - - - - - - method SET_CELL_FORMAT. - DATA: l_format TYPE zexcel_number_format. - - CLEAR r_format. - CASE i_inttype. - WHEN cl_abap_typedescr=>typekind_date. - r_format = wo_worksheet->get_default_excel_date_format( ). - WHEN cl_abap_typedescr=>typekind_time. - r_format = wo_worksheet->get_default_excel_time_format( ). - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - IF i_decimals > 0 . - l_format = '#,##0.'. - DO i_decimals TIMES. - CONCATENATE l_format '0' INTO l_format. - ENDDO. - r_format = l_format. - ENDIF. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - r_format = '#,##0'. - ENDCASE. - - endmethod. - - - method SET_FIELDCATALOG. - - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - ls_fieldcatalog TYPE zexcel_s_fieldcatalog. - DATA: ls_fcat TYPE zexcel_s_converter_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN wo_data->* TO <fs_tab> . - - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - LOOP AT lt_dfies INTO ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. - ls_fcat-columnname = ls_dfies-fieldname. - INSERT ls_fcat INTO TABLE wt_fieldcatalog. - ENDLOOP. - - clean_fieldcatalog( ). - - endmethod. - - - - method SET_OPTION. - - IF ws_indx-begdt IS INITIAL. - ws_indx-begdt = sy-datum. - ENDIF. - - ws_indx-aedat = sy-datum. - ws_indx-usera = sy-uname. - ws_indx-pgmid = sy-cprog. - - EXPORT p1 = is_option TO DATABASE indx(xl) FROM ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = is_option. - ENDIF. - - endmethod. - - - - method WRITE_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - if i_path is initial. - l_dir = create_path( ) . - else. - l_dir = i_path. - endif. - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - endif. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_col_converter, - col TYPE lvc_col, - int TYPE lvc_int, - inv TYPE lvc_inv, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - END OF ts_col_converter, - - tt_col_converter TYPE HASHED TABLE OF ts_col_converter WITH UNIQUE KEY col int inv. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - ABAP - KKBLO - - - - - - - - - - method APPLY_SORT. - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE, - <fs_sort> TYPE lvc_s_sort. - - CREATE DATA eo_table LIKE it_table. - ASSIGN eo_table->* TO <fs_table>. - - <fs_table> = it_table. - - SORT wt_sort BY spos. - LOOP AT wt_sort ASSIGNING <fs_sort>. - IF <fs_sort>-up = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_false. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - IF <fs_sort>-down = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_true. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - ENDLOOP. - IF lt_otab IS NOT INITIAL. - SORT <fs_table> BY (lt_otab). - ENDIF. - - endmethod. - - - method CLASS_CONSTRUCTOR. -* let's fill the color conversion routines. - DATA: ls_color TYPE ts_col_converter. -* 0 all combination the same - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Blue - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFB0E4FC'. " 176 228 252 blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFB0E4FC'. " 176 228 252 blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF5FCBFE'. " 095 203 254 Int blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF5FCBFE'. " 095 203 254 - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 - INSERT ls_color INTO TABLE wt_colors. - -* Gray - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. - ls_color-fillcolor = 'FFE5EAF0'. " 229 234 240 gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFE5EAF0'. " 229 234 240 gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFD8E8F4'. " 216 234 244 int gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFD8E8F4'. " 216 234 244 int gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -*Yellow - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFEFEB8'. " 254 254 184 yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFEFEB8'. " 254 254 184 yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFF9ED5D'. " 249 237 093 int yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFF9ED5D'. " 249 237 093 int yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* light blue - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEE7FB'. " 206 231 251 light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEE7FB'. " 206 231 251 light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF9ACCEF'. " 154 204 239 int light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF9ACCEF'. " 154 204 239 int light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Green - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEF8AE'. " 206 248 174 Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEF8AE'. " 206 248 174 Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF7AC769'. " 122 199 105 int Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF7AC769'. " 122 199 105 int Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Red - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFDBBBC'. " 253 187 188 Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFDBBBC'. " 253 187 188 Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFB6B6B'. " 251 107 107 int Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFB6B6B'. " 251 107 107 int Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - endmethod. - - - - - method GET_COLOR. - DATA: ls_con_col TYPE zexcel_s_converter_col, - ls_color TYPE ts_col_converter, - l_line TYPE i, - l_color(4) TYPE c. - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_stab> TYPE ANY, - <fs> TYPE ANY, - <fs_tcol> TYPE lvc_t_scol, - <fs_scol> TYPE lvc_s_scol. - -* Loop trough the table to set the color properties of each line. The color properties field is -* Char 4 and the characters is set as follows: -* Char 1 = C = This is a color property -* Char 2 = 6 = Color code (1 - 7) -* Char 3 = Intensified on/of = 1 = on -* Char 4 = Inverse display = 0 = of - - ASSIGN io_table->* TO <fs_tab>. - - IF ws_layo-info_fname IS NOT INITIAL OR - ws_layo-ctab_fname IS NOT INITIAL. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - IF ws_layo-info_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-info_fname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF <fs> IS NOT INITIAL. - l_color = <fs>. - IF l_color(1) = 'C'. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = l_color+1(1) - int = l_color+2(1) - inv = l_color+3(1). - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = space. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - IF ws_layo-ctab_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-ctab_fname OF STRUCTURE <fs_stab> TO <fs_tcol>. - IF sy-subrc = 0. - LOOP AT <fs_tcol> ASSIGNING <fs_scol>. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = <fs_scol>-color-col - int = <fs_scol>-color-int - inv = <fs_scol>-color-inv. - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = <fs_scol>-fname. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - ls_con_col-nokeycol = <fs_scol>-nokeycol. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDLOOP. - ENDIF. - ENDIF. - ENDLOOP. - ENDIF. - endmethod. - - - - - METHOD get_filter. - DATA: ls_filt TYPE lvc_s_filt, - l_line TYPE i, - ls_filter TYPE zexcel_s_converter_fil. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lo_trange TYPE REF TO data, - lo_srange TYPE REF TO data, - lo_ltabdata TYPE REF TO data. - - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_ltab> TYPE STANDARD TABLE, - <fs_stab> TYPE any, - <fs> TYPE any, - <fs1> TYPE any, - <fs_srange> TYPE any, - <fs_trange> TYPE STANDARD TABLE. - - IF ws_option-filter = abap_false. - REFRESH et_filter. - RETURN. - ENDIF. - - ASSIGN xo_table->* TO <fs_tab>. - - CREATE DATA lo_ltabdata LIKE <fs_tab>. - ASSIGN lo_ltabdata->* TO <fs_ltab>. - - LOOP AT wt_filt INTO ls_filt. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - ASSIGN COMPONENT ls_filt-fieldname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF l_line = 1. - REFRESH lt_components_tab. - ls_components-name = 'SIGN'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-sign ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'OPTION'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-option ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'LOW'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'HIGH'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( p_components = lt_components_tab - p_strict = abap_false ). - CATCH cx_sy_struct_creation. - CONTINUE. - ENDTRY. - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA lo_trange TYPE HANDLE lo_table. - CREATE DATA lo_srange TYPE HANDLE lo_struc. - - ASSIGN lo_trange->* TO <fs_trange>. - ASSIGN lo_srange->* TO <fs_srange>. - ENDIF. - REFRESH <fs_trange>. - ASSIGN COMPONENT 'SIGN' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-sign. - ASSIGN COMPONENT 'OPTION' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-option. - ASSIGN COMPONENT 'LOW' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-low. - ASSIGN COMPONENT 'HIGH' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-high. - INSERT <fs_srange> INTO TABLE <fs_trange>. - IF <fs> IN <fs_trange>. - IF ws_option-filter = abap_true. - ls_filter-rownumber = l_line. - ls_filter-columnname = ls_filt-fieldname. - INSERT ls_filter INTO TABLE et_filter. - ELSE. - INSERT <fs_stab> INTO TABLE <fs_ltab>. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - IF ws_option-filter = abap_undefined. - <fs_tab> = <fs_ltab>. - REFRESH <fs_ltab>. - ENDIF. - ENDLOOP. - -ENDMETHOD. - - - - - method UPDATE_CATALOG. - DATA: ls_fieldcatalog TYPE zexcel_s_converter_fcat, - ls_ref TYPE salv_s_ddic_reference, - ls_fcat TYPE lvc_s_fcat, - ls_sort TYPE lvc_s_sort, - l_decimals TYPE lvc_decmls. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat. - - IF ws_layo-zebra IS NOT INITIAL. - cs_layout-is_stripped = abap_true. - ENDIF. - IF ws_layo-no_keyfix IS INITIAL OR - ws_layo-no_keyfix = '0'. - cs_layout-is_fixed = abap_true. - ENDIF. - - LOOP AT wt_fcat INTO ls_fcat. - CLEAR: ls_fieldcatalog, - l_decimals. - CASE ws_option-hidenc. - WHEN abap_false. " We make hiden columns visible - CLEAR ls_fcat-no_out. - WHEN abap_true. -* We convert column and hide it. - WHEN abap_undefined. "We don't convert hiden columns - IF ls_fcat-no_out = abap_true. - ls_fcat-tech = abap_true. - ENDIF. - ENDCASE. - IF ls_fcat-tech = abap_false. - ls_fieldcatalog-tabname = ls_fcat-tabname. - ls_fieldcatalog-fieldname = ls_fcat-fieldname . - ls_fieldcatalog-columnname = ls_fcat-fieldname . - ls_fieldcatalog-position = ls_fcat-col_pos. - ls_fieldcatalog-col_id = ls_fcat-col_id. - ls_fieldcatalog-convexit = ls_fcat-convexit. - ls_fieldcatalog-inttype = ls_fcat-inttype. - ls_fieldcatalog-scrtext_s = ls_fcat-scrtext_s . - ls_fieldcatalog-scrtext_m = ls_fcat-scrtext_m . - ls_fieldcatalog-scrtext_l = ls_fcat-scrtext_l. - l_decimals = ls_fcat-decimals_o. - IF l_decimals IS NOT INITIAL. - ls_fieldcatalog-decimals = l_decimals. - ELSE. - ls_fieldcatalog-decimals = ls_fcat-decimals . - ENDIF. - CASE ws_option-subtot. - WHEN abap_false. " We ignore subtotals - CLEAR ls_fcat-do_sum. - WHEN abap_true. " We convert subtotals and detail - - WHEN abap_undefined. " We should only take subtotals and displayed detail -* for now abap_true - ENDCASE. - CASE ls_fcat-do_sum. - WHEN abap_true. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. - WHEN 'A'. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_min. - WHEN 'B' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_max. - WHEN 'C' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_average. - WHEN OTHERS. - CLEAR ls_fieldcatalog-totals_function . - ENDCASE. - ls_fieldcatalog-fix_column = ls_fcat-fix_column. - IF ws_layo-cwidth_opt IS INITIAL. - IF ls_fcat-col_opt IS NOT INITIAL. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - ELSE. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - IF ls_fcat-no_out IS NOT INITIAL. - ls_fieldcatalog-is_hidden = abap_true. - ls_fieldcatalog-position = ls_fieldcatalog-col_id. " We hide based on orginal data structure - ENDIF. -* Alignment in each cell - CASE ls_fcat-just. - WHEN 'R'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_right. - WHEN 'L'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_left. - WHEN 'C'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_center. - WHEN OTHERS. - CLEAR ls_fieldcatalog-alignment. - ENDCASE. -* Check for subtotals. - READ TABLE wt_sort INTO ls_sort WITH KEY fieldname = ls_fcat-fieldname. - IF sy-subrc = 0 AND ws_option-subtot <> abap_false. - ls_fieldcatalog-sort_level = 0 . -* IF ls_fieldcatalog-totals_function IS INITIAL. " Not clear why not -* CLEAR ls_fieldcatalog-is_subtotalled. -* ELSE. - ls_fieldcatalog-is_subtotalled = ls_sort-subtot. -* ENDIF. - ls_fieldcatalog-is_collapsed = ls_sort-expa. - IF ls_fieldcatalog-is_subtotalled = abap_true. - ls_fieldcatalog-sort_level = ls_sort-spos. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. " we need function for text - ENDIF. - ENDIF. - APPEND ls_fieldcatalog TO ct_fieldcatalog. - ENDIF. - ENDLOOP. - - SORT ct_fieldcatalog BY sort_level ASCENDING. - cs_layout-max_subtotal_level = 0. - LOOP AT ct_fieldcatalog ASSIGNING <fs_scat> WHERE sort_level > 0. - cs_layout-max_subtotal_level = cs_layout-max_subtotal_level + 1. - <fs_scat>-sort_level = cs_layout-max_subtotal_level. - ENDLOOP. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - data: lo_alv type REF TO cl_gui_alv_grid. - - try. - lo_alv ?= io_object. - catch cx_sy_move_cast_error . - raise exception type zcx_excel. - endtry. - -endmethod. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_alv TYPE REF TO cl_gui_alv_grid. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_alv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_alv IS BOUND. - lo_alv->get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ). - lo_alv->get_frontend_layout( IMPORTING es_layout = ws_layo ). - lo_alv->get_sort_criteria( IMPORTING et_sort = wt_sort ) . - lo_alv->get_filter_criteria( IMPORTING et_filter = wt_filt ) . - - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method GET_TABLE. - DATA: lo_object TYPE REF TO object, - ls_seoclass TYPE seoclass, - l_method TYPE string. - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'IF_SALV_BS_DATA_SOURCE'. - - IF sy-subrc = 0. - l_method = 'GET_TABLE_REF'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ELSE. - l_method = 'GET_REF_TO_TABLE'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table, - lo_ex_cm TYPE REF TO cl_salv_ex_cm, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - lo_ex_cm ?= lo_result->r_model->r_model. - ws_layo = lo_ex_cm->s_layo. -* T_DRDN Instance Attribute Public Type LVC_T_DROP - wt_fcat = lo_ex_cm->t_fcat. - wt_filt = lo_ex_cm->t_filt. -* T_HYPE Instance Attribute Public Type LVC_T_HYPE -* T_SELECTED_CELLS Instance Attribute Public Type LVC_T_CELL -* T_SELECTED_COLUMNS Instance Attribute Public Type LVC_T_COL - wt_sort = lo_ex_cm->t_sort. - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - else. -* We have a problem and should stop here. - ENDIF. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - wo_config ?= lo_result->r_model->r_model. - - IF wo_config IS BOUND. - wt_fields = wo_config->if_salv_wd_field_settings~get_fields( ) . - wt_columns = wo_config->if_salv_wd_column_settings~get_columns( ) . - ENDIF. - - create_wt_fcat( io_table = lo_data ). - create_wt_sort( ). - create_wt_filt( ). - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - -* get_color( EXPORTING io_table = eo_table -* IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ELSE. -* We have a problem and should stop here - ENDIF. - ENDIF. -ENDMETHOD. - - - - method CREATE_WT_FCAT. - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - lv_sytabix TYPE sytabix. - - DATA: ls_fcat TYPE lvc_s_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN io_table->* TO <fs_tab> . - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - loop at lt_dfies into ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. -* ls_fcat-columnname = ls_dfies-fieldname. - ls_fcat-col_pos = ls_dfies-position. - ls_fcat-key = ls_dfies-keyflag. - get_fields_info( CHANGING xs_fcat = ls_fcat ) . - - ls_fcat-col_opt = abap_true. - - get_columns_info( CHANGING xs_fcat = ls_fcat ) . - - INSERT ls_fcat INTO TABLE wt_fcat. - endloop. - - endmethod. - - - method CREATE_WT_FILT. -* No neeed for superclass. -* Only for WD - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - DATA: lt_filters TYPE salv_wd_t_filter_rule_ref, - ls_filt TYPE lvc_s_filt. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref, - <fs_filter> TYPE salv_wd_s_filter_rule_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - REFRESH lt_filters. - lt_filters = <fs_fields>-r_field->if_salv_wd_filter~get_filter_rules( ) . - LOOP AT lt_filters ASSIGNING <fs_filter>. - ls_filt-fieldname = <fs_fields>-fieldname. - IF <fs_filter>-r_filter_rule->get_included( ) = abap_true. - ls_filt-sign = 'I'. - ELSE. - ls_filt-sign = 'E'. - ENDIF. - ls_filt-option = <fs_filter>-r_filter_rule->get_operator( ). - ls_filt-high = <fs_filter>-r_filter_rule->get_high_value( ) . - ls_filt-low = <fs_filter>-r_filter_rule->get_low_value( ) . - INSERT ls_filt INTO TABLE wt_filt. - ENDLOOP. - ENDLOOP. - - endmethod. - - - method CREATE_WT_SORT. - DATA: lo_sort TYPE REF TO cl_salv_wd_sort_rule, - l_sort_order TYPE salv_wd_constant, - ls_sort TYPE lvc_s_sort. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - lo_sort = <fs_fields>-r_field->if_salv_wd_sort~get_sort_rule( ) . - IF lo_sort IS BOUND. - l_sort_order = lo_sort->get_sort_order( ). - IF l_sort_order <> if_salv_wd_c_sort=>sort_order. - CLEAR ls_sort. - ls_sort-spos = lo_sort->get_sort_position( ). - ls_sort-fieldname = <fs_fields>-fieldname. -* ls_sort-GROUP - ls_sort-subtot = lo_sort->get_group_aggregation( ). -* ls_sort-COMP -* ls_sort-EXPA -* ls_sort-SELTEXT -* ls_sort-OBLIGATORY -* ls_sort-LEVEL -* ls_sort-NO_OUT - IF l_sort_order = if_salv_wd_c_sort=>sort_order_ascending. - ls_sort-up = abap_true. - ELSE. - ls_sort-down = abap_true. - ENDIF. - INSERT ls_sort INTO TABLE wt_sort. - ENDIF. - ENDIF. - ENDLOOP. - - endmethod. - - - - method GET_COLUMNS_INFO. - DATA: l_numc2 TYPE salv_wd_constant. - - - FIELD-SYMBOLS: <fs_column> TYPE salv_wd_s_column_ref. - - READ TABLE wt_columns ASSIGNING <fs_column> WITH KEY id = xs_fcat-fieldname . - IF sy-subrc = 0. - xs_fcat-col_pos = <fs_column>-r_column->get_position( ) . - l_numc2 = <fs_column>-r_column->get_fixed_position( ). - IF l_numc2 = '02'. - xs_fcat-fix_column = abap_true . - ENDIF. - l_numc2 = <fs_column>-r_column->get_visible( ). - IF l_numc2 = '01'. - xs_fcat-no_out = abap_true . - ENDIF. - ENDIF. - - endmethod. - - - - method GET_FIELDS_INFO. - DATA: lo_aggr TYPE REF TO cl_salv_wd_aggr_rule, - l_aggrtype TYPE salv_wd_constant. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - READ TABLE wt_fields ASSIGNING <fs_fields> WITH KEY fieldname = xs_fcat-fieldname. - IF sy-subrc = 0. - lo_aggr = <fs_fields>-r_field->if_salv_wd_aggr~get_aggr_rule( ) . - IF lo_aggr IS BOUND. - l_aggrtype = lo_aggr->get_aggregation_type( ) . - CASE l_aggrtype. - WHEN if_salv_wd_c_aggregation=>aggrtype_total. - xs_fcat-do_sum = abap_true. - WHEN if_salv_wd_c_aggregation=>aggrtype_minimum. - xs_fcat-do_sum = 'A'. - WHEN if_salv_wd_c_aggregation=>aggrtype_maximum . - xs_fcat-do_sum = 'B'. - WHEN if_salv_wd_c_aggregation=>aggrtype_average . - xs_fcat-do_sum = 'C'. - WHEN OTHERS. - CLEAR xs_fcat-do_sum . - ENDCASE. - ENDIF. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD zif_excel_converter~can_convert_object. - - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - lo_salv ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_salv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog, - et_colors . - - IF lo_salv IS BOUND. - load_data( EXPORTING io_salv = lo_salv - it_table = it_table ). - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - - method LOAD_DATA. - DATA: lo_columns TYPE REF TO cl_salv_columns_table, - lo_aggregations TYPE REF TO cl_salv_aggregations, - lo_sorts TYPE REF TO cl_salv_sorts, - lo_filters TYPE REF TO cl_salv_filters, - lo_functional TYPE REF TO cl_salv_functional_settings, - lo_display TYPE REF TO cl_salv_display_settings, - lo_selections TYPE REF TO cl_salv_selections. - - DATA: ls_vari TYPE disvariant, - lo_layout TYPE REF TO cl_salv_layout. - - DATA: lr_form_tol TYPE REF TO cl_salv_form, - lr_form_eol TYPE REF TO cl_salv_form. - - DATA lt_kkblo_fieldcat TYPE kkblo_t_fieldcat. - DATA ls_kkblo_layout TYPE kkblo_layout. - DATA lt_kkblo_filter TYPE kkblo_t_filter. - DATA lt_kkblo_sort TYPE kkblo_t_sortinfo. - - lo_layout = io_salv->get_layout( ) . - lo_columns = io_salv->get_columns( ). - lo_aggregations = io_salv->get_aggregations( ) . - lo_sorts = io_salv->get_sorts( ) . - lo_filters = io_salv->get_filters( ) . - lo_display = io_salv->get_display_settings( ) . - lo_functional = io_salv->get_functional_settings( ) . - - REFRESH: wt_fcat, - wt_sort, - wt_filt. - -* First update metadata if we can. - IF io_salv->is_offline( ) = abap_false. - io_salv->get_metadata( ) . - ELSE. -* If we are offline we need to build this. - cl_salv_controller_metadata=>get_variant( - EXPORTING - r_layout = lo_layout - CHANGING - s_variant = ls_vari ). - ENDIF. - -*... get the column information - wt_fcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog( - r_columns = lo_columns - r_aggregations = lo_aggregations ). - -*... get the layout information - cl_salv_controller_metadata=>get_lvc_layout( - EXPORTING - r_functional_settings = lo_functional - r_display_settings = lo_display - r_columns = lo_columns - r_aggregations = lo_aggregations - CHANGING - s_layout = ws_layo ). - -* the fieldcatalog is not complete yet! - CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' - EXPORTING - i_complete = 'X' - i_refresh_buffer = space - i_buffer_active = space - is_layout = ws_layo - i_test = '1' - i_fcat_complete = 'X' - IMPORTING -* E_EDIT = - es_layout = ws_layo - CHANGING - ct_fieldcat = wt_fcat. - - IF ls_vari IS NOT INITIAL AND io_salv->is_offline( ) = abap_true. - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - EXPORTING - it_fieldcat_lvc = wt_fcat - is_layout_lvc = ws_layo - IMPORTING - et_fieldcat_kkblo = lt_kkblo_fieldcat - es_layout_kkblo = ls_kkblo_layout - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - it_fieldcat_lvc_missing = 2 - OTHERS = 3. - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LT_VARIANT_LOAD' - EXPORTING -* I_TOOL = 'LT' - i_tabname = '1' -* I_TABNAME_SLAVE = - i_dialog = ' ' -* I_USER_SPECIFIC = ' ' -* I_DEFAULT = 'X' -* I_NO_REPTEXT_OPTIMIZE = -* I_VIA_GRID = - i_fcat_complete = 'X' - IMPORTING -* E_EXIT = - et_fieldcat = lt_kkblo_fieldcat - et_sort = lt_kkblo_sort - et_filter = lt_kkblo_filter - CHANGING - cs_layout = ls_kkblo_layout - ct_default_fieldcat = lt_kkblo_fieldcat - cs_variant = ls_vari - EXCEPTIONS - wrong_input = 1 - fc_not_complete = 2 - not_found = 3 - OTHERS = 4 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO' - EXPORTING -* I_TECH_COMPLETE = -* I_STRUCTURE_NAME = - it_fieldcat_kkblo = lt_kkblo_fieldcat - it_sort_kkblo = lt_kkblo_sort - it_filter_kkblo = lt_kkblo_filter -* IT_SPECIAL_GROUPS_KKBLO = -* IT_FILTERED_ENTRIES_KKBLO = -* IT_GROUPLEVELS_KKBLO = -* IS_SUBTOT_OPTIONS_KKBLO = - is_layout_kkblo = ls_kkblo_layout -* IS_REPREP_ID_KKBLO = -* I_CALLBACK_PROGRAM_KKBLO = -* IT_ADD_FIELDCAT = -* IT_EXCLUDING_KKBLO = -* IT_EXCEPT_QINFO_KKBLO = - IMPORTING - et_fieldcat_lvc = wt_fcat - et_sort_lvc = wt_sort - et_filter_lvc = wt_filt -* ET_SPECIAL_GROUPS_LVC = -* ET_FILTER_INDEX_LVC = -* ET_GROUPLEVELS_LVC = -* ES_TOTAL_OPTIONS_LVC = - es_layout_lvc = ws_layo -* ES_VARIANT_LVC = -* E_VARIANT_SAVE_LVC = -* ES_PRINT_INFO_LVC = -* ES_REPREP_LVC = -* E_REPREP_ACTIVE_LVC = -* ET_EXCLUDING_LVC = -* ET_EXCEPT_QINFO_LVC = - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - ELSE. -* ... get the sort information - wt_sort = cl_salv_controller_metadata=>get_lvc_sort( lo_sorts ). - -* ... get the filter information - wt_filt = cl_salv_controller_metadata=>get_lvc_filter( lo_filters ). - ENDIF. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - " Initialise instance variables - formula1 = ''. - formula2 = ''. - type = me->c_type_none. - errorstyle = me->c_style_stop. - operator = ''. - allowblank = abap_false. - showdropdown = abap_false. - showinputmessage = abap_true. - showerrormessage = abap_true. - errortitle = ''. - error = ''. - prompttitle = ''. - prompt = ''. -* inizialize dimension range - cell_row = 1. - cell_column = 'A'. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method ADD. - data_validations->add( ip_data_validation ). - endmethod. - - - method CLEAR. - data_validations->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT data_validations. - - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= data_validations->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = data_validations->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - data_validations->remove( ip_data_validation ). - endmethod. - - - - method SIZE. - ep_size = data_validations->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = me->guid. - me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - - me->type = ip_type. - -* inizialize dimension range - anchor = anchor_one_cell. - from_loc-col = 1. - from_loc-row = 1. -ENDMETHOD. - - - - method CREATE_MEDIA_NAME. - -* if media name is initial, create unique name - CHECK media_name IS INITIAL. - - index = ip_index. - CONCATENATE me->type index INTO media_name. - CONDENSE media_name NO-GAPS. - endmethod. - - - - - - METHOD emu2pixel. -* suppose 96 DPI - IF ip_dpi IS SUPPLIED. -* r_emu = ip_pixel * 914400 / ip_dpi. - r_pixel = ip_emu * ip_dpi / 914400. - ELSE. -* suppose 96 DPI -* r_emu = ip_pixel * 914400 / 96. - r_pixel = ip_emu * 96 / 914400. - ENDIF. -ENDMETHOD. - - - - method GET_FROM_COL. - r_from_col = me->from_loc-col. - endmethod. - - - - method GET_FROM_ROW. - r_from_row = me->from_loc-row. - endmethod. - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_HEIGHT_EMU_STR. - r_height = pixel2emu( size-height ). - CONDENSE r_height NO-GAPS. - endmethod. - - - - method GET_INDEX. - rp_index = me->index. - endmethod. - - - - METHOD get_media. - - DATA: lv_language TYPE sylangu. - DATA: lt_bin_mime TYPE sdokcntbins. - DATA: lt_mime TYPE tsfmime, - lv_filesize TYPE i, - lv_filesizec(10). - - CASE media_source. - WHEN c_media_source_xstring. - r_media = media. - WHEN c_media_source_www. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = media_key_www - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. - - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - WHEN c_media_source_mime. - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = me->io - IMPORTING - filesize = lv_filesize - bin_data = lt_bin_mime - CHANGING - language = lv_language ). - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_bin_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - ENDCASE. -ENDMETHOD. - - - - method GET_MEDIA_NAME. - CONCATENATE media_name `.` media_type INTO r_name. - endmethod. - - - - method GET_MEDIA_TYPE. - r_type = media_type. - endmethod. - - - - method GET_NAME. - r_name = title. - endmethod. - - - - method GET_POSITION. - rp_position-anchor = anchor. - rp_position-from = from_loc. - rp_position-to = to_loc. - rp_position-size = size. - endmethod. - - - - method GET_TO_COL. - r_to_col = me->to_loc-col. - endmethod. - - - - method GET_TO_ROW. - r_to_row = me->to_loc-row. - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method GET_WIDTH_EMU_STR. - r_width = pixel2emu( size-width ). - CONDENSE r_width NO-GAPS. - endmethod. - - - - method LOAD_CHART_ATTRIBUTES. - DATA: node TYPE REF TO if_ixml_element. - DATA: node2 TYPE REF TO if_ixml_element. - DATA: node3 TYPE REF TO if_ixml_element. - DATA: node4 TYPE REF TO if_ixml_element. - DATA: iterator TYPE REF TO if_ixml_node_iterator. - - DATA: chartspace TYPE REF TO if_ixml_node_collection. - DATA: coll_length TYPE i. - DATA: chartelem TYPE REF TO if_ixml_element. - - DATA lo_barchart TYPE REF TO zcl_excel_graph_bars. - DATA lo_piechart TYPE REF TO zcl_excel_graph_pie. - DATA lo_linechart TYPE REF TO zcl_excel_graph_line. - - TYPES: BEGIN OF t_prop, - val TYPE string, - rtl TYPE string, - lang TYPE string, - formatcode TYPE string, - sourcelinked TYPE string, - END OF t_prop. - - TYPES: BEGIN OF t_pagemargins, - b TYPE string, - l TYPE string, - r TYPE string, - t TYPE string, - header TYPE string, - footer TYPE string, - END OF t_pagemargins. - - DATA ls_prop TYPE t_prop. - DATA ls_pagemargins TYPE t_pagemargins. - - DATA lo_collection TYPE REF TO if_ixml_node_collection. - DATA lo_node TYPE REF TO if_ixml_node. - DATA lo_iterator TYPE REF TO if_ixml_node_iterator. - DATA lv_idx TYPE i. - DATA lv_order TYPE i. - DATA lv_invertifnegative TYPE string. - DATA lv_symbol TYPE string. - DATA lv_smooth TYPE c. - DATA lv_sername TYPE string. - DATA lv_label TYPE string. - DATA lv_value TYPE string. - DATA lv_axid TYPE string. - DATA lv_orientation TYPE string. - DATA lv_delete TYPE string. - DATA lv_axpos TYPE string. - DATA lv_formatcode TYPE string. - DATA lv_sourcelinked TYPE string. - DATA lv_majortickmark TYPE string. - DATA lv_minortickmark TYPE string. - DATA lv_ticklblpos TYPE string. - DATA lv_crossax TYPE string. - DATA lv_crosses TYPE string. - DATA lv_auto TYPE string. - DATA lv_lblalgn TYPE string. - DATA lv_lbloffset TYPE string. - DATA lv_nomultilvllbl TYPE string. - DATA lv_crossbetween TYPE string. - - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - CASE me->graph_type. - WHEN c_graph_bars. - CREATE OBJECT lo_barchart. - me->graph = lo_barchart. - WHEN c_graph_pie. - CREATE OBJECT lo_piechart. - me->graph = lo_piechart. - WHEN c_graph_line. - CREATE OBJECT lo_linechart. - me->graph = lo_linechart. - WHEN OTHERS. - ENDCASE. - - "Fill properties - node2 ?= node->find_from_name( name = 'date1904' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_1904val = ls_prop-val. - node2 ?= node->find_from_name( name = 'lang' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_langval = ls_prop-val. - node2 ?= node->find_from_name( name = 'roundedCorners' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_roundedcornersval = ls_prop-val. - - "style - node2 ?= node->find_from_name( name = 'style' namespace = 'c14' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_c14styleval = ls_prop-val. - node2 ?= node->find_from_name( name = 'style' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_styleval = ls_prop-val. - "---------------------------Read graph properties - node2 ?= node->find_from_name( name = 'autoTitleDeleted' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_autotitledeletedval = ls_prop-val. - - "plotArea - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'barDir' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_bardirval = ls_prop-val. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'invertIfNegative' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_invertifnegative = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_barchart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_invertifnegative = lv_invertifnegative - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'gapWidth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_gapwidthval = ls_prop-val. - - "Load axes - node2 ?= node->find_from_name( name = 'barChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_piechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showLeaderLines' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showleaderlinesval = ls_prop-val. - node2 ?= node->find_from_name( name = 'firstSliceAng' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_firstsliceangval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'symbol' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_symbol = ls_prop-val. - node3 ?= node2->find_from_name( name = 'smooth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_smooth = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_linechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_symbol = lv_symbol - ip_smooth = lv_smooth - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showbubblesizeval = ls_prop-val. - - node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - node2 ?= node->find_from_name( name = 'marker' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_MARKERVAL = ls_prop-val. - node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_SMOOTHVAL = ls_prop-val. - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - "Load axes - node2 ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. -* node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). -* zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). -* lv_formatcode = ls_prop-formatcode. -* lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - WHEN OTHERS. - ENDCASE. - - "legend - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_overlayval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_overlayval = ls_prop-val. - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_overlayval = ls_prop-val. - node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_pprrtl = ls_prop-rtl. - node2 ?= node->find_from_name( name = 'endParaRPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_endpararprlang = ls_prop-lang. - - WHEN OTHERS. - ENDCASE. - - node2 ?= node->find_from_name( name = 'plotVisOnly' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_plotvisonlyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'dispBlanksAs' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_dispblanksasval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showDLblsOverMax' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_showdlblsovermaxval = ls_prop-val. - "--------------------- - - node2 ?= node->find_from_name( name = 'pageMargins' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_pagemargins ). - me->graph->pagemargins = ls_pagemargins. - - - endmethod. - - - - - - method PIXEL2EMU. -* suppose 96 DPI - IF ip_dpi IS SUPPLIED. - r_emu = ip_pixel * 914400 / ip_dpi. - ELSE. -* suppose 96 DPI - r_emu = ip_pixel * 914400 / 96. - ENDIF. - endmethod. - - - - - - - method SET_MEDIA. - IF ip_media IS SUPPLIED. - media = ip_media. - ENDIF. - media_type = ip_media_type. - media_source = c_media_source_xstring. - IF ip_width IS SUPPLIED. - size-width = ip_width. - ENDIF. - IF ip_height IS SUPPLIED. - size-height = ip_height. - ENDIF. - endmethod. - - - - - - METHOD set_media_mime. - - DATA: lv_language TYPE sylangu. - - io = ip_io. - media_source = c_media_source_mime. - size-width = ip_width. - size-height = ip_height. - - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = ip_io - IMPORTING - filename = media_name - "mimetype = media_type - CHANGING - language = lv_language ). - - SPLIT media_name AT '.' INTO media_name media_type. - -ENDMETHOD. - - - - - - method SET_MEDIA_WWW. - DATA: lv_value(20). - - media_key_www = ip_key. - media_source = c_media_source_www. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'fileextension' - IMPORTING - value = lv_value. - media_type = lv_value. - SHIFT media_type LEFT DELETING LEADING '.'. - - size-width = ip_width. - size-height = ip_height. - endmethod. - - - - - - - method SET_POSITION. - from_loc-col = zcl_excel_common=>convert_column2int( ip_from_col ) - 1. - IF ip_coloff IS SUPPLIED. - from_loc-col_offset = ip_coloff. - ENDIF. - from_loc-row = ip_from_row - 1. - IF ip_rowoff IS SUPPLIED. - from_loc-row_offset = ip_rowoff. - ENDIF. - anchor = anchor_one_cell. - endmethod. - - - - - - method SET_POSITION2. - - data: lv_anchor type zexcel_drawing_anchor. - lv_anchor = ip_anchor. - - IF lv_anchor IS INITIAL. - IF ip_to IS NOT INITIAL. - lv_anchor = anchor_two_cell. - ELSE. - lv_anchor = anchor_one_cell. - ENDIF. - ENDIF. - - CASE lv_anchor. - WHEN anchor_absolute OR anchor_one_cell. - CLEAR: me->to_loc. - WHEN anchor_two_cell. - CLEAR: me->size. - ENDCASE. - - me->from_loc = ip_from. - me->to_loc = ip_to. - me->anchor = lv_anchor. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method ADD. - DATA: lv_index TYPE i. - - drawings->add( ip_drawing ). - lv_index = drawings->if_object_collection~size( ). - ip_drawing->create_media_name( - ip_index = lv_index ). - endmethod. - - - method CLEAR. - - drawings->clear( ). - endmethod. - - - - method CONSTRUCTOR. - - CREATE OBJECT drawings. - type = ip_type. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_drawing ?= drawings->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= drawings->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method INCLUDE. - drawings->add( ip_drawing ). - endmethod. - - - - method IS_EMPTY. - - is_empty = drawings->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - - drawings->remove( ip_drawing ). - endmethod. - - - - method SIZE. - - ep_size = drawings->if_object_collection~size( ). - endmethod. - - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - "Load default values - me->pagemargins-b = '0.75'. - me->pagemargins-l = '0.7'. - me->pagemargins-r = '0.7'. - me->pagemargins-t = '0.75'. - me->pagemargins-header = '0.3'. - me->pagemargins-footer = '0.3'. - endmethod. - - - - - - - - - - - - - - - - - - - - method CREATE_SERIE. - DATA ls_serie TYPE s_series. - - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7. - - - IF ip_lbl IS NOT SUPPLIED. - lv_stop_row_c = ip_lbl_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_lbl_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-lbl = ip_sheet. - ls_serie-lbl = zcl_excel_common=>escape_string( ip_value = ls_serie-lbl ). - CONCATENATE ls_serie-lbl '!$' ip_lbl_from_col '$' lv_start_row_c ':$' ip_lbl_to_col '$' lv_stop_row_c INTO ls_serie-lbl. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-lbl = ip_lbl. - ENDIF. - IF ip_ref IS NOT SUPPLIED. - lv_stop_row_c = ip_ref_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_ref_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-ref = ip_sheet. - ls_serie-ref = zcl_excel_common=>escape_string( ip_value = ls_serie-ref ). - CONCATENATE ls_serie-ref '!$' ip_ref_from_col '$' lv_start_row_c ':$' ip_ref_to_col '$' lv_stop_row_c INTO ls_serie-ref. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-ref = ip_ref. - ENDIF. - ls_serie-idx = ip_idx. - ls_serie-order = ip_order. - ls_serie-invertifnegative = ip_invertifnegative. - ls_serie-symbol = ip_symbol. - ls_serie-smooth = ip_smooth. - ls_serie-sername = ip_sername. - APPEND ls_serie TO me->series. - SORT me->series BY order ASCENDING. - endmethod. - - - - method SET_PRINT_LBL. - me->print_label = ip_value. - endmethod. - - - - method SET_STYLE. - me->ns_c14styleval = ip_style-c14style. - CONDENSE me->ns_c14styleval NO-GAPS. - me->ns_styleval = ip_style-cstyle. - CONDENSE me->ns_styleval NO-GAPS. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - if ip_type = c_catax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '1'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'b'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '2'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_auto is SUPPLIED. - ls_ax-auto = ip_auto. - else. - ls_ax-auto = '1'. - endif. - if ip_lblAlgn is SUPPLIED. - ls_ax-lblAlgn = ip_lblAlgn. - else. - ls_ax-lblAlgn = 'ctr'. - endif. - if ip_lblOffset is SUPPLIED. - ls_ax-lblOffset = ip_lblOffset. - else. - ls_ax-lblOffset = '100'. - endif. - if ip_noMultiLvlLbl is SUPPLIED. - ls_ax-noMultiLvlLbl = ip_noMultiLvlLbl. - else. - ls_ax-noMultiLvlLbl = '0'. - endif. - elseif ip_type = c_valax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '2'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'l'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '1'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_crossBetween is SUPPLIED. - ls_ax-crossBetween = ip_crossBetween. - else. - ls_ax-crossBetween = 'between'. - endif. - endif. - - APPEND ls_ax TO me->axes. - sort me->axes by axid ascending. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - IF ip_type = c_catax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '1'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'b'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '2'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_auto IS SUPPLIED. - ls_ax-auto = ip_auto. - ELSE. - ls_ax-auto = '1'. - ENDIF. - IF ip_lblalgn IS SUPPLIED. - ls_ax-lblalgn = ip_lblalgn. - ELSE. - ls_ax-lblalgn = 'ctr'. - ENDIF. - IF ip_lbloffset IS SUPPLIED. - ls_ax-lbloffset = ip_lbloffset. - ELSE. - ls_ax-lbloffset = '100'. - ENDIF. - IF ip_nomultilvllbl IS SUPPLIED. - ls_ax-nomultilvllbl = ip_nomultilvllbl. - ELSE. - ls_ax-nomultilvllbl = '0'. - ENDIF. - ELSEIF ip_type = c_valax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '2'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'l'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '1'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_crossbetween IS SUPPLIED. - ls_ax-crossbetween = ip_crossbetween. - ELSE. - ls_ax-crossbetween = 'between'. - ENDIF. - ENDIF. - - APPEND ls_ax TO me->axes. - SORT me->axes BY axid ASCENDING. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEADER_LINES. - ns_showleaderlinesval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - method CREATE. - data: lo_hyperlink type REF TO zcl_excel_hyperlink. - - create OBJECT lo_hyperlink. - - lo_hyperlink->location = iv_url. - lo_hyperlink->internal = iv_internal. - - ov_link = lo_hyperlink. - endmethod. - - - - - method CREATE_EXTERNAL_LINK. - - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_url - iv_internal = abap_false ). - endmethod. - - - - - method CREATE_INTERNAL_LINK. - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_location - iv_internal = abap_true ). - endmethod. - - - - method GET_REF. - ev_ref = row. - CONDENSE ev_ref. - CONCATENATE column ev_ref INTO ev_ref. - endmethod. - - - - method GET_URL. - ev_url = me->location. - endmethod. - - - - method IS_INTERNAL. - ev_ret = me->internal. - endmethod. - - - - - - method SET_CELL_REFERENCE. - me->column = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - me->row = ip_row. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method CONSTRUCTOR. - " default Excel palette based on - " http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.indexedcolors.aspx - - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800000' TO colors. - APPEND '00008000' TO colors. - APPEND '00000080' TO colors. - APPEND '00808000' TO colors. - - APPEND '00800080' TO colors. - APPEND '00008080' TO colors. - APPEND '00C0C0C0' TO colors. - APPEND '00808080' TO colors. - APPEND '009999FF' TO colors. - APPEND '00993366' TO colors. - APPEND '00FFFFCC' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00660066' TO colors. - APPEND '00FF8080' TO colors. - - APPEND '000066CC' TO colors. - APPEND '00CCCCFF' TO colors. - APPEND '00000080' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800080' TO colors. - APPEND '00800000' TO colors. - APPEND '00008080' TO colors. - APPEND '000000FF' TO colors. - - APPEND '0000CCFF' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00CCFFCC' TO colors. - APPEND '00FFFF99' TO colors. - APPEND '0099CCFF' TO colors. - APPEND '00FF99CC' TO colors. - APPEND '00CC99FF' TO colors. - APPEND '00FFCC99' TO colors. - APPEND '003366FF' TO colors. - APPEND '0033CCCC' TO colors. - - APPEND '0099CC00' TO colors. - APPEND '00FFCC00' TO colors. - APPEND '00FF9900' TO colors. - APPEND '00FF6600' TO colors. - APPEND '00666699' TO colors. - APPEND '00969696' TO colors. - APPEND '00003366' TO colors. - APPEND '00339966' TO colors. - APPEND '00003300' TO colors. - APPEND '00333300' TO colors. - - APPEND '00993300' TO colors. - APPEND '00993366' TO colors. - APPEND '00333399' TO colors. - APPEND '00333333' TO colors. - - endmethod. - - - - - - method GET_COLOR. - DATA: lv_index type i. - - lv_index = ip_index + 1. - READ TABLE colors INTO ep_color INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - endmethod. - - - - method GET_COLORS. - ep_colors = colors. - endmethod. - - - - method IS_MODIFIED. - ep_modified = modified. - endmethod. - - - - - method SET_COLOR. - DATA: lv_index TYPE i. - - FIELD-SYMBOLS: <lv_color> LIKE LINE OF colors. - - lv_index = ip_index + 1. - READ TABLE colors ASSIGNING <lv_color> INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - - IF <lv_color> <> ip_color. - modified = abap_true. - <lv_color> = ip_color. - ENDIF. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - METHOD guid_create. - - TRY. - rv_guid_16 = cl_system_uuid=>if_system_uuid_static~create_uuid_x16( ). - CATCH cx_uuid_error. - ENDTRY. - -*--------------------------------------------------------------------* -* If you are on a release that does not yet have the class cl_system_uuid -* please use the following coding instead which is using the function -* call that was used before but which has been flagged as obsolete -* in newer SAP releases -*--------------------------------------------------------------------* -* -* CALL FUNCTION 'GUID_CREATE' -* IMPORTING -* ev_guid_16 = rv_guid_16. - -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - DATA: lv_timestamp TYPE timestampl. - - GET TIME STAMP FIELD lv_timestamp. - created = lv_timestamp. - modified = lv_timestamp. - -endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_VALUE. - - ep_value = me->value. - - endmethod. - - - - method SET_RANGE_VALUE. - me->value = ip_value. - endmethod. - - - - - - - - method SET_VALUE. - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7, - lv_value TYPE string. - lv_stop_row_c = ip_stop_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_start_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - lv_value = ip_sheet_name. - me->value = zcl_excel_common=>escape_string( ip_value = lv_value ). - - CONCATENATE me->value '!$' ip_start_column '$' lv_start_row_c ':$' ip_stop_column '$' lv_stop_row_c INTO me->value. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - ranges->add( ip_range ). - endmethod. - - - method CLEAR. - ranges->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT ranges. - - endmethod. - - - - - method GET. - eo_range ?= ranges->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= ranges->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = ranges->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - ranges->remove( ip_range ). - endmethod. - - - - method SIZE. - ep_size = ranges->if_object_collection~size( ). - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - TYPES: BEGIN OF t_relationship, - id TYPE string, - type TYPE string, - target TYPE string, - END OF t_relationship. - -* - CLASS lcl_abap_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: abap_zip TYPE REF TO cl_abap_zip. - METHODS constructor IMPORTING i_data TYPE xstring - RAISING zcx_excel. - ENDCLASS. "lcl_abap_zip_archive DEFINITION - -* - CLASS lcl_alternate_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: alternate_zip TYPE REF TO object. - METHODS constructor - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RAISING zcx_excel. - ENDCLASS. "lcl_alternate_zip_archive DEFINITION - -* - CLASS lcl_abap_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_abap_zip_archive - EXPORTING - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT abap_zip. - abap_zip->load( - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - CALL METHOD abap_zip->get - EXPORTING - name = i_filename - IMPORTING - content = r_content - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_abap_zip_archive IMPLEMENTATION - -* - CLASS lcl_alternate_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_alternate_zip_archive - EXPORTING - i_alternate_zip_class = i_alternate_zip_class - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT alternate_zip TYPE (i_alternate_zip_class). - TRY. - CALL METHOD alternate_zip->('LOAD') - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method LOAD missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - TRY. - CALL METHOD alternate_zip->('GET') - EXPORTING - name = i_filename - IMPORTING - content = r_content " Contents - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method GET missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_alternate_zip_archive IMPLEMENTATION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -* -class lcl_zip_archive definition abstract. - public section. - methods read abstract - importing i_filename type csequence - returning value(r_content) type xstring " Remember copy-on-write! - raising zcx_excel. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - IXML - - - - - - - METHOD zif_excel_reader~load. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Map Document Properties to ZCL_EXCEL -*--------------------------------------------------------------------* - - CONSTANTS: lcv_core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lcv_office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'. - - DATA: lo_rels TYPE REF TO if_ixml_document, - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship. - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller - -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets - -* §3 Extracting from this the path&file where the workbook is located -* Following is an example how this file could be set up -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* <Relationship Target="docProps/core.xml" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Id="rId2"/> -* <Relationship Target="xl/workbook.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Id="rId1"/> -* </Relationships> -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller -*--------------------------------------------------------------------* - IF iv_zcl_excel_classname IS INITIAL. - CREATE OBJECT r_excel. - ELSE. - CREATE OBJECT r_excel TYPE (iv_zcl_excel_classname). - ENDIF. - - zip = create_zip_archive( i_xlsx_binary = i_excel2007 - i_use_alternate_zip = i_use_alternate_zip ). - -*--------------------------------------------------------------------* -* §2 Get file in folderstructure -*--------------------------------------------------------------------* - lo_rels = get_ixml_from_zip_archive( '_rels/.rels' ). - -*--------------------------------------------------------------------* -* §3 Cycle through the Relationship Tags and use the ones we need -*--------------------------------------------------------------------* - lo_node ?= lo_rels->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_relationship ). - CASE ls_relationship-type. - - WHEN lcv_office_document. -*--------------------------------------------------------------------* -* Parse workbook - main part here -*--------------------------------------------------------------------* - load_workbook( iv_workbook_full_filename = ls_relationship-target - io_excel = r_excel ). - - WHEN lcv_core_properties. - " 2do§1 Map Document Properties to ZCL_EXCEL - - WHEN OTHERS. - - ENDCASE. - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - METHOD zif_excel_reader~load_file. - - DATA: lv_excel_data TYPE xstring. - -*--------------------------------------------------------------------* -* Read file into binary string -*--------------------------------------------------------------------* - IF i_from_applserver = abap_true. - lv_excel_data = read_from_applserver( i_filename ). - ELSE. - lv_excel_data = read_from_local_file( i_filename ). - ENDIF. - -*--------------------------------------------------------------------* -* Parse Excel data into ZCL_EXCEL object from binary string -*--------------------------------------------------------------------* - r_excel = zif_excel_reader~load( i_excel2007 = lv_excel_data - i_use_alternate_zip = i_use_alternate_zip - iv_zcl_excel_classname = iv_zcl_excel_classname ). - -ENDMETHOD. - - - - - - - METHOD create_zip_archive. - CASE i_use_alternate_zip. - WHEN space. - e_zip = lcl_abap_zip_archive=>create( i_xlsx_binary ). - WHEN OTHERS. - e_zip = lcl_alternate_zip_archive=>create( i_data = i_xlsx_binary - i_alternate_zip_class = i_use_alternate_zip ). - ENDCASE. -ENDMETHOD. - - - - - METHOD fill_row_outlines. - - TYPES: BEGIN OF lts_row_data, - row TYPE i, - outline_level TYPE i, - END OF lts_row_data, - ltt_row_data TYPE SORTED TABLE OF lts_row_data WITH UNIQUE KEY row. - - DATA: lt_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - - lt_row_data TYPE ltt_row_data, - ls_row_data LIKE LINE OF lt_row_data, - lt_collapse_rows TYPE HASHED TABLE OF i WITH UNIQUE KEY table_line, - - lv_collapsed TYPE abap_bool, - - lv_outline_level TYPE i, - lv_next_consecutive_row TYPE i, - lt_outline_rows TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - ls_outline_row LIKE LINE OF lt_outline_rows, - - lv_row_offset TYPE i, - lv_row_collapse_flag TYPE i. - - - FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF lt_row_dimensions, - <ls_row_data> LIKE LINE OF lt_row_data. - -* First collect information about outlines ( outline leven and collapsed state ) - lt_row_dimensions = io_worksheet->get_row_dimensions( ). - LOOP AT lt_row_dimensions ASSIGNING <ls_row_dimension>. - - ls_row_data-row = <ls_row_dimension>-row. - ls_row_data-outline_level = <ls_row_dimension>-row_dimension->get_outline_level( ). - IF ls_row_data-outline_level IS NOT INITIAL. - INSERT ls_row_data INTO TABLE lt_row_data. - ENDIF. - - lv_collapsed = <ls_row_dimension>-row_dimension->get_collapsed( ). - IF lv_collapsed = abap_true. - INSERT <ls_row_dimension>-row INTO TABLE lt_collapse_rows. - ENDIF. - - ENDLOOP. - -* Now parse this information - we need consecutive rows - any gap will create a new outline - DO 7 TIMES. " max number of outlines allowed - lv_outline_level = sy-index. - CLEAR lv_next_consecutive_row. - CLEAR ls_outline_row. - LOOP AT lt_row_data ASSIGNING <ls_row_data> WHERE outline_level >= lv_outline_level. - - IF lv_next_consecutive_row <> <ls_row_data>-row " A gap --> close all open outlines - AND lv_next_consecutive_row IS NOT INITIAL. " First time in loop. - INSERT ls_outline_row INTO TABLE lt_outline_rows. - CLEAR: ls_outline_row. - ENDIF. - - IF ls_outline_row-row_from IS INITIAL. - ls_outline_row-row_from = <ls_row_data>-row. - ENDIF. - ls_outline_row-row_to = <ls_row_data>-row. - - lv_next_consecutive_row = <ls_row_data>-row + 1. - - ENDLOOP. - IF ls_outline_row-row_from IS NOT INITIAL. - INSERT ls_outline_row INTO TABLE lt_outline_rows. - ENDIF. - ENDDO. - -* lt_outline_rows holds all outline information -* we now need to determine whether the outline is collapsed or not - LOOP AT lt_outline_rows INTO ls_outline_row. - - IF io_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. - lv_row_collapse_flag = ls_outline_row-row_from - 1. - ELSE. - lv_row_collapse_flag = ls_outline_row-row_to + 1. - ENDIF. - READ TABLE lt_collapse_rows TRANSPORTING NO FIELDS WITH TABLE KEY table_line = lv_row_collapse_flag. - IF sy-subrc = 0. - ls_outline_row-collapsed = abap_true. - ENDIF. - io_worksheet->set_row_outline( iv_row_from = ls_outline_row-row_from - iv_row_to = ls_outline_row-row_to - iv_collapsed = ls_outline_row-collapsed ). - - ENDLOOP. - -* Finally purge outline information ( collapsed state, outline leve) from row_dimensions, since we want to keep these in the outline-table - LOOP AT lt_row_dimensions ASSIGNING <ls_row_dimension>. - - <ls_row_dimension>-row_dimension->set_outline_level( 0 ). - <ls_row_dimension>-row_dimension->set_collapsed( abap_false ). - - ENDLOOP. - -ENDMETHOD. - - - - - method fill_struct_from_attributes. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - - data: lv_name type string, - lo_attributes type ref to if_ixml_named_node_map, - lo_attribute type ref to if_ixml_attribute, - lo_iterator type ref to if_ixml_node_iterator. - - field-symbols: <component> type any. - -*--------------------------------------------------------------------* -* The values of named attributes of a tag are being read and moved into corresponding -* fields of given structure -* Behaves like move-corresonding tag to structure - -* Example: -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* Here the attributes are Target, Type and Id. Thus if the passed -* structure has fieldnames Id and Target these would be filled with -* "rId3" and "docProps/app.xml" respectively -*--------------------------------------------------------------------* - clear cp_structure. - - lo_attributes = ip_element->get_attributes( ). - lo_iterator = lo_attributes->create_iterator( ). - lo_attribute ?= lo_iterator->get_next( ). - while lo_attribute is bound. - - lv_name = lo_attribute->get_name( ). - translate lv_name to upper case. - assign component lv_name of structure cp_structure to <component>. - if sy-subrc = 0. - <component> = lo_attribute->get_value( ). - endif. - lo_attribute ?= lo_iterator->get_next( ). - - endwhile. - - -endmethod. - - - - - - METHOD get_dxf_style_guid. - DATA: lo_ixml_dxf_children TYPE REF TO if_ixml_node_list, - lo_ixml_iterator_dxf_children TYPE REF TO if_ixml_node_iterator, - lo_ixml_dxf_child TYPE REF TO if_ixml_element, - - lv_dxf_child_type TYPE string, - - lo_ixml_element TYPE REF TO if_ixml_element, - lo_ixml_element2 TYPE REF TO if_ixml_element, - lv_val TYPE string. - - DATA: ls_cstyle TYPE zexcel_s_cstyle_complete, - ls_cstylex TYPE zexcel_s_cstylex_complete. - - - - lo_ixml_dxf_children = io_ixml_dxf->get_children( ). - lo_ixml_iterator_dxf_children = lo_ixml_dxf_children->create_iterator( ). - lo_ixml_dxf_child ?= lo_ixml_iterator_dxf_children->get_next( ). - WHILE lo_ixml_dxf_child IS BOUND. - - lv_dxf_child_type = lo_ixml_dxf_child->get_name( ). - CASE lv_dxf_child_type. - - WHEN 'font'. -*--------------------------------------------------------------------* -* italic -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'i' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'val' ). - IF lv_val <> '0'. - ls_cstyle-font-italic = 'X'. - ls_cstylex-font-italic = 'X'. - ENDIF. - - ENDIF. -*--------------------------------------------------------------------* -* bold -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'b' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'val' ). - IF lv_val <> '0'. - ls_cstyle-font-bold = 'X'. - ls_cstylex-font-bold = 'X'. - ENDIF. - - ENDIF. -*--------------------------------------------------------------------* -* strikethrough -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'strike' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'val' ). - IF lv_val <> '0'. - ls_cstyle-font-strikethrough = 'X'. - ls_cstylex-font-strikethrough = 'X'. - ENDIF. - - ENDIF. -*--------------------------------------------------------------------* -* color -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'color' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'rgb' ). - ls_cstyle-font-color-rgb = lv_val. - ls_cstylex-font-color-rgb = 'X'. - ENDIF. - - WHEN 'fill'. - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'patternFill' ). - IF lo_ixml_element IS BOUND. - lo_ixml_element2 = lo_ixml_element->find_from_name( 'bgColor' ). - IF lo_ixml_element2 IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element2->get_attribute_ns( 'rgb' ). - IF lv_val IS NOT INITIAL. - ls_cstyle-fill-filltype = zcl_excel_style_fill=>c_fill_solid. - ls_cstyle-fill-bgcolor-rgb = lv_val. - ls_cstylex-fill-filltype = 'X'. - ls_cstylex-fill-bgcolor-rgb = 'X'. - ENDIF. - ENDIF. - CLEAR lv_val. - lv_val = lo_ixml_element2->get_attribute_ns( 'theme' ). - IF lv_val IS NOT INITIAL. - ls_cstyle-fill-filltype = zcl_excel_style_fill=>c_fill_solid. - ls_cstyle-fill-bgcolor-theme = lv_val. - ls_cstylex-fill-filltype = 'X'. - ls_cstylex-fill-bgcolor-theme = 'X'. - ENDIF. - ENDIF. - -* 2do - borders into dxf-styles. Here and in writerclass -* WHEN 'border'. -* lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'left' ). -* IF lo_ixml_element IS BOUND. -* CLEAR lv_val. -* lv_val = lo_ixml_element2->get_attribute_ns( 'style' ). -* IF lv_val IS NOT INITIAL. -* ls_cstyle-borders-left-border_style = lv_val. -* ls_cstylex-borders-left-border_style = 'X'. -* ENDIF. -* ENDIF. - - ENDCASE. - - lo_ixml_dxf_child ?= lo_ixml_iterator_dxf_children->get_next( ). - - ENDWHILE. - - - - - rv_style_guid = io_excel->get_static_cellstyle_guid( ip_cstyle_complete = ls_cstyle - ip_cstylex_complete = ls_cstylex ). - - -ENDMETHOD. - - - - - - METHOD get_from_zip_archive. - - ASSERT zip IS BOUND. " zip object has to exist at this point - - r_content = zip->read( i_filename ). - -ENDMETHOD. - - - - - - - METHOD get_ixml_from_zip_archive. - - DATA: lv_content TYPE xstring, - lo_ixml TYPE REF TO if_ixml, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_istream TYPE REF TO if_ixml_istream, - lo_parser TYPE REF TO if_ixml_parser. - -*--------------------------------------------------------------------* -* Load XML file from archive into an input stream, -* and parse that stream into an ixml object -*--------------------------------------------------------------------* - lv_content = me->get_from_zip_archive( i_filename ). - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_istream = lo_streamfactory->create_istream_xstring( lv_content ). - r_ixml = lo_ixml->create_document( ). - lo_parser = lo_ixml->create_parser( stream_factory = lo_streamfactory - istream = lo_istream - document = r_ixml ). - lo_parser->set_normalizing( is_normalizing ). - lo_parser->set_validating( mode = if_ixml_parser=>co_no_validation ). - lo_parser->parse( ). - -ENDMETHOD. - - - - - - METHOD load_drawing_anchor. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - TYPES: BEGIN OF t_ext, - cx TYPE string, - cy TYPE string, - END OF t_ext. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - node TYPE REF TO if_ixml_element, - node2 TYPE REF TO if_ixml_element, - node3 TYPE REF TO if_ixml_element, - node4 TYPE REF TO if_ixml_element, - - ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location, - ls_size TYPE zexcel_drawing_size, - ext TYPE t_ext, - lv_content TYPE xstring, - lv_relation_id TYPE string, - lv_title TYPE string, - - cnvpr TYPE t_c_nv_pr, - blip TYPE t_blip, - chart TYPE t_chart, - drawing_type TYPE zexcel_drawing_type, - - rel_drawing TYPE t_rel_drawing. - - node ?= io_anchor_element->find_from_name( name = 'from' namespace = 'xdr' ). - CHECK node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_upper-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_upper-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_upper-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_upper-row_offset = node2->get_value( ). - - node ?= io_anchor_element->find_from_name( name = 'ext' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_size. - ELSE. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = ext ). - ls_size-width = ext-cx. - ls_size-height = ext-cy. - TRY. - ls_size-width = zcl_excel_drawing=>emu2pixel( ls_size-width ). - CATCH cx_root. - ENDTRY. - TRY. - ls_size-height = zcl_excel_drawing=>emu2pixel( ls_size-height ). - CATCH cx_root. - ENDTRY. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'to' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_lower. - ELSE. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_lower-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_lower-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_lower-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_lower-row_offset = node2->get_value( ). - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'pic' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvPicPr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'blipFill' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'blip' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = blip ). - lv_relation_id = blip-embed. - - drawing_type = zcl_excel_drawing=>type_image. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'graphicFrame' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvGraphicFramePr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'graphic' namespace = 'a' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'graphicData' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - node4 ?= node2->find_from_name( name = 'chart' namespace = 'c' ). - CHECK node4 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node4 CHANGING cp_structure = chart ). - lv_relation_id = chart-id. - - drawing_type = zcl_excel_drawing=>type_chart. - ENDIF. - - lo_drawing = io_worksheet->excel->add_new_drawing( - ip_type = drawing_type - ip_title = lv_title ). - io_worksheet->add_drawing( lo_drawing ). - - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - READ TABLE it_related_drawings INTO rel_drawing - WITH KEY id = lv_relation_id. - - lo_drawing->set_media( - EXPORTING - ip_media = rel_drawing-content - ip_media_type = rel_drawing-file_ext - ip_width = ls_size-width - ip_height = ls_size-height ). - - IF drawing_type = zcl_excel_drawing=>type_chart. - "-------------Added by Alessandro Iannacci - Should load chart attributes - lo_drawing->load_chart_attributes( rel_drawing-content_xml ). - ENDIF. - -ENDMETHOD. - - - - - - METHOD load_dxf_styles. - - DATA: lo_styles_xml TYPE REF TO if_ixml_document, - lo_node_dxfs TYPE REF TO if_ixml_element, - - lo_nodes_dxf TYPE REF TO if_ixml_node_collection, - lo_iterator_dxf TYPE REF TO if_ixml_node_iterator, - lo_node_dxf TYPE REF TO if_ixml_element, - - lv_dxf_count TYPE i. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF mt_dxf_styles. - -*--------------------------------------------------------------------* -* Look for dxfs-node -*--------------------------------------------------------------------* - lo_styles_xml = me->get_ixml_from_zip_archive( iv_path ). - lo_node_dxfs = lo_styles_xml->find_from_name( 'dxfs' ). - CHECK lo_node_dxfs IS BOUND. - - -*--------------------------------------------------------------------* -* loop through all dxf-nodes and create style for each -*--------------------------------------------------------------------* - lo_nodes_dxf ?= lo_node_dxfs->get_elements_by_tag_name( 'dxf' ). - lo_iterator_dxf = lo_nodes_dxf->create_iterator( ). - lo_node_dxf ?= lo_iterator_dxf->get_next( ). - WHILE lo_node_dxf IS BOUND. - - APPEND INITIAL LINE TO mt_dxf_styles ASSIGNING <ls_dxf_style>. - <ls_dxf_style>-dxf = lv_dxf_count. " We start counting at 0 - ADD 1 TO lv_dxf_count. " prepare next entry - - <ls_dxf_style>-guid = get_dxf_style_guid( io_ixml_dxf = lo_node_dxf - io_excel = io_excel ). - lo_node_dxf ?= lo_iterator_dxf->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - method LOAD_SHARED_STRINGS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support partial formatting of strings in cells -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: renaming variables to naming conventions -* renaming variables to indicate what they are used for -* aligning code -* adding comments to explain what we are trying to achieve -* rewriting code for better readibility -*--------------------------------------------------------------------* - - - - DATA: - lo_shared_strings_xml TYPE REF TO if_ixml_document, - lo_node_si TYPE REF TO if_ixml_element, - lo_node_si_child TYPE REF TO if_ixml_element, - lo_node_r_child_t TYPE REF TO if_ixml_element, - lv_tag_name TYPE string, - lv_node_value TYPE string. - - FIELD-SYMBOLS: <lv_shared_string> LIKE LINE OF me->shared_strings. - -*--------------------------------------------------------------------* - -* §1 Parse shared strings file and get into internal table -* So far I have encountered 2 ways how a string can be represented in the shared strings file -* §1.1 - "simple" strings -* §1.2 - rich text formatted strings - -* Following is an example how this file could be set up; 2 strings in simple formatting, 3rd string rich textformatted - - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <sst uniqueCount="6" count="6" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <si> -* <t>This is a teststring 1</t> -* </si> -* <si> -* <t>This is a teststring 2</t> -* </si> -* <si> -* <r> -* <t>T</t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color rgb="FFFF0000"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t xml:space="preserve">his is a </t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color theme="1"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t>teststring 3</t> -* </r> -* </si> -* </sst> -*--------------------------------------------------------------------* - - lo_shared_strings_xml = me->get_ixml_from_zip_archive( i_filename = ip_path - is_normalizing = space ). " NO!!! normalizing - otherwise leading blanks will be omitted and that is not really desired for the stringtable - lo_node_si ?= lo_shared_strings_xml->find_from_name( 'si' ). - WHILE lo_node_si IS BOUND. - - APPEND INITIAL LINE TO me->shared_strings ASSIGNING <lv_shared_string>. " Each <si>-entry in the xml-file must lead to an entry in our stringtable - lo_node_si_child ?= lo_node_si->get_first_child( ). - IF lo_node_si_child IS BOUND. - lv_tag_name = lo_node_si_child->get_name( ). - IF lv_tag_name = 't'. -*--------------------------------------------------------------------* -* §1.1 - "simple" strings -* Example: see above -*--------------------------------------------------------------------* - <lv_shared_string> = lo_node_si_child->get_value( ). - ELSE. -*--------------------------------------------------------------------* -* §1.2 - rich text formatted strings -* it is sufficient to strip the <t>...</t> tag from each <r>-tag and concatenate these -* as long as rich text formatting is not supported (2do§1) ignore all info about formatting -* Example: see above -*--------------------------------------------------------------------* - WHILE lo_node_si_child IS BOUND. " actually these children of <si> are <r>-tags - - lo_node_r_child_t ?= lo_node_si_child->find_from_name( 't' ). " extract the <t>...</t> part of each <r>-tag - IF lo_node_r_child_t IS BOUND. - lv_node_value = lo_node_r_child_t->get_value( ). - CONCATENATE <lv_shared_string> lv_node_value INTO <lv_shared_string> RESPECTING BLANKS. - ENDIF. - - lo_node_si_child ?= lo_node_si_child->get_next( ). - - ENDWHILE. - ENDIF. - ENDIF. - - lo_node_si ?= lo_node_si->get_next( ). - ENDWHILE. - - endmethod. - - - - - - METHOD load_styles. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (wip ) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_xf, - applyalignment TYPE string, - applyborder TYPE string, - applyfill TYPE string, - applyfont TYPE string, - applynumberformat TYPE string, - applyprotection TYPE string, - borderid TYPE string, - fillid TYPE string, - fontid TYPE string, - numfmtid TYPE string, - pivotbutton TYPE string, - quoteprefix TYPE string, - xfid TYPE string, - END OF lty_xf. - - TYPES: BEGIN OF lty_alignment, - horizontal TYPE string, - indent TYPE string, - justifylastline TYPE string, - readingorder TYPE string, - relativeindent TYPE string, - shrinktofit TYPE string, - textrotation TYPE string, - vertical TYPE string, - wraptext TYPE string, - END OF lty_alignment. - - TYPES: BEGIN OF lty_protection, - hidden TYPE string, - locked TYPE string, - END OF lty_protection. - - DATA: lo_styles_xml TYPE REF TO if_ixml_document, - lo_style TYPE REF TO zcl_excel_style, - - lt_num_formats TYPE t_num_formats, - lt_fills TYPE t_fills, - lt_borders TYPE t_borders, - lt_fonts TYPE t_fonts, - - ls_num_format TYPE t_num_format, - ls_fill TYPE REF TO zcl_excel_style_fill, - ls_cell_border TYPE REF TO zcl_excel_style_borders, - ls_font TYPE REF TO zcl_excel_style_font, - - lo_node_cellxfs TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_alignment TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_protection TYPE REF TO if_ixml_element, - - lo_nodes_xf TYPE REF TO if_ixml_node_collection, - lo_iterator_cellxfs TYPE REF TO if_ixml_node_iterator, - - ls_xf TYPE lty_xf, - ls_alignment TYPE lty_alignment, - ls_protection TYPE lty_protection, - lv_index TYPE i. - -*--------------------------------------------------------------------* -* To build a complete style that fully describes how a cell looks like -* we need the various parts -* §1 - Numberformat -* §2 - Fillstyle -* §3 - Borders -* §4 - Font -* §5 - Alignment -* §6 - Protection - -* Following is an example how this part of a file could be set up -* ... -* parts with various formatinformation - see §1,§2,§3,§4 -* ... -* <cellXfs count="26"> -* <xf numFmtId="0" borderId="0" fillId="0" fontId="0" xfId="0"/> -* <xf numFmtId="0" borderId="0" fillId="2" fontId="0" xfId="0" applyFill="1"/> -* <xf numFmtId="0" borderId="1" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="2" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="3" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="4" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="0" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* ... -* </cellXfs> -*--------------------------------------------------------------------* - - lo_styles_xml = me->get_ixml_from_zip_archive( ip_path ). - -*--------------------------------------------------------------------* -* The styles are build up from -* §1 number formats -* §2 fill styles -* §3 border styles -* §4 fonts -* These need to be read before we can try to build up a complete -* style that describes the look of a cell -*--------------------------------------------------------------------* - lt_num_formats = load_style_num_formats( lo_styles_xml ). " §1 - lt_fills = load_style_fills( lo_styles_xml ). " §2 - lt_borders = load_style_borders( lo_styles_xml ). " §3 - lt_fonts = load_style_fonts( lo_styles_xml ). " §4 - -*--------------------------------------------------------------------* -* Now everything is prepared to build a "full" style -*--------------------------------------------------------------------* - lo_node_cellxfs = lo_styles_xml->find_from_name( name = 'cellXfs' ). - IF lo_node_cellxfs IS BOUND. - lo_nodes_xf = lo_node_cellxfs->get_elements_by_tag_name( name = 'xf' ). - lo_iterator_cellxfs = lo_nodes_xf->create_iterator( ). - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - WHILE lo_node_cellxfs_xf IS BOUND. - - lo_style = ip_excel->add_new_style( ). - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf - CHANGING - cp_structure = ls_xf ). -*--------------------------------------------------------------------* -* §2 fill style -*--------------------------------------------------------------------* - IF ls_xf-applyfill = '1' AND ls_xf-fillid IS NOT INITIAL. - lv_index = ls_xf-fillid + 1. - READ TABLE lt_fills INTO ls_fill INDEX lv_index. - IF sy-subrc = 0. - lo_style->fill = ls_fill. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §1 number format -*--------------------------------------------------------------------* - IF ls_xf-numfmtid IS NOT INITIAL. - READ TABLE lt_num_formats INTO ls_num_format WITH TABLE KEY id = ls_xf-numfmtid. - IF sy-subrc = 0. - lo_style->number_format = ls_num_format-format. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §3 border style -*--------------------------------------------------------------------* - IF ls_xf-applyborder = '1' AND ls_xf-borderid IS NOT INITIAL. - lv_index = ls_xf-borderid + 1. - READ TABLE lt_borders INTO ls_cell_border INDEX lv_index. - IF sy-subrc = 0. - lo_style->borders = ls_cell_border. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §4 font -*--------------------------------------------------------------------* - IF ls_xf-applyfont = '1' AND ls_xf-fontid IS NOT INITIAL. - lv_index = ls_xf-fontid + 1. - READ TABLE lt_fonts INTO ls_font INDEX lv_index. - IF sy-subrc = 0. - lo_style->font = ls_font. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §5 - Alignment -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_alignment ?= lo_node_cellxfs_xf->find_from_name( 'alignment' ). - IF lo_node_cellxfs_xf_alignment IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_alignment - CHANGING - cp_structure = ls_alignment ). - IF ls_alignment-horizontal IS NOT INITIAL. - lo_style->alignment->horizontal = ls_alignment-horizontal. - ENDIF. - - IF ls_alignment-vertical IS NOT INITIAL. - lo_style->alignment->vertical = ls_alignment-vertical. - ENDIF. - - IF ls_alignment-textrotation IS NOT INITIAL. - lo_style->alignment->textrotation = ls_alignment-textrotation. - ENDIF. - - IF ls_alignment-wraptext = '1' OR ls_alignment-wraptext = 'true'. - lo_style->alignment->wraptext = abap_true. - ENDIF. - - IF ls_alignment-shrinktofit = '1' OR ls_alignment-shrinktofit = 'true'. - lo_style->alignment->shrinktofit = abap_true. - ENDIF. - - IF ls_alignment-indent IS NOT INITIAL. - lo_style->alignment->indent = ls_alignment-indent. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §6 - Protection -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_protection ?= lo_node_cellxfs_xf->find_from_name( 'protection' ). - IF lo_node_cellxfs_xf_protection IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_protection - CHANGING - cp_structure = ls_protection ). - IF ls_protection-locked = '1' OR ls_protection-locked = 'true'. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_locked. - ELSE. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - ENDIF. - - IF ls_protection-hidden = '1' OR ls_protection-hidden = 'true'. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_hidden. - ELSE. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_unhidden. - ENDIF. - - ENDIF. - - INSERT lo_style INTO TABLE me->styles. - - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - - ENDWHILE. - ENDIF. - -ENDMETHOD. - - - - - method LOAD_STYLE_BORDERS. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_border TYPE REF TO if_ixml_element, - lo_node_bordertype TYPE REF TO if_ixml_element, - lo_node_bordercolor TYPE REF TO if_ixml_element, - lo_cell_border TYPE REF TO zcl_excel_style_borders, - lo_border TYPE REF TO zcl_excel_style_border, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used borderformats to build up our styles -* §1 A cell has 4 outer borders and 2 diagonal "borders" -* These borders can be formatted separately but the diagonal borders -* are always being formatted the same -* We'll parse through the <border>-tag for each of the bordertypes -* §2 and read the corresponding formatting information - -* Following is an example how this part of a file could be set up -* <border diagonalDown="1"> -* <left style="mediumDashDotDot"> -* <color rgb="FFFF0000"/> -* </left> -* <right/> -* <top style="thick"> -* <color rgb="FFFF0000"/> -* </top> -* <bottom style="thick"> -* <color rgb="FFFF0000"/> -* </bottom> -* <diagonal style="thick"> -* <color rgb="FFFF0000"/> -* </diagonal> -* </border> -*--------------------------------------------------------------------* - lo_node_border ?= ip_xml->find_from_name( 'border' ). - WHILE lo_node_border IS BOUND. - - CREATE OBJECT lo_cell_border. - -*--------------------------------------------------------------------* -* Diagonal borderlines are formatted the equally. Determine what kind of diagonal borders are present if any -*--------------------------------------------------------------------* -* DiagonalNone = 0 -* DiagonalUp = 1 -* DiagonalDown = 2 -* DiagonalBoth = 3 -*--------------------------------------------------------------------* - IF lo_node_border->get_attribute( 'diagonalDown' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_down to lo_cell_border->diagonal_mode. - ENDIF. - - IF lo_node_border->get_attribute( 'diagonalUp' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_up to lo_cell_border->diagonal_mode. - ENDIF. - - lo_node_bordertype ?= lo_node_border->get_first_child( ). - WHILE lo_node_bordertype IS BOUND. -*--------------------------------------------------------------------* -* §1 Determine what kind of border we are talking about -*--------------------------------------------------------------------* -* Up, down, left, right, diagonal -*--------------------------------------------------------------------* - CREATE OBJECT lo_border. - - CASE lo_node_bordertype->get_name( ). - - WHEN 'left'. - lo_cell_border->left = lo_border. - - WHEN 'right'. - lo_cell_border->right = lo_border. - - WHEN 'top'. - lo_cell_border->top = lo_border. - - WHEN 'bottom'. - lo_cell_border->down = lo_border. - - WHEN 'diagonal'. - lo_cell_border->diagonal = lo_border. - - ENDCASE. - -*--------------------------------------------------------------------* -* §2 Read the border-formatting -*--------------------------------------------------------------------* - lo_border->border_style = lo_node_bordertype->get_attribute( 'style' ). - lo_node_bordercolor ?= lo_node_bordertype->find_from_name( 'color' ). - IF lo_node_bordercolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bordercolor - CHANGING - cp_structure = ls_color ). - - lo_border->border_color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_border->border_color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_border->border_color-theme = ls_color-theme. - ENDIF. - lo_border->border_color-tint = ls_color-tint. - ENDIF. - - lo_node_bordertype ?= lo_node_bordertype->get_next( ). - - ENDWHILE. - - INSERT lo_cell_border INTO TABLE ep_borders. - - lo_node_border ?= lo_node_border->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_FILLS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support gradientFill -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* commenting on problems/future enhancements/todos we already know of or should decide upon -* adding comments to explain what we are trying to achieve -* renaming variables to indicate what they are used for -*--------------------------------------------------------------------* - DATA: lv_value TYPE string, - lo_node_fill TYPE REF TO if_ixml_element, - lo_node_fill_child TYPE REF TO if_ixml_element, - lo_node_bgcolor TYPE REF TO if_ixml_element, - lo_node_fgcolor TYPE REF TO if_ixml_element, - lo_node_stop TYPE REF TO if_ixml_element, - lo_fill TYPE REF TO zcl_excel_style_fill, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fillformats to build up our styles - -* Following is an example how this part of a file could be set up -* <fill> -* <patternFill patternType="gray125"/> -* </fill> -* <fill> -* <patternFill patternType="solid"> -* <fgColor rgb="FFFFFF00"/> -* <bgColor indexed="64"/> -* </patternFill> -* </fill> -*--------------------------------------------------------------------* - - lo_node_fill ?= ip_xml->find_from_name( 'fill' ). - WHILE lo_node_fill IS BOUND. - - CREATE OBJECT lo_fill. - lo_node_fill_child ?= lo_node_fill->get_first_child( ). - lv_value = lo_node_fill_child->get_name( ). - CASE lv_value. - -*--------------------------------------------------------------------* -* Patternfill -*--------------------------------------------------------------------* - WHEN 'patternFill'. - lo_fill->filltype = lo_node_fill_child->get_attribute( 'patternType' ). -*--------------------------------------------------------------------* -* Patternfill - background color -*--------------------------------------------------------------------* - lo_node_bgcolor = lo_node_fill_child->find_from_name( 'bgColor' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - -*--------------------------------------------------------------------* -* Patternfill - foreground color -*--------------------------------------------------------------------* - lo_node_fgcolor = lo_node_fill->find_from_name( 'fgColor' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - - -*--------------------------------------------------------------------* -* gradientFill -*--------------------------------------------------------------------* - WHEN 'gradientFill'. - lo_fill->gradtype-type = lo_node_fill_child->get_attribute( 'type' ). - lo_fill->gradtype-top = lo_node_fill_child->get_attribute( 'top' ). - lo_fill->gradtype-left = lo_node_fill_child->get_attribute( 'left' ). - lo_fill->gradtype-right = lo_node_fill_child->get_attribute( 'right' ). - lo_fill->gradtype-bottom = lo_node_fill_child->get_attribute( 'bottom' ). - lo_fill->gradtype-degree = lo_node_fill_child->get_attribute( 'degree' ). - free lo_node_stop. - lo_node_stop ?= lo_node_fill_child->find_from_name( 'stop' ). - while lo_node_stop is bound. - if lo_fill->gradtype-position1 is initial. - lo_fill->gradtype-position1 = lo_node_stop->get_attribute( 'position' ). - lo_node_bgcolor = lo_node_stop->find_from_name( 'color' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - elseif lo_fill->gradtype-position2 is initial. - lo_fill->gradtype-position2 = lo_node_stop->get_attribute( 'position' ). - lo_node_fgcolor = lo_node_stop->find_from_name( 'color' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - elseif lo_fill->gradtype-position3 is initial. - lo_fill->gradtype-position3 = lo_node_stop->get_attribute( 'position' ). - "BGColor is filled already with position 1 no need to check again - endif. - - lo_node_stop ?= lo_node_stop->get_next( ). - ENDWHILE. - - WHEN OTHERS. - - ENDCASE. - - - INSERT lo_fill INTO TABLE ep_fills. - - lo_node_fill ?= lo_node_fill->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - METHOD load_style_fonts. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* removing unused variables -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_font TYPE REF TO if_ixml_element, - lo_node2 TYPE REF TO if_ixml_element, - lo_font TYPE REF TO zcl_excel_style_font, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fonts to build up our styles - -* Following is an example how this part of a file could be set up -* <font> -* <sz val="11"/> -* <color theme="1"/> -* <name val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </font> -*--------------------------------------------------------------------* - lo_node_font ?= ip_xml->find_from_name( 'font' ). - WHILE lo_node_font IS BOUND. - - CREATE OBJECT lo_font. -*--------------------------------------------------------------------* -* Bold -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'b' ) IS BOUND. - lo_font->bold = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Italic -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'i' ) IS BOUND. - lo_font->italic = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Underline -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'u' ). - IF lo_node2 IS BOUND. - lo_font->underline = abap_true. - lo_font->underline_mode = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* StrikeThrough -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'strike' ) IS BOUND. - lo_font->strikethrough = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Fontsize -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'sz' ). - IF lo_node2 IS BOUND. - lo_font->size = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontname -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'name' ). - IF lo_node2 IS BOUND. - lo_font->name = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontfamily -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'family' ). - IF lo_node2 IS BOUND. - lo_font->family = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontscheme -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'scheme' ). - IF lo_node2 IS BOUND. - lo_font->scheme = lo_node2->get_attribute( 'val' ). - ELSE. - CLEAR lo_font->scheme. - ENDIF. - -*--------------------------------------------------------------------* -* Fontcolor -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'color' ). - IF lo_node2 IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node2 - CHANGING - cp_structure = ls_color ). - lo_font->color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_font->color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_font->color-theme = ls_color-theme. - ENDIF. - lo_font->color-tint = ls_color-tint. - ENDIF. - - INSERT lo_font INTO TABLE ep_fonts. - - lo_node_font ?= lo_node_font->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - method LOAD_STYLE_NUM_FORMATS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Explain gaps in predefined formats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* adding comments to explain what we are trying to achieve -* aligning code -*--------------------------------------------------------------------* - DATA: lo_node_numfmt TYPE REF TO if_ixml_element, - ls_num_format TYPE t_num_format. - -*--------------------------------------------------------------------* -* We need a table of used numberformats to build up our styles -* there are two kinds of numberformats -* §1 those that have been explicitly added by the createor of the excel-file -* §2 and built-in numberformats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 Get non-internal numberformats that are found in the file explicitly - -* Following is an example how this part of a file could be set up -* <numFmts count="1"> -* <numFmt formatCode="#,###,###,###,##0.00" numFmtId="164"/> -* </numFmts> -*--------------------------------------------------------------------* - lo_node_numfmt ?= ip_xml->find_from_name( 'numFmt' ). - WHILE lo_node_numfmt IS BOUND. - - CLEAR ls_num_format. - - CREATE OBJECT ls_num_format-format. - ls_num_format-format->format_code = lo_node_numfmt->get_attribute( 'formatCode' ). - ls_num_format-id = lo_node_numfmt->get_attribute( 'numFmtId' ). - INSERT ls_num_format INTO TABLE ep_num_formats. - - lo_node_numfmt ?= lo_node_numfmt->get_next( ). - - ENDWHILE. - - DEFINE predefined_format. - ls_num_format-id = &1. - create object ls_num_format-format. - ls_num_format-format->format_code = &2. - insert ls_num_format into table ep_num_formats. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* §1 Get internal predefined numberformats -*--------------------------------------------------------------------* - predefined_format '1' '0'. - predefined_format '2' '0.00'. - predefined_format '3' '#,##0'. - predefined_format '4' '#,##0.00'. - predefined_format '5' '$#,##0_);($#,##0)'. - predefined_format '6' '$#,##0_);[Red]($#,##0)'. - predefined_format '7' '$#,##0.00_);($#,##0.00)'. - predefined_format '8' '$#,##0.00_);[Red]($#,##0.00)'. - predefined_format '9' '0%'. - predefined_format '10' '0.00%'. - predefined_format '11' '0.00E+00'. - predefined_format '12' '# ?/?'. - predefined_format '13' '# ??/??'. - predefined_format '14' 'm/d/yyyy'. - predefined_format '15' 'd-mmm-yy'. - predefined_format '16' 'd-mmm'. - predefined_format '17' 'mmm-yy'. - predefined_format '18' 'h:mm AM/PM'. - predefined_format '19' 'h:mm:ss AM/PM'. - predefined_format '20' 'h:mm'. - predefined_format '21' 'h:mm:ss'. - predefined_format '22' 'm/d/yyyy h:mm'. -* 2do§1 Why is there a gap in here? - - - - - - - - - - - - - - predefined_format '37' '#,##0_);(#,##0)'. - predefined_format '38' '#,##0_);[Red](#,##0)'. - predefined_format '39' '#,##0.00_);(#,##0.00)'. - predefined_format '40' '#,##0.00_);[Red](#,##0.00)'. -* 2do§1 Why is there a gap in here? - - - - predefined_format '45' 'mm:ss'. - predefined_format '46' '[h]:mm:ss'. - predefined_format '47' 'mm:ss.0'. - predefined_format '48' '##0.0E+0'. - predefined_format '49' '@'. -* 2do§1 Is 49 really the last predefined format? - - - endmethod. - - - - - - method LOAD_WORKBOOK. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Move macro-reading from zcl_excel_reader_xlsm to this class -* autodetect existance of macro/vba content -* Allow inputparameter to explicitly tell reader to ignore vba-content -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-10 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* removing unused variables -* adding me-> where possible -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -* renaming i/o parameters: previous input-parameter ip_path holds a (full) filename and not a path --> rename to iv_workbook_full_filename -* ip_excel renamed while being at it --> rename to io_excel -*--------------------------------------------------------------------* -* issue #232 - Read worksheetstate hidden/veryHidden -* - Stefan Schmöcker, 2012-11-11 -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 -* changes: correction in named ranges to correctly attach -* sheetlocal names/ranges to the correct sheet -*--------------------------------------------------------------------* -* issue#284 - Copied formulae ignored when reading excelfile -* - Stefan Schmöcker, 2013-08-02 -* changes: initialize area to hold referenced formulaedata -* after all worksheets have been read resolve formuae -*--------------------------------------------------------------------* - - CONSTANTS: lcv_shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - lcv_worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lcv_styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lcv_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - begin data declarations -*--------------------------------------------------------------------* - lcv_worksheet_state_hidden TYPE string VALUE 'hidden', - lcv_worksheet_state_veryhidden TYPE string VALUE 'veryHidden'. -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - end data declarations -*--------------------------------------------------------------------* - - DATA: - lv_path TYPE string, - lv_filename TYPE chkfile, - lv_full_filename TYPE string, - - lo_rels_workbook TYPE REF TO if_ixml_document, - lt_worksheets TYPE STANDARD TABLE OF t_relationship WITH NON-UNIQUE DEFAULT KEY, - lo_workbook TYPE REF TO if_ixml_document, - lv_workbook_index TYPE i, - lv_worksheet_path TYPE string, - ls_sheet TYPE t_sheet, - - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lv_worksheet_title TYPE zexcel_sheet_title, - lv_tabix TYPE sytabix, " #235 - repeat rows/cols. Needed to link defined name to correct worksheet - - ls_range TYPE t_range, - lv_range_value TYPE zexcel_range_value, -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin data declarations -*--------------------------------------------------------------------* - lv_active_sheet_string TYPE string, - lv_zexcel_active_worksheet TYPE zexcel_active_worksheet, -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - added autofilter support while changing this section - lo_autofilter TYPE REF TO zcl_excel_autofilter, - ls_area TYPE zexcel_s_autofilter_area, - lv_col_start_alpha TYPE zexcel_cell_column_alpha, - lv_col_end_alpha TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row , - lv_regex TYPE string, - lv_range_value_1 TYPE zexcel_range_value, - lv_range_value_2 TYPE zexcel_range_value. -*--------------------------------------------------------------------* -* #229: Set active worksheet - end data declarations -*--------------------------------------------------------------------* - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - -*--------------------------------------------------------------------* - -* §1 Get the position of files related to this workbook -* Usually this will be <root>/xl/workbook.xml -* Thus the workbookroot will be <root>/xl/ -* The position of all related files will be given in file -* <workbookroot>/_rels/<workbookfilename>.rels and their positions -* be be given relative to the workbookroot - -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="styles.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Id="rId6"/> -* <Relationship Target="theme/theme1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Id="rId5"/> -* <Relationship Target="worksheets/sheet1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId1"/> -* <Relationship Target="worksheets/sheet2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId2"/> -* <Relationship Target="worksheets/sheet3.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId3"/> -* <Relationship Target="worksheets/sheet4.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId4"/> -* <Relationship Target="sharedStrings.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Id="rId7"/> -* </Relationships> -* -* §2 Load data that is relevant to the complete workbook -* Currently supported is: -* §2.1 Shared strings - This holds all strings that are used in all worksheets -* §2.2 Styles - This holds all styles that are used in all worksheets -* §2.3 Worksheets - For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* §2.4 [Themes] - not supported -* §2.5 [VBA (Macro)] - supported in class zcl_excel_reader_xlsm but should be moved here and autodetect -* ... -* -* §3 Some information is held in the workbookfile as well -* §3.1 Names and order of of worksheets -* §3.2 Active worksheet -* §3.3 Defined names -* ... -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <fileVersion rupBuild="4506" lowestEdited="4" lastEdited="4" appName="xl"/> -* <workbookPr defaultThemeVersion="124226"/> -* <bookViews> -* <workbookView activeTab="1" windowHeight="8445" windowWidth="19035" yWindow="120" xWindow="120"/> -* </bookViews> -* <sheets> -* <sheet r:id="rId1" sheetId="1" name="Sheet1"/> -* <sheet r:id="rId2" sheetId="2" name="Sheet2"/> -* <sheet r:id="rId3" sheetId="3" name="Sheet3" state="hidden"/> -* <sheet r:id="rId4" sheetId="4" name="Sheet4"/> -* </sheets> -* <definedNames/> -* <calcPr calcId="125725"/> -* </workbook> -*--------------------------------------------------------------------* - - CLEAR me->mt_ref_formulae. " ins issue#284 - -*--------------------------------------------------------------------* -* §1 Get the position of files related to this workbook -* Entry into this method is with the filename of the workbook -*--------------------------------------------------------------------* - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = lv_filename - file_path = lv_path. - - CONCATENATE lv_path '_rels/' lv_filename '.rels' - INTO lv_full_filename. - lo_rels_workbook = me->get_ixml_from_zip_archive( lv_full_filename ). - - lo_node ?= lo_rels_workbook->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING ip_element = lo_node CHANGING cp_structure = ls_relationship ). - - CASE ls_relationship-type. - -*--------------------------------------------------------------------* -* §2.1 Shared strings - This holds all strings that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_shared_strings. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_shared_strings( lv_full_filename ). - -*--------------------------------------------------------------------* -* §2.3 Worksheets -* For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* Shared strings and styles have to be present before we can start with creating the worksheets -* thus we only store this information for use when parsing the workbookfile for sheetinformations -*--------------------------------------------------------------------* - WHEN lcv_worksheet. - APPEND ls_relationship TO lt_worksheets. - -*--------------------------------------------------------------------* -* §2.2 Styles - This holds the styles that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_styles. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_styles( ip_path = lv_full_filename - ip_excel = io_excel ). - me->load_dxf_styles( iv_path = lv_full_filename - io_excel = io_excel ). - - WHEN OTHERS. - - ENDCASE. - - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - -*--------------------------------------------------------------------* -* §3 Some information held in the workbookfile -*--------------------------------------------------------------------* - lo_workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - -*--------------------------------------------------------------------* -* §3.1 Names and order of of worksheets -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'sheet' ). - lv_workbook_index = 1. - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_sheet ). -*--------------------------------------------------------------------* -* Create new worksheet in workbook with correct name -*--------------------------------------------------------------------* - lv_worksheet_title = ls_sheet-name. - IF lv_workbook_index = 1. " First sheet has been added automatically by creating io_excel - lo_worksheet = io_excel->get_active_worksheet( ). - lo_worksheet->set_title( lv_worksheet_title ). - ELSE. - lo_worksheet = io_excel->add_new_worksheet( lv_worksheet_title ). - ENDIF. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - begin of coding -* Set status hidden if necessary -*--------------------------------------------------------------------* - CASE ls_sheet-state. - - WHEN lcv_worksheet_state_hidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - WHEN lcv_worksheet_state_veryhidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_veryhidden. - - ENDCASE. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - end of coding -*--------------------------------------------------------------------* -*--------------------------------------------------------------------* -* Load worksheetdata -*--------------------------------------------------------------------* - READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_sheet-id. - IF sy-subrc = 0. - <worksheet>-sheetid = ls_sheet-sheetid. "ins #235 - repeat rows/cols - needed to identify correct sheet - CONCATENATE lv_path <worksheet>-target - INTO lv_worksheet_path. - me->load_worksheet( ip_path = lv_worksheet_path - io_worksheet = lo_worksheet ). - <worksheet>-worksheet = lo_worksheet. - ENDIF. - - lo_node ?= lo_node->get_next( ). - ADD 1 TO lv_workbook_index. - - ENDWHILE. - SORT lt_worksheets BY sheetid. " needed for localSheetid -referencing - -*--------------------------------------------------------------------* -* #284: Set active worksheet - Resolve referenced formulae to -* explicit formulae those cells -*--------------------------------------------------------------------* - me->resolve_referenced_formulae( ). - " ins issue#284 -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin coding -* §3.2 Active worksheet -*--------------------------------------------------------------------* - lv_zexcel_active_worksheet = 1. " First sheet = active sheet if nothing else specified. - lo_node ?= lo_workbook->find_from_name( 'workbookView' ). - IF lo_node IS BOUND. - lv_active_sheet_string = lo_node->get_attribute( 'activeTab' ). - TRY. - lv_zexcel_active_worksheet = lv_active_sheet_string + 1. " EXCEL numbers the sheets from 0 onwards --> index into worksheettable is increased by one - CATCH cx_sy_conversion_error. "#EC NO_HANDLER - error here --> just use the default 1st sheet - ENDTRY. - ENDIF. - io_excel->set_active_sheet_index( lv_zexcel_active_worksheet ). -*--------------------------------------------------------------------* -* #229: Set active worksheet - end coding -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §3.3 Defined names -* So far I have encountered these -* - named ranges - sheetlocal -* - named ranges - workbookglobal -* - autofilters - sheetlocal ( special range ) -* - repeat rows/cols - sheetlocal ( special range ) -* -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'definedName' ). - WHILE lo_node IS BOUND. - - CLEAR lo_range. "ins issue #235 - repeat rows/cols - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_range ). - lv_range_value = lo_node->get_value( ). - - IF ls_range-localsheetid IS NOT INITIAL. " issue #163+ -* READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_range-localsheetid. "del issue #235 - repeat rows/cols " issue #163+ -* lo_range = <worksheet>-worksheet->add_new_range( ). "del issue #235 - repeat rows/cols " issue #163+ -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - begin -*--------------------------------------------------------------------* - lv_tabix = ls_range-localsheetid + 1. - READ TABLE lt_worksheets ASSIGNING <worksheet> INDEX lv_tabix. - IF sy-subrc = 0. - CASE ls_range-name. - -*--------------------------------------------------------------------* -* insert autofilters -*--------------------------------------------------------------------* - WHEN zcl_excel_autofilters=>c_autofilter. - lo_autofilter = io_excel->add_new_autofilter( io_sheet = <worksheet>-worksheet ) . - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = ls_area-row_start ). - ls_area-col_start = zcl_excel_common=>convert_column2int( lv_col_start_alpha ). - ls_area-col_end = zcl_excel_common=>convert_column2int( lv_col_end_alpha ). - lo_autofilter->set_filter_area( is_area = ls_area ). - -*--------------------------------------------------------------------* -* repeat print rows/columns -*--------------------------------------------------------------------* - WHEN zif_excel_sheet_printsettings=>gcv_print_title_name. - lo_range = <worksheet>-worksheet->add_new_range( ). -*--------------------------------------------------------------------* -* This might be a temporary solution. Maybe ranges get be reworked -* to support areas consisting of multiple rectangles -* But for now just split the range into row and columnpart -*--------------------------------------------------------------------* - CLEAR:lv_range_value_1, - lv_range_value_2. - IF lv_range_value IS INITIAL. -* Empty --> nothing to do - ELSE. - IF lv_range_value(1) = `'`. " Escaped - lv_regex = `^('[^']*')+![^,]*,`. - ELSE. - lv_regex = `^[^!]*![^,]*,`. - ENDIF. -* Split into two ranges if necessary - FIND REGEX lv_regex IN lv_range_value MATCH LENGTH sy-fdpos. - IF sy-subrc = 0 AND sy-fdpos > 0. - lv_range_value_2 = lv_range_value+sy-fdpos. - SUBTRACT 1 FROM sy-fdpos. - lv_range_value_1 = lv_range_value(sy-fdpos). - ELSE. - lv_range_value_1 = lv_range_value. - ENDIF. - ENDIF. -* 1st range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - -* 2nd range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - - WHEN OTHERS. - - ENDCASE. - ENDIF. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - end -*--------------------------------------------------------------------* - ELSE. " issue #163+ - lo_range = io_excel->add_new_range( ). " issue #163+ - ENDIF. " issue #163+ -* lo_range = ip_excel->add_new_range( ). " issue #163- - IF lo_range IS BOUND. "ins issue #235 - repeat rows/cols - lo_range->name = ls_range-name. - lo_range->set_range_value( lv_range_value ). - ENDIF. "ins issue #235 - repeat rows/cols - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - endmethod. - - - - - - METHOD load_worksheet. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Header/footer -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, -* - ... -* changes: renaming variables to naming conventions -* aligning code (started) -* add a list of open ToDos here -* adding comments to explain what we are trying to achieve (started) -*--------------------------------------------------------------------* -* issue #345 - Dump on small pagemargins -* Took the chance to modularize this very long method -* by extracting the code that needed correction into -* own method ( load_worksheet_pagemargins ) -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_cell, - r TYPE string, - t TYPE string, - s TYPE string, - END OF lty_cell. - - TYPES: BEGIN OF lty_column, - min TYPE string, - max TYPE string, - width TYPE float, - customwidth TYPE string, - style TYPE string, - bestfit TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_column. - - TYPES: BEGIN OF lty_sheetview, - showgridlines TYPE zexcel_show_gridlines, - tabselected TYPE string, - zoomscalenormal TYPE string, - workbookviewid TYPE string, - showrowcolheaders TYPE string, - END OF lty_sheetview. - - TYPES: BEGIN OF lty_mergecell, - ref TYPE string, - END OF lty_mergecell. - - TYPES: BEGIN OF lty_row, - r TYPE string, - customheight TYPE string, - ht TYPE float, - spans TYPE string, - thickbot TYPE string, - customformat TYPE string, - thicktop TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_row. - - TYPES: BEGIN OF lty_page_setup, - id TYPE string, - orientation TYPE string, - scale TYPE string, - fittoheight TYPE string, - fittowidth TYPE string, - END OF lty_page_setup. - - TYPES: BEGIN OF lty_sheetformatpr, - customheight TYPE string, - defaultrowheight TYPE string, - customwidth TYPE string, - defaultcolwidth TYPE string, - END OF lty_sheetformatpr. - - TYPES: BEGIN OF lty_headerfooter, - alignwithmargins TYPE string, - differentoddeven TYPE string, - END OF lty_headerfooter. - - TYPES: BEGIN OF lty_tabcolor, - rgb TYPE string, - theme TYPE string, - END OF lty_tabcolor. - - TYPES: BEGIN OF lty_datavalidation, - type TYPE zexcel_data_val_type, - allowblank TYPE flag, - showinputmessage TYPE flag, - showerrormessage TYPE flag, - showdropdown TYPE flag, - operator TYPE zexcel_data_val_operator, - formula1 TYPE zexcel_validation_formula1, - formula2 TYPE zexcel_validation_formula1, - sqref TYPE string, - cell_column TYPE zexcel_cell_column_alpha, - cell_column_to TYPE zexcel_cell_column_alpha, - cell_row TYPE zexcel_cell_row, - cell_row_to TYPE zexcel_cell_row, - error TYPE string, - errortitle TYPE string, - prompt TYPE string, - prompttitle TYPE string, - errorstyle TYPE zexcel_data_val_error_style, - END OF lty_datavalidation. - - - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1', - lc_rel_drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_rel_hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', - lc_rel_printer TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings'. - - DATA: lo_ixml_worksheet TYPE REF TO if_ixml_document, - lo_ixml_cells TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, - lo_ixml_row_elem TYPE REF TO if_ixml_element, - lo_ixml_cell_elem TYPE REF TO if_ixml_element, - ls_cell TYPE lty_cell, - lv_index TYPE i, - lo_ixml_value_elem TYPE REF TO if_ixml_element, - lo_ixml_formula_elem TYPE REF TO if_ixml_element, - lv_cell_value TYPE zexcel_cell_value, - lv_cell_formula TYPE zexcel_cell_formula, - lv_cell_column TYPE zexcel_cell_column_alpha, - lv_cell_row TYPE zexcel_cell_row, - lo_excel_style TYPE REF TO zcl_excel_style, - lv_style_guid TYPE zexcel_cell_style, - - lo_ixml_imension_elem TYPE REF TO if_ixml_element, "#+234 - lv_dimension_range TYPE string, "#+234 - - lo_ixml_sheetview_elem TYPE REF TO if_ixml_element, - ls_sheetview TYPE lty_sheetview, - lo_ixml_pane_elem TYPE REF TO if_ixml_element, - ls_excel_pane TYPE zexcel_pane, - lv_pane_cell_row TYPE zexcel_cell_row, - lv_pane_cell_col_a TYPE zexcel_cell_column_alpha, - lv_pane_cell_col TYPE zexcel_cell_column, - - lo_ixml_mergecells TYPE REF TO if_ixml_node_collection, - lo_ixml_mergecell_elem TYPE REF TO if_ixml_element, - ls_mergecell TYPE lty_mergecell, - lv_merge_column_start TYPE zexcel_cell_column_alpha, - lv_merge_column_end TYPE zexcel_cell_column_alpha, - lv_merge_row_start TYPE zexcel_cell_row, - lv_merge_row_end TYPE zexcel_cell_row, - - lo_ixml_sheetformatpr_elem TYPE REF TO if_ixml_element, - ls_sheetformatpr TYPE lty_sheetformatpr, - lv_height TYPE float, - - lo_ixml_headerfooter_elem TYPE REF TO if_ixml_element, - ls_headerfooter TYPE lty_headerfooter, - ls_odd_header TYPE zexcel_s_worksheet_head_foot, - ls_odd_footer TYPE zexcel_s_worksheet_head_foot, - ls_even_header TYPE zexcel_s_worksheet_head_foot, - ls_even_footer TYPE zexcel_s_worksheet_head_foot, - lo_ixml_hf_value_elem TYPE REF TO if_ixml_element, - - lo_ixml_pagesetup_elem TYPE REF TO if_ixml_element, - lo_ixml_sheetpr TYPE REF TO if_ixml_element, - lv_fit_to_page TYPE string, - ls_pagesetup TYPE lty_page_setup, - - lo_ixml_columns TYPE REF TO if_ixml_node_collection, - lo_ixml_column_elem TYPE REF TO if_ixml_element, - ls_column TYPE lty_column, - lv_column_alpha TYPE zexcel_cell_column_alpha, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_outline_level TYPE int4, - - lo_ixml_tabcolor TYPE REF TO if_ixml_element, - ls_tabcolor TYPE lty_tabcolor, - ls_excel_s_tabcolor TYPE zexcel_s_tabcolor, - - lo_ixml_rows TYPE REF TO if_ixml_node_collection, - ls_row TYPE lty_row, - lv_max_col TYPE i, "for use with SPANS element -* lv_min_col TYPE i, "for use with SPANS element " not in use currently - lv_max_col_s TYPE char10, "for use with SPANS element - lv_min_col_s TYPE char10, "for use with SPANS element - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, -*--- End of current code aligning ------------------------------------------------------------------- - - lv_path TYPE string, - lo_ixml_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_ixml_rels_worksheet TYPE REF TO if_ixml_document, - lv_rels_worksheet_path TYPE string, - lv_stripped_name TYPE chkfile, - lv_dirname TYPE string, - - lt_external_hyperlinks TYPE gtt_external_hyperlinks, - ls_external_hyperlink LIKE LINE OF lt_external_hyperlinks, - - lo_ixml_datavalidations TYPE REF TO if_ixml_node_collection, - lo_ixml_datavalidation_elem TYPE REF TO if_ixml_element, - ls_datavalidation TYPE lty_datavalidation, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_datavalidation_range TYPE string, - lt_datavalidation_range TYPE TABLE OF string. - -*--------------------------------------------------------------------* -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets -*--------------------------------------------------------------------* - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = lv_stripped_name - file_path = lv_dirname. - CONCATENATE lv_dirname '_rels/' lv_stripped_name '.rels' - INTO lv_rels_worksheet_path. - TRY. " +#222 _rels/xxx.rels might not be present. If not found there can be no drawings --> just ignore this section - lo_ixml_rels_worksheet = me->get_ixml_from_zip_archive( lv_rels_worksheet_path ). - lo_ixml_node ?= lo_ixml_rels_worksheet->find_from_name( 'Relationship' ). - CATCH zcx_excel. "#EC NO_HANDLER +#222 - " +#222 No errorhandling necessary - node will be unbound if error occurs - ENDTRY. " +#222 - WHILE lo_ixml_node IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_node - CHANGING - cp_structure = ls_relationship ). - CONCATENATE lv_dirname ls_relationship-target INTO lv_path. - lv_path = resolve_path( lv_path ). - - CASE ls_relationship-type. - WHEN lc_rel_drawing. - " Read Drawings -* Issue # 339 Not all drawings are in the path mentioned below. -* Some Excel elements like textfields (which we don't support ) have a drawing-part in the relationsships -* but no "xl/drawings/_rels/drawing____.xml.rels" part. -* Since we don't support these there is no need to read them. Catching exceptions thrown -* in the "load_worksheet_drawing" shouldn't lead to an abortion of the reading - TRY. - me->load_worksheet_drawing( ip_path = lv_path - io_worksheet = io_worksheet ). - CATCH zcx_excel. "--> then ignore it - ENDTRY. - - WHEN lc_rel_printer. - " Read Printer settings - - WHEN lc_rel_hyperlink. - MOVE-CORRESPONDING ls_relationship TO ls_external_hyperlink. - INSERT ls_external_hyperlink INTO TABLE lt_external_hyperlinks. - - WHEN OTHERS. - ENDCASE. - - lo_ixml_node ?= lo_ixml_node->get_next( ). - ENDWHILE. - - - lo_ixml_worksheet = me->get_ixml_from_zip_archive( ip_path ). - - - lo_ixml_tabcolor ?= lo_ixml_worksheet->find_from_name( 'tabColor' ). - IF lo_ixml_tabcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_tabcolor - CHANGING - cp_structure = ls_tabcolor ). -* Theme not supported yet - IF ls_tabcolor-rgb IS NOT INITIAL. - ls_excel_s_tabcolor-rgb = ls_tabcolor-rgb. - io_worksheet->set_tabcolor( ls_excel_s_tabcolor ). - ENDIF. - ENDIF. - - lo_ixml_rows = lo_ixml_worksheet->get_elements_by_tag_name( name = 'row' ). - lo_ixml_iterator = lo_ixml_rows->create_iterator( ). - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_row_elem IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_row_elem - CHANGING - cp_structure = ls_row ). - SPLIT ls_row-spans AT ':' INTO lv_min_col_s lv_max_col_s. - lv_index = lv_max_col_s. - IF lv_index > lv_max_col. - lv_max_col = lv_index. - ENDIF. - lv_cell_row = ls_row-r. - IF ls_row-customheight = '1' - OR ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int - OR ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int - OR ls_row-outlinelevel > '0'. - lo_row_dimension = io_worksheet->get_row_dimension( lv_cell_row ). - IF ls_row-customheight = '1'. - lo_row_dimension->set_row_height( ls_row-ht ). - ENDIF. - - IF ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int. - lo_row_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int. - lo_row_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_row-outlinelevel > ''. -* outline_level = condense( row-outlineLevel ). "For basis 7.02 and higher - CONDENSE ls_row-outlinelevel. - lv_outline_level = ls_row-outlinelevel. - IF lv_outline_level > 0. - lo_row_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - ENDIF. - - lo_ixml_cells = lo_ixml_row_elem->get_elements_by_tag_name( name = 'c' ). - lo_ixml_iterator2 = lo_ixml_cells->create_iterator( ). - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - WHILE lo_ixml_cell_elem IS BOUND. - CLEAR: lv_cell_value, - lv_cell_formula, - lv_style_guid. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_cell_elem CHANGING cp_structure = ls_cell ). - - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'v' ). - - CASE ls_cell-t. - WHEN 's'. " String values are stored as index in shared string table - lv_index = lo_ixml_value_elem->get_value( ) + 1. - READ TABLE shared_strings INTO lv_cell_value INDEX lv_index. - WHEN 'inlineStr'. " inlineStr values are kept in special node - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'is' ). - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - WHEN OTHERS. "other types are stored directly - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - ENDCASE. - - CLEAR lv_style_guid. - "read style based on index - IF ls_cell-s IS NOT INITIAL. - lv_index = ls_cell-s + 1. - READ TABLE styles INTO lo_excel_style INDEX lv_index. - IF sy-subrc = 0. - lv_style_guid = lo_excel_style->get_guid( ). - ENDIF. - ENDIF. - - lo_ixml_formula_elem = lo_ixml_cell_elem->find_from_name( name = 'f' ). - IF lo_ixml_formula_elem IS BOUND. - lv_cell_formula = lo_ixml_formula_elem->get_value( ). -*--------------------------------------------------------------------* -* Begin of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - DATA: BEGIN OF ls_formula_attributes, - ref TYPE string, - si TYPE i, - t TYPE string, - END OF ls_formula_attributes, - ls_ref_formula TYPE ty_ref_formulae. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_formula_elem CHANGING cp_structure = ls_formula_attributes ). - IF ls_formula_attributes-t = 'shared'. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - - TRY. - CLEAR ls_ref_formula. - ls_ref_formula-sheet = io_worksheet. - ls_ref_formula-row = lv_cell_row. - ls_ref_formula-column = zcl_excel_common=>convert_column2int( lv_cell_column ). - ls_ref_formula-si = ls_formula_attributes-si. - ls_ref_formula-ref = ls_formula_attributes-ref. - ls_ref_formula-formula = lv_cell_formula. - INSERT ls_ref_formula INTO TABLE me->mt_ref_formulae. - CATCH cx_root. - BREAK-POINT. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* End of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - ENDIF. - - IF lv_cell_value IS NOT INITIAL - OR lv_cell_formula IS NOT INITIAL - OR lv_style_guid IS NOT INITIAL. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - io_worksheet->set_cell( ip_column = lv_cell_column " cell_elem Column - ip_row = lv_cell_row " cell_elem row_elem - ip_value = lv_cell_value " cell_elem Value - ip_formula = lv_cell_formula - ip_data_type = ls_cell-t - ip_style = lv_style_guid ). - ENDIF. - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - ENDWHILE. - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -*--------------------------------------------------------------------* -*#234 - column width not read correctly - begin of coding -* reason - libre office doesn't use SPAN in row - definitions -*--------------------------------------------------------------------* - IF lv_max_col = 0. - lo_ixml_imension_elem = lo_ixml_worksheet->find_from_name( name = 'dimension' ). - IF lo_ixml_imension_elem IS BOUND. - lv_dimension_range = lo_ixml_imension_elem->get_attribute( 'ref' ). - IF lv_dimension_range CS ':'. - REPLACE REGEX '\D+\d+:(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ELSE. - REPLACE REGEX '(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ENDIF. - lv_max_col = zcl_excel_common=>convert_column2int( lv_dimension_range ). - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -*#234 - column width not read correctly - end of coding -*--------------------------------------------------------------------* - - "Get the customized column width - lo_ixml_columns = lo_ixml_worksheet->get_elements_by_tag_name( name = 'col' ). - lo_ixml_iterator = lo_ixml_columns->create_iterator( ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_column_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_column_elem - CHANGING - cp_structure = ls_column ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int - OR ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int - OR ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int - OR ls_column-outlinelevel > '' - OR ls_column-style > ''. - lv_index = ls_column-min. - WHILE lv_index <= ls_column-max AND lv_index <= lv_max_col. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_index ). - lo_column_dimension = io_worksheet->get_column_dimension( lv_column_alpha ). - - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-width IS NOT INITIAL. "+#234 - lo_column_dimension->set_width( ls_column-width ). - ENDIF. - - IF ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int. - lo_column_dimension->set_auto_size( abap_true ). - ENDIF. - - IF ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int. - lo_column_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int. - lo_column_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_column-outlinelevel > ''. -* outline_level = condense( column-outlineLevel ). - CONDENSE ls_column-outlinelevel. - lv_outline_level = ls_column-outlinelevel. - IF lv_outline_level > 0. - lo_column_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - - IF ls_column-style > ''. - sy-index = ls_column-style + 1. - READ TABLE styles INTO lo_excel_style INDEX sy-index. - DATA: dummy_zexcel_cell_style TYPE zexcel_cell_style. - dummy_zexcel_cell_style = lo_excel_style->get_guid( ). - lo_column_dimension->set_column_style_by_guid( dummy_zexcel_cell_style ). - ENDIF. - - ADD 1 TO lv_index. - ENDWHILE. - ENDIF. - -* issue #367 - hide columns from - IF ls_column-max = zcl_excel_common=>c_excel_sheet_max_col. " Max = very right column - IF ls_column-hidden = 1 " all hidden - AND ls_column-min > 0. - io_worksheet->zif_excel_sheet_properties~hide_columns_from = zcl_excel_common=>convert_column2alpha( ls_column-min ). - ELSEIF ls_column-style > ''. -* Set default style for remaining columns - io_worksheet->zif_excel_sheet_properties~set_style( dummy_zexcel_cell_style ). - ENDIF. - ENDIF. - - - ENDWHILE. - - "Now we need to get information from the sheetView node - lo_ixml_sheetview_elem = lo_ixml_worksheet->find_from_name( name = 'sheetView' ). - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetview_elem CHANGING cp_structure = ls_sheetview ). - IF ls_sheetview-showgridlines IS INITIAL OR - ls_sheetview-showgridlines = lc_xml_attr_true OR - ls_sheetview-showgridlines = lc_xml_attr_true_int. - "If the attribute is not specified or set to true, we will show grid lines - ls_sheetview-showgridlines = abap_true. - ELSE. - ls_sheetview-showgridlines = abap_false. - ENDIF. - io_worksheet->set_show_gridlines( ls_sheetview-showgridlines ). - - - "Add merge cell information - lo_ixml_mergecells = lo_ixml_worksheet->get_elements_by_tag_name( name = 'mergeCell' ). - lo_ixml_iterator = lo_ixml_mergecells->create_iterator( ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_mergecell_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_mergecell_elem - CHANGING - cp_structure = ls_mergecell ). - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = ls_mergecell-ref - IMPORTING - e_column_start = lv_merge_column_start - e_column_end = lv_merge_column_end - e_row_start = lv_merge_row_start - e_row_end = lv_merge_row_end ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - io_worksheet->set_merge( EXPORTING - ip_column_start = lv_merge_column_start - ip_column_end = lv_merge_column_end - ip_row = lv_merge_row_start - ip_row_to = lv_merge_row_end ). - ENDWHILE. - - " read sheet format properties - lo_ixml_sheetformatpr_elem = lo_ixml_worksheet->find_from_name( 'sheetFormatPr' ). - IF lo_ixml_sheetformatpr_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetformatpr_elem CHANGING cp_structure = ls_sheetformatpr ). - IF ls_sheetformatpr-customheight = '1'. - lv_height = ls_sheetformatpr-defaultrowheight. - lo_row_dimension = io_worksheet->get_default_row_dimension( ). - lo_row_dimension->set_row_height( lv_height ). - ENDIF. - - " TODO... column - ENDIF. - - " Read in page margins - me->load_worksheet_pagemargins( EXPORTING - io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - -* FitToPage - lo_ixml_sheetpr ?= lo_ixml_worksheet->find_from_name( 'pageSetUpPr' ). - IF lo_ixml_sheetpr IS BOUND. - - lv_fit_to_page = lo_ixml_sheetpr->get_attribute_ns( 'fitToPage' ). - IF lv_fit_to_page IS NOT INITIAL. - io_worksheet->sheet_setup->fit_to_page = 'X'. - ENDIF. - ENDIF. - " Read in page setup - lo_ixml_pagesetup_elem = lo_ixml_worksheet->find_from_name( 'pageSetup' ). - IF lo_ixml_pagesetup_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagesetup_elem - CHANGING - cp_structure = ls_pagesetup ). - io_worksheet->sheet_setup->orientation = ls_pagesetup-orientation. - io_worksheet->sheet_setup->scale = ls_pagesetup-scale. - IF io_worksheet->sheet_setup->fit_to_page = 'X'. - IF ls_pagesetup-fittowidth IS NOT INITIAL. - io_worksheet->sheet_setup->fit_to_width = ls_pagesetup-fittowidth. - ELSE. - io_worksheet->sheet_setup->fit_to_width = 1. " Default if not given - Excel doesn't write this to xml - ENDIF. - IF ls_pagesetup-fittoheight IS NOT INITIAL. - io_worksheet->sheet_setup->fit_to_height = ls_pagesetup-fittoheight. - ELSE. - io_worksheet->sheet_setup->fit_to_height = 1. " Default if not given - Excel doesn't write this to xml - ENDIF. - ENDIF. - ENDIF. - - - - " Read header footer - lo_ixml_headerfooter_elem = lo_ixml_worksheet->find_from_name( 'headerFooter' ). - IF lo_ixml_headerfooter_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_headerfooter_elem CHANGING cp_structure = ls_headerfooter ). - io_worksheet->sheet_setup->diff_oddeven_headerfooter = ls_headerfooter-differentoddeven. - - lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name( 'oddFooter' ). - IF lo_ixml_hf_value_elem IS NOT INITIAL. - ls_odd_footer-left_value = lo_ixml_hf_value_elem->get_value( ). - ENDIF. - -* 2do§1 Header/footer - " TODO.. get the rest. - - io_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_odd_header - ip_odd_footer = ls_odd_footer - ip_even_header = ls_even_header - ip_even_footer = ls_even_footer ). - - ENDIF. - - " Start fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - " Read pane - lo_ixml_pane_elem = lo_ixml_sheetview_elem->find_from_name( name = 'pane' ). - IF lo_ixml_pane_elem IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_pane_elem CHANGING cp_structure = ls_excel_pane ). - " Issue #194 - " Replace REGEX with method from the common class - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_excel_pane-topleftcell - IMPORTING - e_column = lv_pane_cell_col_a " Cell Column - e_row = lv_pane_cell_row ). " Natural number - lv_pane_cell_col = zcl_excel_common=>convert_column2int( lv_pane_cell_col_a ). - SUBTRACT 1 FROM: lv_pane_cell_col, - lv_pane_cell_row. - IF lv_pane_cell_col > 0 - AND lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row - ip_num_columns = lv_pane_cell_col ). - ELSEIF lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row ). - ELSE. - io_worksheet->freeze_panes( ip_num_columns = lv_pane_cell_col ). - ENDIF. - ENDIF. - " End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - - " Start fix 276 Read data validations - lo_ixml_datavalidations = lo_ixml_worksheet->get_elements_by_tag_name( name = 'dataValidation' ). - lo_ixml_iterator = lo_ixml_datavalidations->create_iterator( ). - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_datavalidation_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_datavalidation_elem - CHANGING - cp_structure = ls_datavalidation ). - CLEAR lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula1' ). - IF lo_ixml_formula_elem IS BOUND. - ls_datavalidation-formula1 = lo_ixml_formula_elem->get_value( ). - ENDIF. - CLEAR lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula2' ). - IF lo_ixml_formula_elem IS BOUND. - ls_datavalidation-formula2 = lo_ixml_formula_elem->get_value( ). - ENDIF. - SPLIT ls_datavalidation-sqref AT space INTO TABLE lt_datavalidation_range. - LOOP AT lt_datavalidation_range INTO lv_datavalidation_range. - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_datavalidation_range - IMPORTING - e_column_start = ls_datavalidation-cell_column - e_column_end = ls_datavalidation-cell_column_to - e_row_start = ls_datavalidation-cell_row - e_row_end = ls_datavalidation-cell_row_to ). - lo_data_validation = io_worksheet->add_new_data_validation( ). - lo_data_validation->type = ls_datavalidation-type. - lo_data_validation->allowblank = ls_datavalidation-allowblank. - lo_data_validation->showinputmessage = ls_datavalidation-showinputmessage. - lo_data_validation->showerrormessage = ls_datavalidation-showerrormessage. - lo_data_validation->showdropdown = ls_datavalidation-showdropdown. - lo_data_validation->operator = ls_datavalidation-operator. - lo_data_validation->formula1 = ls_datavalidation-formula1. - lo_data_validation->formula2 = ls_datavalidation-formula2. - lo_data_validation->prompttitle = ls_datavalidation-prompttitle. - lo_data_validation->prompt = ls_datavalidation-prompt. - lo_data_validation->errortitle = ls_datavalidation-errortitle. - lo_data_validation->error = ls_datavalidation-error. - lo_data_validation->errorstyle = ls_datavalidation-errorstyle. - lo_data_validation->cell_row = ls_datavalidation-cell_row. - lo_data_validation->cell_row_to = ls_datavalidation-cell_row_to. - lo_data_validation->cell_column = ls_datavalidation-cell_column. - lo_data_validation->cell_column_to = ls_datavalidation-cell_column_to. - ENDLOOP. - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - " End fix 276 Read data validations - - " Read hyperlinks - TRY. - me->load_worksheet_hyperlinks( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet - it_external_hyperlinks = lt_external_hyperlinks ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - TRY. - me->fill_row_outlines( io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - " Issue #366 - conditional formatting - TRY. - me->load_worksheet_cond_format( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - " Issue #377 - pagebreaks - TRY. - me->load_worksheet_pagebreaks( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore pagebreak reading errors - pass everything we were able to identify - ENDTRY. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_cond_format. - - DATA: lo_ixml_cond_formats TYPE REF TO if_ixml_node_collection, - lo_ixml_cond_format TYPE REF TO if_ixml_element, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_rules TYPE REF TO if_ixml_node_collection, - lo_ixml_rule TYPE REF TO if_ixml_element, - lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional. - - - DATA: lv_area TYPE string, - lt_areas TYPE STANDARD TABLE OF string WITH NON-UNIQUE DEFAULT KEY, - lv_area_start_row TYPE zexcel_cell_row, - lv_area_end_row TYPE zexcel_cell_row, - lv_area_start_col TYPE zexcel_cell_column_alpha, - lv_area_end_col TYPE zexcel_cell_column_alpha, - lv_rule TYPE zexcel_condition_rule. - - -* FIELD-SYMBOLS: <ls_external_hyperlink> LIKE LINE OF it_external_hyperlinks. - - lo_ixml_cond_formats = io_ixml_worksheet->get_elements_by_tag_name( name = 'conditionalFormatting' ). - lo_ixml_iterator = lo_ixml_cond_formats->create_iterator( ). - lo_ixml_cond_format ?= lo_ixml_iterator->get_next( ). - - WHILE lo_ixml_cond_format IS BOUND. - - CLEAR: lv_area, - lo_ixml_rule, - lo_style_conditional. - - -*--------------------------------------------------------------------* -* Get type of rule -*--------------------------------------------------------------------* - lo_ixml_rules = io_ixml_worksheet->get_elements_by_tag_name( name = 'cfRule' ). - lo_ixml_iterator2 = lo_ixml_rules->create_iterator( ). - lo_ixml_rule ?= lo_ixml_iterator2->get_next( ). -* IF lo_ixml_rule IS BOUND. - WHILE lo_ixml_rule IS BOUND. - lv_rule = lo_ixml_rule->get_attribute_ns( 'type' ). - CLEAR lo_style_conditional. - -*--------------------------------------------------------------------* -* Depending on ruletype get additional information -*--------------------------------------------------------------------* - CASE lv_rule. - - WHEN zcl_excel_style_conditional=>c_rule_cellis. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_ci( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - -* WHEN zcl_excel_style_conditional=>c_rule_containstext. -* - WHEN zcl_excel_style_conditional=>c_rule_databar. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_db( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_expression. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_ex( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_is( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_cs( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_top10. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_t10( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_above_average. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_aa( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - -* WHEN zcl_excel_style_conditional=>c_rule_none. -* - - WHEN OTHERS. - ENDCASE. -* ENDIF. - - IF lo_style_conditional IS BOUND. - lo_style_conditional->rule = lv_rule. - lo_style_conditional->priority = lo_ixml_rule->get_attribute_ns( 'priority' ). -*--------------------------------------------------------------------* -* Set area to which conditional formatting belongs -*--------------------------------------------------------------------* - lv_area = lo_ixml_cond_format->get_attribute_ns( 'sqref' ). - SPLIT lv_area AT space INTO TABLE lt_areas. - DELETE lt_areas WHERE table_line IS INITIAL. - LOOP AT lt_areas INTO lv_area. -* IF sy-tabix = 1. " Add futher style for next area -* lo_style_conditional2 = lo_style_conditional. -* ELSE. -* lo_style_conditional2 = io_worksheet->add_new_conditional_style( ). -* lo_style_conditional2->mode_cellis = lo_style_conditional->mode_cellis . -* lo_style_conditional2->mode_colorscale = lo_style_conditional->mode_colorscale . -* lo_style_conditional2->mode_databar = lo_style_conditional->mode_databar . -* lo_style_conditional2->mode_expression = lo_style_conditional->mode_expression . -* lo_style_conditional2->mode_iconset = lo_style_conditional->mode_iconset . -* lo_style_conditional2->mode_top10 = lo_style_conditional->mode_top10 . -* lo_style_conditional2->mode_above_average = lo_style_conditional->mode_above_average. -* lo_style_conditional2->priority = lo_style_conditional->priority . -* lo_style_conditional2->rule = lo_style_conditional->rule . -* ENDIF. - - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_area - IMPORTING - e_column_start = lv_area_start_col - e_column_end = lv_area_end_col - e_row_start = lv_area_start_row - e_row_end = lv_area_end_row ). -* lo_style_conditional2->set_range( ip_start_column = lv_area_start_col -* ip_stop_column = lv_area_end_col -* ip_start_row = lv_area_start_row -* ip_stop_row = lv_area_end_row ). - lo_style_conditional->add_range( ip_start_column = lv_area_start_col - ip_stop_column = lv_area_end_col - ip_start_row = lv_area_start_row - ip_stop_row = lv_area_end_row ). - ENDLOOP. - - ENDIF. - lo_ixml_rule ?= lo_ixml_iterator2->get_next( ). - ENDWHILE. - - - lo_ixml_cond_format ?= lo_ixml_iterator->get_next( ). - - ENDWHILE. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_aa. - DATA: lv_dxf_style_index TYPE i, - val TYPE string. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - -*--------------------------------------------------------------------* -* above or below average -*--------------------------------------------------------------------* - val = io_ixml_rule->get_attribute_ns( 'aboveAverage' ). - IF val = '0'. " 0 = below average - io_style_conditional->mode_above_average-above_average = space. - ELSE. - io_style_conditional->mode_above_average-above_average = 'X'. " Not present or <> 0 --> we use above average - ENDIF. - -*--------------------------------------------------------------------* -* Equal average also? -*--------------------------------------------------------------------* - CLEAR val. - val = io_ixml_rule->get_attribute_ns( 'equalAverage' ). - IF val = '1'. " 0 = below average - io_style_conditional->mode_above_average-equal_average = 'X'. - ELSE. - io_style_conditional->mode_above_average-equal_average = ' '. " Not present or <> 1 --> we use not equal average - ENDIF. - -*--------------------------------------------------------------------* -* Standard deviation instead of value ( 2nd stddev, 3rd stdev ) -*--------------------------------------------------------------------* - CLEAR val. - val = io_ixml_rule->get_attribute_ns( 'stdDev' ). - CASE val. - WHEN 1 - OR 2 - OR 3. " These seem to be supported by excel - don't try anything more - io_style_conditional->mode_above_average-standard_deviation = val. - ENDCASE. - -*--------------------------------------------------------------------* -* Cell formatting for top10 -*--------------------------------------------------------------------* - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_above_average-cell_style = <ls_dxf_style>-guid. - ENDIF. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_ci. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element, - lv_dxf_style_index TYPE i, - lo_excel_style LIKE LINE OF me->styles. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - - io_style_conditional->mode_cellis-operator = io_ixml_rule->get_attribute_ns( 'operator' ). - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_cellis-cell_style = <ls_dxf_style>-guid. - ENDIF. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'formula' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_cellis-formula = lo_ixml->get_value( ). - - WHEN 2. - io_style_conditional->mode_cellis-formula2 = lo_ixml->get_value( ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_cs. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element. - - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'cfvo' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_colorscale-cfvo1_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_colorscale-cfvo1_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 2. - io_style_conditional->mode_colorscale-cfvo2_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_colorscale-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 3. - io_style_conditional->mode_colorscale-cfvo3_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_colorscale-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'color' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_colorscale-colorrgb1 = lo_ixml->get_attribute_ns( 'rgb' ). - - WHEN 2. - io_style_conditional->mode_colorscale-colorrgb2 = lo_ixml->get_attribute_ns( 'rgb' ). - - WHEN 3. - io_style_conditional->mode_colorscale-colorrgb3 = lo_ixml->get_attribute_ns( 'rgb' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_db. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element. - - lo_ixml ?= io_ixml_rule->find_from_name( 'color' ). - IF lo_ixml IS BOUND. - io_style_conditional->mode_databar-colorrgb = lo_ixml->get_attribute_ns( 'rgb' ). - ENDIF. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'cfvo' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_databar-cfvo1_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_databar-cfvo1_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 2. - io_style_conditional->mode_databar-cfvo2_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_databar-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_ex. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element, - lv_dxf_style_index TYPE i, - lo_excel_style LIKE LINE OF me->styles. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_expression-cell_style = <ls_dxf_style>-guid. - ENDIF. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'formula' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_expression-formula = lo_ixml->get_value( ). - - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_is. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element, - lo_ixml_rule_iconset TYPE REF TO if_ixml_element. - - lo_ixml_rule_iconset ?= io_ixml_rule->get_first_child( ). - io_style_conditional->mode_iconset-iconset = lo_ixml_rule_iconset->get_attribute_ns( 'iconSet' ). - io_style_conditional->mode_iconset-showvalue = lo_ixml_rule_iconset->get_attribute_ns( 'showValue' ). - lo_ixml_nodes ?= lo_ixml_rule_iconset->get_elements_by_tag_name( 'cfvo' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_iconset-cfvo1_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo1_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 2. - io_style_conditional->mode_iconset-cfvo2_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 3. - io_style_conditional->mode_iconset-cfvo3_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo3_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 4. - io_style_conditional->mode_iconset-cfvo4_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo4_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 5. - io_style_conditional->mode_iconset-cfvo5_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo5_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_t10. - DATA: lv_dxf_style_index TYPE i. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - - io_style_conditional->mode_top10-topxx_count = io_ixml_rule->get_attribute_ns( 'rank' ). " Top10, Top20, Top 50... - - io_style_conditional->mode_top10-percent = io_ixml_rule->get_attribute_ns( 'percent' ). " Top10 percent instead of Top10 values - if io_style_conditional->mode_top10-percent = '1'. - io_style_conditional->mode_top10-percent = 'X'. - else. - io_style_conditional->mode_top10-percent = ' '. - endif. - - io_style_conditional->mode_top10-bottom = io_ixml_rule->get_attribute_ns( 'bottom' ). " Bottom10 instead of Top10 - if io_style_conditional->mode_top10-bottom = '1'. - io_style_conditional->mode_top10-bottom = 'X'. - else. - io_style_conditional->mode_top10-bottom = ' '. - endif. -*--------------------------------------------------------------------* -* Cell formatting for top10 -*--------------------------------------------------------------------* - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_top10-cell_style = <ls_dxf_style>-guid. - ENDIF. - -ENDMETHOD. - - - - - - method LOAD_WORKSHEET_DRAWING. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: drawing TYPE REF TO if_ixml_document, - anchors TYPE REF TO if_ixml_node_collection, - node TYPE REF TO if_ixml_element, - coll_length TYPE i, - iterator TYPE REF TO if_ixml_node_iterator, - anchor_elem TYPE REF TO if_ixml_element, - - relationship TYPE t_relationship, - rel_drawings TYPE t_rel_drawings, - rel_drawing TYPE t_rel_drawing, - rels_drawing TYPE REF TO if_ixml_document, - rels_drawing_path TYPE string, - stripped_name TYPE chkfile, - dirname TYPE string, - - path TYPE string, - path2 TYPE text255, - file_ext2 TYPE char10. - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = stripped_name - file_path = dirname. - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_drawing_path. - rels_drawing_path = resolve_path( rels_drawing_path ). - rels_drawing = me->get_ixml_from_zip_archive( rels_drawing_path ). - node ?= rels_drawing->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - rel_drawing-id = relationship-id. - - CONCATENATE dirname relationship-target INTO path. - path = resolve_path( path ). - rel_drawing-content = me->get_from_zip_archive( path ). "------------> This is for template usage - - path2 = path. - zcl_excel_common=>split_file( EXPORTING ip_file = path2 - IMPORTING ep_extension = file_ext2 ). - rel_drawing-file_ext = file_ext2. - - "-------------Added by Alessandro Iannacci - Should load graph xml - CASE relationship-type. - WHEN lc_rel_chart. - "Read chart xml - rel_drawing-content_xml = me->get_ixml_from_zip_archive( path ). - WHEN OTHERS. - ENDCASE. - "---------------------------- - - - APPEND rel_drawing TO rel_drawings. - - node ?= node->get_next( ). - ENDWHILE. - - drawing = me->get_ixml_from_zip_archive( ip_path ). - -* one-cell anchor ************** - anchors = drawing->get_elements_by_tag_name( name = 'oneCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - -* two-cell anchor ****************** - anchors = drawing->get_elements_by_tag_name( name = 'twoCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - - endmethod. - - - - - - - METHOD load_worksheet_hyperlinks. - - DATA: lo_ixml_hyperlinks TYPE REF TO if_ixml_node_collection, - lo_ixml_hyperlink TYPE REF TO if_ixml_element, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lv_row TYPE zexcel_cell_row, - lv_column TYPE zexcel_cell_column_alpha, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lv_value TYPE zexcel_cell_value. - - DATA: BEGIN OF ls_hyperlink, - ref TYPE string, - display TYPE string, - location TYPE string, - tooltip TYPE string, - r_id TYPE string, - END OF ls_hyperlink. - - FIELD-SYMBOLS: <ls_external_hyperlink> LIKE LINE OF it_external_hyperlinks. - - lo_ixml_hyperlinks = io_ixml_worksheet->get_elements_by_tag_name( name = 'hyperlink' ). - lo_ixml_iterator = lo_ixml_hyperlinks->create_iterator( ). - lo_ixml_hyperlink ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_hyperlink IS BOUND. - - CLEAR ls_hyperlink. - CLEAR lo_hyperlink. - - ls_hyperlink-ref = lo_ixml_hyperlink->get_attribute_ns( 'ref' ). - ls_hyperlink-display = lo_ixml_hyperlink->get_attribute_ns( 'display' ). - ls_hyperlink-location = lo_ixml_hyperlink->get_attribute_ns( 'location' ). - ls_hyperlink-tooltip = lo_ixml_hyperlink->get_attribute_ns( 'tooltip' ). - ls_hyperlink-r_id = lo_ixml_hyperlink->get_attribute( name = 'id' - namespace = 'r' ). - IF ls_hyperlink-r_id IS INITIAL. " Internal link - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = ls_hyperlink-location ). - ELSE. " External link - READ TABLE it_external_hyperlinks ASSIGNING <ls_external_hyperlink> WITH TABLE KEY id = ls_hyperlink-r_id. - IF sy-subrc = 0. - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = <ls_external_hyperlink>-target ). - ENDIF. - ENDIF. - IF lo_hyperlink IS BOUND. " because of unsupported external links - - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_hyperlink-ref - IMPORTING - e_row = lv_row - e_column = lv_column ). -* Currently it is not allowed to pass a hyperlink w/o text, but text has already been read. -* So just reread it and be done with it - io_worksheet->get_cell( EXPORTING - ip_column = lv_column - ip_row = lv_row - IMPORTING - ep_value = lv_value ). - io_worksheet->set_cell( ip_column = lv_column - ip_row = lv_row - ip_value = lv_value - ip_hyperlink = lo_hyperlink ). - ENDIF. - - lo_ixml_hyperlink ?= lo_ixml_iterator->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_pagebreaks. - - DATA: lo_node TYPE REF TO if_ixml_element, - lo_ixml_rowbreaks TYPE REF TO if_ixml_node_collection, - lo_ixml_colbreaks TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_rowbreak TYPE REF TO if_ixml_element, - lo_ixml_colbreak TYPE REF TO if_ixml_element, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_count TYPE i. - - - DATA: lt_pagebreaks TYPE STANDARD TABLE OF zcl_excel_worksheet_pagebreaks=>ts_pagebreak_at, - lo_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks. - - FIELD-SYMBOLS: <ls_pagebreak_row> LIKE LINE OF lt_pagebreaks. - FIELD-SYMBOLS: <ls_pagebreak_col> LIKE LINE OF lt_pagebreaks. - -*--------------------------------------------------------------------* -* Get minimal number of cells where to add pagebreaks -* Since rows and columns are handled in separate nodes -* Build table to identify these cells -*--------------------------------------------------------------------* - lo_node ?= io_ixml_worksheet->find_from_name( 'rowBreaks' ). - check lo_node is bound. - lo_ixml_rowbreaks = lo_node->get_elements_by_tag_name( name = 'brk' ). - lo_ixml_iterator = lo_ixml_rowbreaks->create_iterator( ). - lo_ixml_rowbreak ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_rowbreak IS BOUND. - APPEND INITIAL LINE TO lt_pagebreaks ASSIGNING <ls_pagebreak_row>. - <ls_pagebreak_row>-cell_row = lo_ixml_rowbreak->get_attribute_ns( 'id' ). - - lo_ixml_rowbreak ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - CHECK <ls_pagebreak_row> IS ASSIGNED. - - lo_node ?= io_ixml_worksheet->find_from_name( 'colBreaks' ). - check lo_node is bound. - lo_ixml_colbreaks = lo_node->get_elements_by_tag_name( name = 'brk' ). - lo_ixml_iterator = lo_ixml_colbreaks->create_iterator( ). - lo_ixml_colbreak ?= lo_ixml_iterator->get_next( ). - CLEAR lv_count. - WHILE lo_ixml_colbreak IS BOUND. - ADD 1 TO lv_count. - READ TABLE lt_pagebreaks INDEX lv_count ASSIGNING <ls_pagebreak_col>. - IF sy-subrc <> 0. - APPEND INITIAL LINE TO lt_pagebreaks ASSIGNING <ls_pagebreak_col>. - <ls_pagebreak_col>-cell_row = <ls_pagebreak_row>-cell_row. - ENDIF. - <ls_pagebreak_col>-cell_column = lo_ixml_colbreak->get_attribute_ns( 'id' ). - - lo_ixml_colbreak ?= lo_ixml_iterator->get_next( ). - ENDWHILE. -*--------------------------------------------------------------------* -* Finally add each pagebreak -*--------------------------------------------------------------------* - lo_pagebreaks = io_worksheet->get_pagebreaks( ). - LOOP AT lt_pagebreaks ASSIGNING <ls_pagebreak_row>. - lo_pagebreaks->add_pagebreak( ip_column = <ls_pagebreak_row>-cell_column - ip_row = <ls_pagebreak_row>-cell_row ). - ENDLOOP. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_pagemargins. - - TYPES: BEGIN OF lty_page_margins, - footer TYPE string, - header TYPE string, - bottom TYPE string, - top TYPE string, - right TYPE string, - left TYPE string, - END OF lty_page_margins. - - DATA:lo_ixml_pagemargins_elem TYPE REF TO if_ixml_element, - ls_pagemargins TYPE lty_page_margins. - - - lo_ixml_pagemargins_elem = io_ixml_worksheet->find_from_name( 'pageMargins' ). - IF lo_ixml_pagemargins_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagemargins_elem - CHANGING - cp_structure = ls_pagemargins ). - io_worksheet->sheet_setup->margin_bottom = zcl_excel_common=>excel_string_to_number( ls_pagemargins-bottom ). - io_worksheet->sheet_setup->margin_footer = zcl_excel_common=>excel_string_to_number( ls_pagemargins-footer ). - io_worksheet->sheet_setup->margin_header = zcl_excel_common=>excel_string_to_number( ls_pagemargins-header ). - io_worksheet->sheet_setup->margin_left = zcl_excel_common=>excel_string_to_number( ls_pagemargins-left ). - io_worksheet->sheet_setup->margin_right = zcl_excel_common=>excel_string_to_number( ls_pagemargins-right ). - io_worksheet->sheet_setup->margin_top = zcl_excel_common=>excel_string_to_number( ls_pagemargins-top ). - ENDIF. - -ENDMETHOD. - - - - - METHOD read_from_applserver. - - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_max_length_line TYPE i, - lv_actual_length_line TYPE i, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - DESCRIBE FIELD ls_binary_data LENGTH lv_max_length_line IN BYTE MODE. - OPEN DATASET lv_filename FOR INPUT IN BINARY MODE. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - WHILE sy-subrc = 0. - - READ DATASET lv_filename INTO ls_binary_data MAXIMUM LENGTH lv_max_length_line ACTUAL LENGTH lv_actual_length_line. - APPEND ls_binary_data TO lt_binary_data. - lv_filelength = lv_filelength + lv_actual_length_line. - - ENDWHILE. - CLOSE DATASET lv_filename. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - ENDMETHOD. - - - - - - METHOD read_from_local_file. - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - cl_gui_frontend_services=>gui_upload( EXPORTING - filename = lv_filename - filetype = 'BIN' " We are basically working with zipped directories --> force binary read - IMPORTING - filelength = lv_filelength - CHANGING - data_tab = lt_binary_data - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 ). - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - - ENDMETHOD. - - - - - method RESOLVE_PATH. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Determine whether the replacement should be done -* iterative to allow /../../.. or something alike -* 2do§2 Determine whether /./ has to be supported as well -* 2do§3 Create unit-test for this method -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: replaced previous coding by regular expression -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 This routine will receive a path, that may have a relative pathname (/../) included somewhere -* The output should be a resolved path without relative references -* Example: Input xl/worksheets/../drawings/drawing1.xml -* Output xl/drawings/drawing1.xml -*--------------------------------------------------------------------* - - rp_result = ip_path. -*--------------------------------------------------------------------* -* §1 Remove relative pathnames -*--------------------------------------------------------------------* -* Regular expression [^/]*/\.\./ -* [^/]* --> any number of characters other than / -* followed by /\.\./ --> the sequence /../ -* ==> worksheets/../ will be found in the example -*--------------------------------------------------------------------* - REPLACE REGEX '[^/]*/\.\./' IN rp_result WITH ``. - - - endmethod. - - - method RESOLVE_REFERENCED_FORMULAE. - TYPES: BEGIN OF ty_referenced_cells, - sheet TYPE REF TO zcl_excel_worksheet, - si TYPE i, - row_from TYPE i, - row_to TYPE i, - col_from TYPE i, - col_to TYPE i, - formula TYPE string, - ref_cell TYPE char10, - END OF ty_referenced_cells. - - DATA: ls_ref_formula LIKE LINE OF me->mt_ref_formulae, - lts_referenced_cells TYPE SORTED TABLE OF ty_referenced_cells WITH NON-UNIQUE KEY sheet si row_from row_to col_from col_to, - ls_referenced_cell LIKE LINE OF lts_referenced_cells, - lv_col_from TYPE zexcel_cell_column_alpha, - lv_col_to TYPE zexcel_cell_column_alpha, - lv_resulting_formula TYPE string, - lv_current_cell TYPE char10. - - - me->mt_ref_formulae = me->mt_ref_formulae. - -*--------------------------------------------------------------------* -* Get referenced Cells, Build ranges for easy lookup -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref <> space. - - CLEAR ls_referenced_cell. - ls_referenced_cell-sheet = ls_ref_formula-sheet. - ls_referenced_cell-si = ls_ref_formula-si. - ls_referenced_cell-formula = ls_ref_formula-formula. - - TRY. - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = ls_ref_formula-ref - IMPORTING e_column_start = lv_col_from - e_column_end = lv_col_to - e_row_start = ls_referenced_cell-row_from - e_row_end = ls_referenced_cell-row_to ). - ls_referenced_cell-col_from = zcl_excel_common=>convert_column2int( lv_col_from ). - ls_referenced_cell-col_to = zcl_excel_common=>convert_column2int( lv_col_to ). - - - CLEAR ls_referenced_cell-ref_cell. - TRY. - ls_referenced_cell-ref_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - ls_referenced_cell-ref_cell+3 = ls_ref_formula-row. - CONDENSE ls_referenced_cell-ref_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - INSERT ls_referenced_cell INTO TABLE lts_referenced_cells. - CATCH zcx_excel. - ENDTRY. - - ENDLOOP. - -* break x0009004. -*--------------------------------------------------------------------* -* For each referencing cell determine the referenced cell -* and resolve the formula -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref = space. - - - CLEAR lv_current_cell. - TRY. - lv_current_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - lv_current_cell+3 = ls_ref_formula-row. - CONDENSE lv_current_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - LOOP AT lts_referenced_cells INTO ls_referenced_cell WHERE sheet = ls_ref_formula-sheet - AND si = ls_ref_formula-si - AND row_from <= ls_ref_formula-row - AND row_to >= ls_ref_formula-row - AND col_from <= ls_ref_formula-column - AND col_to >= ls_ref_formula-column. - - TRY. - - lv_resulting_formula = zcl_excel_common=>determine_resulting_formula( iv_reference_cell = ls_referenced_cell-ref_cell - iv_reference_formula = ls_referenced_cell-formula - iv_current_cell = lv_current_cell ). - - ls_referenced_cell-sheet->set_cell_formula( ip_column = ls_ref_formula-column - ip_row = ls_ref_formula-row - ip_formula = lv_resulting_formula ). - CATCH zcx_excel. - ENDTRY. - EXIT. - - ENDLOOP. - - ENDLOOP. - endmethod. - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - -* Signal "not found" -class lcx_not_found implementation. - method constructor. - super->constructor( textid = textid previous = previous ). - me->error = error. - endmethod. "constructor - method if_message~get_text. - result = error. - endmethod. "if_message~get_text -endclass. "lcx_not_found IMPLEMENTATION - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - -* Signal for "Not found" -class lcx_not_found definition inheriting from cx_static_check. - public section. - data error type string. - methods constructor - importing error type string - textid type sotr_conc optional - previous type ref to cx_root optional. - methods if_message~get_text redefinition. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes -class lcl_test definition deferred. -class zcl_excel_reader_huge_file definition local friends lcl_test. - -* -class lcl_test definition for testing " #AU Risk_Level Harmless - inheriting from cl_aunit_assert. " #AU Duration Short - - private section. - data: - out type ref to zcl_excel_reader_huge_file, " object under test - excel type ref to zcl_excel, - worksheet type ref to zcl_excel_worksheet. - methods: - setup, - test_number for testing, - test_shared_string for testing, - test_shared_string_missing for testing, - test_inline_string for testing, - test_empty_cells for testing, - test_boolean for testing, - test_style for testing, - test_style_missing for testing, - test_formula for testing, - test_read_shared_strings for testing, - test_shared_string_some_empty for testing, - test_skip_to_inexistent for testing, - get_reader importing iv_xml type string returning value(eo_reader) type ref to if_sxml_reader, - assert_value_equals importing iv_row type i default 1 iv_col type i default 1 iv_value type string, - assert_formula_equals importing iv_row type i default 1 iv_col type i default 1 iv_formula type string, - assert_style_equals importing iv_row type i default 1 iv_col type i default 1 iv_style type ZEXCEL_CELL_STYLE, - assert_datatype_equals importing iv_row type i default 1 iv_col type i default 1 iv_datatype type string. - -endclass. "lcl_test DEFINITION - -* -class lcl_test implementation. - -* - method test_number. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><v>17</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `17` ). - assert_datatype_equals( `n` ). - endmethod. "test_shared_string - -* - method test_shared_string. - data lo_reader type ref to if_sxml_reader. - append `Test1` to out->shared_strings. - append `Test2` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Test2` ). - assert_datatype_equals( `s` ). - endmethod. "test_shared_string -* - method test_shared_string_missing. - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `Test` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Index to non-existent shared string should give an error`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. -* - method test_inline_string. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Alpha` ). - assert_datatype_equals( `inlineStr` ). - endmethod. "test_inline_string - -* - method test_boolean. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="b"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `1` ). - assert_datatype_equals( `b` ). - endmethod. "test_boolean - -* - method test_formula. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><f>A2*A2</f></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_formula_equals( `A2*A2` ). - assert_datatype_equals( `n` ). - endmethod. "test_formula - -* - method test_empty_cells. - -* There is no need to store an empty cell in the ABAP worksheet structure - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `` to out->shared_strings. - append `t` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>0</v></c>` & - `<c r="A2" t="inlineStr"><is><t></t></is></c>` & - `<c r="A3" t="s"><v>1</v></c>` - ). - - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). - - endmethod. - -* - method test_style. - data: - lo_reader type ref to if_sxml_reader, - lo_style type ref to zcl_excel_style, - lv_guid type ZEXCEL_CELL_STYLE. - create object lo_style. - append lo_style to out->styles. - lv_guid = lo_style->get_guid( ). - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_style_equals( lv_guid ). - - endmethod. "test_style - -* - method test_style_missing. - - data: - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Reference to non-existent style should throw an lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. "test_style - -* - method test_read_shared_strings. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. - - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - importing buffer = lv_xstring ). - lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `Bravo` to lt_exp. - - lt_act = out->read_shared_strings( lo_reader ). - - assert_equals( act = lt_act - exp = lt_exp ). - - endmethod. - -* - method test_shared_string_some_empty. - data: lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. - lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( - `<sst><si><t/></si>` & - `<si><t>Alpha</t></si>` & - `<si><t/></si>` & - `<si><t>Bravo</t></si></sst>` - ) ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `` to lt_exp, - `Bravo` to lt_exp. - - lt_act = out->read_shared_strings( lo_reader ). - - assert_equals( act = lt_act - exp = lt_exp ). - - endmethod. - - -* - method test_skip_to_inexistent. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - importing buffer = lv_xstring ). - lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - try. - out->skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ). - fail(`Skipping to non-existing element must raise lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " May inspect exception text in debugger - endtry. - endmethod. - -* - method get_reader. - data: lv_full type string, - lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring. - concatenate `<root><sheetData><row>` iv_xml `</row></sheetData></root>` into lv_full. - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = lv_full - importing buffer = lv_xstring ). - eo_reader = cl_sxml_string_reader=>create( lv_xstring ). - endmethod. "get_reader -* - method assert_value_equals. - - constants: lc_empty_string type string value is initial. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data, - <lv_value> type string. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - if sy-subrc eq 0. - assign <ls_cell_data>-cell_value to <lv_value>. - else. - assign lc_empty_string to <lv_value>. - endif. - - assert_equals( act = <lv_value> - exp = iv_value ). - - endmethod. "assert_value_equals -** - method assert_formula_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_formula - exp = iv_formula ). - - endmethod. "assert_formula_equals -* - method assert_style_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_style - exp = iv_style ). - - endmethod. -* - method assert_datatype_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-data_type - exp = iv_datatype ). - - endmethod. "assert_datatype_equals - method setup. - create object out. - create object excel. - create object worksheet - exporting - ip_excel = excel. - endmethod. "setup -endclass. "lcl_test IMPLEMENTATION - - - - - - - - - - - - - - - - method FILL_CELL_FROM_ATTRIBUTES. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_attribute( ). - if io_reader->node_type ne c_attribute. - exit. - endif. - case io_reader->name. - when `t`. - es_cell-datatype = io_reader->value. - when `s`. - if io_reader->value is not initial. - es_cell-style = get_style( io_reader->value ). - endif. - when `r`. - es_cell-coord = get_cell_coord( io_reader->value ). - endcase. - endwhile. - -endmethod. - - - - - method GET_CELL_COORD. - - zcl_excel_common=>convert_columnrow2column_a_row( - exporting - i_columnrow = iv_coord - importing - e_column = es_coord-column - e_row = es_coord-row - ). - -endmethod. - - - - - - method GET_SHARED_STRING. - data: lv_tabix type i, - lv_error type string. - lv_tabix = iv_index + 1. - read table shared_strings into ev_value index lv_tabix. - if sy-subrc ne 0. - concatenate 'Entry ' iv_index ' not found in Shared String Table' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - endif. -endmethod. - - - - - - method GET_STYLE. - - data: lv_tabix type i, - lo_style type ref to zcl_excel_style, - lv_error type string. - - if gs_buffer_style-index ne iv_index. - lv_tabix = iv_index + 1. - read table styles into lo_style index lv_tabix. - if sy-subrc ne 0. - concatenate 'Entry ' iv_index ' not found in Style Table' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - else. - gs_buffer_style-index = iv_index. - gs_buffer_style-guid = lo_style->get_guid( ). - endif. - endif. - - ev_style_guid = gs_buffer_style-guid. - -endmethod. - - - - - - method GET_SXML_READER. - - data: lv_xml type xstring. - - lv_xml = get_from_zip_archive( iv_path ). - eo_reader = cl_sxml_string_reader=>create( lv_xml ). - -endmethod. - - - method LOAD_SHARED_STRINGS. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - shared_strings = read_shared_strings( lo_reader ). - -endmethod. - - - method LOAD_WORKSHEET. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - read_worksheet_data( io_reader = lo_reader - io_worksheet = io_worksheet ). - -endmethod. - - - - - method PUT_CELL_TO_WORKSHEET. - check is_cell-value is not initial - or is_cell-formula is not initial - or is_cell-style is not initial. - call method io_worksheet->set_cell - exporting - ip_column = is_cell-column - ip_row = is_cell-row - ip_value = is_cell-value - ip_formula = is_cell-formula - ip_data_type = is_cell-datatype - ip_style = is_cell-style. -endmethod. - - - - - method read_shared_strings. - - data lv_value type string. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - if io_reader->name eq `t`. - case io_reader->node_type . - when c_element_open . - clear lv_value . - when c_node_value . - lv_value = lv_value && io_reader->value . - when c_element_close . - append lv_value to et_shared_strings. - endcase . - endif. - endwhile. - -endmethod. - - - - - - method READ_WORKSHEET_DATA. - - data: ls_cell type t_cell. - -* Skip to <sheetData> element - skip_to( iv_element_name = `sheetData` io_reader = io_reader ). - -* Main loop: Evaluate the <c> elements and its children - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - case io_reader->node_type. - when c_element_open. - if io_reader->name eq `c`. - ls_cell = fill_cell_from_attributes( io_reader ). - endif. - when c_node_value. - case io_reader->name. - when `f`. - ls_cell-formula = io_reader->value. - when `v`. - if ls_cell-datatype eq `s`. - ls_cell-value = get_shared_string( io_reader->value ). - else. - ls_cell-value = io_reader->value. - endif. - when `t` or `is`. - ls_cell-value = io_reader->value. - endcase. - when c_element_close. - case io_reader->name. - when `c`. - put_cell_to_worksheet( is_cell = ls_cell io_worksheet = io_worksheet ). - when `sheetData`. - exit. - endcase. - endcase. - endwhile. - -endmethod. - - - - - - method SKIP_TO. - - data: lv_error type string. - -* Skip forward to given element - while io_reader->name ne iv_element_name or - io_reader->node_type ne c_element_open. - io_reader->next_node( ). - if io_reader->node_type = c_end_of_stream. - concatenate 'XML error: Didn''t find element <' iv_element_name '>' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - endif. - endwhile. - - -endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - METHOD load_vbaproject. - - DATA lv_content TYPE xstring. - - lv_content = me->get_from_zip_archive( ip_path ). - - ip_excel->zif_excel_book_vba_project~set_vbaproject( lv_content ). - - ENDMETHOD. - - - method LOAD_WORKBOOK. - super->load_workbook( EXPORTING iv_workbook_full_filename = iv_workbook_full_filename - io_excel = io_excel ). - - CONSTANTS: lc_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject'. - - DATA: rels_workbook_path TYPE string, - rels_workbook TYPE REF TO if_ixml_document, - path TYPE string, - node TYPE REF TO if_ixml_element, - workbook TYPE REF TO if_ixml_document, - stripped_name TYPE chkfile, - dirname TYPE string, - relationship TYPE t_relationship, - fileversion TYPE t_fileversion, - workbookpr TYPE t_workbookpr. - - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = stripped_name - file_path = dirname. - - " Read Workbook Relationships - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_workbook_path. - - rels_workbook = me->get_ixml_from_zip_archive( rels_workbook_path ). - - node ?= rels_workbook->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - CASE relationship-type. - WHEN lc_vba_project. - " Read VBA binary - CONCATENATE dirname relationship-target INTO path. - me->load_vbaproject( ip_path = path - ip_excel = io_excel ). - WHEN OTHERS. - ENDCASE. - - node ?= node->get_next( ). - ENDWHILE. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'fileVersion' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = fileversion ). - - io_excel->zif_excel_book_vba_project~set_codename( fileversion-codename ). - ENDIF. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'workbookPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = workbookpr ). - - io_excel->zif_excel_book_vba_project~set_codename_pr( workbookpr-codename ). - ENDIF. - - endmethod. - - - METHOD load_worksheet. - - super->load_worksheet( EXPORTING ip_path = ip_path - io_worksheet = io_worksheet ). - - DATA: path TYPE string, - node TYPE REF TO if_ixml_element, - worksheet TYPE REF TO if_ixml_document, - sheetpr TYPE t_sheetpr. - - " Read Workbook codeName - worksheet = me->get_ixml_from_zip_archive( ip_path ). - node ?= worksheet->find_from_name( 'sheetPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = sheetpr ). - IF sheetpr-codename IS NOT INITIAL. - io_worksheet->zif_excel_sheet_vba_project~set_codename_pr( sheetpr-codename ). - ENDIF. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - METHOD is_security_enabled. - IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. - ep_security_enabled = abap_true. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - orientation = me->c_orientation_default. - -* default margins - margin_bottom = '0.75'. - margin_footer = '0.3'. - margin_header = '0.3'. - margin_left = '0.7'. - margin_right = '0.7'. - margin_top = '0.75'. - -* clear page settings - CLEAR: black_and_white, - cell_comments, - copies, - draft, - errors, - first_page_number, - fit_to_page, - fit_to_height, - fit_to_width, - horizontal_dpi, - orientation, - page_order, - paper_height, - paper_size, - paper_width, - scale, - use_first_page_num, - use_printer_defaults, - vertical_dpi. - endmethod. - - - - - - - method GET_HEADER_FOOTER_STRING. -* ---------------------------------------------------------------------- - DATA: lc_marker_left(2) TYPE c VALUE '&L' - , lc_marker_right(2) TYPE c VALUE '&R' - , lc_marker_center(2) TYPE c VALUE '&C' - , lv_value TYPE string - . -* ---------------------------------------------------------------------- - IF ep_odd_header IS SUPPLIED. - - IF me->odd_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'CENTER' ). - CONCATENATE ep_odd_header lc_marker_center lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'RIGHT' ). - CONCATENATE ep_odd_header lc_marker_right lv_value INTO ep_odd_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_odd_footer IS SUPPLIED. - - IF me->odd_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'CENTER' ). - CONCATENATE ep_odd_footer lc_marker_center lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'RIGHT' ). - CONCATENATE ep_odd_footer lc_marker_right lv_value INTO ep_odd_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_header IS SUPPLIED. - - IF me->even_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'CENTER' ). - CONCATENATE ep_even_header lc_marker_center lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'RIGHT' ). - CONCATENATE ep_even_header lc_marker_right lv_value INTO ep_even_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_footer IS SUPPLIED. - - IF me->even_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'CENTER' ). - CONCATENATE ep_even_footer lc_marker_center lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'RIGHT' ). - CONCATENATE ep_even_footer lc_marker_right lv_value INTO ep_even_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - endmethod. - - - - - - method PROCESS_HEADER_FOOTER. - -* ---------------------------------------------------------------------- -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size - - DATA: lv_fname(12) TYPE c - , lv_string TYPE string - . - - FIELD-SYMBOLS: <lv_value> TYPE string - , <ls_font> TYPE zexcel_s_style_font - . - -* ---------------------------------------------------------------------- - CONCATENATE ip_side '_VALUE' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <lv_value>. - - CONCATENATE ip_side '_FONT' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <ls_font>. - - IF <ls_font> IS ASSIGNED AND <lv_value> IS ASSIGNED. - - IF <ls_font>-name IS NOT INITIAL. - CONCATENATE '&"' <ls_font>-name ',' INTO rv_processed_string. - ELSE. - rv_processed_string = '&"-,'. - ENDIF. - - IF <ls_font>-bold = abap_true. - CONCATENATE rv_processed_string 'Bold"' INTO rv_processed_string. - ELSE. - CONCATENATE rv_processed_string 'Standard"' INTO rv_processed_string. - ENDIF. - - IF <ls_font>-size IS NOT INITIAL. - lv_string = <ls_font>-size. - CONCATENATE rv_processed_string '&' lv_string INTO rv_processed_string. - ENDIF. - - CONCATENATE rv_processed_string <lv_value> INTO rv_processed_string. - - ENDIF. -* ---------------------------------------------------------------------- - - endmethod. - - - - - - - method SET_HEADER_FOOTER. - -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size -* -* usefull placeholders, which can be used in header/footer value strings -* '&P' - page number -* '&N' - total number of pages -* '&D' - Date -* '&T' - Time -* '&F' - File Name -* '&Z' - Path -* '&A' - Sheet name -* new line via class constant CL_ABAP_CHAR_UTILITIES=>newline -* -* Example Value String 'page &P of &N' -* -* DO NOT USE &L , &C or &R which automatically created as position markers - - me->odd_header = ip_odd_header. - me->odd_footer = ip_odd_footer. - me->even_header = ip_even_header. - me->even_footer = ip_even_footer. - - IF me->even_header IS NOT INITIAL OR me->even_footer IS NOT INITIAL. - me->diff_oddeven_headerfooter = abap_true. - ENDIF. - - - endmethod. - - - - - - - - - - method SET_PAGE_MARGINS. - DATA: lv_coef TYPE f, - lv_unit TYPE string. - - lv_unit = ip_unit. - TRANSLATE lv_unit TO UPPER CASE. - - CASE lv_unit. - WHEN 'IN'. lv_coef = 1. - WHEN 'CM'. lv_coef = '0.393700787'. - WHEN 'MM'. lv_coef = '0.0393700787'. - ENDCASE. - - IF ip_bottom IS SUPPLIED. margin_bottom = lv_coef * ip_bottom. ENDIF. - IF ip_footer IS SUPPLIED. margin_footer = lv_coef * ip_footer. ENDIF. - IF ip_header IS SUPPLIED. margin_header = lv_coef * ip_header. ENDIF. - IF ip_left IS SUPPLIED. margin_left = lv_coef * ip_left. ENDIF. - IF ip_right IS SUPPLIED. margin_right = lv_coef * ip_right. ENDIF. - IF ip_top IS SUPPLIED. margin_top = lv_coef * ip_top. ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - METHOD constructor. - - - CREATE OBJECT font. - CREATE OBJECT fill. - CREATE OBJECT borders. - CREATE OBJECT alignment. - CREATE OBJECT number_format. - CREATE OBJECT protection. - -* Start of insertion # issue 139 - Dateretention of cellstyles - IF ip_guid IS NOT INITIAL. - me->guid = ip_guid. - ELSE. -* End of insertion # issue 139 - Dateretention of cellstyles -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = me->guid. - me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call -* Start of insertion # issue 139 - Dateretention of cellstyles - ENDIF. -* End of insertion # issue 139 - Dateretention of cellstyles - -ENDMETHOD. - - - - method GET_GUID. - - - ep_guid = me->guid. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - - - styles->add( ip_style ). - endmethod. - - - method CLEAR. - - - styles->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT styles. - endmethod. - - - - - method GET. - - - eo_style ?= styles->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - - - eo_iterator ?= styles->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - - - is_empty = styles->if_object_collection~is_empty( ). - endmethod. - - - - - method REGISTER_NEW_STYLE. - - - me->add( io_style ). - ep_style_code = me->size( ) - 1. "style count starts from 0 - endmethod. - - - - method REMOVE. - - - styles->remove( ip_style ). - endmethod. - - - - method SIZE. - - - ep_size = styles->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - styles_conditional->add( ip_style_conditional ). - endmethod. - - - method CLEAR. - styles_conditional->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT styles_conditional. - - endmethod. - - - - - method GET. - DATA lv_index TYPE i. - lv_index = ip_index. - eo_style_conditional ?= styles_conditional->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= styles_conditional->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = styles_conditional->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - styles_conditional->remove( ip_style_conditional ). - endmethod. - - - - method SIZE. - ep_size = styles_conditional->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - horizontal = me->c_horizontal_general. - vertical = me->c_vertical_bottom. - wrapText = abap_false. - shrinkToFit = abap_false. - endmethod. - - - - method GET_STRUCTURE. - - es_alignment-horizontal = me->horizontal. - es_alignment-vertical = me->vertical. - es_alignment-textrotation = me->textrotation. - es_alignment-wraptext = me->wraptext. - es_alignment-shrinktofit = me->shrinktofit. - es_alignment-indent = me->indent. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - border_style = zcl_excel_style_border=>c_border_none. - border_color-theme = zcl_excel_style_color=>c_theme_not_set. - border_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - method GET_STRUCTURE. -*initialize colors to 'not set' - es_fill-left_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-left_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-right_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-right_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-top_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-top_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-bottom_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-bottom_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-diagonal_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-diagonal_color-theme = zcl_excel_style_color=>c_theme_not_set. - -* Check if all borders is set otherwise check single border - IF me->allborders IS BOUND. - es_fill-left_color = me->allborders->border_color. - es_fill-left_style = me->allborders->border_style. - es_fill-right_color = me->allborders->border_color. - es_fill-right_style = me->allborders->border_style. - es_fill-top_color = me->allborders->border_color. - es_fill-top_style = me->allborders->border_style. - es_fill-bottom_color = me->allborders->border_color. - es_fill-bottom_style = me->allborders->border_style. - ELSE. - IF me->left IS BOUND. - es_fill-left_color = me->left->border_color. - es_fill-left_style = me->left->border_style. - ENDIF. - IF me->right IS BOUND. - es_fill-right_color = me->right->border_color. - es_fill-right_style = me->right->border_style. - ENDIF. - IF me->top IS BOUND. - es_fill-top_color = me->top->border_color. - es_fill-top_style = me->top->border_style. - ENDIF. - IF me->down IS BOUND. - es_fill-bottom_color = me->down->border_color. - es_fill-bottom_style = me->down->border_style. - ENDIF. - ENDIF. - -* Check if diagonal is set - IF me->diagonal IS BOUND. - es_fill-diagonal_color = me->diagonal->border_color. - es_fill-diagonal_style = me->diagonal->border_style. - CASE me->diagonal_mode. - WHEN 1. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 0. - WHEN 2. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 1. - WHEN 3. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 1. - WHEN OTHERS. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 0. - ENDCASE. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD create_new_arbg_int. - DATA: lv_red TYPE int1, - lv_green TYPE int1, - lv_blue TYPE int1, - lv_hex TYPE x, - lv_char_red TYPE zexcel_style_color_component, - lv_char_green TYPE zexcel_style_color_component, - lv_char_blue TYPE zexcel_style_color_component. - - lv_red = iv_red MOD 256. - lv_green = iv_green MOD 256. - lv_blue = iv_blue MOD 256. - - lv_hex = lv_red. - lv_char_red = lv_hex. - - lv_hex = lv_green. - lv_char_green = lv_hex. - - lv_hex = lv_blue. - lv_char_blue = lv_hex. - - - concatenate zcl_excel_style_color=>c_alpha lv_char_red lv_char_green lv_char_blue into rv_color_argb. - - -ENDMETHOD. - - - - - - - METHOD create_new_argb. - - CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD add_range. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string, - lv_col_alpha TYPE string, - lv_coords1 TYPE string, - lv_coords2 TYPE string. - - - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). -* me->mv_cell_data-cell_row = 1. -* me->mv_cell_data-cell_column = lv_column. -* - lv_col_alpha = ip_start_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE lv_col_alpha lv_row_alpha INTO lv_coords1. - - IF ip_stop_column IS NOT INITIAL. - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - ELSE. - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - ENDIF. - - IF ip_stop_row IS NOT INITIAL. " If we don't get explicitly a stop column use start column - lv_row_alpha = ip_stop_row. - ELSE. - lv_row_alpha = ip_start_row. - ENDIF. - IF ip_stop_column IS NOT INITIAL. " If we don't get explicitly a stop column use start column - lv_col_alpha = ip_stop_column. - ELSE. - lv_col_alpha = ip_start_column. - ENDIF. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE lv_col_alpha lv_row_alpha INTO lv_coords2. - IF lv_coords2 IS NOT INITIAL AND lv_coords2 <> lv_coords1. - CONCATENATE me->mv_rule_range ` ` lv_coords1 ':' lv_coords2 INTO me->mv_rule_range. - ELSE. - CONCATENATE me->mv_rule_range ` ` lv_coords1 INTO me->mv_rule_range. - ENDIF. - SHIFT me->mv_rule_range LEFT DELETING LEADING space. - -ENDMETHOD. - - - METHOD constructor. - - DATA: ls_iconset TYPE zexcel_conditional_iconset. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - - - me->rule = zcl_excel_style_conditional=>c_rule_none. -* me->iconset->operator = zcl_excel_style_conditional=>c_operator_none. - me->mode_iconset = ls_iconset. - me->priority = 1. - -* inizialize dimension range - me->MV_RULE_RANGE = 'A1'. -ENDMETHOD. - - - - - - - - - - - - - - - - - METHOD factory_cond_style_iconset. - -*--------------------------------------------------------------------* -* Work in progress -* Missing: LE or LT may be specified --> extend structure ZEXCEL_CONDITIONAL_ICONSET to hold this information as well -*--------------------------------------------------------------------* - -* DATA: lv_needed_values TYPE i. -* CASE icon_type. -* -* WHEN 'C_ICONSET_3ARROWS' -* OR 'C_ICONSET_3ARROWSGRAY' -* OR 'C_ICONSET_3FLAGS' -* OR 'C_ICONSET_3SIGNS' -* OR 'C_ICONSET_3SYMBOLS' -* OR 'C_ICONSET_3SYMBOLS2' -* OR 'C_ICONSET_3TRAFFICLIGHTS' -* OR 'C_ICONSET_3TRAFFICLIGHTS2'. -* lv_needed_values = 3. -* -* WHEN 'C_ICONSET_4ARROWS' -* OR 'C_ICONSET_4ARROWSGRAY' -* OR 'C_ICONSET_4RATING' -* OR 'C_ICONSET_4REDTOBLACK' -* OR 'C_ICONSET_4TRAFFICLIGHTS'. -* lv_needed_values = 4. -* -* WHEN 'C_ICONSET_5ARROWS' -* OR 'C_ICONSET_5ARROWSGRAY' -* OR 'C_ICONSET_5QUARTERS' -* OR 'C_ICONSET_5RATING'. -* lv_needed_values = 5. -* -* WHEN OTHERS. -* RETURN. -* ENDCASE. - -ENDMETHOD. - - - - METHOD get_dimension_range. - - ep_dimension_range = me->mv_rule_range. - -ENDMETHOD. - - - - - - - METHOD set_range. - - CLEAR: me->mv_rule_range. - - me->add_range( ip_start_row = ip_start_row - ip_start_column = ip_start_column - ip_stop_row = ip_stop_row - ip_stop_column = ip_stop_column ). - -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method build_gradient. - check check_filltype_is_gradient( ) eq abap_true. - clear gradtype. - case filltype. - when c_fill_gradient_horizontal90. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontal270. - gradtype-degree = '270'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontalb. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_vertical. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_fromcenter. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - when c_fill_gradient_diagonal45. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal45b. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_diagonal135. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal135b. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_cornerlt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_cornerlb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '1'. - gradtype-top = '1'. - when c_fill_gradient_cornerrt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-left = '1'. - gradtype-right = '1'. - when c_fill_gradient_cornerrb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - endcase. - - endmethod. "build_gradient - - - - method check_filltype_is_gradient. - case filltype. - when c_fill_gradient_horizontal90 or - c_fill_gradient_horizontal270 or - c_fill_gradient_horizontalb or - c_fill_gradient_vertical or - c_fill_gradient_fromcenter or - c_fill_gradient_diagonal45 or - c_fill_gradient_diagonal45b or - c_fill_gradient_diagonal135 or - c_fill_gradient_diagonal135b or - c_fill_gradient_cornerlt or - c_fill_gradient_cornerlb or - c_fill_gradient_cornerrt or - c_fill_gradient_cornerrb. - rv_is_gradient = abap_true. - endcase. - endmethod. "check_filltype_is_gradient - - - method constructor. - filltype = zcl_excel_style_fill=>c_fill_none. - fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. - bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. - rotation = 0. - - endmethod. "CONSTRUCTOR - - - - method get_structure. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgcolor = me->fgcolor. - es_fill-bgcolor = me->bgcolor. - me->build_gradient( ). - es_fill-gradtype = me->gradtype. - endmethod. "GET_STRUCTURE - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CALCULATE_TEXT_WIDTH. - " Addition to solve issue #120, contribution by Stefan Schmöcker - r_width = strlen( i_text ). - " use scale factor based on default 11 - " ( don't know where defaultsetting is stored currently ) - r_width = r_width * me->size / 11. - endmethod. - - - method CONSTRUCTOR. - me->color-rgb = zcl_excel_style_color=>c_black. - me->color-theme = zcl_excel_style_color=>c_theme_not_set. - me->color-indexed = zcl_excel_style_color=>c_indexed_not_set. - me->scheme = zcl_excel_style_font=>c_scheme_minor. - me->underline_mode = zcl_excel_style_font=>c_underline_single. - endmethod. - - - - method GET_STRUCTURE. - - es_font-bold = me->bold. - es_font-italic = me->italic. - es_font-underline = me->underline. - es_font-underline_mode = me->underline_mode. - es_font-strikethrough = me->strikethrough. - es_font-size = me->size. - es_font-color = me->color. - es_font-name = me->name. - es_font-family = me->family. - es_font-scheme = me->scheme. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - format_code = me->c_format_general. - endmethod. - - - - method GET_STRUCTURE. - ep_number_format-numfmt = me->format_code. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method CONSTRUCTOR. - locked = me->c_protection_locked. - hidden = me->c_protection_unhidden. - endmethod. - - - - method GET_STRUCTURE. - ep_protection-locked = me->locked. - ep_protection-hidden = me->hidden. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method GET_BOTTOM_ROW_INTEGER. - DATA: lv_table_lines TYPE i. - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - IF settings-bottom_right_row IS NOT INITIAL. -* ev_row = zcl_excel_common=>convert_column2int( settings-bottom_right_row ). " del issue #246 - ev_row = settings-bottom_right_row . " ins issue #246 - EXIT. - ENDIF. - - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - - ev_row = settings-top_left_row + lv_table_lines. - - IF me->has_totals( ) = abap_true." ???? AND ip_include_totals_row = abap_true. - ADD 1 TO ev_row. - ENDIF. - endmethod. - - - - method GET_ID. - ov_id = id. - endmethod. - - - - method GET_NAME. - - IF me->name IS INITIAL. - me->name = zcl_excel_common=>number_to_excel_string( ip_value = me->id ). - CONCATENATE 'table' me->name INTO me->name. - ENDIF. - - ov_name = me->name. - endmethod. - - - - - method GET_REFERENCE. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - lv_right_column TYPE zexcel_cell_column_alpha, - ls_field_catalog TYPE zexcel_s_fieldcatalog, - lv_bottom_row TYPE zexcel_cell_row, - lv_top_row_string(10) TYPE c, - lv_bottom_row_string(10) TYPE c. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - -*column - lv_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - lv_table_lines = 0. - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO lv_table_lines. - ENDLOOP. - lv_column = lv_column + lv_table_lines - 1. - lv_right_column = zcl_excel_common=>convert_column2alpha( lv_column ). - -*row - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - lv_bottom_row = settings-top_left_row + lv_table_lines . - - IF me->has_totals( ) = abap_true AND ip_include_totals_row = abap_true. - ADD 1 TO lv_bottom_row. - ENDIF. - - lv_top_row_string = zcl_excel_common=>number_to_excel_string( settings-top_left_row ). - lv_bottom_row_string = zcl_excel_common=>number_to_excel_string( lv_bottom_row ). - - CONCATENATE settings-top_left_column lv_top_row_string - ':' - lv_right_column lv_bottom_row_string INTO ov_reference. - - endmethod. - - - - - method GET_RIGHT_COLUMN_INTEGER. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - ls_field_catalog TYPE zexcel_s_fieldcatalog. - - IF settings-bottom_right_column IS NOT INITIAL. - ev_column = zcl_excel_common=>convert_column2int( settings-bottom_right_column ). - EXIT. - ENDIF. - - ev_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO ev_column. - ENDLOOP. - - endmethod. - - - - - - method GET_TOTALS_FORMULA. - CONSTANTS: lc_function_id_sum TYPE string VALUE '109', - lc_function_id_min TYPE string VALUE '105', - lc_function_id_max TYPE string VALUE '104', - lc_function_id_count TYPE string VALUE '103', - lc_function_id_average TYPE string VALUE '101'. - - DATA: lv_function_id TYPE string. - - CASE ip_function. - WHEN zcl_excel_table=>totals_function_sum. - lv_function_id = lc_function_id_sum. - - WHEN zcl_excel_table=>totals_function_min. - lv_function_id = lc_function_id_min. - - WHEN zcl_excel_table=>totals_function_max. - lv_function_id = lc_function_id_max. - - WHEN zcl_excel_table=>totals_function_count. - lv_function_id = lc_function_id_count. - - WHEN zcl_excel_table=>totals_function_average. - lv_function_id = lc_function_id_average. - - WHEN zcl_excel_table=>totals_function_custom. " issue #292 - RETURN. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid totals formula. See ZCL_ for possible values'. - ENDCASE. - - CONCATENATE 'SUBTOTAL(' lv_function_id ',[' ip_column '])' INTO ep_formula. - endmethod. - - - - method HAS_TOTALS. - DATA: ls_field_catalog TYPE zexcel_s_fieldcatalog. - - ep_result = abap_false. - - LOOP AT fieldcat INTO ls_field_catalog. - IF ls_field_catalog-totals_function IS NOT INITIAL. - ep_result = abap_true. - EXIT. - ENDIF. - ENDLOOP. - - endmethod. - - - - METHOD set_data. - - DATA lr_temp TYPE REF TO data. - - FIELD-SYMBOLS: <lt_table_temp> TYPE ANY TABLE, - <lt_table> TYPE ANY TABLE. - - GET REFERENCE OF ir_data INTO lr_temp. - ASSIGN lr_temp->* TO <lt_table_temp>. - CREATE DATA table_data LIKE <lt_table_temp>. - ASSIGN me->table_data->* TO <lt_table>. - <lt_table> = <lt_table_temp>. - -ENDMETHOD. - - - - method SET_ID. - id = iv_id. - endmethod. - - - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - -*&---------------------------------------------------------------------* -*& Class (Implementation) C_OI_PROXY_ERROR -*&---------------------------------------------------------------------* -CLASS c_oi_proxy_error IMPLEMENTATION. - METHOD constructor. -* IMPORTING object_name TYPE c -* method_name TYPE c. - error_nr = ret_call_not_flushed. - me->i_oi_error~error_code = c_oi_errors=>ret_call_not_flushed. - me->i_oi_error~is_flushed = ' '. - me->i_oi_error~has_failed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->message_id = 'SOFFICEINTEGRATION'. - me->message_nr = '899'. - me->param1 = object_name. - me->param2 = method_name. - ENDMETHOD. "constructor - - METHOD i_oi_error~flush_error. - IF error_nr EQ 0. - me->i_oi_error~error_code = c_oi_errors=>ret_ok. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_failed = ' '. - me->i_oi_error~has_succeeded = 'X'. - me->message_id = ''. - me->message_nr = '000'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - IMPORTING - retcode = me->i_oi_error~error_code. - ELSEIF error_nr EQ ret_call_not_flushed. - "call still not flushed - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = me->param2 "method name - objectname = me->param1 - IMPORTING - retcode = me->i_oi_error~error_code. - ELSE. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->i_oi_error~has_failed = 'X'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = error_string - IMPORTING - retcode = me->i_oi_error~error_code. - CALL METHOD c_oi_errors=>get_message - IMPORTING - message_id = me->message_id - message_number = me->message_nr - param1 = me->param1 - param2 = me->param2 - param3 = me->param3 - param4 = me->param4. - ENDIF. - ENDMETHOD. "i_oi_error~flush_error - - METHOD i_oi_error~raise_message. -* IMPORTING type TYPE c. -* EXCEPTIONS message_raised flush_failed. - IF me->i_oi_error~has_succeeded IS INITIAL. - IF NOT me->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. "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->param1. param2 = me->param2. - param3 = me->param3. param4 = me->param4. - - message_id = me->message_id. - message_number = me->message_nr. - ENDMETHOD. "i_oi_error~get_message -ENDCLASS. "C_OI_PROXY_ERROR - -*&---------------------------------------------------------------------* -*& Class (Implementation) CL_GRID_ACCESSION -*&---------------------------------------------------------------------* -CLASS lcl_gui_alv_grid IMPLEMENTATION. - - METHOD get_alv_attributes. - CREATE DATA et_table LIKE io_grid->mt_outtab. - et_table = io_grid->mt_outtab. - ENDMETHOD. "get_data - -ENDCLASS. "CL_GRID_ACCESSION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method'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. "c_oi_proxy_error DEFINITION - -*--------------------------------------------------------------------* -* 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 " ALV grid - EXPORTING - et_table TYPE REF TO data. " dta table - -ENDCLASS. "lcl_gui_alv_grid DEFINITION - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_col_from, - me->print_title_col_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_row_from, - me->print_title_row_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS. - ev_columns_from = me->print_title_col_from. - ev_columns_to = me->print_title_col_to. - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS. - ev_rows_from = me->print_title_row_from. - ev_rows_to = me->print_title_row_to. - endmethod. - - - 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=>convert_column2int( iv_columns_from ). - lv_col_to_int = zcl_excel_common=>convert_column2int( iv_columns_to ). - -*--------------------------------------------------------------------* -* Check if valid range is supplied -*--------------------------------------------------------------------* - IF lv_col_from_int < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF lv_col_from_int > lv_col_to_int. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_col_from = iv_columns_from. - me->print_title_col_to = iv_columns_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - endmethod. - - - 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 < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF iv_rows_from > iv_rows_to. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_row_from = iv_rows_from. - me->print_title_row_to = iv_rows_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - 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->excel->get_default_style( ). - ENDIF. - endmethod. - - - method ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE. - - zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_showzero. - zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. - zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>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. - - - method ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE. - zif_excel_sheet_properties~style = ip_style. - endmethod. - - - method ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE. - - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_unprotected. - CLEAR me->zif_excel_sheet_protection~password. - me->zif_excel_sheet_protection~auto_filter = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_hyperlinks = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_noactive. -* me->zif_excel_sheet_protection~password = zif_excel_sheet_protection=>c_noactive. "issue #68 - me->zif_excel_sheet_protection~pivot_tables = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_locked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_unlocked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sort = zif_excel_sheet_protection=>c_noactive. - - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME. - me->zif_excel_sheet_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - - method ADD_DRAWING. - CASE ip_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - drawings->include( ip_drawing ). - WHEN zcl_excel_drawing=>type_chart. - charts->include( ip_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_CONDITIONAL_STYLE. - - CREATE OBJECT eo_conditional_style. - conditional_styles->add( eo_conditional_style ). - endmethod. - - - - method ADD_NEW_DATA_VALIDATION. - - CREATE OBJECT eo_data_validation. - data_validations->add( eo_data_validation ). - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - - - - - method BIND_ALV. - data: lo_converter type ref to zcl_excel_converter. - - create object lo_converter. - - try. - lo_converter->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. - - - - - - - - - - - - - - - - - - - - - - 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'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. "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: <f_collect00> type standard table. - field-symbols: <f_collect01> type standard table. - field-symbols: <f_collect02> type standard table. - field-symbols: <f_collect03> type standard table. - field-symbols: <f_collect04> type standard table. - field-symbols: <f_collect05> type standard table. - field-symbols: <f_collect06> type standard table. - field-symbols: <f_collect07> type standard table. - field-symbols: <f_collect08> type standard table. - field-symbols: <f_collect09> type standard table. - -* table before append subtotal lines - field-symbols: <f_alv_tab> 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: <f_excel_tab> type standard table. - field-symbols: <f_excel_line> type any. - -* dyn subtotal tables - field-symbols: <f_collect_tab> type standard table. - field-symbols: <f_collect_line> type any. - - field-symbols: <f_filter_idx_line> like line of LT_FILTER_IDX_KKBLO. - field-symbols: <f_fieldcat_line> like line of LT_FIELDCAT_KKBLO. - field-symbols: <f_grouplevels_line> like line of LT_GROUPLEVELS_KKBLO. - field-symbols: <f_line> 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. " currency / quantity flag - data: wa_t006 type t006. " decimal place of unit - - data: l_num type i. " table columns number - data: l_typ type c. " table type - data: wa type ref to data. - data: l_int type i. - data: l_counter type i. - - field-symbols: <f_excel_column> type any. - field-symbols: <f_fcat_column> 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. " exporting column number - data vkeycount type i. - data all type i. - data mit type i value 1. " index of recent row? - data li_col_pos type i value 1. " column position - data li_col_num type i. " table columns number - field-symbols: <line> type any. - field-symbols: <item> 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. "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 'X'. - data: li_head_top type i. "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->is_destroyed - IMPORTING - ret_value = l_is_closed. - -* if dun detroyed yet: close -> release proxy - - IF l_is_closed is initial. - call method lo_proxy->close_document -* EXPORTING -* do_save = do_save - IMPORTING - error = lo_error - retcode = lc_retcode. - ENDIF. - - call method lo_proxy->release_document - IMPORTING - error = lo_error - retcode = lC_retcode. - - else. - lc_retcode = c_oi_errors=>ret_document_not_open. - ENDIF. - -* Detroy control container - - IF lo_control is not initial. - CALL METHOD lo_control->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=>ret_ok. - close_document. - call method lo_error->raise_message - EXPORTING - type = 'E'. - clear: lo_error. - endif. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* SESSION 0: DOI CONSTRUCTOR -*--------------------------------------------------------------------* - -* check active windown - - call function 'GUI_HAS_ACTIVEX' - 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=>get_container_control - IMPORTING - control = lo_control - retcode = lC_retcode. - - error_doi. - -* Initialize Container control - - CALL METHOD lo_control->init_control - EXPORTING - parent = CL_GUI_CONTAINER=>DEFAULT_SCREEN - r3_application_name = '' - inplace_enabled = 'X' - no_flush = 'X' - register_on_close_event = 'X' - register_on_custom_event = 'X' - IMPORTING - error = lO_ERROR - retcode = lc_retcode. - - error_doi. - -* Get Proxy Document: -* check exist of document proxy, if exist -> 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 = 'Excel.Sheet.8'. - else. -* xlsx format, doctype = soi_doctype_excel_sheet - l_doctype_excel_sheet = 'Excel.Sheet'. - ENDIF. - - CALL METHOD lo_control->get_document_proxy - EXPORTING - document_type = l_doctype_excel_sheet - register_container = 'X' - 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->create_document - EXPORTING - create_view_data = 'X' - open_inplace = 'X' - no_flush = 'X' - 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->open_document - EXPORTING - document_url = i_document_url - open_inplace = 'X' - no_flush = 'X' - IMPORTING - error = lo_error - retcode = lc_retcode. - - error_doi. - - endif. - -* Check Spreadsheet Interface of Document Proxy - - CALL METHOD lo_proxy->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->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=>SCREEN0. - - call method lo_grid->get_alv_attributes - EXPORTING - io_grid = io_alv - IMPORTING - Et_table = lt_alv. - - assign lt_alv->* to <f_alv_tab>. - -* fieldcat - - CALL METHOD iO_alv->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 = '1'. - endif. - clear: wa_fieldcat_lvc. - -* sort table - - CALL METHOD IO_ALV->GET_SORT_CRITERIA - IMPORTING - ET_SORT = lt_sort_lvc. - - -* filter index - - CALL METHOD IO_ALV->GET_FILTERED_ENTRIES - IMPORTING - ET_FILTERED_ENTRIES = lt_filter_idx_lvc. - -* group level + subtotal - - CALL METHOD IO_ALV->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->* to <f_collect00>. - assign lt_collect01->* to <f_collect01>. - assign lt_collect02->* to <f_collect02>. - assign lt_collect03->* to <f_collect03>. - assign lt_collect04->* to <f_collect04>. - assign lt_collect05->* to <f_collect05>. - assign lt_collect06->* to <f_collect06>. - assign lt_collect07->* to <f_collect07>. - assign lt_collect08->* to <f_collect08>. - assign lt_collect09->* to <f_collect09>. - -* transfer to KKBLO struct - - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - 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 = <f_alv_tab> - EXCEPTIONS - IT_DATA_MISSING = 1 - IT_FIELDCAT_LVC_MISSING = 2 - OTHERS = 3. - IF SY-SUBRC <> 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 & total line - - create data lt_excel like <f_ALV_TAB>. - assign lt_excel->* to <f_excel_tab>. - - loop at <f_alv_tab> assigning <f_line>. - l_save_index = sy-tabix. - -* filter base on filter index table - - read table LT_FILTER_IDX_KKBLO assigning <f_filter_idx_line> - with key index = l_save_index - binary search. - if sy-subrc ne 0. - append <f_line> to <f_excel_tab>. - endif. - -* append subtotal lines - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - with key index_to = l_save_index - binary search. - if sy-subrc = 0. - l_tabix = sy-tabix. - do. - if <f_grouplevels_line>-subtot eq 'X' and - <f_grouplevels_line>-hide_level is initial and - <f_grouplevels_line>-cindex_from ne 0. - -* dynamic append subtotal line to excel table base on grouplevel table -* ex <f_GROUPLEVELS_line>-level = 1 -* then <f_collect_tab> = '<F_COLLECT01>' - - l_collect = <f_grouplevels_line>-level. - condense l_collect. - concatenate '<F_COLLECT0' - l_collect '>' -* '->*' - into l_collect. - - assign (l_collect) to <f_collect_tab>. - -* incase there're more than 1 total line of group, at the same level -* for example: subtotal of multi currency - - LOOP AT <f_collect_tab> assigning <f_collect_line>. - IF sy-tabix between <f_grouplevels_line>-cindex_from - and <f_grouplevels_line>-cindex_to. - - - append <f_collect_line> to <f_excel_tab>. - -* 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 'SUBTOT' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - clear: subrangeitem. - - ENDIF. - ENDLOOP. - unassign: <f_collect_tab>. - unassign: <f_collect_line>. - clear: l_collect. - endif. - -* check next subtotal level of group - - unassign: <f_grouplevels_line>. - add 1 to l_tabix. - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - index l_tabix. - if sy-subrc ne 0 - or <f_grouplevels_line>-index_to ne l_save_index. - exit. - endif. - - unassign: - <f_collect_tab>, - <f_collect_line>. - - enddo. - endif. - - clear: - l_tabix, - l_save_index. - - unassign: - <f_filter_idx_line>, - <f_grouplevels_line>. - - endloop. - -* free local data - - unassign: - <f_line>, - <f_collect_tab>, - <f_collect_line>, - <f_fieldcat_line>. - -* append grand total line - - IF <f_collect00> is assigned. - assign <f_collect00> to <f_collect_tab>. - if <f_collect_tab> is not initial. - LOOP AT <f_collect_tab> assigning <f_collect_line>. - - append <f_collect_line> to <f_excel_tab>. - -* 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 'TOTAL' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - ENDLOOP. - endif. - ENDIF. - - clear: - subrangeitem, - LT_SORT_KKBLO, - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>. - - unassign: - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>, - <f_collect_tab>, - <f_collect_line>. - -*--------------------------------------------------------------------* -* SESSION 3: MAP DATA TO SEMANTIC TABLE -*--------------------------------------------------------------------* - -* get dependent field field: currency and quantity - - create data wa like line of <f_excel_tab>. - assign wa->* to <f_excel_line>. - - describe field <f_excel_line> type l_typ components l_num. - - do l_num times. - l_save_index = sy-index. - assign component l_save_index of structure <f_excel_line> - to <f_excel_column>. - if sy-subrc ne 0. - message e059(0k) with 'FATAL ERROR' raising fatal_error. - endif. - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname. - assign component <f_fieldcat_line>-fieldname - of structure <f_excel_line> to <f_fcat_column>. - - describe distance between <f_excel_column> and <f_fcat_column> - 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 = <f_fieldcat_line>-fieldname. - wa_column_index-tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-cfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-ctabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - - if <f_fieldcat_line>-qfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-qfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-qtabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - -* rewrite field data type - - if <f_fieldcat_line>-inttype = 'X' - and <f_fieldcat_line>-datatype(3) = 'INT'. - <f_fieldcat_line>-inttype = 'I'. - endif. - - endloop. - - clear: l_save_index. - unassign: <f_fieldcat_line>. - - enddo. - -* build semantic tables - - l_n_hrz_keys = 1. - -* Get keyfigures - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - - clear wa_sema. - clear wa_hkey. - -* Units belong to keyfigures -> display as str - - read table lt_fieldcat_depf into wa_fieldcat_depf with key - fieldname = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-tabname. - - if sy-subrc = 0. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - -* Keyfigures - - else. - case <f_fieldcat_line>-datatype. - when 'QUAN'. - wa_sema-col_typ = 'N03'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. " no dependent field - endif. - - when 'DATS'. - wa_sema-col_typ = 'DAT'. - wa_sema-col_ops = 'NOP'. - - when 'CHAR' OR 'UNIT' OR 'CUKY'. " Added fieldformats UNIT and CUKY - dd. 26-10-2012 Wouter Heuvelmans - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. " dependent field - -* incase numeric, ex '00120' -> display as '12' - - when 'NUMC'. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - - when others. - wa_sema-col_typ = 'NUM'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. - 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 = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-cfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-qfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-qfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-currency is initial. - - select * from tcurx into table lt_tcurx. - sort lt_tcurx. - read table lt_tcurx into wa_tcurx - with key currkey = <f_fieldcat_line>-currency. - if sy-subrc = 0. - l_num_help = wa_tcurx-currdec. - concatenate 'N' 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 = <f_fieldcat_line>-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: - <f_fieldcat_line>, - <f_excel_line>, - <f_excel_column>, - <f_fcat_column>. - -*--------------------------------------------------------------------* -* 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=>ret_interface_not_supported. - call method c_oi_errors=>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 = 'OLE_DOCUMENT_PROXY' - method_name = 'get_ranges_names'. - - call method c_oi_errors=>add_error - EXPORTING - error = l_error. - - - describe table lt_sema lines datareal. - describe table <f_excel_tab> 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 ('.', ',', ...) in Office config - - call method lo_proxy->get_application_property - EXPORTING - property_name = 'INTERNATIONAL' - subproperty_name = 'DECIMAL_SEPARATOR' - 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 <g> type any. - data search_item(4) value ' #'. - - concatenate ',' decimal '.' decimal into comma_elim. - - data help type i. " table (with subtotal) line number - - help = datac. - - data: rowmax type i value 1. " header row number - data: columnmax type i value 0. " header columns number - - loop at lt_hkey into hkeyitem. - if hkeyitem-col_no > columnmax. - columnmax = hkeyitem-col_no. - endif. - - if hkeyitem-row_no > rowmax. - rowmax = hkeyitem-row_no. - endif. - endloop. - - data: hkeycolumns type i. " header columns no - - hkeycolumns = columnmax. - - if hkeycolumns < l_n_att_cols. - hkeycolumns = l_n_att_cols. - endif. - - columnmax = 0. - - loop at lt_vkey into vkeyitem. - if vkeyitem-col_no > columnmax. - columnmax = vkeyitem-col_no. - endif. - endloop. - - data overflow type i value 1. - data testname(10) type c. - data temp2 type i. " 1st item row position in excel - data realmit type i value 1. - data realoverflow type i value 1. " row index in content - - call method lo_spreadsheet->screen_update - EXPORTING - updating = ''. - - call method lo_spreadsheet->load_lib. - - data: str(40) type c. " range names of columns range (w/o col header) - data: rows type i. " 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 'TITLE'. - 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->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 'H'. "title - li_font_size = 16. - li_font_bold = 1. - li_font_italic = -1. - when 'S'. "subtile - li_font_size = -1. - li_font_bold = 1. - li_font_italic = -1. - when others. "'A' comment - li_font_size = -1. - li_font_bold = -1. - li_font_italic = 1. - endcase. - - call method lo_spreadsheet->set_font - EXPORTING - rangename = ls_commentary_range - family = '' - 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->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 = 'DAT' or semaitem-col_typ = 'MON' or - semaitem-col_typ = 'N00' or semaitem-col_typ = 'N01' or - semaitem-col_typ = 'N01' or semaitem-col_typ = 'N02' or - semaitem-col_typ = 'N03' or semaitem-col_typ = 'PCT' or - semaitem-col_typ = 'STR' or semaitem-col_typ = 'NUM'. - clear str. - str = semaitem-col_no. - condense str. - concatenate 'DATA' 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->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 <f_excel_tab> assigning <line>. - assign component semaitem-col_no of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - dec = typeinfo-decimals. - elseif typeinfo-type = 'I'. - dec = 0. - endif. - - describe field <line> type typ components count. - mit = 1. - do count times. - if mit = semaitem-col_src. - assign component sy-index of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - 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 = 'DAT'. - if semaitem-col_no > vkeycount. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = all - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'STR'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'MON'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 10 - no_flush = no_flush. - elseif semaitem-col_typ = 'N00'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'N01'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 1 - no_flush = no_flush. - elseif semaitem-col_typ = 'N02'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - elseif semaitem-col_typ = 'N03'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 3 - no_flush = no_flush. - elseif semaitem-col_typ = 'N04'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 4 - no_flush = no_flush. - elseif semaitem-col_typ = 'NUM'. - if dec eq -1. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = dec - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'PCT'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - 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 = ''. - curritem-size = -1. - curritem-bold = -1. - curritem-italic = -1. - curritem-align = -1. - curritem-frametyp = -1. - curritem-framecolor = -1. - curritem-currency = ''. - 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 <f_excel_tab> assigning <line>. - -* save line index to compare with lt_subtot_indexs, -* to discover line is a subtotal / totale line or not -* ex use to set 'dun display zero in subtotal / total line' - - 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 <line> to <item>. - else. - assign component sy-index - of structure <line> to <item>. - endif. - - contentsitem-row = realoverflow. - - if sy-subrc = 0. - move semaitem-col_ops to search_item(3). - search 'ADD#CNT#MIN#MAX#AVG#NOP#DFT#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - move semaitem-col_typ to search_item(3). - search 'NUM#N00#N01#N02#N03#N04#PCT#DAT#MON#STR#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - contentsitem-column = sy-index. - if semaitem-col_typ eq 'DAT' or semaitem-col_typ eq 'MON'. - if semaitem-col_no > vkeycount. - - " Hinweis 512418 - " EXCEL bezieht Datumsangaben - " auf den 31.12.1899, behandelt - " aber 1900 als ein Schaltjahr - " d.h. ab 1.3.1900 korrekt - " 1.3.1900 als Zahl = 61 - - data: genesis type d value '18991230'. - data: number_of_days type p. -* change for date in char format & sema_type = X - data: temp_date type d. - - if not <item> is initial and not <item> co ' ' and not - <item> co '0'. -* change for date in char format & sema_type = X starts - if sema_type = 'X'. - describe field <item> type typ. - if typ = 'C'. - temp_date = <item>. - number_of_days = temp_date - genesis. - else. - number_of_days = <item> - genesis. - endif. - else. - number_of_days = <item> - genesis. - endif. -* change for date in char format & sema_type = X ends - if number_of_days < 61. - number_of_days = number_of_days - 1. - endif. - - set country 'DE'. - 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 <item> to contentsitem-value. - endif. - elseif semaitem-col_typ eq 'NUM' or - semaitem-col_typ eq 'N00' or - semaitem-col_typ eq 'N01' or - semaitem-col_typ eq 'N02' or - semaitem-col_typ eq 'N03' or - semaitem-col_typ eq 'N04' or - semaitem-col_typ eq 'PCT'. - set country 'DE'. - describe field <item> type typ. - - if semaitem-col_cur is initial. - if typ ne 'F'. - write <item> to contentsitem-value no-grouping - no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - no-sign. - endif. - else. -* Treat of fixed curreny for column >>Y9CK007319 - if semaitem-col_cur < 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 'F'. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign. - endif. - endif. - else. - assign component semaitem-col_cur - of structure <line> to <g>. -* 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 <f_fieldcat_line> - with key tabname = l_tabname - tech = space - no_out = space - col_pos = semaitem-col_no. - IF sy-subrc = 0. - IF <f_fieldcat_line>-cfieldname is not initial. - l_def = 'C'. - else."if <f_fieldcat_line>-qfieldname is not initial. - l_def = 'Q'. - ENDIF. - ENDIF. - -* if field is amount field -* exporting of amount field base on currency decimal table: TCURX - IF l_def = 'C'. "field is amount field - select single * from tcurx into wa_tcurx - where currkey = <g>. -* if amount ref to un-know currency -> 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 'F'. - write <item> to contentsitem-value - currency <g> - no-sign no-grouping. - else. - write <item> to contentsitem-value - decimals 14 currency <g> - no-sign no-grouping. - endif. - -* if field is quantity field -* exporting of quantity field base on quantity decimal table: T006 - - else."if l_def = 'Q'. " field is quantity field - clear: wa_t006. - select single * from t006 into wa_t006 - where MSEHI = <g>. -* if quantity ref to un-know unit-> default decimal = 2 - if sy-subrc eq 0. - curritem-decimals = wa_t006-decan. - else. - curritem-decimals = 2. - endif. - append curritem to currcells. - - write <item> to contentsitem-value - unit <g> - no-sign no-grouping. - condense contentsitem-value. - - ENDIF. - - endif. "Y9CK007319 - endif. - condense contentsitem-value. - -* add function fieldcat-no zero display - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - if <f_fieldcat_line>-col_pos = semaitem-col_no. - if <f_fieldcat_line>-no_zero = 'X'. - if <item> = '0'. - 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 <item> = '0'. - clear: contentsitem-value. - endif. - ENDIF. - endif. - endif. - endloop. - unassign: <f_fieldcat_line>. - - if <item> lt 0. - search contentsitem-value for 'E'. - if sy-fdpos eq 0. - -* use prefix notation for signed numbers - - translate contentsitem-value using '- '. - condense contentsitem-value no-gaps. - concatenate '-' contentsitem-value - into contentsitem-value. - else. - concatenate '-' 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 ":" enthalten. -* Für die -* darf keine Kommaseparierung stattfinden. -* Changing for correction request - Y6BK041073 - if contentsitem-value co '0123456789.,-+E '. - translate contentsitem-value using comma_elim. - endif. - else. - clear contentsitem-value. - -* if type is not numeric -> dun display with zero - - write <item> 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: <f_fieldcat_line>. - -* set item range for set_range_data method - - testname = mit / const. - condense testname. - - concatenate 'TEST' 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->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 = 'X'. - -* 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 > 1. - rowmaxtemp = rowmax - 1. - rowcount = 1. - do rowmaxtemp times. - columncount = 1. - do columnmax times. - contentsitem-column = columncount. - contentsitem-row = rowcount. - contentsitem-value = ''. - 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 = 'TESTHKEY'. - rangeitem-rows = rowmax. - rangeitem-columns = hkeycolumns. - append rangeitem to ranges. - clear: rangeitem. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'TESTHKEY' - 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. " 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: <f_source> type any. - field-symbols: <f_des> type any. - -* columns header format - - wa_format-front = -1. - wa_format-back = 15. "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 -* -> map input format - - if i_columns_header = 'X'. - wa_format-name = 'TESTHKEY'. - 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. " dun map range name - assign component sy-index of structure i_format_col_header - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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 = 'X'. - 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 = 'X'. - 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->cell_format - EXPORTING - cells = currcells - no_flush = no_flush. - -* item data: write item table content - - call method lo_spreadsheet->set_ranges_data - EXPORTING - ranges = ranges - contents = contents - no_flush = no_flush. - -* whole table range to format all table - - if i_columns_header = 'X'. - li_head_top = li_commentary_rows + 1. - else. - li_head_top = li_commentary_rows + 2. - help = help - 1. - endif. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'WHOLE_TABLE' - 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 = 'X'. - call method lo_spreadsheet->fit_widest - EXPORTING - name = 'WHOLE_TABLE' - 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=>FLUSH ) - - call method lo_spreadsheet->set_frame - EXPORTING - rangename = 'WHOLE_TABLE' - 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->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) = 'SUB'. - wa_format-back = 36. "subtotal line - wa_format_temp = i_format_subtotal. - else. - wa_format-back = 27. "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. " dun map range name - assign component sy-index of structure wa_format_temp - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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->set_ranges_format - EXPORTING - formattable = lt_format - no_flush = no_flush. - refresh: lt_format. - endif. -*--------------------------------------------------------------------* - call method lo_spreadsheet->screen_update - EXPORTING - updating = 'X'. - - call method c_oi_errors=>flush_errors. - - lo_error_w = l_error. - lc_retcode = lo_error_w->error_code. - -** catch no_flush -> led to dump ( optional ) -* go_error = l_error. -* gc_retcode = go_error->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, - <f_excel_tab>. - - clear: - lo_error_w. - - unassign: - <line>, - <item>, - <f_excel_tab>. - -*--------------------------------------------------------------------* -* SESSION 5: SAVE AND CLOSE FILE -*--------------------------------------------------------------------* - -* ex of save path: 'FILE://C:\temp\test.xlsx' - concatenate 'FILE://' I_save_path - into ls_path. - - call method lo_proxy->save_document_to_url - EXPORTING - no_flush = 'X' - url = ls_path - IMPORTING - error = lo_error - retcode = lc_retcode - CHANGING - document_size = li_document_size. - - error_doi. - -* if save successfully -> raise successful message -* message i499(sy) with 'Document is Exported to ' p_path. - message i499(sy) with 'Data has been exported successfully'. - - clear: - ls_path, - li_document_size. - - close_document. - endmethod. - - - - - - - - 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 'B', - lc_top_left_row TYPE zexcel_cell_row VALUE 3. - - 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_value_lowercase TYPE string, - lv_syindex TYPE char3, - lv_errormessage TYPE string, "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: - <ls_field_catalog> TYPE zexcel_s_fieldcatalog, - <ls_field_catalog_custom> TYPE zexcel_s_fieldcatalog, - <fs_table_line> TYPE ANY, - <fs_fldval> 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=>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=>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 -*--------------------------------------------------------------------* - "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. - - "Calculate the top left row of the current table - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - lv_row_int = ls_settings-top_left_row. - - "Get number of row for the current table - DESCRIBE TABLE ip_table LINES lv_rows. - - "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=>convert_column2alpha( lv_maxcol ). - ls_settings-bottom_right_row = lv_maxrow. - - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - - lo_iterator = me->tables->if_object_collection~get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_curtable ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF ( ( ls_settings-top_left_row GE lo_curtable->settings-top_left_row AND ls_settings-top_left_row LE lo_curtable->settings-bottom_right_row ) - OR - ( ls_settings-bottom_right_row GE lo_curtable->settings-top_left_row AND ls_settings-bottom_right_row LE lo_curtable->settings-bottom_right_row ) - ) - AND - ( ( lv_column_int GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_column_int LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - OR - ( lv_maxcol GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_maxcol LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - ). - lv_errormessage = 'Table overlaps with previously bound table and will not be added to worksheet.'(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->settings = ls_settings. - lo_table->set_data( ir_data = ip_table ). - lv_id = me->excel->get_next_table_id( ). - lo_table->set_id( iv_id = lv_id ). -* lo_table->fieldcat = lt_field_catalog[]. - - me->tables->add( lo_table ). - -* It is better to loop column by column (only visible column) - LOOP AT lt_field_catalog ASSIGNING <ls_field_catalog> WHERE dynpfld EQ abap_true. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - " Due restrinction of new table object we cannot have two column with the same name - " Check if a column with the same name exists, if exists add a counter - " If no medium description is provided we try to use small or long -* lv_value = <ls_field_catalog>-scrtext_m. - IF <ls_field_catalog>-scrtext_m IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_m. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_s IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_s. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_l IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_l. - ELSE. - lv_value = 'Column'. " default value as Excel does - <ls_field_catalog>-scrtext_l = lv_value. - ENDIF. - WHILE 1 = 1. - lv_value_lowercase = lv_value. - TRANSLATE lv_value_lowercase TO LOWER CASE. - READ TABLE lt_column_name_buffer TRANSPORTING NO FIELDS WITH KEY table_line = lv_value_lowercase BINARY SEARCH. - IF sy-subrc <> 0. - <ls_field_catalog>-scrtext_l = lv_value. - INSERT lv_value_lowercase INTO TABLE lt_column_name_buffer. - EXIT. - ELSE. - lv_syindex = sy-index. - DO lv_syindex TIMES. - CONCATENATE lv_value ' ' INTO lv_value RESPECTING BLANKS. - ENDDO. - ENDIF. - ENDWHILE. - " First of all write column header - IF <ls_field_catalog>-style_header IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_value - ip_style = <ls_field_catalog>-style_header ). - ELSE. - me->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 <fs_table_line>. - - ASSIGN COMPONENT <ls_field_catalog>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - " issue #290 Add formula support in table - IF <ls_field_catalog>-formula EQ abap_true. - IF <ls_field_catalog>-style IS NOT INITIAL. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> - ip_abap_type = <ls_field_catalog>-abap_type - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ENDIF. - ELSE. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - - ip_formula = <fs_fldval> - ip_abap_type = <ls_field_catalog>-abap_type ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> ). - ENDIF. - ENDIF. - ELSE. - IF <ls_field_catalog>-style IS NOT INITIAL. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> - ip_abap_type = <ls_field_catalog>-abap_type - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ENDIF. - ELSE. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_abap_type = <ls_field_catalog>-abap_type - ip_value = <fs_fldval> ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> ). - ENDIF. - ENDIF. - ENDIF. - ADD 1 TO lv_row_int. - - ENDLOOP. - IF sy-subrc <> 0. "create empty row if table has no data - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = space ). - ADD 1 TO lv_row_int. - ENDIF. - -*--------------------------------------------------------------------* - " totals -*--------------------------------------------------------------------* - IF <ls_field_catalog>-totals_function IS NOT INITIAL. - lv_formula = lo_table->get_totals_formula( ip_column = <ls_field_catalog>-scrtext_l ip_function = <ls_field_catalog>-totals_function ). - IF <ls_field_catalog>-style_total IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = lv_formula - ip_style = <ls_field_catalog>-style_total ). - ELSE. - me->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. - -*--------------------------------------------------------------------* - " conditional formatting -*--------------------------------------------------------------------* - IF <ls_field_catalog>-cond_style IS NOT INITIAL. - lv_first_row = ls_settings-top_left_row + 1. " +1 to exclude header - lv_last_row = ls_settings-top_left_row + lv_rows. - <ls_field_catalog>-cond_style->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. - -*--------------------------------------------------------------------* - " Set field catalog -*--------------------------------------------------------------------* - lo_table->fieldcat = lt_field_catalog[]. - - es_table_settings = ls_settings. - es_table_settings-bottom_right_column = lv_column_alpha. - " >> Issue #291 - IF ip_table IS INITIAL. - es_table_settings-bottom_right_row = ls_settings-top_left_row + 2. "Last rows - ELSE. - es_table_settings-bottom_right_row = ls_settings-top_left_row + lv_rows + 1. "Last rows - ENDIF. - " << Issue #291 - - endmethod. - - - - - - - *--------------------------------------------------------------------* -* issue #293 - Roberto Bianco -* - Christian Assig 2014-03-14 -* -* changes: - Calculate widths using SAPscript font metrics -* (transaction SE73) -* - Calculate the width of dates -* - Add additional width for auto filter buttons -* - Add cell padding to simulate Excel behavior -*--------------------------------------------------------------------* -METHOD calculate_cell_width. - - CONSTANTS: - lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT - lc_default_font_height TYPE tdfontsize VALUE '110', - lc_excel_cell_padding TYPE float VALUE '0.75'. - - DATA: ld_cell_value TYPE zexcel_cell_value, - ld_current_character TYPE c LENGTH 1, - ld_style_guid TYPE zexcel_cell_style, - ls_stylemapping TYPE zexcel_s_stylemapping, - lo_table_object TYPE REF TO object, - lo_table TYPE REF TO zcl_excel_table, - ld_table_top_left_column TYPE zexcel_cell_column, - ld_table_bottom_right_column TYPE zexcel_cell_column, - ld_flag_contains_auto_filter TYPE abap_bool VALUE abap_false, - ld_flag_bold TYPE abap_bool VALUE abap_false, - ld_flag_italic TYPE abap_bool VALUE abap_false, - ld_date TYPE d, - ld_date_char TYPE c LENGTH 50, - ld_font_height TYPE tdfontsize VALUE lc_default_font_height, - lt_itcfc TYPE STANDARD TABLE OF itcfc, - ld_offset TYPE i, - ld_length TYPE i, - ld_uccp TYPE i, - ls_font_metric TYPE mty_s_font_metric, - ld_width_from_font_metrics TYPE i, - ld_font_family TYPE itcfh-tdfamily, - ld_font_name TYPE zexcel_style_font_name VALUE lc_default_font_name, - lt_font_families LIKE STANDARD TABLE OF ld_font_family, - ls_font_cache TYPE mty_s_font_cache. - - FIELD-SYMBOLS: <ls_font_cache> TYPE mty_s_font_cache, - <ls_font_metric> TYPE mty_s_font_metric, - <ls_itcfc> TYPE itcfc. - - " Determine cell content and cell style - me->get_cell( EXPORTING ip_column = ip_column - ip_row = ip_row - IMPORTING ep_value = ld_cell_value - ep_guid = ld_style_guid ). - - " ABAP2XLSX uses tables to define areas containing headers and - " auto-filters. Find out if the current cell is in the header - " of one of these tables. - LOOP AT me->tables->collection INTO lo_table_object. - " Downcast: OBJECT -> ZCL_EXCEL_TABLE - lo_table ?= lo_table_object. - - " Convert column letters to corresponding integer values - ld_table_top_left_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-top_left_column ). - - ld_table_bottom_right_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-bottom_right_column ). - - " Is the current cell part of the table header? - IF ip_column BETWEEN ld_table_top_left_column AND - ld_table_bottom_right_column AND - ip_row EQ lo_table->settings-top_left_row. - " Current cell is part of the table header - " -> Assume that an auto filter is present and that the font is - " bold - ld_flag_contains_auto_filter = abap_true. - ld_flag_bold = abap_true. - ENDIF. - ENDLOOP. - - " If a style GUID is present, read style attributes - IF ld_style_guid IS NOT INITIAL. - TRY. - " Read style attributes - ls_stylemapping = me->excel->get_style_to_guid( ld_style_guid ). - - " If the current cell contains the default date format, - " convert the cell value to a date and calculate its length - IF ls_stylemapping-complete_style-number_format-format_code = - zcl_excel_style_number_format=>c_format_date_std. - - " Convert excel date to ABAP date - ld_date = - zcl_excel_common=>excel_string_to_date( ld_cell_value ). - - " Format ABAP date using user's formatting settings - WRITE ld_date TO ld_date_char. - - " Remember the formatted date to calculate the cell size - ld_cell_value = ld_date_char. - - ENDIF. - - " Read the font size and convert it to the font height - " used by SAPscript (multiplication by 10) - IF ls_stylemapping-complete_stylex-font-size = abap_true. - ld_font_height = ls_stylemapping-complete_style-font-size * 10. - ENDIF. - - " If set, remember the font name - IF ls_stylemapping-complete_stylex-font-name = abap_true. - ld_font_name = ls_stylemapping-complete_style-font-name. - ENDIF. - - " If set, remember whether font is bold and italic. - IF ls_stylemapping-complete_stylex-font-bold = abap_true. - ld_flag_bold = ls_stylemapping-complete_style-font-bold. - ENDIF. - - IF ls_stylemapping-complete_stylex-font-italic = abap_true. - ld_flag_italic = ls_stylemapping-complete_style-font-italic. - ENDIF. - - CATCH zcx_excel. "#EC NO_HANDLER - " Style GUID is present, but style was not found - " Continue with default values - - ENDTRY. - ENDIF. - - " Check if the same font (font name and font attributes) was already - " used before - READ TABLE mth_font_cache - WITH TABLE KEY - font_name = ld_font_name - font_height = ld_font_height - flag_bold = ld_flag_bold - flag_italic = ld_flag_italic - ASSIGNING <ls_font_cache>. - - IF sy-subrc <> 0. - " Font is used for the first time - " Add the font to our local font cache - ls_font_cache-font_name = ld_font_name. - ls_font_cache-font_height = ld_font_height. - ls_font_cache-flag_bold = ld_flag_bold. - ls_font_cache-flag_italic = ld_flag_italic. - INSERT ls_font_cache INTO TABLE mth_font_cache - ASSIGNING <ls_font_cache>. - - " Determine the SAPscript font family name from the Excel - " font name - SELECT tdfamily - FROM tfo01 - INTO TABLE lt_font_families - UP TO 1 ROWS - WHERE tdtext = ld_font_name. - - " Check if a matching font family was found - " Fonts can be uploaded from TTF files using transaction SE73 - IF lines( lt_font_families ) > 0. - READ TABLE lt_font_families INDEX 1 INTO ld_font_family. - - " Load font metrics (returns a table with the size of each letter - " in the font) - CALL FUNCTION 'LOAD_FONT' - EXPORTING - family = ld_font_family - height = ld_font_height - printer = 'SWIN' - bold = ld_flag_bold - italic = ld_flag_italic - TABLES - metric = lt_itcfc - EXCEPTIONS - font_family = 1 - codepage = 2 - device_type = 3 - OTHERS = 4. - IF sy-subrc <> 0. - CLEAR lt_itcfc. - ENDIF. - - " For faster access, convert each character number to the actual - " character, and store the characters and their sizes in a hash - " table - LOOP AT lt_itcfc ASSIGNING <ls_itcfc>. - ld_uccp = <ls_itcfc>-cpcharno. - ls_font_metric-char = - cl_abap_conv_in_ce=>uccpi( ld_uccp ). - ls_font_metric-char_width = <ls_itcfc>-tdcwidths. - INSERT ls_font_metric - INTO TABLE <ls_font_cache>-th_font_metrics. - ENDLOOP. - - ENDIF. - ENDIF. - - " Calculate the cell width - " If available, use font metrics - IF lines( <ls_font_cache>-th_font_metrics ) = 0. - " Font metrics are not available - " -> Calculate the cell width using only the font size - ld_length = strlen( ld_cell_value ). - ep_width = ld_length * ld_font_height / lc_default_font_height + lc_excel_cell_padding. - - ELSE. - " Font metrics are available - - " Calculate the size of the text by adding the sizes of each - " letter - ld_length = strlen( ld_cell_value ). - DO ld_length TIMES. - " Subtract 1, because the first character is at offset 0 - ld_offset = sy-index - 1. - - " Read the current character from the cell value - ld_current_character = ld_cell_value+ld_offset(1). - - " Look up the size of the current letter - READ TABLE <ls_font_cache>-th_font_metrics - WITH TABLE KEY char = ld_current_character - ASSIGNING <ls_font_metric>. - IF sy-subrc = 0. - " The size of the letter is known - " -> Add the actual size of the letter - ADD <ls_font_metric>-char_width TO ld_width_from_font_metrics. - ELSE. - " The size of the letter is unknown - " -> Add the font height as the default letter size - ADD ld_font_height TO ld_width_from_font_metrics. - ENDIF. - ENDDO. - - " Add cell padding (Excel makes columns a bit wider than the space - " that is needed for the text itself) and convert unit - " (division by 100) - ep_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding. - ENDIF. - - " If the current cell contains an auto filter, make it a bit wider. - " The size used by the auto filter button does not depend on the font - " size. - IF ld_flag_contains_auto_filter = abap_true. - ADD 2 TO ep_width. - ENDIF. - -ENDMETHOD. - - - - 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." 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 float. - - FIELD-SYMBOLS: <column_dimension> LIKE LINE OF column_dimensions. - FIELD-SYMBOLS: <auto_size> LIKE LINE OF auto_sizes. - - column_dimensions[] = me->get_column_dimensions( ). - LOOP AT column_dimensions ASSIGNING <column_dimension>. - auto_size = <column_dimension>-column_dimension->get_auto_size( ). - IF auto_size = abap_true. - APPEND INITIAL LINE TO auto_sizes ASSIGNING <auto_size>. - <auto_size>-col_index = <column_dimension>-column_dimension->get_column_index( ). - <auto_size>-width = -1. - ENDIF. - ENDLOOP. - - " There is only something to do if there are some auto-size columns - IF NOT auto_sizes IS INITIAL. - highest_row = me->get_highest_row( ). - LOOP AT auto_sizes ASSIGNING <auto_size>. -* col_alpha = zcl_excel_common=>convert_column2alpha( <auto_size>-col_index )." issue #155 - less restrictive typing for ip_column - count = 1. - WHILE count <= highest_row. -* Do not check merged cells - IF is_cell_merged( - ip_column = <auto_size>-col_index - ip_row = count ) = abap_false. -* Start of change # issue 139 - Dateretention of cellstyles -* IF cell_style IS BOUND. -* CREATE OBJECT cell_style. -* ENDIF. -* me->get_cell( -* EXPORTING -* ip_column = col_alpha " Cell Column -* ip_row = count " Cell Row -* IMPORTING -* ep_value = cell_value " Cell Value -* ep_style = cell_style " Request Cell Style as well -* ). -* " For an easy start we just take the number of characters as the width -* width = strlen( cell_value ). -* " Addition to solve issue #120, contribution by Stefan Schmöcker -* " Calculate width using Font Size and Font Type -* IF cell_style IS BOUND -* AND cell_style->font IS BOUND. -* width = cell_style->font->calculate_text_width( cell_value ). -* ENDIF. -* width = calculate_cell_width( ip_column = col_alpha " issue #155 - less restrictive typing for ip_column - width = calculate_cell_width( ip_column = <auto_size>-col_index " issue #155 - less restrictive typing for ip_column - ip_row = count ). -* End of change # issue 139 - Dateretention of cellstyles - IF width > <auto_size>-width. - <auto_size>-width = width. - ENDIF. - ENDIF. - count = count + 1. - ENDWHILE. -* column_dimension = me->get_column_dimension( col_alpha ). " issue #155 - less restrictive typing for ip_column - column_dimension = me->get_column_dimension( <auto_size>-col_index ). " issue #155 - less restrictive typing for ip_column - column_dimension->set_width( <auto_size>-width ). - ENDLOOP. - ENDIF. - - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD change_cell_style. - " 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 zexcel_cell_style. "issue # 177 - -* We have a lot of parameters. Use some macros to make the coding more structured - - DEFINE clear_initial_colorxfields. - if &1-rgb is initial. - clear &2-rgb. - endif. - if &1-indexed is initial. - clear &2-indexed. - endif. - if &1-theme is initial. - clear &2-theme. - endif. - if &1-tint is initial. - clear &2-tint. - endif. - END-OF-DEFINITION. - - DEFINE move_supplied_borders. - if ip_&1 is supplied. " only act if parameter was supplied - if ip_x&1 is supplied. " - borderx = ip_x&1. " use supplied x-parameter - else. - clear borderx with 'X'. -* clear in a way that would be expected to work easily - if ip_&1-border_style is initial. - clear borderx-border_style. - endif. - clear_initial_colorxfields ip_&1-border_color borderx-border_color. - endif. - move-corresponding ip_&1 to complete_style-&2. - move-corresponding borderx to complete_stylex-&2. - endif. - END-OF-DEFINITION. - -* First get current stylsettings - TRY. - me->get_cell( EXPORTING ip_column = ip_column " Cell Column - ip_row = ip_row " Cell Row - IMPORTING ep_guid = l_guid )." Cell Value ). "issue # 177 - - - stylemapping = me->excel->get_style_to_guid( l_guid ). "issue # 177 - complete_style = stylemapping-complete_style. - complete_stylex = stylemapping-complete_stylex. - CATCH zcx_excel. -* Error --> 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 = 'Complete styleinfo has to be supplied with corresponding X-field'. - 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 'X' TO: fontx-bold, - fontx-italic, - fontx-strikethrough, - fontx-underline_mode. - CLEAR fontx-color WITH 'X'. - clear_initial_colorxfields ip_font-color fontx-color. - IF ip_font-family IS NOT INITIAL. - fontx-family = 'X'. - ENDIF. - IF ip_font-name IS NOT INITIAL. - fontx-name = 'X'. - ENDIF. - IF ip_font-scheme IS NOT INITIAL. - fontx-scheme = 'X'. - ENDIF. - IF ip_font-size IS NOT INITIAL. - fontx-size = 'X'. - ENDIF. - IF ip_font-underline_mode IS NOT INITIAL. - fontx-underline_mode = 'X'. - 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 'X'. - 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 'X'. - 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 'X'. - 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_protection TO complete_style-protection. - IF ip_xprotection IS SUPPLIED. - MOVE-CORRESPONDING ip_xprotection TO complete_stylex-protection. - ELSE. - IF ip_protection-hidden IS NOT INITIAL. - complete_stylex-protection-hidden = 'X'. - ENDIF. - IF ip_protection-locked IS NOT INITIAL. - complete_stylex-protection-locked = 'X'. - 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_&1 is supplied. - complete_style-&2 = ip_&1. - complete_stylex-&2 = 'X'. - 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, - - fill_gradtype_type fill-gradtype-TYPE, - fill_gradtype_degree fill-gradtype-DEGREE, - fill_gradtype_bottom fill-gradtype-BOTTOM, - fill_gradtype_left fill-gradtype-LEFT, - fill_gradtype_top fill-gradtype-TOP, - fill_gradtype_right fill-gradtype-RIGHT, - fill_gradtype_position1 fill-gradtype-POSITION1, - fill_gradtype_position2 fill-gradtype-POSITION2, - fill_gradtype_position3 fill-gradtype-POSITION3, - - - - 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&paste of styles is requested - ep_guid = me->excel->get_static_cellstyle_guid( ip_cstyle_complete = complete_style - ip_cstylex_complete = complete_stylex ). - me->set_cell_style( ip_column = ip_column - ip_row = ip_row - ip_style = ep_guid ). - -ENDMETHOD. - - - - - - METHOD constructor. - DATA: lv_title TYPE zexcel_sheet_title. - - me->excel = ip_excel. - -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = me->guid. - me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call - - IF ip_title IS NOT INITIAL. - lv_title = ip_title. - ELSE. -* lv_title = me->guid. " del issue #154 - Names of worksheets - lv_title = me->generate_title( ). " ins issue #154 - Names of worksheets - ENDIF. - - me->set_title( ip_title = lv_title ). - - CREATE OBJECT sheet_setup. - CREATE OBJECT conditional_styles. - CREATE OBJECT data_validations. - CREATE OBJECT tables. - CREATE OBJECT ranges. " issue #163 - CREATE OBJECT mo_pagebreaks. - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - me->zif_excel_sheet_protection~initialize( ). - me->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. - - - - - METHOD delete_merge. - - FIELD-SYMBOLS: <ls_merged_cell> LIKE LINE OF me->mt_merged_cells. - DATA: is_merged TYPE abap_bool. -*--------------------------------------------------------------------* -* If cell information is passed delete merge including this cell, -* otherwise delete all merges -*--------------------------------------------------------------------* - IF ip_cell_column IS INITIAL - OR ip_cell_row IS INITIAL. - CLEAR me->mt_merged_cells. - ELSE. - LOOP AT me->mt_merged_cells ASSIGNING <ls_merged_cell>. - - is_merged = me->is_cell_merged( ip_column = ip_cell_column - ip_row = ip_cell_row ). - IF is_merged = abap_true. - DELETE me->mt_merged_cells. " Delete this merge, that includes this cell - EXIT. - ENDIF. - - ENDLOOP. - ENDIF. - -ENDMETHOD. - - - - - - METHOD delete_row_outline. - - DELETE me->mt_row_outlines WHERE row_from = iv_row_from - AND row_to = iv_row_to. - IF sy-subrc <> 0. " didn't find outline that was to be deleted - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Row outline to be deleted does not exist'. - ENDIF. - -ENDMETHOD. - - - - - - 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 = 'Pleas provide number of rows and/or columns to freeze'. - ENDIF. - - IF ip_num_columns IS SUPPLIED AND ip_num_columns <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of columns to freeze should be positive'. - ENDIF. - - IF ip_num_rows IS SUPPLIED AND ip_num_rows <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of rows to freeze should be positive'. - ENDIF. - - freeze_pane_cell_column = ip_num_columns + 1. - freeze_pane_cell_row = ip_num_rows + 1. - endmethod. - - - - 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->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = abap_true. - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - title = lo_worksheet->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. " Start counting with next number - DO. - title = sheetnumber. - SHIFT title LEFT DELETING LEADING space. - CONCATENATE 'Sheet'(001) title INTO ep_title. - INSERT ep_title INTO TABLE t_titles. - IF sy-subrc = 0. " Title not used so far --> take it - EXIT. - ENDIF. - - ADD 1 TO sheetnumber. - ENDDO. - endmethod. - - - - - method GET_ACTIVE_CELL. - - DATA: lv_active_column TYPE zexcel_cell_column_alpha, - lv_active_row TYPE string. - - lv_active_column = zcl_excel_common=>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. - - - - - - - - - - method GET_CELL. - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = zcl_excel_common=>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. " issue 139 - added this to be used for columnwidth calculation - - " 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->excel->get_styles_iterator( ). - WHILE style_iterator->has_next( ) = 'X'. - style ?= style_iterator->get_next( ). - IF style->get_guid( ) = ls_sheet_content-cell_style. - ep_style = style. - EXIT. - ENDIF. - ENDWHILE. - ENDIF. - endmethod. - - - - - - method GET_COLUMN_DIMENSION. - FIELD-SYMBOLS: <fs_column_dimension> LIKE LINE OF column_dimensions. - DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. " issue #155 - less restrictive typing for ip_column - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column )." issue #155 - less restrictive typing for ip_column - READ TABLE me->column_dimensions ASSIGNING <fs_column_dimension> - WITH KEY column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - - IF NOT <fs_column_dimension> IS ASSIGNED. - CREATE OBJECT r_column_dimension - EXPORTING - ip_index = lv_column_alpha " issue #155 - less restrictive typing for ip_column - ip_excel = me->excel " issue #157 - Allow style for columns - ip_worksheet = me. " issue #157 - Allow style for columns - APPEND INITIAL LINE TO me->column_dimensions ASSIGNING <fs_column_dimension>. - <fs_column_dimension>-column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - <fs_column_dimension>-column_dimension = r_column_dimension. - ELSE. - r_column_dimension = <fs_column_dimension>-column_dimension. - ENDIF. - - endmethod. - - - - method GET_COLUMN_DIMENSIONS. - r_column_dimension[] = me->column_dimensions[]. - endmethod. - - - - method GET_COND_STYLES_ITERATOR. - - eo_iterator = me->conditional_styles->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_ITERATOR. - - eo_iterator = me->data_validations->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_SIZE. - ep_size = me->data_validations->size( ). - endmethod. - - - - method GET_DEFAULT_COLUMN_DIMENSION. - IF me->default_column_dimension IS NOT BOUND. - CREATE OBJECT me->default_column_dimension - EXPORTING - ip_index = 'A' " ???? - ip_worksheet = me - ip_excel = me->excel. - ENDIF. - - r_column_dimension = me->default_column_dimension. - endmethod. - - - - method GET_DEFAULT_EXCEL_DATE_FORMAT. - CONSTANTS: c_lang_e TYPE lang VALUE 'E'. - - IF default_excel_date_format IS NOT INITIAL. - ep_default_excel_date_format = default_excel_date_format. - RETURN. - ENDIF. - - "try to get defaults - TRY. - cl_abap_datfm=>get_date_format_des( EXPORTING im_langu = c_lang_e - IMPORTING ex_dateformat = default_excel_date_format ). - CATCH cx_abap_datfm_format_unknown. - - ENDTRY. - - " and fallback to fixed format - IF default_excel_date_format IS INITIAL. - default_excel_date_format = zcl_excel_style_number_format=>c_format_date_ddmmyyyydot. - ENDIF. - - ep_default_excel_date_format = default_excel_date_format. - endmethod. - - - - 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's get default - l_timefm = cl_abap_timefm=>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=>c_format_date_time6. - WHEN 1. -*1 12 Hour Format (Example: 12:05:10 PM) - default_excel_time_format = zcl_excel_style_number_format=>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=>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=>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=>c_format_date_time2. - WHEN OTHERS. - " and fallback to fixed format - default_excel_time_format = zcl_excel_style_number_format=>c_format_date_time6. - ENDCASE. - - ep_default_excel_time_format = default_excel_time_format. - endmethod. - - - - method GET_DEFAULT_ROW_DIMENSION. - IF me->default_row_dimension IS NOT BOUND. - CREATE OBJECT me->default_row_dimension. - ENDIF. - - r_row_dimension = me->default_row_dimension. - endmethod. - - - - - method GET_DIMENSION_RANGE. - - me->update_dimension_range( ). - IF upper_cell EQ lower_cell. "only one cell - " Worksheet not filled -* IF upper_cell-cell_coords = '0'. - IF upper_cell-cell_coords IS INITIAL. - ep_dimension_range = 'A1'. - ELSE. - ep_dimension_range = upper_cell-cell_coords. - ENDIF. - ELSE. - CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. - ENDIF. - - endmethod. - - - - - 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=>type_image. - r_drawings = drawings. - WHEN zcl_excel_drawing=>type_chart. - r_drawings = charts. - WHEN space. - CREATE OBJECT r_drawings - EXPORTING - ip_type = ''. - - lo_iterator = drawings->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - lo_iterator = charts->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - WHEN OTHERS. - ENDCASE. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = charts->get_iterator( ). - ENDCASE. - endmethod. - - - - - method GET_FREEZE_CELL. - ep_row = me->freeze_pane_cell_row. - ep_column = me->freeze_pane_cell_column. - endmethod. - - - - METHOD get_guid. - - ep_guid = me->guid. - -ENDMETHOD. - - - - - method GET_HIGHEST_COLUMN. - me->update_dimension_range( ). - r_highest_column = me->lower_cell-cell_column. - endmethod. - - - - - METHOD get_highest_row. - me->update_dimension_range( ). - r_highest_row = me->lower_cell-cell_row. -ENDMETHOD. - - - - method GET_HYPERLINKS_ITERATOR. - eo_iterator = hyperlinks->get_iterator( ). - endmethod. - - - - method GET_HYPERLINKS_SIZE. - ep_size = hyperlinks->size( ). - endmethod. - - - - - METHOD get_merge. - - FIELD-SYMBOLS: <ls_merged_cell> LIKE LINE OF me->mt_merged_cells. - - DATA: lv_col_from TYPE string, - lv_col_to TYPE string, - lv_row_from TYPE string, - lv_row_to TYPE string, - lv_merge_range TYPE string. - - LOOP AT me->mt_merged_cells ASSIGNING <ls_merged_cell>. - - lv_col_from = zcl_excel_common=>convert_column2alpha( <ls_merged_cell>-col_from ). - lv_col_to = zcl_excel_common=>convert_column2alpha( <ls_merged_cell>-col_to ). - lv_row_from = <ls_merged_cell>-row_from. - lv_row_to = <ls_merged_cell>-row_to . - CONCATENATE lv_col_from lv_row_from ':' lv_col_to lv_row_to - INTO lv_merge_range. - CONDENSE lv_merge_range NO-GAPS. - APPEND lv_merge_range TO merge_range. - - ENDLOOP. - -ENDMETHOD. - - - - - method GET_PAGEBREAKS. - ro_pagebreaks = mo_pagebreaks. -endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - METHOD GET_ROW_DIMENSION. - - FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF me->row_dimensions. - - DATA: ls_row_dimension LIKE LINE OF me->row_dimensions. - - READ TABLE me->row_dimensions ASSIGNING <ls_row_dimension> - WITH TABLE KEY row = ip_row. - - IF NOT <ls_row_dimension> IS ASSIGNED. - CREATE OBJECT r_row_dimension - EXPORTING - ip_index = ip_row. - ls_row_dimension-row = ip_row. - ls_row_dimension-row_dimension = r_row_dimension. - INSERT ls_row_dimension INTO TABLE me->row_dimensions. - ELSE. - r_row_dimension = <ls_row_dimension>-row_dimension. - ENDIF. - -ENDMETHOD. - - - - METHOD get_row_dimensions. - - r_row_dimension[] = me->row_dimensions[]. - -ENDMETHOD. - - - - METHOD get_row_outlines. - - rt_row_outlines = me->mt_row_outlines. - -ENDMETHOD. - - - - method GET_TABCOLOR. - ev_tabcolor = me->tabcolor. - endmethod. - - - - method GET_TABLES_ITERATOR. - eo_iterator = tables->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TABLES_SIZE. - ep_size = tables->if_object_collection~size( ). - endmethod. - - - - - method GET_TITLE. - DATA lv_value TYPE string. - IF ip_escaped EQ abap_true. - lv_value = me->title. - ep_title = zcl_excel_common=>escape_string( lv_value ). - ELSE. - ep_title = me->title. - ENDIF. - endmethod. - - - - - - 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=>typekind_string. " Thats our default if something goes wrong. - - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ip_value ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - ENDTRY. - IF lo_addit IS BOUND. - lo_addit->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 'CONVERSION_EXIT_' ls_dfies-convexit '_OUTPUT' 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 <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ELSE. - TRY. - ep_value = l_value. - CATCH cx_root. - ep_value = ip_value. - ENDTRY. - ENDIF. - ENDIF. - ENDIF. - ELSE. - ep_value_type = lo_addit->get_data_type_kind( ip_value ). - ENDIF. - ENDIF. - -ENDMETHOD. - - - - - - - METHOD is_cell_merged. - - DATA: lv_column TYPE i. - - FIELD-SYMBOLS: <ls_merged_cell> LIKE LINE OF me->mt_merged_cells. - - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - - rp_is_merged = abap_false. " Assume not in merged area - - LOOP AT me->mt_merged_cells ASSIGNING <ls_merged_cell>. - - IF <ls_merged_cell>-col_from <= lv_column - AND <ls_merged_cell>-col_to >= lv_column - AND <ls_merged_cell>-row_from <= ip_row - AND <ls_merged_cell>-row_to >= ip_row. - rp_is_merged = abap_true. " until we are proven different - RETURN. - ENDIF. - - ENDLOOP. - -ENDMETHOD. - - - method PRINT_TITLE_SET_RANGE. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmoecker, 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->get_ranges_iterator( ). - WHILE lo_range_iterator->has_next( ) = abap_true. - - lo_range ?= lo_range_iterator->get_next( ). - IF lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - EXIT. " Found it - ENDIF. - CLEAR lo_range. - - ENDWHILE. - - - IF me->print_title_col_from IS INITIAL AND - me->print_title_row_from IS INITIAL. -*--------------------------------------------------------------------* -* No print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS BOUND. - me->ranges->remove( lo_range ). - ENDIF. - ELSE. -*--------------------------------------------------------------------* -* Print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS NOT BOUND. - lo_range = me->add_new_range( ). - lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - ENDIF. - - lv_repeat_range_sheetname = me->get_title( ). - lv_repeat_range_sheetname = zcl_excel_common=>escape_string( lv_repeat_range_sheetname ). - -*--------------------------------------------------------------------* -* Repeat-columns -*--------------------------------------------------------------------* - IF me->print_title_col_from IS NOT INITIAL. - CONCATENATE lv_repeat_range_sheetname - '!$' me->print_title_col_from - ':$' me->print_title_col_to - INTO lv_repeat_range_col. - ENDIF. - -*--------------------------------------------------------------------* -* Repeat-rows -*--------------------------------------------------------------------* - IF me->print_title_row_from IS NOT INITIAL. - lv_row_char_from = me->print_title_row_from. - lv_row_char_to = me->print_title_row_to. - CONCATENATE '!$' lv_row_char_from - ':$' 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 ','. - ENDIF. - - - lo_range->set_range_value( lv_repeat_range ). - ENDIF. - - - - endmethod. - - - - - - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_numeric> TYPE numeric, - <fs_date> TYPE d, - <fs_time> TYPE t, - <fs_value> TYPE simple. - - IF ip_value IS NOT SUPPLIED AND ip_formula IS NOT SUPPLIED. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please provide the value or formula'. - ENDIF. - -* Begin of change issue #152 - don't touch exisiting style if only value is passed -* lv_style_guid = ip_style. - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 - cell_column = lv_column. - IF sy-subrc = 0. - IF ip_style IS INITIAL. - " If no style is provided as method-parameter and cell is found use cell's current style - lv_style_guid = <fs_sheet_content>-cell_style. - ELSE. - " Style provided as method-parameter --> use this - lv_style_guid = ip_style. - ENDIF. - ELSE. - " No cell found --> use supplied style even if empty - lv_style_guid = ip_style. - ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - IF ip_value IS SUPPLIED. - "if data type is passed just write the value. Otherwise map abap type to excel and perform conversion - "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->* TO <fs_value>. - <fs_value> = 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 = <fs_value> ) . - ENDIF. - lv_value = <fs_value>. - 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 = <fs_value> - ep_value_type = lv_value_type ). - ENDIF. - CASE lv_value_type. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - lo_addit = cl_abap_elemdescr=>get_i( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - lo_addit = cl_abap_elemdescr=>get_f( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_char OR cl_abap_typedescr=>typekind_string OR cl_abap_typedescr=>typekind_num OR - cl_abap_typedescr=>typekind_hex. - lv_value = <fs_value>. - lv_data_type = 's'. - - WHEN cl_abap_typedescr=>typekind_date. - lo_addit = cl_abap_elemdescr=>get_d( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_date>. - IF sy-subrc = 0. - <fs_date> = <fs_value>. - lv_value = zcl_excel_common=>date_to_excel_string( ip_value = <fs_date> ) . - ENDIF. -* Begin of change issue #152 - don'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. "get default date format in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = get_default_excel_date_format( ). -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN cl_abap_typedescr=>typekind_time. - lo_addit = cl_abap_elemdescr=>get_t( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_time>. - IF sy-subrc = 0. - <fs_time> = <fs_value>. - lv_value = zcl_excel_common=>time_to_excel_string( ip_value = <fs_time> ). - ENDIF. -* Begin of change issue #152 - don'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. "get default time format for user in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_date_time6. -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid data type of input value'. - ENDCASE. - ENDIF. - - ENDIF. - - IF ip_hyperlink IS BOUND. - ip_hyperlink->set_cell_reference( ip_column = ip_column - ip_row = ip_row ). - me->hyperlinks->add( ip_hyperlink ). - ENDIF. - -* Begin of change issue #152 - don'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=>convert_column2int( ip_column ). - -* READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row -* cell_column = lv_column. -* -* IF sy-subrc EQ 0. - IF <fs_sheet_content> IS ASSIGNED. -* End of change issue #152 - don't touch exisiting style if only value is passed - <fs_sheet_content>-cell_value = lv_value. - <fs_sheet_content>-cell_formula = ip_formula. - <fs_sheet_content>-cell_style = lv_style_guid. - <fs_sheet_content>-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."del #152 - replaced with condense - should be faster -* SHIFT lv_row_alpha LEFT DELETING LEADING space. "del #152 - replaced with condense - should be faster - CONDENSE lv_row_alpha NO-GAPS. "ins #152 - replaced 2 shifts - should be faster - lv_col_alpha = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - CONCATENATE lv_col_alpha lv_row_alpha INTO ls_sheet_content-cell_coords. " issue #155 - less restrictive typing for ip_column - INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING <fs_sheet_content>. "ins #152 - Now <fs_sheet_content> always holds the data -* APPEND ls_sheet_content TO sheet_content. -* SORT sheet_content BY cell_row cell_column. - " me->update_dimension_range( ). - - ENDIF. - -* Begin of change issue #152 - don'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=>typekind_date. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_std. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_number_format_format_code = lo_format_code_datetime ). - - WHEN cl_abap_typedescr=>typekind_time. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_time6. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->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't touch exisiting style if only value is passed - -* Fix issue #162 - lv_value = ip_value. - IF lv_value CS cl_abap_char_utilities=>cr_lf. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_alignment_wraptext = abap_true ). - ENDIF. -* End of Fix issue #162 - - endmethod. - - - - - - - method SET_CELL_FORMULA. - DATA: - lv_column TYPE zexcel_cell_column, - ls_sheet_content LIKE LINE OF me->sheet_content. - - FIELD-SYMBOLS: - <sheet_content> LIKE LINE OF me->sheet_content. - -*--------------------------------------------------------------------* -* Get cell to set formula into -*--------------------------------------------------------------------* - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE me->sheet_content ASSIGNING <sheet_content> WITH TABLE KEY cell_row = ip_row - cell_column = lv_column. - IF sy-subrc <> 0. " Create new entry in sheet_content if necessary - CHECK ip_formula IS INITIAL. " no need to create new entry in sheet_content when no formula is passed - ls_sheet_content-cell_row = ip_row. - ls_sheet_content-cell_column = lv_column. - INSERT ls_sheet_content INTO TABLE me->sheet_content ASSIGNING <sheet_content>. - ENDIF. - -*--------------------------------------------------------------------* -* Fieldsymbol now holds the relevant cell -*--------------------------------------------------------------------* - <sheet_content>-cell_formula = ip_formula. - - - endmethod. - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_style_guid = ip_style. - - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row - cell_column = lv_column. - - IF sy-subrc EQ 0. - <fs_sheet_content>-cell_style = lv_style_guid. - ELSE. - set_cell( ip_column = ip_column ip_row = ip_row ip_value = '' ip_style = ip_style ). - ENDIF. - - endmethod. - - - - - - - method SET_COLUMN_WIDTH. - DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - DATA: width TYPE float. - - column_dimension = me->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 <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as column-width'. - ENDIF. - column_dimension->set_width( width ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - ENDIF. - -* If we get down to here, we have to use whatever is found in autosize. - column_dimension->set_auto_size( ip_width_autosize ). - - - endmethod. - - - - - method SET_DEFAULT_EXCEL_DATE_FORMAT. - - IF ip_default_excel_date_format IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Default date format cannot be blank'. - ENDIF. - - default_excel_date_format = ip_default_excel_date_format. - endmethod. - - - - - - - - METHOD set_merge. - - DATA: ls_merge TYPE mty_merge, - lv_errormessage TYPE string. - - FIELD-SYMBOLS: <ls_merge> LIKE LINE OF me->mt_merged_cells. - -*--------------------------------------------------------------------* -* Build new range area to insert into range table -*--------------------------------------------------------------------* - ls_merge-row_from = ip_row. - IF ip_row IS SUPPLIED AND ip_row IS NOT INITIAL AND ip_row_to IS NOT SUPPLIED. - ls_merge-row_to = ls_merge-row_from. - ELSE. - ls_merge-row_to = ip_row_to. - ENDIF. - IF ls_merge-row_from > ls_merge-row_to. - lv_errormessage = 'Merge: First row larger then last row'(405). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ls_merge-col_from = zcl_excel_common=>convert_column2int( ip_column_start ). - IF ip_column_start IS SUPPLIED AND ip_column_start IS NOT INITIAL AND ip_column_end IS NOT SUPPLIED. - ls_merge-col_to = ls_merge-col_from. - ELSE. - ls_merge-col_to = zcl_excel_common=>convert_column2int( ip_column_end ). - ENDIF. - IF ls_merge-col_from > ls_merge-col_to. - lv_errormessage = 'Merge: First column larger then last column'(406). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Check merge not overlapping with existing merges -*--------------------------------------------------------------------* - LOOP AT me->mt_merged_cells TRANSPORTING NO FIELDS WHERE NOT ( row_from > ls_merge-row_to - OR row_to < ls_merge-row_from - OR col_from > ls_merge-col_to - OR col_to < ls_merge-col_from ). - lv_errormessage = 'Overlapping merges'(404). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - - ENDLOOP. - -*--------------------------------------------------------------------* -* Everything seems ok --> add to merge table -*--------------------------------------------------------------------* - INSERT ls_merge INTO TABLE me->mt_merged_cells. - -ENDMETHOD. - - - - method SET_PRINT_GRIDLINES. - me->print_gridlines = i_print_gridlines. - endmethod. - - - - - - method SET_ROW_HEIGHT. - DATA: row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: height TYPE float. - - row_dimension = me->get_row_dimension( ip_row ). - -* if a fix size is supplied use this - TRY. - height = ip_height_fix. - IF height <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as row-height'. - ENDIF. - row_dimension->set_row_height( height ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - - - - endmethod. - - - - - - - METHOD set_row_outline. - - DATA: ls_row_outline LIKE LINE OF me->mt_row_outlines. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF me->mt_row_outlines. - - READ TABLE me->mt_row_outlines ASSIGNING <ls_row_outline> WITH TABLE KEY row_from = iv_row_from - row_to = iv_row_to. - IF sy-subrc <> 0. - IF iv_row_from <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'First row of outline must be a positive number'. - ENDIF. - IF iv_row_to < iv_row_from. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Last row of outline may not be less than first line of outline'. - ENDIF. - ls_row_outline-row_from = iv_row_from. - ls_row_outline-row_to = iv_row_to. - INSERT ls_row_outline INTO TABLE me->mt_row_outlines ASSIGNING <ls_row_outline>. - ENDIF. - - CASE iv_collapsed. - - WHEN abap_true - OR abap_false. - <ls_row_outline>-collapsed = iv_collapsed. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unknown collapse state'. - - ENDCASE. -ENDMETHOD. - - - - method SET_SHOW_GRIDLINES. - me->show_gridlines = i_show_gridlines. - endmethod. - - - - method SET_SHOW_ROWCOLHEADERS. - me->show_rowcolheaders = i_show_rowcolheaders. - endmethod. - - - - method SET_TABCOLOR. - me->tabcolor = iv_tabcolor. - endmethod. - - - - - - - - - - - - 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 2, - lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - 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: <fs_table_line> TYPE ANY, - <fs_fldval> TYPE ANY, - <fs_dfies> TYPE dfies, - <fs_cell_value> TYPE zexcel_cell_value. - - lv_column_int = zcl_excel_common=>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=>describe_by_data_ref( lr_data ). - - ls_header = lo_tabdescr->get_ddic_header( ). - - lt_dfies = lo_tabdescr->get_ddic_field_list( ). - -* It is better to loop column by column - LOOP AT lt_dfies ASSIGNING <fs_dfies>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - IF ip_no_header = abap_false. - " First of all write column header - lv_cell_value = <fs_dfies>-scrtext_m. - me->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 <fs_table_line>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - ASSIGN COMPONENT <fs_dfies>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - MOVE <fs_fldval> TO lv_cell_value. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> "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=>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. - - - - - method SET_TITLE. -*--------------------------------------------------------------------* -* ToDos: -* 2do §1 The current coding for replacing a named ranges name -* after renaming a sheet should be checked if it is -* really working if sheetname should be escaped -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (wip ) 2012-12-08 -* - ... -* changes: aligning code -* message made to support multilinguality -*--------------------------------------------------------------------* -* issue#243 - ' is not allowed as first character in sheet title -* - Stefan Schmoecker, 2012-12-02 -* changes: added additional check for ' as first character -*--------------------------------------------------------------------* - 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, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Check whether title consists only of allowed characters -* Illegal characters are: / \ [ ] * ? : --> http://msdn.microsoft.com/en-us/library/ff837411.aspx -* Illegal characters not in documentation: ' as first character -*--------------------------------------------------------------------* - IF ip_title CA '/\[]*?:'. - lv_errormessage = 'Found illegal character in sheetname. List of forbidden characters: /\[]*?:'(402). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF ip_title IS NOT INITIAL AND ip_title(1) = `'`. - lv_errormessage = 'Sheetname may not start with &'(403). " & used instead of ' to allow fallbacklanguage - REPLACE '&' IN lv_errormessage WITH `'`. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -*--------------------------------------------------------------------* -* Check whether title is unique in workbook -*--------------------------------------------------------------------* - lo_worksheets_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = 'X'. - - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - CHECK me->guid <> lo_worksheet->get_guid( ). " Don't check against itself - IF ip_title = lo_worksheet->get_title( ). " Not unique --> raise exception - errormessage = 'Duplicate sheetname &'. - REPLACE '&' IN errormessage WITH ip_title. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = errormessage. - ENDIF. - - ENDWHILE. - -*--------------------------------------------------------------------* -* Remember old sheetname and rename sheet to desired name -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_old. - me->title = ip_title. - -*--------------------------------------------------------------------* -* After changing this worksheet's title we have to adjust -* all ranges that are referring to this worksheet. -*--------------------------------------------------------------------* -* 2do §1 - Check if the following quickfix is solid -* I fear it isn't - but this implementation is better then -* nothing at all since it handles a supposed majority of cases -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_new. - - lo_ranges_iterator = me->excel->get_ranges_iterator( ). - WHILE lo_ranges_iterator->has_next( ) = 'X'. - - lo_range ?= lo_ranges_iterator->get_next( ). - lv_range_value = lo_range->get_value( ). - REPLACE ALL OCCURRENCES OF lv_rangesheetname_old IN lv_range_value WITH lv_rangesheetname_new. - IF sy-subrc = 0. - lo_range->set_range_value( lv_range_value ). - ENDIF. - - ENDWHILE. - - - endmethod. - - - - 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. - "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=>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. - - "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=>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. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ADD. - - worksheets->add( ip_worksheet ). - - endmethod. - - - method CLEAR. - - worksheets->clear( ). - - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT worksheets. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_worksheet ?= worksheets->if_object_collection~get( lv_index ). - - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= worksheets->if_object_collection~get_iterator( ). - - endmethod. - - - - method IS_EMPTY. - - is_empty = worksheets->if_object_collection~is_empty( ). - - endmethod. - - - - method REMOVE. - - worksheets->remove( ip_worksheet ). - - endmethod. - - - - method SIZE. - - ep_size = worksheets->if_object_collection~size( ). - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - method CONSTRUCTOR. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - me->width = -1. - me->auto_size = abap_false. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - me->excel = ip_excel. "ins issue #157 - Allow Style for columns - me->worksheet = ip_worksheet. "ins issue #157 - Allow Style for columns - - " set default index to cellXf - me->xf_index = 0. - - endmethod. - - - - method GET_AUTO_SIZE. - r_auto_size = me->auto_size. - endmethod. - - - - method GET_COLLAPSED. - r_Collapsed = me->Collapsed. - endmethod. - - - - method GET_COLUMN_INDEX. - r_column_index = me->column_index. - endmethod. - - - - - method GET_COLUMN_STYLE_GUID. - IF me->style_guid IS NOT INITIAL. - ep_style_guid = me->style_guid. - ELSE. - ep_style_guid = me->worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - endmethod. - - - - method GET_OUTLINE_LEVEL. - r_outline_level = me->outline_level. - endmethod. - - - - method GET_VISIBLE. - r_Visible = me->Visible. - endmethod. - - - - method GET_WIDTH. - r_WIDTH = me->WIDTH. - endmethod. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - - method SET_AUTO_SIZE. - me->auto_size = ip_auto_size. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLLAPSED. - me->Collapsed = ip_Collapsed. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_INDEX. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_STYLE_BY_GUID. - DATA: stylemapping TYPE zexcel_s_stylemapping. - - IF me->excel IS NOT BOUND. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Internal error - reference to ZCL_EXCEL not bound'. - ENDIF. - TRY. - stylemapping = me->excel->get_style_to_guid( ip_style_guid ). - me->style_guid = stylemapping-guid. - - CATCH zcx_excel . - EXIT. " leave as is in case of error - ENDTRY. - - endmethod. - - - - method SET_OUTLINE_LEVEL. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_VISIBLE. - me->Visible = ip_Visible. - r_worksheet_columndime = me. - endmethod. - - - - - - method SET_WIDTH. - TRY. - me->width = ip_width. - r_worksheet_columndime = me. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret width as number'. - ENDTRY. - endmethod. - - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - r_worksheet_columndime = me. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD add_pagebreak. - DATA: ls_pagebreak LIKE LINE OF me->mt_pagebreaks. - - ls_pagebreak-cell_row = ip_row. - ls_pagebreak-cell_column = zcl_excel_common=>convert_column2int( ip_column ). - - INSERT ls_pagebreak INTO TABLE me->mt_pagebreaks. - - -ENDMETHOD. - - - - METHOD get_all_pagebreaks. - rt_pagebreaks = me->mt_pagebreaks. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - method CONSTRUCTOR. - " Initialise values - me->row_index = ip_index. - me->row_height = -1. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - - " set row dimension as unformatted by default - me->xf_index = 0. - endmethod. - - - - - METHOD get_collapsed. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - lv_previous_row TYPE i, - lv_following_row TYPE i. - - r_collapsed = me->collapsed. - - CHECK r_collapsed = abap_false. " Maybe new method for outlines is being used - CHECK io_worksheet IS BOUND. - -* If an outline is collapsed ( even inside an outer outline ) the line following the last line -* of the group gets the flag "collapsed" - IF io_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. - lv_following_row = me->row_index + 1. - lt_row_outlines = io_worksheet->get_row_outlines( ). - READ TABLE lt_row_outlines TRANSPORTING NO FIELDS WITH KEY row_from = lv_following_row " first line of an outline - collapsed = abap_true. " that is collapsed - ELSE. - lv_previous_row = me->row_index - 1. - lt_row_outlines = io_worksheet->get_row_outlines( ). - READ TABLE lt_row_outlines TRANSPORTING NO FIELDS WITH KEY row_to = lv_previous_row " last line of an outline - collapsed = abap_true. " that is collapsed - ENDIF. - CHECK sy-subrc = 0. " ok - we found it - r_collapsed = abap_true. - - -ENDMETHOD. - - - - - METHOD get_outline_level. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF lt_row_outlines. - -* if someone has set the outline level explicitly - just use that - IF me->outline_level IS NOT INITIAL. - r_outline_level = me->outline_level. - RETURN. - ENDIF. -* Maybe we can use the outline information in the worksheet - CHECK io_worksheet IS BOUND. - - lt_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lt_row_outlines ASSIGNING <ls_row_outline> WHERE row_from <= me->row_index - AND row_to >= me->row_index. - - ADD 1 TO r_outline_level. - - ENDLOOP. - -ENDMETHOD. - - - - method GET_ROW_HEIGHT. - r_row_height = me->row_height. - endmethod. - - - - method GET_ROW_INDEX. - r_row_index = me->row_index. - endmethod. - - - - - METHOD get_visible. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF lt_row_outlines. - - r_visible = me->visible. - CHECK r_visible = 'X'. " Currently visible --> but maybe the new outline methodology will hide it implicitly - CHECK io_worksheet IS BOUND. " But we have to see the worksheet to make sure - - lt_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lt_row_outlines ASSIGNING <ls_row_outline> WHERE row_from <= me->row_index - AND row_to >= me->row_index - AND collapsed = abap_true. " row is in a collapsed outline --> not visible - CLEAR r_visible. - RETURN. " one hit is enough to ensure invisibility - - ENDLOOP. - -ENDMETHOD. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - method SET_COLLAPSED. - me->collapsed = ip_collapsed. - endmethod. - - - - - method SET_OUTLINE_LEVEL. - IF ip_outline_level < 0 - OR ip_outline_level > 7. - - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Outline level must range between 0 and 7.'. - - ENDIF. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_ROW_HEIGHT. - TRY. - me->row_height = ip_row_height. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret ip_row_height as number'. - ENDTRY. - endmethod. - - - - method SET_ROW_INDEX. - me->row_index = ip_index. - endmethod. - - - - method SET_VISIBLE. - me->visible = ip_visible. - endmethod. - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - - ep_file = me->create( ). - endmethod. - - - - METHOD add_further_data_to_zip. -* Can be used by child classes like xlsm-writer to write additional data to zip archive -ENDMETHOD. - - - - method CREATE. - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - - "-------------Added by Alessandro Iannacci - Only if template exist - IF lv_content IS NOT INITIAL AND me->excel->use_template EQ abap_true. - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ELSE. "ADD CUSTOM CHART!!!! - lv_content = me->create_xl_charts( lo_drawing ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDIF. - "------------------------------------------------- - ENDWHILE. - -* Second to last step: Allow further information put into the zip archive by child classes - me->add_further_data_to_zip( lo_zip ). - -********************************************************************** -* Last step: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - - method CREATE_CONTENT_TYPES. - - -** Constant node name - DATA: lc_xml_node_types TYPE string VALUE 'Types', - lc_xml_node_override TYPE string VALUE 'Override', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - " Node namespace - lc_xml_node_types_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/content-types', - " Node extension - lc_xml_node_rels_ext TYPE string VALUE 'rels', - lc_xml_node_xml_ext TYPE string VALUE 'xml', - " Node partnumber - lc_xml_node_theme_pn TYPE string VALUE '/xl/theme/theme1.xml', - lc_xml_node_styles_pn TYPE string VALUE '/xl/styles.xml', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_props_pn TYPE string VALUE '/docProps/app.xml', - lc_xml_node_worksheet_pn TYPE string VALUE '/xl/worksheets/sheet#.xml', - lc_xml_node_strings_pn TYPE string VALUE '/xl/sharedStrings.xml', - lc_xml_node_core_pn TYPE string VALUE '/docProps/core.xml', - lc_xml_node_chart_pn TYPE string VALUE '/xl/charts/chart#.xml', - " Node contentType - lc_xml_node_theme_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.theme+xml', - lc_xml_node_styles_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', - lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', - lc_xml_node_rels_ct TYPE string VALUE 'application/vnd.openxmlformats-package.relationships+xml', - lc_xml_node_xml_ct TYPE string VALUE 'application/xml', - lc_xml_node_props_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.extended-properties+xml', - lc_xml_node_worksheet_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', - lc_xml_node_strings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', - lc_xml_node_core_ct TYPE string VALUE 'application/vnd.openxmlformats-package.core-properties+xml', - lc_xml_node_table_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml', - lc_xml_node_drawings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawing+xml', - lc_xml_node_chart_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table. - - DATA: lv_worksheets_num TYPE i, - lv_worksheets_numc TYPE numc3, - lv_xml_node_worksheet_pn TYPE string, - lv_xml_size TYPE i, - lv_value TYPE string, - lv_drawing_index TYPE i VALUE 1, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node types - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_types - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_types_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_rels_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_rels_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_xml_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_xml_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_theme_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_theme_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_styles_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_styles_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Workbook node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_workb_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Properties node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_props_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_props_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Worksheet node - lv_worksheets_num = excel->get_worksheets_size( ). - DO lv_worksheets_num TIMES. - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - - MOVE sy-index TO lv_worksheets_numc. - SHIFT lv_worksheets_numc LEFT DELETING LEADING '0'. - lv_xml_node_worksheet_pn = lc_xml_node_worksheet_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_worksheet_pn WITH lv_worksheets_numc. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_xml_node_worksheet_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_worksheet_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - lo_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - - lv_value = lo_table->get_name( ). - CONCATENATE '/xl/tables/' lv_value '.xml' INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_table_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Drawings - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lv_index_str = lv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - CONCATENATE '/' me->c_xl_drawings INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_drawings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - - " media mimes - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - lt_media_type TYPE TABLE OF mimetypes-extension, - lv_media_type TYPE mimetypes-extension, - lv_mime_type TYPE mimetypes-type. - - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_media_type = lo_drawing->get_media_type( ). - COLLECT lv_media_type INTO lt_media_type. - ENDWHILE. - - LOOP AT lt_media_type INTO lv_media_type. - CALL FUNCTION 'SDOK_MIMETYPE_GET' - EXPORTING - extension = lv_media_type - IMPORTING - mimetype = lv_mime_type. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lv_value = lv_media_type. - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lv_value ). - lv_value = lv_mime_type. - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - - " Charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lv_index_str = lo_drawing->get_index( ). - CONDENSE lv_index_str. - lv_value = lc_xml_node_chart_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_value WITH lv_index_str. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_chart_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_strings_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_strings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_core_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_core_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_APP. - - -** Constant node name - DATA: lc_xml_node_properties TYPE string VALUE 'Properties', - lc_xml_node_application TYPE string VALUE 'Application', - lc_xml_node_docsecurity TYPE string VALUE 'DocSecurity', - lc_xml_node_scalecrop TYPE string VALUE 'ScaleCrop', - lc_xml_node_headingpairs TYPE string VALUE 'HeadingPairs', - lc_xml_node_vector TYPE string VALUE 'vector', - lc_xml_node_variant TYPE string VALUE 'variant', - lc_xml_node_lpstr TYPE string VALUE 'lpstr', - lc_xml_node_i4 TYPE string VALUE 'i4', - lc_xml_node_titlesofparts TYPE string VALUE 'TitlesOfParts', - lc_xml_node_company TYPE string VALUE 'Company', - lc_xml_node_linksuptodate TYPE string VALUE 'LinksUpToDate', - lc_xml_node_shareddoc TYPE string VALUE 'SharedDoc', - lc_xml_node_hyperlinkschanged TYPE string VALUE 'HyperlinksChanged', - lc_xml_node_appversion TYPE string VALUE 'AppVersion', - " Namespace prefix - lc_vt_ns TYPE string VALUE 'vt', - lc_xml_node_props_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', - lc_xml_node_props_vt_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - " Node attributes - lc_xml_attr_size TYPE string VALUE 'size', - lc_xml_attr_basetype TYPE string VALUE 'baseType'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element_vector TYPE REF TO if_ixml_element, - lo_sub_element_variant TYPE REF TO if_ixml_element, - lo_sub_element_lpstr TYPE REF TO if_ixml_element, - lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node properties - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_properties - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_props_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:vt' - value = lc_xml_node_props_vt_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Application - lo_element = lo_document->create_simple_element( name = lc_xml_node_application - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~application. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " DocSecurity - lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~docsecurity. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " ScaleCrop - lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~scalecrop ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HeadingPairs - lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = '2' ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_variant ). - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** i4 node - lo_sub_element_i4 = lo_document->create_simple_element_ns( name = lc_xml_node_i4 - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_i4 ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " HeadingPairs - - - " TitlesOfParts - lo_element = lo_document->create_simple_element( name = lc_xml_node_titlesofparts - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = lv_value ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_lpstr ). - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " ** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->get_title( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_vector->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - ENDWHILE. - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " TitlesOfParts - - - - " Company - IF excel->zif_excel_book_properties~company IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_company - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~company. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " LinksUpToDate - lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~linksuptodate ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " SharedDoc - lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~shareddoc ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HyperlinksChanged - lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~hyperlinkschanged ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " AppVersion - lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~appversion. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_CORE. - - -** Constant node name - DATA: lc_xml_node_coreproperties TYPE string VALUE 'coreProperties', - lc_xml_node_creator TYPE string VALUE 'creator', - lc_xml_node_description TYPE string VALUE 'description', - lc_xml_node_lastmodifiedby TYPE string VALUE 'lastModifiedBy', - lc_xml_node_created TYPE string VALUE 'created', - lc_xml_node_modified TYPE string VALUE 'modified', - " Node attributes - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_target TYPE string VALUE 'dcterms:W3CDTF', - " Node namespace - lc_cp_ns TYPE string VALUE 'cp', - lc_dc_ns TYPE string VALUE 'dc', - lc_dcterms_ns TYPE string VALUE 'dcterms', -* lc_dcmitype_ns TYPE string VALUE 'dcmitype', - lc_xsi_ns TYPE string VALUE 'xsi', - lc_xml_node_cp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', - lc_xml_node_dc_ns TYPE string VALUE 'http://purl.org/dc/elements/1.1/', - lc_xml_node_dcterms_ns TYPE string VALUE 'http://purl.org/dc/terms/', - lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', - lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_value TYPE string, - lv_date TYPE sydatum, - lv_time TYPE syuzeit. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node coreProperties - lo_element_root = lo_document->create_simple_element_ns( name = lc_xml_node_coreproperties - prefix = lc_cp_ns - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:cp' - value = lc_xml_node_cp_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dc' - value = lc_xml_node_dc_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcterms' - value = lc_xml_node_dcterms_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcmitype' - value = lc_xml_node_dcmitype_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:xsi' - value = lc_xml_node_xsi_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Creator node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_creator - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~creator. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Description node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_description - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~description. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " lastModifiedBy node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby - prefix = lc_cp_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~lastmodifiedby. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Created node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - - CONVERT TIME STAMP excel->zif_excel_book_properties~created TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~created. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Modified node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - CONVERT TIME STAMP excel->zif_excel_book_properties~modified TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~modified. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - - - - METHOD create_dxf_style. - - CONSTANTS: lc_xml_node_dxf TYPE string VALUE 'dxf', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - y TYPE i VALUE 0. - - DATA: ls_styles_mapping TYPE zexcel_s_styles_mapping, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lv_index TYPE i, - ls_font TYPE zexcel_s_style_font, - lo_element_font TYPE REF TO if_ixml_element, - lv_value TYPE string, - ls_fill TYPE zexcel_s_style_fill, - lo_element_fill TYPE REF TO if_ixml_element, - x. - - CHECK iv_cell_style IS NOT INITIAL. - - READ TABLE me->styles_mapping INTO ls_styles_mapping WITH KEY guid = iv_cell_style. - ADD 1 TO ls_styles_mapping-style. " the numbering starts from 0 - READ TABLE it_cellxfs INTO ls_cellxfs INDEX ls_styles_mapping-style. - ADD 1 TO ls_cellxfs-fillid. " the numbering starts from 0 - - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY style = ls_styles_mapping-style. - IF sy-subrc EQ 0. - ls_style_cond_mapping-guid = iv_cell_style. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ELSE. - ls_style_cond_mapping-guid = iv_cell_style. - ls_style_cond_mapping-style = ls_styles_mapping-style. - ls_style_cond_mapping-dxf = cv_dfx_count. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ADD 1 TO cv_dfx_count. - - " dxf node - lo_sub_element = io_ixml_document->create_simple_element( name = lc_xml_node_dxf - parent = io_ixml_document ). - - "Conditional formatting font style correction by Alessandro Iannacci START - lv_index = ls_cellxfs-fontid + 1. - READ TABLE it_fonts INTO ls_font INDEX lv_index. - IF ls_font IS NOT INITIAL. - lo_element_font = io_ixml_document->create_simple_element( name = lc_xml_node_font - parent = io_ixml_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_b - parent = io_ixml_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_i - parent = io_ixml_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_u - parent = io_ixml_document ). - lv_value = ls_font-underline_mode. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_strike - parent = io_ixml_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - "color - create_xl_styles_color_node( - io_document = io_ixml_document - io_parent = lo_element_font - is_color = ls_font-color ). - lo_sub_element->append_child( new_child = lo_element_font ). - ENDIF. - "---Conditional formatting font style correction by Alessandro Iannacci END - - - READ TABLE it_fills INTO ls_fill INDEX ls_cellxfs-fillid. - IF ls_fill IS NOT INITIAL. - " fill properties - lo_element_fill = io_ixml_document->create_simple_element( name = lc_xml_node_fill - parent = io_ixml_document ). - "pattern - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_patternfill - parent = io_ixml_document ). - lv_value = ls_fill-filltype. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = io_ixml_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = io_ixml_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - - lo_element_fill->append_child( new_child = lo_sub_element_2 ). "pattern - - lo_sub_element->append_child( new_child = lo_element_fill ). - ENDIF. - ENDIF. - - io_dxf_element->append_child( new_child = lo_sub_element ). -ENDMETHOD. - - - - method CREATE_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_rId1_id TYPE string VALUE 'rId1', - lc_xml_node_rId2_id TYPE string VALUE 'rId2', - lc_xml_node_rId3_id TYPE string VALUE 'rId3', - " Node type - lc_xml_node_rId1_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - lc_xml_node_rId2_tp TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lc_xml_node_rId3_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - " Node target - lc_xml_node_rId1_tg TYPE string VALUE 'xl/workbook.xml', - lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', - lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId3_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId3_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId2_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId2_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId1_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId1_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_CHARTS. - - -** Constant node name - CONSTANTS: lc_xml_node_chartspace TYPE string VALUE 'c:chartSpace', - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_date1904 TYPE string VALUE 'c:date1904', - lc_xml_node_lang TYPE string VALUE 'c:lang', - lc_xml_node_roundedcorners TYPE string VALUE 'c:roundedCorners', - lc_xml_node_altcont TYPE string VALUE 'mc:AlternateContent', - lc_xml_node_altcont_ns_mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_choice TYPE string VALUE 'mc:Choice', - lc_xml_node_choice_ns_requires TYPE string VALUE 'c14', - lc_xml_node_choice_ns_c14 TYPE string VALUE 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart', - lc_xml_node_style TYPE string VALUE 'c14:style', - lc_xml_node_fallback TYPE string VALUE 'mc:Fallback', - lc_xml_node_style2 TYPE string VALUE 'c:style', - - "---------------------------CHART - lc_xml_node_chart TYPE string VALUE 'c:chart', - lc_xml_node_autotitledeleted TYPE string VALUE 'c:autoTitleDeleted', - "plotArea - lc_xml_node_plotarea TYPE string VALUE 'c:plotArea', - lc_xml_node_layout TYPE string VALUE 'c:layout', - lc_xml_node_varycolors TYPE string VALUE 'c:varyColors', - lc_xml_node_ser TYPE string VALUE 'c:ser', - lc_xml_node_idx TYPE string VALUE 'c:idx', - lc_xml_node_order TYPE string VALUE 'c:order', - lc_xml_node_tx TYPE string VALUE 'c:tx', - lc_xml_node_v TYPE string VALUE 'c:v', - lc_xml_node_val TYPE string VALUE 'c:val', - lc_xml_node_cat TYPE string VALUE 'c:cat', - lc_xml_node_numref TYPE string VALUE 'c:numRef', - lc_xml_node_strref TYPE string VALUE 'c:strRef', - lc_xml_node_f TYPE string VALUE 'c:f', "this is the range - lc_xml_node_overlap TYPE string VALUE 'c:overlap', - "note: numcache avoided - lc_xml_node_dlbls TYPE string VALUE 'c:dLbls', - lc_xml_node_showlegendkey TYPE string VALUE 'c:showLegendKey', - lc_xml_node_showval TYPE string VALUE 'c:showVal', - lc_xml_node_showcatname TYPE string VALUE 'c:showCatName', - lc_xml_node_showsername TYPE string VALUE 'c:showSerName', - lc_xml_node_showpercent TYPE string VALUE 'c:showPercent', - lc_xml_node_showbubblesize TYPE string VALUE 'c:showBubbleSize', - "plotArea->pie - lc_xml_node_piechart TYPE string VALUE 'c:pieChart', - lc_xml_node_showleaderlines TYPE string VALUE 'c:showLeaderLines', - lc_xml_node_firstsliceang TYPE string VALUE 'c:firstSliceAng', - "plotArea->line - lc_xml_node_linechart TYPE string VALUE 'c:lineChart', - lc_xml_node_symbol TYPE string VALUE 'c:symbol', - lc_xml_node_marker TYPE string VALUE 'c:marker', - lc_xml_node_smooth TYPE string VALUE 'c:smooth', - "plotArea->bar - lc_xml_node_invertifnegative TYPE string VALUE 'c:invertIfNegative', - lc_xml_node_barchart TYPE string VALUE 'c:barChart', - lc_xml_node_bardir TYPE string VALUE 'c:barDir', - lc_xml_node_gapwidth TYPE string VALUE 'c:gapWidth', - "plotArea->line + plotArea->bar - lc_xml_node_grouping TYPE string VALUE 'c:grouping', - lc_xml_node_axid TYPE string VALUE 'c:axId', - lc_xml_node_catax TYPE string VALUE 'c:catAx', - lc_xml_node_valax TYPE string VALUE 'c:valAx', - lc_xml_node_scaling TYPE string VALUE 'c:scaling', - lc_xml_node_orientation TYPE string VALUE 'c:orientation', - lc_xml_node_delete TYPE string VALUE 'c:delete', - lc_xml_node_axpos TYPE string VALUE 'c:axPos', - lc_xml_node_numfmt TYPE string VALUE 'c:numFmt', - lc_xml_node_majorgridlines TYPE string VALUE 'c:majorGridlines', - lc_xml_node_majortickmark TYPE string VALUE 'c:majorTickMark', - lc_xml_node_minortickmark TYPE string VALUE 'c:minorTickMark', - lc_xml_node_ticklblpos TYPE string VALUE 'c:tickLblPos', - lc_xml_node_crossax TYPE string VALUE 'c:crossAx', - lc_xml_node_crosses TYPE string VALUE 'c:crosses', - lc_xml_node_auto TYPE string VALUE 'c:auto', - lc_xml_node_lblalgn TYPE string VALUE 'c:lblAlgn', - lc_xml_node_lbloffset TYPE string VALUE 'c:lblOffset', - lc_xml_node_nomultilvllbl TYPE string VALUE 'c:noMultiLvlLbl', - lc_xml_node_crossbetween TYPE string VALUE 'c:crossBetween', - "legend - lc_xml_node_legend TYPE string VALUE 'c:legend', - "legend->pie - lc_xml_node_legendpos TYPE string VALUE 'c:legendPos', -* lc_xml_node_layout TYPE string VALUE 'c:layout', "already exist - lc_xml_node_overlay TYPE string VALUE 'c:overlay', - lc_xml_node_txpr TYPE string VALUE 'c:txPr', - lc_xml_node_bodypr TYPE string VALUE 'a:bodyPr', - lc_xml_node_lststyle TYPE string VALUE 'a:lstStyle', - lc_xml_node_p TYPE string VALUE 'a:p', - lc_xml_node_ppr TYPE string VALUE 'a:pPr', - lc_xml_node_defrpr TYPE string VALUE 'a:defRPr', - lc_xml_node_endpararpr TYPE string VALUE 'a:endParaRPr', - "legend->bar + legend->line - lc_xml_node_plotvisonly TYPE string VALUE 'c:plotVisOnly', - lc_xml_node_dispblanksas TYPE string VALUE 'c:dispBlanksAs', - lc_xml_node_showdlblsovermax TYPE string VALUE 'c:showDLblsOverMax', - "---------------------------END OF CHART - - lc_xml_node_printsettings TYPE string VALUE 'c:printSettings', - lc_xml_node_headerfooter TYPE string VALUE 'c:headerFooter', - lc_xml_node_pagemargins TYPE string VALUE 'c:pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'c:pageSetup'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - DATA: lv_rel_id TYPE i. - - DATA lo_element TYPE REF TO if_ixml_element. - DATA lo_element2 TYPE REF TO if_ixml_element. - DATA lo_element3 TYPE REF TO if_ixml_element. - DATA lo_el_rootchart TYPE REF TO if_ixml_element. - DATA lo_element4 TYPE REF TO if_ixml_element. - DATA lo_element5 TYPE REF TO if_ixml_element. - DATA lo_element6 TYPE REF TO if_ixml_element. - DATA lo_element7 TYPE REF TO if_ixml_element. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_chartspace - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - -********************************************************************** -* STEP 4: Create chart - - DATA lo_chartb TYPE REF TO zcl_excel_graph_bars. - DATA lo_chartp TYPE REF TO zcl_excel_graph_pie. - DATA lo_chartl TYPE REF TO zcl_excel_graph_line. - DATA lo_chart TYPE REF TO zcl_excel_graph. - - DATA ls_serie TYPE zcl_excel_graph=>s_series. - DATA ls_ax TYPE zcl_excel_graph_bars=>s_ax. - DATA lv_str TYPE string. - - "Identify chart type - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - lo_chartb ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_pie. - lo_chartp ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_line. - lo_chartl ?= io_drawing->graph. - WHEN OTHERS. - ENDCASE. - - - lo_chart = io_drawing->graph. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_date1904 - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_1904val ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_lang - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_langval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_roundedcorners - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_roundedcornersval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_altcont - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_altcont_ns_mc ). - - "Choice - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_choice - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'Requires' - value = lc_xml_node_choice_ns_requires ). - lo_element2->set_attribute_ns( name = 'xmlns:c14' - value = lc_xml_node_choice_ns_c14 ). - - "C14:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_c14styleval ). - - "Fallback - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_fallback - parent = lo_element ). - - "C:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style2 - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_styleval ). - - "---------------------------CHART - lo_element = lo_document->create_simple_element( name = lc_xml_node_chart - parent = lo_element_root ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_autotitledeleted - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_autotitledeletedval ). - - "plotArea - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotarea - parent = lo_element ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_barchart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bardir - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_bardirval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_varycolorsval ). - - "series - LOOP AT lo_chartb->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_invertifnegative - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-invertifnegative ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - IF lo_chartb->ns_groupingval = zcl_excel_graph_bars=>c_groupingval_stacked. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_overlap - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = '100' ). - ENDIF. - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_gapwidth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_gapwidthval ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartb->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_bars=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_bars=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_piechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_varycolorsval ). - - "series - LOOP AT lo_chartp->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showbubblesizeval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showleaderlines - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showleaderlinesval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_firstsliceang - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_firstsliceangval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_linechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_varycolorsval ). - - "series - LOOP AT lo_chartl->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_symbol - parent = lo_element5 ). - lo_element6->set_attribute_ns( name = 'val' - value = ls_serie-symbol ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-smooth ). - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_MARKERVAL ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_SMOOTHVAL ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartl->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_line=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). -* lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt -* parent = lo_element3 ). -* lo_element4->set_attribute_ns( name = 'formatCode' -* value = ls_ax-formatcode ). -* lo_element4->set_attribute_ns( name = 'sourceLinked' -* value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_line=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN OTHERS. - ENDCASE. - - "legend - IF lo_chart->print_label EQ abap_true. - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_legend - parent = lo_element ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_overlayval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_txpr - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bodypr - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lststyle - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_p - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_ppr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'rtl' - value = lo_chartp->ns_pprrtl ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_defrpr - parent = lo_element5 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_endpararpr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'lang' - value = lo_chartp->ns_endpararprlang ). - WHEN OTHERS. - ENDCASE. - ENDIF. - - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotvisonly - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_plotvisonlyval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_dispblanksas - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_dispblanksasval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_showdlblsovermax - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_showdlblsovermaxval ). - "---------------------------END OF CHART - - "printSettings - lo_element = lo_document->create_simple_element( name = lc_xml_node_printsettings - parent = lo_element_root ). - "headerFooter - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_element ). - "pageMargins - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'b' - value = lo_chart->pagemargins-b ). - lo_element2->set_attribute_ns( name = 'l' - value = lo_chart->pagemargins-l ). - lo_element2->set_attribute_ns( name = 'r' - value = lo_chart->pagemargins-r ). - lo_element2->set_attribute_ns( name = 't' - value = lo_chart->pagemargins-t ). - lo_element2->set_attribute_ns( name = 'header' - value = lo_chart->pagemargins-header ). - lo_element2->set_attribute_ns( name = 'footer' - value = lo_chart->pagemargins-footer ). - "pageSetup - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS. - - -** Constant node name - CONSTANTS: lc_xml_node_wsdr TYPE string VALUE 'xdr:wsDr', - lc_xml_node_ns_xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main'. - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - DATA: lv_rel_id TYPE i. - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_wsdr - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:xdr' - value = lc_xml_node_ns_xdr ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - -********************************************************************** -* STEP 4: Create drawings - - CLEAR: lv_rel_id. - - lo_drawings = io_worksheet->get_drawings( ). - - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - ADD 1 TO lv_rel_id. - lo_element_cellanchor = me->create_xl_drawing_anchor( - io_drawing = lo_drawing - io_document = lo_document - ip_index = lv_rel_id ). - - lo_element_root->append_child( new_child = lo_element_cellanchor ). - - ENDWHILE. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS_RELS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lv_value TYPE string, - lv_counter TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_counter = 0. - lo_drawings = io_worksheet->get_drawings( ). - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_counter. - - lv_value = lv_counter. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - lv_value = lo_drawing->get_media_name( ). - CASE lo_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - CONCATENATE '../media/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_image_tp ). - - WHEN zcl_excel_drawing=>type_chart. - CONCATENATE '../charts/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_chart_tp ). - - ENDCASE. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - method CREATE_XL_DRAWING_ANCHOR. - -** Constant node name - CONSTANTS: lc_xml_node_onecellanchor TYPE string VALUE 'xdr:oneCellAnchor', - lc_xml_node_twocellanchor TYPE string VALUE 'xdr:twoCellAnchor', - lc_xml_node_from TYPE string VALUE 'xdr:from', - lc_xml_node_to TYPE string VALUE 'xdr:to', - lc_xml_node_pic TYPE string VALUE 'xdr:pic', - lc_xml_node_ext TYPE string VALUE 'xdr:ext', - lc_xml_node_clientdata TYPE string VALUE 'xdr:clientData', - - lc_xml_node_col TYPE string VALUE 'xdr:col', - lc_xml_node_coloff TYPE string VALUE 'xdr:colOff', - lc_xml_node_row TYPE string VALUE 'xdr:row', - lc_xml_node_rowoff TYPE string VALUE 'xdr:rowOff', - - lc_xml_node_nvpicpr TYPE string VALUE 'xdr:nvPicPr', - lc_xml_node_cnvpr TYPE string VALUE 'xdr:cNvPr', - lc_xml_node_cnvpicpr TYPE string VALUE 'xdr:cNvPicPr', - lc_xml_node_piclocks TYPE string VALUE 'a:picLocks', - - lc_xml_node_sppr TYPE string VALUE 'xdr:spPr', - lc_xml_node_apgeom TYPE string VALUE 'a:prstGeom', - lc_xml_node_aavlst TYPE string VALUE 'a:avLst', - - lc_xml_node_graphicframe TYPE string VALUE 'xdr:graphicFrame', - lc_xml_node_nvgraphicframepr TYPE string VALUE 'xdr:nvGraphicFramePr', - lc_xml_node_cnvgraphicframepr TYPE string VALUE 'xdr:cNvGraphicFramePr', - lc_xml_node_graphicframelocks TYPE string VALUE 'a:graphicFrameLocks', - lc_xml_node_xfrm TYPE string VALUE 'xdr:xfrm', - lc_xml_node_aoff TYPE string VALUE 'a:off', - lc_xml_node_aext TYPE string VALUE 'a:ext', - lc_xml_node_agraphic TYPE string VALUE 'a:graphic', - lc_xml_node_agraphicdata TYPE string VALUE 'a:graphicData', - - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_cchart TYPE string VALUE 'c:chart', - - lc_xml_node_blipfill TYPE string VALUE 'xdr:blipFill', - lc_xml_node_ablip TYPE string VALUE 'a:blip', - lc_xml_node_astretch TYPE string VALUE 'a:stretch', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'. - - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_element_graphicframe TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_element3 TYPE REF TO if_ixml_element, - lo_element_from TYPE REF TO if_ixml_element, - lo_element_to TYPE REF TO if_ixml_element, - lo_element_ext TYPE REF TO if_ixml_element, - lo_element_pic TYPE REF TO if_ixml_element, - lo_element_clientdata TYPE REF TO if_ixml_element, - - ls_position TYPE zexcel_drawing_position, - - lv_col TYPE string, " zexcel_cell_column, - lv_row TYPE string, " zexcel_cell_row. - lv_col_offset TYPE string, - lv_row_offset TYPE string, - lv_value TYPE string. - - ls_position = io_drawing->get_position( ). - - IF ls_position-anchor = 'ONE'. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_onecellanchor - parent = io_document ). - ELSE. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_twocellanchor - parent = io_document ). - ENDIF. - -* from cell ****************************** - lo_element_from = io_document->create_simple_element( name = lc_xml_node_from - parent = io_document ). - - lv_col = ls_position-from-col. - lv_row = ls_position-from-row. - lv_col_offset = ls_position-from-col_offset. - lv_row_offset = ls_position-from-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_from->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_from ). - - IF ls_position-anchor = 'ONE'. - -* ext ****************************** - lo_element_ext = io_document->create_simple_element( name = lc_xml_node_ext - parent = io_document ). - - lv_value = io_drawing->get_width_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cx' - value = lv_value ). - lv_value = io_drawing->get_height_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cy' - value = lv_value ). - ep_anchor->append_child( new_child = lo_element_ext ). - - ELSEIF ls_position-anchor = 'TWO'. - -* to cell ****************************** - lo_element_to = io_document->create_simple_element( name = lc_xml_node_to - parent = io_document ). - - lv_col = ls_position-to-col. - lv_row = ls_position-to-row. - lv_col_offset = ls_position-to-col_offset. - lv_row_offset = ls_position-to-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_to->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_to ). - - ENDIF. - - CASE io_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. -* pic ********************************** - lo_element_pic = io_document->create_simple_element( name = lc_xml_node_pic - parent = io_document ). -* nvPicPr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvpicpr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). - -* cNvPicPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpicpr - parent = io_document ). - -* picLocks - lo_element3 = io_document->create_simple_element( name = lc_xml_node_piclocks - parent = io_document ). - lo_element3->set_attribute_ns( name = 'noChangeAspect' - value = '1' ). - - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_pic->append_child( new_child = lo_element ). - -* blipFill - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = io_document->create_simple_element( name = lc_xml_node_blipfill - parent = io_document ). - lo_element2 = io_document->create_simple_element( name = lc_xml_node_ablip - parent = io_document ). - lo_element2->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element2->set_attribute_ns( name = 'r:embed' - value = lv_value ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_astretch - parent = io_document ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - -* spPr - lo_element = io_document->create_simple_element( name = lc_xml_node_sppr - parent = io_document ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_apgeom - parent = io_document ). - lo_element2->set_attribute_ns( name = 'prst' - value = 'rect' ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_aavlst - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_pic ). - WHEN zcl_excel_drawing=>type_chart. -* graphicFrame ********************************** - lo_element_graphicframe = io_document->create_simple_element( name = lc_xml_node_graphicframe - parent = io_document ). -* nvGraphicFramePr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvgraphicframepr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). -* cNvGraphicFramePr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvgraphicframepr - parent = io_document ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_graphicframelocks - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* xfrm - lo_element = io_document->create_simple_element( name = lc_xml_node_xfrm - parent = io_document ). -* off - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aoff - parent = io_document ). - lo_element2->set_attribute_ns( name = 'y' value = '0' ). - lo_element2->set_attribute_ns( name = 'x' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). -* ext - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aext - parent = io_document ). - lo_element2->set_attribute_ns( name = 'cy' value = '0' ). - lo_element2->set_attribute_ns( name = 'cx' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* graphic - lo_element = io_document->create_simple_element( name = lc_xml_node_agraphic - parent = io_document ). -* graphicData - lo_element2 = io_document->create_simple_element( name = lc_xml_node_agraphicdata - parent = io_document ). - lo_element2->set_attribute_ns( name = 'uri' value = lc_xml_node_ns_c ). - -* chart - lo_element3 = io_document->create_simple_element( name = lc_xml_node_cchart - parent = io_document ). - - lo_element3->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element3->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element3->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_graphicframe ). - - ENDCASE. - -* client data *************************** - lo_element_clientdata = io_document->create_simple_element( name = lc_xml_node_clientdata - parent = io_document ). - ep_anchor->append_child( new_child = lo_element_clientdata ). - - endmethod. - - - - method CREATE_XL_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_sheet_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lc_xml_node_rid_theme_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - lc_xml_node_rid_styles_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lc_xml_node_rid_shared_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - " Node target - lc_xml_node_ridx_tg TYPE string VALUE 'worksheets/sheet#.xml', - lc_xml_node_rid_shared_tg TYPE string VALUE 'sharedStrings.xml', - lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', - lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_syindex(3) TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 2. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_styles_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( new_child = lo_element ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size - 1. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_theme_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( new_child = lo_element ). - - lv_size = excel->get_worksheets_size( ). - - DO lv_size TIMES. - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - lv_xml_node_ridx_tg = lc_xml_node_ridx_tg. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_tg WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_sheet_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 3 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_shared_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - METHOD create_xl_sharedstrings. - - -** Constant node name - DATA: lc_xml_node_sst TYPE string VALUE 'sst', - lc_xml_node_si TYPE string VALUE 'si', - lc_xml_node_t TYPE string VALUE 't', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_value TYPE string, - lv_count_str TYPE string, - lv_uniquecount_str TYPE string, - lv_sytabix TYPE sytabix, - lv_count TYPE i, - lv_uniquecount TYPE i. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_sheet_string> TYPE zexcel_s_shared_string. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - DESCRIBE TABLE lt_cell_data LINES lv_count. - MOVE lv_count TO lv_count_str. - - SHIFT lv_count_str RIGHT DELETING TRAILING space. - SHIFT lv_count_str LEFT DELETING LEADING space. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - DESCRIBE TABLE lt_cell_data LINES lv_uniquecount. - MOVE lv_uniquecount TO lv_uniquecount_str. - - SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. - SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - - clear lv_count. - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content> where data_type = 's'. -* lv_sytabix = sy-tabix - 1. - lv_sytabix = lv_count. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. - MOVE <fs_sheet_content>-data_type TO ls_shared_string-string_type. - APPEND ls_shared_string TO shared_strings. - add 1 to lv_count. - ENDLOOP. - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_sst - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_count - value = lv_count_str ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_uniquecount - value = lv_uniquecount_str ). - -********************************************************************** -* STEP 4: Create subnode - LOOP AT shared_strings ASSIGNING <fs_sheet_string>. - lo_element = lo_document->create_simple_element( name = lc_xml_node_si - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). -* if <fs_sheet_string>-string_type EQ 's_leading_blanks'. - IF <fs_sheet_string>-string_value IS NOT INITIAL AND <fs_sheet_string>-string_value(1) EQ ` `. - lo_sub_element->set_attribute( name = 'space' namespace = 'xml' value = 'preserve' ). - ENDIF. - lo_sub_element->set_value( value = <fs_sheet_string>-string_value ). - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_sheet. -*--------------------------------------------------------------------* -* issue #330 - Adding ColorScale conditional formatting -* - Ivan Femia, 2014-08-25 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF colors, - colorrgb TYPE zexcel_color, - END OF colors. - -*--------------------------------------------------------------------* -* issue #237 - Error writing column-style -* - Stefan Schmöcker, 2012-11-01 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF cfvo, - value TYPE zexcel_conditional_value, - type TYPE zexcel_conditional_type, - END OF cfvo. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - start -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, - END OF lty_table_area. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - end -*--------------------------------------------------------------------* -** Constants - CONSTANTS: - lc_dummy_cell_content TYPE zexcel_s_cell_data-cell_value VALUE '})~~~ This is a dummy value for ABAP2XLSX and you should never find this in a real excelsheet Ihope'. - - -** Constant node name - DATA: lc_xml_node_worksheet TYPE string VALUE 'worksheet', - lc_xml_node_sheetpr TYPE string VALUE 'sheetPr', - lc_xml_node_tabcolor TYPE string VALUE 'tabColor', - lc_xml_node_outlinepr TYPE string VALUE 'outlinePr', - lc_xml_node_dimension TYPE string VALUE 'dimension', - lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', - lc_xml_node_sheetview TYPE string VALUE 'sheetView', - lc_xml_node_selection TYPE string VALUE 'selection', - lc_xml_node_pane TYPE string VALUE 'pane', - lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', - lc_xml_node_cols TYPE string VALUE 'cols', - lc_xml_node_col TYPE string VALUE 'col', - lc_xml_node_sheetdata TYPE string VALUE 'sheetData', - lc_xml_node_row TYPE string VALUE 'row', - lc_xml_node_c TYPE string VALUE 'c', - lc_xml_node_v TYPE string VALUE 'v', - lc_xml_node_f TYPE string VALUE 'f', - lc_xml_node_sheetprotection TYPE string VALUE 'sheetProtection', - lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'pageSetup', - lc_xml_node_pagesetuppr TYPE string VALUE 'pageSetUpPr', - lc_xml_node_condformatting TYPE string VALUE 'conditionalFormatting', - lc_xml_node_cfrule TYPE string VALUE 'cfRule', - lc_xml_node_color TYPE string VALUE 'color', " Databar by Albert Lladanosa - lc_xml_node_databar TYPE string VALUE 'dataBar', " Databar by Albert Lladanosa - lc_xml_node_colorscale TYPE string VALUE 'colorScale', - lc_xml_node_iconset TYPE string VALUE 'iconSet', - lc_xml_node_cfvo TYPE string VALUE 'cfvo', - lc_xml_node_formula TYPE string VALUE 'formula', - lc_xml_node_datavalidations TYPE string VALUE 'dataValidations', - lc_xml_node_datavalidation TYPE string VALUE 'dataValidation', - lc_xml_node_formula1 TYPE string VALUE 'formula1', - lc_xml_node_formula2 TYPE string VALUE 'formula2', - lc_xml_node_mergecell TYPE string VALUE 'mergeCell', - lc_xml_node_mergecells TYPE string VALUE 'mergeCells', - lc_xml_node_drawing TYPE string VALUE 'drawing', - lc_xml_node_headerfooter TYPE string VALUE 'headerFooter', - lc_xml_node_oddheader TYPE string VALUE 'oddHeader', - lc_xml_node_oddfooter TYPE string VALUE 'oddFooter', - lc_xml_node_evenheader TYPE string VALUE 'evenHeader', - lc_xml_node_evenfooter TYPE string VALUE 'evenFooter', - lc_xml_node_autofilter TYPE string VALUE 'autoFilter', - lc_xml_node_filtercolumn TYPE string VALUE 'filterColumn', - lc_xml_node_filters TYPE string VALUE 'filters', - lc_xml_node_filter TYPE string VALUE 'filter', - " Node attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_summarybelow TYPE string VALUE 'summaryBelow', - lc_xml_attr_summaryright TYPE string VALUE 'summaryRight', - lc_xml_attr_tabselected TYPE string VALUE 'tabSelected', - lc_xml_attr_showzeros TYPE string VALUE 'showZeros', - lc_xml_attr_zoomscale TYPE string VALUE 'zoomScale', - lc_xml_attr_zoomscalenormal TYPE string VALUE 'zoomScaleNormal', - lc_xml_attr_zoomscalepageview TYPE string VALUE 'zoomScalePageLayoutView', - lc_xml_attr_zoomscalesheetview TYPE string VALUE 'zoomScaleSheetLayoutView', - lc_xml_attr_workbookviewid TYPE string VALUE 'workbookViewId', - lc_xml_attr_showgridlines TYPE string VALUE 'showGridLines', - lc_xml_attr_gridlines TYPE string VALUE 'gridLines', - lc_xml_attr_showrowcolheaders TYPE string VALUE 'showRowColHeaders', - lc_xml_attr_activecell TYPE string VALUE 'activeCell', - lc_xml_attr_sqref TYPE string VALUE 'sqref', - lc_xml_attr_min TYPE string VALUE 'min', - lc_xml_attr_max TYPE string VALUE 'max', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_width TYPE string VALUE 'width', - lc_xml_attr_defaultwidth TYPE string VALUE '9.10', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_bestfit TYPE string VALUE 'bestFit', - lc_xml_attr_customheight TYPE string VALUE 'customHeight', - lc_xml_attr_customwidth TYPE string VALUE 'customWidth', - lc_xml_attr_collapsed TYPE string VALUE 'collapsed', - lc_xml_attr_defaultrowheight TYPE string VALUE 'defaultRowHeight', - lc_xml_attr_defaultcolwidth TYPE string VALUE 'defaultColWidth', - lc_xml_attr_outlinelevelrow TYPE string VALUE 'x14ac:outlineLevelRow', - lc_xml_attr_outlinelevelcol TYPE string VALUE 'x14ac:outlineLevelCol', - lc_xml_attr_outlinelevel TYPE string VALUE 'outlineLevel', - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_s TYPE string VALUE 's', - lc_xml_attr_spans TYPE string VALUE 'spans', - lc_xml_attr_t TYPE string VALUE 't', - lc_xml_attr_password TYPE string VALUE 'password', - lc_xml_attr_sheet TYPE string VALUE 'sheet', - lc_xml_attr_objects TYPE string VALUE 'objects', - lc_xml_attr_scenarios TYPE string VALUE 'scenarios', - lc_xml_attr_autofilter TYPE string VALUE 'autoFilter', - lc_xml_attr_deletecolumns TYPE string VALUE 'deleteColumns', - lc_xml_attr_deleterows TYPE string VALUE 'deleteRows', - lc_xml_attr_formatcells TYPE string VALUE 'formatCells', - lc_xml_attr_formatcolumns TYPE string VALUE 'formatColumns', - lc_xml_attr_formatrows TYPE string VALUE 'formatRows', - lc_xml_attr_insertcolumns TYPE string VALUE 'insertColumns', - lc_xml_attr_inserthyperlinks TYPE string VALUE 'insertHyperlinks', - lc_xml_attr_insertrows TYPE string VALUE 'insertRows', - lc_xml_attr_pivottables TYPE string VALUE 'pivotTables', - lc_xml_attr_selectlockedcells TYPE string VALUE 'selectLockedCells', - lc_xml_attr_selectunlockedcell TYPE string VALUE 'selectUnlockedCells', - lc_xml_attr_sort TYPE string VALUE 'sort', - lc_xml_attr_left TYPE string VALUE 'left', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_header TYPE string VALUE 'header', - lc_xml_attr_footer TYPE string VALUE 'footer', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_iconset TYPE string VALUE 'iconSet', - lc_xml_attr_showvalue TYPE string VALUE 'showValue', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_dxfid TYPE string VALUE 'dxfId', - lc_xml_attr_priority TYPE string VALUE 'priority', - lc_xml_attr_operator TYPE string VALUE 'operator', - lc_xml_attr_allowblank TYPE string VALUE 'allowBlank', - lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage', - lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage', - lc_xml_attr_errortitle TYPE string VALUE 'errorTitle', - lc_xml_attr_error TYPE string VALUE 'error', - lc_xml_attr_prompttitle TYPE string VALUE 'promptTitle', - lc_xml_attr_prompt TYPE string VALUE 'prompt', - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_blackandwhite TYPE string VALUE 'blackAndWhite', - lc_xml_attr_cellcomments TYPE string VALUE 'cellComments', - lc_xml_attr_copies TYPE string VALUE 'copies', - lc_xml_attr_draft TYPE string VALUE 'draft', - lc_xml_attr_errors TYPE string VALUE 'errors', - lc_xml_attr_firstpagenumber TYPE string VALUE 'firstPageNumber', - lc_xml_attr_fittopage TYPE string VALUE 'fitToPage', - lc_xml_attr_fittoheight TYPE string VALUE 'fitToHeight', - lc_xml_attr_fittowidth TYPE string VALUE 'fitToWidth', - lc_xml_attr_horizontaldpi TYPE string VALUE 'horizontalDpi', - lc_xml_attr_orientation TYPE string VALUE 'orientation', - lc_xml_attr_pageorder TYPE string VALUE 'pageOrder', - lc_xml_attr_paperheight TYPE string VALUE 'paperHeight', - lc_xml_attr_papersize TYPE string VALUE 'paperSize', - lc_xml_attr_paperwidth TYPE string VALUE 'paperWidth', - lc_xml_attr_scale TYPE string VALUE 'scale', - lc_xml_attr_usefirstpagenumber TYPE string VALUE 'useFirstPageNumber', - lc_xml_attr_useprinterdefaults TYPE string VALUE 'usePrinterDefaults', - lc_xml_attr_verticaldpi TYPE string VALUE 'verticalDpi', - lc_xml_attr_differentoddeven TYPE string VALUE 'differentOddEven', - lc_xml_attr_colid TYPE string VALUE 'colId', - lc_xml_attr_filtermode TYPE string VALUE 'filterMode', - lc_xml_attr_tabcolor_rgb TYPE string VALUE 'rgb', - lc_xml_attr_tabcolor_theme TYPE string VALUE 'theme', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_comp_pref TYPE string VALUE 'x14ac', - lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_table TYPE REF TO zcl_excel_table, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_row_dim_empty TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, - default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_value TYPE string, - lt_range_merge TYPE string_table, - lv_merge TYPE string, - lv_column_p TYPE zexcel_cell_column_alpha, - lv_column TYPE zexcel_cell_column, - lv_cell_value TYPE zexcel_cell_value, - lv_style_guid TYPE zexcel_cell_style, - lv_flag TYPE c, - ls_databar TYPE zexcel_conditional_databar, " Databar by Albert Lladanosa - ls_colorscale TYPE zexcel_conditional_colorscale, - ls_iconset TYPE zexcel_conditional_iconset, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - ls_conditional_top10 TYPE zexcel_conditional_top10, - ls_conditional_above_avg TYPE zexcel_conditional_above_avg, - lt_cfvo TYPE TABLE OF cfvo, - ls_cfvo TYPE cfvo, - lt_colors TYPE TABLE OF colors, - ls_colors TYPE colors, - lv_cell_row_s TYPE string, - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping, - lv_freeze_cell_row TYPE zexcel_cell_row, - lv_freeze_cell_column TYPE zexcel_cell_column, - lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, - row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - lv_relation_id TYPE i VALUE 0, - outline_level_row TYPE i VALUE 0, - outline_level_col TYPE i VALUE 0, - lv_current_row TYPE i, - lv_next_row TYPE i, - ls_sheet_content LIKE LINE OF io_worksheet->sheet_content, - ls_sheet_content_empty LIKE LINE OF io_worksheet->sheet_content, - lv_last_row TYPE i, - lts_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - lts_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - col_count TYPE int4, - merge_count TYPE int4, - write_current_row TYPE boolean, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values, -* lv_guid TYPE uuid, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter, - l_autofilter_hidden TYPE flag, - ls_area TYPE zexcel_s_autofilter_area, - lv_ref TYPE string, - lv_style_index TYPE i. " issue #237 - - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data, - <fs_range_merge> LIKE LINE OF lt_range_merge, - <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio, - <ls_row_outline> LIKE LINE OF lts_row_outlines. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - start -*--------------------------------------------------------------------* - DATA: lt_table_areas TYPE SORTED TABLE OF lty_table_area WITH NON-UNIQUE KEY left right top bottom, - ls_table_area LIKE LINE OF lt_table_areas. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - end -*--------------------------------------------------------------------* - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_worksheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_comp_ns ). - lo_element_root->set_attribute_ns( name = 'mc:Ignorable' - value = lc_xml_node_comp_pref ). - lo_element_root->set_attribute_ns( name = 'xmlns:x14ac' - value = lc_xml_node_ig_ns ). - - -********************************************************************** -* STEP 4: Create subnodes - " sheetPr - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetpr - parent = lo_document ). - " TODO tabColor - IF io_worksheet->tabcolor IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_tabcolor - parent = lo_element ). -* Theme not supported yet - start with RGB - lv_value = io_worksheet->tabcolor-rgb. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - ENDIF. - - " outlinePr - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_outlinepr - parent = lo_document ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summarybelow. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summarybelow - value = lv_value ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summaryright. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summaryright - value = lv_value ). - - lo_element->append_child( new_child = lo_element_2 ). - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_pagesetuppr - parent = lo_document ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_fittopage - value = `1` ). - lo_element->append_child( new_child = lo_element_2 ). " pageSetupPr node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - - " dimension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension - parent = lo_document ). - lv_value = io_worksheet->get_dimension_range( ). - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " sheetViews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews - parent = lo_document ). - " sheetView node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_sheetview - parent = lo_document ). - IF io_worksheet->zif_excel_sheet_properties~show_zeros EQ abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showzeros - value = '0' ). - ENDIF. - IF iv_active = abap_true - OR io_worksheet->zif_excel_sheet_properties~selected EQ abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '0' ). - ENDIF. - " Zoom scale - IF io_worksheet->zif_excel_sheet_properties~zoomscale GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscale - value = lv_value ). - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_normal LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_normal. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalenormal - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalepageview - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalesheetview - value = lv_value ). - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid - value = '0' ). - " showGridLines attribute - IF io_worksheet->show_gridlines = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '0' ). - ENDIF. - - " showRowColHeaders attribute - IF io_worksheet->show_rowcolheaders = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '0' ). - ENDIF. - - - " freeze panes - io_worksheet->get_freeze_cell( IMPORTING ep_row = lv_freeze_cell_row - ep_column = lv_freeze_cell_column ). - - IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_pane - parent = lo_element_2 ). - - IF lv_freeze_cell_row > 1. - lv_value = lv_freeze_cell_row - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'ySplit' - value = lv_value ). - ENDIF. - - IF lv_freeze_cell_column > 1. - lv_value = lv_freeze_cell_column - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'xSplit' - value = lv_value ). - ENDIF. - - lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ). - CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value. - lo_element_3->set_attribute_ns( name = 'topLeftCell' - value = lv_value ). - - lo_element_3->set_attribute_ns( name = 'activePane' - value = 'bottomRight' ). - - lo_element_3->set_attribute_ns( name = 'state' - value = 'frozen' ). - - lo_element_2->append_child( new_child = lo_element_3 ). - ENDIF. - " selection node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection - parent = lo_document ). - lv_value = io_worksheet->get_active_cell( ). - lo_element_3->set_attribute_ns( name = lc_xml_attr_activecell - value = lv_value ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " sheetView node - - lo_element->append_child( new_child = lo_element_2 ). " sheetView node - - lo_element_root->append_child( new_child = lo_element ). " sheetViews node - - - column_dimensions[] = io_worksheet->get_column_dimensions( ). - " Calculate col - IF NOT column_dimensions IS INITIAL. - io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). - ENDIF. - row_dimensions[] = io_worksheet->get_row_dimensions( ). - " sheetFormatPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetformatpr - parent = lo_document ). - " defaultRowHeight - default_row_dimension = io_worksheet->get_default_row_dimension( ). - IF default_row_dimension IS BOUND. - IF default_row_dimension->get_row_height( ) >= 0. - lo_element->set_attribute_ns( name = lc_xml_attr_customheight - value = lc_xml_attr_true ). - lv_value = default_row_dimension->get_row_height( ). - ELSE. - lv_value = '12.75'. - ENDIF. - ELSE. - lv_value = '12.75'. - ENDIF. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight - value = lv_value ). - " defaultColWidth - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - lv_value = default_col_dimension->get_width( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultcolwidth - value = lv_value ). - ENDIF. - ENDIF. - " outlineLevelRow -* Excel is recalculating the outlinelevel on startup from the outline levels found in the rows -* If we place anything incorrect here it gets corrected, if don't place anything it gets added -* So no need to calculate the outlinelevel here ( at least for rows - probably for columns as well but I haven't tested yet -* LOOP AT row_dimensions ASSIGNING <row_dimension>. -* IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. -* outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). -* ENDIF. -* ENDLOOP. -* lv_value = outline_level_row. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow -* value = lv_value ). - " outlineLevelCol - LOOP AT column_dimensions ASSIGNING <column_dimension>. - IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. - outline_level_col = <column_dimension>-column_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - lv_value = outline_level_col. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelcol - value = lv_value ). -* lv_value = 0. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_dydescent -* value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). " sheetFormatPr node - - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL OR NOT column_dimensions IS INITIAL. - " cols node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cols - parent = lo_document ). - " This code have to be enhanced in order to manage also column style properties - " Now it is an out/out - IF NOT column_dimensions IS INITIAL. - LOOP AT column_dimensions ASSIGNING <column_dimension>. - " col node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). - lv_value = <column_dimension>-column_dimension->get_column_index( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - " Width - IF <column_dimension>-column_dimension->get_width( ) < 0. - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - ELSE. - lv_value = <column_dimension>-column_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lv_value ). - ENDIF. - " Column visibility - IF <column_dimension>-column_dimension->get_visible( ) = abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lc_xml_attr_true ). - ENDIF. - " Auto size? - IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_bestfit - value = lc_xml_attr_true ). - ENDIF. - " Custom width? - IF default_col_dimension IS BOUND. - IF <column_dimension>-column_dimension->get_width( ) - <> default_col_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - - ENDIF. - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - ENDIF. - " Collapsed - IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_collapsed - value = lc_xml_attr_true ). - ENDIF. - " outlineLevel - IF <column_dimension>-column_dimension->get_outline_level( ) > 0. - lv_value = <column_dimension>-column_dimension->get_outline_level( ). - - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_outlinelevel - value = lv_value ). - ENDIF. - " Style -* lv_value = <column_dimension>-column_dimension->get_xf_index( ). "del issue #157 - set column style - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). "ins issue #157 - set column style -* lv_value = me->excel->get_style_index_in_styles( lv_style_guid ). "del issue #237 - CLEAR ls_style_mapping. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* lv_style_index = ls_style_mapping-style. "del issue #295 -* IF lv_style_index > 0. "ins issue #237 - del issue #295 -* lv_value = lv_style_index - 1. "ins issue #237 - del issue #295 - IF sy-subrc = 0. "ins issue #295 - lv_value = ls_style_mapping-style. "ins issue #295 - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. "ins issue #237 - - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. -* ELSE. "del issue #157 - set sheet style ( add missing columns -* IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. "del issue #157 - set sheet style ( add missing columns -* Begin of insertion issue #157 - set sheet style ( add missing columns - ENDIF. -* Always pass through this coding - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. - DATA: lts_sorted_columns TYPE SORTED TABLE OF zexcel_cell_column WITH UNIQUE KEY table_line. - TYPES: BEGIN OF ty_missing_columns, - first_column TYPE zexcel_cell_column, - last_column TYPE zexcel_cell_column, - END OF ty_missing_columns. - DATA: t_missing_columns TYPE STANDARD TABLE OF ty_missing_columns WITH NON-UNIQUE DEFAULT KEY, - missing_column LIKE LINE OF t_missing_columns. - -* First collect columns that were already handled before. The rest has to be inserted now - LOOP AT column_dimensions ASSIGNING <column_dimension>. - lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-column ). - INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. - -* Now find all columns that were missing so far - missing_column-first_column = 1. - LOOP AT lts_sorted_columns INTO lv_column. - IF lv_column > missing_column-first_column. - missing_column-last_column = lv_column - 1. - APPEND missing_column TO t_missing_columns. - ENDIF. - missing_column-first_column = lv_column + 1. - ENDLOOP. - missing_column-last_column = zcl_excel_common=>c_excel_sheet_max_col. - APPEND missing_column TO t_missing_columns. -* Now apply stylesetting ( and other defaults - I copy it from above. Whoever programmed that seems to know what to do :o) - LOOP AT t_missing_columns INTO missing_column. -* End of insertion issue #157 - set column style - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). -* lv_value = zcl_excel_common=>c_excel_sheet_min_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-first_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). -* lv_value = zcl_excel_common=>c_excel_sheet_max_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-last_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. - lv_value = ls_style_mapping-style. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. "ins issue #157 - set sheet style ( add missing columns - - ENDIF. -*--------------------------------------------------------------------* -* issue #367 add feature hide columns from -*--------------------------------------------------------------------* - IF io_worksheet->zif_excel_sheet_properties~hide_columns_from IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). - lv_value = zcl_excel_common=>convert_column2int( io_worksheet->zif_excel_sheet_properties~hide_columns_from ). - CONDENSE lv_value NO-GAPS. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = '16384' ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = '1' ). - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " cols node - ENDIF. - " sheetData node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata - parent = lo_document ). - " Get column count - col_count = io_worksheet->get_highest_column( ). - " Get autofilter -* lv_guid = io_worksheet->get_guid( ) . - lo_autofilters = excel->get_autofilters_reference( ). - lo_autofilter = lo_autofilters->get( io_worksheet = io_worksheet ) . - IF lo_autofilter IS BOUND. - lt_values = lo_autofilter->get_values( ) . - ls_area = lo_autofilter->get_filter_area( ) . - l_autofilter_hidden = abap_true. " First defautl is not showing - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - start -*--------------------------------------------------------------------* -* Build table to hold all table-areas attached to this sheet - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). - ls_table_area-right = lo_table->get_right_column_integer( ). - ls_table_area-top = lo_table->settings-top_left_row. - ls_table_area-bottom = lo_table->get_bottom_row_integer( ). - INSERT ls_table_area INTO TABLE lt_table_areas. - ENDWHILE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end -*--------------------------------------------------------------------* -* We have problems when the first rows or trailing rows are not set but we have rowinformation -* to solve this we add dummycontent into first and last line that will not be set -* Set first line if necessary - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = 1. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = 1. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. -* Set last line if necessary -* Last row with cell content - lv_last_row = io_worksheet->get_highest_row( ). -* Last line with row-information set directly ( like line height, hidden-status ... ) - lts_row_dimensions = io_worksheet->get_row_dimensions( ). - SORT lts_row_dimensions BY row DESCENDING. - READ TABLE lts_row_dimensions INDEX 1 ASSIGNING <row_dimension>. - IF sy-subrc = 0 AND <row_dimension>-row > lv_last_row. - lv_last_row = <row_dimension>-row. - ENDIF. -* Last line with row-information set indirectly by row outline - lts_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lts_row_outlines ASSIGNING <ls_row_outline>. - IF <ls_row_outline>-collapsed = 'X'. - lv_current_row = <ls_row_outline>-row_to + 1. " collapsed-status may be set on following row - ELSE. - lv_current_row = <ls_row_outline>-row_to. " collapsed-status may be set on following row - ENDIF. - IF lv_current_row > lv_last_row. - lv_last_row = lv_current_row. - ENDIF. - ENDLOOP. - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = lv_last_row. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = lv_last_row. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. - - - CLEAR ls_sheet_content. - LOOP AT io_worksheet->sheet_content INTO ls_sheet_content. - IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much - CLEAR l_autofilter_hidden. - ELSE. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - ENDIF. - CLEAR ls_style_mapping. -* Create row element -* issues #346,#154, #195 - problems when we have information in row_dimension but no cell content in that row -* Get next line that may have to be added. If we have empty lines this is the next line after previous cell content -* Otherwise it is the line of the current cell content - lv_current_row = ls_last_row-cell_row + 1. - IF lv_current_row > ls_sheet_content-cell_row. - lv_current_row = ls_sheet_content-cell_row. - ENDIF. -* Fill in empty lines if necessary - assign an emtpy sheet content - lv_next_row = lv_current_row. - WHILE lv_next_row <= ls_sheet_content-cell_row. - lv_current_row = lv_next_row. - lv_next_row = lv_current_row + 1. - IF lv_current_row = ls_sheet_content-cell_row. " cell value found in this row - ASSIGN ls_sheet_content TO <ls_sheet_content>. - ELSE. -* Check if empty row is really necessary - this is basically the case when we have information in row_dimension - lo_row_dim_empty = io_worksheet->get_row_dimension( lv_current_row ). - CHECK lo_row_dim_empty->get_row_height( ) >= 0 OR - lo_row_dim_empty->get_collapsed( io_worksheet ) = abap_true OR - lo_row_dim_empty->get_outline_level( io_worksheet ) > 0 OR - lo_row_dim_empty->get_xf_index( ) <> 0. - " Dummyentry A1 - ls_sheet_content_empty-cell_row = lv_current_row. - ls_sheet_content_empty-cell_column = 1. - ASSIGN ls_sheet_content_empty TO <ls_sheet_content>. - ENDIF. - - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - IF ls_last_row-cell_row IS NOT INITIAL. - " Row visibility of previos row. - IF row_dimension->get_visible( io_worksheet ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - " Add new row - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - " r - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - " Spans - lv_value = col_count. - CONCATENATE '1:' lv_value INTO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = lv_value ). - row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). - " Do we need the row dimension attributes? - IF row_dimension->get_row_height( ) >= 0 OR - row_dimension->get_collapsed( io_worksheet ) = abap_true OR - row_dimension->get_outline_level( io_worksheet ) > 0 OR - row_dimension->get_xf_index( ) <> 0 OR - l_autofilter_hidden = abap_true. - " Row dimensions - IF row_dimension->get_row_height( ) >= 0. - lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). - lv_value = row_dimension->get_row_height( ). - lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). - ENDIF. - " Collapsed - IF row_dimension->get_collapsed( io_worksheet ) = abap_true. - lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). - ENDIF. - " Outline level - IF row_dimension->get_outline_level( io_worksheet ) > 0. - lv_value = row_dimension->get_outline_level( io_worksheet ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). - ENDIF. - " Style - IF row_dimension->get_xf_index( ) <> 0. - lv_value = row_dimension->get_xf_index( ). - lo_element_2->set_attribute_ns( name = 's' value = lv_value ). - lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). - ENDIF. - ENDIF. - IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much - CLEAR l_autofilter_hidden. - ELSE. - l_autofilter_hidden = abap_true. " First default is not showing - ENDIF. - ELSE. - - ENDIF. - ENDWHILE. - - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_r - value = <ls_sheet_content>-cell_coords ). - -* begin of change issue #157 - allow column cellstyle -* if no cellstyle is set, look into column, then into sheet - IF <ls_sheet_content>-cell_style IS NOT INITIAL. - lv_style_guid = <ls_sheet_content>-cell_style. - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - start -*--------------------------------------------------------------------* -* Check if cell in any of the table areas - LOOP AT lt_table_areas TRANSPORTING NO FIELDS WHERE top <= <ls_sheet_content>-cell_row - AND bottom >= <ls_sheet_content>-cell_row - AND left <= <ls_sheet_content>-cell_column - AND right >= <ls_sheet_content>-cell_column. - EXIT. - ENDLOOP. - IF sy-subrc = 0. - CLEAR lv_style_guid. " No style --> EXCEL will use built-in-styles as declared in the tables-section - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - end -*--------------------------------------------------------------------* - lv_column_p = zcl_excel_common=>convert_column2alpha( <ls_sheet_content>-cell_column ). - READ TABLE column_dimensions WITH KEY column = lv_column_p ASSIGNING <column_dimension>. - IF sy-subrc = 0. - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). - IF lv_style_guid IS INITIAL. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - ELSE. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - start -*--------------------------------------------------------------------* - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - end -*--------------------------------------------------------------------* - ENDIF. -* IF <ls_sheet_content>-cell_style IS NOT INITIAL. -* READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. - IF lv_style_guid IS NOT INITIAL. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* end of change issue #157 - allow column cellstyles - lv_value = ls_style_mapping-style. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_3->set_attribute_ns( name = lc_xml_attr_s - value = lv_value ). - ENDIF. - - " For cells with formula ignore the value - Excel will calculate it - IF <ls_sheet_content>-cell_formula IS NOT INITIAL. - " fomula node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_formula. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " fomula node - ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL "cell can have just style or formula - AND <ls_sheet_content>-cell_value <> lc_dummy_cell_content. - IF <ls_sheet_content>-data_type IS NOT INITIAL. - IF <ls_sheet_content>-data_type EQ 's_leading_blanks'. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = 's' ). - ELSE. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = <ls_sheet_content>-data_type ). - ENDIF. - ENDIF. - - " value node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_document ). - - IF <ls_sheet_content>-data_type EQ 's' OR <ls_sheet_content>-data_type EQ 's_leading_blanks'. - lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ELSE. - lv_value = <ls_sheet_content>-cell_value. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ENDIF. - - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDIF. - - lo_element_2->append_child( new_child = lo_element_3 ). " column node - ls_last_row = <ls_sheet_content>. - ENDLOOP. - IF sy-subrc = 0. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - " Row visibility of previos row. - IF row_dimension->get_visible( ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - DELETE io_worksheet->sheet_content WHERE cell_value = lc_dummy_cell_content. " Get rid of dummyentries - - lo_element_root->append_child( new_child = lo_element ). " sheetData node - - IF lo_autofilter IS BOUND. -* Create node autofilter - lo_element = lo_document->create_simple_element( name = lc_xml_node_autofilter - parent = lo_document ). - lv_ref = lo_autofilter->get_filter_range( ) . - CONDENSE lv_ref NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - lt_values = lo_autofilter->get_values( ) . - IF lt_values IS NOT INITIAL. -* If we filter we need to set the filter mode to 1. - lo_element_2 = lo_document->find_from_name( name = lc_xml_node_sheetpr ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_filtermode - value = '1' ). -* Create node filtercolumn - CLEAR lv_column. - LOOP AT lt_values INTO ls_values. - IF ls_values-column <> lv_column. - IF lv_column IS NOT INITIAL. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_filtercolumn - parent = lo_element ). - lv_column = ls_values-column - lo_autofilter->filter_area-col_start. - lv_value = lv_column. - CONDENSE lv_value NO-GAPS. - lo_element_2->set_attribute_ns( name = lc_xml_attr_colid - value = lv_value ). - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_filters - parent = lo_element_2 ). - lv_column = ls_values-column. - ENDIF. - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_filter - parent = lo_element_3 ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = ls_values-value ). - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDLOOP. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - IF io_worksheet->zif_excel_sheet_protection~protected EQ abap_true. - " sheetProtection node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetprotection - parent = lo_document ). - MOVE io_worksheet->zif_excel_sheet_protection~password TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_password - value = lv_value ). - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_protection~auto_filter. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_autofilter - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deletecolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deleterows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_hyperlinks. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_inserthyperlinks - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~objects. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_objects - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~pivot_tables. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_pivottables - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~scenarios. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scenarios - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_locked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectlockedcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_unlocked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectunlockedcell - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sheet. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sheet - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sort. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sort - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " Merged cells - lt_range_merge = io_worksheet->get_merge( ). - IF lt_range_merge IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_mergecells - parent = lo_document ). - DESCRIBE TABLE lt_range_merge LINES merge_count. - lv_value = merge_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - LOOP AT lt_range_merge ASSIGNING <fs_range_merge>. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_mergecell - parent = lo_document ). - - lo_element_2->set_attribute_ns( name = lc_xml_attr_ref - value = <fs_range_merge> ). - lo_element->append_child( new_child = lo_element_2 ). - lo_element_root->append_child( new_child = lo_element ). - io_worksheet->delete_merge( ). - ENDLOOP. - ENDIF. - - " Conditional formatting node - lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_style_conditional->rule IS INITIAL. - CONTINUE. - ENDIF. - lo_element = lo_document->create_simple_element( name = lc_xml_node_condformatting - parent = lo_document ). - lv_value = lo_style_conditional->get_dimension_range( ) . - lo_element->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - " cfRule node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_cfrule - parent = lo_document ). - lv_value = lo_style_conditional->rule. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = lo_style_conditional->priority. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_priority - value = lv_value ). - - CASE lo_style_conditional->rule. - " Start >> Databar by Albert Lladanosa - WHEN zcl_excel_style_conditional=>c_rule_databar. - - ls_databar = lo_style_conditional->mode_databar. - - CLEAR lt_cfvo. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_databar - parent = lo_document ). - - MOVE ls_databar-cfvo1_value TO ls_cfvo-value. - MOVE ls_databar-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_databar-cfvo2_value TO ls_cfvo-value. - MOVE ls_databar-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_databar-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - " End << Databar by Albert Lladanosa - - WHEN zcl_excel_style_conditional=>c_rule_colorscale. - - ls_colorscale = lo_style_conditional->mode_colorscale. - - CLEAR: lt_cfvo, lt_colors. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_colorscale - parent = lo_document ). - - MOVE ls_colorscale-cfvo1_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo2_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo3_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - APPEND ls_colorscale-colorrgb1 TO lt_colors. - APPEND ls_colorscale-colorrgb2 TO lt_colors. - APPEND ls_colorscale-colorrgb3 TO lt_colors. - - LOOP AT lt_cfvo INTO ls_cfvo. - - IF ls_cfvo IS INITIAL. - CONTINUE. - ENDIF. - - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - LOOP AT lt_colors INTO ls_colors. - - IF ls_colors IS INITIAL. - CONTINUE. - ENDIF. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_colors-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - ENDLOOP. - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - - WHEN zcl_excel_style_conditional=>c_rule_iconset. - - ls_iconset = lo_style_conditional->mode_iconset. - - CLEAR lt_cfvo. - " iconset node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_iconset - parent = lo_document ). - IF ls_iconset-iconset NE zcl_excel_style_conditional=>c_iconset_3trafficlights. - lv_value = ls_iconset-iconset. - lo_element_3->set_attribute_ns( name = lc_xml_attr_iconset - value = lv_value ). - ENDIF. - - " Set the showValue attribute - lv_value = ls_iconset-showvalue. - lo_element_3->set_attribute_ns( name = lc_xml_attr_showvalue - value = lv_value ). - - CASE ls_iconset-iconset. - WHEN zcl_excel_style_conditional=>c_iconset_3trafficlights2 OR - zcl_excel_style_conditional=>c_iconset_3arrows OR - zcl_excel_style_conditional=>c_iconset_3arrowsgray OR - zcl_excel_style_conditional=>c_iconset_3flags OR - zcl_excel_style_conditional=>c_iconset_3signs OR - zcl_excel_style_conditional=>c_iconset_3symbols OR - zcl_excel_style_conditional=>c_iconset_3symbols2 OR - zcl_excel_style_conditional=>c_iconset_3trafficlights OR - zcl_excel_style_conditional=>c_iconset_3trafficlights2. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_4arrows OR - zcl_excel_style_conditional=>c_iconset_4arrowsgray OR - zcl_excel_style_conditional=>c_iconset_4rating OR - zcl_excel_style_conditional=>c_iconset_4redtoblack OR - zcl_excel_style_conditional=>c_iconset_4trafficlights. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_5arrows OR - zcl_excel_style_conditional=>c_iconset_5arrowsgray OR - zcl_excel_style_conditional=>c_iconset_5quarters OR - zcl_excel_style_conditional=>c_iconset_5rating. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo5_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo5_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN OTHERS. - CLEAR lt_cfvo. - ENDCASE. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - - lo_element_2->append_child( new_child = lo_element_3 ). " iconset node - - WHEN zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis = lo_style_conditional->mode_cellis. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_cellis-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - lv_value = ls_cellis-operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_cellis-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - IF ls_cellis-formula2 IS NOT INITIAL. - lv_value = ls_cellis-formula2. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " 2nd formula node - ENDIF. - - WHEN zcl_excel_style_conditional=>c_rule_expression. - ls_expression = lo_style_conditional->mode_expression. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_expression-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_expression-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - -* begin of ins issue #366 - missing conditional rules: top10 - WHEN zcl_excel_style_conditional=>c_rule_top10. - ls_conditional_top10 = lo_style_conditional->mode_top10. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_conditional_top10-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - lv_value = ls_conditional_top10-topxx_count. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = 'rank' - value = lv_value ). - IF ls_conditional_top10-bottom = 'X'. - lo_element_2->set_attribute_ns( name = 'bottom' - value = '1' ). - ENDIF. - IF ls_conditional_top10-percent = 'X'. - lo_element_2->set_attribute_ns( name = 'percent' - value ='1' ). - ENDIF. - - WHEN zcl_excel_style_conditional=>c_rule_above_average. - ls_conditional_above_avg = lo_style_conditional->mode_above_average. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_conditional_above_avg-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - - IF ls_conditional_above_avg-above_average IS INITIAL. " = below average - lo_element_2->set_attribute_ns( name = 'aboveAverage' - value = '0' ). - ENDIF. - IF ls_conditional_above_avg-equal_average = 'X'. " = equal average also - lo_element_2->set_attribute_ns( name = 'equalAverage' - value = '1' ). - ENDIF. - IF ls_conditional_above_avg-standard_deviation <> 0. " standard deviation instead of value - lv_value = ls_conditional_above_avg-standard_deviation. - lo_element_2->set_attribute_ns( name = 'stdDev' - value = lv_value ). - ENDIF. - -* end of ins issue #366 - missing conditional rules: top10 - - ENDCASE. - - lo_element->append_child( new_child = lo_element_2 ). " cfRule node - - lo_element_root->append_child( new_child = lo_element ). " Conditional formatting node - ENDWHILE. - - IF io_worksheet->get_data_validations_size( ) GT 0. - " dataValidations node - lo_element = lo_document->create_simple_element( name = lc_xml_node_datavalidations - parent = lo_document ). - " Conditional formatting node - lo_iterator = io_worksheet->get_data_validations_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_data_validation ?= lo_iterator->if_object_collection_iterator~get_next( ). - " dataValidation node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_datavalidation - parent = lo_document ). - lv_value = lo_data_validation->type. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - IF NOT lo_data_validation->operator IS INITIAL. - lv_value = lo_data_validation->operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - ENDIF. - IF lo_data_validation->allowblank EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_allowblank - value = lv_value ). - IF lo_data_validation->showinputmessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showinputmessage - value = lv_value ). - IF lo_data_validation->showerrormessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showerrormessage - value = lv_value ). - IF NOT lo_data_validation->errortitle IS INITIAL. - lv_value = lo_data_validation->errortitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_errortitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->error IS INITIAL. - lv_value = lo_data_validation->error. - lo_element_2->set_attribute_ns( name = lc_xml_attr_error - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompttitle IS INITIAL. - lv_value = lo_data_validation->prompttitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompttitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompt IS INITIAL. - lv_value = lo_data_validation->prompt. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompt - value = lv_value ). - ENDIF. - lv_cell_row_s = lo_data_validation->cell_row. - CONDENSE lv_cell_row_s. - CONCATENATE lo_data_validation->cell_column lv_cell_row_s INTO lv_value. - IF lo_data_validation->cell_row_to IS NOT INITIAL. - lv_cell_row_s = lo_data_validation->cell_row_to. - CONDENSE lv_cell_row_s. - CONCATENATE lv_value ':' lo_data_validation->cell_column_to lv_cell_row_s INTO lv_value. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - " formula1 node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula1 - parent = lo_document ). - lv_value = lo_data_validation->formula1. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula1 node - " formula2 node - IF NOT lo_data_validation->formula2 IS INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula2 - parent = lo_document ). - lv_value = lo_data_validation->formula2. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula2 node - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). " dataValidation node - ENDWHILE. - lo_element_root->append_child( new_child = lo_element ). " dataValidations node - ENDIF. - - " Hyperlinks - DATA: lv_hyperlinks_count TYPE i, - lo_link TYPE REF TO zcl_excel_hyperlink. - - lv_hyperlinks_count = io_worksheet->get_hyperlinks_size( ). - IF lv_hyperlinks_count > 0. - lo_element = lo_document->create_simple_element( name = 'hyperlinks' - parent = lo_document ). - - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element_2 = lo_document->create_simple_element( name = 'hyperlink' - parent = lo_element ). - - lv_value = lo_link->get_ref( ). - lo_element_2->set_attribute_ns( name = 'ref' - value = lv_value ). - - IF lo_link->is_internal( ) = abap_true. - lv_value = lo_link->get_url( ). - lo_element_2->set_attribute_ns( name = 'location' - value = lv_value ). - ELSE. - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - - " PrintOptions - IF io_worksheet->print_gridlines = abap_true OR - io_worksheet->sheet_setup->vertical_centered = abap_true OR - io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element = lo_document->create_simple_element( name = 'printOptions' - parent = lo_document ). - - IF io_worksheet->print_gridlines = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_gridlines - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element->set_attribute_ns( name = 'horizontalCentered' - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_centered = abap_true. - lo_element->set_attribute_ns( name = 'verticalCentered' - value = 'true' ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - " pageMargins node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_document ). - - lv_value = io_worksheet->sheet_setup->margin_left. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_left - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_right. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_right - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_top. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_top - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_bottom. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_bottom - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_header. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_header - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_footer. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_footer - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). " pageMargins node - -* pageSetup node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_document ). - - IF io_worksheet->sheet_setup->black_and_white IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_blackandwhite - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->cell_comments IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_cellcomments - value = io_worksheet->sheet_setup->cell_comments ). - ENDIF. - - IF io_worksheet->sheet_setup->copies IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->copies. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_copies - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->draft IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_draft - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->errors IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_errors - value = io_worksheet->sheet_setup->errors ). - ENDIF. - - IF io_worksheet->sheet_setup->first_page_number IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->first_page_number. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_firstpagenumber - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->fit_to_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittoheight - value = lv_value ). - lv_value = io_worksheet->sheet_setup->fit_to_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittowidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->horizontal_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_horizontaldpi - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->orientation IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->orientation. - lo_element->set_attribute_ns( name = lc_xml_attr_orientation - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->page_order IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_pageorder - value = io_worksheet->sheet_setup->page_order ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_height IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperheight - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_size IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_size. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_papersize - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_width IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperwidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->scale IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->scale. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scale - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->use_first_page_num IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_usefirstpagenumber - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->use_printer_defaults IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_useprinterdefaults - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->vertical_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_verticaldpi - value = lv_value ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " pageSetup node - -* { headerFooter necessary? > - IF io_worksheet->sheet_setup->odd_header IS NOT INITIAL - OR io_worksheet->sheet_setup->odd_footer IS NOT INITIAL - OR io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_document ). - - " Different header/footer for odd/even pages? - IF io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_differentoddeven - value = '1' ). - ENDIF. - - " OddHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " OddFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - - lo_element_root->append_child( new_child = lo_element ). " headerFooter - - ENDIF. - -* issue #377 pagebreaks - TRY. - create_xl_sheet_pagebreaks( io_document = lo_document - io_parent = lo_element_root - io_worksheet = io_worksheet ) . - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_drawing - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute( name = 'r:id' - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -* tables - DATA lv_table_count TYPE i. - - lv_table_count = io_worksheet->get_tables_size( ). - IF lv_table_count > 0. - lo_element = lo_document->create_simple_element( name = 'tableParts' - parent = lo_document ). - lv_value = lv_table_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element_2 = lo_document->create_simple_element( name = 'tablePart' - parent = lo_element ). - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - - ENDIF. - - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_sheet_pagebreaks. - DATA: lo_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks, - lt_pagebreaks TYPE zcl_excel_worksheet_pagebreaks=>tt_pagebreak_at, - lt_rows TYPE HASHED TABLE OF int4 WITH UNIQUE KEY table_line, - lt_columns TYPE HASHED TABLE OF int4 WITH UNIQUE KEY table_line, - - lo_node_rowbreaks TYPE REF TO if_ixml_element, - lo_node_colbreaks TYPE REF TO if_ixml_element, - lo_node_break TYPE REF TO if_ixml_element, - - lv_value TYPE string. - - - FIELD-SYMBOLS: <ls_pagebreak> LIKE LINE OF lt_pagebreaks. - - lo_pagebreaks = io_worksheet->get_pagebreaks( ). - CHECK lo_pagebreaks IS BOUND. - - lt_pagebreaks = lo_pagebreaks->get_all_pagebreaks( ). - CHECK lt_pagebreaks IS NOT INITIAL. " No need to proceed if don't have any pagebreaks. - - lo_node_rowbreaks = io_document->create_simple_element( name = 'rowBreaks' - parent = io_document ). - - lo_node_colbreaks = io_document->create_simple_element( name = 'colBreaks' - parent = io_document ). - - - LOOP AT lt_pagebreaks ASSIGNING <ls_pagebreak>. - -* Count how many rows and columns need to be broken - INSERT <ls_pagebreak>-cell_row INTO TABLE lt_rows. - IF sy-subrc = 0. " New - lv_value = <ls_pagebreak>-cell_row. - CONDENSE lv_value. - - lo_node_break = io_document->create_simple_element( name = 'brk' - parent = io_document ). - lo_node_break->set_attribute( name = 'id' value = lv_value ). - lo_node_break->set_attribute( name = 'man' value = '1' ). " Manual break - lo_node_break->set_attribute( name = 'max' value = '16383' ). " Max columns - - lo_node_rowbreaks->append_child( new_child = lo_node_break ). - ENDIF. - - INSERT <ls_pagebreak>-cell_column INTO TABLE lt_columns. - IF sy-subrc = 0. " New - lv_value = <ls_pagebreak>-cell_column. - CONDENSE lv_value. - - lo_node_break = io_document->create_simple_element( name = 'brk' - parent = io_document ). - lo_node_break->set_attribute( name = 'id' value = lv_value ). - lo_node_break->set_attribute( name = 'man' value = '1' ). " Manual break - lo_node_break->set_attribute( name = 'max' value = '1048575' ). " Max rows - - lo_node_colbreaks->append_child( new_child = lo_node_break ). - ENDIF. - - - ENDLOOP. - - lv_value = lines( lt_rows ). - CONDENSE lv_value. - lo_node_rowbreaks->set_attribute( name = 'count' value = lv_value ). - lo_node_rowbreaks->set_attribute( name = 'manualBreakCount' value = lv_value ). - - lv_value = lines( lt_rows ). - CONDENSE lv_value. - lo_node_colbreaks->set_attribute( name = 'count' value = lv_value ). - lo_node_colbreaks->set_attribute( name = 'manualBreakCount' value = lv_value ). - - - - - io_parent->append_child( new_child = lo_node_rowbreaks ). - io_parent->append_child( new_child = lo_node_colbreaks ). - -ENDMETHOD. - - - - - - METHOD create_xl_sheet_rels. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', - lc_xml_val_external TYPE string VALUE 'External', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', - lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_link TYPE REF TO zcl_excel_hyperlink. - - DATA: lv_value TYPE string, - lv_relation_id TYPE i, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_relation_id = 0. - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_link->is_internal( ) = abap_false. " issue #340 - don't put internal links here - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_link_tp ). - - lv_value = lo_link->get_url( ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_target_mode - value = lc_xml_val_external ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_drawing_tp ). - - lv_index_str = iv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - MOVE me->c_xl_drawings TO lv_value. - REPLACE 'xl' WITH '..' INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_table_tp ). - - lv_value = lo_table->get_name( ). - CONCATENATE '../tables/' lv_value '.xml' INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* IF io_worksheet->get_print_settings( )->is_empty( ) = abap_false. -* ADD 1 TO lv_relation_id. -* lv_value = lv_relation_id. -* CONDENSE lv_value. -* CONCATENATE 'rId' lv_value INTO lv_value. -* -* lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship -* parent = lo_document ). -* lo_element->set_attribute_ns( name = lc_xml_attr_id -* value = lv_value ). -* lo_element->set_attribute_ns( name = lc_xml_attr_type -* value = lc_xml_node_rid_printer_tp ). -* -* lv_index_str = iv_printer_index. -* CONDENSE lv_index_str NO-GAPS. -* MOVE me->c_xl_printersettings TO lv_value. -* REPLACE 'xl' WITH '..' INTO lv_value. -* REPLACE '#' WITH lv_index_str INTO lv_value. -* lo_element->set_attribute_ns( name = lc_xml_attr_target -* value = lv_value ). -* -* lo_element_root->append_child( new_child = lo_element ). -* ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_styles. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 dxfs-cellstyles are used in conditional formats: -* CellIs, Expression, top10 ( forthcoming above average as well ) -* create own method to write dsfx-cellstyle to be reuseable by all these -*--------------------------------------------------------------------* - - -** Constant node name - CONSTANTS: lc_xml_node_stylesheet TYPE string VALUE 'styleSheet', - " font - lc_xml_node_fonts TYPE string VALUE 'fonts', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - " fill - lc_xml_node_fills TYPE string VALUE 'fills', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - lc_xml_node_gradientfill TYPE string VALUE 'gradientFill', - lc_xml_node_stop TYPE string VALUE 'stop', - " borders - lc_xml_node_borders TYPE string VALUE 'borders', - lc_xml_node_border TYPE string VALUE 'border', - lc_xml_node_left TYPE string VALUE 'left', - lc_xml_node_right TYPE string VALUE 'right', - lc_xml_node_top TYPE string VALUE 'top', - lc_xml_node_bottom TYPE string VALUE 'bottom', - lc_xml_node_diagonal TYPE string VALUE 'diagonal', - " numfmt - lc_xml_node_numfmts TYPE string VALUE 'numFmts', - lc_xml_node_numfmt TYPE string VALUE 'numFmt', - " Styles - lc_xml_node_cellstylexfs TYPE string VALUE 'cellStyleXfs', - lc_xml_node_xf TYPE string VALUE 'xf', - lc_xml_node_cellxfs TYPE string VALUE 'cellXfs', - lc_xml_node_cellstyles TYPE string VALUE 'cellStyles', - lc_xml_node_cellstyle TYPE string VALUE 'cellStyle', - lc_xml_node_dxfs TYPE string VALUE 'dxfs', - lc_xml_node_dxf TYPE string VALUE 'dxf', - lc_xml_node_tablestyles TYPE string VALUE 'tableStyles', - " Colors - lc_xml_node_colors TYPE string VALUE 'colors', - lc_xml_node_indexedcolors TYPE string VALUE 'indexedColors', - lc_xml_node_rgbcolor TYPE string VALUE 'rgbColor', - lc_xml_node_mrucolors TYPE string VALUE 'mruColors', - " Alignment - lc_xml_node_alignment TYPE string VALUE 'alignment', - " Protection - lc_xml_node_protection TYPE string VALUE 'protection', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_position TYPE string VALUE 'position', - lc_xml_attr_degree TYPE string VALUE 'degree', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_attr_numfmtid TYPE string VALUE 'numFmtId', - lc_xml_attr_fontid TYPE string VALUE 'fontId', - lc_xml_attr_fillid TYPE string VALUE 'fillId', - lc_xml_attr_borderid TYPE string VALUE 'borderId', - lc_xml_attr_xfid TYPE string VALUE 'xfId', - lc_xml_attr_applynumberformat TYPE string VALUE 'applyNumberFormat', - lc_xml_attr_applyprotection TYPE string VALUE 'applyProtection', - lc_xml_attr_applyfont TYPE string VALUE 'applyFont', - lc_xml_attr_applyfill TYPE string VALUE 'applyFill', - lc_xml_attr_applyborder TYPE string VALUE 'applyBorder', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_builtinid TYPE string VALUE 'builtinId', - lc_xml_attr_defaulttablestyle TYPE string VALUE 'defaultTableStyle', - lc_xml_attr_defaultpivotstyle TYPE string VALUE 'defaultPivotStyle', - lc_xml_attr_applyalignment TYPE string VALUE 'applyAlignment', - lc_xml_attr_horizontal TYPE string VALUE 'horizontal', - lc_xml_attr_formatcode TYPE string VALUE 'formatCode', - lc_xml_attr_vertical TYPE string VALUE 'vertical', - lc_xml_attr_wraptext TYPE string VALUE 'wrapText', - lc_xml_attr_textrotation TYPE string VALUE 'textRotation', - lc_xml_attr_shrinktofit TYPE string VALUE 'shrinkToFit', - lc_xml_attr_indent TYPE string VALUE 'indent', - lc_xml_attr_locked TYPE string VALUE 'locked', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_diagonalup TYPE string VALUE 'diagonalUp', - lc_xml_attr_diagonaldown TYPE string VALUE 'diagonalDown', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_left TYPE string VALUE 'left'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_fonts TYPE REF TO if_ixml_element, - lo_element_font TYPE REF TO if_ixml_element, - lo_element_fills TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_borders TYPE REF TO if_ixml_element, - lo_element_border TYPE REF TO if_ixml_element, - lo_element_numfmts TYPE REF TO if_ixml_element, - lo_element_numfmt TYPE REF TO if_ixml_element, - lo_element_cellxfs TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator2 TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style TYPE REF TO zcl_excel_style. - - - DATA: lt_fonts TYPE zexcel_t_style_font, - ls_font TYPE zexcel_s_style_font, - lt_fills TYPE zexcel_t_style_fill, - ls_fill TYPE zexcel_s_style_fill, - lt_borders TYPE zexcel_t_style_border, - ls_border TYPE zexcel_s_style_border, - lt_numfmts TYPE zexcel_t_style_numfmt, - ls_numfmt TYPE zexcel_s_style_numfmt, - lt_protections TYPE zexcel_t_style_protection, - ls_protection TYPE zexcel_s_style_protection, - lt_alignments TYPE zexcel_t_style_alignment, - ls_alignment TYPE zexcel_s_style_alignment, - lt_cellxfs TYPE zexcel_t_cellxfs, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_styles_mapping TYPE zexcel_s_styles_mapping, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - ls_conditional_top10 TYPE zexcel_conditional_top10, - - lt_colors TYPE zexcel_t_style_color_argb, - ls_color LIKE LINE OF lt_colors. - - DATA: lv_value TYPE string, - lv_dfx_count TYPE i, - lv_fonts_count TYPE i, - lv_fills_count TYPE i, - lv_borders_count TYPE i, - lv_cellxfs_count TYPE i, - lv_index TYPE i, - lv_align_flag TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_stylesheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lo_element_fonts = lo_document->create_simple_element( name = lc_xml_node_fonts - parent = lo_document ). - - lo_element_fills = lo_document->create_simple_element( name = lc_xml_node_fills - parent = lo_document ). - - lo_element_borders = lo_document->create_simple_element( name = lc_xml_node_borders - parent = lo_document ). - - lo_element_cellxfs = lo_document->create_simple_element( name = lc_xml_node_cellxfs - parent = lo_document ). - - lo_element_numfmts = lo_document->create_simple_element( name = lc_xml_node_numfmts - parent = lo_document ). - - -* Compress styles - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_font = lo_style->font->get_structure( ). - ls_fill = lo_style->fill->get_structure( ). - ls_border = lo_style->borders->get_structure( ). - ls_alignment = lo_style->alignment->get_structure( ). - ls_protection = lo_style->protection->get_structure( ). - ls_numfmt = lo_style->number_format->get_structure( ). - - CLEAR ls_cellxfs. - - -* Compress fonts - READ TABLE lt_fonts FROM ls_font TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fontid = sy-tabix. - ELSE. - APPEND ls_font TO lt_fonts. - DESCRIBE TABLE lt_fonts LINES ls_cellxfs-fontid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fontid. - -* Compress alignment - READ TABLE lt_alignments FROM ls_alignment TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-alignmentid = sy-tabix. - ELSE. - APPEND ls_alignment TO lt_alignments. - DESCRIBE TABLE lt_alignments LINES ls_cellxfs-alignmentid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - -* Compress fills - READ TABLE lt_fills FROM ls_fill TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fillid = sy-tabix. - ELSE. - APPEND ls_fill TO lt_fills. - DESCRIBE TABLE lt_fills LINES ls_cellxfs-fillid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fillid. - -* Compress borders - READ TABLE lt_borders FROM ls_border TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-borderid = sy-tabix. - ELSE. - APPEND ls_border TO lt_borders. - DESCRIBE TABLE lt_borders LINES ls_cellxfs-borderid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-borderid. - -* Compress protection - IF ls_protection-locked EQ c_on AND ls_protection-hidden EQ c_off. - ls_cellxfs-applyprotection = 0. - ELSE. - READ TABLE lt_protections FROM ls_protection TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-protectionid = sy-tabix. - ELSE. - APPEND ls_protection TO lt_protections. - DESCRIBE TABLE lt_protections LINES ls_cellxfs-protectionid. - ENDIF. - ls_cellxfs-applyprotection = 1. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - -* Compress number formats - - "----------- - IF ls_numfmt-numfmt NE zcl_excel_style_number_format=>c_format_date_std." and ls_numfmt-NUMFMT ne 'STD_NDEC'. " ALE Changes on going - "--- - IF ls_numfmt IS NOT INITIAL. - - READ TABLE lt_numfmts FROM ls_numfmt TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-numfmtid = sy-tabix. - ELSE. - APPEND ls_numfmt TO lt_numfmts. - DESCRIBE TABLE lt_numfmts LINES ls_cellxfs-numfmtid. - ENDIF. - ADD zcl_excel_common=>c_excel_numfmt_offset TO ls_cellxfs-numfmtid. " Add OXML offset for custom styles - ls_cellxfs-applynumberformat = 1. - ELSE. - ls_cellxfs-applynumberformat = 0. - ENDIF. - "----------- " ALE changes on going - ELSE. - ls_cellxfs-applynumberformat = 1. - IF ls_numfmt-numfmt EQ zcl_excel_style_number_format=>c_format_date_std. - ls_cellxfs-numfmtid = 14. -* elseif ls_numfmt-NUMFMT eq 'STD_NDEC'. -* ls_cellxfs-numfmtid = 2. - ENDIF. - ENDIF. - "--- - - IF ls_cellxfs-fontid NE 0. - ls_cellxfs-applyfont = 1. - ELSE. - ls_cellxfs-applyfont = 0. - ENDIF. - IF ls_cellxfs-alignmentid NE 0. - ls_cellxfs-applyalignment = 1. - ELSE. - ls_cellxfs-applyalignment = 0. - ENDIF. - IF ls_cellxfs-fillid NE 0. - ls_cellxfs-applyfill = 1. - ELSE. - ls_cellxfs-applyfill = 0. - ENDIF. - IF ls_cellxfs-borderid NE 0. - ls_cellxfs-applyborder = 1. - ELSE. - ls_cellxfs-applyborder = 0. - ENDIF. - -* Remap styles - READ TABLE lt_cellxfs FROM ls_cellxfs TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_styles_mapping-style = sy-tabix. - ELSE. - APPEND ls_cellxfs TO lt_cellxfs. - DESCRIBE TABLE lt_cellxfs LINES ls_styles_mapping-style. - ENDIF. - SUBTRACT 1 FROM ls_styles_mapping-style. - ls_styles_mapping-guid = lo_style->get_guid( ). - APPEND ls_styles_mapping TO me->styles_mapping. - ENDWHILE. - - " create numfmt elements - LOOP AT lt_numfmts INTO ls_numfmt. - lo_element_numfmt = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_document ). - lv_value = sy-tabix + zcl_excel_common=>c_excel_numfmt_offset. - CONDENSE lv_value. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - lv_value = ls_numfmt-numfmt. -* REPLACE ALL OCCURRENCES OF '.' IN lv_value WITH '\.'. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_formatcode - value = lv_value ). - lo_element_numfmts->append_child( new_child = lo_element_numfmt ). - ENDLOOP. - - " create font elements - LOOP AT lt_fonts INTO ls_font. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz - parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). - - "name - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name - parent = lo_document ). - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family - parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "scheme - IF ls_font-scheme IS NOT INITIAL. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - lo_element_fonts->append_child( new_child = lo_element_font ). - ENDLOOP. - - " create fill elements - LOOP AT lt_fills INTO ls_fill. - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - - IF ls_fill-gradtype IS NOT INITIAL. - "gradient - - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_gradientfill - parent = lo_document ). - IF ls_fill-gradtype-degree IS NOT INITIAL. - lv_value = ls_fill-gradtype-degree. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_degree value = lv_value ). - ENDIF. - IF ls_fill-gradtype-type IS NOT INITIAL. - lv_value = ls_fill-gradtype-type. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_type value = lv_value ). - ENDIF. - IF ls_fill-gradtype-bottom IS NOT INITIAL. - lv_value = ls_fill-gradtype-bottom. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_bottom value = lv_value ). - ENDIF. - IF ls_fill-gradtype-top IS NOT INITIAL. - lv_value = ls_fill-gradtype-top. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_top value = lv_value ). - ENDIF. - IF ls_fill-gradtype-right IS NOT INITIAL. - lv_value = ls_fill-gradtype-right. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_right value = lv_value ). - ENDIF. - IF ls_fill-gradtype-left IS NOT INITIAL. - lv_value = ls_fill-gradtype-left. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_left value = lv_value ). - ENDIF. - - IF ls_fill-gradtype-position3 IS NOT INITIAL. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position3. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - ELSE. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - - - - - ELSE. - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - ENDIF. - - lo_element_fill->append_child( new_child = lo_sub_element )."pattern - lo_element_fills->append_child( new_child = lo_element_fill ). - ENDLOOP. - - " create border elements - LOOP AT lt_borders INTO ls_border. - lo_element_border = lo_document->create_simple_element( name = lc_xml_node_border - parent = lo_document ). - - IF ls_border-diagonalup IS NOT INITIAL. - lv_value = ls_border-diagonalup. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonalup - value = lv_value ). - ENDIF. - - IF ls_border-diagonaldown IS NOT INITIAL. - lv_value = ls_border-diagonaldown. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonaldown - value = lv_value ). - ENDIF. - - "left - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_left - parent = lo_document ). - IF ls_border-left_style IS NOT INITIAL. - lv_value = ls_border-left_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-left_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "right - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right - parent = lo_document ). - IF ls_border-right_style IS NOT INITIAL. - lv_value = ls_border-right_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-right_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "top - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top - parent = lo_document ). - IF ls_border-top_style IS NOT INITIAL. - lv_value = ls_border-top_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-top_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "bottom - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom - parent = lo_document ). - IF ls_border-bottom_style IS NOT INITIAL. - lv_value = ls_border-bottom_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-bottom_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "diagonal - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal - parent = lo_document ). - IF ls_border-diagonal_style IS NOT INITIAL. - lv_value = ls_border-diagonal_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-diagonal_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - lo_element_borders->append_child( new_child = lo_element_border ). - ENDLOOP. - - " update attribute "count" - DESCRIBE TABLE lt_fonts LINES lv_fonts_count. - MOVE lv_fonts_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fonts->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_fills LINES lv_fills_count. - MOVE lv_fills_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fills->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_borders LINES lv_borders_count. - MOVE lv_borders_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_borders->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_cellxfs LINES lv_cellxfs_count. - MOVE lv_cellxfs_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_cellxfs->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - - " Append to root node - lo_element_root->append_child( new_child = lo_element_numfmts ). - lo_element_root->append_child( new_child = lo_element_fonts ). - lo_element_root->append_child( new_child = lo_element_fills ). - lo_element_root->append_child( new_child = lo_element_borders ). - - " cellstylexfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fontid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fillid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT lt_cellxfs INTO ls_cellxfs. - lo_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - MOVE ls_cellxfs-numfmtid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - MOVE ls_cellxfs-fontid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fontid - value = lv_value ). - MOVE ls_cellxfs-fillid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fillid - value = lv_value ). - MOVE ls_cellxfs-borderid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_borderid - value = lv_value ). - MOVE ls_cellxfs-xfid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_xfid - value = lv_value ). - IF ls_cellxfs-applynumberformat EQ 1. - MOVE ls_cellxfs-applynumberformat TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applynumberformat - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfont EQ 1. - MOVE ls_cellxfs-applyfont TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfont - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfill EQ 1. - MOVE ls_cellxfs-applyfill TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfill - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyborder EQ 1. - MOVE ls_cellxfs-applyborder TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyborder - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyalignment EQ 1. " depends on each style not for all the sheet - MOVE ls_cellxfs-applyalignment TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyalignment - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_alignment - parent = lo_document ). - ADD 1 TO ls_cellxfs-alignmentid. "Table index starts from 1 - READ TABLE lt_alignments INTO ls_alignment INDEX ls_cellxfs-alignmentid. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - IF ls_alignment-horizontal IS NOT INITIAL. - MOVE ls_alignment-horizontal TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_horizontal - value = lv_value ). - ENDIF. - IF ls_alignment-vertical IS NOT INITIAL. - MOVE ls_alignment-vertical TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_vertical - value = lv_value ). - ENDIF. - IF ls_alignment-wraptext EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_wraptext - value = c_on ). - ENDIF. - IF ls_alignment-textrotation IS NOT INITIAL. - MOVE ls_alignment-textrotation TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_textrotation - value = lv_value ). - ENDIF. - IF ls_alignment-shrinktofit EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_shrinktofit - value = c_on ). - ENDIF. - IF ls_alignment-indent IS NOT INITIAL. - MOVE ls_alignment-indent TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indent - value = lv_value ). - ENDIF. - - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_cellxfs-applyprotection EQ 1. - MOVE ls_cellxfs-applyprotection TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_applyprotection - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_protection - parent = lo_document ). - ADD 1 TO ls_cellxfs-protectionid. "Table index starts from 1 - READ TABLE lt_protections INTO ls_protection INDEX ls_cellxfs-protectionid. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - IF ls_protection-locked IS NOT INITIAL. - MOVE ls_protection-locked TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_locked - value = lv_value ). - ENDIF. - IF ls_protection-hidden IS NOT INITIAL. - MOVE ls_protection-hidden TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - lo_element_cellxfs->append_child( new_child = lo_element ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element_cellxfs ). - - " cellStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_cellstyle - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = 'Normal' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xfid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - " dxfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs - parent = lo_document ). - - lo_iterator = me->excel->get_worksheets_iterator( ). - " get sheets - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - " Conditional formatting styles into exch sheet - lo_iterator2 = lo_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator2->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator2->if_object_collection_iterator~get_next( ). - CASE lo_style_conditional->rule. -* begin of change issue #366 - missing conditional rules: top10, move dfx-styles to own method - WHEN zcl_excel_style_conditional=>c_rule_cellis. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_cellis-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). - - WHEN zcl_excel_style_conditional=>c_rule_expression. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_expression-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). - - - - WHEN zcl_excel_style_conditional=>c_rule_top10. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_top10-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). - - WHEN zcl_excel_style_conditional=>c_rule_above_average. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_above_average-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). -* begin of change issue #366 - missing conditional rules: top10, move dfx-styles to own method - - WHEN OTHERS. - CONTINUE. - ENDCASE. - ENDWHILE. - ENDWHILE. - - lv_value = lv_dfx_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " tableStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaulttablestyle - value = zcl_excel_table=>builtinstyle_medium9 ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle - value = zcl_excel_table=>builtinstyle_pivot_light16 ). - lo_element_root->append_child( new_child = lo_element ). - - "write legacy color palette in case any indexed color was changed - IF excel->legacy_palette->is_modified( ) = abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_colors - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_indexedcolors - parent = lo_document ). - lo_element->append_child( new_child = lo_sub_element ). - - lt_colors = excel->legacy_palette->get_colors( ). - LOOP AT lt_colors INTO ls_color. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_rgbcolor - parent = lo_document ). - lv_value = ls_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_styles_color_node. - DATA: lo_sub_element TYPE REF TO if_ixml_element, - lv_value TYPE string. - - CONSTANTS: lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint'. - - "add node only if at least one attribute is set - CHECK is_color-rgb IS NOT INITIAL OR - is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set OR - is_color-theme <> zcl_excel_style_color=>c_theme_not_set OR - is_color-tint IS NOT INITIAL. - - lo_sub_element = io_document->create_simple_element( - name = iv_color_elem_name - parent = io_parent ). - - IF is_color-rgb IS NOT INITIAL. - lv_value = is_color-rgb. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - ENDIF. - - IF is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-indexed ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_indexed - value = lv_value ). - ENDIF. - - IF is_color-theme <> zcl_excel_style_color=>c_theme_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-theme ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_theme - value = lv_value ). - ENDIF. - - IF is_color-tint IS NOT INITIAL. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-tint ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_tint - value = lv_value ). - ENDIF. - - io_parent->append_child( new_child = lo_sub_element ). -ENDMETHOD. - - - - - METHOD create_xl_table. - - DATA: lc_xml_node_table TYPE string VALUE 'table', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_display_name TYPE string VALUE 'displayName', - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_totals TYPE string VALUE 'totalsRowShown', - " Node namespace - lc_xml_node_table_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - - lv_table_name TYPE string, - lv_id TYPE i, - lv_match TYPE i, - lv_syindex TYPE char3, - lv_ref TYPE string, - lv_value TYPE string, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_num_columns TYPE i, - ls_fieldcat TYPE zexcel_s_fieldcatalog. - - -********************************************************************** -* STEP 1: Create xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node table - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_table - parent = lo_document ). - - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_table_ns ). - - lv_id = io_table->get_id( ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_id ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - FIND ALL OCCURRENCES OF REGEX '[^_a-zA-Z0-9]' IN io_table->settings-table_name IGNORING CASE MATCH COUNT lv_match. - IF io_table->settings-table_name IS NOT INITIAL AND lv_match EQ 0. - lv_table_name = io_table->settings-table_name. - ELSE. - lv_table_name = io_table->get_name( ). - ENDIF. - lo_element_root->set_attribute_ns( name = lc_xml_attr_name - value = lv_table_name ). - - lo_element_root->set_attribute_ns( name = lc_xml_attr_display_name - value = lv_table_name ). - - lv_ref = io_table->get_reference( ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - IF io_table->has_totals( ) = abap_true. - lo_element_root->set_attribute_ns( name = 'totalsRowCount' - value = '1' ). - ELSE. - lo_element_root->set_attribute_ns( name = lc_xml_attr_totals - value = '0' ). - ENDIF. - -********************************************************************** -* STEP 4: Create subnodes - - " autoFilter - IF io_table->settings-nofilters EQ abap_false. - lo_element = lo_document->create_simple_element( name = 'autoFilter' - parent = lo_document ). - - lv_ref = io_table->get_reference( ip_include_totals_row = abap_false ). - lo_element->set_attribute_ns( name = 'ref' - value = lv_ref ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - "columns - lo_element = lo_document->create_simple_element( name = 'tableColumns' - parent = lo_document ). - -* lo_columns = io_table->get_columns( ). - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - ADD 1 TO lv_num_columns. - ENDLOOP. - - lv_value = lv_num_columns. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - lo_element2 = lo_document->create_simple_element_ns( name = 'tableColumn' - parent = lo_element ). - - lv_value = ls_fieldcat-position. - SHIFT lv_value LEFT DELETING LEADING '0'. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lv_value = ls_fieldcat-scrtext_l. - lo_element2->set_attribute_ns( name = 'name' - value = lv_value ). - - IF ls_fieldcat-totals_function IS NOT INITIAL. - lo_element2->set_attribute_ns( name = 'totalsRowFunction' - value = ls_fieldcat-totals_function ). - ENDIF. - - lo_element->append_child( new_child = lo_element2 ). - ENDLOOP. - - - lo_element = lo_document->create_simple_element( name = 'tableStyleInfo' - parent = lo_element_root ). - - lo_element->set_attribute_ns( name = 'name' - value = io_table->settings-table_style ). - - lo_element->set_attribute_ns( name = 'showFirstColumn' - value = '0' ). - - lo_element->set_attribute_ns( name = 'showLastColumn' - value = '0' ). - - IF io_table->settings-show_row_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showRowStripes' - value = lv_value ). - - IF io_table->settings-show_column_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showColumnStripes' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - method CREATE_XL_THEME. - - -* @TODO * - - DATA: lv_xl_theme TYPE string, - lv_xl_theme_01 TYPE string, - lv_xl_theme_02 TYPE string, - lv_xl_theme_03 TYPE string, - lv_xl_theme_04 TYPE string, - lv_xl_theme_05 TYPE string, - lv_xl_theme_06 TYPE string, - lv_xl_theme_07 TYPE string, - lv_xl_theme_08 TYPE string, - lv_xl_theme_09 TYPE string, - lv_xl_theme_10 TYPE string, - lv_xl_theme_11 TYPE string, - lv_xl_theme_12 TYPE string, - lv_xl_theme_13 TYPE string, - lv_xl_theme_14 TYPE string, - lv_xl_theme_15 TYPE string, - lv_xl_theme_16 TYPE string, - lv_xl_theme_17 TYPE string, - lv_xl_theme_18 TYPE string, - lv_xl_theme_19 TYPE string, - lv_xl_theme_20 TYPE string, - lv_xl_theme_21 TYPE string, - lv_xl_theme_22 TYPE string, - lv_xl_theme_23 TYPE string, - lv_xl_theme_24 TYPE string, - lv_xl_theme_25 TYPE string, - lv_xl_theme_26 TYPE string, - lv_xl_theme_27 TYPE string, - lv_xl_theme_28 TYPE string, - lv_xl_theme_29 TYPE string, - lv_xl_theme_30 TYPE string, - lv_xl_theme_31 TYPE string, - lv_xl_theme_32 TYPE string. - - lv_xl_theme_01 = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'. - lv_xl_theme_02 = '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" '. - lv_xl_theme_03 = 'lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr '. - lv_xl_theme_04 = 'val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink>'. - lv_xl_theme_05 = '<a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_06 = '<a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" '. - lv_xl_theme_07 = 'typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font '. - lv_xl_theme_08 = 'script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" '. - lv_xl_theme_09 = 'typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_10 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_11 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_12 = '<a:font script="Arab" typeface="Arial"/><a:font script="Hebr" '. - lv_xl_theme_13 = 'typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font '. - lv_xl_theme_14 = 'script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font '. - lv_xl_theme_15 = 'script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_16 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_17 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_18 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod '. - lv_xl_theme_19 = 'val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1">'. - lv_xl_theme_20 = '<a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs '. - lv_xl_theme_21 = 'pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" '. - lv_xl_theme_22 = 'algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr '. - lv_xl_theme_23 = 'val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst>'. - lv_xl_theme_24 = '<a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst>'. - lv_xl_theme_25 = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" '. - lv_xl_theme_26 = 'dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig '. - lv_xl_theme_27 = 'rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_28 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade '. - lv_xl_theme_29 = 'val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" '. - lv_xl_theme_30 = 't="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr '. - lv_xl_theme_31 = 'val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme>'. - lv_xl_theme_32 = '</a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>'. - - - CONCATENATE lv_xl_theme_01 lv_xl_theme_02 lv_xl_theme_03 lv_xl_theme_04 lv_xl_theme_05 lv_xl_theme_06 lv_xl_theme_07 lv_xl_theme_08 lv_xl_theme_09 lv_xl_theme_10 lv_xl_theme_11 lv_xl_theme_12 lv_xl_theme_13 lv_xl_theme_14 lv_xl_theme_15 - lv_xl_theme_16 lv_xl_theme_17 lv_xl_theme_18 lv_xl_theme_19 lv_xl_theme_20 lv_xl_theme_21 lv_xl_theme_22 lv_xl_theme_23 lv_xl_theme_24 lv_xl_theme_25 lv_xl_theme_26 lv_xl_theme_27 lv_xl_theme_28 lv_xl_theme_29 lv_xl_theme_30 - lv_xl_theme_31 lv_xl_theme_32 - INTO lv_xl_theme SEPARATED BY space. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - text = lv_xl_theme - IMPORTING - buffer = ep_content. - - - endmethod. - - - - METHOD create_xl_workbook. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-01 -* changes: correction of pointer to localSheetId -*--------------------------------------------------------------------* - -** Constant node name - DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', - lc_xml_node_fileversion TYPE string VALUE 'fileVersion', - lc_xml_node_workbookpr TYPE string VALUE 'workbookPr', - lc_xml_node_bookviews TYPE string VALUE 'bookViews', - lc_xml_node_workbookview TYPE string VALUE 'workbookView', - lc_xml_node_sheets TYPE string VALUE 'sheets', - lc_xml_node_sheet TYPE string VALUE 'sheet', - lc_xml_node_calcpr TYPE string VALUE 'calcPr', - lc_xml_node_workbookprotection TYPE string VALUE 'workbookProtection', - lc_xml_node_definednames TYPE string VALUE 'definedNames', - lc_xml_node_definedname TYPE string VALUE 'definedName', - " Node attributes - lc_xml_attr_appname TYPE string VALUE 'appName', - lc_xml_attr_lastedited TYPE string VALUE 'lastEdited', - lc_xml_attr_lowestedited TYPE string VALUE 'lowestEdited', - lc_xml_attr_rupbuild TYPE string VALUE 'rupBuild', - lc_xml_attr_themeversion TYPE string VALUE 'defaultThemeVersion', - lc_xml_attr_xwindow TYPE string VALUE 'xWindow', - lc_xml_attr_ywindow TYPE string VALUE 'yWindow', - lc_xml_attr_windowwidth TYPE string VALUE 'windowWidth', - lc_xml_attr_windowheight TYPE string VALUE 'windowHeight', - lc_xml_attr_activetab TYPE string VALUE 'activeTab', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_sheetid TYPE string VALUE 'sheetId', - lc_xml_attr_state TYPE string VALUE 'state', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_calcid TYPE string VALUE 'calcId', - lc_xml_attr_lockrevision TYPE string VALUE 'lockRevision', - lc_xml_attr_lockstructure TYPE string VALUE 'lockStructure', - lc_xml_attr_lockwindows TYPE string VALUE 'lockWindows', - lc_xml_attr_revisionspassword TYPE string VALUE 'revisionsPassword', - lc_xml_attr_workbookpassword TYPE string VALUE 'workbookPassword', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_localsheetid TYPE string VALUE 'localSheetId', - " Node namespace - lc_r_ns TYPE string VALUE 'r', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_range TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator_range TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - - DATA: lv_xml_node_ridx_id TYPE string, - lv_value TYPE string, - lv_syindex TYPE string, - l_guid TYPE uuid, - lv_active_sheet TYPE zexcel_active_worksheet. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_workbook - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnode - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_fileversion - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_appname - value = 'xl' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lastedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lowestedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild - value = '4506' ). - lo_element_root->append_child( new_child = lo_element ). - - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_themeversion - value = '124226' ). - lo_element_root->append_child( new_child = lo_element ). - - " workbookProtection node - IF me->excel->zif_excel_book_protection~protected EQ abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookprotection - parent = lo_document ). - MOVE me->excel->zif_excel_book_protection~workbookpassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_workbookpassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~revisionspassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_revisionspassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~lockrevision TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockrevision - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockstructure TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockstructure - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockwindows TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockwindows - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " bookviews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews - parent = lo_document ). - " bookview node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_workbookview - parent = lo_document ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xwindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_ywindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowwidth - value = '19035' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight - value = '8445' ). - " Set Active Sheet - lv_active_sheet = excel->get_active_sheet_index( ). -* issue #365 - test if sheet exists - otherwise set active worksheet to 1 - lo_worksheet = excel->get_worksheet_by_index( lv_active_sheet ). - IF lo_worksheet IS NOT BOUND. - lv_active_sheet = 1. - excel->SET_ACTIVE_SHEET_INDEX( lv_active_sheet ). - ENDIF. - IF lv_active_sheet > 1. - lv_active_sheet = lv_active_sheet - 1. - lv_value = lv_active_sheet. - CONDENSE lv_value. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_activetab - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element )." bookview node - lo_element_root->append_child( new_child = lo_element )." bookviews node - - " sheets node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets - parent = lo_document ). - lo_iterator = excel->get_worksheets_iterator( ). - - " ranges node - lo_element_range = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 + - parent = lo_document ). " issue 163 + - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " sheet node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index. " question by Stefan Schmöcker 2012-12-02: sy-index seems to do the job - but is it proven to work or purely coincedence - lv_value = lo_worksheet->get_title( ). - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_sheetid - value = lv_syindex ). - IF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_hidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'hidden' ). - ELSEIF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_veryhidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'veryHidden' ). - ENDIF. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_id - prefix = lc_r_ns - value = lv_xml_node_ridx_id ). - lo_element->append_child( new_child = lo_sub_element ). " sheet node - - " issue 163 >>> - lo_iterator_range = lo_worksheet->get_ranges_iterator( ). - -*--------------------------------------------------------------------* -* Defined names sheetlocal: Ranges, Repeat rows and columns -*--------------------------------------------------------------------* - WHILE lo_iterator_range->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator_range->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - -* lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid "del #235 Repeat rows/cols - EXCEL starts couting from zero -* value = lv_xml_node_ridx_id ). "del #235 Repeat rows/cols - and needs absolute referencing to localSheetId - lv_value = lv_syindex - 1. "ins #235 Repeat rows/cols - CONDENSE lv_value NO-GAPS. "ins #235 Repeat rows/cols - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - " issue 163 <<< - - ENDWHILE. - lo_element_root->append_child( new_child = lo_element )." sheets node - - -*--------------------------------------------------------------------* -* Defined names workbookgolbal: Ranges -*--------------------------------------------------------------------* -* " ranges node -* lo_element = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 - -* parent = lo_document ). " issue 163 - - lo_iterator = excel->get_ranges_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - -*--------------------------------------------------------------------* -* Defined names - Autofilters ( also sheetlocal ) -*--------------------------------------------------------------------* - lo_autofilters = excel->get_autofilters_reference( ). - IF lo_autofilters->is_empty( ) = abap_false. - lo_iterator = excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index - 1 . - l_guid = lo_worksheet->get_guid( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = l_guid ) . - IF lo_autofilter IS BOUND. - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lv_value = lo_autofilters->c_autofilter. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lv_syindex. - CONDENSE lv_value NO-GAPS. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - lv_value = '1'. " Always hidden - lo_sub_element->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - lv_value = lo_autofilter->get_filter_reference( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - ENDIF. - - ENDWHILE. - ENDIF. - lo_element_root->append_child( new_child = lo_element_range ). " ranges node - - - " calcPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_calcid - value = '125725' ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - method FLAG2BOOL. - - - IF ip_flag EQ abap_true. - ep_boolean = 'true'. - ELSE. - ep_boolean = 'false'. - ENDIF. - endmethod. - - - - - METHOD get_shared_string_index. - - - DATA ls_shared_string TYPE zexcel_s_shared_string. - -* READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH. - READ TABLE shared_strings INTO ls_shared_string WITH TABLE KEY string_value = ip_cell_value. - ep_index = ls_shared_string-string_no. - -ENDMETHOD. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - ep_file = me->create( ). - endmethod. - - - - method CREATE. - -* .csv format with ; delimiter - - ep_excel = me->CREATE_CSV( ). - - endmethod. - - - - method CREATE_CSV. - - TYPES: BEGIN OF lty_format, - cmpname TYPE SEOCMPNAME, - attvalue TYPE SEOVALUE, - END OF lty_format. - DATA: lt_format TYPE STANDARD TABLE OF lty_format, - ls_format LIKE LINE OF lt_format, - lv_date TYPE DATS, - lv_tmp TYPE string, - lv_time TYPE CHAR08. - - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - lv_row TYPE sytabix, - lv_col TYPE sytabix, - lv_string TYPE string, - lc_value TYPE string, - lv_attrname TYPE SEOCMPNAME. - - DATA: ls_numfmt TYPE zexcel_s_style_numfmt, - lo_style TYPE REF TO zcl_excel_style. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - -* --- Retrieve supported cell format - REFRESH lt_format. - SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_format - FROM seocompodf - WHERE clsname = 'ZCL_EXCEL_STYLE_NUMBER_FORMAT' - AND typtype = 1 - AND type = 'ZEXCEL_NUMBER_FORMAT'. - -* --- Retrieve SAP date format - CLEAR ls_format. - SELECT ddtext INTO ls_format-attvalue FROM dd07t WHERE domname = 'XUDATFM' - AND ddlanguage = sy-langu. - ls_format-cmpname = 'DATE'. - CONDENSE ls_format-attvalue. - CONCATENATE '''' ls_format-attvalue '''' INTO ls_format-attvalue. - APPEND ls_format TO lt_format. - ENDSELECT. - - - LOOP AT lt_format INTO ls_format. - TRANSLATE ls_format-attvalue TO UPPER CASE. - MODIFY lt_format FROM ls_format. - ENDLOOP. - - -* STEP 1: Collect strings from the first worksheet - lo_iterator = excel->get_worksheets_iterator( ). - data: current_worksheet_title type ZEXCEL_SHEET_TITLE. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - IF worksheet_name IS NOT INITIAL. - current_worksheet_title = lo_worksheet->get_title( ). - CHECK current_worksheet_title = worksheet_name. - ELSE. - IF worksheet_index IS INITIAL. - worksheet_index = 1. - ENDIF. - CHECK worksheet_index = sy-index. - ENDIF. - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - EXIT. " Take first worksheet only - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - SORT lt_cell_data BY cell_row - cell_column. - lv_row = 1. - lv_col = 1. - CLEAR lv_string. - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - -* --- Retrieve Cell Style format and data type - CLEAR ls_numfmt. - IF <fs_sheet_content>-data_type IS INITIAL AND <fs_sheet_content>-cell_style IS NOT INITIAL. - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_style->get_guid( ) = <fs_sheet_content>-cell_style. - ls_numfmt = lo_style->number_format->get_structure( ). - EXIT. - ENDWHILE. - ENDIF. - IF <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - " determine data-type - CLEAR lv_attrname. - CONCATENATE '''' ls_numfmt-NUMFMT '''' INTO ls_numfmt-NUMFMT. - TRANSLATE ls_numfmt-numfmt TO UPPER CASE. - READ TABLE lt_format INTO ls_format WITH KEY attvalue = ls_numfmt-NUMFMT. - IF sy-subrc = 0. - lv_attrname = ls_format-cmpname. - ENDIF. - - IF lv_attrname IS NOT INITIAL. - FIND FIRST OCCURRENCE OF 'DATETIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'TIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 't'. - ELSE. - FIND FIRST OCCURRENCE OF 'DATE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'CURRENCY' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'NUMBER' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'PERCENTAGE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ENDIF. " Purcentage - ENDIF. " Number - ENDIF. " Currency - ENDIF. " Date - ENDIF. " TIME - ENDIF. " DATETIME - ENDIF. " lv_attrname IS NOT INITIAL. - ENDIF. " <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - -* --- Add empty rows - WHILE lv_row < <fs_sheet_content>-cell_row. -* CONCATENATE lv_string cl_abap_char_utilities=>newline INTO lv_string. -* CONCATENATE lv_string cl_abap_char_utilities=>cr_lf INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>eol INTO lv_string. - lv_row = lv_row + 1. - lv_col = 1. - ENDWHILE. - -* --- Add empty columns - WHILE lv_col < <fs_sheet_content>-cell_column. -* CONCATENATE lv_string ';' INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>delimiter INTO lv_string. - lv_col = lv_col + 1. - ENDWHILE. - -* ----- Use format to determine the data type and display format. - CASE <fs_sheet_content>-data_type. -* WHEN 'n' OR 'N'. -* lc_value = zcl_excel_common=>excel_number_to_string( ip_value = <fs_sheet_content>-cell_value ). - - WHEN 'd' OR 'D'. - lc_value = zcl_excel_common=>excel_string_to_date( ip_value = <fs_sheet_content>-cell_value ). - TRY. - lv_date = lc_value. - CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' - EXPORTING - DATE_INTERNAL = lv_date - IMPORTING - DATE_EXTERNAL = lv_tmp - EXCEPTIONS - DATE_INTERNAL_IS_INVALID = 1 - OTHERS = 2 - . - IF SY-SUBRC = 0. - lc_value = lv_tmp. - ENDIF. - - CATCH CX_SY_CONVERSION_NO_NUMBER. - - ENDTRY. - - WHEN 't' OR 'T'. - lc_value = zcl_excel_common=>excel_string_to_time( ip_value = <fs_sheet_content>-cell_value ). - write lc_value to lv_time USING EDIT MASK '__:__:__'. - lc_value = lv_time. - WHEN OTHERS. - lc_value = <fs_sheet_content>-cell_value. - - ENDCASE. - -* REPLACE ALL OCCURRENCES OF '"' in lc_value with '""'. - CONCATENATE zcl_excel_writer_csv=>enclosure zcl_excel_writer_csv=>enclosure INTO lv_tmp. - CONDENSE lv_tmp. - REPLACE ALL OCCURRENCES OF zcl_excel_writer_csv=>enclosure in lc_value with lv_tmp. - -* FIND FIRST OCCURRENCE OF ';' IN lc_value. - FIND FIRST OCCURRENCE OF zcl_excel_writer_csv=>delimiter IN lc_value. - IF sy-subrc = 0. - CONCATENATE lv_string zcl_excel_writer_csv=>enclosure lc_value zcl_excel_writer_csv=>enclosure INTO lv_string. - ELSE. - CONCATENATE lv_string lc_value INTO lv_string. - ENDIF. - - ENDLOOP. " AT lt_cell_data - - CLEAR ep_content. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - TEXT = lv_string -* MIMETYPE = ' ' -* ENCODING = - IMPORTING - BUFFER = ep_content - EXCEPTIONS - FAILED = 1 - OTHERS = 2 - . - - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX. - CLEAR WORKSHEET_NAME. - WORKSHEET_INDEX = i_active_worksheet. - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX_BY_NAME. - CLEAR WORKSHEET_INDEX. - WORKSHEET_NAME = i_worksheet_name. - endmethod. - - - - method SET_DELIMITER. - delimiter = ip_value. - endmethod. - - - - method SET_ENCLOSURE. - zcl_excel_writer_csv=>enclosure = ip_value. - endmethod. - - - - method SET_ENDOFLINE. - zcl_excel_writer_csv=>eol = ip_value. - endmethod. - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - METHOD create_xl_sharedstrings. -* -* Redefinition using simple transformation instead of CL_IXML -* -** Constant node name - - TYPES: - BEGIN OF ts_root, - count TYPE string, - unique_count TYPE string, - END OF ts_root. - - DATA: - lv_last_allowed_char TYPE char1, - lv_invalid TYPE string. - - DATA: - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: - ls_root TYPE ts_root, - lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_sytabix TYPE sytabix. - - FIELD-SYMBOLS: - <sheet_content> TYPE zexcel_s_cell_data. - -********************************************************************** -* STEP 0: Build Regex for invalid characters - CASE cl_abap_char_utilities=>charsize. - WHEN 1.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 255 ). " FF in non-Unicode - WHEN 2.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 65533 )." FFFD in Unicode - ENDCASE. - CONCATENATE '[^\n\t\r -' lv_last_allowed_char ']' INTO lv_invalid. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL " delete formula content - OR data_type NE 's'. " MvC: Only shared strings - - ls_root-count = lines( lt_cell_data ). - CONDENSE ls_root-count. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - ls_root-unique_count = lines( lt_cell_data ). - CONDENSE ls_root-unique_count. - - LOOP AT lt_cell_data ASSIGNING <sheet_content>. - - lv_sytabix = sy-tabix - 1. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <sheet_content>-cell_value TO ls_shared_string-string_value. - REPLACE ALL OCCURRENCES OF REGEX lv_invalid - IN ls_shared_string-string_value WITH ` `. - APPEND ls_shared_string TO shared_strings. - - ENDLOOP. - -********************************************************************** -* STEP 2: Create XML - - CALL TRANSFORMATION zexcel_tr_shared_strings - SOURCE root = ls_root - shared_strings = shared_strings - OPTIONS xml_header = 'full' - RESULT XML ep_content. - - -ENDMETHOD. - - - METHOD create_xl_sheet. -* -* Build Sheet#.xml with Simple Transformation ZEXCEL_TR_SHEET -* -* This is an adaption of ZCL_EXCEL_WRITER_2007. -* Not all features are supported, notably the autofilter settings, -* conditional formatting and sheet protection. -* -* Bug reports to marcus.voncube AT deutschebahn.com -* - TYPES: - lty_bool TYPE c LENGTH 5. - - CONSTANTS: - lc_false TYPE lty_bool VALUE 'false', "#EC NEEDED - lc_true TYPE lty_bool VALUE 'true', - lc_zero TYPE c LENGTH 1 VALUE '0', - lc_one TYPE c LENGTH 1 VALUE '1', - lc_default_col_width TYPE float VALUE '9.10'. - - TYPES: - BEGIN OF lty_column, - min TYPE i, - max TYPE i, - width TYPE float, - hidden TYPE lty_bool, - customwidth TYPE lty_bool, - bestfit TYPE lty_bool, - collapsed TYPE lty_bool, - outlinelevel TYPE i, - style TYPE i, - END OF lty_column, - - BEGIN OF lty_row, - row TYPE i, - index TYPE i, - spans TYPE c LENGTH 11, "12345:12345" - hidden TYPE lty_bool, - customheight TYPE lty_bool, - height TYPE float, - collapsed TYPE lty_bool, - outlinelevel TYPE i, - customformat TYPE lty_bool, - style TYPE i, - END OF lty_row, - - BEGIN OF lty_mergecell, - ref TYPE c LENGTH 21, "AAA1234567:BBB1234567" - END OF lty_mergecell, - - BEGIN OF lty_hyperlink, - ref TYPE string, - location TYPE string, - r_id TYPE string, - END OF lty_hyperlink, - - BEGIN OF lty_table, - r_id TYPE string, - END OF lty_table, - - BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, - END OF lty_table_area, - - BEGIN OF ty_missing_columns, - first_column TYPE zexcel_cell_column, - last_column TYPE zexcel_cell_column, - END OF ty_missing_columns. - -* -* Root node for transformation -* - DATA: - BEGIN OF l_worksheet, - dimension TYPE string, - tabcolor TYPE string, - summarybelow TYPE c, - summaryright TYPE c, - fittopage TYPE c, - showzeros TYPE c, - tabselected TYPE c, - zoomscale TYPE i, - zoomscalenormal TYPE i, - zoomscalepageview TYPE i, - zoomscalesheetview TYPE i, - workbookviewid TYPE c, - showgridlines TYPE c, - showrowcolheaders TYPE c, - activepane TYPE string, - state TYPE string, - ysplit TYPE i, - xsplit TYPE i, - topleftcell TYPE c LENGTH 10, - activecell TYPE c LENGTH 10, - customheight TYPE lty_bool, - defaultrowheight TYPE float, - defaultcolwidth TYPE float, - outlinelevelrow TYPE i, - outlinelevelcol TYPE i, - cols TYPE STANDARD TABLE OF lty_column, - rows TYPE STANDARD TABLE OF lty_row, - mergecells_count TYPE i, - mergecells TYPE STANDARD TABLE OF lty_mergecell, - hyperlinks_count TYPE i, - hyperlinks TYPE STANDARD TABLE OF lty_hyperlink, - BEGIN OF printoptions, - gridlines TYPE lty_bool, - horizontalcentered TYPE lty_bool, - verticalcentered TYPE lty_bool, - END OF printoptions, - BEGIN OF pagemargins, - left TYPE zexcel_dec_8_2, - right TYPE zexcel_dec_8_2, - top TYPE zexcel_dec_8_2, - bottom TYPE zexcel_dec_8_2, - header TYPE zexcel_dec_8_2, - footer TYPE zexcel_dec_8_2, - END OF pagemargins, - BEGIN OF pagesetup, - blackandwhite TYPE c, - cellcomments TYPE string, - copies TYPE i, - draft TYPE c, - errors TYPE string, - firstpagenumber TYPE i, - fittopage TYPE c, - fittoheight TYPE i, - fittowidth TYPE i, - horizontaldpi TYPE i, - orientation TYPE string, - pageorder TYPE string, - paperheight TYPE string, - papersize TYPE i, - paperwidth TYPE string, - scale TYPE i, - usefirstpagenumber TYPE c, - useprinterdefaults TYPE c, - verticaldpi TYPE i, - END OF pagesetup, - BEGIN OF headerfooter, - differentoddeven TYPE c, - oddheader TYPE string, - oddfooter TYPE string, - evenheader TYPE string, - evenfooter TYPE string, - END OF headerfooter, - drawings TYPE string, - tables_count TYPE i, - tables TYPE STANDARD TABLE OF lty_table, - END OF l_worksheet. - -* -* Local data -* - DATA: - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, - default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lv_value TYPE string, - lv_index TYPE i, - lv_spans TYPE string, - lt_range_merge TYPE string_table, - lv_column TYPE zexcel_cell_column, - lv_style_guid TYPE zexcel_cell_style, - ls_last_row TYPE zexcel_s_cell_data, - lv_freeze_cell_row TYPE zexcel_cell_row, - lv_freeze_cell_column TYPE zexcel_cell_column, - lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, - row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - lv_relation_id TYPE i VALUE 0, - outline_level_row TYPE i VALUE 0, - outline_level_col TYPE i VALUE 0, - col_count TYPE int4, - lt_table_areas TYPE SORTED TABLE OF lty_table_area - WITH NON-UNIQUE KEY left right top bottom, - ls_table_area LIKE LINE OF lt_table_areas, - lts_sorted_columns TYPE SORTED TABLE OF zexcel_cell_column - WITH UNIQUE KEY table_line, - t_missing_columns TYPE STANDARD TABLE OF ty_missing_columns - WITH NON-UNIQUE DEFAULT KEY, - missing_column LIKE LINE OF t_missing_columns, - lo_link TYPE REF TO zcl_excel_hyperlink, - lo_drawings TYPE REF TO zcl_excel_drawings. - - FIELD-SYMBOLS: - <sheet_content> TYPE zexcel_s_cell_data, - <range_merge> LIKE LINE OF lt_range_merge, - <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio, - <col> TYPE lty_column, - <row> TYPE lty_row, - <hyperlink> TYPE lty_hyperlink, - <mergecell> TYPE lty_mergecell, - <table> TYPE lty_table. - -********************************************************************** -* STEP 1: Fill root node -* - l_worksheet-tabcolor = io_worksheet->tabcolor-rgb. - l_worksheet-summarybelow = io_worksheet->zif_excel_sheet_properties~summarybelow. - l_worksheet-summaryright = io_worksheet->zif_excel_sheet_properties~summaryright. - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - l_worksheet-fittopage = lc_one. - ENDIF. - - l_worksheet-dimension = io_worksheet->get_dimension_range( ). - - IF io_worksheet->zif_excel_sheet_properties~show_zeros EQ abap_true. - l_worksheet-showzeros = lc_one. - ELSE. - l_worksheet-showzeros = lc_zero. - ENDIF. - - IF iv_active = abap_true - OR io_worksheet->zif_excel_sheet_properties~selected EQ abap_true. - l_worksheet-tabselected = lc_one. - ELSE. - l_worksheet-tabselected = lc_zero. - ENDIF. - - IF io_worksheet->zif_excel_sheet_properties~zoomscale GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale = 10. - ENDIF. - l_worksheet-zoomscale = io_worksheet->zif_excel_sheet_properties~zoomscale. - - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_normal LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 10. - ENDIF. - l_worksheet-zoomscalenormal = io_worksheet->zif_excel_sheet_properties~zoomscale_normal. - ENDIF. - - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 10. - ENDIF. - l_worksheet-zoomscalepageview = io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview. - ENDIF. - - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 10. - ENDIF. - l_worksheet-zoomscalesheetview = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. - ENDIF. - - l_worksheet-workbookviewid = lc_zero. - - IF io_worksheet->show_gridlines = abap_true. - l_worksheet-showgridlines = lc_one. - ELSE. - l_worksheet-showgridlines = lc_zero. - ENDIF. - - IF io_worksheet->show_rowcolheaders = abap_true. - l_worksheet-showrowcolheaders = lc_one. - ELSE. - l_worksheet-showrowcolheaders = lc_zero. - ENDIF. - -* -* Freeze -* - io_worksheet->get_freeze_cell( - IMPORTING ep_row = lv_freeze_cell_row - ep_column = lv_freeze_cell_column ). - - IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL. - IF lv_freeze_cell_row > 1. - l_worksheet-ysplit = lv_freeze_cell_row - 1. - ENDIF. - - IF lv_freeze_cell_column > 1. - lv_value = lv_freeze_cell_column - 1. - l_worksheet-xsplit = lv_freeze_cell_row - 1. - ENDIF. - - lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ). - CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value. - l_worksheet-topleftcell = lv_value. - - l_worksheet-activepane = 'bottomRight'. - l_worksheet-state = 'frozen'. - ENDIF. - - l_worksheet-activecell = io_worksheet->get_active_cell( ). - -* -* Row and column info -* - column_dimensions[] = io_worksheet->get_column_dimensions( ). - row_dimensions[] = io_worksheet->get_row_dimensions( ). - - IF NOT column_dimensions IS INITIAL. - io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). - ENDIF. - - default_row_dimension = io_worksheet->get_default_row_dimension( ). - IF default_row_dimension IS BOUND. - IF default_row_dimension->get_row_height( ) >= 0. - l_worksheet-customheight = lc_true. - lv_value = default_row_dimension->get_row_height( ). - ELSE. - lv_value = '12.75'. - ENDIF. - ELSE. - lv_value = '12.75'. - ENDIF. - CONDENSE lv_value. - l_worksheet-defaultrowheight = lv_value. - - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - l_worksheet-defaultcolwidth = default_col_dimension->get_width( ). - ENDIF. - ENDIF. - - LOOP AT row_dimensions ASSIGNING <row_dimension>. - IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. - l_worksheet-outlinelevelrow = <row_dimension>-row_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - - LOOP AT column_dimensions ASSIGNING <column_dimension>. - IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. - l_worksheet-outlinelevelcol = <column_dimension>-column_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - -* -* Set column information (width, style, ...) -* - LOOP AT column_dimensions ASSIGNING <column_dimension>. - APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING <col>. - <col>-min = <col>-max = <column_dimension>-column_dimension->get_column_index( ). - <col>-width = <column_dimension>-column_dimension->get_width( ). - IF <col>-width < 0. - <col>-width = lc_default_col_width. - ENDIF. - IF <column_dimension>-column_dimension->get_visible( ) = abap_false. - <col>-hidden = lc_true. - ENDIF. - IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true. - <col>-bestfit = lc_true. - ENDIF. - IF default_col_dimension IS BOUND. - IF <column_dimension>-column_dimension->get_width( ) - <> default_col_dimension->get_width( ). - <col>-customwidth = lc_true. - ENDIF. - ELSE. - <col>-customwidth = lc_true. - ENDIF. - IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true. - <col>-collapsed = lc_true. - ENDIF. - <col>-outlinelevel = <column_dimension>-column_dimension->get_outline_level( ). - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). - <col>-style = me->excel->get_style_index_in_styles( lv_style_guid ) - 1. - ENDLOOP. - -* -* Missing columns -* -* First collect columns that were already handled before. -* The rest has to be inserted now. -* - LOOP AT column_dimensions ASSIGNING <column_dimension>. - lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-column ). - INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. - -* -* Now find all columns that were missing so far -* - missing_column-first_column = 1. - - LOOP AT lts_sorted_columns INTO lv_column. - IF lv_column > missing_column-first_column. - missing_column-last_column = lv_column - 1. - APPEND missing_column TO t_missing_columns. - ENDIF. - missing_column-first_column = lv_column + 1. - ENDLOOP. - - missing_column-last_column = zcl_excel_common=>c_excel_sheet_max_col. - APPEND missing_column TO t_missing_columns. - -* -* Now apply stylesetting and other defaults -* - LOOP AT t_missing_columns INTO missing_column. - APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING <col>. - <col>-min = missing_column-first_column. - <col>-max = missing_column-last_column. - IF default_col_dimension IS BOUND AND default_col_dimension->get_width( ) >= 0. - <col>-width = default_col_dimension->get_width( ). - ELSE. - <col>-width = lc_default_col_width. - ENDIF. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - <col>-style = me->excel->get_style_index_in_styles( lv_style_guid ) - 1. - ENDLOOP. - -* -* Build table to hold all table-areas attached to this sheet -* - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). - ls_table_area-right = lo_table->get_right_column_integer( ). - ls_table_area-top = lo_table->settings-top_left_row. - ls_table_area-bottom = lo_table->get_bottom_row_integer( ). - INSERT ls_table_area INTO TABLE lt_table_areas. - ENDWHILE. - -* -* Build sheet data node -* -* Spans is constant amongst all rows -* - col_count = io_worksheet->get_highest_column( ). - lv_spans = col_count. - CONCATENATE '1:' lv_spans INTO lv_spans. - CONDENSE lv_spans. - - LOOP AT io_worksheet->sheet_content ASSIGNING <sheet_content>. - - IF ls_last_row-cell_row NE <sheet_content>-cell_row. -* -* Fill row information. -* Cell data is filled in by callback GET_CELLS called from transformation -* - lv_index = sy-tabix. - APPEND INITIAL LINE TO l_worksheet-rows ASSIGNING <row>. - <row>-row = <sheet_content>-cell_row. - <row>-index = lv_index. - <row>-spans = lv_spans. - -* -* Row dimension attributes -* - row_dimension = io_worksheet->get_row_dimension( <sheet_content>-cell_row ). - IF row_dimension->get_visible( ) = abap_false. - <row>-hidden = lc_true. - ENDIF. - - IF row_dimension->get_row_height( ) >= 0. - <row>-customheight = lc_one. - <row>-height = row_dimension->get_row_height( ). - ENDIF. - -* -* Collapsed -* - IF row_dimension->get_collapsed( ) = abap_true. - <row>-collapsed = lc_true. - ENDIF. - -* -* Outline level -* - <row>-outlinelevel = row_dimension->get_outline_level( ). - -* -* Style -* - <row>-style = row_dimension->get_xf_index( ). - IF <row>-style <> 0. - <row>-customformat = lc_one. - ENDIF. - ENDIF. - - ls_last_row = <sheet_content>. - ENDLOOP. - -* -* Merged cells -* - lt_range_merge = io_worksheet->get_merge( ). - IF lt_range_merge IS NOT INITIAL. - l_worksheet-mergecells_count = lines( lt_range_merge ). - - LOOP AT lt_range_merge ASSIGNING <range_merge>. - APPEND INITIAL LINE TO l_worksheet-mergecells ASSIGNING <mergecell>. - <mergecell>-ref = <range_merge>. - io_worksheet->delete_merge( ). - ENDLOOP. - ENDIF. - -* -* Hyperlinks -* - l_worksheet-hyperlinks_count = io_worksheet->get_hyperlinks_size( ). - IF l_worksheet-hyperlinks_count > 0. - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - - APPEND INITIAL LINE TO l_worksheet-hyperlinks ASSIGNING <hyperlink>. - <hyperlink>-ref = lo_link->get_ref( ). - IF lo_link->is_internal( ) = abap_true. - <hyperlink>-location = lo_link->get_url( ). - ELSE. - ADD 1 TO lv_relation_id. - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - <hyperlink>-r_id = lv_value. - ENDIF. - ENDWHILE. - ENDIF. - -* -* Print options -* - IF io_worksheet->print_gridlines = abap_true. - l_worksheet-printoptions-gridlines = lc_true. - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_centered = abap_true. - l_worksheet-printoptions-horizontalcentered = lc_true. - ENDIF. - - IF io_worksheet->sheet_setup->vertical_centered = abap_true. - l_worksheet-printoptions-verticalcentered = lc_true. - ENDIF. - -* -* Page margins -* - l_worksheet-pagemargins-left = io_worksheet->sheet_setup->margin_left. - l_worksheet-pagemargins-right = io_worksheet->sheet_setup->margin_right. - l_worksheet-pagemargins-top = io_worksheet->sheet_setup->margin_top. - l_worksheet-pagemargins-bottom = io_worksheet->sheet_setup->margin_bottom. - l_worksheet-pagemargins-header = io_worksheet->sheet_setup->margin_header. - l_worksheet-pagemargins-footer = io_worksheet->sheet_setup->margin_footer. - -* -* Page setup -* - l_worksheet-pagesetup-cellcomments = io_worksheet->sheet_setup->cell_comments. - l_worksheet-pagesetup-copies = io_worksheet->sheet_setup->copies. - l_worksheet-pagesetup-firstpagenumber = io_worksheet->sheet_setup->first_page_number. - l_worksheet-pagesetup-fittopage = io_worksheet->sheet_setup->fit_to_page. - l_worksheet-pagesetup-fittoheight = io_worksheet->sheet_setup->fit_to_height. - l_worksheet-pagesetup-fittowidth = io_worksheet->sheet_setup->fit_to_width. - l_worksheet-pagesetup-horizontaldpi = io_worksheet->sheet_setup->horizontal_dpi. - l_worksheet-pagesetup-orientation = io_worksheet->sheet_setup->orientation. - l_worksheet-pagesetup-pageorder = io_worksheet->sheet_setup->page_order. - l_worksheet-pagesetup-paperheight = io_worksheet->sheet_setup->paper_height. - l_worksheet-pagesetup-papersize = io_worksheet->sheet_setup->paper_size. - l_worksheet-pagesetup-paperwidth = io_worksheet->sheet_setup->paper_width. - l_worksheet-pagesetup-scale = io_worksheet->sheet_setup->scale. - l_worksheet-pagesetup-usefirstpagenumber = io_worksheet->sheet_setup->use_first_page_num. - l_worksheet-pagesetup-verticaldpi = io_worksheet->sheet_setup->vertical_dpi. - - IF io_worksheet->sheet_setup->black_and_white IS NOT INITIAL. - l_worksheet-pagesetup-blackandwhite = lc_one. - ENDIF. - - IF io_worksheet->sheet_setup->draft IS NOT INITIAL. - l_worksheet-pagesetup-draft = lc_one. - ENDIF. - - IF io_worksheet->sheet_setup->errors IS NOT INITIAL. - l_worksheet-pagesetup-errors = io_worksheet->sheet_setup->errors. - ENDIF. - - IF io_worksheet->sheet_setup->use_printer_defaults IS NOT INITIAL. - l_worksheet-pagesetup-useprinterdefaults = lc_one. - ENDIF. - -* -* Header and footer -* - IF io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - l_worksheet-headerfooter-differentoddeven = lc_one. - ENDIF. - - io_worksheet->sheet_setup->get_header_footer_string( - IMPORTING - ep_odd_header = l_worksheet-headerfooter-oddheader - ep_odd_footer = l_worksheet-headerfooter-oddfooter - ep_even_header = l_worksheet-headerfooter-evenheader - ep_even_footer = l_worksheet-headerfooter-evenfooter ). - -* -* Drawings -* - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - ADD 1 TO lv_relation_id. - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO l_worksheet-drawings. - ENDIF. - -* -* Tables -* - l_worksheet-tables_count = io_worksheet->get_tables_size( ). - IF l_worksheet-tables_count > 0. - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND INITIAL LINE TO l_worksheet-tables ASSIGNING <table>. - ADD 1 TO lv_relation_id. - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO <table>-r_id. - ENDWHILE. - ENDIF. - -********************************************************************** -* STEP 2: Create XML - - me->worksheet = io_worksheet. "Neccessary for callback GET_CELL - - CALL TRANSFORMATION zexcel_tr_sheet - SOURCE worksheet = l_worksheet - cells = me->cells - writer = me - OPTIONS xml_header = 'full' - RESULT XML ep_content. - -ENDMETHOD. "CREATE_XL_SHEET - - - - - METHOD get_cells. -* -* Callback method from transformation ZEXCEL_TR_SHEET -* -* The method fills the data cells for each row. -* This saves memory if there are many rows. -* - DATA: - lv_cell_style TYPE zexcel_cell_style. - - FIELD-SYMBOLS: - <cell> TYPE ty_cell, - <content> TYPE zexcel_s_cell_data, - <style> TYPE zexcel_s_styles_mapping. - - CLEAR cells. - - LOOP AT worksheet->sheet_content FROM i_index ASSIGNING <content>. - IF <content>-cell_row <> i_row. -* -* End of row -* - EXIT. - ENDIF. - -* -* Determine style index -* - IF lv_cell_style <> <content>-cell_style. - lv_cell_style = <content>-cell_style. - UNASSIGN <style>. - IF lv_cell_style IS NOT INITIAL. - READ TABLE styles_mapping ASSIGNING <style> WITH KEY guid = lv_cell_style. - ENDIF. - ENDIF. -* -* Add a new cell -* - APPEND INITIAL LINE TO cells ASSIGNING <cell>. - <cell>-name = <content>-cell_coords. - <cell>-formula = <content>-cell_formula. - <cell>-type = <content>-data_type. - IF <cell>-type = 's'. - <cell>-value = me->get_shared_string_index( <content>-cell_value ). - ELSE. - <cell>-value = <content>-cell_value. - ENDIF. - IF <style> IS ASSIGNED. - <cell>-style = <style>-style. - ELSE. - <cell>-style = -1. - ENDIF. - - ENDLOOP. - -ENDMETHOD. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - METHOD add_further_data_to_zip. - - super->add_further_data_to_zip( io_zip = io_zip ). - -* Add vbaProject.bin to zip - io_zip->add( name = me->c_xl_vbaproject - content = me->excel->zif_excel_book_vba_project~vbaproject ). - -ENDMETHOD. - - - METHOD create_content_types. -** Constant node name - DATA: lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.ms-excel.sheet.macroEnabled.main+xml', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - lc_xml_attr_codename TYPE string VALUE 'codeName', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_bin_ext TYPE string VALUE 'bin', - lc_xml_node_bin_ct TYPE string VALUE 'application/vnd.ms-office.vbaProject'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_contenttype TYPE string, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard contentType - ep_content = super->create_content_types( ). - -********************************************************************** -* STEP 2: modify XML adding the extension bin definition - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_bin_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_bin_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: modify XML changing the contentType of node Override /xl/workbook.xml - - lo_collection = lo_document->get_elements_by_tag_name( 'Override' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lv_contenttype = lo_element->get_attribute_ns( lc_xml_attr_partname ). - IF lv_contenttype EQ lc_xml_node_workb_pn. - lo_element->remove_attribute_ns( lc_xml_attr_contenttype ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - EXIT. - ENDIF. - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - METHOD create_xl_relationships. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_vba_tp TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', - " Node target - lc_xml_node_rid_vba_tg TYPE string VALUE 'vbaProject.bin'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_relationships( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 4 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_vba_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_vba_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - METHOD create_xl_sheet. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_sheet( io_worksheet = io_worksheet - iv_active = iv_active ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - lo_collection = lo_document->get_elements_by_tag_name( 'sheetPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = io_worksheet->zif_excel_sheet_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). -ENDMETHOD. - - - METHOD create_xl_workbook. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_workbook( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'workbookPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - method IF_MESSAGE~GET_LONGTEXT. - - IF me->error IS NOT INITIAL - OR me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this as longtext as well -*--------------------------------------------------------------------* - result = me->get_text( ). - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - super->if_message~get_longtext( EXPORTING - preserve_newlines = preserve_newlines - RECEIVING - result = result ). - ENDIF. - endmethod. - - - method IF_MESSAGE~GET_TEXT. - - IF me->error IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this -*--------------------------------------------------------------------* - result = me->error . - ELSEIF me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied by syst create messagetext now -*--------------------------------------------------------------------* - MESSAGE ID syst_at_raise-msgid TYPE syst_at_raise-msgty NUMBER syst_at_raise-msgno - WITH syst_at_raise-msgv1 syst_at_raise-msgv2 syst_at_raise-msgv3 syst_at_raise-msgv4 - INTO result. - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - CALL METHOD super->if_message~get_text - RECEIVING - result = result. - ENDIF. - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZABAP2XLSX_DEMO_SHOW -*&---------------------------------------------------------------------* -REPORT zabap2xlsx_demo_like_se83. - - -*----------------------------------------------------------------------* -* CLASS lcl_perform DEFINITION -*----------------------------------------------------------------------* -CLASS lcl_perform DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: setup_objects, - collect_reports, - - handle_nav FOR EVENT double_click OF cl_gui_alv_grid - IMPORTING e_row. - - PRIVATE SECTION. - TYPES: BEGIN OF ty_reports, - progname TYPE reposrc-progname, - sort TYPE reposrc-progname, - filename TYPE string, - END OF ty_reports. - - CLASS-DATA: - lo_grid TYPE REF TO cl_gui_alv_grid, - lo_text TYPE REF TO cl_gui_textedit, - cl_document TYPE REF TO i_oi_document_proxy, - - t_reports TYPE STANDARD TABLE OF ty_reports WITH NON-UNIQUE DEFAULT KEY. - CLASS-DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control. "Office Dokument - -ENDCLASS. "lcl_perform DEFINITION - - -START-OF-SELECTION. - lcl_perform=>collect_reports( ). - lcl_perform=>setup_objects( ). - -END-OF-SELECTION. - - WRITE '.'. " Force output - - -*----------------------------------------------------------------------* -* CLASS lcl_perform IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_perform IMPLEMENTATION. - METHOD setup_objects. - DATA: lo_split TYPE REF TO cl_gui_splitter_container, - lo_container TYPE REF TO cl_gui_container. - - DATA: it_fieldcat TYPE lvc_t_fcat, - is_layout TYPE lvc_s_layo, - is_variant TYPE disvariant. - FIELD-SYMBOLS: <fc> LIKE LINE OF it_fieldcat. - - - CREATE OBJECT lo_split - EXPORTING - parent = cl_gui_container=>screen0 - rows = 1 - columns = 3 - no_autodef_progid_dynnr = 'X'. - lo_split->set_column_width( EXPORTING id = 1 - width = 20 ). - lo_split->set_column_width( EXPORTING id = 2 - width = 40 ). - -* Left: List of reports - lo_container = lo_split->get_container( row = 1 - column = 1 ). - - CREATE OBJECT lo_grid - EXPORTING - i_parent = lo_container. - SET HANDLER lcl_perform=>handle_nav FOR lo_grid. - - is_variant-report = sy-repid. - is_variant-handle = '0001'. - - is_layout-cwidth_opt = 'X'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'PROGNAME'. - <fc>-tabname = 'REPOSRC'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'SORT'. - <fc>-ref_field = 'PROGNAME'. - <fc>-ref_table = 'REPOSRC'. - - - lo_grid->set_table_for_first_display( EXPORTING - is_variant = is_variant - i_save = 'A' - is_layout = is_layout - CHANGING - it_outtab = t_reports - it_fieldcatalog = it_fieldcat - EXCEPTIONS - invalid_parameter_combination = 1 - program_error = 2 - too_many_lines = 3 - OTHERS = 4 ). - -* Middle: Text with coding - lo_container = lo_split->get_container( row = 1 - column = 2 ). - CREATE OBJECT lo_text - EXPORTING - parent = lo_container. - lo_text->set_readonly_mode( cl_gui_textedit=>true ). - lo_text->set_font_fixed( ). - - - -* right: DemoOutput - lo_container = lo_split->get_container( row = 1 - column = 3 ). - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = lo_container - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - - ENDMETHOD. "setup_objects - - "collect_reports - METHOD collect_reports. - FIELD-SYMBOLS:<report> LIKE LINE OF t_reports. - DATA: t_source TYPE STANDARD TABLE OF text255 WITH NON-UNIQUE DEFAULT KEY. - -* Get all demoreports - SELECT progname - INTO CORRESPONDING FIELDS OF TABLE t_reports - FROM reposrc - WHERE progname LIKE 'ZDEMO_EXCEL%' - AND progname <> sy-repid - AND subc = '1'. - - LOOP AT t_reports ASSIGNING <report>. - -* Check if already switched to new outputoptions - READ REPORT <report>-progname INTO t_source. - IF sy-subrc = 0. - FIND 'INCLUDE zdemo_excel_outputopt_incl.' IN TABLE t_source IGNORING CASE. - ENDIF. - IF sy-subrc <> 0. - DELETE t_reports. - CONTINUE. - ENDIF. - - -* Build half-numeric sort - <report>-sort = <report>-progname. - REPLACE REGEX '(ZDEMO_EXCEL)(\d\d)\s*$' IN <report>-sort WITH '$1\0$2'. " REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE - - REPLACE REGEX '(ZDEMO_EXCEL)(\d)\s*$' IN <report>-sort WITH '$1\0\0$2'. - ENDLOOP. - SORT t_reports BY sort progname. - - ENDMETHOD. "collect_reports - - METHOD handle_nav. - CONSTANTS: filename TYPE text80 VALUE 'ZABAP2XLSX_DEMO_SHOW.xlsx'. - DATA: wa_report LIKE LINE OF t_reports, - t_source TYPE STANDARD TABLE OF text255, - t_rawdata TYPE solix_tab, - wa_rawdata LIKE LINE OF t_rawdata, - bytecount TYPE i, - length TYPE i, - add_selopt TYPE flag. - - - READ TABLE t_reports INTO wa_report INDEX e_row-index. - CHECK sy-subrc = 0. - -* Set new text into middle frame - READ REPORT wa_report-progname INTO t_source. - lo_text->set_text_as_r3table( EXPORTING table = t_source ). - - -* Unload old xls-file - cl_document->close_document( ). - -* Get the demo -* If additional parameters found on selection screen, start via selection screen , otherwise start w/o - CLEAR add_selopt. - FIND 'PARAMETERS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ELSE. - FIND 'SELECT-OPTIONS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ENDIF. - ENDIF. - IF add_selopt IS INITIAL. - SUBMIT (wa_report-progname) AND RETURN "#EC CI_SUBMIT - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ELSE. - SUBMIT (wa_report-progname) VIA SELECTION-SCREEN AND RETURN "#EC CI_SUBMIT - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ENDIF. - - OPEN DATASET filename FOR INPUT IN BINARY MODE. - IF sy-subrc = 0. - DO. - CLEAR wa_rawdata. - READ DATASET filename INTO wa_rawdata LENGTH length. - IF sy-subrc <> 0. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - EXIT. - ENDIF. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - ENDDO. - CLOSE DATASET filename. - ENDIF. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - ENDMETHOD. "handle_nav - -ENDCLASS. "lcl_perform IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZANGRY_BIRDS -*& Just for fun -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zangry_birds. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_border_light TYPE REF TO zcl_excel_style_border, - lo_style_color0 TYPE REF TO zcl_excel_style, - lo_style_color1 TYPE REF TO zcl_excel_style, - lo_style_color2 TYPE REF TO zcl_excel_style, - lo_style_color3 TYPE REF TO zcl_excel_style, - lo_style_color4 TYPE REF TO zcl_excel_style, - lo_style_color5 TYPE REF TO zcl_excel_style, - lo_style_color6 TYPE REF TO zcl_excel_style, - lo_style_color7 TYPE REF TO zcl_excel_style, - lo_style_credit TYPE REF TO zcl_excel_style, - lo_style_link TYPE REF TO zcl_excel_style, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_style_color0_guid TYPE zexcel_cell_style, - lv_style_color1_guid TYPE zexcel_cell_style, - lv_style_color2_guid TYPE zexcel_cell_style, - lv_style_color3_guid TYPE zexcel_cell_style, - lv_style_color4_guid TYPE zexcel_cell_style, - lv_style_color5_guid TYPE zexcel_cell_style, - lv_style_color6_guid TYPE zexcel_cell_style, - lv_style_color7_guid TYPE zexcel_cell_style, - lv_style_credit_guid TYPE zexcel_cell_style, - lv_style_link_guid TYPE zexcel_cell_style, - lv_style TYPE zexcel_cell_style. - -DATA: lv_col_str TYPE zexcel_cell_column_alpha, - lv_row TYPE i, - lv_col TYPE i, - lt_mapper TYPE TABLE OF zexcel_cell_style, - ls_mapper TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'angry_birds.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_white. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - - " Create color white - lo_style_color0 = lo_excel->add_new_style( ). - lo_style_color0->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color0->fill->fgcolor-rgb = 'FFFFFFFF'. - lo_style_color0->borders->allborders = lo_border_light. - lv_style_color0_guid = lo_style_color0->get_guid( ). - - " Create color black - lo_style_color1 = lo_excel->add_new_style( ). - lo_style_color1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color1->fill->fgcolor-rgb = 'FF252525'. - lo_style_color1->borders->allborders = lo_border_light. - lv_style_color1_guid = lo_style_color1->get_guid( ). - - " Create color dark green - lo_style_color2 = lo_excel->add_new_style( ). - lo_style_color2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color2->fill->fgcolor-rgb = 'FF75913A'. - lo_style_color2->borders->allborders = lo_border_light. - lv_style_color2_guid = lo_style_color2->get_guid( ). - - " Create color light green - lo_style_color3 = lo_excel->add_new_style( ). - lo_style_color3->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color3->fill->fgcolor-rgb = 'FF9DFB73'. - lo_style_color3->borders->allborders = lo_border_light. - lv_style_color3_guid = lo_style_color3->get_guid( ). - - " Create color green - lo_style_color4 = lo_excel->add_new_style( ). - lo_style_color4->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color4->fill->fgcolor-rgb = 'FF92CF56'. - lo_style_color4->borders->allborders = lo_border_light. - lv_style_color4_guid = lo_style_color4->get_guid( ). - - " Create color 2dark green - lo_style_color5 = lo_excel->add_new_style( ). - lo_style_color5->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color5->fill->fgcolor-rgb = 'FF506228'. - lo_style_color5->borders->allborders = lo_border_light. - lv_style_color5_guid = lo_style_color5->get_guid( ). - - " Create color yellow - lo_style_color6 = lo_excel->add_new_style( ). - lo_style_color6->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color6->fill->fgcolor-rgb = 'FFC3E224'. - lo_style_color6->borders->allborders = lo_border_light. - lv_style_color6_guid = lo_style_color6->get_guid( ). - - " Create color yellow - lo_style_color7 = lo_excel->add_new_style( ). - lo_style_color7->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color7->fill->fgcolor-rgb = 'FFB3C14F'. - lo_style_color7->borders->allborders = lo_border_light. - lv_style_color7_guid = lo_style_color7->get_guid( ). - - " Credits - lo_style_credit = lo_excel->add_new_style( ). - lo_style_credit->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_credit->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_credit->font->size = 20. - lv_style_credit_guid = lo_style_credit->get_guid( ). - - " Link - lo_style_link = lo_excel->add_new_style( ). - lo_style_link->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_link->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. -* lo_style_link->font->size = 20. - lv_style_link_guid = lo_style_link->get_guid( ). - - " Create image map " line 2 - DO 30 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 3 - DO 28 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 4 - DO 27 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 5 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 6 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 7 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 8 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 9 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 10 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 11 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 12 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 13 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 14 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 12 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 15 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 16 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 17 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 18 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 19 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 27 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 20 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 21 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 19 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 22 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 23 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 24 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 25 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 26 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 27 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 28 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 29 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 30 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 31 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 32 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 33 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 34 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 35 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 36 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 37 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 38 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 39 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 22 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 40 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 41 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 42 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 43 - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 44 - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 45 - DO 16 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 46 - DO 18 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Angry Birds' ). - - lv_row = 1. - lv_col = 1. - - LOOP AT lt_mapper INTO ls_mapper. - lv_col_str = zcl_excel_common=>convert_column2alpha( lv_col ). - IF ls_mapper IS INITIAL. - lo_row_dimension = lo_worksheet->get_row_dimension( ip_row = lv_row ). - lo_row_dimension->set_row_height( ip_row_height = 8 ). - lv_col = 1. - lv_row = lv_row + 1. - CONTINUE. - ENDIF. - lo_worksheet->set_cell( ip_column = lv_col_str - ip_row = lv_row - ip_value = space - ip_style = ls_mapper ). - lv_col = lv_col + 1. - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = lv_col_str ). - lo_column_dimension->set_width( ip_width = 2 ). - ENDLOOP. - - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 15 - ip_value = 'Created with abap2xlsx' - ip_style = lv_style_credit_guid ). - - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 24 - ip_value = 'http://www.abap2xlsx.org' - ip_style = lv_style_link_guid - ip_hyperlink = lo_hyperlink ). - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'AP' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->set_merge( ip_row = 15 ip_column_start = 'AP' ip_row_to = 22 ip_column_end = 'AR' ). - lo_worksheet->set_merge( ip_row = 24 ip_column_start = 'AP' ip_row_to = 26 ip_column_end = 'AR' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_CALENDAR -*& abap2xlsx Demo: Create Calendar with Pictures -*&---------------------------------------------------------------------* -*& This report creates a monthly calendar in the specified date range. -*& Each month is put on a seperate worksheet. The pictures for each -*& month can be specified in a tab delimited file called "Calendar.txt" -*& which is saved in the Export Directory. By default this is the SAP -*& Workdir. The file contains 3 fields: -*& -*& Month (with leading 0) -*& Image Filename -*& Image Description -*& URL for the Description -*& -*& The Images should be landscape JPEG's with a 3:2 ratio and min. -*& 450 pixel height. They must also be saved in the Export Directory. -*& In my tests I've discovered a limit of 20 MB in the -*& cl_gui_frontend_services=>gui_download method. So keep your images -*& smaller or change to a server export using OPEN DATASET. -*&---------------------------------------------------------------------* - -REPORT zdemo_calendar. - -TYPE-POOLS: abap. -CONSTANTS: gc_save_file_name TYPE string VALUE 'Calendar.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. -INCLUDE zdemo_calendar_classes. - -DATA: lv_workdir TYPE string. - -PARAMETERS: p_from TYPE dfrom DEFAULT '20130101', - p_to TYPE dto DEFAULT '20131231'. - -SELECTION-SCREEN BEGIN OF BLOCK orientation WITH FRAME TITLE orient. -PARAMETERS: p_portr TYPE flag RADIOBUTTON GROUP orie, - p_lands TYPE flag RADIOBUTTON GROUP orie DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK orientation. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - orient = 'Orientation'(000). - -START-OF-SELECTION. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lo_style_month TYPE REF TO zcl_excel_style, - lv_style_month_guid TYPE zexcel_cell_style. - DATA: lo_style_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lv_style_border_guid TYPE zexcel_cell_style. - DATA: lo_style_center TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lv_full_path TYPE string, - image_descr_path TYPE string, - lv_file_separator TYPE c. - DATA: lv_content TYPE xstring, - width TYPE i, - lv_height TYPE i, - lv_from_row TYPE zexcel_cell_row. - - DATA: month TYPE i, - month_nr TYPE fcmnr, - count TYPE i VALUE 1, - title TYPE zexcel_sheet_title, - value TYPE string, - image_path TYPE string, - date_from TYPE datum, - date_to TYPE datum, - row TYPE zexcel_cell_row, - to_row TYPE zexcel_cell_row, - to_col TYPE zexcel_cell_column_alpha, - to_col_end TYPE zexcel_cell_column_alpha, - to_col_int TYPE i. - - DATA: month_names TYPE TABLE OF t247. - FIELD-SYMBOLS: <month_name> LIKE LINE OF month_names. - - TYPES: BEGIN OF tt_datatab, - month_nr TYPE fcmnr, - filename TYPE string, - descr TYPE string, - url TYPE string, - END OF tt_datatab. - - DATA: image_descriptions TYPE TABLE OF tt_datatab. - FIELD-SYMBOLS: <img_descr> LIKE LINE OF image_descriptions. - - CONSTANTS: lv_default_file_name TYPE string VALUE 'Calendar', "#EC NOTEXT - c_from_row_portrait TYPE zexcel_cell_row VALUE 28, - c_from_row_landscape TYPE zexcel_cell_row VALUE 38, - from_col TYPE zexcel_cell_column_alpha VALUE 'C', - c_height_portrait TYPE i VALUE 450, " Image Height in Portrait Mode - c_height_landscape TYPE i VALUE 670, " Image Height in Landscape Mode - c_factor TYPE f VALUE '1.5'. " Image Ratio, default 3:2 - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name '.xlsx' INTO lv_full_path. "#EC NOTEXT - - " Read Image Names for Month and Description - CONCATENATE p_path lv_file_separator lv_default_file_name '.txt' INTO image_descr_path. "#EC NOTEXT - cl_gui_frontend_services=>gui_upload( - EXPORTING - filename = image_descr_path " Name of file - filetype = 'ASC' " File Type (ASCII, Binary) - has_field_separator = 'X' - read_by_line = 'X' " File Written Line-By-Line to the Internal Table - CHANGING - data_tab = image_descriptions " Transfer table for file contents - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create Styles - " Create an underline double style - lo_style_month = lo_excel->add_new_style( ). - " lo_style_month->font->underline = abap_true. - " lo_style_month->font->underline_mode = zcl_excel_style_font=>c_underline_single. - lo_style_month->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_month->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_month->font->family = zcl_excel_style_font=>c_family_roman. - lo_style_month->font->bold = abap_true. - lo_style_month->font->size = 36. - lv_style_month_guid = lo_style_month->get_guid( ). - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lo_style_border->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_border_guid = lo_style_border->get_guid( ). - "Create style alignment center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_center->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_center_guid = lo_style_center->get_guid( ). - - " Get Month Names - CALL FUNCTION 'MONTH_NAMES_GET' - TABLES - month_names = month_names. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = p_from - i_date_to = p_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - date_from = p_from. - - WHILE count <= month. - IF count = 1. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - ELSE. - lo_worksheet = lo_excel->add_new_worksheet( ). - ENDIF. - - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - - title = count. - value = count. - CONDENSE title. - CONDENSE value. - lo_worksheet->set_title( title ). - lo_worksheet->set_print_gridlines( abap_false ). - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_col_dim = lo_worksheet->get_column_dimension( 'A' ). - lo_col_dim->set_width( '1.0' ). - lo_col_dim = lo_worksheet->get_column_dimension( 'B' ). - lo_col_dim->set_width( '2.0' ). - IF p_lands = abap_true. - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lv_height = c_height_landscape. - lv_from_row = c_from_row_landscape. - lo_worksheet->sheet_setup->margin_top = '0.10'. - lo_worksheet->sheet_setup->margin_left = '0.10'. - lo_worksheet->sheet_setup->margin_right = '0.10'. - lo_worksheet->sheet_setup->margin_bottom = '0.10'. - ELSE. - lo_col_dim = lo_worksheet->get_column_dimension( 'K' ). - lo_col_dim->set_width( '3.0' ). - lo_worksheet->sheet_setup->margin_top = '0.80'. - lo_worksheet->sheet_setup->margin_left = '0.55'. - lo_worksheet->sheet_setup->margin_right = '0.05'. - lo_worksheet->sheet_setup->margin_bottom = '0.30'. - lv_height = c_height_portrait. - lv_from_row = c_from_row_portrait. - ENDIF. - - " Add Month Name - month_nr = date_from+4(2). - IF p_portr = abap_true. - READ TABLE month_names WITH KEY mnr = month_nr ASSIGNING <month_name>. - CONCATENATE <month_name>-ltx ` ` date_from(4) INTO value. - row = lv_from_row - 2. - to_col = from_col. - ELSE. - row = lv_from_row - 1. - to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 32. - to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). - to_col_int = to_col_int + 1. - to_col_end = zcl_excel_common=>convert_column2alpha( to_col_int ). - CONCATENATE month_nr '/' date_from+2(2) INTO value. - to_row = row + 2. - lo_worksheet->set_merge( - EXPORTING - ip_column_start = to_col " Cell Column Start - ip_column_end = to_col_end " Cell Column End - ip_row = row " Cell Row - ip_row_to = to_row " Cell Row - ). - ENDIF. - lo_worksheet->set_cell( - EXPORTING - ip_column = to_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = lv_style_month_guid - ). - -* to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 7. -* to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). -* -* lo_worksheet->set_merge( -* EXPORTING -* ip_column_start = from_col " Cell Column Start -* ip_column_end = to_col " Cell Column End -* ip_row = row " Cell Row -* ip_row_to = row " Cell Row -* ). - - " Add drawing from a XSTRING read from a file - UNASSIGN <img_descr>. - READ TABLE image_descriptions WITH KEY month_nr = month_nr ASSIGNING <img_descr>. - IF <img_descr> IS ASSIGNED. - value = <img_descr>-descr. - IF p_portr = abap_true. - row = lv_from_row - 3. - ELSE. - row = lv_from_row - 2. - ENDIF. - IF NOT <img_descr>-url IS INITIAL. - hyperlink = zcl_excel_hyperlink=>create_external_link( <img_descr>-url ). - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - ELSE. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ). - ENDIF. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '22.0' ). - - " In Landscape mode the row between the description and the - " dates should be not so high - IF p_lands = abap_true. - row = lv_from_row - 3. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '7.0' ). - row = lv_from_row - 1. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - ENDIF. - - CONCATENATE p_path lv_file_separator <img_descr>-filename INTO image_path. - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 1 - ip_from_col = 'B' ). - - lv_content = zcl_helper=>load_image( image_path ). - width = lv_height * c_factor. - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = width - ip_height = lv_height ). - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - " Add Calendar -* CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH' -* EXPORTING -* day_in = date_from -* IMPORTING -* last_day_of_month = date_to. - date_to = date_from. - date_to+6(2) = '01'. " First of month - add 31 to date_to. " Somewhere in following month - date_to = date_to - date_to+6(2). " Last of month - IF p_portr = abap_true. - zcl_helper=>add_calendar( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ELSE. - zcl_helper=>add_calendar_landscape( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ENDIF. - count = count + 1. - date_from = date_to + 1. - ENDWHILE. - - lo_excel->set_active_sheet_index_by_name( '1' ). -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_CALENDAR_CLASSES -*&---------------------------------------------------------------------* - -*&---------------------------------------------------------------------* -*& Class ZCL_DATE_CALCULATION -*&---------------------------------------------------------------------* -* Text -*----------------------------------------------------------------------* -CLASS zcl_date_calculation DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: months_between_two_dates - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_incl_to TYPE flag - EXPORTING - e_month TYPE i. -ENDCLASS. "ZCL_DATE_CALCULATION - - -*----------------------------------------------------------------------* -* CLASS ZCL_DATE_CALCULATION IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation IMPLEMENTATION. - METHOD months_between_two_dates. - DATA: date_to TYPE datum. - DATA: BEGIN OF datum_von, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_von. - - DATA: BEGIN OF datum_bis, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_bis. - - e_month = 0. - - CHECK NOT ( i_date_from IS INITIAL ) - AND NOT ( i_date_to IS INITIAL ). - - date_to = i_date_to. - IF i_incl_to = abap_true. - date_to = date_to + 1. - ENDIF. - - datum_von = i_date_from. - datum_bis = date_to. - - e_month = ( datum_bis-jjjj - datum_von-jjjj ) * 12 - + ( datum_bis-mm - datum_von-mm ). - ENDMETHOD. "MONTHS_BETWEEN_TWO_DATES -ENDCLASS. "ZCL_DATE_CALCULATION IMPLEMENTATION - -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test DEFINITION FOR TESTING - " DURATION SHORT - " RISK LEVEL HARMLESS - "#AU Duration Medium - "#AU Risk_Level Harmless - . - PUBLIC SECTION. - METHODS: - months_between_two_dates FOR TESTING. -ENDCLASS. "zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test IMPLEMENTATION. - METHOD months_between_two_dates. - - DATA: date_from TYPE datum VALUE '20120101', - date_to TYPE datum VALUE '20121231'. - DATA: month TYPE i. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - cl_aunit_assert=>assert_equals( - exp = 12 " Data Object with Expected Type - act = month " Data Object with Current Value - msg = 'Calculated date is wrong' " Message in Case of Error - ). - - ENDMETHOD. "months_between_two_dates -ENDCLASS. "zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* CLASS zcl_helper DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: - load_image - IMPORTING - filename TYPE string - RETURNING value(r_image) TYPE xstring, - add_calendar - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calendar_landscape - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_a2x_footer - IMPORTING - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calender_week - IMPORTING - i_date TYPE datum - i_row TYPE zexcel_cell_row - i_col TYPE zexcel_cell_column_alpha - i_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet. -ENDCLASS. "zcl_helper DEFINITION - -*----------------------------------------------------------------------* -* CLASS zcl_helper IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper IMPLEMENTATION. - METHOD load_image. - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = filename - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = r_image - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - ENDMETHOD. "load_image - METHOD add_calendar. - DATA: day_names TYPE TABLE OF t246. - DATA: row TYPE zexcel_cell_row, - row_max TYPE i, - col_int TYPE zexcel_cell_column, - col_max TYPE i, - from_col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha, - lr_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lr_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: lv_date TYPE datum, - value TYPE string, - weekday TYPE wotnr, - weekrow TYPE wotnr VALUE 1, - day TYPE i, - width TYPE f, - height TYPE f. - DATA: hyperlink TYPE REF TO zcl_excel_hyperlink. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - from_col_int = zcl_excel_common=>convert_column2int( i_from_col ). - " Add description for Calendar Week - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = 'CW'(001) " Cell Value - ip_style = i_cw_style - ). - - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - LOOP AT day_names ASSIGNING <day_name>. - row = i_from_row. - col_int = from_col_int + <day_name>-wotnr. - col = zcl_excel_common=>convert_column2alpha( col_int ). - value = <day_name>-langt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - ENDLOOP. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - - row = i_from_row + weekrow. - col_int = from_col_int + weekday. - col = zcl_excel_common=>convert_column2alpha( col_int ). - - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - - IF weekday = 7. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - weekrow = weekrow + 1. - ENDIF. - lv_date = lv_date + 1. - ENDWHILE. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - " Add Created with abap2xlsx - row = row + 2. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - col_int = from_col_int. - col_max = from_col_int + 7. - WHILE col_int <= col_max. - col = zcl_excel_common=>convert_column2alpha( col_int ). - IF sy-index = 1. - width = '5.0'. - ELSE. - width = '11.4'. - ENDIF. - lr_col_dim = c_worksheet->get_column_dimension( col ). - lr_col_dim->set_width( width ). - col_int = col_int + 1. - ENDWHILE. - row = i_from_row + 1. - row_max = i_from_row + 6. - WHILE row <= row_max. - height = 50. - lr_row_dim = c_worksheet->get_row_dimension( row ). - lr_row_dim->set_row_height( height ). - row = row + 1. - ENDWHILE. - ENDMETHOD. "add_calendar - METHOD add_a2x_footer. - DATA: value TYPE string, - hyperlink TYPE REF TO zcl_excel_hyperlink. - - value = 'Created with abap2xlsx. Find more information at http://abap2xlsx.org.'(002). - hyperlink = zcl_excel_hyperlink=>create_external_link( 'http://abap2xlsx.org' ). "#EC NOTEXT - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - - ENDMETHOD. "add_a2x_footer - METHOD add_calendar_landscape. - DATA: day_names TYPE TABLE OF t246. - - DATA: lv_date TYPE datum, - day TYPE i, - value TYPE string, - weekday TYPE wotnr. - DATA: row TYPE zexcel_cell_row, - from_col_int TYPE zexcel_cell_column, - col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha. - DATA: lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - " Day name row - row = i_from_row. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - READ TABLE day_names ASSIGNING <day_name> - WITH KEY wotnr = weekday. - value = <day_name>-kurzt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - - " Day row - row = i_from_row + 1. - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - - - lv_date = lv_date + 1. - ENDWHILE. - " Add ABAP2XLSX Footer - row = i_from_row + 2. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = c_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - row = i_from_row + 3. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - - " Set with for all 31 coulumns - WHILE day < 32. - day = day + 1. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - ENDWHILE. - ENDMETHOD. "ADD_CALENDAR_LANDSCAPE - - METHOD add_calender_week. - DATA: week TYPE kweek, - week_int TYPE i, - value TYPE string. - " Add Calender Week - CALL FUNCTION 'DATE_GET_WEEK' - EXPORTING - date = i_date " Date for which the week should be calculated - IMPORTING - week = week. " Week for date (format:YYYYWW) - value = week+4(2). - week_int = value. - value = week_int. - CONDENSE value. - c_worksheet->set_cell( - EXPORTING - ip_column = i_col " Cell Column - ip_row = i_row " Cell Row - ip_value = value " Cell Value - ip_style = i_style - ). - ENDMETHOD. "add_calender_week -ENDCLASS. "zcl_helper IMPLEMENTATION - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel. - -DATA: lv_workdir TYPE string, - lv_upfile TYPE string. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = sy-lisel ). - CONCATENATE p_path sy-lisel '01_HelloWorld.xlsx' INTO lv_upfile. - - SUBMIT zdemo_excel1 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Hello world - SUBMIT zdemo_excel2 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Styles - SUBMIT zdemo_excel3 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: iTab binding - SUBMIT zdemo_excel4 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multi sheets, page setup and sheet properties - SUBMIT zdemo_excel5 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel6 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Formulas - SUBMIT zdemo_excel7 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel8 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Ranges - SUBMIT zdemo_excel9 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Data validation - SUBMIT zdemo_excel10 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind table with field catalog - " zdemo_excel11 is not added because it has a selection screen and - " you also need to have business partners maintained in transaction BP - SUBMIT zdemo_excel12 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Column size - SUBMIT zdemo_excel13 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Merge cell - SUBMIT zdemo_excel14 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Alignment - " zdemo_excel15 added at the end - SUBMIT zdemo_excel16 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Drawing - SUBMIT zdemo_excel17 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Lock sheet - SUBMIT zdemo_excel18 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Lock workbook - SUBMIT zdemo_excel19 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Set active sheet - " zdemo_excel20 is not added because it uses ALV and cannot be processed (OLE2) - SUBMIT zdemo_excel21 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Color Picker - SUBMIT zdemo_excel22 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind table with field catalog & sheet style - SUBMIT zdemo_excel23 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multiple sheets with and w/o grid lines, print options - SUBMIT zdemo_excel24 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multiple sheets with different default date formats - SUBMIT zdemo_excel25 AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Create and xlsx on Application Server (could be executed in batch mode) - " zdemo_excel26 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel27 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional Formatting - SUBMIT zdemo_excel28 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: CSV writer - " SUBMIT zdemo_excel29 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Macro enabled workbook - SUBMIT zdemo_excel30 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: ABAP Cell data types + leading blanks string - SUBMIT zdemo_excel31 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Autosize Column with different Font sizes - " zdemo_excel32 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel33 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Table autofilter - SUBMIT zdemo_excel34 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Static Styles Chess - SUBMIT zdemo_excel35 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Static Styles - SUBMIT zdemo_excel36 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Style applied to sheet, column and single cell - SUBMIT zdemo_excel37 WITH p_upfile = lv_upfile - WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Simplest call of the reader and writer - passthrough data - SUBMIT zdemo_excel38 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Show off integration of drawings ( here using the SAP-Icons ) - SUBMIT zdemo_excel39 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Charts - SUBMIT zdemo_excel40 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Demo Printsettings - SUBMIT zdemo_excel41 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Inheritance - " - " Reader/Writer Demo must always run at the end - " to make sure all documents where created - " - SUBMIT zdemo_excel15 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT Read Excel and write it back - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel1. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -CONSTANTS: gc_save_file_name TYPE string VALUE '01_HelloWorld.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). -* lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_width( ip_width = 11 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL10 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel10. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_iconset TYPE zexcel_conditional_iconset. - -CONSTANTS: gc_save_file_name TYPE string VALUE '10_iTabFieldCatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - "Conditional style - lo_style_conditional2 = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional2->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional2->mode_iconset = ls_iconset. - lo_style_conditional2->priority = 1. - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_count. - WHEN 'CONNID'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-abap_type = cl_abap_typedescr=>typekind_int. - "This avoid the excel warning that the number is formatted as a text: abap2xlsx is not able to recognize numc as a number so it formats the number as a text with - "the related warning. You can force the type and the framework will correctly format the number as a number - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'PRICE'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - <fs_field_catalog>-cond_style = lo_style_conditional2. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). "make date field a bit wider - column_dimension->set_width( ip_width = 13 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL11 -*& Export Organisation and Contact Persons using ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel11. - -TYPE-POOLS: abap. - -DATA: central_search TYPE bapibus1006_central_search, - addressdata_search TYPE bapibus1006_addr_search, - others_search TYPE bapibus1006_other_data. -DATA: searchresult TYPE TABLE OF bapibus1006_bp_addr, - return TYPE TABLE OF bapiret2. -DATA: lines TYPE i. -FIELD-SYMBOLS: <searchresult_line> LIKE LINE OF searchresult. -DATA: centraldata TYPE bapibus1006_central, - centraldataperson TYPE bapibus1006_central_person, - centraldataorganization TYPE bapibus1006_central_organ. -DATA: addressdata TYPE bapibus1006_address. -DATA: relationships TYPE TABLE OF bapibus1006_relations. -FIELD-SYMBOLS: <relationship> LIKE LINE OF relationships. -DATA: relationship_centraldata TYPE bapibus1006002_central. -DATA: relationship_addresses TYPE TABLE OF bapibus1006002_addresses. -FIELD-SYMBOLS: <relationship_address> LIKE LINE OF relationship_addresses. - -DATA: lt_download TYPE TABLE OF zexcel_s_org_rel. -FIELD-SYMBOLS: <download> LIKE LINE OF lt_download. - -CONSTANTS: gc_save_file_name TYPE string VALUE '11_Export_Org_and_Contact.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -PARAMETERS: md TYPE flag RADIOBUTTON GROUP act. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-00a. -PARAMETERS: partnerc TYPE bu_type DEFAULT 2, " Organizations - postlcod TYPE ad_pstcd1 DEFAULT '8334*', - country TYPE land1 DEFAULT 'DE', - maxsel TYPE bu_maxsel DEFAULT 100. -SELECTION-SCREEN END OF BLOCK a. - -PARAMETERS: rel TYPE flag RADIOBUTTON GROUP act DEFAULT 'X'. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-00b. -PARAMETERS: reltyp TYPE bu_reltyp DEFAULT 'BUR011', - partner TYPE bu_partner DEFAULT '191'. -SELECTION-SCREEN END OF BLOCK b. - -START-OF-SELECTION. - IF md = abap_true. - " Read all Companies by Master Data - central_search-partnercategory = partnerc. - addressdata_search-postl_cod1 = postlcod. - addressdata_search-country = country. - others_search-maxsel = maxsel. - others_search-no_search_for_contactperson = 'X'. - - CALL FUNCTION 'BAPI_BUPA_SEARCH_2' - EXPORTING - centraldata = central_search - addressdata = addressdata_search - OTHERS = others_search - TABLES - searchresult = searchresult - return = return. - - SORT searchresult BY partner. - DELETE ADJACENT DUPLICATES FROM searchresult COMPARING partner. - ELSEIF rel = abap_true. - " Read by Relationship - SELECT but050~partner1 AS partner FROM but050 - INNER JOIN but000 ON but000~partner = but050~partner1 AND but000~type = '2' - INTO CORRESPONDING FIELDS OF TABLE searchresult - WHERE but050~partner2 = partner - AND but050~reltyp = reltyp. - ENDIF. - - DESCRIBE TABLE searchresult LINES lines. - WRITE: / 'Number of search results: ', lines. - - LOOP AT searchresult ASSIGNING <searchresult_line>. - " Read Details of Organization - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - centraldataorganization = centraldataorganization. - " Read Standard Address of Organization - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - addressdata = addressdata. - - " Add Organization to Download - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - " Fill Organization Partner Numbers - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - CLEAR: addressdata. - - " Read all Relationships - CLEAR: relationships. - CALL FUNCTION 'BAPI_BUPA_RELATIONSHIPS_GET' - EXPORTING - businesspartner = <searchresult_line>-partner - TABLES - relationships = relationships. - DELETE relationships WHERE relationshipcategory <> 'BUR001'. - LOOP AT relationships ASSIGNING <relationship>. - " Read details of Contact person - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - centraldata = centraldata - centraldataperson = centraldataperson. - " Read details of the Relationship - CALL FUNCTION 'BAPI_BUPR_CONTP_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - IMPORTING - centraldata = relationship_centraldata. - " Read relationship address - CLEAR: relationship_addresses. - - CALL FUNCTION 'BAPI_BUPR_CONTP_ADDRESSES_GET' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - TABLES - addresses = relationship_addresses. - - READ TABLE relationship_addresses - ASSIGNING <relationship_address> - WITH KEY standardaddress = 'X'. - - IF <relationship_address> IS ASSIGNED. - " Read Relationship Address - CLEAR addressdata. - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - addressguid = <relationship_address>-addressguid - IMPORTING - addressdata = addressdata. - - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner1 - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - businesspartnerout = <download>-contpers_number - businesspartnerguidout = <download>-contpers_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - MOVE-CORRESPONDING centraldataperson TO <download>. - MOVE-CORRESPONDING relationship_centraldata TO <download>. - - WRITE: / <relationship>-partner1, <relationship>-partner2. - WRITE: centraldataorganization-name1(20), centraldataorganization-name2(10). - WRITE: centraldataperson-firstname(15), centraldataperson-lastname(15). - WRITE: addressdata-street(25), addressdata-house_no, - addressdata-postl_cod1, addressdata-city(25). - ENDIF. - ENDLOOP. - - ENDLOOP. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_body TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_style_body_even_guid TYPE zexcel_cell_style, - lv_style_body_green TYPE zexcel_cell_style. - - DATA: row TYPE zexcel_cell_row. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings. - - DATA: column TYPE zexcel_cell_column, - column_alpha TYPE zexcel_cell_column_alpha, - value TYPE zexcel_cell_value. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border even - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_yellow. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_even_guid = lo_style_body->get_guid( ). - "Create style with border and green fill - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_green = lo_style_body->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_download ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'ORG_NUMBER'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CONTPERS_NUMBER'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME1'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME2'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'STREET'. - <fs_field_catalog>-position = 5. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'HOUSE_NO'. - <fs_field_catalog>-position = 6. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'POSTL_COD1'. - <fs_field_catalog>-position = 7. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CITY'. - <fs_field_catalog>-position = 8. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'COUNTRYISO'. - <fs_field_catalog>-position = 9. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FIRSTNAME'. - <fs_field_catalog>-position = 10. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'LASTNAME'. - <fs_field_catalog>-position = 11. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FUNCTIONNAME'. - <fs_field_catalog>-position = 12. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'DEPARTMENTNAME'. - <fs_field_catalog>-position = 13. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_NUMBR'. - <fs_field_catalog>-position = 14. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_EXT'. - <fs_field_catalog>-position = 15. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_NUMBER'. - <fs_field_catalog>-position = 16. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_EXTENS'. - <fs_field_catalog>-position = 17. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'E_MAIL'. - <fs_field_catalog>-position = 18. - <fs_field_catalog>-dynpfld = abap_true. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = '2'. - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_download - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - LOOP AT lt_download ASSIGNING <download>. - row = sy-tabix + 2. - IF NOT <download>-org_number IS INITIAL - AND <download>-contpers_number IS INITIAL. - " Mark fields of Organization which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'C' - ip_row = row - ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'D' - ip_row = row - ip_style = lv_style_body_green - ). -* CATCH zcx_excel. " Exceptions for ABAP2XLSX - ELSEIF NOT <download>-org_number IS INITIAL - AND NOT <download>-contpers_number IS INITIAL. - " Mark fields of Relationship which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'L' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'M' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'N' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'O' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'P' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'Q' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'R' ip_row = row ip_style = lv_style_body_green - ). - ENDIF. - ENDLOOP. - " Add Fieldnames in first row and hide the row - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog> - WHERE position <> '' AND dynpfld = abap_true. - column = <fs_field_catalog>-position. - column_alpha = zcl_excel_common=>convert_column2alpha( column ). - value = <fs_field_catalog>-fieldname. - lo_worksheet->set_cell( ip_column = column_alpha - ip_row = 1 - ip_value = value - ip_style = lv_style_body_even_guid ). - ENDLOOP. - " Hide first row - row_dimension = lo_worksheet->get_row_dimension( 1 ). - row_dimension->set_visible( abap_false ). - - DATA: highest_column TYPE zexcel_cell_column, - count TYPE int4, - col_alpha TYPE zexcel_cell_column_alpha. - - highest_column = lo_worksheet->get_highest_column( ). - count = 1. - WHILE count <= highest_column. - col_alpha = zcl_excel_common=>convert_column2alpha( ip_column = count ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = col_alpha ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - count = count + 1. - ENDWHILE. -* " Set Column width manuall -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). -* column_dimension->set_width( ip_width = 35 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). -* column_dimension->set_width( ip_width = 18 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). -* column_dimension->set_width( ip_width = 5 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). -* column_dimension->set_width( ip_width = 6 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). -* column_dimension->set_width( ip_width = 3 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'J' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'K' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'L' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'M' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'N' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'O' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'P' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'Q' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'R' ). -* column_dimension->set_width( ip_width = 40 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL12 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel12. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: gc_save_file_name TYPE string VALUE '12_HideSizeOutlineRowsAndColumns.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world in AutoSize column' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Hello world in a column width size 50' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Hello world (hidden column)' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'Outline column level 0' ). - lo_worksheet->set_cell( ip_column = 'G' ip_row = 2 ip_value = 'Outline column level 1' ). - lo_worksheet->set_cell( ip_column = 'H' ip_row = 2 ip_value = 'Outline column level 2' ). - lo_worksheet->set_cell( ip_column = 'I' ip_row = 2 ip_value = 'Small' ). - - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Hello world (hidden row)' ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 5 ip_value = 'Hello world in a row height size 20' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Simple outline rows 10-16 ( collapsed )' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 19 ip_value = '3 Outlines - Outlinelevel 1 is collapsed' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_value = 'One of the two inner outlines is expanded, one collapsed' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_value = 'Inner outline level - expanded' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 24 ip_value = 'Inner outline level - lines 25-28 are collapsed' ). - - lo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. " By default is on - lo_worksheet->zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>c_right_off. " By default is on - - " Column Settings - " Auto size - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - " Manual Width - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_width( ip_width = 50 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_visible( ip_visible = abap_false ). - " Implementation in the Writer is not working yet ===== TODO ===== - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). - column_dimension->set_outline_level( ip_outline_level = 0 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). - column_dimension->set_outline_level( ip_outline_level = 1 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). - column_dimension->set_outline_level( ip_outline_level = 2 ). - - row_dimension = lo_worksheet->get_row_dimension( ip_row = 1 ). - row_dimension->set_visible( ip_visible = abap_false ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 5 ). - row_dimension->set_row_height( ip_row_height = 20 ). -* obsolete, not intuitive. Use new method shown below -* " Implementation in the Writer is not working yet ===== TODO ===== -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 6 ). -* row_dimension->set_outline_level( ip_outline_level = 0 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 7 ). -* row_dimension->set_outline_level( ip_outline_level = 1 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 8 ). -* row_dimension->set_outline_level( ip_outline_level = 2 ). - -* Define an outline rows 10-16, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 10 - iv_row_to = 16 - iv_collapsed = abap_true ). " collapsed - -* Define an inner outline rows 21-22, expanded when outer outline becomes extended - lo_worksheet->set_row_outline( iv_row_from = 21 - iv_row_to = 22 - iv_collapsed = abap_false ). " expanded - -* Define an inner outline rows 25-28, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 25 - iv_row_to = 28 - iv_collapsed = abap_true ). " collapsed - -* Define an outer outline rows 20-30, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 20 - iv_row_to = 30 - iv_collapsed = abap_true ). " collapsed - -* Hint: the order you create the outlines can be arbitrary -* You can start with inner outlines or with outer outlines - -*--------------------------------------------------------------------* -* Hide columns right of column M -*--------------------------------------------------------------------* - lo_worksheet->zif_excel_sheet_properties~hide_columns_from = 'M'. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL13 -*& -*&---------------------------------------------------------------------* -*& Example by: Alvaro "Blag" Tejada Galindo. -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel13. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_bold_border_guid TYPE zexcel_cell_style, - lo_style_bold_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '13_MergedCells.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - - lo_style_bold_border = lo_excel->add_new_style( ). - lo_style_bold_border->font->bold = abap_true. - lo_style_bold_border->font->italic = abap_false. - lo_style_bold_border->font->color-rgb = zcl_excel_style_color=>c_black. - lo_style_bold_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_bold_border->borders->allborders = lo_border_dark. - lv_style_bold_border_guid = lo_style_bold_border->get_guid( ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - - lo_worksheet->set_merge( ip_row = 4 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test also if merge works when oher merged chells are empty - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Tomato' ). - lo_worksheet->set_merge( ip_row = 6 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test the patch provided by Victor Alekhin to merge cells in one column - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 'Merge cells also over multiple rows by Victor Alekhin' ). - lo_worksheet->set_merge( ip_row = 8 ip_column_start = 'B' ip_column_end = 'G' ip_row_to = 10 ). - - " Test the patch provided by Alexander Budeyev with different column merges - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 'Merge cells with different merges by Alexander Budeyev' ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - - " Test merge (issue) - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'B' ip_column_end = 'C' ip_row_to = 15 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'D' ip_column_end = 'D' ip_row_to = 14 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'E' ip_column_end = 'F' ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL14 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel14. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_center TYPE REF TO zcl_excel_style, - lo_style_right TYPE REF TO zcl_excel_style, - lo_style_left TYPE REF TO zcl_excel_style, - lo_style_general TYPE REF TO zcl_excel_style, - lo_style_bottom TYPE REF TO zcl_excel_style, - lo_style_middle TYPE REF TO zcl_excel_style, - lo_style_top TYPE REF TO zcl_excel_style, - lo_style_justify TYPE REF TO zcl_excel_style, - lo_style_mixed TYPE REF TO zcl_excel_style, - lo_style_mixed_wrap TYPE REF TO zcl_excel_style, - lo_style_rotated TYPE REF TO zcl_excel_style, - lo_style_shrink TYPE REF TO zcl_excel_style, - lo_style_indent TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style, - lv_style_right_guid TYPE zexcel_cell_style, - lv_style_left_guid TYPE zexcel_cell_style, - lv_style_general_guid TYPE zexcel_cell_style, - lv_style_bottom_guid TYPE zexcel_cell_style, - lv_style_middle_guid TYPE zexcel_cell_style, - lv_style_top_guid TYPE zexcel_cell_style, - lv_style_justify_guid TYPE zexcel_cell_style, - lv_style_mixed_guid TYPE zexcel_cell_style, - lv_style_mixed_wrap_guid TYPE zexcel_cell_style, - lv_style_rotated_guid TYPE zexcel_cell_style, - lv_style_shrink_guid TYPE zexcel_cell_style, - lv_style_indent_guid TYPE zexcel_cell_style. - -DATA: lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '14_Alignment.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - "Center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lv_style_center_guid = lo_style_center->get_guid( ). - "Right - lo_style_right = lo_excel->add_new_style( ). - lo_style_right->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lv_style_right_guid = lo_style_right->get_guid( ). - "Left - lo_style_left = lo_excel->add_new_style( ). - lo_style_left->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_left. - lv_style_left_guid = lo_style_left->get_guid( ). - "General - lo_style_general = lo_excel->add_new_style( ). - lo_style_general->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_general. - lv_style_general_guid = lo_style_general->get_guid( ). - "Bottom - lo_style_bottom = lo_excel->add_new_style( ). - lo_style_bottom->alignment->vertical = zcl_excel_style_alignment=>c_vertical_bottom. - lv_style_bottom_guid = lo_style_bottom->get_guid( ). - "Middle - lo_style_middle = lo_excel->add_new_style( ). - lo_style_middle->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_middle_guid = lo_style_middle->get_guid( ). - "Top - lo_style_top = lo_excel->add_new_style( ). - lo_style_top->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_top_guid = lo_style_top->get_guid( ). - "Justify - lo_style_justify = lo_excel->add_new_style( ). - lo_style_justify->alignment->vertical = zcl_excel_style_alignment=>c_vertical_justify. - lv_style_justify_guid = lo_style_justify->get_guid( ). - - "Shrink - lo_style_shrink = lo_excel->add_new_style( ). - lo_style_shrink->alignment->shrinktofit = abap_true. - lv_style_shrink_guid = lo_style_shrink->get_guid( ). - - "Indent - lo_style_indent = lo_excel->add_new_style( ). - lo_style_indent->alignment->indent = 5. - lv_style_indent_guid = lo_style_indent->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed_wrap = lo_excel->add_new_style( ). - lo_style_mixed_wrap->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed_wrap->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_mixed_wrap->alignment->wraptext = abap_true. - lv_style_mixed_wrap_guid = lo_style_mixed_wrap->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed = lo_excel->add_new_style( ). - lo_style_mixed->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_mixed_guid = lo_style_mixed->get_guid( ). - - "Center - lo_style_rotated = lo_excel->add_new_style( ). - lo_style_rotated->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_rotated->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_rotated->alignment->textrotation = 165. " -75° == 90° + 75° - lv_style_rotated_guid = lo_style_rotated->get_guid( ). - - - " Set row size for first 7 rows to 40 - DO 7 TIMES. - lo_row_dimension = lo_worksheet->get_row_dimension( sy-index ). - lo_row_dimension->set_row_height( 40 ). - ENDDO. - - "Horizontal alignment - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Centered Text' ip_style = lv_style_center_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Right Text' ip_style = lv_style_right_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Left Text' ip_style = lv_style_left_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'General Text' ip_style = lv_style_general_guid ). - - " Shrink & indent - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'Text shrinked' ip_style = lv_style_shrink_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 'Text indented' ip_style = lv_style_indent_guid ). - - "Vertical alignment - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Bottom Text' ip_style = lv_style_bottom_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Middle Text' ip_style = lv_style_middle_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Top Text' ip_style = lv_style_top_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 'Justify Text' ip_style = lv_style_justify_guid ). - - " Wrapped - lo_worksheet->set_cell( ip_row = 10 ip_column = 'B' - ip_value = 'This is a wrapped text centered in the middle' - ip_style = lv_style_mixed_wrap_guid ). - - " Rotated - lo_worksheet->set_cell( ip_row = 10 ip_column = 'D' - ip_value = 'This is a centered text rotated by -75°' - ip_style = lv_style_rotated_guid ). - - " forced line break - DATA: lv_value TYPE string. - CONCATENATE 'This is a wrapped text centered in the middle' cl_abap_char_utilities=>cr_lf - 'and a manuall line break.' INTO lv_value. - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' - ip_value = lv_value - ip_style = lv_style_mixed_guid ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL15 -*& -*&---------------------------------------------------------------------* -*& 2010-10-30, Gregor Wolf: -*& Added the functionality to ouput the read table content -*& 2011-12-19, Shahrin Shahrulzaman: -*& Added the functionality to have multiple input and output files -*&---------------------------------------------------------------------* - -REPORT zdemo_excel15. - -TYPE-POOLS: abap. - -TYPES: - BEGIN OF t_demo_excel15, - input TYPE string, - END OF t_demo_excel15. - -DATA: excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - reader TYPE REF TO zif_excel_reader. - -DATA: ex TYPE REF TO zcx_excel, - msg TYPE string. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_workdir TYPE string, - output_file_path TYPE string, - input_file_path TYPE string, - lv_file_separator TYPE c. - -DATA: worksheet TYPE REF TO zcl_excel_worksheet, - highest_column TYPE zexcel_cell_column, - highest_row TYPE int4, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha, - row TYPE int4 VALUE 1, - value TYPE zexcel_cell_value. - -DATA: - lt_files TYPE TABLE OF t_demo_excel15. -FIELD-SYMBOLS: <wa_files> TYPE t_demo_excel15. - -PARAMETERS: p_path TYPE zexcel_export_dir, - p_noout TYPE xfeld DEFAULT abap_true. - - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '01_HelloWorld.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '02_Styles.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '03_iTab.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '04_Sheets.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '08_Range.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '13_MergedCells.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '31_AutosizeWithDifferentFontSizes.xlsx'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - - LOOP AT lt_files ASSIGNING <wa_files>. - CONCATENATE p_path lv_file_separator <wa_files>-input INTO input_file_path. - CONCATENATE p_path lv_file_separator '15_' <wa_files>-input INTO output_file_path. - REPLACE '.xlsx' IN output_file_path WITH 'FromReader.xlsx'. - - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( input_file_path ). - - IF p_noout EQ abap_false. - worksheet = excel->get_active_worksheet( ). - highest_column = worksheet->get_highest_column( ). - highest_row = worksheet->get_highest_row( ). - - WRITE: 'Highest column: ', highest_column, 'Highest row: ', highest_row. - WRITE: /. - - WHILE row <= highest_row. - WHILE column <= highest_column. - col_str = zcl_excel_common=>convert_column2alpha( column ). - worksheet->get_cell( - EXPORTING - ip_column = col_str - ip_row = row - IMPORTING - ep_value = value - ). - WRITE: value. - column = column + 1. - ENDWHILE. - WRITE: /. - column = 1. - row = row + 1. - ENDWHILE. - ENDIF. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = output_file_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - CATCH zcx_excel INTO ex. " Exceptions for ABAP2XLSX - msg = ex->get_text( ). - WRITE: / msg. - ENDTRY. - ENDLOOP. - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel16. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - - -DATA: ls_io TYPE skwf_io. - -CONSTANTS: gc_save_file_name TYPE string VALUE '16_Drawings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_objid TYPE sdok_docid DEFAULT '456694429165174BE10000000A1550C0', " Question mark in standard Web Dynpro WDT_QUIZ - p_class TYPE sdok_class DEFAULT 'M_IMAGE_P', - pobjtype TYPE skwf_ioty DEFAULT 'P'. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i, - lv_content TYPE xstring, - ls_key TYPE wwwdatatab. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = 'c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp' - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. -* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno -* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = lv_content - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Image from web repository (SMW0)' ). - - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 3 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Image from a file (c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 9 - ip_from_col = 'B' ). - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_bmp - ip_width = 83 - ip_height = 160 ). - - lo_worksheet->add_drawing( lo_drawing ). - - ls_io-objid = p_objid. - ls_io-class = p_class. - ls_io-objtype = pobjtype. - IF ls_io IS NOT INITIAL. - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_value = 'Mime repository (by default Question mark in standard Web Dynpro WDT_QUIZ)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 19 - ip_from_col = 'B' ). - lo_drawing->set_media_mime( ip_io = ls_io - ip_width = 126 - ip_height = 145 ). - - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL17 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel17. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_protection TYPE REF TO zcl_excel_style, - lv_style_protection_guid TYPE zexcel_cell_style, - lo_style TYPE REF TO zcl_excel_style, - lv_style TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '17_SheetProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_pwd TYPE zexcel_aes_password LOWER CASE DEFAULT 'secret'. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. -* lo_worksheet->zif_excel_sheet_protection~password = 'DAA7'. "it is the encoded word "secret" - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( p_pwd ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - " First style to unlock a cell - lo_style_protection = lo_excel->add_new_style( ). - lo_style_protection->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - lv_style_protection_guid = lo_style_protection->get_guid( ). - " Another style which should not affect the unlock style - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFCC3333'. - lv_style = lo_style->get_guid( ). - lo_worksheet->set_cell( ip_row = 3 ip_column = 'C' ip_value = 'This cell is locked locked and has the second formating' ip_style = lv_style ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL18 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel18. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_protection_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '18_BookProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_excel->zif_excel_book_protection~protected = zif_excel_book_protection=>c_protected. - lo_excel->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_locked. - - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL19 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel19. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '19_SetActiveSheet.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_noout TYPE xfeld DEFAULT abap_true. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " First Worksheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'First' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 1' ). - - " Second Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Second' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 2' ). - - " Third Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Third' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 3' ). - - IF p_noout EQ abap_false. - " lo_excel->set_active_sheet_index_by_name( data_sheet_name ). - DATA: active_sheet_index TYPE zexcel_active_worksheet. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index before: ', active_sheet_index. - ENDIF. - lo_excel->set_active_sheet_index( '2' ). - IF p_noout EQ abap_false. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index after: ', active_sheet_index. - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel2. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style, - lv_style_gr_cornerlb_guid TYPE zexcel_cell_style, - lv_style_gr_cornerlt_guid TYPE zexcel_cell_style, - lv_style_gr_cornerrb_guid TYPE zexcel_cell_style, - lv_style_gr_cornerrt_guid TYPE zexcel_cell_style, - lv_style_gr_horizontal90_guid TYPE zexcel_cell_style, - lv_style_gr_horizontal270_guid TYPE zexcel_cell_style, - lv_style_gr_horizontalb_guid TYPE zexcel_cell_style, - lv_style_gr_vertical_guid TYPE zexcel_cell_style, - lv_style_gr_vertical2_guid TYPE zexcel_cell_style, - lv_style_gr_fromcenter_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal45_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal45b_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal135_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal135b_guid TYPE zexcel_cell_style . - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. -DATA: lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '02_Styles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled with gradients - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerlb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerlt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerrb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerrt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal90. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontal90_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal270. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontal270_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontalb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontalb_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_vertical_guid = lo_style_filled->get_guid( ). - - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_vertical2_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_fromcenter. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_fromcenter_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal45_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal45b_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal135_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal135b_guid = lo_style_filled->get_guid( ). - - - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_style = lv_style_gr_cornerlb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 10 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 11 ip_style = lv_style_gr_cornerlt_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 11 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 12 ip_style = lv_style_gr_cornerrb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 12 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 13 ip_style = lv_style_gr_cornerrt_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 13 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 14 ip_style = lv_style_gr_horizontal90_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal90 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 14 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 15 ip_style = lv_style_gr_horizontal270_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal270 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 15 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 16 ip_style = lv_style_gr_horizontalb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontalb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 16 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 17 ip_style = lv_style_gr_vertical_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 17 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_style = lv_style_gr_vertical2_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 18 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_style = lv_style_gr_fromcenter_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_fromcenter ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 19 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_style = lv_style_gr_diagonal45_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 20 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 21 ip_style = lv_style_gr_diagonal45b_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 21 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 22 ip_style = lv_style_gr_diagonal135_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 22 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 23 ip_style = lv_style_gr_diagonal135b_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 23 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - - - -* CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -* lv_file = lo_excel_writer->write_file( lo_excel ). -* -* " Convert to binary -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = lv_file -* IMPORTING -* output_length = lv_bytecount -* TABLES -* binary_tab = lt_file_tab. -** " This method is only available on AS ABAP > 6.40 -** lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -** lv_bytecount = xstrlen( lv_file ). -* -* " Save the file -* cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount -* filename = lv_full_path -* filetype = 'BIN' -* CHANGING data_tab = lt_file_tab ). - - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL20 -* Demo for method zcl_excel_worksheet-bind_alv: -* export data from ALV (CL_GUI_ALV_GRID) object to excel -*--------------------------------------------------------------------* -REPORT zdemo_excel20. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_alv TYPE REF TO cl_gui_alv_grid, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook, - gt_listheader TYPE slis_t_listheader, - wa_listheader LIKE LINE OF gt_listheader. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '20_BindAlv.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 10 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - IF sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - -* export file to save file path - - PERFORM export_to_excel. - - ENDIF. -ENDFORM. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel. - -* create zcl_excel_worksheet object - - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - -* get ALV object from screen - - CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' - IMPORTING - e_grid = lo_alv. - -* build list header - - wa_listheader-typ = 'H'. - wa_listheader-info = sy-title. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'S'. - wa_listheader-info = 'Created by: ABAP2XLSX Group'. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'A'. - wa_listheader-info = - 'Project hosting at https://cw.sdn.sap.com/cw/groups/abap2xlsx'. - APPEND wa_listheader TO gt_listheader. - -* write to excel using method Bin_ALV - - lo_worksheet->bind_alv_ole2( - EXPORTING -* I_DOCUMENT_URL = SPACE " excel template -* I_XLS = 'X' " create in xls format? - i_save_path = l_path - io_alv = lo_alv - it_listheader = gt_listheader - i_top = 2 - i_left = 1 -* I_COLUMNS_HEADER = 'X' -* I_COLUMNS_AUTOFIT = 'X' -* I_FORMAT_COL_HEADER = -* I_FORMAT_SUBTOTAL = -* I_FORMAT_TOTAL = - EXCEPTIONS - miss_guide = 1 - ex_transfer_kkblo_error = 2 - fatal_error = 3 - inv_data_range = 4 - dim_mismatch_vkey = 5 - dim_mismatch_sema = 6 - error_in_sema = 7 - OTHERS = 8 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - -ENDFORM. "EXPORT_TO_EXCEL - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL21 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel21. - -TYPES: - BEGIN OF t_color_style, - color TYPE zexcel_style_color_argb, - style TYPE zexcel_cell_style, - END OF t_color_style. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_filled TYPE REF TO zcl_excel_style. - -DATA: color_styles TYPE TABLE OF t_color_style. - -FIELD-SYMBOLS: <color_style> LIKE LINE OF color_styles. - -CONSTANTS: max TYPE i VALUE 255, - step TYPE i VALUE 51. - -DATA: red TYPE i, - green TYPE i, - blue TYPE i, - red_hex(1) TYPE x, - green_hex(1) TYPE x, - blue_hex(1) TYPE x, - red_str TYPE string, - green_str TYPE string, - blue_str TYPE string. - -DATA: color TYPE zexcel_style_color_argb, - tint TYPE zexcel_style_color_tint. - -DATA: row TYPE i, - row_tmp TYPE i, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha. - -CONSTANTS: gc_save_file_name TYPE string VALUE '21_BackgroundColorPicker.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - WHILE red <= max. - green = 0. - WHILE green <= max. - blue = 0. - WHILE blue <= max. - red_hex = red. - red_str = red_hex. - green_hex = green. - green_str = green_hex. - blue_hex = blue. - blue_str = blue_hex. - " Create filled - CONCATENATE 'FF' red_str green_str blue_str INTO color. - APPEND INITIAL LINE TO color_styles ASSIGNING <color_style>. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = color. - <color_style>-color = color. - <color_style>-style = lo_style_filled->get_guid( ). - blue = blue + step. - ENDWHILE. - green = green + step. - ENDWHILE. - red = red + step. - ENDWHILE. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Color Picker' ). - LOOP AT color_styles ASSIGNING <color_style>. - row_tmp = ( max / step + 1 ) * 3. - IF row = row_tmp. - row = 0. - column = column + 1. - ENDIF. - row = row + 1. - col_str = zcl_excel_common=>convert_column2alpha( column ). - - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = col_str - ip_row = row - ip_value = <color_style>-color - ip_style = <color_style>-style ). - ENDLOOP. - - row = row + 2. - tint = '-0.5'. - DO 10 TIMES. - column = 1. - DO 10 TIMES. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = sy-index - 1. - lo_style_filled->fill->fgcolor-tint = tint. - <color_style>-style = lo_style_filled->get_guid( ). - col_str = zcl_excel_common=>convert_column2alpha( column ). - lo_worksheet->set_cell_style( ip_column = col_str - ip_row = row - ip_style = <color_style>-style ). - - ADD 1 TO column. - ENDDO. - ADD '0.1' TO tint. - ADD 1 TO row. - ENDDO. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL22 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel22. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style, - lo_style_date TYPE REF TO zcl_excel_style, - lo_style_editable TYPE REF TO zcl_excel_style, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_table_settings_out TYPE zexcel_s_table_settings. - -DATA: lv_style_guid TYPE zexcel_cell_style. - -DATA: lv_row TYPE char10. - -FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - -CONSTANTS: gc_save_file_name TYPE string VALUE '22_itab_fieldcatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'PN_MASSIVE'). - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - " sheet style (white background) - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lv_style_guid = lo_style->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_guid ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( 'test' ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - - " Create cell style for display only fields - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_text. - - " Create cell style for display only date field - lo_style_date = lo_excel->add_new_style( ). - lo_style_date->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_date->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style_date->number_format->format_code = zcl_excel_style_number_format=>c_format_date_ddmmyyyy. - - " Create cell style for editable fields - lo_style_editable = lo_excel->add_new_style( ). - lo_style_editable->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'CONNID'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_date->get_guid( ). - WHEN 'PRICE'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_editable->get_guid( ). - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( EXPORTING - ip_table = lt_test - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - IMPORTING - es_table_settings = ls_table_settings_out ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lv_row = ls_table_settings_out-top_left_row. - CONDENSE lv_row. - CONCATENATE 'ISNUMBER(' ls_table_settings_out-top_left_column lv_row ')' INTO lo_data_validation->formula1. - lo_data_validation->cell_row = ls_table_settings_out-top_left_row. - lo_data_validation->cell_column = ls_table_settings_out-top_left_column. - lo_data_validation->cell_row_to = ls_table_settings_out-bottom_right_row. - lo_data_validation->cell_column_to = ls_table_settings_out-bottom_right_column. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel23. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '23_Sheets_with_and_without_grid_lines.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet with grid lines and print centered horizontal & vertical' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet with grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 160. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_PAGELAYOUTVIEW = 200. - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the third sheet without grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_false ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the fourth sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 170. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_SHEETLAYOUTVIEW = 150. - - " Fourth sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the fourth sheet with grid lines and print centered ONLY horizontal' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - -" lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel24. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lv_value TYPE string. - -CONSTANTS: gc_save_file_name TYPE string VALUE '24_Sheets_with_different_default_date_formats.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Default Date Format' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!A1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmdd ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYYMMDD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " TODO: It seems that the zcl_excel_style_number_format=>c_format_date_yyyymmddslash - " does not produce a valid output - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmddslash ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYY/MM/DD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the 4th sheet' ip_hyperlink = lo_hyperlink ). - - " 4th sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " Illustrate the Problem caused by: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year. - " http://support.microsoft.com/kb/214326/en-us - lo_worksheet->set_title( ip_title = 'Sheet4' ). - " Loop from Start Date to the Max Date current data in daily steps - CONSTANTS: lv_max type d VALUE '19000302'. - - DATA: lv_date TYPE d VALUE '19000226', - lv_row TYPE i. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Formated date' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Integer value for this date' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'Date as string' ). - - lv_row = 4. - WHILE lv_date < lv_max. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_row ip_value = lv_date ). - lv_value = zcl_excel_common=>date_to_excel_string( lv_date ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_row ip_value = lv_value ). - lv_value = lv_date. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_row ip_value = lv_value ). - lv_date = lv_date + 1. - lv_row = lv_row + 1. - ENDWHILE. - - lv_row = lv_row + 1. - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_row ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL25 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel25. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_exception TYPE REF TO cx_root. - -DATA: lv_file TYPE xstring. - -CONSTANTS: lv_file_name TYPE string VALUE '25_HelloWorld.xlsx'. -DATA: lv_default_file_name TYPE string. -DATA: lv_error TYPE string. - -CALL FUNCTION 'FILE_GET_NAME_USING_PATH' - EXPORTING - logical_path = 'LOCAL_TEMPORARY_FILES' " Logical path' - file_name = lv_file_name " File name - IMPORTING - file_name_with_path = lv_default_file_name. " File name with path -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->set_title( ip_title = 'Sheet1' ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - -CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -lv_file = lo_excel_writer->write_file( lo_excel ). - -TRY. - OPEN DATASET lv_default_file_name FOR OUTPUT IN BINARY MODE. - TRANSFER lv_file TO lv_default_file_name. - CLOSE DATASET lv_default_file_name. - CATCH cx_root INTO lo_exception. - lv_error = lo_exception->get_text( ). - MESSAGE lv_error TYPE 'I'. -ENDTRY. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL26 -* Demo for method zcl_excel_worksheet-bind_object: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -report zdemo_excel26. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events definition. - public section. - methods: - on_user_command for event added_function of cl_salv_events - importing e_salv_function. -endclass. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events implementation. - method on_user_command. - perform user_command." using e_salv_function text-i08. - endmethod. "on_user_command -endclass. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -data: lo_excel type ref to zcl_excel, - lo_worksheet type ref to zcl_excel_worksheet, - lo_salv type ref to cl_salv_table, - gr_events type ref to lcl_handle_events, - lr_events type ref to cl_salv_events_table, - gt_sbook type table of sbook. - -data: l_path type string, " local dir - lv_workdir type string, - lv_file_separator type c. - -constants: - lv_default_file_name type string value '26_Bind_ALV.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -start-of-selection. - -* get data -* ------------------------------------------ - - select * - into table gt_sbook[] - from sbook "#EC CI_NOWHERE - up to 10 rows. - -* Display ALV -* ------------------------------------------ - - try. - cl_salv_table=>factory( - exporting - list_display = abap_false - importing - r_salv_table = lo_salv - changing - t_table = gt_sbook[] ). - catch cx_salv_msg . - endtry. - - try. - lo_salv->set_screen_status( - exporting - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - catch cx_salv_msg . - endtry. - - lr_events = lo_salv->get_event( ). - create object gr_events. - set handler gr_events->on_user_command for lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -form user_command . - if sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( changing sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - exporting initial_folder = l_path - changing selected_folder = l_path ). - - if l_path is initial. - cl_gui_frontend_services=>get_sapgui_workdir( - changing sapworkdir = lv_workdir ). - l_path = lv_workdir. - endif. - - cl_gui_frontend_services=>get_file_separator( - changing file_separator = lv_file_separator ). - - concatenate l_path lv_file_separator lv_default_file_name - into l_path. - -* export file to save file path - perform export_to_excel. - - endif. -endform. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -form export_to_excel. - data: lo_converter type ref to zcl_excel_converter. -* create zcl_excel_worksheet object - - create object lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object - try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). - catch zcx_excel . - endtry. - - perform write_file. - -endform. "EXPORT_TO_EXCEL -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -form write_file . - data: lt_file type solix_tab, - l_bytecount type i, - l_file type xstring. - - data: lo_excel_writer type ref to zif_excel_writer. - - data: ls_seoclass type seoclass. - - create object lo_excel_writer type zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = l_file - receiving - et_solix = lt_file. - - l_bytecount = xstrlen( l_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = l_file - importing - output_length = l_bytecount - tables - binary_tab = lt_file. - endif. - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - changing data_tab = lt_file ). - -endform. " WRITE_FILE - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL27 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel27. - -CONSTANTS: c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_1 TYPE REF TO zcl_excel_style, - lo_style_2 TYPE REF TO zcl_excel_style, - lv_style_1_guid TYPE zexcel_cell_style, - lv_style_2_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis. - - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '27_ConditionalFormatting.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - lo_style_1 = lo_excel->add_new_style( ). - lo_style_1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_1->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_1_guid = lo_style_1->get_guid( ). - - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_2->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_2_guid = lo_style_2->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = 'Select a value' ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Anchovy"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_1_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Carp"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_2_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL28 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel28. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_file_name TYPE string, - lv_file_path TYPE string, - lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '28_HelloWorld.csv'. - -PARAMETERS: p_path TYPE string. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = p_path - CHANGING selected_folder = p_path ). - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_width( 11 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_csv. - zcl_excel_writer_csv=>set_delimiter( ip_value = cl_abap_char_utilities=>horizontal_tab ). - zcl_excel_writer_csv=>set_enclosure( ip_value = '''' ). - zcl_excel_writer_csv=>set_endofline( ip_value = cl_abap_char_utilities=>cr_lf ). - - zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). -* zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet2' ). - - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - REPLACE FIRST OCCURRENCE OF '.csv' IN lv_full_path WITH '_Sheet2.csv'. - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - -* zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). - zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet1' ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE FIRST OCCURRENCE OF '_Sheet2.csv' IN lv_full_path WITH '_Sheet1.csv'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL26 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel29. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_excel_reader TYPE REF TO zif_excel_reader. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_filename TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -PARAMETERS: p_path TYPE zexcel_export_dir OBLIGATORY. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - DATA: lt_filetable TYPE filetable, - lv_rc TYPE i. - - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - CALL METHOD cl_gui_frontend_services=>file_open_dialog - EXPORTING - window_title = 'Select Macro-Enabled Workbook template' - default_extension = '*.xlsm' - file_filter = 'Excel Macro-Enabled Workbook (*.xlsm)|*.xlsm' - initial_directory = lv_workdir - CHANGING - file_table = lt_filetable - rc = lv_rc - EXCEPTIONS - file_open_dialog_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - OTHERS = 5. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - READ TABLE lt_filetable INTO lv_filename INDEX 1. - p_path = lv_filename. - -START-OF-SELECTION. - - lv_full_path = p_path. - - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_xlsm. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_xlsm. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE '.xlsm' IN lv_full_path WITH 'FromReader.xlsm'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel3. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: ls_table_settings TYPE zexcel_s_table_settings. - - -DATA: lv_title TYPE zexcel_sheet_title, - lt_carr TYPE TABLE OF scarr, - row TYPE zexcel_cell_row VALUE 2, - lo_range TYPE REF TO zcl_excel_range. -DATA: lo_data_validation TYPE REF TO zcl_excel_data_validation. -FIELD-SYMBOLS: <carr> LIKE LINE OF lt_carr. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '03_iTab.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_empty TYPE flag. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - DATA lt_test TYPE TABLE OF sflight. - - IF p_empty <> abap_true. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - ENDIF. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - ls_table_settings-nofilters = abap_true. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). "make date field a bit wider - column_dimension->set_width( ip_width = 11 ). - " Add another table for data validations - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = c_airlines ). - SELECT * FROM scarr INTO TABLE lt_carr. "#EC CI_NOWHERE - LOOP AT lt_carr ASSIGNING <carr>. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = <carr>-carrid ). - row = row + 1. - ENDLOOP. - row = row - 1. - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_airlines. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 2 - ip_stop_column = 'A' - ip_stop_row = row ). - " Set Data Validation - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_airlines. - lo_data_validation->cell_row = 4. - lo_data_validation->cell_column = 'C'. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel30. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: lv_value TYPE string, - lv_count TYPE i VALUE 10, - lv_packed TYPE p LENGTH 16 DECIMALS 1 VALUE '1234567890.5'. - -CONSTANTS: lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string, - lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed, - lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num, - lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date, - lc_typekind_s_ls TYPE string VALUE 's_leading_blanks'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '30_CellDataTypes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Cell data types' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Number as String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = '11' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = ' String with leading spaces' - ip_data_type = lc_typekind_s_ls ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = ' Negative Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.01-' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = '0 %' - ip_abap_type = lc_typekind_num ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = 'Date' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = '20110831' - ip_abap_type = lc_typekind_date ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.02' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %' - ip_abap_type = lc_typekind_num ). - - WHILE lv_count <= 15. - lv_value = lv_count. - CONCATENATE 'Positive Value with' lv_value 'Digits' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_packed ). - CONCATENATE 'Positive Value with' lv_value 'Digits formated as string' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_string ). - lv_packed = lv_packed * 10. - lv_count = lv_count + 1. - ENDWHILE. - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). - column_dimension->set_auto_size( abap_true ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel31. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: fieldval TYPE text80, - row TYPE i, - style_column_a TYPE REF TO zcl_excel_style, - style_column_a_guid TYPE zexcel_cell_style, - style_column_b TYPE REF TO zcl_excel_style, - style_column_b_guid TYPE zexcel_cell_style, - style_column_c TYPE REF TO zcl_excel_style, - style_column_c_guid TYPE zexcel_cell_style, - style_font TYPE REF TO zcl_excel_style_font. - -CONSTANTS: gc_save_file_name TYPE string VALUE '31_AutosizeWithDifferentFontSizes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - " Use active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Regular Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a_guid = style_column_a->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c_guid = style_column_c->get_guid( ). - - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Bold Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->bold = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->bold = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->bold = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Italic Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->italic = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->italic = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->italic = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet for merged cells - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Merged cells' ). - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'This is a very long header text' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = 'Some data' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Some more data' ). - - lo_worksheet->set_merge( - EXPORTING - ip_column_start = 'A' - ip_column_end = 'C' - ip_row = 1 ). - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - lo_excel->set_active_sheet_index( i_active_worksheet = 1 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL32 -* Demo for export options from ALV GRID: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -REPORT zdemo_excel32. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '32_Export_ALV.xlsx', - lv_default_file_name2 TYPE string VALUE '32_Export_Convert.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 100 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - - -* export file to save file path - CASE sy-ucomm. - WHEN 'EXCELBIND'. - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - PERFORM export_to_excel_bind. - - WHEN 'EXCELCONV'. - - CONCATENATE l_path lv_file_separator lv_default_file_name2 - INTO l_path. - PERFORM export_to_excel_conv. - - ENDCASE. -ENDFORM. " USER_COMMAND -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_CONV -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_conv. - DATA: lo_converter TYPE REF TO zcl_excel_converter. - - CREATE OBJECT lo_converter. -*TRY. - lo_converter->convert( - EXPORTING - io_alv = lo_salv - it_table = gt_sbook - i_row_int = 2 - i_column_int = 2 -* i_table = -* i_style_table = -* io_worksheet = -* CHANGING -* co_excel = - ). -* CATCH zcx_excel . -*ENDTRY. - lo_converter->write_file( i_path = l_path ). - -ENDFORM. "EXPORT_TO_EXCEL_CONV - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_BIND -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_bind. -* create zcl_excel_worksheet object - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object -*try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). -* catch zcx_excel . -*endtry. - - - PERFORM write_file. - -ENDFORM. "EXPORT_TO_EXCEL_BIND -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -FORM write_file . - DATA: lt_file TYPE solix_tab, - l_bytecount TYPE i, - l_file TYPE xstring. - - DATA: lo_excel_writer TYPE REF TO zif_excel_writer. - - DATA: ls_seoclass TYPE seoclass. - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_BCS_CONVERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>xstring_to_solix - EXPORTING - iv_xstring = l_file - RECEIVING - et_solix = lt_file. - - l_bytecount = XSTRLEN( l_file ). - ELSE. - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = l_file - IMPORTING - output_length = l_bytecount - TABLES - binary_tab = lt_file. - ENDIF. - - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - CHANGING data_tab = lt_file ). - -ENDFORM. " WRITE_FILE - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel33. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_converter TYPE REF TO zcl_excel_converter, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - -DATA lt_test TYPE TABLE OF t005t. - -DATA: l_cell_value TYPE zexcel_cell_value, - ls_area TYPE zexcel_s_autofilter_area. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '33_autofilter.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - SELECT * UP TO 2 ROWS FROM t005t INTO TABLE lt_test. "#EC CI_NOWHERE - - CREATE OBJECT lo_converter. - - lo_converter->convert( EXPORTING - it_table = lt_test - i_row_int = 1 - i_column_int = 1 - io_worksheet = lo_worksheet - CHANGING - co_excel = lo_excel ) . - - lo_autofilter = lo_excel->add_new_autofilter( io_sheet = lo_worksheet ) . - - ls_area-row_start = 1. - ls_area-col_start = 1. - ls_area-row_end = lo_worksheet->get_highest_row( ). - ls_area-col_end = lo_worksheet->get_highest_column( ). - - lo_autofilter->set_filter_area( is_area = ls_area ). - - lo_worksheet->get_cell( EXPORTING - ip_column = 'C' - ip_row = 2 - IMPORTING - ep_value = l_cell_value ). - lo_autofilter->set_value( i_column = 3 - i_value = l_cell_value ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel34. - -CONSTANTS: width TYPE f VALUE '10.14'. -CONSTANTS: height TYPE f VALUE '57.75'. - -DATA: current_row TYPE i, - col TYPE i, - col_alpha TYPE zexcel_cell_column_alpha, - row TYPE i, - row_board TYPE i, - colorflag TYPE i, - color TYPE zexcel_style_color_argb, - - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - - writing1 TYPE string, - writing2 TYPE string. - - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -CONSTANTS: gc_save_file_name TYPE string VALUE '34_Static Styles_Chess.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Spassky_vs_Bronstein' ). - -* Header - current_row = 1. - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'White' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Spassky, Boris V -- wins in turn 23' ). - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'Black' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Bronstein, David I' ). - - ADD 1 TO current_row. -* Set size of column + Writing above chessboard - DO 8 TIMES. - - writing1 = zcl_excel_common=>convert_column2alpha( sy-index ). - writing2 = sy-index . - row = current_row + sy-index. - - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - -* Set size of column - column_dimension = lo_worksheet->get_column_dimension( col_alpha ). - column_dimension->set_width( width ). - -* Set size of row - row_dimension = lo_worksheet->get_row_dimension( row ). - row_dimension->set_row_height( height ). - -* Set writing on chessboard - lo_worksheet->set_cell( ip_row = row - ip_column = 'A' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'A' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = 'J' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'J' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - - row = current_row + 9. - lo_worksheet->set_cell( ip_row = current_row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = current_row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'J' ). - column_dimension->set_auto_size( abap_true ). - -* Set win-position - CONSTANTS: c_pawn TYPE string VALUE 'Pawn'. - CONSTANTS: c_rook TYPE string VALUE 'Rook'. - CONSTANTS: c_knight TYPE string VALUE 'Knight'. - CONSTANTS: c_bishop TYPE string VALUE 'Bishop'. - CONSTANTS: c_queen TYPE string VALUE 'Queen'. - CONSTANTS: c_king TYPE string VALUE 'King'. - - row = current_row + 1. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_knight ). - row = current_row + 2. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_king ). - row = current_row + 3. - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 4. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_knight ). - row = current_row + 5. - lo_worksheet->set_cell( ip_row = row ip_column = 'E' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - row = current_row + 6. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_bishop ). - row = current_row + 7. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 8. - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_king ). - -* Set Chessboard - DO 8 TIMES. - IF sy-index <= 3. " Black - color = zcl_excel_style_color=>c_black. - ELSE. - color = zcl_excel_style_color=>c_white. - ENDIF. - row_board = sy-index. - row = current_row + sy-index. - DO 8 TIMES. - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - TRY. -* Borders around outer limits - IF row_board = 1. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_top_style = zcl_excel_style_border=>c_border_thick - ip_borders_top_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF row_board = 8. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_down_style = zcl_excel_style_border=>c_border_thick - ip_borders_down_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 2. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_left_style = zcl_excel_style_border=>c_border_thick - ip_borders_left_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 9. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_right_style = zcl_excel_style_border=>c_border_thick - ip_borders_right_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. -* Style for writing - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_font_color_rgb = color - ip_font_bold = 'X' - ip_font_size = 16 - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid ). -* Color of field - colorflag = ( row + col ) MOD 2. - IF colorflag = 0. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFB5866A' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - ELSE. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFF5DEBF' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - ENDIF. - - - - CATCH zcx_excel . - ENDTRY. - - ENDDO. - ENDDO. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel35. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '35_Static_Styles.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>GET_DESKTOP_DIRECTORY( CHANGING DESKTOP_DIRECTORY = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - sy-title = 'ZDEMO_EXCEL2;Issue 139: Change cellstyle retroactivly'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - -* Demonstrate how to retroactivly change the cellstyle -*Filled text and underlinded text - lo_worksheet->change_cell_style( ip_column = 'B' - ip_row = 5 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - lo_worksheet->change_cell_style( ip_column = 'D' - ip_row = 4 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL36 -REPORT zdemo_excel36. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - col TYPE i. - -DATA: lo_style_arial20 TYPE REF TO zcl_excel_style, - lo_style_times11 TYPE REF TO zcl_excel_style, - lo_style_cambria8red TYPE REF TO zcl_excel_style. - -DATA: lv_style_arial20_guid TYPE zexcel_cell_style, - lv_style_times11_guid TYPE zexcel_cell_style, - lv_style_cambria8red_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '36_DefaultStyles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create a bold / italic style - lo_style_arial20 = lo_excel->add_new_style( ). - lo_style_arial20->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_arial20->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_arial20->font->size = 20. - lv_style_arial20_guid = lo_style_arial20->get_guid( ). - - lo_style_times11 = lo_excel->add_new_style( ). - lo_style_times11->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_times11->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_times11->font->size = 11. - lv_style_times11_guid = lo_style_times11->get_guid( ). - - lo_style_cambria8red = lo_excel->add_new_style( ). - lo_style_cambria8red->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_cambria8red->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_cambria8red->font->size = 8. - lo_style_cambria8red->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_cambria8red_guid = lo_style_cambria8red->get_guid( ). - - lo_excel->set_default_style( lv_style_arial20_guid ). " Default for all new worksheets - -* 1st sheet - do not change anything --> defaultstyle from lo_excel should apply - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Style for complete document' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 2nd sheet - defaultstyle for this sheet set explicitly ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for this sheet' ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Times New Roman, fontsize 11' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because this style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'thus the default style from zcl_excel does not apply to this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 3rd sheet - defaultstyle for columns ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for 3 columns' ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'F' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'The columns B,C and F are set to Times New Roman' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 10 ip_value = 'All other cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 11 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 12 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - - lo_worksheet->set_cell( ip_column = 8 ip_row = 1 ip_value = 'Of course' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 2 ip_value = 'setting a specific style to a cell' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 3 ip_value = 'takes precedence over all defaults' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 4 ip_value = 'Here: Cambria 8 in red' ip_style = lv_style_cambria8red_guid ). - - -* Set entry into each of the first 10 columns - DO 20 TIMES. - col = sy-index. - CASE col. - WHEN 2 " B - OR 3 " C - OR 6." F - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Times 11' ). - WHEN OTHERS. - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Arial 20' ). - ENDCASE. - ENDDO. - - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - - - lo_excel->set_active_sheet_index( 1 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - REPORT zdemo_excel37. - -TYPE-POOLS: vrm. - -DATA: excel TYPE REF TO zcl_excel, - reader TYPE REF TO zif_excel_reader, - go_error TYPE REF TO cx_root, - gv_memid_gr8 TYPE text255, - gv_message TYPE string, - lv_extension TYPE string, - gv_error_program_name TYPE syrepid, - gv_error_include_name TYPE syrepid, - gv_error_line TYPE i. - -DATA: gc_save_file_name TYPE string VALUE '37- Read template and output.&'. - -SELECTION-SCREEN BEGIN OF BLOCK blx WITH FRAME. -PARAMETERS: p_upfile TYPE string LOWER CASE MEMORY ID gr8. -SELECTION-SCREEN END OF BLOCK blx. - -INCLUDE zdemo_excel_outputopt_incl. - -SELECTION-SCREEN BEGIN OF BLOCK cls WITH FRAME TITLE text-cls. -PARAMETERS: lb_read TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -PARAMETERS: lb_write TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -SELECTION-SCREEN END OF BLOCK cls. - -SELECTION-SCREEN BEGIN OF BLOCK bl_err WITH FRAME TITLE text-err. -PARAMETERS: cb_errl AS CHECKBOX DEFAULT 'X'. -SELECTION-SCREEN BEGIN OF LINE. -PARAMETERS: cb_dump AS CHECKBOX DEFAULT space. -SELECTION-SCREEN COMMENT (60) cmt_dump FOR FIELD cb_dump. -SELECTION-SCREEN END OF LINE. -SELECTION-SCREEN END OF BLOCK bl_err. - -INITIALIZATION. - PERFORM setup_listboxes. - cmt_dump = text-dum. - GET PARAMETER ID 'GR8' FIELD gv_memid_gr8. - p_upfile = gv_memid_gr8. - - IF p_upfile IS INITIAL. - p_upfile = 'c:\temp\whatever.xlsx'. - ENDIF. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile. - PERFORM f4_p_upfile CHANGING p_upfile. - - -START-OF-SELECTION. - IF cb_dump IS INITIAL. - TRY. - PERFORM read_template. - PERFORM write_template. -*** Create output - CATCH cx_root INTO go_error. - MESSAGE 'Error reading excelfile' TYPE 'I'. - gv_message = go_error->get_text( ). - IF cb_errl = ' '. - IF gv_message IS NOT INITIAL. - MESSAGE gv_message TYPE 'I'. - ENDIF. - ELSE. - go_error->get_source_position( IMPORTING program_name = gv_error_program_name - include_name = gv_error_include_name - source_line = gv_error_line ). - WRITE:/ 'Errormessage:' ,gv_message. - WRITE:/ 'Errorposition:', - AT /10 'Program:' ,gv_error_program_name, - AT /10 'include_name:' ,gv_error_include_name, - AT /10 'source_line:' ,gv_error_line. - ENDIF. - ENDTRY. - ELSE. " This will dump if an error occurs. In some cases the information given in cx_root is not helpful - this will show exactly where the problem is - PERFORM read_template. - PERFORM write_template. - ENDIF. - - - -*&---------------------------------------------------------------------* -*& Form F4_P_UPFILE -*&---------------------------------------------------------------------* -FORM f4_p_upfile CHANGING p_upfile TYPE string. - - DATA: lv_repid TYPE syrepid, - lt_fields TYPE dynpread_tabtype, - ls_field LIKE LINE OF lt_fields, - lt_files TYPE filetable, - lv_file_filter TYPE string. - - lv_repid = sy-repid. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = lv_repid - dynumb = '1000' - request = 'A' - TABLES - dynpfields = lt_fields - EXCEPTIONS - invalid_abapworkarea = 01 - invalid_dynprofield = 02 - invalid_dynproname = 03 - invalid_dynpronummer = 04 - invalid_request = 05 - no_fielddescription = 06 - undefind_error = 07. - READ TABLE lt_fields INTO ls_field WITH KEY fieldname = 'P_UPFILE'. - p_upfile = ls_field-fieldvalue. - - lv_file_filter = 'Excel Files (*.XLSX;*.XLSM)|*.XLSX;*.XLSM'. - cl_gui_frontend_services=>file_open_dialog( EXPORTING - default_filename = p_upfile - file_filter = lv_file_filter - CHANGING - file_table = lt_files - rc = sy-tabix - EXCEPTIONS - OTHERS = 1 ). - READ TABLE lt_files INDEX 1 INTO p_upfile. - -ENDFORM. " F4_P_UPFILE - - -*&---------------------------------------------------------------------* -*& Form SETUP_LISTBOXES -*&---------------------------------------------------------------------* -FORM setup_listboxes . - - DATA: lv_id TYPE vrm_id, - lt_values TYPE vrm_values, - lt_implementing_classes TYPE seo_relkeys. - - FIELD-SYMBOLS: <ls_implementing_class> LIKE LINE OF lt_implementing_classes, - <ls_value> LIKE LINE OF lt_values. - -*--------------------------------------------------------------------* -* Possible READER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_READ'. - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = 'Autodetect'(001). - <ls_value>-text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_READER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING <ls_implementing_class>. - - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = <ls_implementing_class>-clsname. - <ls_value>-text = <ls_implementing_class>-clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -*--------------------------------------------------------------------* -* Possible WRITER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_WRITE'. - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = 'Autodetect'(001). - <ls_value>-text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_WRITER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING <ls_implementing_class>. - - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = <ls_implementing_class>-clsname. - <ls_value>-text = <ls_implementing_class>-clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -ENDFORM. " SETUP_LISTBOXES - - -*&---------------------------------------------------------------------* -*& Form GET_IMPLEMENTING_CLASSDS -*&---------------------------------------------------------------------* -FORM get_implementing_classds USING iv_interface_name TYPE clike - CHANGING ct_implementing_classes TYPE seo_relkeys. - - DATA: lo_oo_interface TYPE REF TO cl_oo_interface, - lo_oo_class TYPE REF TO cl_oo_class, - lt_implementing_subclasses TYPE seo_relkeys. - - FIELD-SYMBOLS: <ls_implementing_class> LIKE LINE OF ct_implementing_classes. - - TRY. - lo_oo_interface ?= cl_oo_interface=>get_instance( iv_interface_name ). - CATCH cx_class_not_existent. - RETURN. - ENDTRY. - ct_implementing_classes = lo_oo_interface->get_implementing_classes( ). - - LOOP AT ct_implementing_classes ASSIGNING <ls_implementing_class>. - TRY. - lo_oo_class ?= cl_oo_class=>get_instance( <ls_implementing_class>-clsname ). - lt_implementing_subclasses = lo_oo_class->get_subclasses( ). - APPEND LINES OF lt_implementing_subclasses TO ct_implementing_classes. - CATCH cx_class_not_existent. - ENDTRY. - ENDLOOP. - - -ENDFORM. " GET_IMPLEMENTING_CLASSDS - - -*&---------------------------------------------------------------------* -*& Form READ_TEMPLATE -*&---------------------------------------------------------------------* -FORM read_template RAISING zcx_excel . - - CASE lb_read. - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - WHEN '.XLSM'. - CREATE OBJECT reader TYPE zcl_excel_reader_xlsm. - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - CREATE OBJECT reader TYPE (lb_read). - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - ENDCASE. - -ENDFORM. " READ_TEMPLATE - - -*&---------------------------------------------------------------------* -*& Form WRITE_TEMPLATE -*&---------------------------------------------------------------------* -FORM write_template RAISING zcx_excel. - - CASE lb_write. - - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - REPLACE '&' IN gc_save_file_name WITH 'xlsx'. " Pass extension for standard writer - lcl_output=>output( excel ). - - WHEN '.XLSM'. - REPLACE '&' IN gc_save_file_name WITH 'xlsm'. " Pass extension for macro-writer - lcl_output=>output( cl_excel = excel - iv_writerclass_name = 'ZCL_EXCEL_WRITER_XLSM' ). - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - lcl_output=>output( cl_excel = excel - iv_writerclass_name = lb_write ). - ENDCASE. - -ENDFORM. " WRITE_TEMPLATE - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_drawing TYPE REF TO zcl_excel_drawing. - -TYPES: BEGIN OF gty_icon, -* name TYPE icon_name, "Fix #228 - name TYPE iconname, "Fix #228 - objid TYPE w3objid, - END OF gty_icon, - gtyt_icon TYPE STANDARD TABLE OF gty_icon WITH NON-UNIQUE DEFAULT KEY. - -DATA: lt_icon TYPE gtyt_icon, - lv_row TYPE sytabix, - ls_wwwdatatab TYPE wwwdatatab, - lt_mimedata TYPE STANDARD TABLE OF w3mime WITH NON-UNIQUE DEFAULT KEY, - lv_xstring TYPE xstring. - -FIELD-SYMBOLS: <icon> LIKE LINE OF lt_icon, - <mimedata> LIKE LINE OF lt_mimedata. - -CONSTANTS: gc_save_file_name TYPE string VALUE '38_SAP-Icons.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -TABLES: icon. -SELECT-OPTIONS: s_icon FOR icon-name DEFAULT 'ICON_LED_*' OPTION CP. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Icons' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - lo_column_dimension->set_auto_size( 'X' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( 'X' ). - -* Get all icons - SELECT name - INTO TABLE lt_icon - FROM icon - WHERE name IN s_icon - ORDER BY name. - LOOP AT lt_icon ASSIGNING <icon>. - - lv_row = sy-tabix. -*--------------------------------------------------------------------* -* Set name of icon -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'A' - ip_value = <icon>-name ). -*--------------------------------------------------------------------* -* Check whether the mime-repository holds some icondata for us -*--------------------------------------------------------------------* - -* Get key - SELECT SINGLE objid - INTO <icon>-objid - FROM wwwdata - WHERE text = <icon>-name. - CHECK sy-subrc = 0. " :o( - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'B' - ip_value = <icon>-objid ). - -* Load mimedata - CLEAR lt_mimedata. - CLEAR ls_wwwdatatab. - ls_wwwdatatab-relid = 'MI' . - ls_wwwdatatab-objid = <icon>-objid. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_wwwdatatab - TABLES - mime = lt_mimedata - EXCEPTIONS - wrong_object_type = 1 - import_error = 2 - OTHERS = 3. - CHECK sy-subrc = 0. " :o( - - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = lv_row - ip_from_col = 'C' ). - CLEAR lv_xstring. - LOOP AT lt_mimedata ASSIGNING <mimedata>. - CONCATENATE lv_xstring <mimedata>-line INTO lv_xstring IN BYTE MODE. - ENDLOOP. - - lo_drawing->set_media( ip_media = lv_xstring - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = 16 - ip_height = 14 ). - lo_worksheet->add_drawing( lo_drawing ). - - ENDLOOP. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel39. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - -DATA lv_value TYPE i. - -DATA: ls_io TYPE skwf_io. - -DATA: ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location. - -DATA: lo_bar1 TYPE REF TO zcl_excel_graph_bars, - lo_bar1_stacked TYPE REF TO zcl_excel_graph_bars, - lo_bar2 TYPE REF TO zcl_excel_graph_bars, - lo_pie TYPE REF TO zcl_excel_graph_pie, - lo_line TYPE REF TO zcl_excel_graph_line. - -CONSTANTS: gc_save_file_name TYPE string VALUE '39_Charts.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Create a pie chart and series - CREATE OBJECT lo_pie. - - CALL METHOD lo_pie->create_serie - EXPORTING - ip_order = 0 - ip_sheet = 'Values' - ip_lbl_from_col = 'B' - ip_lbl_from_row = '1' - ip_lbl_to_col = 'B' - ip_lbl_to_row = '3' - ip_ref_from_col = 'A' - ip_ref_from_row = '1' - ip_ref_to_col = 'A' - ip_ref_to_row = '3' - ip_sername = 'My serie 1'. - - " Set style - lo_pie->set_style( zcl_excel_graph=>c_style_15 ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar1. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set style - lo_bar1->set_style( zcl_excel_graph=>c_style_default ). - - " Set label to none - lo_bar1->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - -* Same barchart - but this time stacked - CREATE OBJECT lo_bar1_stacked. - - CALL METHOD lo_bar1_stacked->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1_stacked->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1_stacked->create_ax - EXPORTING - ip_type = zcl_excel_graph_bars=>c_catax . - - CALL METHOD lo_bar1_stacked->create_ax - EXPORTING - ip_type = zcl_excel_graph_bars=>c_valax. - - " Set style - lo_bar1_stacked->set_style( zcl_excel_graph=>c_style_default ). - - " Set label to none - lo_bar1_stacked->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - - " Make it stacked - lo_bar1_stacked->ns_groupingval = zcl_excel_graph_bars=>c_groupingval_stacked. - - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar2. - - CALL METHOD lo_bar2->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_yes - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set layout - lo_bar2->set_show_legend_key( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_values( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_cat_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_ser_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_percent( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_varycolor( zcl_excel_graph_bars=>c_show_true ). - - " Create a line chart, series and axes - CREATE OBJECT lo_line. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 0 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 1 - ip_symbol = zcl_excel_graph_line=>c_symbol_none - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 2 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$F$1:$F$3' - ip_ref = 'Values!$E$1:$E$3' - ip_sername = 'My serie 3'. - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - - - - - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet (Pie sheet) - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'PieChart' ). - - " Create global drawing, set type as pie chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART PIE' ). - lo_drawing->graph = lo_pie. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_pie. - - "Set chart position (anchor 2 cells) - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart1 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart1' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 2 SERIES' ). - lo_drawing->graph = lo_bar1. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 11. - ls_lower-row = 22. - ls_lower-col = 21. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'Stacked CHART BARS WITH 2 SER.' ). - lo_drawing->graph = lo_bar1_stacked. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 1. - ls_lower-row = 22. - ls_lower-col = 10. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart2 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart2' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 1 SERIE' ). - lo_drawing->graph = lo_bar2. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " LineChart sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'LineChart' ). - - " Create global drawing, set type as line chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART LINES' ). - lo_drawing->graph = lo_line. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_line. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " Values sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for chart - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = lv_value ). - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = lv_value ). - lv_value = -1. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'One (Minus)' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = lv_value ). - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'F' ip_row = 3 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 1 ip_value = 'Three' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL4 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - - lv_tabcolor TYPE zexcel_s_tabcolor, - - ls_header TYPE zexcel_s_worksheet_head_foot, - ls_footer TYPE zexcel_s_worksheet_head_foot. - -CONSTANTS: gc_save_file_name TYPE string VALUE '04_Sheets.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). -* Set color to tab with sheetname - Red - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = 'FF' - ip_green = '00' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to second sheet' ip_hyperlink = lo_hyperlink ). - - " Page printing settings - lo_worksheet->sheet_setup->set_page_margins( ip_header = '1' ip_footer = '1' ip_unit = 'cm' ). - lo_worksheet->sheet_setup->black_and_white = 'X'. - lo_worksheet->sheet_setup->fit_to_page = 'X'. " you should turn this on to activate fit_to_height and fit_to_width - lo_worksheet->sheet_setup->fit_to_height = 0. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->fit_to_width = 2. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lo_worksheet->sheet_setup->page_order = zcl_excel_sheet_setup=>c_ord_downthenover. - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->scale = 80. " used only if ip_fit_to_page = SPACE - - " Header and Footer - ls_header-right_value = 'print date &D'. - ls_header-right_font-size = 8. - ls_header-right_font-name = zcl_excel_style_font=>c_name_arial. - - ls_footer-left_value = '&Z&F'. "Path / Filename - ls_footer-left_font = ls_header-right_font. - ls_footer-right_value = 'page &P of &N'. "page x of y - ls_footer-right_font = ls_header-right_font. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). -* Set color to tab with sheetname - Green - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to first sheet' ip_hyperlink = lo_hyperlink ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Sheet3 is hidden' ). - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). -* Set color to tab with sheetname - Blue - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = '00' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). -* Set color to tab with sheetname - other color - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Cell B3 has value 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 0 ). - lo_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_hidezero. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_row TYPE zexcel_cell_row, - lv_col TYPE i, - lv_row_char TYPE char10, - lv_value TYPE string, - ls_fontcolor TYPE zexcel_style_color_argb. - -CONSTANTS: gc_save_file_name TYPE string VALUE '40_Printsettings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Printsettings' ). - -*--------------------------------------------------------------------* -* Prepare sheet with trivial data -* - first 4 columns will have fontocolor set -* - first 3 rows will have fontcolor set -* These marked cells will be used for repeatable rows/columns on printpages -*--------------------------------------------------------------------* - DO 100 TIMES. " Rows - - lv_row = sy-index . - WRITE lv_row TO lv_row_char. - - DO 20 TIMES. - - lv_col = sy-index - 1. - CONCATENATE sy-abcde+lv_col(1) lv_row_char INTO lv_value. - lv_col = sy-index. - lo_worksheet->set_cell( ip_row = lv_row - ip_column = lv_col - ip_value = lv_value ). - - TRY. - IF lv_row <= 3. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid - ip_fill_fgcolor_rgb = zcl_excel_style_color=>c_yellow ). - ENDIF. - IF lv_col <= 4. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_font_color_rgb = zcl_excel_style_color=>c_red ). - ENDIF. - CATCH zcx_excel . - ENDTRY. - - ENDDO. - - - - ENDDO. - - -*--------------------------------------------------------------------* -* Printsettings -*--------------------------------------------------------------------* - TRY. - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = 'A' - iv_columns_to = 'D' ). - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = 1 - iv_rows_to = 3 ). - CATCH zcx_excel . - ENDTRY. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - PROCESS BEFORE OUTPUT. - MODULE STATUS_9000. - -PROCESS AFTER INPUT. - MODULE USER_COMMAND_9000 AT EXIT-COMMAND. - MODULE USER_COMMAND_9000. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REPORT. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'ABAP2XLSX Inheritance.xlsx'. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL1 -* Variation of ZCL_EXCEL that creates numerous sheets -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel1 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor IMPORTING iv_sheetcount TYPE i DEFAULT 5. -ENDCLASS. - -CLASS lcl_my_zcl_excel1 IMPLEMENTATION. - METHOD constructor. - DATA: lv_sheets_to_create TYPE i. - super->constructor( ). - lv_sheets_to_create = iv_sheetcount - 1. " one gets created by standard class - DO lv_sheets_to_create TIMES. - TRY. - me->add_new_worksheet( ). - CATCH zcx_excel. - ENDTRY. - ENDDO. - me->set_active_sheet_index( 1 ). - - ENDMETHOD. -ENDCLASS. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL_WORKSHEET -* Variation of ZCL_EXCEL_WORKSHEET ( and ZCL_EXCEL that calls the new type of worksheet ) -* that sets a fixed title -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel2 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet DEFINITION INHERITING FROM zcl_excel_worksheet. - PUBLIC SECTION. - METHODS: constructor IMPORTING ip_excel TYPE REF TO zcl_excel - ip_title TYPE zexcel_sheet_title OPTIONAL " Will be ignored - keep parameter for demonstration purpose - RAISING zcx_excel. -ENDCLASS. - -CLASS lcl_my_zcl_excel2 IMPLEMENTATION. - METHOD constructor. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet. - - super->constructor( ). - -* To use own worksheet we have to remove the standard worksheet - lo_worksheet = get_active_worksheet( ). - me->worksheets->remove( lo_worksheet ). -* and replace it with own version - CREATE OBJECT lo_worksheet TYPE lcl_my_zcl_excel_worksheet - EXPORTING - ip_excel = me - ip_title = 'This title will be ignored'. - me->worksheets->add( lo_worksheet ). - - ENDMETHOD. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet IMPLEMENTATION. - METHOD constructor. - super->constructor( ip_excel = ip_excel - ip_title = 'Inherited Worksheet' ). - - ENDMETHOD. -ENDCLASS. - -DATA: go_excel1 TYPE REF TO lcl_my_zcl_excel1. -DATA: go_excel2 TYPE REF TO lcl_my_zcl_excel2. - - -SELECTION-SCREEN BEGIN OF BLOCK bli WITH FRAME TITLE text-bli. -PARAMETERS: rbi_1 RADIOBUTTON GROUP rbi DEFAULT 'X' , " Simple inheritance - rbi_2 RADIOBUTTON GROUP rbi. -SELECTION-SCREEN END OF BLOCK bli. - -INCLUDE zdemo_excel_outputopt_incl. - -END-OF-SELECTION. - - CASE 'X'. - - WHEN rbi_1. " Simple inheritance of zcl_excel, object created directly - CREATE OBJECT go_excel1 - EXPORTING - iv_sheetcount = 5. - lcl_output=>output( go_excel1 ). - - WHEN rbi_2. " Inheritance of zcl_excel_worksheet, inheritance of zcl_excel needed to allow this - CREATE OBJECT go_excel2. - lcl_output=>output( go_excel2 ). - - - ENDCASE. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL5 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel5. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset TYPE zexcel_conditional_iconset. - - - -CONSTANTS: gc_save_file_name TYPE string VALUE '05_Conditional.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '33'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '66'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_false. - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 500 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL6 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel6. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_row TYPE syindex, - lv_formula TYPE string. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '06_Formulas.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -*--------------------------------------------------------------------* -* Get some testdata -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = -10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - -*--------------------------------------------------------------------* -* Demonstrate using formulas -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_formula = 'SUM(C4:C8)' ). - - -*--------------------------------------------------------------------* -* Demonstrate standard EXCEL-behaviour when copying a formula to another cell -* by calculating the resulting formula to put into another cell -*--------------------------------------------------------------------* - DO 10 TIMES. - - lv_formula = zcl_excel_common=>shift_formula( iv_reference_formula = 'SUM(C4:C8)' - iv_shift_cols = 0 " Offset in Columns - here we copy in same column --> 0 - iv_shift_rows = sy-index ). " Offset in Row - here we copy downward --> sy-index - lv_row = 9 + sy-index. " Absolute row = sy-index rows below reference cell - lo_worksheet->set_cell( ip_row = lv_row ip_column = 'C' ip_formula = lv_formula ). - - ENDDO. - -*--------------------------------------------------------------------* -*** Create output -*--------------------------------------------------------------------* - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL7 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel7. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset3 TYPE zexcel_conditional_iconset, - ls_iconset4 TYPE zexcel_conditional_iconset, - ls_iconset5 TYPE zexcel_conditional_iconset, - ls_databar TYPE zexcel_conditional_databar, - ls_colorscale2 TYPE zexcel_conditional_colorscale, - ls_colorscale3 TYPE zexcel_conditional_colorscale. - -CONSTANTS: gc_save_file_name TYPE string VALUE '07_ConditionalAll.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - ls_iconset3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo1_value = '0'. - ls_iconset3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo2_value = '33'. - ls_iconset3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo3_value = '66'. - ls_iconset3-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset4-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo1_value = '0'. - ls_iconset4-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo2_value = '25'. - ls_iconset4-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo3_value = '50'. - ls_iconset4-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo4_value = '75'. - ls_iconset4-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset5-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo1_value = '0'. - ls_iconset5-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo2_value = '20'. - ls_iconset5-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo3_value = '40'. - ls_iconset5-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo4_value = '60'. - ls_iconset5-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo5_value = '80'. - ls_iconset5-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_databar-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_databar-cfvo1_value = '0'. - ls_databar-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_databar-cfvo2_value = '0'. - ls_databar-colorrgb = 'FF638EC6'. - - ls_colorscale2-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale2-cfvo1_value = '0'. - ls_colorscale2-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale2-cfvo2_value = '50'. - ls_colorscale2-colorrgb1 = 'FFF8696B'. - ls_colorscale2-colorrgb2 = 'FF63BE7B'. - - ls_colorscale3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale3-cfvo1_value = '0'. - ls_colorscale3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale3-cfvo2_value = '50'. - ls_colorscale3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_colorscale3-cfvo3_value = '0'. - ls_colorscale3-colorrgb1 = 'FFF8696B'. - ls_colorscale3-colorrgb2 = 'FFFFEB84'. - ls_colorscale3-colorrgb3 = 'FF63BE7B'. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -* ICONSET - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrows. - - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 5 - ip_stop_column = 'B' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'C_ICONSET_3ARROWS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 5 - ip_stop_column = 'C' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'C_ICONSET_3ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = 50 ). - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3flags. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 5 - ip_stop_column = 'D' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'C_ICONSET_3FLAGS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 5 - ip_stop_column = 'E' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'C_ICONSET_3TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 5 - ip_stop_column = 'F' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'C_ICONSET_3TRAFFICLIGHTS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3signs. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'G' - ip_start_row = 5 - ip_stop_column = 'G' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = 'C_ICONSET_3SIGNS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'G' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'G' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'G' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'G' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'G' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'H' - ip_start_row = 5 - ip_stop_column = 'H' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'H' ip_value = 'C_ICONSET_3SYMBOLS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'H' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'H' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'H' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'H' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'H' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'I' - ip_start_row = 5 - ip_stop_column = 'I' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'I' ip_value = 'C_ICONSET_3SYMBOLS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'I' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'I' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'I' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'I' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'I' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrows. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 12 - ip_stop_column = 'B' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = 'C_ICONSET_4ARROWS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 12 - ip_stop_column = 'C' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'C' ip_value = 'C_ICONSET_4ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4redtoblack. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 12 - ip_stop_column = 'D' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'D' ip_value = 'C_ICONSET_4REDTOBLACK' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4rating. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 12 - ip_stop_column = 'E' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'E' ip_value = 'C_ICONSET_4RATING' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4trafficlights. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 12 - ip_stop_column = 'F' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'F' ip_value = 'C_ICONSET_4TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 19 - ip_stop_column = 'B' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'B' ip_value = 'C_ICONSET_5ARROWS' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 19 - ip_stop_column = 'C' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'C' ip_value = 'C_ICONSET_5ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5rating. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 19 - ip_stop_column = 'D' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'D' ip_value = 'C_ICONSET_5RATING' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5quarters. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 19 - ip_stop_column = 'E' - ip_stop_row = 23 ). - -* DATABAR - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'B' ip_value = 'DATABAR' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_databar. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_databar = ls_databar. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 26 - ip_stop_column = 'B' - ip_stop_row = 30 ). - -* COLORSCALE - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'C' ip_value = 'COLORSCALE 2 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 26 - ip_stop_column = 'C' - ip_stop_row = 30 ). - - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'D' ip_value = 'COLORSCALE 3 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 26 - ip_stop_column = 'D' - ip_stop_row = 30 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL8 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel8. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range. - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '08_Range.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Sheet1'. - lo_worksheet->set_title( lv_title ). - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'range'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - " Define another Range with a name longer than 40 characters that - " tests the fix of issue #168 ranges namescan be only up to 20 chars - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'A_range_with_a_name_that_is_longer_than_20_characters'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Range Value 1' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Range Value 2' ). - - " issue #163 - " Define another Range with sheet visibility - lo_range = lo_worksheet->add_new_range( ). - lo_range->name = 'A_range_with_sheet_visibility'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'Range Value 3' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 'Range Value 4' ). - " issue #163 - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL9 -*& -*&---------------------------------------------------------------------* -*& abap2xlsx Demo: Data validations -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel9. - -CONSTANTS: c_fruits TYPE string VALUE 'Fruits', - c_vegetables TYPE string VALUE 'Vegetables', - c_meat TYPE string VALUE 'Meat', - c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: row TYPE zexcel_cell_row. - - -DATA: lv_title TYPE zexcel_sheet_title. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '09_DataValidation.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_sbook TYPE flag. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = c_meat ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Pork' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Beef' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Chicken' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'Turkey' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_meat. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'B' - ip_start_row = 4 - ip_stop_column = 'B' - ip_stop_row = 7 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fruits. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = c_vegetables ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Cucumber' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Sweet pepper ' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Lettuce' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_vegetables. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 6 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Table with Data Validation'. - lo_worksheet->set_title( lv_title ). - - " Maximum Text length - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'Validate Maximum Text length of <= 10 in Cell A2:' ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'abcdefghij' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_textlength. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_lessthanorequal. - lo_data_validation->formula1 = 10. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'A'. - - " Integer Value between 1 and 10 - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Validate Integer Value between 1 and 10 in Cell A5:' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = '5' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_whole. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_between. - lo_data_validation->formula1 = 1. - lo_data_validation->formula2 = 10. - lo_data_validation->prompttitle = 'Range'. - lo_data_validation->prompt = 'Enter a value between 1 and 10'. - lo_data_validation->errortitle = 'Error'. - lo_data_validation->error = 'You have entered a wrong value. Please use only numbers between 1 and 10.'. - lo_data_validation->cell_row = 5. - lo_data_validation->cell_column = 'A'. - - " Evaluation by Formula from issue #161 - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Validate if B8 contains a "-":' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Text' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = '-' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lo_data_validation->formula1 = '"IF(B8<>"""";INDIRECT(LEFT(B8;SEARCH(""-"";B8;1)));EMPTY)"'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'A'. - - " There was an error when data validation was combined with cell merges this should test that: - lo_worksheet->set_cell( ip_row = 10 ip_column = 'A' ip_value = 'Demo for data validation with a dropdown list' ). - lo_worksheet->set_merge( ip_row = 10 ip_column_start = 'A' ip_column_end = 'F' ). - - " Headlines - lo_worksheet->set_cell( ip_row = 11 ip_column = 'A' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = c_vegetables ). - - row = 12. - WHILE row < 20. " Starting with 14500 the data validation is dropped 14000 are still ok - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fruits. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'A'. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = 'Select a value' ). - " 2nd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_vegetables. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'B'. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = 'Select a value' ). - " 3rd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_meat. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = 'Select a value' ). - " 4th - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'D'. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = 'Select a value' ). - " Increment row - row = row + 1. - ENDWHILE. - - IF p_sbook = abap_true. - DATA: bookings type TABLE OF sbook. - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'SBOOK'. - lo_worksheet->set_title( lv_title ). - - SELECT * from sbook INTO TABLE bookings UP TO 4000 ROWS. - - lo_worksheet->bind_table( - EXPORTING - ip_table = bookings -* it_field_catalog = " Table binding field catalog -* is_table_settings = " Excel table binding settings -* IMPORTING -* es_table_settings = " Excel table binding settings - ). - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_EXCEL_OUTPUTOPT_INCL -*&---------------------------------------------------------------------* -CLASS lcl_output DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: - output IMPORTING cl_excel TYPE REF TO zcl_excel - iv_writerclass_name TYPE clike OPTIONAL, - f4_path RETURNING VALUE(selected_folder) TYPE string, - parametertexts. - - PRIVATE SECTION. - METHODS: - download_frontend, - download_backend, - display_online, - send_email. - - DATA: xdata TYPE xstring, " Will be used for sending as email - t_rawdata TYPE solix_tab, " Will be used for downloading or open directly - bytecount TYPE i. " Will be used for downloading or open directly -ENDCLASS. "lcl_output DEFINITION - - -SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE txt_bl1. -PARAMETERS: rb_down RADIOBUTTON GROUP rb1 USER-COMMAND space. - -PARAMETERS: rb_back RADIOBUTTON GROUP rb1. - -PARAMETERS: rb_show RADIOBUTTON GROUP rb1 DEFAULT 'X' . - -PARAMETERS: rb_send RADIOBUTTON GROUP rb1. - -PARAMETERS: p_path TYPE string LOWER CASE MODIF ID pat. -PARAMETERS: p_email TYPE string LOWER CASE MODIF ID ema OBLIGATORY DEFAULT 'insert_your_emailadress@here'. -PARAMETERS: p_backfn TYPE text40 NO-DISPLAY. -SELECTION-SCREEN END OF BLOCK bl1. - - -AT SELECTION-SCREEN OUTPUT. - LOOP AT SCREEN. - - IF rb_down IS INITIAL AND screen-group1 = 'PAT'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - IF rb_send IS INITIAL AND screen-group1 = 'EMA'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - MODIFY SCREEN. - - ENDLOOP. - -INITIALIZATION. - IF sy-batch IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = p_path ). - cl_gui_cfw=>flush( ). - ENDIF. - lcl_output=>parametertexts( ). " If started in language w/o textelements translated set defaults - sy-title = gc_save_file_name. - txt_bl1 = 'Output options'(bl1). - p_backfn = gc_save_file_name. " Use as default if nothing else is supplied by submit - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - p_path = lcl_output=>f4_path( ). - - -*----------------------------------------------------------------------* -* CLASS lcl_output IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_output IMPLEMENTATION. - METHOD output. - - DATA: cl_output TYPE REF TO lcl_output, - cl_writer TYPE REF TO zif_excel_writer. - - IF iv_writerclass_name IS INITIAL. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. - ELSE. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE (iv_writerclass_name). - ENDIF. - cl_output->xdata = cl_writer->write_file( cl_excel ). - -* After 6.40 via cl_bcs_convert - cl_output->t_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstring = cl_output->xdata ). - cl_output->bytecount = xstrlen( cl_output->xdata ). - -* before 6.40 -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = cl_output->xdata -* IMPORTING -* output_length = cl_output->bytecount -* TABLES -* binary_tab = cl_output->t_rawdata. - - CASE 'X'. - WHEN rb_down. - IF sy-batch IS INITIAL. - cl_output->download_frontend( ). - ELSE. - MESSAGE e001(00) WITH 'Frontenddownload impossible in background processing'. - ENDIF. - - WHEN rb_back. - cl_output->download_backend( ). - - WHEN rb_show. - IF sy-batch IS INITIAL. - cl_output->display_online( ). - ELSE. - MESSAGE e001(00) WITH 'Online display absurd in background processing'. - ENDIF. - - WHEN rb_send. - cl_output->send_email( ). - - ENDCASE. - ENDMETHOD. "output - - METHOD f4_path. - DATA: new_path TYPE string, - repid TYPE syrepid, - dynnr TYPE sydynnr, - lt_dynpfields TYPE TABLE OF dynpread, - ls_dynpfields LIKE LINE OF lt_dynpfields. - -* Get current value - dynnr = sy-dynnr. - repid = sy-repid. - ls_dynpfields-fieldname = 'P_PATH'. - APPEND ls_dynpfields TO lt_dynpfields. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = repid - dynumb = dynnr - TABLES - dynpfields = lt_dynpfields - EXCEPTIONS - invalid_abapworkarea = 1 - invalid_dynprofield = 2 - invalid_dynproname = 3 - invalid_dynpronummer = 4 - invalid_request = 5 - no_fielddescription = 6 - invalid_parameter = 7 - undefind_error = 8 - double_conversion = 9 - stepl_not_found = 10 - OTHERS = 11. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - EXIT. - ENDIF. - - READ TABLE lt_dynpfields INTO ls_dynpfields INDEX 1. - - new_path = ls_dynpfields-fieldvalue. - selected_folder = new_path. - - cl_gui_frontend_services=>directory_browse( - EXPORTING - window_title = 'Select path to download EXCEL-file' - initial_folder = new_path - CHANGING - selected_folder = new_path - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4 - ). - cl_gui_cfw=>flush( ). - CHECK new_path IS NOT INITIAL. - selected_folder = new_path. - - ENDMETHOD. "f4_path - - METHOD parametertexts. -* If started in language w/o textelements translated set defaults -* Furthermore I don't have to change the selectiontexts of all demoreports. - DEFINE default_parametertext. - if %_&1_%_app_%-text = '&1' or - %_&1_%_app_%-text is initial. - %_&1_%_app_%-text = &2. - endif. - END-OF-DEFINITION. - - default_parametertext: rb_down 'Save to frontend', - rb_back 'Save to backend', - rb_show 'Direct display', - rb_send 'Send via email', - - p_path 'Frontend-path to download to', - p_email 'Email to send xlsx to'. - - ENDMETHOD. "parametertexts - - METHOD: download_frontend. - DATA: filename TYPE string. -* I don't like p_path here - but for this include it's ok - filename = p_path. -* Add trailing "\" or "/" - IF filename CA '/'. - REPLACE REGEX '([^/])\s*$' IN filename WITH '$1/' . - ELSE. - REPLACE REGEX '([^\\])\s*$' IN filename WITH '$1\\'. - ENDIF. - - CONCATENATE filename gc_save_file_name INTO filename. -* Get trailing blank - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = bytecount - filename = filename - filetype = 'BIN' - CHANGING data_tab = t_rawdata ). - ENDMETHOD. "download_frontend - - METHOD download_backend. - DATA: bytes_remain TYPE i. - FIELD-SYMBOLS: <rawdata> LIKE LINE OF t_rawdata. - - OPEN DATASET p_backfn FOR OUTPUT IN BINARY MODE. - CHECK sy-subrc = 0. - - bytes_remain = bytecount. - - LOOP AT t_rawdata ASSIGNING <rawdata>. - - AT LAST. - CHECK bytes_remain >= 0. - TRANSFER <rawdata> TO p_backfn LENGTH bytes_remain. - EXIT. - ENDAT. - - TRANSFER <rawdata> TO p_backfn. - SUBTRACT 255 FROM bytes_remain. " Solix has length 255 - - ENDLOOP. - - CLOSE DATASET p_backfn. - - - - - IF sy-repid <> sy-cprog AND sy-cprog IS NOT INITIAL. " no need to display anything if download was selected and report was called for demo purposes - LEAVE PROGRAM. - ELSE. - MESSAGE 'Data transferred to default backend directory' TYPE 'S'. - ENDIF. - ENDMETHOD. "download_backend - - METHOD display_online. - DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control, "OIContainerCtrl - cl_document TYPE REF TO i_oi_document_proxy. "Office Dokument - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = cl_gui_container=>screen0 - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - WRITE: '.'. " To create an output. That way screen0 will exist - ENDMETHOD. "display_online - - METHOD send_email. -* Needed to send emails - DATA: bcs_exception TYPE REF TO cx_bcs, - errortext TYPE string, - cl_send_request TYPE REF TO cl_bcs, - cl_document TYPE REF TO cl_document_bcs, - cl_recipient TYPE REF TO if_recipient_bcs, - cl_sender TYPE REF TO cl_cam_address_bcs, - t_attachment_header TYPE soli_tab, - wa_attachment_header LIKE LINE OF t_attachment_header, - attachment_subject TYPE sood-objdes, - - sood_bytecount TYPE sood-objlen, - mail_title TYPE so_obj_des, - t_mailtext TYPE soli_tab, - wa_mailtext LIKE LINE OF t_mailtext, - send_to TYPE adr6-smtp_addr, - sent TYPE os_boolean. - - - mail_title = 'Mail title'. - wa_mailtext = 'Mailtext'. - APPEND wa_mailtext TO t_mailtext. - - TRY. -* Create send request - cl_send_request = cl_bcs=>create_persistent( ). -* Create new document with mailtitle and mailtextg - cl_document = cl_document_bcs=>create_document( i_type = 'RAW' "#EC NOTEXT - i_text = t_mailtext - i_subject = mail_title ). -* Add attachment to document -* since the new excelfiles have an 4-character extension .xlsx but the attachment-type only holds 3 charactes .xls, -* we have to specify the real filename via attachment header -* Use attachment_type xls to have SAP display attachment with the excel-icon - attachment_subject = gc_save_file_name. - CONCATENATE '&SO_FILENAME=' attachment_subject INTO wa_attachment_header. - APPEND wa_attachment_header TO t_attachment_header. -* Attachment - sood_bytecount = bytecount. " next method expects sood_bytecount instead of any positive integer *sigh* - cl_document->add_attachment( i_attachment_type = 'XLS' "#EC NOTEXT - i_attachment_subject = attachment_subject - i_attachment_size = sood_bytecount - i_att_content_hex = t_rawdata - i_attachment_header = t_attachment_header ). - -* add document to send request - cl_send_request->set_document( cl_document ). - -* set sender in case if no own email is availabe -* cl_sender = cl_cam_address_bcs=>create_internet_address( 'sender@sender.sender' ). -* cl_send_request->set_sender( cl_sender ). - -* add recipient(s) - here only 1 will be needed - send_to = p_email. - IF send_to IS INITIAL. - send_to = 'no_email@no_email.no_email'. " Place into SOST in any case for demonstration purposes - ENDIF. - cl_recipient = cl_cam_address_bcs=>create_internet_address( send_to ). - cl_send_request->add_recipient( cl_recipient ). - -* Und abschicken - sent = cl_send_request->send( i_with_error_screen = 'X' ). - - COMMIT WORK. - - IF sent IS INITIAL. - MESSAGE i500(sbcoms) WITH p_email. - ELSE. - MESSAGE s022(so). - MESSAGE 'Document ready to be sent - Check SOST or SCOT' TYPE 'I'. - ENDIF. - - CATCH cx_bcs INTO bcs_exception. - errortext = bcs_exception->if_message~get_text( ). - MESSAGE errortext TYPE 'I'. - - ENDTRY. - ENDMETHOD. "send_email - - -ENDCLASS. "lcl_output IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched1. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo01' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_reader TYPE REF TO zif_excel_reader, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lt_files TYPE filetable, - ls_file TYPE file_table, - lv_rc TYPE i, - lv_value TYPE zexcel_cell_value. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'TechEd01.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - -******************************* -* abap2xlsx read XLSX * -******************************* - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_2007. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_worksheet->get_cell( EXPORTING ip_column = 'C' - ip_row = 10 - IMPORTING ep_value = lv_value ). - - WRITE: 'abap2xlsx total score is ', lv_value. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED2 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched2. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lv_style_title_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - -* ls_key-relid = 'MI'. -* ls_key-objid = 'WBLOGO'. -* lo_drawing->set_media_www( ip_key = ls_key -* ip_width = 140 -* ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lo_send_request TYPE REF TO cl_bcs, - lo_document TYPE REF TO cl_document_bcs, - lo_sender TYPE REF TO cl_sapuser_bcs, - lo_recipient TYPE REF TO cl_sapuser_bcs, - lo_recipient_i TYPE REF TO CL_CAM_ADDRESS_BCS. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lv_bytecount_c TYPE sood-objlen, - lt_file_tab TYPE solix_tab. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - lv_bytecount_c = lv_bytecount. - - " Send via email - lo_document = cl_document_bcs=>create_document( i_type = 'RAW' - i_subject = 'Demo TechEd' ). - - lo_document->add_attachment( i_attachment_type = 'EXT' - i_attachment_subject = 'abap2xlsx.xlsx' - i_attachment_size = lv_bytecount_c - i_att_content_hex = lt_file_tab ). - - lo_sender = cl_sapuser_bcs=>create( sy-uname ). - lo_recipient = cl_sapuser_bcs=>create( sy-uname ). -* lo_recipient_i = cl_cam_address_bcs=>create_internet_address( 'ivan.femia@techedge.it' ). - - lo_send_request = cl_bcs=>create_persistent( ). - lo_send_request->set_document( lo_document ). - lo_send_request->set_sender( lo_sender ). - lo_send_request->add_recipient( lo_recipient ). - lo_send_request->set_send_immediately( abap_true ). - lo_send_request->send( ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?sap.transform simple?> -<tt:transform xmlns:tt="http://www.sap.com/transformation-templates"> - - <tt:root name="ROOT"/> - <tt:root name="SHARED_STRINGS"/> - - <tt:template> - <sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> - <tt:attribute name="count" value-ref="ROOT.COUNT"/> - <tt:attribute name="uniqueCount" value-ref="ROOT.UNIQUE_COUNT"/> - <tt:loop ref="SHARED_STRINGS"> - <si> - <t> - <tt:value ref="STRING_VALUE"/> - </t> - </si> - </tt:loop> - </sst> - </tt:template> - -</tt:transform> - - - <?sap.transform simple?> -<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" - xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> - - <tt:root name="WORKSHEET"/> - <tt:root name="CELLS"/> - <tt:root name="WRITER"/> - <tt:variable name="owriter" ref-type="ZCL_EXCEL_WRITER_HUGE_FILE"/> - - <tt:template> - <tt:assign ref="WRITER" to-var="owriter"/> - <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" - xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" - mc:Ignorable="x14ac"> - <tt:namespace name="r" /> - <tt:namespace name="mc" /> - <tt:namespace name="x14ac" /> - <sheetPr> - <tt:cond check="not-initial(WORKSHEET.TABCOLOR)"> - <tabColor> - <tt:attribute name="rgb" value-ref="WORKSHEET.TABCOLOR" /> - </tabColor> - </tt:cond> - <outlinePr> - <tt:attribute name="summaryRight" value-ref="WORKSHEET.SUMMARYRIGHT" /> - <tt:attribute name="summaryBelow" value-ref="WORKSHEET.SUMMARYBELOW" /> - </outlinePr> - </sheetPr> - <tt:cond check="not-initial(WORKSHEET.FITTOPAGE)"> - <pageSetupPr> - <tt:attribute name="fitToPage" value-ref="WORKSHEET.FITTOPAGE" /> - </pageSetupPr> - </tt:cond> - <dimension> - <tt:attribute name="ref" value-ref="WORKSHEET.DIMENSION" /> - </dimension> - <sheetViews> - <sheetView> - <tt:attribute name="showZeros" value-ref="WORKSHEET.SHOWZEROS" /> - <tt:attribute name="tabSelected" value-ref="WORKSHEET.TABSELECTED" /> - <tt:attribute name="zoomScale" value-ref="WORKSHEET.ZOOMSCALE" /> - <tt:cond check="WORKSHEET.ZOOMSCALENORMAL != 0"> - <tt:attribute name="zoomScaleNormal" value-ref="WORKSHEET.ZOOMSCALENORMAL" /> - </tt:cond> - <tt:cond check="WORKSHEET.ZOOMSCALEPAGEVIEW != 0"> - <tt:attribute name="zoomScalePageLayoutView" value-ref="WORKSHEET.ZOOMSCALEPAGEVIEW" /> - </tt:cond> - <tt:attribute name="zoomScaleSheetLayoutView" value-ref="WORKSHEET.ZOOMSCALESHEETVIEW" /> - <tt:attribute name="workbookViewId" value-ref="WORKSHEET.WORKBOOKVIEWID" /> - <tt:attribute name="showGridLines" value-ref="WORKSHEET.SHOWGRIDLINES" /> - <tt:attribute name="showRowColHeaders" value-ref="WORKSHEET.SHOWROWCOLHEADERS" /> - <tt:cond check="WORKSHEET.YSPLIT != 0 or WORKSHEET.XSPLIT != 0"> - <pane activePane="bottomRight" state="frozen"> - <tt:cond check="WORKSHEET.YSPLIT != 0"> - <tt:attribute name="ySplit" value-ref="WORKSHEET.YSPLIT" /> - </tt:cond> - <tt:cond check="WORKSHEET.XSPLIT != 0"> - <tt:attribute name="xSplit" value-ref="WORKSHEET.XSPLIT" /> - </tt:cond> - <tt:attribute name="topLeftCell" value-ref="WORKSHEET.TOPLEFTCELL" /> - </pane> - </tt:cond> - <selection> - <tt:attribute name="activeCell" value-ref="WORKSHEET.ACTIVECELL" /> - <tt:attribute name="sqref" value-ref="WORKSHEET.ACTIVECELL" /> - </selection> - </sheetView> - </sheetViews> - <sheetFormatPr> - <tt:attribute name="defaultRowHeight" value-ref="WORKSHEET.DEFAULTROWHEIGHT" /> - <tt:cond check="WORKSHEET.DEFAULTCOLWIDTH != 0"> - <tt:attribute name="defaultColWidth" value-ref="WORKSHEET.DEFAULTCOLWIDTH" /> - </tt:cond> - <tt:attribute name="x14ac:outlineLevelRow" value-ref="WORKSHEET.OUTLINELEVELROW" /> - <tt:attribute name="x14ac:outlineLevelCol" value-ref="WORKSHEET.OUTLINELEVELCOL" /> - </sheetFormatPr> - <cols> - <tt:loop ref="WORKSHEET.COLS"> - <col> - <tt:attribute name="min" value-ref="MIN" /> - <tt:attribute name="max" value-ref="MAX" /> - <tt:attribute name="width" value-ref="WIDTH" /> - <tt:cond check="not-initial(HIDDEN)"> - <tt:attribute name="hidden" value-ref="HIDDEN" /> - </tt:cond> - <tt:cond check="not-initial(CUSTOMWIDTH)"> - <tt:attribute name="customWidth" value-ref="CUSTOMWIDTH" /> - </tt:cond> - <tt:cond check="not-initial(BESTFIT)"> - <tt:attribute name="bestFit" value-ref="BESTFIT" /> - </tt:cond> - <tt:cond check="not-initial(COLLAPSED)"> - <tt:attribute name="collapsed" value-ref="COLLAPSED" /> - </tt:cond> - <tt:cond check="OUTLINELEVEL != 0"> - <tt:attribute name="outlineLevel" value-ref="OUTLINELEVEL" /> - </tt:cond> - <tt:cond check="STYLE >= 0"> - <tt:attribute name="style" value-ref="STYLE" /> - </tt:cond> - </col> - </tt:loop> - </cols> - <sheetData> - <tt:loop ref="WORKSHEET.ROWS"> - <row> - <tt:attribute name="r" value-ref="ROW" /> - <tt:attribute name="spans" value-ref="SPANS" /> - <tt:cond check="not-initial(HIDDEN)"> - <tt:attribute name="hidden" value-ref="HIDDEN" /> - </tt:cond> - <tt:cond check="not-initial(CUSTOMHEIGHT)"> - <tt:attribute name="customHeight" value-ref="CUSTOMHIGHT" /> - <tt:attribute name="ht" value-ref="HIGHT" /> - </tt:cond> - <tt:cond check="not-initial(COLLAPSED)"> - <tt:attribute name="collapsed" value-ref="COLLAPSED" /> - </tt:cond> - <tt:cond check="OUTLINELEVEL != 0"> - <tt:attribute name="outlineLevel" value-ref="OUTLINELEVEL" /> - </tt:cond> - <tt:cond check="STYLE != 0"> - <tt:attribute name="customFormat" value-ref="CUSTOMFORMAT" /> - <tt:attribute name="s" value-ref="STYLE" /> - </tt:cond> - <!-- Aufruf get_cells --> - <tt:call-method s-name="GET_CELLS" var="owriter"> - <tt:with-parameter name="I_ROW" ref="ROW" /> - <tt:with-parameter name="I_INDEX" ref="INDEX" /> - </tt:call-method> - <tt:loop ref=".CELLS"> - <c> - <tt:attribute name="r" value-ref="NAME" /> - <tt:cond check="STYLE >= 0"> - <tt:attribute name="s" value-ref="STYLE" /> - </tt:cond> - <tt:cond check="not-initial(FORMULA)"> - <tt:attribute name="f" value-ref="FORMULA" /> - </tt:cond> - <tt:cond check="not-initial(VALUE) and initial(FORMULA)"> - <tt:attribute name="t" value-ref="TYPE" /> - <tt:cond check="TYPE = 'inlineStr'"> - <is> - <t> - <tt:value ref="VALUE" /> - </t> - </is> - </tt:cond> - <tt:cond check="TYPE != 'inlineStr'"> - <v> - <tt:value ref="VALUE" /> - </v> - </tt:cond> - </tt:cond> - </c> - </tt:loop> - </row> - </tt:loop> - </sheetData> - <tt:cond check="WORKSHEET.MERGECELLS_COUNT != 0"> - <mergeCells> - <tt:attribute name="count" value-ref="WORKSHEET.MERGECELLS_COUNT" /> - <tt:loop ref="WORKSHEET.MERGECELLS"> - <mergeCell> - <tt:attribute name="ref" value-ref="REF" /> - </mergeCell> - </tt:loop> - </mergeCells> - </tt:cond> - <tt:cond check="WORKSHEET.HYPERLINKS_COUNT != 0"> - <hyperlinks> - <tt:loop ref="WORKSHEET.HYPERLINKS"> - <hyperlink> - <tt:attribute name="ref" value-ref="REF" /> - <tt:cond check="not-initial(LOCATION)"> - <tt:attribute name="location" value-ref="LOCATION" /> - </tt:cond> - <tt:cond check="not-initial(R_ID)"> - <tt:attribute name="r:id" value-ref="R_ID" /> - </tt:cond> - </hyperlink> - </tt:loop> - </hyperlinks> - </tt:cond> - <tt:cond check="not-initial(WORKSHEET.PRINTOPTIONS)"> - <printOptions> - <tt:ref name="WORKSHEET.PRINTOPTIONS"> - <tt:cond check="not-initial(GRIDLINES)"> - <tt:attribute name="gridLines" value-ref="GRIDLINES" /> - </tt:cond> - <tt:cond check="not-initial(HORIZONTALCENTERED)"> - <tt:attribute name="horizontalCentered" value-ref="HORIZONTALCENTERED" /> - </tt:cond> - <tt:cond check="not-initial(VERTICALCENTERED)"> - <tt:attribute name="verticalCentered" value-ref="VERTICALCENTERED" /> - </tt:cond> - </tt:ref> - </printOptions> - </tt:cond> - <pageMargins> - <tt:ref name="WORKSHEET.PAGEMARGINS"> - <tt:attribute name="left" value-ref="LEFT" /> - <tt:attribute name="right" value-ref="RIGHT" /> - <tt:attribute name="top" value-ref="TOP" /> - <tt:attribute name="bottom" value-ref="BOTTOM" /> - <tt:attribute name="header" value-ref="HEADER" /> - <tt:attribute name="footer" value-ref="FOOTER" /> - </tt:ref> - </pageMargins> - <pageSetup> - <tt:ref name="WORKSHEET.PAGESETUP"> - <tt:cond check="not-initial(BLACKANDWHITE)"> - <tt:attribute name="blackAndWhite" value-ref="BLACKANDWHITE" /> - </tt:cond> - <tt:cond check="not-initial(CELLCOMMENTS)"> - <tt:attribute name="cellComments" value-ref="CELLCOMMENTS" /> - </tt:cond> - <tt:cond check="COPIES != 0"> - <tt:attribute name="copies" value-ref="COPIES" /> - </tt:cond> - <tt:cond check="not-initial(DRAFT)"> - <tt:attribute name="draft" value-ref="DRAFT" /> - </tt:cond> - <tt:cond check="not-initial(ERRORS)"> - <tt:attribute name="errors" value-ref="ERRORS" /> - </tt:cond> - <tt:cond check="FIRSTPAGENUMBER != 0"> - <tt:attribute name="firstPageNumber" value-ref="FIRSTPAGENUMBER" /> - </tt:cond> - <tt:cond check="not-initial(FITTOPAGE)"> - <tt:attribute name="fitToHeight" value-ref="FITTOHIGHT" /> - <tt:attribute name="fitToWidth" value-ref="FITTOWIDTH" /> - </tt:cond> - <tt:cond check="HORIZONTALDPI != 0"> - <tt:attribute name="horizontalDpi" value-ref="HORIZONTALDPI" /> - </tt:cond> - <tt:cond check="not-initial(ORIENTATION)"> - <tt:attribute name="orientation" value-ref="ORIENTATION" /> - </tt:cond> - <tt:cond check="not-initial(PAGEORDER)"> - <tt:attribute name="pageOrder" value-ref="PAGEORDER" /> - </tt:cond> - <tt:cond check="not-initial(PAPERHEIGHT)"> - <tt:attribute name="paperHeight" value-ref="PAPERHEIGHT" /> - </tt:cond> - <tt:cond check="PAPERSIZE != 0"> - <tt:attribute name="paperSize" value-ref="PAPERSIZE" /> - </tt:cond> - <tt:cond check="not-initial(PAPERWIDTH)"> - <tt:attribute name="paperWidth" value-ref="PAPERWIDTH" /> - </tt:cond> - <tt:cond check="SCALE != 0"> - <tt:attribute name="scale" value-ref="SCALE" /> - </tt:cond> - <tt:cond check="not-initial(USEFIRSTPAGENUMBER)"> - <tt:attribute name="useFirstPageNumber" value-ref="USEFIRSTPAGENUMBER" /> - </tt:cond> - <tt:cond check="not-initial(USEPRINTERDEFAULTS)"> - <tt:attribute name="usePrinterDefaults" value-ref="USEPRINTERDEFAULTS" /> - </tt:cond> - <tt:cond check="VERTICALDPI != 0"> - <tt:attribute name="verticalDpi" value-ref="VERTICALDPI" /> - </tt:cond> - </tt:ref> - </pageSetup> - <tt:cond check="not-initial(WORKSHEET.HEADERFOOTER)"> - <headerFooter> - <tt:ref name="WORKSHEET.HEADERFOOTER"> - <tt:cond check="not-initial(WORKSHEET.HEADERFOOTER)"> - <tt:attribute name="differentOddEven" value-ref="DIFFERENTODDEVEN" /> - </tt:cond> - <oddHeader> - <tt:value ref="ODDHEADER" /> - </oddHeader> - <oddFooter> - <tt:value ref="ODDFOOTER" /> - </oddFooter> - <evenHeader> - <tt:value ref="EVENHEADER" /> - </evenHeader> - <evenFooter> - <tt:value ref="EVENFOOTER" /> - </evenFooter> - </tt:ref> - </headerFooter> - </tt:cond> - <tt:cond check="not-initial(WORKSHEET.DRAWINGS)"> - <drawing> - <tt:attribute name="r:id" value-ref="WORKSHEET.DRAWINGS" /> - </drawing> - </tt:cond> - <tt:cond check="WORKSHEET.TABLES_COUNT != 0"> - <tableParts> - <tt:attribute name="count" value-ref="WORKSHEET.TABLES_COUNT" /> - <tt:loop ref="WORKSHEET.TABLES"> - <tablePart> - <tt:attribute name="r:id" value-ref="R_ID" /> - </tablePart> - </tt:loop> - </tableParts> - </tt:cond> - </worksheet> - </tt:template> -</tt:transform> - - diff --git a/build/ABAP2XLSX_V_7_0_5 - 2015-08-04.nugg.zip b/build/ABAP2XLSX_V_7_0_5 - 2015-08-04.nugg.zip deleted file mode 100644 index ca260dc70dd18dc2e5c8610b5be18edcfbece048..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361980 zcmV(#K;*wrO9KQH0000802rqPM{cSpZ*GMJ0O>C=02TlM06{`QP%>CdQ&?YCUpHSc zUo|dnb!TVnJ==2I#**);%0Eo;RHbC^5hc=zlQ?El6bVT<=IsEGE$0OVks}GmAiw~i zE`IPY?Fa0`R-OH^ot_yC1|UcbC{T2=%d%Ct%%!`hyQin8d+_$Rhq;IDa2UCP-)Xd( z#|?!2X)tsBn@(dHUmyO|`0dwkzj^B~Z*Fjmd}oe34cCux=sO-7(WmgRK?_ujzPE_>Rbf!=F|sgFmbhXxvSM`stEhSorR&FmTa#3DBjQ|zH>h@ChH z8>rW{w6n4CvC}vv0BM(#v3X&T7TXPETI3yV$Iu2^*Cf}Z2k7Df1pp9IoX3|7d3{Sh$Ncy@B z=6K=U;5XzDU5CMZeUpSKv1l+_UU8;9^2zfxFn`}^I0SXyxpQxv7^66NgHRkU{ZELIX&Mlk zuuDNnc1t-q`-TleGxGdTl-to;cfRoO9Q!emmO{2SwA1vle##!(C*$!u`~6ARo*3hQ zXgw<{9_zWCaViw)>()l1ca{wmWgIqx@Oh`ix*5CPfq}HV!|`O zzWnZwWf1@J6494v>Jd&uZl(+on-DFQSDrg%@4x*<)LKS_mq5azU>Qy^x^_KG%Y$6z zn&BcV)n$sr2l3f()9GgkCFXAwld5E$JX z--(wY=14MJQrw2lGz?Ucn?qq4egUKmnZIEq=qpMP4iE2NA~ufV9vhcmnd<#K_3U_R zV>(OqwNrhhgRsD*W*Az(`RzAp!Ie^jaj!c-r-rVL`q{QfJp%S&Ex(tfCB%LyEY{T4 za^Te3VV#X_CiUsqK$d1&`sfTsDw)2Kc|JBQcmlIGqO&(T?;68_W}4rALkRrxxBvOi zfB)CN|NA>H{>6zN-Z)pz0uignkKT~m4&xb^b@-%1rWiWkKsi#3y%#1DyCrrKyMPG- zx=0$obG#*vG?6W^QlGR>CLmk;=S6q0riFZw4DHtr_fav693^bY9wIa`^!KC} zWU@IKm>6|(KPX4UplfyCuuFul?ddW`FdM@BimY*}j+zKDhGkP7F$l@r6B9iL3P`Ao z!=YxKkNf5urXTGH$IC@?Ljht-hBIQm@iOAATv0q+SD0G;*v9ik{K(~A5_YO0iQ;6& z7gul$m#n-zn<~|ZlYutWMppOFrcSev7qZprk8ubatsGwzR%auD5E(O8DLZJa1ru6G zN@m)YxMUr4N0=`H*k}@`IR+k4x#>AePwZ%sTHhUWt|1#s=G>!9Mmd9U=m9j6w{4 z4!9L;2aXWv%kjM69?#OQUZ-6V)HzlR<)aMFZ=E;}-K!;8suV3wd&3EP*1fRCr~1Gm ztI%>6R(BZ(WT`^dQW2U4o`X6s1$MU*WTC28E19dH{uk~OlOUsd4Qt!QPSoD@W zW{ccc^jZej&H!l|J!AZ##oS8drZ*m33`glbdD+grj*?sd~ibwiKw; zyCtizsswuVBm(t~?gwH>?2|fV9n-xSShi_>9BAc4GUG?0I@}pJP_A7Zs?g|rbsDt< zjTnK*|3L!U{zxQ7sf;>8<5Xp%AJj?ob+XYwJL~p7+LP`;BXF;y)EY;bM2J=)A&mZb zH26qe&j(<5JV9DKn@S=yrORd5%c^jZjZ{K$Z7o;d#4*%FZ zZoXod3gm(nKd!0VJ*UUd*Uj@M@dl3c;9L6q=zR*26$8$ep>h%!brP!V0 zD0b!x3OW+E9(NqgF;#c#8z#EZbEj+@4}OU^XXwJ#U2q*E>hNF>o2pH6X+fDLTkYmC z`H7~Wu`|s=mOj*gC597psuRVK!Aq@6=HZzMzfWh|HiA%UBYHesLIjRl{TYs?p}UYM zDfS4c=Ze!rt+9D9gY~JvXd8sU%agQo^_W8_^_#st;!McgIXPCZh5va3#CrZ`+uBH_ z=4RYurfDWx|r7xN*}5D-azXb<(+_E5uPoaC?eOD>L#R(GL^AEW2~}su9bp_zL=V2L#!JVRASt9 zl{bvd-IZhWFtINXj|E~1UhsvT+^2l@COIl^bJvWNiNudkaE*tq~Z zY-shFfp<)=Wt))P62J(&)SY(HBljZml-`*iA@(yFmxU7&jv-)F$JgwQ*-L$FQ`54X z1SZ`@q07u9Xl*>OCdhn@VmwC&M)yPO^$Xgsu<>PFH;`n~HDof7+ez0n>1|8VG!|Pp zbr8iES7HvaEKowey#e`GS>#LB1rm%2_8?=-Oxqs&-+Pxyg)+>wq`QdnM3=~Z`*L7j zZW{TctXAR617|j~iEP=aY&Bt1ny%Ja7@v57LVS%w>`(CHYw@fz7rGU!dj&D{{W2zTsN|1We11aicred zhut%6TYXbZDBV)o;IrJ=QzOnM9iu{=-avoH$id>#Xo5s-7;9s7S?DM1uYmQd+B9nd zUQSnWY0qIs%@pCaxLLYnVFnE%xU^fZnIdB{J;T?|(u>iR=lGw}-~_sO$OIALz~+)q zA)wN4Bw?)ZBbE}#3SveRT*_~NQ}`RWY%-5TuWM>a=_V`w;anSWABH=3Zm{GGfgguK zQj#fPJW3_g#uPT{b8XOPn_7UF6av|1b8lO%OLx)A`7EPzL)h$7(YSezdq$1R@sfpV zBdQAWvq_~^lOG1jX6d12*2@MRgF?BWZz!|St1M^HN1U%}=Ox8Jj0`VDuuY@FOW*I0 zmy#$BX-Z;yZ)KRShMYW+%~U3*g7}kKCaOFYh(sw4xXH#?0r&che+JrS5u;_Oh?y}@ zW0}!7IkG}&5i7{| zZkY-U7LOmukAgQX4tTD2>Cj$+| zneJOv3b*AE-D*g7qL))IK&hx^bn|_>a4*--Kd9^H-THAPYeAY>!8frV)ab*Dp8Mfg+)-Bh>+3U zX`nb$pZQ|b*uBG2sZPE`n$=LVh68P+_e5-0*%)_cGor`I+%e@-6wE99$|W+!&PpiP zcdym;U8#m!_4P3b+2j&Yn(>rLX)b}Mbl3dQ{5U)r56m|R65nW@7L9ZQHwF1KBJ6US zpV$7Lu!8gx)!Sv&+Y&#sS(P$#K0{8}K~Q=y9#2r$O7=W*@F1ci^s^CR+&mU!{cLDJ z6+E-!z)l7U=_cZP!%c<@k&Hf{mkax77xlqV{h(Xtyy`pcBjWZ<7LY?>+Yl){*Lv?@ zQ$1Q0{j=?mT&-rF<2!W^(NGjW4271!Wu7gx>AlK$O z;;R%OO)ZF>ie-Cn%U{yVLs>5mTXfSqCz21iAZ!y884g)VtV2N}ZPW*jY}V+?CR2`S z85cdGBgz#~rf|8w`Ei}TX>YA>5|mOv(G6p)mOmzde~SEdzSBHedCv+yQ* zj*0_P5?s+UQ&y+DhzC+PS6`*mO~Fg%2`P9XDcJ0b#Iv`4Ql;)iDbgqL+EGD+mp1hn z7PQSgeotwcwouTrhi{zeqrGs5_{2qBOB*}Qk}$C(93zcCOQ!GA@S}VcsZyfD#Bk*r z&FQ!oO`%l@Ys{Q*mM&5Sr>#?v>nfvrH@>Ah7u|%;W2^mx+#GEQUW$vA@u1~wc*R3x z;F3_C&^+{Q-e$Ar)m&d2XqHyRjHgL|xY{!ACv~%CH_NzHH090s3fNa$#B8~mt8)>v z0rTfw!*Dy4x}+qVzA5`{veQGQ34$g#Bk`j(UAe%Wjl(bq=QxTWgO(N`_6lzdj_? zJ8(bT^ns0EIwmXA6#OVuEIw5RkT*`OD*cpRCs&f1&n*rK@WCBE$l%Xsj@pc~ym;9s zA8mcq*DlLtDz8Y<)gz*#siIL^$LcC|S4vdEHPxo?RngZ0Rq#}1q=1RQE|sfrm5nZj znxXd;^^}mcx)fHqKB}Yu+&gw9DJr=>S=Nrm7CISUjQU)Z)@cAS#bu5O5OUs1BOi$ZX5ayr14q0Z1%A#Dwy}eISW}!3cg3QC8 zzbZKfn5Y;t7wZ3u@e{=Oj4*V!XX)=Xz7wK2C!G;cnA2Heg|Oqg1bH2*X*hI`1r1fiCTuU%kAbt@ODskT) zLQ#t`e3lKuE!j zdkEYsz%5mD6IFCg>MO1>dauIN+DoJN*0WLuMK&KU@-A^cUSi9oZVuw-H`%%cXSk~D zdr>ap0nSx6+*=hQjA~`1RTTf!SsWFkipoep42QC@S3vZsF+>D#eu{E$JQ%Rd@f5BN zB9zChxj7X;X}6CqxuigaR2b!S0a#WhMGk~dxU83S=WlH=mr`bf%HCF`tBb~jOan~5zAGJloUmsp*a<#B!{a!cWfUak zsS}L8K^ig`P}V5+xm5DHNG!TqmsDk&{dQ`$iSk+B4GWs#$LA*7Mor#8;hxV1u7+Hz-u}5 zITI&c9No-SUs;55i{%zc(Y3k2uvfht?00q8!E~#Kj8&c3=dL(PN>` z@EN<**phzPP+a17DFS3eg@?7h zzl18i?qGmUFGh4q+78i~wEWGbMVBK_F+y$q906#i4Sgc51VVXd=8=m4Rl> zyOS)jq||uJ+7^5&sARJ4A-13pzrTpdn!{_8$;w9S`Ak-rNp;u+C4ZF@mw>I@Bod2> z3{fErbQS(;SBOI!?j*E#1M+{`-1@DIs?8(-f00@cgb2*jlWzxGbg{2Qi!EKQf)?gS zqOA2aOI0z-S%m`68}6Lf8F|2(slCVK51J*`N)lrzdC7!op+&0txTMS(xqfjr9m_yV za_@PxQJN1|;um9TL(wNDd%cpFrOV7IHo|d~(nP|iz!R4Bbx~X3G@F3|B>*+nseG~k zHHQ{FhO(3C5~81Ui{E4dkYzU)=}OdJO(J}1kQE~g6HSQcqF;)ZsD-^KF;mTp6U*rK zEJ8c_ndStlG+bTx5li0n+z6}+@a(hn6;^`{WY(^yDS`F>z3FKc^`(Gm>z9WZ>L-ep)5Lp64YF5S8&F zuLL|V^Dyw!OOikV{&Y?Lv#fPDF3@XIn$#m(q%-9;AJg74^oIprk(CJ%dMn9^=HJQ; zcye@MPIPCb^QpIWHgrLnatEz;P+!t@(#=B=9yxExiyY-^pIOrHHk2+iv-3;3saI)% z-QH8wWg(t_kwta^Zp{q~?bUG0T`#sJ0O4UdgBh6EEI!NnqbIS;$r5S{?L7rmuAnMU z-D=2xNF|G9#O#js^0RgxdL^ENk_p!=Y<_TlF|SF9B)eiT6TWUyO5+TJi4W#hWU)O3 zRjweLu?{z&{|tPz64)Z`?nq%E5&Mu1XBnO#T+A}^hnQ=1DQ}a5nwj`2C7`zV6c4qt z?9(T+)3L%@DxY&&7vj52wAgY1RVC4)NT{+2w@|#F9CRi*%=qb!1$jJBLzL}^{MaTp zBNWp%JUOj)mjbIcm9EIEYKm!lPjSv06HF&ObxRHRy&j_YRDsRgPJc~#UCpai5!Rw( zJZO0lh*^3v2kmj36oe1JF$a4_1w@aBvRijcB>+{yTTmD=2`nmn%Zx1IQ%mqOH0#0` z@!O0mxj*J;uVQGGor zpDy6?Q$ki#qyHKQ4ZyWxifyNW3eTZp)vdfjRm*0eDkk3^f{Dv8mvn7v9;p#UuvtxB zqza0*#EZ01aTS_H_pnKx*IlYR`s@pvsG{Oyr;5mC7z2_%mx?BtFx&z|^wUfz2{mPa zZ!ne$Jg;o~pVp+M)RSR4E4eTP_uo3oZLP)w2tq(3D`s12-AUzKNs(r3Ic0T2Nh+!p z#u6lS=Y`RKpjM*Z(inqU^;5+xZF8F}?RJIW!`<0@>vFdB{pD;|&^-m)?iI|tb+|vT zW%s}Aye>=IeBYF%V; zs*091vESt$@A2O5uWFnEs1QMB?CsQ4&DXX@2 zrJUPO+%c)by>;~rf71Dlz7#>;%L&o;7oVIUO1QvdocB2JJ7tmJPMsTvIdkJ^4adpK zWe&V`IEiH#gkjPMqjhZ;tRKO`TN#4O82mQJPYYbPR!O(V$2a4l-i=qNm~k>&gHO$ zNB5kyDFY9?qhBUH>#fyezyCIBUG%#BUnUp5%d>8Oa^Cva!Ehpx$}H0Dt3~P=MNTfe zy-qQdZvS*pr$iO6fz~6q5ko}-=CFbTQHWtHYZ8(8n%`X-!=Nv{)dyMzJ%pf2z~aU` zHYQz4G&&L>!tDMusD$8c-S~57Np02Fo=-c4j-9z6A+Nav7_P49vK7(={P}{u&*}4V^NCGS zU)Z1A50EP+@?R53F|qha7@4L%r3w2}Qj+~d_SV0!VW@@P;v-w4eg=sdmQ4aFu*YvF z?A>H|X|fWX@+eg+GrbgeEiGh6;~{z=j)v{w;9Z^Z8~xE9^e)f)@o)OEk@(1e104E} zPK^E;zInbO^1Z=Xx83SZ1{bCtOrHM%1Qda2`6xMAMCnz??u3DD`WYS(Pu_$~jZ8AN z-?WBD4}eOeiK*;7HBK9Uq+)!mAc>J3RVb= zng#By<_mRI8!J{j+$Ei`B1#?Le4;&AC;G&}PoRKOKAL=D*R%EVZ(5@_mhkkX-Ba7d z3e2UGE)~CCGM`S212Lh3MuQ$qB5HQCrt1mLHAeUYGu%nT&}J>h>rl@sgfmXtwOGcao1Sd z69>z~LY@G_*LbBiYxBnOAQ3%+cEX>ZXLU2~{}{&qFXbJu7k3zAi_9DfIbew*$zBox zYRKX(X!`LP6}^;<*Ra473ISD1WVd~C=dZ}Zforey15+CnAPGc)T!H%u7G_qI>9n+u z?uUg9*C9BP43`+UbBuFjh};|stNoXqRC~547zzA@1mXSR?aO&~i6;joa}AjCY&f{2 z))4GA=<{rRaVagV?m5*q+TC%S*6?SF%dH*EI`I(w1z`OAJmUjakfuOcucQRvnn`PD zwG2dn)Y}O)KWwr`0{=E7plh+o6hZ`ta@hb2N^3k;t!Da@)_dC>j?1jZ7!BU*>KE_z z$#~vYb-c-l>R$98+-^1ytuprxCoV=@q4J)xGh5kAh}uXHwShme3(Y5diXlwCTC!IL zluzof50Ktth{|;Vm<;>(MDC+IfyRMfAX+DRpT(&`&r@!EwVe_T#@TilE>qj%as zd8kD15BdfMglyfF~fDCzC%B{!80=2V|2J+?W{?8gI6Nhq|I9G9yQ2o_Zeh ztZ_wu2i%i^s^YA~zLaAR0sBas<7{v+xFHuw`Kvk!@IIQHjjm6E;n0`^#CEFz`Wv2$ z%1IP&0_QuZGY;fCS~bl%UG8&b#oC+8U9wups#@wx;{CUI=5?~nkgrJtc3!(e)UF`1{g!qE8X|l?WSqj4moAH!5FvP=x z^_c3u?qQpv8*`N@0dSGR@VxiQYq&kaq6sme zsx)OFnZW$+drffaLN)%DA#lIXkhodZbouLC?^ODlo;WHpm;273?~947y|26Xy@+E;jcSQ79h{1Din* zI*e2k2Z=5fZa4%{Y=J}J-e7P+TH_4Uof58l)`!?`X{6r0q01<91Z$G{RCWBCXs6h` zmCTKWG$PtYgXmd4zUeMXn$-kd<93DU$t~KtxB$nkm~bEx6mmfsS^)aR(NcfyLS%GD zli}dq z{oAbt$l;oMqR_j|H$?N$9=@H>PsJ=?far$1pAu1UY?_=52E81?=!UqOGQPtJp@<^6 zL5T_;zeSqmj_Q4a)f)c7lCJtG6sjVA68B1#bhB#;W&|TUA=H^q6N(9+J^VVzwawxk zS9g>CDXE7MIA?(w!AXPLSahl`9ICkS`TLAqIa3?_=RIJ~ja03y7bU-^)xgBF4S zsNs!&yQr>@xKZqWf>8w-&z6UL^;ioxqKDk%gPI9MDs{3n58%z}z^LWcV`@HMUL=dj z;;H@kJpomwm&4^Fu8Y;40&k|cMK*+KHPcHHtbDQz&reyhE(*p@upIBbHlOsmdtz7! z-a*2@Gt>yf$CXpA$?3BNtS}yh^n}|lA&}~iwI+Sks(a+Cr;nb_6lY?VU{da?=S2Gv z0AzG~hC!^p#23ErL4#S>@6tq{A?`KPLvuX@>v?CuU-rbNkTTz-(o;l)_Q2rw___z; z6(y>x=0Mz#6lFJ&4A3r0N@s$0`XGE)*jA+bCbyq=s{3Zxzfh+mLew!O7L`wJr!!k$ zWuZW({vvV~QSN?%zD=jqDb;I4 zO8S0c&x>E0^%vfq&~~YkyYgn>#EI%IxmsZ)s2kp2rU^4NtLqw5h2=(q+;5gFNzIA)R5pNRmlCFsd7wh zCGdH^Cbx9vtd>h3u23N)Ru3>C`WDa4ONGGiUJb731|T$gHIogK0#TY5(?IwfM{WoD|XJ+tiBlY4EKn#d(w{ z(}_277kzkIat``mrIMW3>v`0YO`b<3aGmE-34G8>APaoSNY3({smh=h)Z>AvZliS_ z%ST%|mah@ZdWCg@I-)CYP}=X-;~dD3>%OUmqwpFS z1&Z=d4k$(N7ACY7zgM0cY+y%JjTx#@PEd%%FGKWDBHkHhrYN#FOlZdV3d#*I z$bT;m&66d{(d1x^Ujrp4R~nKVs-RM)5b=vN)5P4Bh5M`2SxI4wMEN>SzI~${5+g9( zYX$0=`9H|JeB1?MeFuna&j&=fS$dw&l;jM5zAQ>G?-Mn&Tf4;_c%S~j6YC0_?1DAI z6?sAU0|;1!9peejwS@0+F`vb^7RA~ZIpsXXZb@pViYc&d`_`|Uv@fH($6kzr{W3-~ zi{v@#i%?lQ+7w}_R_Fo5J|kDA3R2+lRS7`8?rPWTt{GxVwlySn4f>0o#c zO2j41_zp}U2(U3<{>$lQAJekZ)#ylbP7t;6c_{9nf=&8%zz< z#n6Il6I~cAvvFDv{?Hm-_Qtz_Ocxcp7E+!a?E*T?7+kV;0{u<5KVB2?&(Fn_3vhuLy_Ysz+@* z1#p)R%TVtjs(x8_KzQH?ms3Rv8&PtjWmo$urf!HyQ54cOI=V5xkySr@7;;JTBQr;T z40tk>mE&bb38M*Hk*G4iq$Ou=@zla1>C+-NQCZwWa?P$CF#*6QqU_0DJpa-+kodi) zSac|lm@Zk>*cah8yz9$Il;mA111-Z{-?#kcZm4d3tJCE$Z@N@@TU=+1PwH*rnj+NE z#ak8A%HdJ+W^}q7eaXkbwL2!S_AwCU0SB)&u3bEwzfdoW%|3ln0vf zF}|Qdo2X}emv=96zVq9$1U=sou^b?AA;71`nNg-n)cdS-3m7`LWxZ#yeVc$5BasU& zjb|=2fig-3hVx*^$3L@N5e86zQ?48brBxteW~;JX5vHP5aoSmkE2rECxMh>k{gR={ zLij*-%xu`p20ov#4gNhw(1b~V#2F+jVVk@fqD2FFyH<`KgJn5BRSV%5jprkL@|dva zF=5XiF=5Y0(L}~0O+zuCDMsoCQFKr>F$Ua3hE-X;|;&cLX#g>vAK67H}@nK>Cog` zBRw3fC4RKLr{$<`7*Ztzb)}O6_oBSpM!4T^)@{DQX3s=O4jF_>QIm2)VJSkXREOuSUNGlt zg=~=Z8=C`}aX>QUc+&u`TUlRyLMdUQd@vpx48PPoCEP-T<}eX>nG#};vm zm}^x&1$RQfGn3`y%!xv=s+!R23tT@;;iRsbn`L=1SUz^Ka^^TgZchiMJWS3my9T<{ znde_o+wyYZ{v8f_JIp9$$E5~@+4g|{5<9sgN*JjW21ph;3~#MGq+(WnbBnV4S+Fo` zD^z^Gs<)#oYFI6G=PSL=?cny2%8%XA!~*^*pNDu`ER@&9943UBA0S+7v)zR=Gm*(v zp2%)617nQiX=qA=GiTuhR2ZFl_6MVhxot?<(_ZT=XCk`c#F;OnJHeCLjGsEw4OlIb zyz;ij;nVtDHnh$MZw5`Juoj4VB5*vSgev3eG@SBlnv0vYf5iSF%W7L2-oGnfOTr89M} zT{;UEtN9gWI=GoFd}WtiC-sKOY$Q^^RcMe@a+Te10TBS>e7<>0u^K=x4Z(F&dAs#N)~RbkhgH9N=*|_|L&1x@^I%Goi$%u;3Q&fWoefZNF4y_Iq-mFG4*@#-W zH)ywdI;=bvfyDk*b`%e=a`c=YjLb&Q)$ap0y7+p)4`Cy8UmI%-@E>E z>yixJ@Z+TCd~!VU#t!D515<*OJ+<_!7-VO~rWhIB_(4Qb{p|AK_;`Q1g`vc@0G$DX9S8w$#AdNJd z4EWux#78C_;cX@lh@#K+vKoYQ>-@wT!t3ivdzGjXe-!W8UO!#eskVg+JA6#)C=y6! z=>#ZhYU2cYu6{eS`f%smnovz+Ow|p`xXvqMiyRRt%2}pCLT6z&`J|C z$m54a?3Zq=@lVnZj9O&j-8}p-v8TeY!{5)+Q%%OSqD5CWK%diTOVt{8L05!1UwN*H zJc~@V;e1}2wn2-sFhz!KTu-K}NCL?=P??CTi8h#~K~+6CG{YIkfZ?zmFr}Z`typXl zI?-xbD=0v<#9&4hGhRl1RV&JuO5vy4hv|(SG;W;Fs@zOg&Pvv`MtQ1Y6qUvc50TGF z#-gbem3J1?;BE;w_rs8y*t5d23QTAN+FGZ4p-obsW1bLLIg^> z9%XkrOGuXvW4x9VN9JC{wJd$lY$8AcP-Odhjf~LD;;R|J8V`S~i6xRKK-bCxS=Vy0 zknE~pqS2bp->GU4?!|=(LCu1;C|g%QqDmlxnY7qHY5}SzCz*l`!6skM*+%mrO65cYMPHAC6pW8rE#My%osxQOru85?azXsVAv1dpZCb0 z>o1=jy*j3izd!9%$w@B(>V0t&?fWA?$>(19>8M7!RH6P%4q^8dg2qr~{R;L|!wT8x z@ZMM`C6Fo_*7D8?NVuiyz(C~pl961ab{XTh0deByj1`3VS%_)D3eh6jV0)JCm6I zOrOX=DvlL6XAgd_ZHVbsbGpDT0exvF5)^Ss}IUFD5QffnTTMS0^UcngxYQ zf623fO;GY=O%KX4ioJ#BA8W(iY*LsS5tP3ZCPdb$U2VPXW)>bUWktj>Et5t>%#1m6 zmO;#!vROSAleYfT;o)KZu)g-p&Cn0wQRXrBDfvCqvVbRRD&nDK*+ev)YE)wn zx<8iDH$Zm1*!@JGdZXUBZ4R?2!f$QU?MNo$Db~uKa`9!A+9FoC}59~yRGg;yGTpJk~ zaO`t`z!5TF!b(p1s@94uWY#iH7b-V-RcAI?-p;gHV>_V=Fl)}G>gUX%WdFqcf#bTh z=T3=wknB_56k_eRPpp&d36V9Eq%SaU;X%%(uS2}&vb*4w3r_1Kt1DtyxLOyodxGWl z4WXH?73-dc{MH|A>XUPO0dXiPvaahHqFxO}FWh`Gz8ZIZB zdmVfeoPSRnL`D4d;-@MY3?5U3g)^GAF=ZlgOPLLxM`>HebMT`&_IbI!!do5t$W5w8 z_PICqQEjnuSNx6nsuH$ZW7*SAW7KjRvC`UX^lh@x`kvGq^Aq0*ykD-;w>=-Z>VCMY zDnIKjdF{uwd9B3h`av;UhC}szAbH52FOK9^6RKRc?0A#wf%uIx!mw>D*w*UcK|!I7 z4|kbs8{7DiDkqHY60Ri#pmSfyZokiI@vU3!J5+&H4!UO*_&z!4QB{!&@D3U1um(Co zCHp((Y}7b<@srq7dSs*fVI!*XwqQ4!hxYgoI5uWUxUm zCI{Vv_*1Q!?YIb@b%j;^P=CI(u=>W>ELVj^j>&NKj6(*>D4hmsD{GfI+*8hgT7P0Y z;?C!&@!|!)@=ia|-_8QYlSi0^Xsz|b`1{O{WRX89C2CB+E>n3k2P;NpFHXrwT-HxH z5MtoqC0y^WK?LherptP|=K`*ig3I5SfQcWSRve6cvoh zRS3ELrj_F`XzzlkI7F}(u_vzSEM}qw)0(uqyuqxR^lMfH){bEXo?lL>Ah8E|YVQ+w zv0Txi#0-Z#brYn(hQ0U5Co{i*;qnJTa$hRvH6gA(BuzO;qKK5LaUDk=o@Q#mh*XE$ zloEu6^&lhomH~y4u$daXEEv{erb5t$teF}_6~NHHP1clS*G!CNK|O5`@Q`{+uJ#G`4K*?6 zvl~XR790>{u8`ci(GBkdQ6A^BjjknJKR^k^4^qDS{^a|YufOknUq52KlB;r){9auC z_aZVsEm{nHnV*= zSBMv!1M;7%FoJkIHpzU%LQ}ND;J41>((<^p#6=#LmWPen%^ zeDR-fBcG-6+3KfQAwUsCAm4sOZYdt{0K0+(>=2xil8%8S96BKRJ0MP~q}-Z24sXtg?I+&bx5 zdMmBbsC(82e*uj^-G0Y-xGJ1D1j=VQUZP_iol?&hpO^3o%C_bsVN%IQCXm3Hh<)EMYOku!)~b}vO`8U zSpm}YPe}f0c5ZT=w?0k$>+8^oVC4w4R*>7=q;mi-O&1)K(sL&a?bzJVODkRl@UCN> zg1n#G)4-n;_dU-f%C58rqw5E_59m^T#<_L^hrY*BIGXe2zobIDuk}!{(^WvBMhqws zU>h5Nb?2hD4%5Eat0IH-~5fyW_cRxXPHICDHIEtsky8>Wmrr4(O) zt2N_$=36Yr0?=Sph|-R`z#B8K(=$ap`Gdmh9Ke8=RM&~`E+Sv$$9n_1OiZL^8t&?Vrdi-Z5YhY`E`{5>98@E;~`Mz-+ zS1oI8lYu));dfw!pXXc`pqIiUrw<2a=wV|;g9q(tY*F6cLH+P2@wapxCgU5b#jmIe zN2U5lDj?TT$lI-6`?A*>Ta&ic>rFb{(YV!bTl$?SKxcC82XiW~lA3tngewo$JW+sy z&oUR`F;lS9uE#5gn2=p%v6{ci*2uGZPFJ$oj4}aR9XVk6ZR$C8kcpQp5(Rg)MEBA} z$gw}Q4(;iheO$Ey<(@z8Cr$&^_Sr(sPd%~$)f5x@p{d3}qA zEUyHskDUTdOi;BLY!1cO(4pX2SC2}u&3YrUsYV6QHd+-t)oE7ntgBtYLs@BhL*zx) z5>C6!xR*-&DH_1DN7j2}J#*G`7PEK>$ky}u1wP~i2&7?0B79FQ>qHbEe-$lP{75Hb z)ylL7L=@c8=a9q-N}}?!oGP5AZ=K+dT(R56U}p#!}`t@`oW9YPHc`mz84oaHSC}DTjy5&hjtm+K-oVKI&q@%$x$}h^816(t8yT#B z8(X9C%i87j5y|Juu{kvA${KO|c;2D*rwe?Ktp7ojbYe5Ag^DU8TtlFL5-|wB& zkDl==zx=|h?$a;Hj<83i9j)B1A3xLU?*E=MuHlLf?6v2wLUQHVi;uv3u)rPI!G{%` zolyg6F$H?jFOsHI42###$ZGL%0Xqq@Ajt8!9X1`h{XKjr58#u}2x&f$mFcJ}m6KDc z<2XyQaL@-hrwi);twtlSBZnlb3wq@vy(6LzeD5+M(cRJkUxAs{tGJEdbNcgpRb2^T z)5@m&f8~DyU$v_hKSkw}f!*tL>7wn}Gw5mi#tshfZF*|Fu`b8fUeWZG53E@)_}>|o zv&6Cx%7TH&?Q@?92Bdt~_i^`4&Xo)y$UvMlgrF$zC&}t+7MPrcjd$9lZ)UxLC!3>dA8(iYSouEUl@}Gy+>33LP{6!(O6rsl39&+UI z7z_9GpNVrIf8pH$KoAo%lr*>7bP_svpw9=^HTK^aLfxp7aNHnzNGj_jF0=WaRB6e( zSu5)#EMlCZiB6hqR*l|tPsfwf!SMXD*V4AA+>q^}y9?%Ar0h~bFaYfv+cZLVgDc)LoV8wj~RE<%Uf}OMPlkA^%;_ogeoF?%(eTK6nEe0gS zr%4*gPr^l3LTJ41aFtf^MKQ7zRnSUE1q}nWjIaigrct1W$4WS$q56#H&4R3zI3Qq! zL~JX?K+Z(EJepP3u0gt=qNi(gH6tV%_^sVic4Jn~m*l++Cla0aj+37rdGD*{y`$Is zu)>`=WRK@Oxp%f}m9gDX^3y|MyK4&Jk?+d7ni2h6EVo~l@!DmKS5JO=WW2AN@m{@vJh&dz5&8Fvfc+w7f6Nc%>5W#UtbWAsA1!t6`AnuXX@%K##w#H5%zraXs37 z3%lRO?oWVMe}0bF6yVRc2O}8%1>pS*Vf8Mk-HgA;&mN`m3Jxeo7sJ-5`K0rNeP9JG zc5#7pJIyEEC*&9Fx8{?>!}=52E!x566H0-=vsYK(+i~Iqjyt`1LV8yJZ2YGA7GPA?A+dfLQ{n1}6BGCodV;(JSFLD-m%|fRApv^{v%7K})Si8+**(S?T$eMEJ zM38c^F)3ff=m0yAR&eFGQ8>4$mPYoT);@dT=l%a;|Nd7D{Z$N|at&vQ9R9G@;*aiv z9g^ZqUK^c;0tYsUA(F;2@Ttb>-4V_ef+^MpexxvQI;{)am9|5^+qE|IV$$Q@Z&)0r%YX`HAGxfj) zf(psM0F0lXXMDg4b`%Bf)ha6NQTzOYeQNU$kga;svsxFE->lY9?_saiKf46xB^_(j z9(FIrf|OTw=)g4{4BY+%udk0ThZHPjzR|cfwy?g{>5d1(jy0seC}Bx!JnmTS9>p39 z(w}czy-Qk_iGNI--DtdGzwkQ+{I)wBBaLV^Mz1;}EJ$548n%ancXe8T;E(p8cX{5A zf76eR#7F)cK+ty+7b;Jv_=+Of}C_H^1Gv=ArWQv@vn=B6!heL(7EgxP_RL+ z?jp9fe1I*((EYG*X8S4?4|Ay4NKmn^Qt{=n0nNJoapU2Tt$%rbdOn^EPESYHxDv|c z@!wGqOX?E}FXamq)J*iFf=EiAP)9De+zw67TT%)r%ir zey!x|_IJ*EFAB-`6%%gPeD~uYg>YzwOssx6wR*yG`Ng?2APb~Di*ChMi#b)t!*2iV%ae6LU-jRXld|p4 z9C86X2#yohV&>WlqQr378{LJGGbg8hFt;Oe0GmP5GtX#V|CCAmOe!7;DpI__{z4ok zgUj)xZS8`jb0@m-XGZjFjYigRJn3{#Pbo#q>1r)Ph67WVWtw`qBWFAAL7po z+EYP;j428m0G8Z(sE7uwwt+d&i3ghzpv}S~tbu*wL1KSCIxENioL@9?sf3}{IP5mz zy>=tKkG90SJ+gkiwE7@OXxYI9+@$EmTR@djqG!Fe3^YtV)tnIpj<=*h>$2Y+Pk8@m zX}X`IT;M%ITZSm53R zH7FuOTZN84g)=b(MZ~WfoUm~R*q#&7_YMI%H-D@hqPynE>RIhE8BrayXOX8o_ht-^ z?c<*g2j@h8_3n)|w8+#8@f1lOc5*!ohn97heW4r>e+l^Q+a zHoK=Ze!#)+t4FphhKckA&j`-y;OVULG~reJot^M%-|4IPJ3kUtztdOocYgM%e#cjF ziOAQ!LkapS{?6_TYTx0NC@{3zR`;!j6GNUd;S4)VQt?;T8CQQv;JUcP2RLdZzl1KE~8%e!@{SF?eqruDRln6 z5`hD6?C^#};9+FOOhtB)5f!Cfq!18ao>D}&+?z@-NcUtdzAB)~R@Nd{p*0s*V`EWX z>imP4iwu3CF`HP6@RV7MtW2@h$jTI3j;u_X^~g#UTac`bZZNnwgC{UuCvyHaGhd5J zCZ;EAs>u9=5`TOXRA((y3lyGmE0mQgvqV{`GHaBTDz`{kxiYJimC_k)BUUptXjy|h zG-_ji^lFUSoB)R9>&Th=iDJQ{u97Q${ukY{I0#0jZ6m4j7nrv6XWx29kpTUyYC|`d z2(ec3b~3b1>D;BSu~0dI#2tPIlMETHvfCQGZAhW9p@v~ZgZAZ+l3;8|0b%zVl$cH$;PJs8^C{3R8OO1iE44e@B zbyzU8s(OM!L@`?xYlt?fCoIg?K=U6r1_ZiVGN*?Lkc>QsMUTi{2!A(o_}Uaw%!SSL z#A4SDQ>@-hkg!2VaW8Lv?eBz-gdqOoa*>+C#RSB*Jd~0zrf?D*q>4AmKdQLN<({;J ztD1M(VvR}0tcp{5K(PxybR%j-z=9)GMdUN47STsv?$uy^bP?3++G3RW#pcljUX~*~qBg(h9K?8c7c(kP zBg0+(t!+fw$@-@1e;VuI#AuW+>@d9bgBfne8{t`G3!3aW|Bc~r@vehs2{~R$0;8JT z!}TFJz$eljk^W#zP6n6#4&T1vU*c?g@N?p?VDaE_1RN^#_8`JFIGV?S3VK;l35p-S z88vl+faFByDtqXn42d)FKC|e_pOu&s@um{|t?ni=Owk=4mUX&ru<|)&ZUYz4=7|OA z5=&W|*9ayz&gUQM^tDp{gA+}zRv@DQu-JV4%)0hcB(a%8Qtc~8ygxh?U!cEL`*vVd z2X?$Qylhh*ENAJAD&<>Vx&G~q^(9uqu!F7N2?n-+)PO$A$uXV44UfsS>p2s4r$n-X z(WQ{R!^0Oal9jIygZ^7M(Bd~4TD^-mEd!D>jYg;wt`MBCbhJQ~F&Tn27LDC*I%bj} zUQRCf7Xz|5GJCp_Xx(-R*~-hl1Z`_~XjinN;C2q{Cv^^B{X` zXf>TK-Mp1&oV&dOp)a!Q5Rt&>4wjF@Mpo^)KU;a}#7FF5jV_|&%#9dng=IYB>}?%p z6_Ja;U)mqQnvtQ4hTxPH@m?P`!&qZ5R6ly~k?VNFR(E7!FVP!_vxXRV!B|-*^T-Zj zZOsTeBM)^|wW}(OpOTZ6>&*zW=k?u~cw@b~_TV793)!3{70;bFi0$=jpjiR7s5#FEyR3EF}31))e!>ayGGCYn<6=;VQDN=Sll zO;6I1{;IU3YV;$W01rVsqDykcLYyz@_eDD=cQ*;o#hsKaqAGc z%^d}IP>g=Hr#G(i$*Fv>|J*o!Nk@Qb51hX+Z4pK}oq`WA7vkX26=n=x9v5UiIv2?C zj;MYX^32oh(AmDKeO=Le6liA@j^KAsw^@9`S26#b|3v z(weX-!6G_ldNtScoDa4K=&=pfka+G#htNfDP6@S|d-e*l+*LJ_8OG5j)<(f0GW$Nw zhX$zD4-4w57D}RSM#5NL7n#x|*=*{ge7K3yws~CEh%CXAm+Qi{8sB8HucrHK4)P&B z(3~d4Bh)=VyD@G7RxFdpHh`0*JC^=IV$X$M|2%cm-uR0oL?1|qL`?mrw(mpv|MQ1U&a z7?Kb6GOX4(RHsxkwu*5LB;#SLKk9MipN}h5`7bXntRZQ)MpkBi9TF$6az7Ig>d;UI zEZU?AvM1s|x3*flsXlWE1iCCs$5=;2Cx~fD0O#>7Z<2O&;XvA&N6bJlcy@9F9s+jX|P>n1Hvc zhIPGDpWCT*DkSYb+-{*7;LLekqaMl{l_oD|TS|L~HBA~X+12(|vyQ4J`CGH`(vazP zz;jPY9Trc~LUn-k-RC4L#|BBhQ%Jne%&PuyxL4ojyWp95FQ)R97w?3NX~Uai!kV9B zh<6~^aS!})5^Xw(Qd$Y4Z9z^=(sQn(xlg%o=6--{X4UcDQ_@(d(}qqbey&qp8+1i{ zW3_)#*s~7o$-SSt{qDHi>eV!a`#xDXbUsrKg8dhFv2vhmJe{yZb%WW)bEEz^H@=d& zK^K6h%8U5i4kt^jB8Ltg^ckBRu-(Twm|VMom^1JiROZIZ|EO0xe~yCtpFfQ+Ie!|D z^XCsXf2d^`7*C%DZWCxzZZ{L_4{0o~Zzku>10w@@V@@k#`q&!SwI>1uq!wOqX5sUN zS3(;pIrMLdTXSlpb#io!4xA^*y+_9;t_jJIKlkYQUqS`-K7c5aM;n9V_-%asua6yg%GX}FW@+w z-CV#Edbmok41739gWtI65I7&4&((F|Y1SEfVm1i$Lh78JSx8ET{>&$x3*S-JP`}fWd`+NUB`(gikev6~q*BcvM zo}9xTtTmE%Bje7m`6Q^qbgT(ODgA8+mqz#`8Pb_;ZMGPOWOU;=QT;nu1z)#2l>I4l zv3JktlK70ShtEj6^NhTBX|gURW59iBm%S{~C@Um>{>oR!LKMZyIH998H1XVw*GDRq z?7%EK+XG!C%_u|F)b;3MEoMeksdA;fKdL~8nRS?j>d{8j*ftJIp5CxCBAD}qDG7?= zgg!VDU~aN<0*u|rbBwSr3J+?6y)G*^^W`nX`F?$R6N+xSXB8^B_u<)l_+tj3N<4dQ z&;77q1!gJlPc`>CciKxAfL#i_@FTAxsd=fBH6Dy-Ze4oj-hu;i2wEA&Z4`c|Tv7gx z{iDUCV;C$_EEakYEpERqsq zV>TcdM=6#LuLbnpY>*2ay(5o445 z&Ib1Pl6HBk=Df)oPwg!I`*;8LAOHT{|9+}$D+wClb`oJZ%fXfGdPYmc*P~BeI=$$; zj>vZmc3wDTDQlY&QvogZX>4^mqz*3JvLU59>yNB1KaJjWPseeAo<)D1{3bz=i(ad3 zjd*b-Ds|BTlcGP#qosP>PqV|N9G^?3^AM7Iu&Tz5(V2s^N4$&Q6?z574)rg%SKiVfztKT{-qw?;Q~3udX~cwD(!|A4n2XeI)gR~u1h(AGBZa* z-$iBM-gU=slCJ%N4ziFW#OnkhlFNE>wdOt3uR2y7b}!ux6DV6n-qYo?DFijFLGjcy;{_zPmL{kaENJv`=Y{z-^ z`}iG*(mNjT&mzfn*&c*A&YnSNkn6yolTqt}Fdqh3NMVmci(*%l8{TlwzT#c_Y{b>8 z^_aip3vSSFnq8&@Gi!Uys=O!9`jWjtm4yk4AD$rP(*zh0V?N3mgsZ*Fry+AtbC(mm zCX{qdgA&3q&2eD2=Ek0Wq*e%C;=W?n8kT{7cc}iP5G^1?~YI- zY6bfXc*Pg$!<}tX{|SnL^N;7)OMZ`Ag1U*Kpi-Eu`11M=RD>FFo}HrNeD|fuBUYZ#7`aNa(0f=}+$FzM8W zV)7{7n`gO+SWmG>n+nb%S`5dN&S}>&NPbDpB)mj&ZBL!oWQ=a1r>^78*oJ+F&WQ0q0qJW-p%T@kcY0)VPFU-}E&n2rT4cg^KrCUg#H`&zu3 zdIjI8nm=LFCsA!^or3)-T!LAd8B9UFdKkmbZ#APHl|EF|P$59fnB&C8dtK-Fib4)vyCvbBXR~D2sGnXwqVqFlF!@Uic_G#u$C*TCL zM_}th22CPx+p|47DL#E>Gq$fl(4Nd2>J+hw(;{d<%ykT00;azr>c#<`<38C#a?YuRm zthJmMZ%u~Q=&}d0cXB!yo?rG_1{x8lU~_67;1b zbggANWhC;m=non)*~!K9s!lC;4JPMNCRKH9le|=O<_9CGBwu9x z#9xUNPlS;5(mt7(chKBm}aH#(ce{_tqHG;-niG1R7|e!c$hh`uqg%yN)9J6 ziq-Xi(JndfDC*cL@q14n`M6Zp>k>LEj|&G;&`bdNIr+2x$SIG6Na>|R%pAw~l4ce# zX66=%r)m^is*Mb(u%CeRe@BI-f$UvOgS#bjtb)8gCMs((hy49*@TT!o?x0+}Gr+fH zjmU+>)nKXJRu$#PL$uwv*PE#!1;`I4{G-*`5gE4Ku`MElzImHOQ(3ri@=<|5@vpB# z-I-D@x`~o_?@)WNQ7uaz^y5;z3UD7jO~kEf@n?5}4ExWmK4`bOZOVjA4kIlkHm zT-!Q6k)AOLvgHA?op2&#Sxw%NgbLujL;u~Yzu4D4OxQLORf#D}?1|D^Dn`L?O|{Aa z@(z@WQz$59&n!KULd=Z<$`5*tJ?ZtOGGY^N&Nk?udpeYT6}TiHBvzp7ZBRen)86ls zlkWJS)$b@H%-#)#v`Tp69o7qLAdBU-ss4gm?|EJhjs!<*ba^r!w%TJ-C#S=~d4gbA zNK3$Q-T-JFZmpw=OJWrx*(zb%@QK zv`y54pT3-0pyT$C{9d-%cgRD_x|py}ovqQ^c3DqsBqUaHwg0v142^rah4m@}Q1TX5 z;f1OPbNi_QB;c2Z=-#UxWNvk4}C`=IGOtihZIwKgS~MOD3k zNdFLM3VqM@!r3frd>otz$4ab+HS!Li z+(Hn_WXmpK&}GD=3aW>yNltqlwcuMQMcNWLLy>vIV2vi<3Vyd0D2rxp(1g*V_dg;Lrt|!RiZ-5@dY>$d*b^(zdwo%1?~q32an?=Wi22J`OHIXKwOWgir&hc zjQt*KY)rMQI=}yW$kWFD&TlNRqSDFp-$QckE@q*Ww!nReykz^l`#A+yC4SFnliiZ| zUA-ppJBQR(61>T(vYrBrU6^36g_$9*ZaB*ccS={CGh@Z8_$iIQH=O>up)?hsDp6$}Le=K$u;j@}hLoKAqQ})?OdwWC4A9CEx z54fi~JnQ@ME48Zd(37l3&6>J`n@ur{sgh)pFb#BEDTaVpjIU-RB&&yGzh3z zOBhq^dZFlFo}XAI>FoJZ!2|towOBlq6zh4k_;#0z6a~x|j8o4S_Q=fVxf!XY6kA9} zgxPjAIjv|lNfF{ftS78j%&vt@QMZm_y~ylvm=hD6FFi=>%XU!^Qf%{}d5OD65twxl zG8sUgP-( zZQMOKU{@i}@J7y7(rk^3N%tzv7#+S{S(d=xT#}6`OBi9kt*{zbB&-scJ_u0-ebQB5 z7I!{`9P2atjw`@=Xj=Myat-Mi*u@_#a;+AbW<%lUyRTjzABxjakuNJ7c7|e|?qM@k z?PQzsHM1c0JJTey@-2Y8yAM6{wAD4>zoCQY2bT+=6ijjcXR38Z`0TO%2R zXpgAw5V+Bu5#HOnrnfHp-SLF?kCsO9K$pPN3Hu`5UGUx*?dQ1LZuP36%CDDQgS)_| z5G|bQAW`6ZphdOeUNkiXIqw_LXj|8HMv2qj;9Yw>G$9l7L#&2K9cyePA39EiNf6hX zHAQahCX^|iHTud2sHrPmNJYPoq2id_7Qgrsz&Aj8R2GL03r^7dv3A&iZzHQ`wZ~*c zWqQw|tBtrgDL^nmk8Updt9Ng#p+%-%$ZzCvPbYru8wZo3Yz@bn<5TuldK>o8x##01uMRh zm_x}!I3htyh0ZaDZ##w;=bUCUd&fx)ud4jgI)gAMC=GeRw5+w&P3 zC*6K$!Y&WOuIY^UETM7$T1W)ClZh5mU*oD>#ac+37^=C4m~G+3v#s_4Ye$FHVfQmP zTsR6)q!!(JoWSBtT)7MMqS5%lh#=eAd)(4ZAe4RQ2rhkN4|xaG6(*R>0_Pe+Ld0{J ztu;Ih14LR;%_e^m+SDXLmd>m&^^_7BHQD8kkVD9-sg+P6L>w|N0k<)PmqzlvS}n|~ zh8b0Q-M$6qx>=BOyDo6g?>Z|{6Q|a6fDT5#ou3SPqt|%aKtE$3A)S6YkJobQUeiI; zDr<;PyD>4+AaxB;|kU0buyb|s=!rYsp$U_1{kJ>{EPP3Vx zv%)+qLCsQPP6%b+?pa?ggjd*~0=X0-;Ihz;8xe6rUEFhYVe^o8K_CXe)l)8w;rNm_ zjr`zl&-h9eeFB}Yn>weL)fX`?%E}QE=~JhvGejJZA$z(cx~0VZz*1^JhwRzX%myp~ z#Q@~yLg4!m4$|Ddqudetb0-mI9i5qYP)gVhma&lM_RJwGbbOpcw2eC_;w!pLK~8$U zza-I3;IBU1@QYs|&n*~{z@eIljY$YGpwAwWu_B%khz}5weSoNh2}$ED^|Ry`sbFQ! zZx*W~Rp}t$KRBIQ7Z(&C5#)?bMA}|rBJ$ZlIYgVpLiREoJI6Xe_&Cm(V(e8Cm7qm=i0k8D&E0)Hnq#)Nc+|gXyIFo(GMpspQql6&JmbFe`V0A zvY*WkO;V3xvQ1u|(Gmg^(<#L`0%Sa%mLW1QWiVek3%`j+>n@)(ytQ%~fC>bce^>~fEc(boi9i}6pFBCGnD9xCot*hnir54Lptx*PdylYOjxz@ilF;8k#BM_L zab(?RoKE`y8wC@%H3F&PX=8^P-~&mWDYo#^VUiBwCxsiHOZbzurA_p101*ABHrefQ2}Pdi_!^ffZVphN^ocNWH5-g z{ntB$EkN*#9Ka^~gQ8j9KxTS^Ox1$6E5F-{(KmPj+gsk)Sv6&%7W10P+%Tz{v_PtY znh>V6f{N9|&FxzbK2T$=I&N;qWF4j#v6L<>(mo4~!F)})r39cwaCj`F2Zm=$s`D9k zR;3n0WDW!V;0ZR*j|IO|Rw~!tr0hPK^d|nBhgu;iC4(9ca%ezXSKx#Gl){LZ0; zqgL9}OAAcn(!d2G%)W%3n0h&-J*BiGgDD0}a9I$kDfF0pyNaC0{Mt5-u^$SrRJduy zZZ`!E+|z^5pD57515R=8GST|#UoMAy9yyGCxeS)iHI%)~<&*Z&8g|8)1L9)7zlE`K(La#?vTuLDh{Y(0r%he#hLcB@}ru~aS`(MrI&;*b*JKj@2JovPeyyFvnr|!DU|_ zGN)|e19AOVW+LdbExFiDOXLy~C9Gd1Jf&+4&Y|w)v=gy4v?xtS-M7}H-J?tcgKZiM z{@nlM5auMngqC?A{Q4T^XvKo50AVF!(r9owY~Pb?%CuWr{ogi}OC|_flW}W!mY;mr z0Kp<5)G$C0B*;Br_Yb+w9! zeGP>3d>=oFBMtO?=ebe48>==Qc*Tk5`iIwMe@R3fY1A<|+Z{3h(X?7PYhb0YMKty!}!xa=f7KwSerk`Ve@ml;jHru`nt;hEvZsIEFT%F~V=@1D za#H>SwLiHqj2KSRQ05=f(DBEqAjmFq=t8FuLe-kruXIN;7_H&VPTsGy#$=1b`< zsK~!`OnddD1kUTJ%B&GAo!a2t8>^oyBcM2@y+fYan^Dpz`09Fu-*gwZ{ zV<_Eok$d`-3>K7HOj?IB0?LvWr4!GFz$AFfHI6O}Sy^ zpBJ%EVtU(P&dVsXa>x^j0y0x*ahyIm3~ z5TimzdbGd3b^EK_q)J#|?e$VH|GsjkA5lI*97Rg?nHxlRbeeu9tV=BJ zDsX4q7BEH%(g|CwZfsobuOOPD8@aaU{)0*d@NU0l!8yH9sZ04M&860_oT&v)DTmms z!M?UBWTlKg;=HkJ9+6I>`ckC%hkhB`IYyXY5E-2OD_oNF<0U^XlE$E!Rd7u+JfT1q znc>wL%JI^aG?X_4op0Ui6x*-K4U2UIfIg{tNKx5z#yY1;C|UKKEuo-&v&%vXlq|(3 zL3LeprFIau>PKcbaylU;Zsra{)egs_H{H{*dD^v+mM00L3W0iqZb5MpN0Uv4#v0xy zJM}qEP#`wK*T__8V6ASu<*<#bY5|JuQ=8g4>kfW^akj2_6swKhT))3{+DA{c!O7>3{sMrZ6u44|~4+muKWV?i`iW2A~xWuNh^vk>5(| zq}{Pj&)#(Z^_Sjxe{k{Za5TPr`|ka3fBU|mrJ4J|jj|icZRxPyI68ju^2b*{6#!c+_hxF*o%feRs+zMXMj7rK*jM;-I$4SUJKu?9P z2kNYrC^ZEhF4W`PvuCqJ@;GhcJyXEzNv;XhbmF))3h;<37dhOK3!D*zxw134mIFAK zp|=H`JGYCbHV4dHzOw*Rj`XmP(cmZ0J4 zisD=(lhPy^VI5dr3WS|~71BY@f=Y4$x2{6U7m*{_BfOhm`B~GD0+&}HQcoFhs3{<4 zz{a(7&O((H!LAh?rckqgem8L!c*z`%V652c^WY0*897Xzrx?}=_KP9H2<8akcUMHD z;MiK_l7}ko?&5}R8gp*LGdUY$4KH1`PX&2KsHqP=`3Lb{mDt%A_5jqmaCP|! z@?8>b_Wg)3V`!>iL@ExNA8nq_dJki#>ffWf1d!hPP29h2S`gbI^>hOf^wN%=4lO$e6Qtvf&i4TgQ9k*(F&C%i)el`2Q$z(QGERwaYNOJa z&6pXw{U{2k9}_}J_GsMgUs@vZJfAvT?&Ep8#?MmJ*b6wjvgs0i_m5;`$m&M-DfyN5 zhiV<3OFIDZ8lguwJ_Ms#_)KGnN*9eGC{-`NFFva;w6q6 zO~y?b8ueGA6l;yaDV_7Imdq~A>h`Vdp2m}-w6~`H)q8BvVJX7nG|p<58o51ECQtcf zRJvRFw9M?CT(Q_^ZMDjDVc%*xuSs)RN$zK5;;~6*fpi5n!$R~i--^4R&%B*YKVvmu&IV(ed;eDlg)x%<_Cw8>(zp# zx~;BNK>cZ(UHP`FT=%T8^OYdNlK2iAl76=N<_rhAXARO zQ|YXSC+$w-@xA}1?CF7mQ>DCS@pyi7n+gV=&6ULCjR9OdKh(6@s^>mDX7eAOOd0Tc zKZDJf{+klxAPm%EQlZTq^6fd+NQ2y(7Db%3rU8* zReRtic4y->j1i0X&dxz06-UCsksXbbbLKUqor{yv(vL`81j|rQ-XMGqH8Xf~%q!5n zmYRg#IkS8};>k=0z#e&++e{*?GnfqJTQ;gD5Aqm`d8LjFgwprbGeVH0JaJrgEeoWS zZ6?Y>Y43iIol)m}@V$EW7dT7OwIe>8#dcqkPnElN(iVgonfFxn-LZt2V>@b*x}!#v zC$X>ANb@^;&sah0;}5(!Rn=#YV!SrQ62x5|YDxMe76f(z8P^tz0lrUE=7C&NO);N` z(w6XmFQcWzU|~xM;R+AOo{QwHrGwV$40bD$rGo1&KG~i-+p$O%)P^yNU5|w(fdtKn zSPRd#>%R9OG}ZeVOBOW^{LFVSgt~+)6H08TbA-{^m>fM0vgwl;WHw#tl&KE9=r$iB zoQ`yi>W9a#Ui|p-aimP2#7Nl*p8%Ml{%x!VSJ$dUP+63HuaT=$WPf3P4|$(N^wSs+ zx^`sE`h<;<5dQtaI8)Ng9*C8Zme*B;;og$M zR^`BxpObwMRFZ!t?JpIH3=J*T5LG;+vC`00sIK<%q)4nR!tuD-^6U%YM*Z5p+?9wy3n>5)E%F#mnV*xgp zYSmqg$I*OcEfmWffRz4);#mZ$)g0B7Xtf6I8McxDm|o)G;ousE%N&OCS7canlL(%Y zo;S*tud)TQqz%JG5}xvfl9wu3EMr)O3nnjCuxP@Qv2em87f6UQ*G-xijk*A_EgcfkGMOm?uswIk+jI~#c%-LOnK*^-bJ7>~V z9ffaI^6lbmvQUIT^`ZqeflJ2pjW@*A!s_2Ty6UfZTJw3X95a&C*G9%y_%3#ltM+Ia zI?*av?9ypmdWeWI$=o%7Lp`k&9j+`#>l!Bp=eFwa==Tom<+o8s&NQI0y63~Q5 z;HPY&z52^^Gb|ZK)uBU2Z-({ba=zL?Xsi*qqjI5vIDKP6L&y1#Av7pXX`zuNGt^0) z`~V(I$_EZmnOsdp2q@y?SQ8&=3)Gf*QA@+8uV2=L9+?(Exgsbi5K{|CkhhY2)VttOB z1;#?1xgj;}7tS;yds7c05&75T^qjQc)*FYD82r9bM4}|~-=knt2%+Y{G9%4EUKqV5 zGk?08JB!F@wr?xp#@73B4B$a%1bG^p(xAzu`6$OQTJo7S*?STXLM!FUVw=XBXH#J(uz&<5Bi7B-2Uy1EfB zn%sCxwoGA=T@bb4_fL69ISlv0xETMcgSnnS0{J=*-GSw%YW?fU%#UOl_PwUn52HYX zuh+I0|Iim%{vJK_#2WkbDJe6sjUI-X@FzeDsg428a&k>Ye&UrJ^Td0KxBP@Odnz0@ zF~9wd??DV+55jQjiQfPWjv6Fg!xF8rUV<&%Y}i;gMFS895x}#S@#Y3b#DjNu@y2u6 ziWG@35R8LQEDapS#~yL|<8Z;=1RD+5go`&=IZa4YbXF|q;wqK8<2AHe9laf?x0Gj{y7i?~Q`Eq|NQTvVpBho0 zc+Z#;L&R0(4BLcI6!echIkMn2BHqRD`0hWWIXbecE)pq{@3B(*33^wq8j0A+69@xY zE)m;y2!W-YIS*eE$FMgs>5_`TJ!(D)JY(%=G?C$@zhKx!OrkA2g7n^W<;%nL{WxwQ zH}aqXs@vw=(@~vJ(UG^xX_%-BOoYLRah2f@E*lsmRfZ{^P;tm*6h@ME!$c%$JmOWN zNo%2Gp+Fo+7K6w-o--G>CoE!lI0@|Fj*Mwpu}*aRBWpO;8dD|v=O}(38n%mKT{Ju< zV>Q^%4w?%wR<3Ao6vw|7ZK~vN#=*fSQWWgz{b}ky<5N)HdA2T5RYe7Cf&>qq%X?aY zQs7*J&tehQ>|#ktA$Jj7gK9$FQ6c!zT@q?BqZC|lmqJU1)7_n*mT6DQrS%zIyX5$g znG@Nr7n%s_FKD7>;rT5{>nwDK_aL%Ow%axk*%BR9Zi_5oL_R3DjZ(gNsuWNvr-i<5 z>KIhQrfNc+Jsn!3HzY_19n|<_|Nq)dFDHno-pgiO1s5BtODdoDQu#~t+Cq;`3BOq6 zg1?v+>s=MJOude4$7E5TIOh82MBggsUtvyiF@ zlbL;&vBmKT-cPOr8xO%)forwEbOKyFxuVk=je0B*>7j}7VSnpYGn?miU%fm&JQQLq z)zfC23jQF~i5jn?b-kGZ<$1ajSXW6YpXoKnuChYz3Xv@fLObroeQKtf-`|0TbxF0* zcI(127Ce^=x^CD@$4Isun#-2+U8W&OVW~!@XP-J-OvY`+%r@x<@=>$iPQ=Gf$?zKB zxUIn1Dx7>ilJ^@>o=>bqcesRUi;(gtn81_igY%hWKPaX`HB$QT|G}i&zwv+n_wP`S zoyqpSZ_zsoLg@5|reZC+2t0X47E9ob1w zV%pSX84(#+Ydw@Xom_~v5#2fvu|(bOXOFi=(B0HW`G{){_JTDZVd^EZHCyAGvwQZ{ zbRT2K2|heP^SfH_KFn9i*_8gZ3RwDxN{gcu#6&l%A|bf*&LJ7K=h(BHNl{&Euu*W) zYqeqX;>>z4*Q~wT(|x&Cbo-gaf7czq5$^nTE*b%1H!m?IP%|l?awf`&1bpTf=gtd}Mo{2){uFx$WR!`)n}$jTwG9Cg#xUS*;P%*J<zU^tPuWESc6)gtwbA}5#KUZ)sJw|_dQQ&Ni8nAsikkJ~{c zavFeKkTqc@K?-Yec@q`DrMLQkG3OxbC%^K%2qU^i0E|SVBLO1J?oWe`5^w8<>eWj+ zfnJlFC|ZWEpFh97y{$o>(K%H)YE-j(9xmww2%m@ck}g3XpWnJ4-E6Q&%_klIcH#N7 zQ>c38f}Hv@M*^gx<`YZS{(M2-=k)ow`2^#I*`M4G5P~)GsmdP(tHno=JJyHPw)m%{ zB>Ra>t$$&|Pz$}qN4Ed)Gi-f_C9EIs22Lo$BFl~5bT9JeM9k~;0!IRAScBX0uss~S zqwMmM;E(p8cX{5gGdC>uvB5WCW>B>ED4sh2L4C)12>AHm5uA&;P{D@pY*WE@PbLn-jm0NBnxDkovEZ z)PHGAeej6kyq<{aVlS8IoyneDBBP^}Gjl=9FD~cbI&sPTa=~hOg(*i!F+7;DaR)QY z$sty-+<1gXZ!9bKXtaE6kMhR0aac6AjpO9lHjKwMym6d#I6*9kKR?gvX54>ps0#m5-T_Fah0E&<0>cJueS|9-Is%k8G0i>w z_zZ%nI>9w)X5j5Jvm+Zpg!|;qUy+5wQ))9UUjdRp6v!30pFpExMVa*g8*LvJHglKy z=YPWCr}`F&hd-Q9Js+KmLY)Ib$7drWMjd{Kzz}*l{xar{%yNQ5a+-^x_&oyy_o%Fn z;y13;WCjwoBYwTK$S>A!vahvVBtt)l*zsKgO@c|t6HB6emt1B2TX4D(Ke6mT_yHmY z0`PAWHQ0%ve6R-hFM+X6l!lyW%ES8N*-7z+$iUj{#l>j1juXYu`@-|=Wr$h^a%K`* zJT5wg^s!OC<&KV8COJNmp0&K;SzSebWFrNW1GGNTc@1h#!}K?)!6KwcF34vBgSoRO;u5|y-;DPcy>7dU8@$gqZe!Hzj`G{+o>$Vw zpu1KRbiUu(!K@Q&^nU?T{QNxQLtX{IYrP7CZhmiQ!aJvm z37p*WIaDp+}6_M5A)?UDQ58IV6x*?Zbcuk1MI`}Y%wT7oKSAh*@ z;s$h)oqZ_8L9@4c-hfsQiHG3StMI%rCe=GX_=sl} zCUj|RK$p0)O0OOQnMRXtzw^GFLZdqftH5q|6IR85Qb|(P4VE_s{9(|h*ZOU6X}~{i z;THw5>LDg7ySac@<4p*a)ba~hO45m63>(FL$L>B9(hblFa2?Y5%AJo70VW7pT)Q7u z%-A&{Vx%V4Qf+T({qK{GojF;SUGRMAXLTAG`ZwfkUZ>fq#Gt#*EV z3B|nZy(Rt?y4ZSdXr#*3lk?YP!JzY(Hier94`%X?2E#GC9=?S%tFNKis?^XLe<1YO zQn1(8Fn%;rJSdS4A#ev&pigLX+Yn=otr(3Mdh-u~Cb05Si^oKzhdjM)+;LH9RL`MN z_SE4!d?r#wjq|{ee;^b)Z4WL@2sXY69EV_PXP*Ash_^OT+54C0?V|@m9@@wn3^nv` zO}Ht0n`%RDqCMONt%_n-qzTm;{bFnqwnCOBaurIe5O+jX$~6k+p-CW%!>R*W6r((9 zi0f52Ds;>>QlY-iSbTGL0CbJB(Gf( zjtQ`Xs|KP&B3lsaX~0ES^mpMvuKJwSQRJCgZ&v4kMDLLR>eOJJkmoHbIEnQ%;9KWZ zQVsw=?Z4UY1|OSwK+2KFbQgrf==es_8y1wq*p&fJ8RHxL2f1}9Mh!U$!qXYGD83XU z^QnEzReiHQ7*`xfUgI>SCGl3HQQrakieB#1FbU+VB~p&2&cwMplg3_tIl4&Tu~*nGubqtAq@5l8I-|K02VMa%Jq{)6nphXe7)q4?vC z_~R{hLXS7C#meJzRm90-Kld0CRMvLh^@t2wr~r1A13Hx?GGd{cso+zoCO5CoeY=|n z78jySzU9Anjj7tu`oKTr3K-7u4OgdgMGTMkM!x4(ebm{ydw zRW*Sh90O9gWaBx!4sP7_iaAo+I962xG)<8%5Q97q!~@TY1;~uNt_`G$6t0IobPMsb z{uvcmRCe>(TOh*O4CwV4RKTKY@P~I(^m3NYZYee5g>u~{N(Q=}6WO<&{rz8GiMHtK ziE%_h;Q4 zr35UHa!Lq_=NXAPm8lZK#Oq3p7=b4HkL2X?kPw26^$eJr{8Y?u%P+V5v?Npw>B&)Y zN>F$-U8-RUHVw?oRjFnq`<+D#-UAFjomap_1XFm5G&HjrEm1&qFo?SQwWCh&7`Kle zhSwIxapGqI7(@dyc7p+%Uq16O1lajlo^a!)x=!fTJ>a#Y4x>}sCg&SHp!WhD8y<9gRPq@d{) z84a4fp@=`+>$APZkO@Ax7!s>nR|##T!D25j=6q^fQh|s$Iu9=AQS>L?i2<3ArZZU& zo#27Eq(Pua0GzZPi9T8E{|T`VgrM&D{e$t)&M!Vyd_ zn4-X%#5YDkNUX6)wHt_c!p|>YzO=MJWL5*>vPLx&9O{^6Mj&k^#r10R+ncQUT$wPL zU5Djm7>r3Y>2#JanX&vV62xc{gLrEX78Dsoag27ehntHu$%H)-YC}EPD1w0wpc!5? z%plAFxl04!A`H>=8YpPh!J#z-c6n#jePBpl%C47+2CM>f;Y*@RF`!Vu8O58k4hK6# zB4P}0Ud~waid&)M&ATO6)*NtlowAQ$<%RGBsKh7XLwdW|1$_fvL(EKuKBjkwFNE06 zX)u^SE#srb8e;?35P$rY9MFHV|G5rbq>Dv*6U-qnsls)px2bat8K^+qspW{~zFCke4Dj99jC-Q(I7V8O{tr;rpjIFBx5%B3CFPINz`l;Mgn zHarVBCyA$F4U2@#3HL^>PZHJ^Bzz~#e{q~|tiD7(rSN%Gcl?x))u--X1=OzK3$iN{ z2kJ7m7XPcZpqsDB3F_Wt7EY9xz#SWD&R+F%i1E@$TQZJToePoqNP)N<}32Oa@2~| zfSm&Z7zY{c2bPz=^iC;jhX>AI<1Cg*#Y~K^cG{W z1RM|mE ze<0tQwtwxdYTAf^OZv>ikq-X5^A0*9z8iFoQFuzC?5bc*!ZK^YYj#?#n2Oyb&ujBc z=Bh)TScqZK4lSrK=WlZ;4AGGipnMQe(5rOcS<6ZY4BErW}k|oxR(Z^+Z%$0hVwZUhqm|m=oJ4gsLx!=v^i%X%Fv-2Y|J76jc zmm?>G{wWHVBh1-J3+>z|uZXGx#DcRr=kbEF{%eh}DX(mO5K%^+9XyUb4vvj`HE#qA zK|zODzHH%!pnaMO=VOwylaiO18ooZwOK3bV7d?;uweEc!0U9E^sMqJhMkF_gRA>JI7YVqF$ z`SpX+0_w7(4C2Er6tq^4H$vMDP_{l@i#U}ZOL@?eg4XQgcScJ_NaDkn6trd^zfD@2 zu1TBFRoJ^~1%>-l`|N6;ku!osPn`@tLl^QI$Aqqn*0e19v#Ua_t%p{9*sfL+3hoYe z<7`1b#L*q5H>sva*}-86J!DJ>cCm4j$d7zakB>3Vba>%;U~EqhPs}AJm>%<+q=5hR zoKZR>(c}sb(J}naMUsxcc#*^2x6~y^2VvCho(+cCSIdUy?3Ay&SrD z&J*r?5@y`&5W^uS%M##4k)Kzj$Vs>PZliQ~G@p}SR-}Z(=VXI)SvHuE2O;dN?w*7w zk1Vt?O0<>@&E-Lf-%2QPSceit_}6yM$>aYdo;kc5d(x7q9EdwZGCV&!>vr15eCMK@ z6l2q*sM!ohgU=j3x{t=Ui%6NScGP_U5~tj(O3)J{g;N%f-9o%jN6-!ROW7`2^8y>~ zY)(grP$ePv@u+{^lc?(78V0C=Ft#%0`P&^Nv%W&=QN0;LT7x#&k(t6KVdZD>0#5}0 zj4%1IGOP*#OP{!iqwL>&E)eT*$25rCiHI3a6Cl zPb z+AZtkRIa?R(bmolG#B54+)!yBW5b8WAX6;Pzg^WU-wH?d>Z4vquK%2)G*ZQeXG%l- z7W2q_48Jd8`GGN60tGi=Q9wowv>;8@(w=LEkON_ifw!0s+eHY;R=~y&w;{NCRDBX+ zYtE~jgw$X49q8LCVl_dAh`&rb?xzB*$;8ltum>wTB9~KP$UgX7j>&~#!c7%PVi}r@X3y>29PP6k^g+ppsV+S>L$SX#T6(Z3kUoPNn3b3iE*L4q(-BRt5RuE$6wd!JpPjwVdnj! zN{h<4>Sr-<0ygh?m*CHU-6}$kHTsl2%oDW%SDElT5!O(3%UjZOGaztz~m-{YigtdfsggWX!5+ z3C34^7@*rEoTFG5XKg-fylo45iZ$MWcHVXx;H_&9g2(_z9-@4mD?J1_T6I11qXcEe zHPc~D%ljkIK?ElAB0-A>PxGL{ss{@B;Aug#d-lG$VRGP`VIV>+RMTa|F0fwSPRCLe zWcwNJcD!?clTdLHFhI&gCmi&Z7adnUi7>3HHg=n&ZxM(UUp4b>5`EXt-tF0t z5f96wL(+G$PT4MVa}ewrF!coY@yMU@3){_e3&RVfNrQ4dU7=Q@>$%`BfUVC`I!4zl63a}x_^nbxrOg|lSUw3fKsk{JoG(sdBmHDv?;E4N^q zRhX7>d!5R!W!zF7a$oCG*lZrI#x!pVTa zyPWW`I9g#>5$0Gof5p$vh9R6lUNb(y*^>lUw{dVehqMsW3GMp)Ydns!hB!CN!WjU- zVbCO=^SjHf_jDAr5N#BQ1L&P*KQN zF1Q>+f?{!x>pscu`6o0`OSUi$2ao%E0)2V)MAQTb@1_@vFrG5`Lirmq*@B`g@+$87 zJ)(^kL^?cekKXr>t631*3}l;Xlx!}9$AslC8*ENi@u8E&EH-p@W_Zy=Ik=SHyLB zr$R7ceUm7mON{RI0v_0p%Tv!&NBhta0r;um-F3WhRknr`NYC>}w)~u&ygm8#;7Gq+9$y+a zu;Prs(woFog9N8K>l9GP zU&?+y5?yHLI`o}~^H*sJFnG%QCGn zmmOJ#2Zu0Rd-gOBUvWb>=lQOG$@^=|b{ZI492^Syn;qlcZ$tgiyIJsPw|g7<4=d~l z4{XGHVD^vn2fU#jW7*8(XMEFZkj}kp&~{igNa;i9Zp^FLUZmQCaOtDnH zu>zgK9Li1W7hwH7J8S!R&aA9qU_#I5p<*bsw@OASO}1)A5oNwZMZ-adZ%@?_NTT>< z1^{!VE4Kp3GPd-?SeewSPJ}cvhQs?19j=^6hJ19IZcv2FC)Zik6-I zT1^2lVw@J6HufIJc3j(?TV)x+ZhGk)g)vYcU*~XnsebP|hl?g#ouh~{-=ogq@JII6 zIo>7dMVKTHy~cTpTG8zcU^vY+K1Pn#a2gfKhIA`D9{o%f61FoiF!IhZ3Ur5 zuBiK*=0j@s`!J;;E* z$b$5CF}qzDJ_nT6+ z(TmV2k4trwL^qgjP`?-k%yu)QQf0cpTyuJPQ81&6{CI&ynWzvYSS&F!m!_)D?he)^ zKj(TP!s1zv3lju%RDd1zsX)WXB!-zeQm;X#Y<1=+DM)lO7I{weDoXOO%12Zn(}iLM z&EDq{;Drfn28k{%$BN+N(+H3ri#QtL#HdQxg8bXW)GIO?B8tD)Fh+JmywZUR^_1&M zGnd9ikfPH&Zhzu87S(`(M{G*{}8(kjNs%(cC*Lo0Z-b)`(b@NZg<;M{gPq6j6uSLQbpsV#Yz<~V2u{& zTH#RHW0IC1%r;y!GK#6}TABdV5^UuJt=UQaI*EB6(ts2U31ETw;<5eynbXoCT8Qhoq73ltX+}K4*BUPxWhf%=C|1H+7a`y$i5YD)1S5 z_$3^9;qqfd#^DqVv6B??EyErW@}d&@M@GM8kv;$_zAij+Y0~C|T!9S2NE*JB~i7k(V9Tz!p4?fNdbIj!wWf?6Tdl0X-z^l zyNjwNL+tiU8o zhCP*7yTcENYtuaLH=UX?RTv5sksOhQ57;^U>E~B`Ta}AZMT|%TTnM!=L#7=`gUhXt z@7q1in1eimE0G0GyL7XME%AjA8AmQ`taafbhTmjN?KiLLwsjLvjkZqXX?$~gQ_vd! zD%*QozrFC@Y%jboYma@E?fq1{y^wC&!mDUcwg-XY@t~%l$tEixoBX+UlkDQZLa_zE z3tGc(vaMf?w%EOArC;zQnNVJ=e!y>>^>aNk$CQ6i-9Lla6>Ssx{(^pKdz8Sq^o50jg!ETRJVz zs;jU}%foXOF(&5enAd$a>82Dv#q*=rDv5j6x&)iYlORm$mvKTTwroz2 z0bUjvJaELq+eOO33J$#$#1169(ejiiUeFB=E==J(Dbq*?4~&7TI|!*nH6W}YA%4}G zW1@b&CM`uOtcT3PX_P6Z(bF?u#`guenc0Dr-jV&{KFYi$x$d!Fxe3EdW6zAFNHcI~ z2-uD$W9MA5A=SLk!>gL7cX-;M$F0jT_QtpP?N9C2`KYabs}`M@JPH>Qc_^Sx%6L{H zDnGu)6VD5LHNv8AS~YPHM6I~}K;-XSdSADs+F>UUU0R_i#jhfFs0VthY6@1C(51D6 zGBlq=O~`c!XE)abyw31+5cBx5vT(`iU6KazCCNWnTzG#;-9T1jb^uKD`q8PXVUa=l zI0j(0>U{(}PQom69GqeW5G*a4BM83N-PrRL>?ubPndHtoP%%#!mOf=-l?SvZJ6c<6 zk@h=g8Za-Y)-7HEORn##ME^rVOZyqHfW;BCSHkHh5U?iqt zT~?WC*cfBHK?VcqY4ld?mU*p|yX1l3G}0F9NvdHAi>Yf+9b=&nxdS=;%ElZ!v}347 z;N2NhZ_x-dd6J;EC>y(?8|s&K}7^jVk^U_BP==J8k$d+^ihF zyLfTUVZKBUKEnr(K7`S~41KEtefmodv;IY|QCHw{UTYMPIat7LC-E#r-g$A$`&MvzG~Su>9DKqz)g5Bt<(X+5j-&4-y?K#kOPqQWzc&D>qUunY-$TwcBRP@ zu-eTPRhCNjd6Zq-Bh)pNzrn^u2*?$5r0`TAs*86U+94QtZ`t)ZpgGSINlp>5P1tWW}7 zG00^lJ%=w}QVx!Wp$4vdVA>PFIXBdp>K>QkT%tcs9++dlEfStYDA-~l4&RuKj8tT^grxdHO}i&F-v6Dw8R zU39}oTA(JLbbPd3?m~hp8zz9zx3z}_+u9m#G@IGgGTfwY-wuvGkJ_#Nd2uuc4;{X2 z1AE}Hjp?kmZLx9k9l>`;qupI?^=Cu#&+SvY`wUbqV9oK*^bl) ztxu(yt3;1+Cd)hqY}a!)kCjc(3MnLykQk7;r(!eEdW_;?XT`+^Z#WC21skC?+ckp& zJEEvQ&d5c2JDqUZ#7$b4S|XAHaOhh|AiOF5QkiE)nQP|;-3hxquN*3E3zno zHZ!`@qgA|?HhR&0L7U5YdPD4&ch}LJ?iZOAoJc>)ZgA8Z3LcZE6s%B@wS64Y4J04e z9j$$7W5;8yd*&<|EK-c(c&|n-a@x?p2D}7qixELvOQLZUf3?ls3sy0KHJs;cl6{2J zv_-^H3N;ASoJ7+dL4L7_8Ae^{c8Z&RV4sV48qOaKw5=?E!`A6A;G7?f`oU4B*BpFi z-zpHkxV^koT%X6;Y2s%$X9J4M)#4fpNi-E0+K3IqJ3|DF$Gk0rTJ8`_n_6PI3w^-S zlvT@WF&>ig$iT?^^narHG)xHFba+{ppEQY&lK{{862+Pf)N8&(QBKA|eIBbBhG@wY zKuYU@FhnKmq}hEsA7A&7!T*mKJo@HV{Ss=0jgS@!v%Y za+^_X`1w63h(5cy8lH!nSw#ebO6m>0k#0%v%T#kxyPC%naLl}nuWsjf%h*d6uA1+b zuMk6pslcOHKr#TXr_81Eh30m#SsljnR1BDl88Yx5Ym_8j8p@MqzS7Xs^^(s%K@Rcg z8+SnL-Y(~|mD$Kg(P+JI4h~k+DDr4;EZ*g+2j9+km;6G}@T}Qtuk9j{n=p?R_j1)! zay{Lv7;1P z#!PZ%P*Xcs(HqJZvY{bQZRKc**lme4SS1bCBe@nxaQSi5;s_c8Mo0nn(^O*LgXn;X z5AIWhTodMNz`HiqlxgLdiwq+^hzsx4HKD#1rD#8=1K17#J10DiGR zT@1B?E1%U4FA`LVHnjxEHNXL-NM_Q^0jemYlg0t4p_~)VCL~^F7JXEUo((3(9l>%3 z;pz}vUmC6TQjy-eBe{`%A`GDSj=VFC7s3R=LVexNBd^V(=U(x^W3Ol`J6iv_4k9<# zyYkwxdCgV4!(`Ftqr=2`MUEyTJjr<@u8MNE~ zgj=K@Q=k`8=|g$G#}Cy!NU& z*1m(Adj}&9T|^7?)JjpQ6MhmG5Bx8v%0EiB7%9HDP$G?cziTmMl=Omc;_tuas@fHy z!^tk5;o{|2a^ebolPh`|-}Bj?)4kzo9v_nffF>>dX|lGdUKOb zS=cAWqr5MN2)mf8ECONL?TmL}c-Pv|Yya#1$oqo90g9 zdA5LSwBWgg&UIqAuMMM}A+Q^HvS#Bs#=N|d4dem{QSlJ1mv3$LjM5=&lK08eFCW6 z#;eaE<&P#!OW8-FQGE3*#{*ZA2ihWzo>z}o;TW zY#Yuur|DD|9tI!iha|FANm`(GkkO7{dHKueRW8zE3HD#(ES7O{3UH??>?Cq4>yL&v z?ub9F{& zo1GeF^*-~6KXMw%r@q`_PtKj%C0A__HLM$1NSBp}w45>uHPo1Rl=ILd7>B*GSW=fr zn>$7F&t_tuBZ;Ztf0E>TwD(viNzSYv-@{pw6Y=loG|8Ezq|SL#O&`Z+aF*mi`RPuR zL}&Oaw>?qvC?H-`7Z`6(l)l>&C9x(ak;Yw@Noa&gX6aq*irGzN9gZq0>74J+G6}aZ zUR&@Y+T0Y_R-GpbdUv}joGy~EnCw_UL7pom zkbnkl%xB4A#Q~52FFrd3@83ZiqB-dT*?E4s=~Euoj48`^m8G0Gx1|nir&WWYm1rC3 zB6vg4yEek|dr=K6G*%MMG9;zT^d!H_I*d%LW_?Wa=yv{Sm(Yz5kE>{IzG}iomUqaZ zhC`r9c+KlqTY4?mU-d;<45XbvSr3X%?j1>cAUI5f0gb_l01lx^h*N>6A<4@Sy^BI5 zz#=T>t5}l(U3Ga|oD;D{o%LBA5ovx3ISN=*k#kIE3uWU|G(Ax&1azgCHDwV^>1cR> zThYH9W1$(HIo{$xznQTd#&L!xua|hf&n5~TlI%LY!y#km{^;HT#utc)F06ng1&4!h zGJy?Rm=M&xObZPteAtgA&#)afbLo+A09}V&A>UNZvB!*t=I$sjCZ1aQ>YJr{E-ZTa zmHkGZ)(?O+;~RZapMm)ykjj&FZs&P4tF>Ad*pZXOZnTD6<}EnHGrW?2m|AClkZ+QO zG1NIr&Q&F3=h4kggr}A;#&TA2Du#6OFEC0emA&C?22m!Ga1ohN6!ZHla}9Pb!sP|! zw9H}US&zne#8;1CkG9SkTSjZ8vsBpK%rYnxsZQar!&rpnvzdQ02vEkqev$}#O zf7$_0trHLSY~cbnU(r1-0!cqLr>BYwrw3up;pmtJw1If+4C>L;aP| z^{b$(DWGdoKcT9}SMrJ!yw#PvB^0IARiw2jN6V^3IgL{(Mr_G;=$NYK8`h83pc!pM zCt6k;T0sxmga%Yo_ffHTVdOPg=V_E%tERM+j%4&&Tilmahn81_R#$=SHE%;|kG}(C z&hf}F7AmRoZVtK7kfYcVYcLWM=IdjXHL=O-wG)^skPFE4e5I3v5k#D^dI(gcE>e{J zxwF52_^N8!vu7pQ$~r3LrCjT3C=yCzVI#Gapk@u1A-s&J&WULlfQkZZ70ycuX3r~q zB#Y>PP?n>!hlFzo<_=|t?5#8tD;qKJC!8`GdhD~f4EXwaTm)1otVN%$bzRTW!1A18 zUDjJ_mX!;XWoFn4s?fUUn(u7Wul*ISgG(Ngpwxe!7yWVvesEr6m`r7Fj{BNEV(kiz zJ&E^)of2C>nUTLhopbD`nPS!K9a|hyxd;|`=Cj8j1bfQJAx|icw*}N7W#;;FvarWt z(t@sr?&zGPRi)W#w*Sv`NpYLbzw;>a@ArtuX?S)M6wlQcL z*k^G7LoGgB)BcXD&>kpoH+xPloBg%sYm_aUh*s&Y20w%EvfMFNN#c&9+XjTM0 z=3|Lgpxx}@<|0ip872S_0e)ey;q-xJ;pSz+EQ_zE*4_0*Y8T#PJ}s2}$JgY~@jY{> zKxZtD- zP<)x3g^TMQ9bk;{BZA9$I$cEIl@QIp#^WeMUj_IwN$;jf8d9Y!x)*)Dh^N>R7b{+U zEq|ak;Z=+^(r&L(m&~XnJkgFiJ@!YV{#3Ibq$RWQ(%>~;ox7ftAVTqi{&*w)c*`55 zlPbPc>ootH|62E|J#3GH=J}{k7eM+UXb#%V>h-(DV&E&wrdRktJC5A?mT(6WNJ}1> zEDJ)~VJmKp>O6kUg(AwFL44Q|p%uJGtBQR$qbfPdWcf0DsdbuR86ctrr;@r&8MdNF z{qx>2XC96$8vDd1REws<`_gb2rmuuyI@?kDqqtnf%N>0d{*O)TdcPH3LKV>?ONf9M zn#oiF3R|iCse;E8n?D7*pdo99PgVy%!r;KVLBYQRX2*TH!Nb8;cfx%(pz-7mTtGwC zZAd2OBO~hBpj5zkjVF*e$|I&EEkK|E5d}QtfgM(H6?srQkYo)J#ZJ;Q~{DeKcFT&`HM zO(?olo0oJ0xqwI`6>zg~{6&j%Mb{NADKAq&4aX?ed!`-y=imPGKlk_8-x}O;U$1A> zIc*QMuXOzSJt{@pJqW5L>twa;v;Xi_P#<*m*mi%7pgCxLmGhw**uAT1MxhS;zz$u* zt`Sb7TU(|*-r!P-XWx|Y&2Imlhj@t=#JJZ(x7s(%dgHaOzFp(GniniOE_+4*;JFk+IXp(vu02&Qie(VBxI^XwY2(O07K?fl%%+ zz(lM!P#Pt3uPnZ&GgxP{_nGOdd&|V0G{WfdVZz9Hpq#^<6tfsFWsT538m=+Hxrcwn z7hu@K%7b}yxg%S8CF&DnR&X~<)*|ywQw3P`0mO{iA5pCq)qzzn^mzQmCBbR`LwmQ? z9}L>Vvp()y6k9N8J}!a}=r8@=PD6sL;ENnuUHV5JFz@>37{)ZikCP~z8bCV|uMNo} z-vrJKGE|P%5Q2H3^e_f;WSxUPT2r6B6=#6wsOjC|Ei;QbWRcHHXnw{!Z*-h*Zv?B#J*EH*qe++p z6d!?ILiX`iP7v{Nc6Ad^*vIi~j9tUrP|f|*8GC=;>$LjEZ2@!Ck|Or_e9#2>6L2X4hoXwi-Je4$yLnsJ z=}j~XucF_{^I zaY|{z{*;ttKaus#FKih0vSj*&Ey{nFTnsa?dY;g&vjXaz)#1QTF#AUENguA5n3c{a1AdaNPybI*Dk_Y%h?J9UFm3 zbcu@={rEQ}lQKeUkf#ONEAo)uvY_oyHIt88B^IJUu6g_wxQv0y+oyEp4`H|bm;Zo) z8~#p?+LS+GTfacxVP$+UlTFZ1{4X>yBwxn>ZNkJ-36e1Ml@0SX5A)T8xunbM7%xj1 zb`f+_#P>lszq+u>#7R=84Atcekd`2eh53!u{JuGS-xlYAjvCm74JzsX=bYWx0LlSn zD4KhmwHOB}jyes;^VFB6ZU9*48p#?uKTJ#bpIu@FHst-`?PG_4-OkaAp<09hLEa7e z=V$D6%M=--vvZ}gf1)z0)fp-6df9gV_~WSCuhkHx+g&)H9IHwAU(ngV|LFKoQ~+Bo zE)g!MPJVH_@WDmxh=xJ8`MK|>uu%3|%+us|(#0#rL|VOc(R@&_@dF!gb2QR-M)W5w z_n|WwHQXmi-4CrmbZ|Im4f-Dsn07#au)KWgH~n~MedNDU#td3ijp@D9*MVgTwtmx0 zHT8a8f_lZ)m}f)G5oAB?4+@WLtIrO8vIukFL6{LXt7{q0haM*_pYz-k*m0AVIBlV9 z)s3?S`4C5UU=3mO)Q7L$EWuYWD@8}25#c&r55gH@Yy|cQSc5yak59c^vwX?O96B0R*~@@<8+$lb>!?u_-H=fjc@q zZwe4Kll;Jk-P;*)UcO?)-?hS7h*I{ctttSg$zZ>nUJ?Bc)t>O%7jR)F^RDXci%_9c z3?)p36GAa31ksc_B1Znuj)*yT@lNS}GY-rr%x8Y1xXUa^PlkG1O9?@VAm*R*$}RF) zjvXn(?eJo+M3rkl<+H>cn(p8$3-8$gmiE2u`Xr6dYo4zfU7df=OX3696#?gNJ?Mch3 z=HQo~$>HIzlp=@Zf@9}RkhK!RgEhP{cx=w7Pl#tBEq*#_9i6o8YJQ_s*ndMQ@s@OG zj~{_6RudRiSX7dsiXm!Y{~DshJQPylaH+XbmnAAuZvWJ7p4bd@c=#JReDjtZzTJl` zB@eamUMs#HqwbBtN<+UsSx`cVXCVuYe{KJI^46xr!OxtYZ}ANB5x8PCSx^g$$L5UJ zpQ9vU!8Dyzd9&19c{~<5X`i%@e$A2OE&e%1)@fHN}FLW7xgH!HNIAb-@Q4^2H=8o4SiLb5~c@qAV(0TR? z{(~NGo+nll7yA#%Y7@lOOb;t#S~cHX{X z-^SRd@+cwzoj_v0H66-~V$I&?VptWUq#8B=;b=LkErM)p-!?MJWcf1eC0BU5kR^LD zPj9cT(Q$-{kVPuf@iCIm<`8vt0f9a!&qd+*8k5=Vk&z1ootH=qm$^vmI-HZYn0gzl zqd&tj9jy#5Nogb%P<1JETC_T0fQE^+YF-1}7G zyIq*E!6mwtnf_O#Kj0%LK*zKaC+HpnTp=qn&IltRGyCGx(LKdrxkSy5!hZRgjs6k8 zG{{&(X~tqcyDBn^k!SW#Fi zg+^iV)=^kj1ldBRse+NF3Yx`S$z+@vV9X4vc7{~#mo`PK1Oz;VQ&cPLH$~-=<2g@l z@gx?XynM>n3(vB1&8l^mjV=A(RVN9XcJAuqc8gYR(bZadQ-7zBHG=# zG@PCtrRz@16(*%tbeevN9_SzchdBByKIR45GIQEFd!>7|3&zU3Bw^M24Q?G-0PpJU z1>ZYfvYTcs(6Y~d@u%moUld5{`zl|=t$h_Iz?wEzWxLKLH&zs{)%T$}f_++jhh4Ub zJgmFJ=Ck0mJ$m0i7D190JYu^F5lP<>V>bhDoO{3g)-RJ;V+(ei^t0Yv8ibQcENofw z!O~WQ%_xa(9Pu^B>CG&iM$<(m!~XE{MPVRi3AW9!H^8DgyE|By{G98FxVL0IE=&;6 zQ2}<;r-FiDqqGb2aC&9;L9f9P-L!s@gd#AhilMs4c4-yCL+kDPlXaL2!s&yzxu6vG zKmu38ax#1Nf{$Yns(bndn1vbG<{vNH#U zA|!?{C+Z9+Lvro%5N%@P4X8Nw-Y(&*MbBLrajWgvxjT{~7}D=mNpEj{p14yZ7HZ0ochK3pz=r(H+{6Q5V;t zMuX2rDR`s`QXE2?Rl7rGde<8H9@$ml1hZZmQ9%pqEN_i6@O0`aTq?{%3evi%v}!K zv|3b4Dr+piVoPOW&s{Eam&;t`?47z;p32(FEvELeL}858)TK0uZXH;a>$+IOSd^-J zpsxz+?tvD)xwH>bB(I+cNqSe^z7mP+@4$6@b*%w$xt6b1lWk>uWF1oUDj2*(KX&9+ zms?lev{z)?Q^1;GPeVK(%7AxCN_O5K(>7-4=j?H0K)1*!RL(pRHBDNp(Az9-n&3*P zc{|0JfLfv$OA~Jt_Q(<+)^}I5g}?j<{hOIE)@#^1Kcm989eC$Ik;XkO6$c!`CKxBr z$IQ3ROoK~Vt!$K~<*LO3@SS^vI#L1evSe!&9!RA8r!idgiuV zWjx1vDe`+c4~0LYi+SiiP#iOm+XbX;2kmz@b0n-+qEM@Kng(B@hs*e0OPP^(c~DSd z8zfvG9UY)xC9T8Xx&9}S!2DdAZ3|y= zC&P~r1pG@xun5omnGv3GUNy=R#qpj3RVd1i`ekULkC8Z-5ZOdQyh9@-b`@01AnzEh zV3JN5trxN`qnE08U;#3^R;a58uthY!E&#HYah^KNYDO=w8w`m(a9|sgQUBp-s5;n} z!jj5dW|vf73JdGHRqeu*=or>9-)CBFFiW$tW`lS_y0CImwhJ4{Foe)mVB%GfN;tHGO3*?F z47)3O<+fbO>Ck0`t)405O*Pq)RoU&uBGt1HR!A$lIZfvgVZ|tbKD$jRHKDt6p1#Pg znZ-7m-Y@w4TgA(gO0!R76A%#$W*3ENQLVi^}rFjsp_L^oZQ!S%Fx6Hnc3a>skJkw(LN zccZNhHX2g)3$G%(;r{47)su||6{D9mt4~0KjqHL{aS8Y`%^rQV5TA58BYn2+;>qF~ zrgA><7zb5iJP~k3{*gJs&VUB%sP z8(uBAje;drmoTVCU4$9>3zKwy6;H#21;~{V=53T-lV(CiCu9|XGy~`)4NfFZ$@0Iq zSxzD|z8`qZ^H4UVXMto%9ppD=5e}}?dHg5c<%LNwhikd+R=b;PHHj_@8g;qcuBp*+ zG&OBi_2#*(*)hSvVLTdt!6ij5JQB`yVZ?2p*n;2>^j`$e#Y?FqIuu8JhUjOqq}e+r zxuqR)Xv+@Gi1vey%GZdiMo{mbh*rwltQ35jERqX+kM;y|an8xz^#jB+)#@xF zG;At44HLA`$r9C)Mk~l?HDIRH9aWWORCLruML-hHV7?Q*uIPRi=7nuZKgxDRbbhBTJq6q_V}pGOLvjWv2YI_A*%Jc$2p zHGAS$&_DX`c57rNNBZ&k^c1~Utdp^PSO5N_HjrXuIhUXM9oX{jx6bO(jZ?}z>hdd# z>H$nY=B}Q6Wiwg1WJCI0ILm@0UtE6>If_xcWQG3GfQzl^1*|1P@4*De%!TPD{Tc=1 zFk1xCd`>5oEItq8jOE*AE{52+Op3h6wH4OjU;d*|ak1#ULE<}D!K6OFfAD8~$#rU} z?);mlO3tac>b3x-nd|(=xCM;YU%9cKGHVY52kq z#3G@E>PKNwPNj#Bun}U_(T(6y|Gan1F=B6V3C0^7A|te3#}1@KrMf?;;#T#v+v4Ev zRYi@gt43X-|4TI!Z94HVHJgtehDkz zK`F!viR3Rt<$=+Lfj?Rs${A4pskLz>?y?z8XtzLAv0N(#BJ4sODX9=*qg*gjw8+FCxzZU4hdFk z4>o8I&waAR4WjIpvJ)2p(wBuuABE*MW!o&>+ilr)TejVneV5xZA$xuJ(7h?Ek+xAZ zW?arKy@;!X|2qiE6JGcwXe>-}wK@OIGTijYUShjgh3_%&uUy&qqUYt6xN7V#-ou(+ znqK%1`T^d1_QT%aQ?<+y^Noq}zVBshEq<4{+o^4LxDrCl>$U8y<^C9@OfGZhO8(RE zd*p4&>cH7>DmENLs;;y~WJvYBZkxPTXKK7AR?*3ze@e_(%(g#HG7;SZ1sUBLf+;&V z8sb<4!~Xf8)t1MRe2e3_4Jo@RYLcX(gMVV2XDR|YHrK6Yw@dg|Qv%`=xg(m85q<{k zR=e|oVy>u#!5U~E=4rrhGaCnH&R){~1tWgv|7kl~FOlF9YBYUaJ-zTOW0x2w8n`q? z_cOXTTTYMO9&T*4=x3@$^TlbaNN*MC%_`C;eLcBxO=lb{HvGuv92@QJtvRrA93h0~}!z`0KUfqfA`B&6C0&%4oitG2PRV7Z{M_uABJOLRrJHs}CzTJmu7OtR2nkE zTQ1!XtpK3=XR>yFC}q{Y(65yddDfGMV$p!05AT8Jy!!yqtQ^|_w~qrlnY%;(8UWm` zq2E0}?bWHH-_=m$=VKO%@Kzhd$}=vT12krqkN0WUYUf=wPrOz=^Qu1eG8)^+v6uhB z7nLo{n;35#UWZ>J62iWW_VWgB+wjXc*&>}0*wFD(hSTR`9GwLpYx^&v{(Ki*kjcZ8 zqO{%dZ+HCL9shR6zuocwJ(LQ82ZN#Hl}8>Q`v7p#@e4k28DHJbWz1dZ5=iL&?P6vI zDcLVMWsNy~lc3`PY99TX8X{(n5?J(Wi^gVvz`@qo!g`hzJ->Nov(Xno|r zp{q{XW!t<4-*qufyHeb0ZyY{c2GTOZXD*a3#WN zO|749b&Yi&J=|?KVys)X;ioayZKk)6YOMQM=^Xo1#=5)7cWSJw9+D?B*15)HYkm9X zt#5ZJ5SOZDzUDVk5Mma{vbnBs;}|7U28Id=iIveo7A%J#fr!=i?<+ytY)3g_^V&ot zrIOkhh*=#kX4I#9B*4Qb4!8R4C__?15?cj)Rlv;L<@y4)pdBL`>*E>7UNhKQ7P8l6 zO>IqNwuy|p-uRlxc%hXnWObYkP3@R3DWD`noV`jFnMaZoCUDq+emqvYWgm6<2{Oj` zVE$~AjhfzfX1Dbfd@k2u`PhrGBZmhIn4Jf&$lpN~flJ8lXg4;QFbQpX{1w2$TOIH# zRo51f+rR?kZ}$uxl10fd0ad`oy$ZDhS309?v-jE1JDPqO9@)BKgv90pfq5mmon9M4 z6`O^Wj-ijiKZ;|S+kxC63gwP$Nh~FDRP-ni2xIoXY!nn|79#RdVe6&k{RtoubyieHS5;`Fpov- zN*PN=9yLbO35*Xf=ix!QmbIeeb2~{}E8rk>nYCh_*{BQUC`AUjvX_F*lv{SQ+gUV6 zizt5ULwGrcfhL3Ko?`)toKS$UiA#03bUumZFx5>VSO~gj)X3BzE-jh(;|i?!7R+yx z2qb_Nfi_Ou;*gy;7mGv2{Y)Yn4f0P`Q}U6;p;HCLjsEgph?p$eE+7|{VXC$(Zq4rPz7d zIYa?E98br|?IfB&XG=n!iIg{llZLswTYt4eGr&m_QSJ2C=;N!xv{eoRVL{jsaqv28l&cF`-Ojrvour?0pU}S~_qNv$`sX8sj6H6R$^i?) zY)qvayS7E-BO17!6|7vjG$NwJB)uyN@M$hZx?EL@8kq#C*dZ!m2EXX zDJ#G$a#)t7!p2csx#*Od-rkH4iT*g(Amqg2wS_T&b8X>fZ?(AO@~R{2Ld%dVoK{}tF*k%m&Z8KU^{@;Rhn8Ne z5R_q>HK`-IqYI8&UE|3f%KLOs(5HO9g?xW%Ua4G7bTQuwPss&W*0r^c$uH!i{7v>E z$@K)8h`ezBHU*c4qAs^UkAZ zGjR-5O@APl2cKeY&mqbP0m4=#1H_dIV zUI#`Same&_$K0GZr6CN2RjAu<9(xA#JBgEo={k^2jMD*$m-(2%p1^=#g|Y5IIn1q~ zE*cz#8P%&=sP2MBHAEGOj5rlmG=lAWcv_0sQW4bC1JSa8jwOgnYoB?y zqQK%O`))2c;*5YluBAt~xFG|ZZl;O!+9(U(PrSM<-w2&nd_>U zeKISZ2Xt!Q1dB9r6NG-$>*wH63Ak22_*Q-Sa)D#Ugf}b2-YJp3rwU}efLuDX0VAqSXw9agf;yPq zt~H;EiX)g_&YDq0V`arWU^sLpe)r*MT5Cy@P^`c@mc6` z3Oo~al7^H;rW!^u+1uL#-IJL;*y$?Fsrd~uD*&tbNi8rn=O zEoDr)Ms6Cu%45dqW?|-w50@9LPq}fKyEvV7OMOtl_RNB}4Q*yBNS9D@(P-|JLOHrH zaGOmsr_eN$v;e~c6%B=+YKl`xDw=|hNT=XKwD|v^(iQ|IJ~{8T&^W*|*nViq-FE=q zQ{DE6yRTwDY?{V_tk&!mEAvS!3c&N|avo*Z!Nu+6Wi*$-Xyukb>|+qp0r@JcwSX#! zA?sR1nZ3%W-W^!IgUOS_$AyaA_E~rQ+5sq@#C{sQg~+Sd_PA?1Hmj7p&A=t75FKXv zXUuk6DO|OK#v;BL4Vt~-302=m{os#3j=Ft=d@eBc)PJK9k=0=}~*Y zfA{)2$K!!N`|#mF{BbD$cq9IJ%e!IT4|a0dDEQDEbeg?U06VHe{t{j2P*&`BiSud5 zI?ZZODufs4o={v$iUzHz<`Ha4gJHM%p=}n@>z>3YbRCbVo8;?0AHuHqtljFIbXvZJ zj@u{A^KM?;IAoS8)awTW%8cz#qo7ZD^0f0$flEUN`_O4(A~;9gInSrn*fNNn&%%Xo+Mn62xD+>6@Kh_ zabithJR!SA#qz1ioObKIRKtk<7&CS_8l1OA=Yw_tQpy1;{)`J&O9@)WU@^Z4;3{Yp zHYZdpFN?X0IwqCGZNx-lvm4+=fgvNGDr$hjt;F`AeH^rVqd})_0-K;%8~Ul(Ra&6K zV0eBs>NAl^CrrKr;?KB1tB|1iNw2j+B{Tj1pmUt>jy2lAW=GA|AHmt6|8CGcH4B(% zHjj^`PEYK|1f?>edk!~{t2%(7RD1;g1O6d7Xi1R@ZOzp6c-g#i$VIplTox%1;01+b zPDyPc%JCVUxOx!-l<`^6=^eK}S%5aE&Sy5H0Xn4m%!oEG*vtafSHl8zS%NCHS*u+t zS9T|`h`uBX$RX8rs``93=uk-HgM7s%C}(hI`(_6?WRuEKM-NQ;Dz0@@oC8%{>!_9e z;j8M4C#Ui|*4840U)7=3*Ru7H!D{+Hd!Fx_C@pbBxAUM%W?6akz}UVPA9koL4Ya}t zVzk9IIah0V`_#WRaqg=bc5OS|+Pp!}hok=Kd8hg?unj&6WPF<~(i?!^dVp>{Kwpjr zD4QFl&Yh)hnwl3I^w4%@ta8}Y+$IfgM5qhAC;y^5TPjz~wflKeHd@-%Gv_F3dVFe? zz>Y1Q(*9<`w^F!zX6#(_*}HbukepOLj7I%lT>(mtZWoJmx|O3_Ir{SCsGLurV*1Pt z!=YDsWC}3K-KTUTZO)-+=mxrwDxsmW@k8^dd1eaK(b>83t^Guq zv(-Uy#}{^r&|Ns69IJ8qFR0`1KRP~Ofzq@TxvohU;bynn|9C{D`ybWv{#`VU=9D*2 zlJKffyjN!Npxrp9pvGCIN0y3{Zu8wH(o!r*H~O{9L#b2~t`#K-X`$ni58d86=~hmj ze{wBTbt`Cg&)zqmC&_}5M}&@=RQu^0rW$R{lU{@L&WBh(uShKH(6ghFKU;Z{>6dSd zOhNywJ%Gq-!BKnkvEB9%U6zhdM0iXe>K)pG>@dFoTtthzD4KdN1OGIUlo&lvGPnQd zyxH9_k!`u>AaeAt+c5b?N&F7)w+=?{o15llTV^^4eTDaB=cDWJTjgkt-2K60u(vIO z%cn4=gkHFk->_n(;Qh$S7Jsf@Rw$X$+I9<-5PFV1fZ1G@*qbw98w!y_gYt3V4X>zv* z1Ij;$-!r86aMVBBJgGg{8q#Wgqcr~596-d%&6C;AXX_yIT{xe{)2nZe(oi8kHLg$R z#ly^tz#gg|bK+QHw-6~dM+sspgd{TZr zLnH9npnrN+xNoZ_%bR7~be^5yVpLdFhA-pZ_3TJ7eBb|gJm{Yt_dj|Z2Mn*%J90cv zXW(7!MWkis(KBcPH~N`^N6V*OHqe4XCe`DkS#uQk)3bw(9GtRGd}%HFIxvIpPUy#UgI zD+6>;Gj_!W6P;k_Cx`$Ja6*|@AtFRbF805B8qi@W5HJieo(8#L3BJde9xVXVAcEpf z5I2GjP<$W2K_kKnm8-PvFiFz8izJ+WQ9xEO*o-bb6T0qTmfKZ^8zH5LI=ldnvm8T}ECn#Ylyx^`>x7}jO;1g=1I%%56$JHxh zb25Pt1*FZG3F6fQ3$?U$aRtS6zrJExn%$)e+o8cQ>=Nfi>hC4(WWEB=2{wvL4k~g&dC{H@-&8l z+R0(6c2RQk6Sp%A+Cb52Zfjjf<1ZPxyN+NhL?X82W|%hyf1lHfYcE=DcRz>C!q~U!M9dFqArw88+XVEymj49_$Z*MN>K+_$mlx$Mq`S9H@ z&w%e3&T45r3(BalB0u>^u}%TsK)2ZV&w>mLwRNNy6sRG&eC)D==10G~F!S&(o?dND zuUpgW*7UkHy?(c*S0OJ!8a)$>tLT!luk~8*eYVsr&M}wll(ge(b5FfrWJ7d&c5x>P z)_TzIwK0rP4JQGHNFchue%tI)bPSqDLt44dmAfi}dOP(T=DkvAFTDLyo;g7kYix|5 z9ygq6FTNFmjz0D`O;C@!%(NFTo}jJZ-Jp5)J~(O)JbV=1&BNKXw*ysafP;O1qOl&r zt7k+os(5(_$a(}T<+;NbPO!7i+UZp)^bTGuy-q2L&0yF+AGF$Z7i z+)+FYDZy~d6lO%0^PpYnMd1AxNIR%5I66J6cI+sWU_L=NZ~Oz(Jk=eFauWUbSs`P2 zkjNuE$N$d!Bg#Ba5`8)?RAxO$DGb#uoiiI@3vX4}=;!54MYl zlauE@#CbMCyW+Hx3qwhD>yuw(%I!jq#7&x^OH6D9=4i9`wc!3{zeWO$bTO6S!QK_E*n*~!KfzA z=z%5ZyNM=o_&3Hx(fxv5s`H}Mi(a+-oQT9W13g*lZ827BmcCDe?$LYMzt&?s`4q58`lmPugcpNX`qJA*4r) zOyuqtPRLKepncLFw0o_#$7%DBQZR{jTa<&sF}TRm?Q}f$y$G|+F7dhOZJ!^JPRp1+ zH%6xt|L?s0e1o^r))~&E+{L>bt)X_UVC1zVy5vvG<^FwGim>N(f^vC7OK}mFL%0DR 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

e0ufEfI^3^cPeJLv9Jc+6Biv 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 z

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�n$4+uVc64af&n>y zHvTNrdD|!_a%+P&^2FuLjxCsbxGAkfx-di_NSB|Ap-)2Ble5VBD>LzoVT^aXr#-kRP_E?*yy^zW!T+%}H)hqUOdhyC1P zf6(i8iGJgK@oO>wQfC$-v5PJrmyLP@b zfsRw^HrY#`&tX3mwr>sP+P5-gBjiLJ<+5hnY@T{`M2Jq*H#Px~{f7c&1SlGeXRI>~ zHxDM=%j8NGbb8240MjecoD;3bsCa!7JBzf&qh3degoI0T!OAC=F7heE9s2XNi^!D{ zg*5pkyw*TDTR>$xoRRv23)ai3WmVA0Km|w1@_mUtAktD!kb0|B^vdmtthf>4H8L7 zxI3T&rZm%hU?)(0m8ITvu{PSL0zFCVoW=E4Pbr|US0q61z5Zz3{}CFf-l?F9 zv8u^A&ZR^wK(#T4d{roANx50S8SPsW7vRxnHl!Bb)X-eEY#FIVqI|d))$R{|{n+|K zB5Y5Z^(R$!eCki$(W_#!cq)Z_*~ww81#3EEy!U^l%82HZ_E6!{ZF$TQyY82^WX^h5 zL_Kb_U4Ng~xi>rgrxfDJ6A9^fMnX8Ur>0y|y0iv6C7#5=KDFBA@;)ea|QtWX!+RXA3Zx=GUFp|RY*zC5X$N%rdY zx(p#*<%gK4PX^@o;5dr=lxF#Hs3YBEgAGdAe!vzr7=TE0fgu&Hjw7yHp8GHaPs`BRqlui0~y2^kal1ysJF%4iOP%yOujwJFlnmJJ< zQ|puy1DGz{-fJqsJ+qKGGh)N=@0>6jhXm{f2`WI`?@<1c_8`0#;?hOnr0H7r6hqW~ zP7^i?lM9g^q(Dxe$568$(i>-NwlsOj1MMS--L1b^KI%XCI3E)JD4#@a)!^|0no#zP zNUV$RTSf-5AMPe0S-0tY;j=ai*W)DlGhSQW&#_CfjucFfSi3CqZESC7O&LO%c3V8dvvDg$0R zps-gZo00Mn{I+fr>6=qESxGR6#!j@(kgcEUBrx?)#7+o<$6oplPN)ox6dvL*Iz-!q4~n6Nrf;(;$*o zv@NOeT_1S^bwkpij@nEkEzl7wBCc#KR!_qQdEIWQsej)Bgg{Ttz=S1 zut&3dD=R~TA(d!+2K&_y#F#E24>5`wy3!K!O6*)mYcbt1Vc`Spk@H<{-FS(Vd^U%bbjIhZlf<6B!*h)N?j&VHWp{fj^ zc{ddtaJ^*a1L@UBH$t8vm%?4X9S>+qcpgTVo@5mrE)OR*XcCTV*3zclQJ?24L~zU5 z9}oYQ232}2b{e$%ZPY5i8O{TpJBxgEgu`ArqtKmDub9ZqcErTh2gCqreMjrt$b7!; z%LSeA%GjPtsBPec9~m(0MeIG2b^q0Pcx)43W6`>+&`ZC zuH8;?gOU%DukwRtrmxLzVSl29B-dnGLo++vsIeCG<20-t1O%0ePo$FukK!u3eOKhE za&L>yU{H_-4lg;cw&MtHQuW_cwcJYAxuaNsn$-f-F3ljE3JYfy(*YdsRA2uXsT#cc zdW>$!I)g%FiFb&e{OGHBW>!j-5*nEvc&D)VgT67$~?KHC8D|fT0@5(&=~+v=EVr8r0R} za1DQOVkE3ob;v>*Z4*iGT=f7650Hu!)1!=>dxPe*pod*lV^Rrq&9xRgOC407|H2KS zji8W)dj0mU`nD@zU^zea2a{RVd0Vo=v%VlQzeohgruJ@4PZS%8Sa2v9jFHm0?3b** z62NHES{*B$iw8jV!`-d4s$c;aG&)N{AkX39tTeRm+y822C$5-7DAnyo1$z1TFf(Cs z`icrAy92fyfS4x%N%N~AiE5|YVCR)$BvUO#>Dt2cMNxQDQ$F}KYGXqR9~y1mvGZDV z$3I+%E3`4dp;8UEt5Jh^f_K)Mn@6~e&$`XS#ya_VQapp)$0{0nmQS5aiwunz5180k zbCADqB^hk^suo)(3lCBt5;!RT<~RT1c9~*eW!3@GC5nZb#lHL(|8nc2il{{Nzt^7qKIbf~3F40NBRIPy?hu{; z)dPXT&DL)duf$$3d=yUb)(04X_fW4PYCAJvB|J-n9IH!0qK$&08~a{apIXy-i9Q~) zErbM9k>)6=2(sQO^Y=r@%+&gbS@=`LvK;@4_LK0l=V^dMlI&;(+A)6a5*w6{H3%vY z^I~njZf@}6>JQ!ubg{(yC}1KxqBUlx_(wvi^Jc7Yym})#rL!|d+-0jt-xR{EODR16 z;4?v>=2e%??~lVHTnf#b^VCoht7;FFE5h&gYz}mAH>+Xq&Gbym#r9xs+PTUN8|I90u*Mm#f;{B+11}ej!x1fJ`Hx9Y({XkXC_r zi7h1p@Ibt?OolSGky3vX2*625#y9TeJgWhaNzsb&azuj*Pc}N>++N7~x z4w;^zVM)Fx1=81HEsVj+VuNuEq=2{Uk1A5@q_7@Jsw6N7;>k~FJU_;}L|^)YLS{c2 z)@t+3l|=6sC1t1{0YR!rT|h!a_NGGreCU5dqo$2gA85!SVldQTVb#cvu}{_}Sc99M zGcpbfEQEQ18^)uYjG{U6iewzz8eACkt}TqwIR)DFjP4Z~ME0Yc?XFgh7A`9=X`YXY zh>m-#H`|SY9m|Ff?pgYr{Z3yTocu8>nl(HUVw@?6wI7?nr&Bg-Z?0YDi5+eyUuOIF zH96Iw2*>0Xf_52j1Z}~Z=cG}F##I+$cLsfaLi%w+ihhXlpI_Jwg2ZCrfR+tP(Yby5 z0@*NzR0%h{XoK)ILrJTFox8rMtNy3 zH7`UW=E#G%Yoq0|2Jp-IAe6&&c84GnT0TdCfiJh-kl1J{)g^TQuCqPR1sHIpB$+5^ zswnQ0X~8!@`PW}%=xqQqSnx_xC_Bq;mxPxecxQtJUg>qCEgidVzNNDlsjNlXf5Jas z8|r**;=ik7XxYhbG7cZ-?yl^g9hGv|HxGlCZ1Z=dny?n7?wt*gLnHWcH5Ih-O~U7U#{47E9*{4XyNn zRKk5)IJGT}HE;h{zhk1X2|wuwG3G^K+<4896e z@c`}9e?C2;zp#BSn-rw)%n|dAW7Z1AJ8|6y0EFBKt3ulS_}0}#a|y!v*rvo&9ABOVy=y^C^D`U zzc3qYnylXGlBZK&Gh&%x69%a93nU;#*6F2FFlg(b`_lOQ1vm#FQ|4wMHwe zSP%v)$-KV3xJzDr5y(kPaT5kAC>n^( zH=imI|J|1K6<*u&M1?#DcRru{uPV+&q0b?JMUvHE}xAaZ52{%&HakX zT=qMyj?Q^m!qh_f-Bu5DU)=fF($yl(J;HLY< z*2#zv{JFxl*Q?{SdBKDO;qd~2@S1c0J?&TF(HG+8B_$#j@M0j~Jqk`w^vo;qydcqc zx9XNbx?lDhBDP4YOdbQX-HHqW2-?Rz0M!{`OxzE`>MESx>hLJUUgG0XMjT0yH@{M-*PXmJi-^Y14& z{4y&s(31FFnENQmwT|G{gWy&R&l0E&(WxRXrogmioBlAw9PwyE(NAUR1llvT_H*f7 zn+%;VcLv5fO>ZT{`n_g}2=~gQ3%1oQkiGxVbYgr<0v9)JZP1g=RKqFk(UAMz*QETn zp9#lHB(ZPjdI>2=f&VB4_F< z=Zhi7ue-xKWva&2r@rGHL0&%x=5?kxxR|4`SHDG^^4xOA(<;8jd0t#|I#CC&sTu-Rkc4uAK z3O^wt^UU_Rth`I+LX`Noy4;a%myz<8Q#ZX)gL`d)%>sPeJZ4M({$O>wI0R3K(!!jS;S(2wE`EnxMTxH<@Di&j?sl;M62>odqbG8z&WRY zF9F}N^};}-bdIGJQ&uiXqq07e@(ZR`V?R^Cs702%EUPZ(nEIl+^GyKvjiml#*mFLf zQz2`s>iHQw%bSd3Aw*_F{H+-7UPgpF1N2@8)Nbv~HrCrA^1PUsrbuJg11aZ2)E2+& z$Io1ukJu(Vem*c8u7Qv74vh&Xt_CGu}EJr~Mv6Mu3fc6U3-R6O&gX6Gw*!ZXrxB8ZW240bD#PIDzApE&7Ka%*SPHFs87= z_cpGtQtN~_RWb!tYCR-ZDwCvGOwoRZAU4kfWda_oOXk+_jGzIyf0^E3w69s(a${=D z3fW21I*C*iTHw{PaXGUZLg%YlBi=ZyO~>YNRl7C_WvX&WYyWke!q7&n6OqZtozF!4 zyj`qOWY%AgY_^X?-G8W_(k!63fasQ~$jrLAW#2ZP(D&nlU8Xqa3M(Lbj-YV?RO#`= z@dievK|0Xl92Lz-UlTw?gzxQaB4>LFWosRyPH-Bk$RikesVw=-(i^JUh7^AxxgI!q z+huv)I92e@{|+T|^IOu>)}3~w-@w2W7E<;)s9uL}Jn(5TGYv+teT_W*4!|U&fiSdaWr}y_bfiDD&DEEgN%^ zOBN~R=vKiu%aYH`a1Q9<;bEXY_4#KB=9V=>s?ap*^0@$6u6`6JSQ|Yz-gOQ~o2vzq z9k3K_Nmb(;iqXjPiG?D2gTphhQL~S3cUc(d6aUtrip5VAlNQiwlt^N)Fz3J4!V(u> ze^4M+vG?NH*5%7C+7=m&Y-y!XL*l2dZV^1-T~L7ztDM6K=Pc%xVB?+tSF^K)u(Y`+7BK*WQKJOdQWJk zJa6N73+;GnZq=MwJFkc1G#U2K^YYTH-0ZXk7&I~EUm-*cxt|LZ-R$OJC;Pl+GwmM6`?Z-ros zO_w03Llc;qc>IDvU2Snr!AiTPA7vVN+fdNhjb4w}*%Jx!k|`^0YX#GbL8fK4gzJVu zwRR5mdFuHI@^2x{aLKeiEGd0`pmU>T$A?H1XHvPml1sgLE5@9o6n;5~Hm>m9pZ64w z#(_B`tDUO=F>`ymjSKZ0&HOv%{#Q>(Gj*@%R|5)eq(vW0{?Kk8>rOxrl8q6h!_zKqa)iA z30$>t4*qfwb`YyE*YZX0W8XZVu6SG4zKW)?5vl%kok2|?C1o)0 zbZE}4QT5z4LgS-nj>78wRsd_qQdjbS02iWg!skXBne#(pTsX(x>=}zJ=US1CLaUuPfa|Qqb&XzBVVL~mg<6)r>KIqOp9$G@f}Owu?_xRbiqMn7))JskxtJh@F3aj z8CvIAMa^Zp7!6opr41El8Sb-Z@vGv-DE^j_O<~8PXN;+KZIuDYX;nB2YDl0s=_@81 zePGs>Fpojl+FM}KuX;m(58h+NdJ{M)F%u;qTMXQU!Bd_UJ2yA5tAaQzsC=FkZ#z4Q=E^h!*TGCoX9a#)Xe=WlW#rY&bNfwcU}TS z(r%z?n)tcq7y;y{u&E711SCOcXtmAy07h2JJpV~Q)#!i5qJ)QEMYh; zpDrrS2&&uL|07RA2mL~0AH?SR{Ml_3+X*Rb=pY&MNm(wM5vJ=CwLzzqb?A9w|6i+tz7-*f#zjm2zd>t&bt-A;jyfil>#xzO(b@ zo83+>IY&0mMCmf=h6;ey7jg>xcL!?#4)*d9>d z75*4;#cjFpoGZ=HC_$B(#eB(U=5k?BRP@v+jp@ zH2Q43V?!EMRv)OsQKYQQ@X#0v-`lcUYV&|+TE=0H!J-a(7 z<~PgU*Js#sIG?1Tmg^sB+|NbJB-c1kN5V}FR4M(nY5~r(5@S?vgm3Ne-4|n3l)N#5 zEsixn_sqcEc)E(Y1n0pWEiQEer2ovwDA(syWpy_n>wzydT0u2rt+Y!+>He!_0MAvN zRG;{vZM&G*(SxODJ>u}me*FirUZ|TembdDPaU-XO2a_sjP#-V#qwjGc=*x zF^yebDl$S7Wq+Fj-rl?Q?Fy>XM~k2-%+; zy*t|rSVU0b{7}MN@L_dkRCZyk05@34<`6f}@g^ z3)K1Lf?)}h|9_DX<$p!O>jgBU>;;j~|C>k%ugsP1srVuzmWJKOwxyw7cP6{PRtCx4o2CZ>nV{EDTH<`(!6;OGG?3^bS&} zz6(b_CozSvD5&!9?P>zIq`iglt8LOq1=9Ybw2bt7{k@9d$=IkdPM6yI0EHfIf>y8; zqh7=)N)LX?978STUk6gh&Wr&f!`y=$GxW$nrm0bTFY|BCD#8b^3e4soD>5a{D+NcG zfOk2CXW=FNyW|JBYHvgRuUCEVXEa~ROXm|=2VejjYo%ZMy(va+qpQ7UhhaPyhx{K@ zcRBe#rRitF6oS{3t4XM@WeLy9!L92go}TLf;fsTb%rDr)!5;Z_*8&1HJiYw8-|8dt zd_$06yJ8Q@{DbMnx!$EKDFdTnT%hSpQ0iCCMoB8A-Z)ush`rkK zV8hYoCADKg7 z>$3P%&T<@wN5>4;7$7uplQcNLNrr9+taWklDNCE4#d%qmy=EkX)WD#iHJd2eaIY0+ zabD2@ua~FdP+1z}X`wM4)VtRLY{mY9@>ZwT1SyeY>jcgF7rhIg962)ENMe?LKx8*h z?-Yf>EV^|!QeQHw4CJ=D0_(CIoejn@mb5#iSER*nByqAh;I^ddTGRrC*m93HU>D;0ZiN4DHepJYfk>#sWd&*_|X5Zt2x| z_^9?o8k0cuJ|JWv&U+THw0nY-sO&lLa$jRD10lV37qNH#y!HCa`BdM~yr9RKX6MH< zg3Ps9$KVpa&BsAL$slRnZV~r<7iDuUtVE5|Gr+VOrg)pOScVmG#5Jv~mwmjLBOaSs zT)FDm_nGF|+^(fDDXq(=rqv|q7#@m{lbH&YL0dHCyne)KOgc1_K$qD|_}rtn1(@Tg za;2l|6N2erm11z6*YLnOe`o_lSpi5}o;N%)5bCt}x-CO<5%>-`EKyHP0V|wO>c7g? z&@bh@O`46!+vau&9?ON}NBPpo4lShLNr|l;n&AYg@>quhO-k*(U&8Q?k<}EV@`RI0 z0KDcFr?S;TnFXaHs8%paFVc_a4*EoXMOF2f znqQSe^akh=RwTC3QzvN=p55Qao>qpV_7gH zY+IwEr-S6`L2fxw*7Q?wYO)a1-MvED*i&I6_z`7bn|F@xFJX)CeBW`{I<>!MEb41CZKlZNbX`)(hOgPNIS-gvNEwQeU6bX zeOv0pT^{_U)@^WrI5?s&>ti%~nU&E2V2(Jj5iQ}-SZKo`SVK;6iFVdM=S)}OiU>W;qnvprS z;8H*TOdhEvYay+S`4MJU(Hv7#)0`>uPFUT_5%G$a*4Oz7zi<2!2x%v>I{zd&cHiDv zbn&n}M(rDweQ>r4k{HYL_u0nQBFfH&HaJa$jOT3Uv9BN!hkDZj#K#u*Wr&L&j6TQjr;J#|3lvru#+aFP_+=sQ-Lmg&@lbl_8P$nTl$ zkbi9kY}ig#5*a5gt6==NecMR3RayJvq{G&&PFCBp3{#u`%!=HgJ0xH=C2!Pvu6hw&;TV;s zMpivGsjm6(ud+&VT`Q}$`jn_O5!!AyQ}TQzs=TG!oz^ORBjR^tfgd={R{{rO>`^_h z7tLJeE*Cr~G0AVMqY|hp&*D;X_Pd!wsq9*+r19g}g+)gPn-EEJgxaR<*s?GS=N%=yEws>D&U)%(?xn7o;BElB%v(_Eltd z(4&jWNORbaqFNCSgGUoh``A>mV#|D2WS$ms#Ae8=#di>w{Zw|t=LKeQrnyxKZT!tzlpHx2dACewxMH_b=_1yNeZ8?S_` z`3xhR2^s@dtpj>I;Ak|{xZvu%qS)KYt;Mlm+kFsl#o+etzQ+1!>qeROXc>q5OiV=j zEqJIPMFx1v#z-ZVI!C=TrOSff*Ossr+{%#^R!6&vF0re!>rNcIBF$@n)}T5p!WqSb zHILLkLS~|}BZw>f%THb5ea64t|E8m;EB=YryEP~!F3gi+mZo;vc4)vgVdgJWK1Rb= zo;0|a%qF12(DifM^~(JGj3gMn_O!Q0r%yoU!p6k!d7 z?|V1uOd7|lW3cQr7=9f|3n}H5Mk~FLZn6?>D9cLEM#CXwLZM=LT!N6Py7;k~;g{6o zC~QqWY6t+AtqpHf{zOD8y(y)>bZ*bDy(Cw!>*Rp(zkK8d$CKDP?_z4eQO zOK1&LXkgTxs?W3nOx}WMrzL*ChuV3@*8#dBnAuD{=8Qea^qcG)%tovnbOU#3=_94l8Kp#*t|`K?YXTx&CTjFZWEle1JQYj^iXu6C997xjNE86#4rJ zU}+z1ggy-{1sWFgp7Y}M1i}ZbUFwVJS!49)e`a(??p2(lPtbC?HO5dsz_prQf+Zhj z?#Mc8Rrzh2Ii^->eMZeGj_){0<45BN$gkBs~R`@F{JkhRV> zDfQhZ;%5EbL;Z>G#~bnFf#>;_8Sm7#?$!`O=U3E~*38w7hVCQ6_g?nUNA<0y+NOlM5w#vuz$HYovu0<;s9^(p6`18(*J4FY$ll?|!?+IqFuvyGi*sPmvF_`4{# zh+<{-IeGy7&Z=gn=m*^lb`MeYnT+GWT3Nw9HT7G!%k$%~!8H#H*QFbjIqq*y(xC$p zu~`@USD!=VV(PW$j$(5om31v>^~5U3IE-hC+s}JA9zx!Sc9S)%eZL zBSLG45yhyQxO3Ain*Jud>Vw*Voy=`Vxw~% zktHy>w<=Wgp?rw$?b|!@dJ|C-shSiWU~=>0Eg_i1pEiU5nYG59x?iFbMN9K$BR5%+ zH4}k;n_cJOe47~(;uje+0MP2$zZ1JSaKl9IeB;|5$D5qMpIgIX^gON3O1Mf)nSRlG zeNTP*qIY^dgSL(HucNv=x3ly9!?Mssj#|MuT&`u~?UAKY9hm)xf-;QRL<>r{c3uw6 zOlwpoDe)#0jkm?bc87^lwP{4HLl&LBudmjBqGAyeK!Qx9r#YZHucmK}89W0%+G;Vw zAkUXF@CZt?emsY{@s4OkGJw|wD}Sw^kfK1c%V-4qDKux9HZo}9>taWQEYG&z5$}XX zga}pkEChO#WGoV;bpv{p85BjrseFiB$1ssj3bRF@{7YD&6#~! z7)2yL*5q$yx+Iy4U;Esaqp8Ny0+ z%`9L92DsLjA^+hPgud=}Q{h_b-HLA8eYCxJgnO`k*0|+#&B_WHH%>r+Cj%7@<9z9o zZIzZ(IqG=hOXzXQbbUlA0)wEjyaODaC@Zq!=C_5D*ifcmWhZ5=;Xh@QcT>6e6+&ip z=yBCX7rg;#xzE)%6cCXW7{cvL%)>s9ucwdMwnaY8>u}Z7RWEQ?9bM{AAyqM$q)&0D z?2Jz^F3`@Hs{b!feF|qK&H64(>WEMa(U#Jg&CM34*7u(WbCmTfBH6U;FHXJ6U2tKRW$Vhkj4Dx5`jw2~cA%(^tJUW&|@yN!bQS+~)wiE07$A_YSe zX@PYwFRv+A%tE*rPahBuf%r{swJR1TXU1)xr3%NBdR#AguNc-nWIRXrH7N7_ifciB zRHoHyv~+5;6zschZjH0Si4#Dg_Dwhh$?=_!Kc`_<=A~X6jc0=C85>nR{9+K()`9rk zWw(BI8DN*kPSn=*KF$-|n%2?5VNc2ES{c2U!7lFJyQ!+PAe{vuZgPiM^VvKuBMlv^flaVGWgzQz;!w_XroLZxgmHzw@cjvP*KP=i18n zd8CHTIUa7@rA68um-9crEleRf2G`xgjv^_Wi9mmti(1B-F?}w1N^;S8$yFUwk17t+ z6(YpT!-QSEjT@h|^s{B-4#Jyg5!HG9h&S4tpNXUDTS3ODz2qV^X*f+U$m|uP_3EUk zY_?`nb&2$c)fl9kJxj9a^QH=!qT# zCnwEWl1;!~%Bn6;_$dSWU%z?PI=YH7aczWj)!)Hk~&qqt46{XknJ2j=-^f3mVLvw zjF>rHL*O5hnl!_HaGmnkGt`H9dNOF%mkXi{MacB5s>SaZ;#-)}(oxtiYhjYn-dHkR zY^(=3Xo7L?^;|;5a(=2)WKX1dn4g6G&(UZxE_G0;!E9+sRi|w( z8rLxMm&=9AWSfdJbnXM8?JoMEjf<3l4U?lVVGuW0$r!Ncp<_=D8i^wKvp?Xcu8gOn zCPh=MxRaVb?RGA#N?x8B42`&4u1y+rQJlc4ofSN3Pqiy&jMZ2FBYA{F6V6i8lhuOH z2mN#m!K2@vLi)7Z?aka`cvHQ$57Rrp=)h>ALg2I6l}Ch1Tyzu%_2H-HB04xTB89?3 z`X(bsqsJaaBC;Far>Bg>MVp%gV^spDX3}HNGm`|FmJYHc>B1<6XKEcG1lE*o+UwIi z*Jc?LwQF8(hi>s#PvdA9Sw2j->LDJvgOyrZXIeatUe65Yk~V%eu5ugb|N3brQs7^- zi*w;Dft{dHq4|-nHJ4`(ttOM^HXKu0kAX3Fm7AMVxnIQmMSAL@5#795s$Ao0C2k~9 zb>}BeITHy{a`4e<`;l)vSou5G8W0!a?sef=6q#ZJc=SOEwq<yegpcNBgXt#Sb`ws=x8F11(q%^t4on_Jx zvg?JhR_5!bthmAO?TR}FQKNwd)48?@;Le1*&X=sxIw8^t%n~H`oKIZra2Djs2YtO2 zHJW)|L4)fi zqm9E9{1k#ER<#joE@tPchVGG9U6G*uwqaiQbUF2l#{4(oWDHlk3&rT9GfN(X-@Sm< zW_|S(Sa&||l&OQ7`zL73rcpaP^=eQbKdE^PgM|Dob|yVtbt`*V2IHHb`reQ$4Bj zEpe4@!wPmPsGTI*7>dq3f_0w-EF8NIpdEcG6q%fY<`vD&jNJ!QTQP^+8_1)jIe&ZQVX~RQiGF*RUj`ik5%Cr60#`BF|&aJ(r)V5LQC&FVtxog|-G}1oAxqe>D z&d^6S=k4N`y4R`~u;kZogilG5aH%1iOmH6f>zrdCnHH2ol`6E)je&RGU`CkinLe2P(EJu9JBU&Yf)7FGWDfklF~ zP_fBSv5auXR%N~kHWv9a_6H4~J(Y!&Nt>f_zFoeY;A1QcYt~TB~ij2wA1! zXHDHbmCTong)llK3&^7-g%20fcg@4q=q@(?qD2r2Gq?o-!d|9@O6tw!g9Xg`6LNRh zbDF8r@ADi_K?6YVA}TJVfvpTiM+dg9_GMz|uA9kLGTB*dy;>}qx^6T(;5PLAzo(49 z=bQ47srO<9L?O!nsb=`J`7HvQGan@Ypcnl`mfyDr47J5{0?bZ;A;4c)Xd%O8{lbs@II&`o&>iFSpz&;=VMp{?Z~d+Wv_u0B(C4#e$s$dpX1V{<=AL zXA=?A6h?H=9nY1gj99rS+ceQ-LJ50L+0DZzJGv1%zm&+$k;w(SEVR_-)D7SURh zfP3lUJko-{)v=s=z&xtpJeuP6x>EjsV1Y&`rZ$S0&@RK#p7izz0GUi78x~EYEGdzL zo-{W4kTPQL;8VqeOrC|wupp5`7Z&db`$j|p&yJLEXcdGv)hg_pGI;0|(Tq!3P{(sA zD?GwZq9=36zS2Yg?hi%kZs|#!DN0OF6cMG|(;7XNks_28nqeO{6&GI&oZx5^&_%DfoF(tD2O(3Yeik40#mbSgCxF};vD08Tp1)rLrpvz8U=Xs_G zhfpz*DAy>J>Sxpmp$|6{F%32M_*q2x*+2X$irD7S~cittOvQu}M&n1`NH_`FUH01B? zDi^>MH=sTheZvP96xGiRf+=&d>m3$>r#wYDE&TmZD!dWpH8Dr%n%6u<`7IrN;T6e| zyOG}uvp^3Ku@fy-Mjw1I7gbj@<=BkY{|}_lk}>#=Nvt`5w?UVywJkCyFIuV0#`pv- zyTC_%n-SD9;7#hC#fDH}s1&Wd@Qa$)p*gUZ&%{7+TS@+LgPG|G6&{o2HuBPi1_%rx zETQP{MLWAf1Inm?h^F?UDM_2TjMjdLZGPh%_a(IFE<;Ucb$~18rorUUNuZGm$|DmA zx)RQUI1R^n1S74q5N^LKbJKB3$RMlf&`eTv%zBZ*WXexNd?$6M!N3&{BVd9DZ2x&D zRi#TtLNVPp;4nY~yEYAM)xdByv<37avxi)m+8|KDYE9eMNcEde*e3^v+!r%i|M?bQ zSSnjL{2S$q0Z4OL{f`r35b6h3-`Ve1-Tl0$u$<~j>LVmr{jL*duw_V2>UUi~D(GSi zAP<`mmR7L)b+hJk&KWQJqk|aF8$GtdI&!Ga#p+9gdt)bu(ZpS`dUTs6&bdO~R-mTZ zSPIN^aALgDLVZVz^5g_}qOBFzW(XSLFC>O%{7$5+V^%wjfN6C7-|jd|?BD|#{7U-k zV0LhDNk0FFuy>3R-HqCQXJ(IW+qP}nwr$(9$F^5elT4@!AMdVG}sEtTCwBv3z<+hti<;?mzlmHkPR)85kvD zrNPI!fAlQOEYeUiFhXnP2I0&s&TplmH4i&XTTdeNVVQ$(=a0)wpZRi9L#=AY+M*6P z9asxmBG<>u>4RTJm+8kfF)I);Zb;ZMq<^~9h=UmUs1p#}Zuv_IEmJlAm8_)RWfq(t zBYmBP;7|D8cdEw7!QNv3+`)|+8}>h81e>Qe^?|jafY5VRKcfFyu!ow{AFUd>RKkYZrZj5}e*(x;ZS4VU*;`ZjnPaGpxF^?xQ zmFi&*BJ$*`Gk0FcWi^Az(sf+|-mw`ZX#79+^t+KPul1T9t4_FUN=S*(^XE{WQ(CZM zPx0S3z!mEr??&7VL9I#0e5z&r9i2ChCdw=%G zkWPQ4aQVUUGAfpUcqDZ2Gnm&c*&!1UVEAGS7_KqfW0&B|lDaJ$d+~mhW}a&C9n86j zR^P;{+QwLznGCMA32n5IW#E}gl65j)uMN~|42c#pT~pWn>>g3zCJT&r9Ggsh?L4@4 z$aw3tKN3hP1&bNYWg`kTq+!<2M!Sgiz0o&232@LNb+ZXmqK9glTA!bVrwZ#^?r%p2 zf|SJnKk!E`G4Y>aDzLt}-O&s}ey=Ox7h#V&Z*-fogl}>??8iTCT$cYaAaLYF@1#(& z6d*4$3NIGZwQ7BePR4mWn1Ogqku;< zLHkf09QDT41e4_7)qilvYIYPTaeiPYUWwt4WwS)57|sCPO;rR*oldO4!9{7QG2=V^ zk;|F;-ntuZe>Y?KjP<>g%AH78-zPT*M-!7PZU&QD1%%i79Y?Xje58Elg=(mgw7CU5xp zr=&ETrSQ-#i)_o*64bOd8gqQJELa60+l52p$VX&$z6q2wZ6FKL25w}Pnf-piRD*b6 z;oyEseX&i1mc1k+ih1HfdNv}At<0s7p00t2p)3S&-LfJp^b!6&oOro~5)_OCMmS9- z;{+FRuaQK4*0IYt;akBAdnuTH)<7)eYqqfxKDRSm2K(X3dTm~Ip+VP~(!63doQe+TOh%(s`> zcMxv$vO6%A`DlaQv&eG>hviNc3U6&=)o75=iH6XIQU`cyhT%oSw^$a63Y4yRFoB?Y z7K_fYezw1PX&|ZMxTkHUxS-C{-*fE9?47k_%h`-swqJF*z^%GwbT`9 zExg3nSptj{a(o!_X3b3Q^|;~k+I@avzr zH|2o#H3AN^txiFV`IO2V8vbMhZ@`TYAkQa*D#>~#9+4X?+VM9O>U~pec%nG8p89@x zte+?3f+(#qr!<~Ww^nsr3_uB5Q2R|V!AauJ1ePg_BY3_#zPA;dtejrG?_|ZC^g!_l zYPtjp1Muv7-_x2;B(~Ei?QwEMM6p+sT3TOzjd%DNmqF-y6I^pC`=fed`f>1rcnIgJ z{_087D}@`@MzyaV@mef$2O0K*6EviIq`$++F-ml5eEaQx9E_O!F9*Y3zpi@It%^yA z&o4fgAyR+kANzNCt`@JfQDO%Z7s7yv$mVH2J7j;;<|smhzVn|aXQo(jfgzy=`qi_( zD}hFdW>&?*W6d11~vr)y-3WeVA~B+NZ#(4a@n^^BU8A4~xZ%!@ZxU z&zdc7B_9#e*mQrlyfIKb$_9)C>6b!fP${+R|7BzcYUG6l!t;yI^)_>9b-C7N#F5if z0x-o>7nmIV@P*JeV)7784(05fHj5Lq;h(`V+uT8HGtktwlJr_Z!9G}V7a1Z9X0G_p z+%AF;ZDU2B^F@dNmHwmyer_6=xKhrHi2_JGiCkd$^8DJw@usKUt_@^S?>`rCf9S&u{N-epS3 zoQrux0e#OzCmsJOB6d2oOCM*A+4<3mT5&9$Ei%kD>QQijkTH-3F4rlD3*`Clxf0^F1RawV9Dtf2+v2w^_|jG;m8=B#7{(JpJG5(v@7 zIT?N(y(24mK*oCrB-sg6Utj;sbdzr&o`p(q&4{|;)gV!pVh%n?vEwdZlCjuwB1cfxU7MBd%$~(Ls_uF; zbbvtwQTYqMIRnXD+wQYZ~}K+y&DS@_M(u5UTAxzz?l^47El15~uc$ zK#h9=Eh05Fx>v@zQz6>0Q7y197CqY(Ii7Jn$jOnQl+*Gh#60ZMh}UKT$BZK{YY5P? zwjDhueDd?sFaFwS{aph&9u=8S{L7gLYybC;iotr3jFshE>=C0nOEQ1lN=ZQB1i}=! zdu7OnNDWB>XsyJ4?5CC{C*K%j0v!5h2E!>Fcenyrmn1e2@BH0@V?x;z11Z^@L<*N; zny2pM?}Z26iXpo8F?J9JAv{u^ic~!XH~HvF0i-({)H?3QhM*HY3S`61M|RPnD1AtH z>mu7i&@>@rC{7h$LVS|GW9couZl3JId!&j%6v(?*-Y4{J>XY}76vy`^M;v{*R)v>d z&1=N1+91m?Wa<@1HNvEYTI8&u2TZ4m9Bi7`n-o8(Y*nD3-9PcNF7$?aEfIvGj0=$= z)KXk86O0q4T83NtOTrPJ`-w_T6Yx5(d7tBn-3wYdb|=+jtgYU3q;_FTBJ#LlUNn#~ zI=hE8is{Np^f~FRz7h%=!{(+RmXr+>^op>dk7#2oXr~AJ-9ZNCX#b*0h8&N!*TAJM zjV%XQojsce;{mvn=9?0)1LQo&3V#$JdwRk>Cr9NhaL?~IGV9UDrt6MZT^q{L=%Qh^iuTl5JK{_S#q>Pj-OTZU$(+1yJkPz8c#Op6 zWw6q@nppAF^rW!FUdc)KLY%R-^G2Q|_q3Fw>=*fb5g{WW(CXbyHa+EVflp*ul2v4Y z6r;t(X9Kp)q?I_yXj1pLQ^F=!I>6{YAsNYu-l7(B$0_z56oB2-M8}$AcQ%e6wa+_% z;HMV=J*2EIStoxA~y6lN7@U^Vo`B3geqn0F73tK-Fxhx&t9yr5()vlC0Q zQ9UeqIao|Z?3ozz>WR;zupjff)Rv{l*047%f2+X zV;FrthQlKPoB-OecVlJpi$*dy5LCH~7O6xr-g za##m49hDKMvZM>#z=w3YGO5?aTU*3Ls+ONPss?#K1)(td>o$!W zZrS#4C$YffgOyp@Usx*Ia`l0)NTLG`=c3_bI`fcwiO`X*pksvg;1xuJo0nNK`vSp_ zXYKtsa;NY8IF9DuU<*XD%d}ZhSbB{oRu1EjDODxYBf@! z%C#NjHKZ%C4e^RjFS+QI-WM~lyp@*6nEgev1d4e=9Ys0+rZIty^ z&<$(Nwv4ZWthcn!q@iig!R{!xs6$9YkEfms(f20QV71h_ znca2*D<}xCC$1}ZgTrsfI4salF%dsUH}b_k`)sEfBUUd-}9>Zaf<|?B(L9n5smJTKcMkUIt!HgSCbMV+}ys5{P0apUQRG zZ3lH(_#rpa&BeBhdhk?)7tcX<;Othkp-5~!V9YG*OLAgs=^0jY>e|b;h`oCB!x8qE z@Oq3|XR5&6DHZ=+vw7p8)&OY@0gR0``AMx{nyj79NoonIRdoz6lq$&dNS8c*2-a)C zD0T+gEi0qw_&i`x5Xp!U@us)GL%J`7s{^_}&Yiz6#*a!8P{gb{h!TYDG}^#+bU`6n zbK4FEs%MJGhxwujgM`uRz*1%^kZfv|j%`j)RA6t_jgOzB31b=t$xq&Pe0R(b>}%D* z+^$BXm+`O@)Fvrt8y5d2C~*e+iv)g>{PaPq*q=h$j}Xx{My`nsquV>hj0iT;g;G9? zY0sRUlagu$eOm3`>_65Dc>&;5w>GpmA45A#77o;fD43|#WBkf%~k+F1y0BpM!N;73g?`?-UPW7856A&(&!;Z3TNi&R^DTs5gf zuliIggV6$)rbp8_6j9+4oyi-B6FQi({8OGOmf`_K<`dpvzqYFra?R@8O{s>l?#lV(esbNu zfDfP1O+hp#2G1-6(-Qm(E~nO2_290DY)D7Z#kgIRxOd7qKGAd^v#4o!m0;fil`hsi zAe>fCO^>H$FkvWuF9*dg&bTsBZQK*jwQcG$jU4s*6Qc<8LOG3~*FN*zNnD8^_z&VC zcZW9?p~yq&Q~1xe;?)c3^aj4Vdn>MufNjFr4>h)@e&1TZX3O|O7oI$fpb@HcCSn`f zm`1IIvP6(PjY*wY$S+-F7lLfWBJ~FJGd%V8uAX|b-Fk>ObVS;!ewXU806>wRHY;lK zP*QK#qd?~dss-1y+Gx&?hi?>g_``mDX9G{eHFMeOkHNx;m)kH7LR(7!ER4TUVP2iW z)&)Bsp99DfQhVM(umT_8Ihpv^5R@GG6O!cDkVZEC6OzCd|K&2Tq1gwWKFly>6zgvN zmJ+t|oaJ)vlo3dJqz52m=_%fM7yTgAH)Erq3Mx)LS-#!?-1?V0M`X;Z(3O`3b2=3M zokD~CQr#VQ^*6H;R|Xtq_Y6U?n=a;bYtpta8p^H4u_+?_hQWypNN3E79TrYaE+-hX zOC9e)ijOSLVmhbF4}nKaw{My6O#HhybnV^HW%kNth3mFFz zM8Np?)aD1JU{$h>O!^}?CODfO1Bk+yLlQ`_a~%i=8-?9b;Y!#qNDvE^*d{~CPU*c> zmpT(c!%i|Bscq;uM2r8BUbR2u4^hY9xyOM3-byYSdy@^5ka|9yCLxb_S-{6q7fB%@ zPdCmIyK9q|EY5URVCq7xD~#-{qGw=ADgGx$nXVH@+#c3teD`@3=(bXhr^)1s8EH~bT-uhJanmE&a5 z%-P$M*M1brCL+`IX_1^pEu2UvJq0tO72zGaD((@5@o z1hq296gZ3{f;`a~prmBS2>YDzW>MHH#ndHT$ZQV|{>2k#!o=%}yW?5=C5b2`NtLN!t+4G9>^V`Nb$59?nH~hafzCY(N`DbdsiV}72oK<@F6@XIES_X z^!5|(S6IO!`*KJ^*G2(4AF(S(OXc{%4UmF4W zo)9JMjAWj6n=&eE2|G42na5l%=bTb5ZS;@N$vN+>U{+FBF>PN8D}oo!$fA^gMg>PW zLNRcwlhL_*xuc0#foUuxu$h^C4iMu-*#4P?=h~X77@d)I$RXFMvRNR8 zOhvhRTe@h+Mbp$|_UgW?A)Y#4m&YM);HVjxdaU*JY551!`gb+`x(}x4bjLpqiI)eA zm=x(*IzQ_JU}?2xZ;0fbR<&HyjUE4t3>gX{Z+pH{UAe}`#~4{2qpcAEo@_|#?wR@l z=ne21pjBHzhqsVa2C1~ae3TI)`MCrrkb^ZAd4+*oFSa74AY`5jAvuBdQA>334-wBv zPb1l#P-t2}sD%PkM4~CB`qYE{9w)Y&t-(zg5aeBiNwO-otKl3VeoiPhxD=?A4lC(9 zK@;^6aWF84=4dCNAe3_$^SBi_;%qB1g$HyS)#V_1uX0^BUgBDMSyN=XNQ@csYmvg4 z&+jHO)P>=CsY!UZ#3X5ZFbqU#xA(-Eg=<_^h`Ft9^cCjk381j8?E!7KYTkc^EGpzK zjT~kkiGgCf(+^@j?S;?l6L^LlkZUKVv6kfI;F#?Gjc2o+-~Az8|0>TCu(TPRo#9cB zfl1%J5+kdl1-dD7V9VVdaA(UA^>pbt@P-WNapDPwD_x~sIUIQ+pTTgtuOqe?aA!ybVd&W@s%Km6z17P zXG7WQaK3P*4Oo%rMK_6%$9P@}E*@;<3(4~|diEvtG;!cmzyBKGWsVLgNGQZj4aHhQT@p(UY7b?)qm;-4NUJTRod#P zB3Cx!Gl@$`rMv9&`6Qp0A`f1z)D`G}4XH;&}}kYQ+z!v1<@LCkEzt~{l&b?XdTqJUTx?puQN z1oG?f-$IVMr>Zt_{DG`pW?z#Na8y(9oFi?|JpX%kUV3EYtDWy-_>s0y6ul{F#{ zUBF%AUKV#g>O&k}00WQZIXL8_!3fpyOB|jRa**)|V9|CNm>{_S7muI1tP z#xAc7u2~Qax1zZ5L!rWy_srKWORE||%`NG~jBuG4T1b)(03O9x85#cc9S}Wj1ip#fEb07bJFnjp83-C) zr#jN+YKbe{nkJu>%ZPi%ZZ@R7{c7BgA!uXl&mw`0m=CQ#u*XL`e2e;vKK5+yg7{Bm zLy#x1444_(wzD=8TC@hrk_9QIdQ(uNnU3A!OJUiQnhT51EfTI}dRaQdS2*8(ISnFS{LelN%zjba#A83}RHX+ihc z6cI=Sn3s_S0uqoEs7mxo1h8U_!T5^=Z)=WUD1JZWY|P;7VPx+F492<_=S ziWktS-c5I%={z-91joq+LB33*Q0_Glz}<7LbjmJ!4Zf2baXfq@(el7_#^VT|X*G~n zJ#^=#*rroM>7=PCt_YMW{)juV>Gw2(#o>&{mtryn6*&~1WOC+5=cRO!KhRnObH47a zZIj?!=JdICYy>pxTJxesnhb7&snaW-RG1_*I8g@IU0|3j1J?$&z}&1_UN`R-8#Kf> zgc3x-r=wr{QwAu2(X4FN4qPZFFwr>V#0Rda=@Tpp<4RV&6O^Xj9ZlDdy(cZ;wy-kP zEciuYz)MI+2N~Kak+y7VfzonWb;Gwcz2M1;k)ul)5}WM-&99bsaVRHzAKke$j}ZE| zsbvYLd){gwJhXRV)2NmlzG)a=v75&QOA^bViEpoDKMOOfSqpE!RqY+RvJLI0w(oJ{ zHd6#EFHTPY5PDJp$H|9Vq`vZo-NOXG9v_uSfDHEeTIz1-8rxi7TY92Ff@@pA!x9Hj zlFhY@%Ibn2RN-Rewy;)V03tlXTJS@-s>z`AFF?CcECNJb0X@c+&opEMt{fxC;Bs=v zpv+xLK@NMGRr)OJ?FZjRjLyi&@n<3Yx7=H|E%S%Rn*cVpfn~;rice{{c4bdVIFI?X zdh49_-_S>7IBtq2#;VvofCeGH(Ml-{my}$TYz>As1<;y5PTN3FP=7FfFt~r{u1W>% zPD*fy5vz342HZY(ugR+`j_{uF`Bl0z8)lXqDiq~&O$CKj7@#s$QDU5eTZH}S*xrJd z9BdOhA76t)!xrv)l!w!=tB&wkH&T6fi1$tRj7tH0E@8Nq#WaCFLQ%Qq@)1CjH8G94 z=(KTWa|{8pH5)JLrwe`Sg2PDCP;3$o<l-Ku{6<9x=^p%X;~d~aaUXT$4Xhj&OgC|3fcI#qq*>*XsX*IVaD~nT#oVh#=(EO1 zZDmTkD+$=OB?1V%?~fpCL`~9WB}7d6_Iw`+*-LN-?m_?$sXa1s5v_hp62sQ}ab200>paT2t1`lc znKvh}13*=Sf}4dsy!$fNl}j9cU&yYoSTtuy?+u?6rCW{wA%QE|9u9>5LA=J+BL*n? zlaBp&mB%jZqWZ5uU)z@jG*H4jo)tn`o?k0?uU4>-W-y|x>BNZ_q!?06!wt-c50t6E z?&e?DTuX_Q3-_${Y=-M-TpP?b`K#sh2X88`Il8Qm?b3aGndeat7Ca?e7P!DPFqC>$ zsw=BuV<5CMM}sB^rQ<6@i5~l7n?9t<@Q}YE#}6Na=Rf zIRmPKRr<5klD#Y+oE|nb<#MFexEUf>svNBNvNZMD0a7R{0%#n{>dCk^mk}-|K8M4x z-#DcHN~b1U4PhVkDXiCyMFwM%7oN5cgo!X+9jRZ#_B16Eei%QzPu@;zCw zmH4mJ{nKQIyO!^CV|~9mzvH~HL7(l1|0?>~oPd37uAk-D5c23nz+|S?R9_x-48KR_T4`WX7}1tcuzgjevMosOdu! zcOYgso}}?+It^Dr>o)wl;5xXQxYa-1WQ-A35T!ZK8>6DI1(#T;wpF7m$szfC-~YjnCJac%5y zt9*x)=-!Y{I9Ds|-m|N{_WweKk^EQ{-f5oEVcgm!9{V?4QX zyG!h>&ECZ4_YG~Peg5L#Ksib0@HVEqP!hUgad?*D%Nw-Nd0yT?Gs`7o@LfQCGA@3= z|HWWMl=H8vWSM^-P+kEGA_o`+B(7zRz`yp&!peK0kUI?rK>P!w=H4UnuND$jnVcx~ z%6m$%w1B<}{ij3Vms;n9f&KM*4&FiGd;W!r{I2bSDT`6 z4Pk)erH>mUX51^8OAsk)<+sAzq z*5<+KkNP0sxU1b1wG;Wa_?PU=J&k7dFGW;oFURCY_)CGyBQ;?!!iTc3iVFsdoz4fj zIzzNr`2dzqeH{Y<(yB^W*4RT{e-)25S#oLOXq;d2gh zywAwHdF9*dqyzvY&V;{}^qur-kZV8fw8C#|TEZ`vYD(?lG_|kYleLdS`zOLn;9G$K z*W%p@%F@Kv${sx9Ym{~qB$Tpp7jmg(;yL3x27-!g(|Sqbs!`>7unZFI&cij+FYIn@ ze3%n*wT*lk4pz@K*eQ+_X@jKOKYq{K&E*co5@=t(gvWg5FFEOXUZ~VsEdjbrLmtsI zL4_un^)ha?%{xBW1E_he(ZlK`7RQ61&q`=I6-5aZ&J5_{)#1A86%!pi>B;HID#^YI zfX77d&6Z|-a?O_K`xhv@ct!42j&0?RuO)lY zzPEUI*EfSELNTw_XEWorEXzI(&Uhr{Z!sMW%k%Ts`z@PQ)gM|}b4FeOW?3FsR^NlV zhtp+fly}<(O{rB;?9*jbgzp#>lLhrkNb*C-6MuDxNC8Uc` zA(BU=5Y}M?Y?msW!3aM{C)k)l@GB0}wtDBoY-kL@j@ra2MCg-h**CH6QQarV?T+{E zd?u=2F+O}GI0NuqY5{r?PXGQK0h$`e3f0F5VNN$vKJ}dzh8&MpJGU|O^`665?|1vh z>=WM{pCGcy$>nYqj)1If)LItBfwqU)vR(y~oI`3B>e&?Q%o^>#bkCfbCSMZIdnNg# zC#a2g>ECwGWb=CFkR!-Kh_n@RmO?LCR%xoQCI*Rv7D1x+!v*JJ(?&gWUl*?8XRwMQ?Sh5oFW8L$zLb7x!0d1p+YZ2K=CO2>0j&V=-6K= z7EQo`hTj<3P2P>e~9jq^D}Ci_OApXCP1=$RU=1 zU+!RLzZDu*M^7q`$`c*)T1%Y-;tDpqfD#{3IZ;ThEJ`5{UDb=Ur4uR8MM|B@&uP{AR%;9bWXL~{~%j-~}?(Hlw97&M=j2i2w? zY(awTD>>r^Lq1#=2_Jek8k#^cUmd2RDYxXf-3lzq`g-*DpO9vgy%2K!#8Ao})|%zXi^GnsK=kbaGvmpGBDJZ7<#0 zY_#c-Xt9r7hI%&7lLFPCx=|=cN!WNDGjl?|R_NA`wZ$pq*%au;=CRy`7R|x6IXs)E zbOtP;YpDe9x$yY%07Fdb_&pUY@8{lX;A1N%UXWka{ zvPiDW5gsd+UYB1V_)S;Q>g|E<^A{GV71*X$M^){LaI#UM;8XXbN0#7@g`y-Sw&=qL;Ht8lwwhwqZe%PjjyA>r#b8~-eiRVj1+h4d#^NFvmS zx)m)bI~lZ+1FS99Pa@~{UsO!sQt(HV{W;TMonzDM|MuvG>&e_9TQ6*EUm82#_*&4r zGJIZQ+j)k4Jm#~phz#^-fDX|zX0EzZY|au)ODeua+Tj-q98d?^^mU|@ z9x#10ZG8kV{oZ2=O(u;nTdA3}u6P-{`9u~UMO&}ev6>+bK7hPhRo!aTnRay7mb79R ztUg6-OSIoUP=2~x+w0A?>eV|{->lv8!p^q!`Z-vW@`{TkY9i2-=|xX7f6X4yGYg}RSs zjUMUM7g`szID1oPcPGve`jTMg_p1ks@76e&i}JVr++Q|?BlK$ao@)YLljeTQZXAU` z7;!`R_3XzZ8*;^Lf;KdythPTI!R3--W9#-0D*xz}c66Ce;3Hy&BMTR8gA?UM#|9k4 z1>e`n9B5)H;nUR}^SdtUD+Hg1{@g@R$*PYGvhjq%w2Q5oxq&OpOc24`i`dGqc`6g> zB|-LZS7n`2*1TmGeHb>kX=*;;F!E_)KTN<S9DOrZM44dO_qb+$nr7n@QD!iY#Mc?D%g`UOo94P|G$wP86ZWsk|lM%-C8 zY`w=@6IZ0$&Ue*pNfACdCXsJh9QVlnHf33n?4N<%8TBH}MOr40SvW4zX=MNDC;Ns% z)Fg(Uq)a5A{k($i%>XD|6w=a1PbNw2wP(hC(%iXznFuTJBrUfWb~;i@_c?t-nFTbh z9fLwnlJD5k+f;j?Lj3d|`MCkLn#%e*Ah`RTy-C%5FJ~65Fc4x%HsFbSJ06l9#Fc^U z9WX0M;s^6a8AsfEyF!N0eR;nmzfV;N9+kw5Fnw)^U^xW+^@-FdM>Q8Mhc3cFU)9Jm zXsP|~++$)2#d358T}if7DVKc4(e$dl* z`GUf+DjKPmGAB9>S#9*CX(5BNGUUt3_36;=%Jd1|7Sy){r7mL~akX*V#YLb>eb&vr z`$MY+HqEiIM(jS7ho0y_`SM8EiA`Z?m$iI#Ns2g_J{`KZdS$gq8E6RC^eR}dLc<1e zQg~BQhFK(zV=wQPQl^oW=oVs5$-e&hN|$oz36{*EqNCt2F%+`?rrM>BEwK#Fyv&!A zeJo`Y=MI8Me}^qN12fx+I|*@GyVbmi1sWsOaAZ(t$i&jG;04A!J*{fE>m|Gf&OX`{x3EM_AmWOl@bs=;lp9 zP~-U=kE0!48&e?d2S3^Skwj_nR%9(gFW8#V)CEbiNDx*}8e+itc2MuA#^OtNuJ?5z z>U2GRSE32*Y2tjOgmHyWFS^|9v22K*KAn~Y!c?vdOhJgx5yuv~^D9T+pML!mfMsVLfPjNF@?Dyl-@4YI zk)m^w^EJURx>J)^T6|tkFE4jXf&J~Sw=%)k*ihdz_niD8t4cqLzWEi8&Yh{SF#rxW zwhj8L*J8?#KAuuXCgsHdk|+~=KqIqp>sG17$Gv3ZA#%tM3=5O_I;Dg%ClA0+4Y(dR z$Q3+(JntSOIe#ce7ohTdmyoQ}+orCtKy zsK&b4agwR6TXgT3UT-Oz;iJhihD&rAf^UezRm`C1zcYY`f2kasJ_;X+0v?g&&uk+D==a2p&W#(CN3ZS$z9iOI8Jl4s#v zt#w)%M~k~hM?ukqu_=6?PBxYiajg?2J=rLR^E$v3Q)0LtqnX$3-0Kgza${Mk=wQo& zKwiB07hbe_?+3h>mFtB-U-e{ z?%7g?{VIKau(a3}?ii)Aj9ZCxcZc|$9yqiNyYJX~+ABjGo!$nXBq8A>bHpXTTY;`} zVCJn_K1<@s^|bOMq+o=Qln{gpFRZ{Sfs@MOWt=O-|G{1CR9(g0vqw69JUVAp&T?K6 z%oC#jk_H`>K`7ZKrs;{ca`hZGRo}*OoHlMfhZWzaQXg_P_j>IUxxdd$f!=IWlqh6E zBE3-wNmhI6ke_THqROC})x_Y890}NIB?rUcn0Nt{$Ytn^lTkhM+}seD#cFq4ZetI!qPIy1~Kgs zMbEFSD#=t3QyruAYbT&m-!Z5xt(7P1Vhlqrrh2`55!LYnyLL#`!fEGD$@<30U<6;&lGwB6!Q9<>*sSkMk0#OsV5DLgFXr zghfMQCd?R?1#V)jg-|74YC)#TBaq7UdB=h&l>9a6;)ry5xZ#o}rtCN`oL z;e$luAt4h%6vqAhruKG>J9)quj^FL}ZC8{#v5mX0D7T`yN57@&csStnIr^RYdiop2 zUE}YqAo@v-nF~y`41$}4EV#r#_&l#N6;3dIj?O@=fkU*6!kpU`g}zV~gCLZE!e}Vo z$S7Jh`BbqPrLHEg;rKhCI1n!LpKgJ6`Pg*03<&$N@lZ+Eo(G14z{B`-xZqMLHW4Mc zKsyFQ-fzB%r;5+0vb=^v6XE=k1mhv2|99yqr2W)*_~?D;iHR`CG#MKaq)M*i?_A&` z(;K6zI?CK!=N+w{KoMlLH-s% z{&SHiaV6=)sjW7^cqWQ?Rg_<+s>Ud`$~?oUiu2S7Bqu1<&XTh<4@h4-XGspwt~QR6 zT)%Bkj6}a}K#T;S{crR?oBwmHCT3mK-RSMDRqm1!t3Xvf)6w_i@>JKKFAyc;e}VOF=zd>tvQkD4!;|Mg zeaa<*8SOt34`BC~Im3Vl__JEP5M>VDKrMd6V6}Ak#@l;(4KSuwg_Be*NvGbt+JK+9kE zmPmPl%>nuT@0GZ}0KFE9vT9pT$dObN^y zhdb&k#L*3kklBF-_jhrGayUuft3p1g&0q(Dr(HsGgbDI)-eDVajwK%unpM^_Po^61 z*}ZpRynA?2uzk-dXN&jRpS-3i@MV;J1$^ooOK0<(5_7f=4Xv!njj6!C5&|R2ljQr< zi>#Ltt|v||p2~C^LyYIlQ&svjm{k;JUt;jAF`*AW-c%KVh%bHiX1VY{!(>1lMLM_e9x=Kn_D?ujxt`%aixpPo%kfjiy zUV{p=?CyjAiQW0L|7dm(|0sCk*ebVy_U`6%uX7;=274doq~?ZwO6KUs=+$K4OsbFL zH$q0Rkmc{Q@Dcn zd>0ifdc28V$QNd&X~&HzY}SXn%h2A&&GLa`Gk`5sWAVqxllQ!UA-$98-w)hFbm#K> zA8yOEsE5QH7*01lRji*=H*Ld@g)B=N;X!m)iQ!ZDQe}jBrsx0$VNXeUMw(QbrCND+ zL!K)>?C}{yw`Qz}%H!Ou>Uc6=?#JwGpF2n&L$J(Hy@5uVFT6uE=ohW$}ln2 zLg}W?g98;5=0paSOgoKQO2sE3pgIfGF*@BHt@F@k^OUe5PlV$vB!kGJTW z>&*{P(F7bLJsqll=d0}k0GD3>a=hymLvBvPb5IUS26_DyX%GB8SY1M*K2*xRbp;e8 zY#R;OP3ghY*?n)CzK#2^``-JQnVuL1Q@gR^v;NTSY+W|r??WrwJutr;hHe`{)_Q@n zV&+)IK*4PNK-wgXHewHvT}ckXAe&kB!VJzv>umjFHVyB9exro8BbL`5OBITQYvWnp zKeDu3CUvX#YTCu05CY*tF|LOf?_wlOZaYAS`z9f^b|5kTkw;Hdd-YKqG8Ay2cj9mL zfwU8MUPHb#G>um8D+%U9j`v${Fe;R5=q$q3%&GP*lV%LW>v4%Fwn4sA+>QhBB+%4s zLW=^g(va#8uJlF_-{KqoJW)?d$m*q*e7T0C#szx-MVd zsApJe#ibm)eN?`yW!6*JdRb|9M&S(FmF1cF&ikSh@%#FpKQfa_i*vVkQy-^L1rGBg zH>D%!5p7S&OqE0eb62slbfrqfoU2eRJl8uoR@wPP#3*mqC5Nlhox_f&a`(Pu5H`4ZQHhOZ*6UL*S77g z?X7KVYa4H$-~atGGgoqElF3POog{-3-mab&R?C(6BG4A|60@fiFqt4t?I((iDrh;=g_##)8sU$pss`6$rwR@4w~L{CWFoRi$5w z--ztX>>7v7SaV<1f6^LWLty2gaP;6J7C)kj?LNCRLds-%2pV)}3$umyLv|ISL=a+h zY?qB~R4;Ux_exB}CI!#Cjs2$&owCWUF`#4gTSY&AyA9Bep@f!8yw;mBM55}Op_U@n zHVJd5&rRg}^?K-$Rpx=LKPp8^?5<)4i?uNLA8UiIk-Sh{koTNz6}jY4oBDq))XW5* zC%dEuu_kq~76VUTo?`gqcI;Mm-;}CJ^u``7{L!K1uhNK>@NU7;tHi5w?0H2Z))wGXjV&VSipE}dUw8HgB}^>% zZJ$Q`y9XhcLOJ8PO6r)37r`e<}KiGFI)c ztMZ?{tWk^y6nkxjl#`@NujvBk6Qs9aYFBt>hAJo9btjcJ2sOOf&y_g8LaQ9wcBAXW zN4rk%J;IO~ZSZfoJ4rzRsJ@wc2v0myf;^*ypKME>2pgPx^RyX$Pjwf%usdqa%LI;> zDIA{Hc}_dp!qwL^jEu=X#F8Vuvn=Eq?ZOmrI+e2yux91U_TI$P6gP z1F#0URxMsUh7R$ybq(qV)y)Xq651OpN+)Yx)cA;qU;BH%Mk7`Q`U^B@)!BVJop0{I zrm8j-;?aBZD60BA0zvZG--&?5aj!azcKt(^uJ~NJ~~?J_!bGFcAF#X zp^MEmISj5~BGw>DrfYsIw7SvTGl7Yk#4Zg*4A7szk44mrX*qf041(6?3>es#Z&4Yp zt*rw2PbRbr897W-nh|!I)m@tDJNLk=6N}RR$h6j*tx7Em`i(PHN~iZ~vjkLG`B&c? zYTGjS*!T-FXAzDYd0rBO4=o?P77dx8$T3bx%)Wh>f1l&;x%FGQvkQkTF zus8)3O-CI*NARD_J3HFz|H2N_Z`&rnfEG>B%^>nUeP3R0)D(gnSoX;faLY#KtlzLS zN*!QFnR;9CXF89V)s#9HM(bIovW(Bk9)tZfG4$cl-5$M1{yD2E1V4j0k%0kijhy8# zk7_V)EB#B7_U1KkCqozP<)DEnZCqaE^h?;bE*AJ#pb&cz?gi7JAi&0i|L=gzG)LzQ zTf9M`UG~H@N1%y$SB0|2YHg(ssFP26$IU{Z&@%SPi|>u&7PYc2JbF0}JS?kKLkRt@fmq1%R; zEHY6FS=932DK90mu#tE<+L^jU91v(>txT4$t%C*)s?Tx=302re)M22*xeYs!?_fZ! zQ~@`k@4duQUPTn*ZSh`>BQK?-V|`2d!|(xRm5LzWb8EHUuZyoi)gQ!^6EEEsXI z2A~beTRN#aPZL3nChWgnqMcRA7TClv3kQ`9|JMZbe?5i!uT@cy%xeia_9|r2DJK8& z1SFeOOp*2jPcLG%l_ggPV&8KAbXmBia}X?AFeG+Z2&5(VmOGcI0&me+D+X>gO}Lr~ z^2oDjV6}EKWqsyg7%_m3xJhBT9GWutK9wh)V#^P_UHVNLCRAtz`*;DTw` zEv6F5V3YdW6YXb>%!!Nit8sKmQKe6eU_yhdt^tu27NySas)A($taH<%o;upby0a9PT(teSlkS4K&NjS;z0kCC`$|GYouh0$5P9x5^ z|LksAFNy%>urrEoix)Uz6IDpJx?p5y-Fn+>$fT?fWN!2G?@)@HolC5AQ`3k#&Gn8F zh+LmM!Y0C`#BwG8r+>`u!=vfOFL5h0QV$sf#8b=n6{z^i*=SM-N-l|qUHvCy z9 zoII+h!U~h*uUx^>L#5I1Pt(6`hY2sxgX%EHafPppkyelgrP`3$X>754@Z0}^$X~2cC9LEuRc+= z4g315A70pfkrw2yw|4%hdS!w}Z`J$9Nw#a#oC;_0VQOu?$g4T zoIm^`NEKeRmoU_9RYyrrPVsdt%hcM8U}oreJEepcZS<_aZ|>n%ypFwC*C{?+*%xe^ z%H?P1iOr%-*il3(&@6rjpfxR;iY!Kr8rhJDJt}As-D#KUe;4bZw)|ecsyb6flUWqL7rz}^_At5UmUZk6*yvd+Hd7G)mS@S-d0qkb_^nl=`)KA-V zF}Zz&+tzQ=*dZWtWXm3pE?wzk0vQwqqPl4~%lrM|3GL9F>aK=jxxWoV#}363g?K+n z4XJ2MZZTV41!tHzePeC3hhBQE;sIQFIHqbGnM`$h&ye)UJMT_J&WJCp2swsbp_ut7 z*FoRO&Ll_$$d9OX2o>I_A8!iv7!j0)ik%)S>n4}mjGLn=XKIWvB{r00-g&G`>QI1I zlKk@kttrQ?yw@64KyIRr)TqwR34^eig=KPmJ3^RhoQRl&hd1#Ri6<}#EN=_YpusVN zP%}`9P9HZ5`Q|HPDN=8GC>^~8`@1%^S(0_Dx!KEQiY1-78C8nPF&h7H4&@hL9Rl)j zQ{HJ7tQb8flxtW=&ia%46$;wmrmsY|`?27K`jrUU;Pz?OzrnYNDVS;c1{8ve6H{{S z2UYg!Vl|i<8OaiD>D^Vh6c6{9KvZ5u=DNYCZt&WYHgAC*b)6pSsXsC$k(g17BPz~5 zz?Sq?q~vM8+wYkI+C*%86=fz6&OZ)QQzrvN}8pktUHqi|*Br+_I=vN^lsLUWi z`gpl7=x=;K8qqh&w0W#}BFa`N$d<1(&QJRZV#`;_CPhcYN7x6nG~9yRYqI2PK0%Bx zp@S5+=;W_c4U(r_lZiQb>>&s0f&*p$otyV&Z}aPNFAAK6AwKu?M<}NuTT)m0Iq+Ry zadstBz`At_Da_zJ5Xw6e$*##qpCOk2P++ba(L7On7Vd2EU(bv^ zH)m9uB3QXP3tzq#>eO0KwX{XdB}{A}=}1Z|e+laHGT>`2mR27M396FT-aV5(pEF*n zRqmCvEp|80ojhWPD+zV2$sw?H^=xU#PKn@2ShmmmstdFlJJKC$vSk-9_7;0GjD5%u zBx1i*2)aL~L!1pddwx=gZ*U1tn$sK)`0f_Gcp8R*p(b>jo) zAd+82)eK)pE~I(gu_rqXuH!GID~*`3w`~yHI+pGrtqd%*(eEoL@wOHjI359iAuC6C zzU*?uIYhTWl&`}Nr8RH+ds9e`9p~MoUIjqveX$}Q+68n-dR21TQUSsOPwnwSX`Ue& zNG|$2{ur~&D=x`q)0iVj7;q>X96Je+iGLX;4O?p8sbTM0CW}CPSAj{sS(q?hzEaGZ zb6wGXy>QKH{{F-L!b~~A0qmrM45We{Vh@tv;9mp;wc^*x{g4wKF0i!IGgaWIva+~= z`{wlMnU zOSuN9M0+H<%OevG$rqgtPA+VJkgTADK5`TG_~ONnWIE*dRCZDR2IAPg$OI)#`#}JV zO1RovNIf*MekYuM_Khh}v;TD0f}~yF1IIuy zG9v>aMr*2iKND1YJFM`Sj?&Sobe->#aX)?&e+Ew+TmtwuU z^Dmnx-pKKgd}%#h5z_!8xf#i=aYA6lw})U#ur7>A4mqD;;VNX$GQR1VwS)Dw)$`Z+ zJ3fjww;nhDRh%uAMc{*56-MjXSN`R=8EA?gk%MVCxlP{ zMrvYnl+=enf?8aW$lG~DaZKUs70%0q`x!5bcr=Kuvg9kQF@@n>DS*_ zgaS%Xu&#S@T)rCg<6oR%SXWixT?lrYhB18>t0EUn@N*R#t$HUUMJKKV#WpM9!3yy> zawi&mr`+MC0>5Iv`&*~}UFSh%q}lem_&Q&f)(!Oa~;e6^h_ z%7^EroF?fb0CA50^XN!`0ZvlIGH&dr|Ff-F_%7LY&6iov$p(QGb7BRr%}kjTsUnr6 zRMd~N!93fBn|FDwl(cd&Wx2o}tp@SQY?R={SfvUwze66Hx9lT@!L>_mNUY4^k4>Cd zrbh6|{=4bGz(Q}+k`adt;14T)25eA06Qu-u$pv&KO1n*6@G@5pmY{ZlU4kxr$q0&H52l8blcz5a*5}D}Qr!?$Q*?OM13KK!EmL zBGE)f^P#+&E;YwPjI%#)a9Lt8D&O7+h%--WMLIrhmRCL3M}Q`Tj0>4IVtE(Hhy%do z$V)aYeAV+mA&x(DM>B8uA#{4T^|XeFdpqNPG)wzrP-MRrXxw%g<9 z1~pHBv;1Zk{yZ@uRoAOoTOQD&D2U%)d}T$@-~N|{+H;~<(d@JW!jkaaFb+IZc43a= zVEY-AK`rwte#05!m z;6oAzPeNOxWFMV8Q>4VbiKWn?geVke!8j0CQp-*7Lta$UKcq@Vw_mY6^iBQNM2ezY z-pycG4jJ4_3(>rFV0ud^bx7HV2e)!!Bib_Lf4J_JgznfiR~PeqMne_YvLydS|)Pc+$* zX!_!?)g}oP{o`(wVgKsyhZg{;$QOHi@U8{#=Z$GWm*O!aFEaDoh6m}HDS25rmc}(e zPymR_2h{1MLf?v#k$%235quOt2CxMSW*SG0Jbx{I{{%>iamYLW9f(iJ|7F6})IB8zX#8hVC_zDf&G| zy8ni5CWkiWKR!lZb=O0)5ZMUzVeNH=lIf4zdVm3CNMXK2;W; zFt(l|A`=W4b12IiYIgn?j;}t;2!pNVQ8`Z`FUaZT29TO_Atew{a#mCn3Z{oy2`5y?FEz1RNn*r=ul z19qPEtjBQj;SUGf->={P-@Sz2SAK7ndG~LFktn9aAFf+vrQmjh>q6AY-(Q~W^8w$y znyUVp*D>KaPm5S40kY}*zxH7>9zw1mgAfQk_R$kl1>0VUh8=(RfJLtUKDM%(N*drh z>AlrrZtc}Lh1LzuOS-Ydb}=53$Ff)^98m`;p?pwHg2LVj3M!Y_E}F%sKk5SWbavI- zOg_;*+*>y8h_#(2YG-NHTaaq=%pJNfBz@RoUkt4Na z^MGDxL5op6(;1M303NHzMXDTe0}uA!rWAnis|K>e59D2(2mEgT|u{2P<+(Qg%?xu&J0uWL0EPRDPRQ zThOJi;Us{6At^!)uJ1(tM`Tc6hg@R0iLr+R{}0@ijTr^hONjp=MwGjLgp?JcJA)MW zI-G$IT+oEZP^&EE_adKoLyDRCWE^NjH{2JAxQF5a6=0y zin5{0RPZk)<2e32wejoh1PR)PyEk#;oZ!uW2QUk zWvvcIswV#?rISx%?soxOY+FF!#40XnK@X~Ofj$Z%gX~1IPC{v&wk-R|3~Z_3A)|!S z*ePQJn3Ew zEEX?)H%_e}t{1Ju745)W>-Q*Q?aakFK7-5qzc`v`yCgyewUFwJeZsJd^5e`BoDx*o zWVkk$5tGp2(UoJRA17=^=T6^mTVt-Y6UeNi7%j$rrwbXSO83ORs~#YJyVk>VM(?<{ zaL0PIX!P@NXDT_+^X&<~&QY;nB1gop_2M}e@%6j7QgL>>GZYsu@-1VCt z>%rHZ@2Bkha17+-6dm{8tTS3hE!fYl>JIQ(|K^6GELO;t%%(NUpbE@kd<7}w+v|g6 zA*~r{_gvlF{COTGM>-l=YT>5FqV;yznyLneK9V`ynXH}~$=pe-+*-#dK$DeRm%K*&6Qgd5jOc9M)rf`AetcS%#PfS+T4~jm3G(su_aE zn(QwD8`WcP!6gevmhqV&M|d7V1e^vig6+@pk>Xx9@oT%@vcDSF8fGQ01E$E(V=Juf zY_92(>N7NnMI7o6Y|FZ_RnUxM50mePe*S&GpFSlL>T*Mi#f=T6INtQ3L!=!f_rinUyibF?3~U$ahJYm=mt`hrxczG6SHF3`L$*j=%sLJB z0b4=7#DAQ6r$zX0r`4sWF*NBxjL7!VEEH z5%7TppmGk+iA3Px#mHnqw`3`52e<41&1T?sLb!GFuQ<_7^T#iNSSUA@d*&1!1p8i@ zkEoJahHJ_XR8?!)P|a8x2Bv*An&mWK&-{ceY~MSl-w3DQSUFq&FT#CsZ}lBO&~9Aw_f+Es?$v;nx@c;6)D%&vzOlJnT1&90cjY(i)ASpB6 zmq3s@N9Eh-|8n)-WL#PDUjh^TO?r;!&5fYnRMsjVeiTaB)m|*P)Dt^m*!Jvp$YDK* z@xq;>QPX;&Kefd>6JIDBOvL^%UG?uR_rxE~|AC(a_XzDy1ePa+an^-XlwO5#E+Z{ zpD+vy0zcd=^syLQiN2zv!XicjgK{bT-rjK^^sl<7w?gc6`&>m`F%RF3M zdr2T+^FJ9NH_(ULO?+rpC!_4&E5s$F5z}S9$#l9f0-(YSnR}6B@SX+4qH?I#!gV0} z8(GrmHXpF7h6Y`zp_wHrg6Y-q`o(Be+AI$uk$kO4q}eHlnK38w-Gp!AKNK>kMUorJ zmtL#P(CTlcv%ruwdUlYo3u%Y0#q7!pWb2uK6883Tj8b@-O)33Jpg~{58-BQee)rF% zJp(vnjSiwHrjx8j=^jCgqJuGe%MJf)#)hl8#YTB%?dV3bQbP1(^fY7R?da^7IKqo&=*ED{;dT6CkvNL@jC*G_@IU z>~jWC|G*DWGOd^;y2-Ipb1>!I)|rwHRUr3dJ8J*&CG|z~rGXA`M$J63`BnQSCzx%6 zp943QrzMJ>FIf#V90SyIK1M_Yu-5hb_gUH|%9tLbu#YYMd)3cnlA81^A37H~pj6C% zcJ|Y4sF8@bPiiYex^8y5Gyj$_q!!7c-c*%Yy|BOJu+Yfc#Fyi`O1!VZeT=r{A1Z8+ z=~_2ee{}HfyvXiqkecA&h-SX6(fUQH^}=fE?JY{Fyr}-^WvF%2Q+HjVUV(Mf@rqOx zvwiMx<<0LRmyk6m$wZ{6FjG7d9fQq77}RMK>VWBG*I2*()MdqhQ-Mg#yL4<+md?HCU>${CKeZJuL_$;#G!N?ksTHrslcZsFNMO0SuM*^!FGmVEhchT zo;=KdzF>Lft{5Dd@8=-h^7@8oHolw%BcoU*)@7=d@+s4PZuKVotVHzD(T$+;i3%?d z*ZK2$yYg%UxSpo;fS{N^blkb$uYZ_)0yFIiL?p|g@sF>!vU?xxr|KD*1J2J(oG6d4 zFK@%w7LtO|o>$vRVS23m=h2o; z&*45fCW%we+zF!)A(bQ9mO2DGq%@EIa~ zd%1|06T7N5uCucSJDN!x7N&-K&PFM~Jbn?RBFFGYa7niAx-J(-vwv07v*D(Dw}Z(X%I>;y+TE*!{+@OJyg5S2xM@_dz@t zuQY5N>W`HdRp0>_9_20<^ct|D^)46iC^VNspEF7AGp$qhZd2C{x4sNBdj;m&iAh); zR-J(z7^t+xyQa*qLpAKe-xF)0`{mTT=^jI%z*&(`h{XWA3c#Xk0-qY`+L-X2RIC{* zUD^fD8+NEms9h1-JF=kAr7n!bGT;n9jNU?4eiI z5%%X4fzC&6j+hDO#Y%Qb+g=<>EF99py)vPtW2P|{JYMN8Qwsm}l<_)91T~i&Z7~AE z!t*JUxVb4n%%K@BoVLhLfc{0l|2i`t$Y1lOGkAyH43dvEcnAHXR%W_%>!~xfW>mS6 zz%PCeex|(>k-@gSxX)BN2!Dk=V;_qs&=C7$VpkKQw-H79hPGFum!%yFq?4ZHC&SvO zj#B!5GNF`Gf%X)NtPBlH$j$3&M(DSQOW2omtY(IZwOCi)BYt)sQ!=X;)*>TpqE+P!32Rud@p=~iQ)67iqAXte$G8S%nZ|s^N4JVE{6DVh1fFX3 zMsH6Wfbu+O?R?2HjrB2ZW40>OJ*q{^XmG{~$91auB%Ew@aF5viO>oTh3OhuS=GS-HafZg0ZX&cuz#A36VR{= zKcjDCjDt~%s&3|uoAE)bYpUO4FmDp~{+Q%jY{P*ngSJ2Ig8c;;5n)4B*mFhvN~(rp zEOx7N!1}8rmBwBR4J^Yt1)pQ*-gQwNg-;P(=Kxh+@kC7C5~hHLJiYQe8DuBcxvne! zC~BXThoxs8wX9_QcjPoi2a_@5yi)#eU6^ti1cJQO3j_SFU086a=<{-sKt@ z_5x{VEAf>c1^9Tozm~-VZ4%FE1ms61U6#^7f8t+%qYp}-5SeidUca#RO`j|tZq)We zcj!A4fj=Bi-mbPaCWj|`B+A)cLg{ADi#eT8I<+}s;%1f|hP+qnYkYGo=W9{7VtX4j z6;HyFh3!r8eH!I|L6-j|*>D{)8ieAPkPW)LpMSncpsx(hvKiMiYR zlrxamhh%u3_c;L7V^`ttn-d#o-1ZM`t9D&jMy7>%t-(}?cF}d>CFqzXKLl2>< z%`~>2Om`ooC9(dU+-q{1)Gp&sZ|U4>V9uCS;6-hH+=#@mNSr!uFv~q>aKeI_AB_&h z>=o*&gV>8g$}PuO0sRj{?M2-Z2a&oGu^^M668|4?h8)-=V!2&{#}=ayF*7OrSx2H~ zB;;^_D5MN6Va%VRY^3p5-yjBExE&hwQxHJZIOUSlnEpp+{A2vSBHDIm(XaxEJL+VJM>Xvl!RIWMkc%`>&>;TDhKC2uJ0g}Nw_ z7-6RfX9nbv7ihWdlOD3!B%bx2z-m!VNTF*4tID2=3*c`za-iy-0)}x4SI}V6i zVbIGq#aMS$8EWk*9hR`+&@2kRZSFU7xHJ?%XNY0R^j^)6Nz&2-XKnV$d~W_0!dn5T zX2(t|&Adm=#2m0m9k;u4ikh~x@-xQKLb6+Q4=5nN`OREgoKR-M*Ix3DzTv_TcQznq z%cCIbnaTFK+5uao-r_lm-XKqv%GE0QN+Madlkg&59`cv=E-aWfhx;{+dNy?>XShmY zfO0OT2o=5kjcm|aLnCG5j3ZOc^%~$X>_6Q8SQm{DEdC} zY5nbQV+t7)CPoq0BVIFlT=y(&Yp5{uDdJ4A7}LwZ;KMI+77}iw*vtOmv^`w-^sAzU za;k2`OXTl+zC6zf|KLSyM8KR~Z-h1ObEW>=IVlXA@y#+;QJl2f{IHcsV^X0L+T9qN zbx-b^MCiKyqG>3O%q=h>L%8Kg5+eTHA8WAg3et%p;4D|Zj%))x7HOp?*P<u9~SlzO2Q5|yAPV|Kcj4mtBgSEf(8`cOYA(K z!W-FQEidaFvDbbmMzK%<+^<5xy`vDH*cNdkACm?JK?XM6CGH_O7J9QQ50sU3U)+OS zqU+0ew!h~#f^KTYyB~RLjUn_oxj7jn4!*EQY!LtKf$;n0N9G zVb;D=b2hi+J5nqN%7>t2$&D5@aG&Le9*RrnV}JjO>a75hhs+0_g#m?^B=FccxT?1G zy-aeYY?@m(n&argTU?mqm=waDYIkogFyRTC#Snr+m5NwJqK31ztX+CO`Ln#9Nje-Z zj5F~UIQE@C@{{9p2d>(Ruw?Jl+&DxfgH=QTmq8wb0oa|w5yzwFezk&-WwpKQ!jpWp z|DS5TYkClV$S^{qv)1WuOalq7H-?*%KRrGV>i&Tfh7`J6Ej|M0xFTHS>1fJdVru>f z>bEhYn5QES<|o2l(-u|v@1e0%MU=?(xVtq;3v?BZd)n;B8mesJ4Qz_@*pU#~rkp8b zci;#Bb4J+OLiz;-MSeUsg{bKo;RIT+cTqy*@hTj;+ep-@j*8ey;|m;W!fnR&xg3-B zOYUC1!N(R6drQX4K)uFn$c9<1OW%AGpairLNShnL-XVnX*NtsjLPIpLI^l+{u)u1R z%@(e!UOCVh0L|E)3R7pQ?lnx0%@57Uk7}@XEK8~7FdJ-+3Sn9p4>x;r0(uuUsH4H4 z`jH{5Kij|?$ulcqn;%O9Oqa&N!y&UE_CYZ(uYH#sT$sF~O&!l$&5(2ls0@6mT{d}*QzyAWG^aLHlzHt?n#d}09BKP` zX64q?0Dz6iYK#0*6l9{~Ix>KpU&#C!+H-LH4*6r+Sgyu*c3c;dl9ZC`q}AMg9pK~E z>NW`~qW*1>^jAZyY`>!&I2M(xV8_n#o>EbHO(cg589FFVBnNKfGNR4UH`@Q`_WWff zBnNsV2ck_HvFuYkpiSNs;^vZoIf`P$<}NQ|wkZ4BZI2|DZR* zuW)1n#(OSUT^8upn0Bl*=sJ>Tiv%yza7Pn|!GoNL7&GcaEF#c^DB)57e8vn=#vkwu zzFO1Gys|dZykW=9;n8pHbA4x=h*-#YW(q_PN#|TzNKWt~QOF|Dm^c?MP($X(7R#`# zU@cI|ABu(RUOw9{p`~vCdH+mbi)-W=*7w1~u-?#&S0e8AoZuQ`c(R$)17QOk?p|oo zAk~dUYhL{uVB)#640iJR;QcK$dJ$ z^e6m@a*&h)anbuZH6gS)_&u=tQ= z0eW8*_fIbXPy&S5sdn&^9>qv|4s43nfNm3)^In z7VSQpeUKJtg9d^nO+iZ|mn4#{bvkH6YT%Eqs1dwB3OAI-G?o7MAr-8ZWQs7P1L6Q< zB9CVXZ2~`($uh0u(jak!5Xp{YtKKKiuzc1Cq=jTlw9Mkf!AArl;6w zJK*qT>ORB2?3WM_5SrsBY^OK4^*66c!ky=`u6L9( z{~G72TP~)^9~mKBC?RquA5R|2u8ZU`E**q+&>7B~z?>2!eXSwo#ZNj@l%`H+h}zx< zBKi^tZ0Zjea_-kbjB8pX0u6dM<8K_+o7A@p!DJGLz)@cAh29`BIf=Bv8I%?Mb7LEm z&;*?YKcxw+jWb~?aw5hG#wJc@78AvML~R_mpvrqe2)VS%+iH1?yuQ`xaP^LVZRuQw z^A%l#Jxv=IFw(X+v$)49Pq~(@NiHzwID0HcuICAa5JC;K;CoArO@+t@pB=~-mmXpR zW^+VgtHjY4;txu^v~hc`JwaPM%}lX%Qzm4BTO{z9Hh-pz#7F`u6!urw&0)_~kuq=6 z>|jqBHppgAVcN!(KIkSksoNak#de_=3TesQamn)D_<{}p$zA-Psy8xOrEO0K{FPP< zn*9l3LaVrcyF|Sqz>1=Xp+ykH&Rlrk3Yr9Q9w7gS{nGY`x^qc{$)g)o;)+bd#1pHq zhl<|#JJbKDZ~RMr0||{2D7M3X6{HzR=Wabb0tg349!&@Uk1@vqr6gvUM&b4xMM$G@Ulb`YM&C1sK?^TnX}r=DK0vp2+uWz)_cGJ#q`HG<}hzz*=1R~dqwk7I;rh6 z;G(rP^~pQ}_vS*xcE*7aRjwpUPM?&PilV*-D_+mB{;ndvEza%klNCHpY-3|u5; zA&o29rLT$}Hh@=2%xrkB1Jcyu!5(zrs8m7sO^_$bDz{5Ckt&`KG4sYuq)y|JMj*&0 zt8aD>bBXJW$bLQr470xJXlGSB9F)~_dO47Os7PgiSsaXf!?WlrYmFl!$ZInE@n^7) z4N7@C!-cG(*F87u>m7+NHaB45Ldlk(m9o04^PC0`l>G9!ZYN{^2ZKl`RzjCpr5kRF z^Veze#$^^)?j5BY5(H=a7{^_p`awdJT7@VRI3YM;o>LxMg$M>cA$Z0T-!rxWj#j=8 z#^`A9ITwzSz7Kl$P;^7=la=Xk0>-WvvMt+JsB~rVbXUd9iyNd1$UvZ(kzrC0u;ptL z<5P5-&p!n*#r(65MTJA)PwndaGy;HRfl_Nlah?=t#%r=1tqlO z>7XLJ)zdmq4t`I+=lbUTK4?SMS?Mm^VsefHLJtJ`{#xs!B^`f^5c-wtUw_>x8lmRw zjPOf=|ISpE^RE?P;3E{2`2-_TEV>8`STxozm7XS`**_ zC6qoXDZ6+tcPa9!M#SR4iSL;UyS3v0fsCxYeDlC3s=z8_fcx;|h~y%aN*BZzz$Xxh zV22Rk7p#L40ySmA`CgM;?C5sz?`$C$L_Gh;Q z&;|DSS55q62-bqTo!;)TGSc}$@kwZ@u5ro|{zJ^Gs{%>=Qxbux* z@At}h+=sHsGHhw@T(90bBK)z(>oy<-ReLuU+)GN)+lF||>YD1GF_nMd3Fex=OhbZ^eD7)wrIjP^ct-?+8e*+T!9IRl@7||njGF&@%J`Ai3 z9)J-{W@?SrpkPvOhZahXMW@TAg=YL}f~3}xfJ==9)^~}u>w#b_ti1NJPlqGcyCR;q zu*W_bi6+DfGM-fvR9aV8?=_LF8Icx(P!`0Igkz-|S_Z_QF2v)_pf^KIp!2M=vAMp^ zj_qYB?r(S6JU(4Z<>z9tbfteS#MHh0J_N36_Yjq5AzgNb*X1i^R#Y`yNIO|T)yZ{E zF_|4zYj0&g@f6GbW)Z`C86}K2WVlg!+dcCdO&&gD{Z67oI`_oW>mGpn<>BOX0|?t# z0FGc!q;5bV^|Ezw`~}H!spTvswW(tR(TJY+53eNrDh*zYjP%O2B2P&$MsHovQoC#L5pkHc1O2aFf{JHsI~GJDYt>D{mzBKa@Op}D_TdvdF-`e>k5*CT6g z&gsS- zul)WnBbqg&&u(w&r?rk@L+N5~|5H8s+byTCeQb;*^LiLa!>qSiF>Smul3js%@F#Y* znaU|^2nT~2+uK~eU^3=&3OfsXWJ}ug)YFM4vvZoIJN~F6k~3o948o-h3=&3gxg{yU15g( zES}@qnx}^S8{3^#)(TKCdc#$)uX0eo=+0ip7)?0Kb(^Lhj6@Yrf_f_M4deg!i>!6+ z%k@Eyq!Se{r0CZZ1a>s10UF)+07=#p$e<&al!Q5PMA|wMF(@(%H`4NXKw7^nq!(~k zbRVqru@k-|G170r$x_51E#yT5Pa+KheIUnNBs-AJR*v0m)B9K&P)=LRpcVew9Na}q zx1Z}Ri+o3MR;ahoruivrVp9eQHw+{ik~vkY2@J(7o353Q1cxjByo6_aUkt)M<>>!H zVU{>K*L@k!aAu!PA0Kd~`tNgb(6@}6u;oVX?JWY7vRNy4?}DXDQN=hC-O2~Z9CaG+1NHWwryi$+qS*I#Q)osFiEhK3bmNERO2G{mQx7oy z@M{4Xu(Pr9_XCHT4zy>zGZL#=79_EbnL=sViussb?=@;O`pBy>O|^9j;sg}ga+I|% z@Fc~I-9K3V5vAg&@O)Y>LyLb&pj6huwJGXBVrVu>TNjN3|6?K?HQ!cZZ~TN7bFM0u z78_yh*JwD-!V+2l7O2#|eN?u2k_L;L6Wu0^;Vexcx`FHj)?!r0&wZPe3LS~Z4wR3;X#!Ro>wsd&83}J1InJ%Y*Q8?FI+s!1*H zp2@e9w7CK0mfAXG#)CQ0_|p^}tf_xn~x8Bp%EBxH___O5ctlrvFqO&+a*WJxQ3 zBkIY}xGKi>$V^d(p9L@g=1x7(U>&l6yVIO70FJvCfqtoT&1o z1XEB^w#`nKo>TU}@BX#bRx6aCa>mH{++6RJSF2I2B=YuMZ*k&`b&CnF z8gvk?`@g{$!CfJoxEe!&z92yTj9}QPx`B$0cH(UZrUXqw7g=p~$aIoo>-(->BcLuA zBr`Sqv6FgIO2L_yg*Xop2R!2FSHXWirb_kVXWg^hK9Jg0>&=DZ3J!_EoBJm^>inl` zr(0R}Vy&&dTXYwUZ3QqWE=N_Ch+L?;nQ=@4O`5F%g~S_JLf)Qy5kV{N2a?!jh`bQ5 zg9e-OlVd^zp_sPQ1{t>FY@Drc;ICJxm}%L1NQ9`R>=gKi>|}WL#YDOazh0Psc>bjI z2R91vxpI#xqxD0t2)OxZUh=YtchhlB)FMF1u+)QFzwA~4%Vu8stjI~2H92{^2K&b? z*Li>pBh|6{j9^@sr=TW`5lmI6Sn-UTYgOp$R2X#G6>vp=b_&AlB3v0GR3H z8Dss9Q{iR`0(XUMY1*oN4RTL8QOCY1n{N@aA8gMb1iJKe9mpqU{c@}(5N1y{EN3#1 z3UH!zlek3}EaO7EgnkE3LY8L--A+PCJrd|XL)YNJ%=2D;}`Y=gSs`XGn|f^K%BFD$r!8Z%_d6YiclhaMU-f9&i9P1YKD;e3jWh2Ir6E zm<7V>!NapX;?~vT0?s!rEN(EY&qEN{9?u$TapB_-+G+4z)KleazuyAD-OvM5H->B* zfV6?C3;_wNEAZF6piMA_R!;Hol_WJa+bO~DU0c~H=yrX5pIKBaJ$*j4Kaw<7CUGP} zb^b9;vQ&LV#{LSVBcfNz)_~m^2-B||tHl_@1(j#okM_anW03mRX+8Ay&GHB~2XMvC z6FQ^;nyg>KS^kKZr2?i-{b~xY3<9KvY(Ls4)AE6krvj(Rq=S0N24s9N#|nvA%qa7# zys|vAmb>V&q3zIS3Gr^Se{IQj^Pq3O;z053xev!;h8GU;QH+UTzhMqcA>#|4y9RYR z@L^+-JQzG@GM^T2Y(5^E3t)v&!d(X-155QPgRP2N3;sj51CZoJ%rm=a(4TQtXQ1RH z)byk8QDgL?dL|?~M4VAU(^146__qpF;Ium*^Xxv;;pxK!H!R#P>LizPnepYkwe;@4kFnY=vI$nJxd;Wm70BM8wvf@8=W6l3&IW;?4 zr3@T_63`G#(m`k+S~*7~bA;o0@~f$X3WRL|GF=b+J}_sxT}0RFA9?88e>OAW}V`M#DXnM^G+5!`BX1#H_8({)Uv%ZQq>t>bl zTkGpH)TOBjBeTR)>kS?L1c7R5Zg$UZ6XXVHR}f!YXV2PN0sww#>Zc~?mK{?(KTCwG z%hdx5P=V7eo*iGx+6iF-Qd6*(tTyy7{a(j{*3k!QCrv;)epQCYFfiq2Byf1Uel-bD z^YzFsU{Ihz$-?R+xCQ`h$RKo)6$|?t35>2f{JkIH&4-xNYgkUd=ydK21gkD$syl2l zsQbtC%2Svsu8fqyo6Rq0)`rVYSu^Ytv8BPt1j%FR_U%{#kA=Kl!GdYpkm%snZC++p z3|{h3bXLI37y#u&UHh}alNfohGb%_r-m5wp07wXXbTGB%Z9ZK1^;Pk5me`&(AEPC< z79Cej<6~|briDry4&c2;&Gky0k#8YEY_Cu(RbQvQegx@)*_E=jX?7C8%qu5qGhT9m z#hV4H3IM=V*t{sT(%Oq(v5cLzN7cm1+fO4#^{g6io{D0x%FuL@7 z?}~o{HrTVs_GZ@a|3et-C|FkBG_1p5lhYwo(DP)Y;_`fv9OrcHl5*h)D%>|ZL}|1& zV)!3hcNDe_c5W82-{sv_U5kwJ`2kukv^dc%4=VeUipYOp$eq^ zi|!)>;ahbad}m~nCVsm;tQ`El9lqov z+OM$=Po}}=2oQ&;l?PJ)Pxs_4f|vt0+zOvLv1G?Utj>UZyQ1Yl4Mms(i?Kleb((-b zrylxY?N<)cf+KacS{j&%8>jL;``@|Aopx%$zU3;SKx$eHlcOD2hiqnXL@X8I*yHJV ztoF-B|AU^6PvnB^sXNXG@XlCFs*5)8EX%BU!HHD~RD&i|&4G-NueKq3p5%1=EM zeg8;Yzi$&e@9-7L$SY3b;z}*# zj~_tQ1=k6eYk_G<|J3-X%cY<)lzus7(|-FC5ewKqODbsaU>$@H+y`WEfK>dg&p||i z49JjEIuj9z#efVrwZ~W48*GQWv-XAq~ zyamaP--31of?UVnFnv77pG{+%HM^GI*JDqG* zU0q^+qyEJ_vo@;{!iV40E8Jq{sbJ&@1CDN`@O*nS3xO>po5T9T8Y@8js94a^z2`gRkgiskx4P4ka-Gv3ETdTtlTKe|%?}gYZGV%<&Jkjfk zddQFVKCj1}7S5y?mO!F_hawE%as?C5cp!7FrAYgBe%|Z%?q_t{U?#Z>GCQv8{l-g2Yj?-1TMK z2p^~Ms<_z-a5xIk7!zVY{Luhrb0H;eS%h;32V?;V)xu3A7@$Y8 z{?CGC&>O2nUwoslJt)Zs{GHGDBOsU=G!%u!kqjmvZ#qOGW&K2Od0r~)Qz4aHh2D%+ z>J@s={K--KuYopUX+kNlXkqI7%wSFwYR!P9svXL!bYBp(7gFkedG8}emd?hja{yp< zqNl*zb{o@4?s|E97X7Yfgz^U^&C3uoz5b8JC?M7VJA|g*F)$A0&7RY3ZCyX# ztBp&>X=rNZ^(JJuv5Ba#P8Hu^;T~*oPTN7z%l`O~3d5+M9?(2w_X_>zcbG874-@nF zX+$Vpg^2yNP4U5iBTM_EpMt?6b;imdl{uwK`?$`xXnRrDWO+< zT7$0fWS*D*1ZoQ*$WG?+qFyWo6Lj`i>+!RrZH5HK2i^xtZ>~t;(P}}IPU_mqPp`04 zPx$;6ta}I+E@Pqk$E`(x9tmF^U|IgoO1=!y2OdEXusm|MJY%w@dTj-@Wg2i8{mNPc z3G|MGC%^SqPuK%7l6u;ODpCp{YRmG4^Fw4)cYrS*?UN%7`*iyyI~@mh^%CdWG^|bc_N!r zjpRQrS?=Taeydw zvqWaw#1v2@8jWHATDmwo%^ZG%M6z7N5LxCB3l(kgv|G_bj;grF>#ISRyZZWCWxKXp zMx(YRA%6z|d0Ana;d~BvG$t8!Y8qH35F=o$ans@Z``k$^vN zDRoS3*WKwWeMVViWt70I4UG(pd|n`X7H0+25FCn>dgSgZ3(v$TCMKJ!4uYcFj2yU* z^bmc<Ebta=ERku1E>y?J`Y{wmauLiAxMvKw0&ucF;WeVKg6w6dHt3;Fd;Tz| zL3Sv12pZTuzP~Q$0m1xoqGGQ7?T2}@YdvBgvb}(0q;`*D%{p$?-KE*3ih+$Og}K5J2TI*hBT=NaSHrNAJ#E(HbdnnmuadFi`SW zm}V*xE{z5w6vjPlQ1ZwvY;Y7cl7zPd&(MJgL;MGZxK9J;z%J>wX~ALT&~BI(Mw|n(~*m|0nco2~JAVy_^Od{c&!d@89FxIUv0me!;II zc}c`i@Q=IblU%bs7fdx0TqHwC%0F-37~il^)BOJj3jvqMg>$`o(=?&iF*>kUVdDY# zFjvPoW=6sRRb2nT29(bKodx-Ju0Wj7g;MW*BtMbddNA~*u(jrd-7|q`{ZxOLQ*8+T z4?y_;q%6;YuMq~q0;)jkxwrPi2krsV{{yr%0Jc1(32$d(mbGUyuZ%5!bMp4?*Y$COrd?3SJ&srMx49H5wo8ssXoob;_XugD zpui>am-cNpN8bLd>#p$iw#t2W7qg)NhBpOoC_%xMF2`$CEi;M$*=rRQT&Kx3*sLo( zhIcc!M1uG>s}>5L;C(j0hTPIobo&BH^|h{C*%-JR$y<%-)z-CV=AwC8tl#Ca6=RYF znW%@$J9(*$vH_z)sYVu7tHhqI_pDY{i?v3!mrJETA;NhL<%O%43;c|w#CdJbgd9@6 zL_b@xbOf(LKf8j3`}liKe9`+|68k9cL*G(4hsX4f@bDEfq7?F9yG1AU1R ze1*)kLVv8KrG0+V8) zFn%w;e+M>xZz3jRnoiKv!vsFA3@=5Ua*|IYfl8xPBdtQCl<)Z;l_($2sn*Nn&74y9 zj+Q4J%zJDn_vMvYe4+p^t;8Uc3{1u@6B{He%^;&^ykJ~>5|2BnD~kmt5`n`gH1Y^Pntpc zyQ`v*GMZNuI3)(@-&n=NtPIkqNFen653*zSk2^6UDf!nYAvYucri6|*N`=Dur<&44o_r zsHOO2V|c$s=w)MiR_t3p{rp#V=WiQZ++m#ir^>ajo@Q4oHl3@1c*@b#iH`O^uqMBS zA~b)=W_c-4q1aeyrSPC^O1>`B18v!p0DXHAY>KSB7!p8WQ-PpafxnHSYMtCKwaerSA+~A}+LT%SidR5a@r-v-=*#c~ zL{q210Ze+F0|DPPwzE&6sPUE1y{ShhJ68>=^dm@4dQQt?elQeNR4qWY13Y{a6K;gI zBIdAcmkbypqYK6?qJFkRs)88C-)=Mmd}BniZo#c|HFg_CKT#gh5C0F~@j&HDz|Hkys}o!TrSrDC z;H%%fmC=?cCb#Dd+-h0Y3J=Z33CX;fPjw%9SIiN+L{}F=tQWwah0sU^ETAB*qnlxZ zIVluW2lHR4y}wr6`#t#w(;h#T9~m+tNQ(CFs&7&<2RA=tqKI&Vqm_w=!pEmay6^;= zQS&!!3`${!FRCwZj=0|L-rpzxDlBv-iH|Hj-$0LA?$e5lEX5ea)d=gN;A`zwUNbPB z9IqIOe{VDYP|YGq9$C?p>Pv`;;?*>^W~EFJA6zn~P&_GBm;D=;CZte{zB7<=-m_Q) zDZ9!=oB}8?7qMm)I4-SVeOOm-Os!p7uroYqECvy$wwm;isb!Ak$(g2)$u1u+|`#-3OawcNC8oykrZJwE9~@aX{;m79KTnXK+P z1}@IQIuMP zo{G~vA3Au8X*&)m!=n5r1+9zubEC^1XV{XBzv7Hz*JC!(6N}iN8(6ioXrA>L)n4dB zh~UxD^Tae^`-IZeP0O8u&_#PgsL9SmBu%1eiX>I%L;Y0c6>x@D{3PsKn>j_OO*99m zHOMwuPJb;A24D&y2}>edq9tJD5us0!MN?6{khnsPa#eUVHP26*;vOTZrm*=m5=%u#nA&s*3}LFLCn+PQCoy5 z^~+BO(Ie$*1vEUw(!7O5`(P)drS2|j^vPs}6KPKwxnsG#$U}27aMH2X@KE?1WN3>u z^YqZnenkpW*MKS%D{NYb-?{?Wxu(T%M$r375K_4W(8WDiI5@Wy*g=9NKLpVA_Xs+VBSGVBvS`8(*G6G5^TZ|{1o`ff!E3#A^ zkEhPHL=x2@q8V=InW3520~_az8+U5$68=5u_Ues|g-==2i;R3iwZ>ED*lPN_5g@LtVES;>B>Z`2TvFfKICna{di%4mc}UTd^~6LoQ;c0G~T zqdV!O9BN5=3*7qVPhr@PLWW9`;94k5ZnVd6q6{v@hrUGzp$EM&#}6xwqMpMv^03!| zvj5t-`y=Z5V%D2vSzZjG3?GM+2f3MCpUEHZN-R`*h*vTk>8W&G3XrT!T3jwzR_}wT zJr!z2R3qLyBkVrtKUwmN1sWZzCcAxrxNww?DT5~i#YG?Z~rrpuF#Pe!K6<0Q}zl)wbr}h(hLX#lr zl0HXXnqE2YN-?1yqXkTJ;&^pd2O8)-LhNJ55KQcNQpOT{1ZhFjh@rV;8Kme0HuLkN zY-oOBkswz^U->iYSrewt>-BD^i(7SFSfheHmjsA;JK~5fM{A8mNF+$!_2tvYMRp3U z&x!9Mpi>pcgs}{H8#(9>0)Fm#x1U+HQ~WkK)WRI2lkWZyy~Ppk-;YlPK-}U63=(XZ zGGbi6t-t~ST~->???mNCma|H#+aiRzB9qXbj#E3b`u8<>G3s{s8AYcKNdZ^aLRLYY z?1m6qwXx_3wY6>Kr2-WYWNtW@>uUeFuVLEy@KO(8BA<=^d==;KdT;dq6xpE6-aCoQ^=-Kc0>LfR|=F7FU`?@?Bgy0_P!fv13&amuq`Jo@=6;5 zuD&%un9C=G2e#ILn!9j2~$!(g9VXEE0I<0Taj{h@=iHb(qL2r z3^Y$y*vYH1tW?6=P)HLY3}^_4_g9#HV>xlxIa#9FV38T_jlnywk^U=tvsK}SC(;?` zkyVhJRv#{He*#7!*|WD(bE$Bh;hF8*+q~t`j;%E~bK((rgEUjx6I=E&`+lt~=R_Ka zl>-4h{b0QEI1HL5iA+ek14hWx{Ty8}RReEiNxw6MHg`)cNb+Y?(Ptglle_#kZ!fw zra8G56+gZbBY5?%mi8~}EvM}>dZTR$nE&7!HA&2(kt}j3*ixCnuicLg%%T#zjEc;1 zr`*qIObyGT5}q=SXV%!4#^C%NI+8vtB)f~rb40w%f#yiBG|p-~!m7THL*odK(K>_> zZ-ocjT8z~SOXoN#{NstKQClfQJ5jW1lz7=V-s%#m^^h^{cg1)Us8Mf8 ze(eW3%kkK$Pe6`a9N%T$)zr@f_5Mu{xA-vzYJx;1D6!-6qBC}P2E!rq4O>>Coq%oV z%VH@fo?@Vhb8-+_-MVo(ml0#+Qj4QKwxetIiNlVJfysdhS+Hr+u~Hz;p|u^sX2?z} z`HAKDMSQ6)mS0^AU>=bB!K+wnG7n`rj{`-b1j&y~RjDnTmJRFWFY|00?@Ud-Q9P6k ztwKGM3n8FBJp@O#ksS_yX`*Dd`-gR9BppRXyyg-VOjecL6hAT2K zE=jI)h2MwdS1;qOQSEdBqLwfHYax82p~!ry!kj@EX^04Sw^-nyXyMVQd9=J@b~fY` z88XsY*y+wvx&Skn4EB2ngX#D`<0XXc-Qe)wzI50B;?2GBC>-_?b&+3Z4R+^Z+(ET+ z1~B+G);vE!w}ooc)RfUF(6p-O{rw4wPjX8lf8Cyf;O@v$n^Fato&zNOj&PBt_qU$fiKJBK-Diw^Q=w<XDrNR#SD`p2zac$WU6S?1Q`^q1pwlzVB2PF3XlnBD4gUGI#0zrO^LtA#G6 zT)ACT_2L~Q@Z5iNgF5l0o8dg2Q#w7|AKRXK&k>EfTC{>@-|n9LYmsgw^p`uo_P`Fv zYWl}W(@5s1mQH_F7~JylSdSz<0m31OmyT)ENA&#as4^z;C=?U}xZJtZ99;Lw17-~^ zLw@hK)T-_fzk{cG>sBQ~Z3yGcDy$KcRvwr3__clWAFEk@ZWBhtR348&;?E3-n|{-I z7-l))o2xukYc0fu?sT&l310|3*;pQLuARR6uSF0zu|2jLf_L4uQR4JDZesRMpLPm$ z`B@x@+yz^Go`+hM$kQU#XSBHcftc8`eM~JQTv@fd6H{C1LKf-vsJ<8IjzoESYho@9 z7&ONObpI2~SCnFd-Ag(jO(@Wj9qbF)4r5OWLRrdZxbFgQ2Wd{cCS2hcTq}i>n!r4I z8@8M0{TZLet|>u`P$R+6%I*cqfwl)@`)AaUeehd;h!ApVJF)sEBaV~@$n-&A&C->kvU zTVNOdM?SD!Z0Fz*`3-2CQg$1|!4;Fw6_Z#? zJbRwnNsNW=<5hnac~IL6tp$o2*#}m#Z)<*HOFrP#o>dVNl>8JL#=gpHx8>a203SNH zz^x(-n0$PiW7%Z|!h^=)Y~;rs9#XIm(hIMa6R02H$f@O6GRWx%s8{pETtS@8VDa+u zRk0f|eBsMI}PryZ*nVPj7 z&iNUJ;X%tQAslnUmX-lef-i)X*w7Wy154bM3b5@9=++3ZvBbRyw9S7(nqJxR*mY|& z;EIFJXF7G@{z!_(f&a7I%88cHI7WhfBI4DHMFEHurT)(}l#zptSV zpXt2M%yGgd%@`nynrv|$uSuVEfMZiwe3Ymow%M@;8ECU{hRVbWa!@saQt7r|q6Wzy z6*9jiQZ}MfjfOZD_V6T^>Z>tA)zK{oq%h1I)oUpoX6=WkzSh&a6+>UAR0)MMqwa6Ax)KW ztRuDD3HKo7M}n6yo2cMXVjOpuw&jJ1Omr#Pi?k?Ww-xy2CHg7o+s@CAa2AzHY_pKz z;Gc;wM~ga%e=9gg<#QV@EJx;Y#vh-qG6B<~_fzw)OJM>m5XND)Z*L(XuV9CyGVdIA z-v!WiQByH)xam4O67d+~(Q@yY8xUe2l3jW0iU=q@+K((*?4?4!dOp25b0(O$9xXo_ z;NcGMmpHJWNTXZI=ybru$lU$sIwL-(r1yvWC(-W2t_}sZq$e}OnxAdP;JPt(i`!Pi$Kd~Y2Uq^+N?$|Oj94?HX=NIw$NQS!^KTFZv zityuE#jnUxb0K#Wc6|ZT{A~mX*==b;9>b9PxbUH;%$K;o>xZpa6KkzXm9SPsQd5rs z;dsMsASNw&v0>?M88#W(6AKh;&EXn>gB88~|JQD;Ct{fX6gNs8Dtlm(_ep!JdS|Aw zYD{GC{9j`t6w>(q#3Eqh_?(W>SO$ivgqy&;FDR%{y-$h9Kf=CO zP6f+hBjqW~U{2YPF8Nn~{jw|1Xm7WSMh#V<}H=9I;q)?41`WOwJxdsFZUWzs79P-_!^#zm8Hy=uZdVk>?=S@s`JLAA2F zPKXzK!Qo&gvpN;7sS@yY$DL1R&{Go+<^Nm|r;vf~n$wJdXk-kC1y+J;aM+&+q#W&q384={SeJ(s zVhytq{FG*0bc4&D6h7;Vr>=HLJLM)PMfZP)W#{#pI|d9CID#m+V*6)Y+q>TNb0DFPmHcdL5{DLB@q=#BCy)^vfPNMcZ8}Wd8HO*_qljM z#SEo4EQLMc7>OALDCT)1<0pEpph=7~UGuR>&g~nX&mHQ{VT-)*Vk|^BA)`~kBTpSk zOX|Qws3w3Lt0+-n7?9xL2~{KDfmU(>7({MO`*Ggeifu8WPDx8%d^2K$9&NYY9Oh2-=E$8$2h#Z}x5e_FjgZ zP_gdxTc1($SccK5s1I=&1p`aoh9>qTohiClClFa)X^eOSXa1I1s&HP9Gh1ckm*VXh>2#(5-Y4Lye}3g1-X zhj=9%R0-y&uK<6x#>E;wm6z(dA92#J+MnhpoiHG9L33_%QAF@N_bV>p7W5;=6J3eW zGtZ2eCKdGssz`x`?$Gj((YdEwg|d)=ipxXA-rw6ExWJLsm{>Jo!=?cy!>W_4J$m;2c~ck zbKFeVB|1yz8)mrK!8g;Mz~YoJ=i2`hJMGWhaQUiF8ub7jbO# zCvrd2nG-l&uXhT+IX4<%s9D1i{17VE5--}kWVb5QwSHATQ|>X5m2|S$ODr6vw&=_Q z`@vWPq)wgX#E>`x>4bK*A-DOzINbFBew4;8F|d_K@Bk}CV88Z{WV5*kn6zCdy!grZ zxXI&2qmW6E$JupbW_OvpKlPkk5Sdj^s{w?}81(#d;gduR!adfV0l5OQv*(>lb`IM( zm#@=6{qUbGJaf%cMXgyZkW&34r^z43E;QAJG=#{8)Z5bBtei>tS!2|3_67kCP|S$8 z`s42+$K%$XMs}D!GS@*m8_WwXA!;@%@aZA|F)th=H+|P)h8wxd-ZL#2z_Ck+0T*X) znyhQseG$2)L2-bhANH1K5m58A&G6-e_jGdk1Ozzq2r#o{GPdxGdz<#ejxFL`_SKAB zVYdc9K-Def*Y&WJ%gZQ2dIzk@FF|`!nBknPUh;8(Iv{HSY%2OD&x25fa`MokfW=<$VuzOsGYrYc7k`5ZX08Mp}NE#u8Zv4Yn?Gs!8U9eqN*f!Ln)wsK3;N*eTaZ)dJv)WJc`3-JLeeVM-3;dT6 z22Mdu_{AY=%rZ=)yH;f3J1fB%I~u3FBXsC4@eI2fz!6?d#%o2)t} zT++F<3?Y7PockOKH8^1RmjWlxpW{8h%~~{NQ(thNTl+i&YDTq!2~o*SDL)c!gTG$k zh`jvouZEK9iFSgfJ;cSuz$`QIKb(;Qs)Q1aWt_q zxl!CqM1axVe4NeYo`7g6q6(%0o33ZC!-T?ekRjHQd<=QK`YJaSviyEdy{!@+hZ)V$ zu5=>qI=%Z~jU=LZ-TtVI2133%+@%=UGsepqHyCaQ29^9PeIkPqH@r~q11*Z4>wuWilPN~s^||J%*dz>l#mj&xgE_ioYj);^8i;t-vp_0L# z6r;<~5D+72lfjlbsDWk08tx{T{dA#+aeqz@lHO(Ws(EMb((hS^=1}0HUPV7}DCN4L zmb9WSc`DzdoD@)j%H^>dlb3-}2ufZ-4i&1xoXz-a-UO3Z*6~ppV%pS78J!qQn4W^}tpkWZ0{ z?+85M`r+ca=)Ct3yZGpH6LynCX24JzPDel6iwbMmNncq0qws-2QZ0tB?6A=FcL8~d ziZ^9*!ljhLI(`tDvmSX@!Ww-()x0l=p$0z3XKiOm;^qb%!f$YKth3M48aG44wyDPb zsN{Osgccl=kAQ9A?b9JO?u-1*R)R&V#(7E1uz5S~#QcL;z^d43E!Qd{>ep(HTcK;YjhBV1KNi9oY$L-bBUmmID$Af|wQ9#xvD1QMGJZ#aZRfR#A4fbx zj!1+98#&+iI(Db1xkLJpo+JT;bZ}@(UXCwLn0GHsVGoBxD-iV$mI$dX zf(5@y#EQ5W<@cmlKcX;LAyU>&)eo+e4xaw*VBWEL(tl1DU!Uy)@O2W|^cqGzGqVNpnTW~!2!o)(& zadbB`(YSE{Mjl#6Do%r+v!8GGaDh9z8?ZGN&Qy!VE@hOJ^i0fXi_z!S0&R=QU)cY~ zpucDAD2YslGB78Jkdti8bh5B3U95};D=}&b2!JIu%^a=2V{?S=F%NIzQ$`o%mX~v*F@hRb@agtu#Z>*(1Vh!u1 zS?OC5#r6_F^1mpI1BGosRCxcLIidi1-q#?{64f8*-_c1HEDkt{067yZsSpTggAE(N z#n-zaeBvr)E&(3Dd8@&-r2FFE3=B)z50UfoD?`5w_U_GA=jb5Z$?cn0=Eu zejfMhZtrQ=omF?@N9l-8Qp68Vh6hA#RPpFQlwQJ`84&5q0~5Q%?C+cBLHLbY;dAED z(6Q?2A!*d-!_Zj1P6?T$4r~`UPL3Y3o{i7%QH2g@3@Tk)?z4G4K`-*foxXjE)5gCM zrPhcR2<4DO=`eiYA*?^;P zC4cz9X(+n1-^sv*q!*ul^?-ugm?=bWZW87dei$Hu^k{4rt($d&bsl|(eI5_j^*Aq< zNYckG*@1Uam)|NpoKUx+FiNMwoW zzj>bTdB_scVVs(K9yi+VhqMQ{MryO!CJ59eltMgiZ^;t?(-3b!Em2~gPNJ~%V8p^K zMKIfYu}{&3+dXt#uxvb8%eKY1#;uuk@I+Y*-P1*%nm z-#xkpa^>A_78ACMOZZvPf?!2PDdsAxPZhOXBEW(yTL&=8@yZ;U=;w&cPc(qj`q7_e zWpH(Lmd!Fp7=7tc58V`dw#cLIpKST)Jax_+D+OYIDb8D_m~tH%4tDU4%do^r_^J$= zJ*Y;xJWU?{eE9@hDn1khj|>I zYfJ6MLGeK|a2M`C@edq+Tm(J)-o{wg#h!|kI=Kozmyaby7TJ}qI%4ejL-nz836%h; z*P352(H)n~jJ{|*c<8;U~HwijEb;9I{$Ag>Yegt%% z{r&6$tj+jZUVa+*mt%^kv@J!l+x3sdPX^Xk?sgu2rD=4S1NjP|)T+d-kvt{oBayRW zMfKb>FcrvieAL#8>;5Ydvzb#IS|0Q6t`b9y;_#@bl6DhLkev!@_+w@kJxTqkg}??Y z@Y;{=-=|#+A7-&C)UH1CJwYlqLx)c+k@aQ!6uh`QQeOomCOou}1b;f)2+H=IYQ`IW zFR#CN6e^*xEsDdEz&eRplw^1LfHV_+>34CGSAPd(BhJ6!Ntt5`ioWb^!u^OT6dTNc z+JNIc(PNX^2%HS?uT#}i?nA@~jg=7vy^RbYK1vqhs=VgvJqgk`VRkWus!7$LD*MQ} zq_Gc#;84I~!gG;2DLn{;?N%;*4Ik&|PQhJ>D94%TUb|cE6Vh?Df7ES}CZyk#G zdR6g+0=g@dBJBw9P$jP2Y<$lH_);tfJhJ=h*ugj<1JnbXD^Wdxix9d9qNZZTV!6Xq zwYsC+GyJt({KqK(I3GGqG?+evJE>~2DsxVFiE@mY_vFIu%mmLBV--~Wzse_C1WdG_ zP%8BlO_m}^B6pxsB#AunWdApPFwB>8yD+GsyVnv;)x&B4ce1S(u1;5R31Q};i z84rxuU&^MAm^Yg3(BXoUsz#1jC*$2Rgv;x`*3pkjZrxjPeB3nf{YiizDd=EX@j&CBFBH48 zMbyz;W@UoQgjW%!aozArW5f-QHQ}7PRBp4Mmb<<1D*E+tv!^GKAgYnW;-TrX0i@6e zDgNnBh;kTlqWIoWW0>`Wcp!&x0y%9=IwDEXNzx>tRo274h$5`&1vuIT3s?~`8wi0W z*KXaq;6s+)x3g*V#p4Ht&Y?}npTE(4@u^L$vNmLZhW-aeB5qRd%RuZ}CSpbK%p=m+ z51;9dOnI=%?o8)87EL;!5#kxgZ&l6QQN`EGuT#bdefZA{4L;xk7hMF!5{)gejQ`L1 zK{I{;iTlAwNKotZCbk3X{_x5PuJI-Ivk|Lq{X~w;c`5gk6pO^CeZh|6Q%BZjN0Apn zDGz>0pbn~VdiZqPd{C4bU0KOwhnSB?e`&yGJqC%cUaXhZak$@QS}nNTJw_|u&F8?m z%hFx~cx8gzNW6e_m5bk#*U-u63F0q}=GEqjp+&>dolMQpMD}dryzOR8`fe<9PdvFU7+$FfPxVuAecXxMpcbCQ8-95Ow|2OZw-&gf* zP1R1%ba!=+^z=RVoZGNUjIH{MJJldZD8sNPp6Ytd0S2o0xP_ts#Z$x(2117D43o_Z zX^RpenGH_61Zk0LiBh<}W@E;oWQQKHuZSj;P@l)U`;ktQ#ERc}y2_#XG(@-eYOWjP zry-hIhGXt~y&fOy4*(xqi{%goQiAYI+R8I(su__Q3yZ%fc|?FzXKGpg{*5=KL2Bda~ZZu*=3%dQ$=!+)?izTz4r0c z0k3DL!R1RC+ilPWBu}=rCOZ0HG4}Nqw->uhcquiKoL}t=8NxA8bb{b68}{+~XaXnR z-6J1XYZ^dLRSmt%)xn28JRaL9^dP)xKiUibk{ZZITo690dtDKML4#ZuEF@{F9!Z1D zd`stX;i~eB;w%%95!$>*nN5Hfw~^9i(5wMksAUlBgsmO|3gK|NbG+3ra!ig zsj}}@C7*1#BOx7KRNrgn+&=W_9ykT|w56}8*LSlb>wc85S`69uiA1?vX?dN>GW6SO zhWkdfIwUQ%p<9IIVygQMbYEj8YU|bGYLocZfXA!*uufB0+K))9kzR{eOQdx|q(Re` z`|w%oJMkM)Z_pwR3 zQPrbjncDVxc}mj@@*=#_nqtfpZFjJVHjZu`Yne~145{l}caegN9Pfo!-}=J&+B=j% z9^^%y)3${fm8U~}5voFVW8IV>Mw6>IL(%A#DlmaOEhC`BFRnf0WevJyhV!5qUBW$kVB^Zt3+S zyFa@9Ue1p^?7`A`{UUE{iJItcbH=Jm1^Z0yrfy#}5Wy92P>RUW#{GzHI0|}2Btpzs zOHlY`3<%#XsGjcNr`V-7o+4sY9Y}b9jg&4hbY>YBTn7#L#i?Vp3Z5`l2HIcc&tsFK zbxfb=iO3Fsh&vCIHBJ$Se?2)%5IYm0GGzfBNjE$(4P{9|BSbeXXBz5yW|HZt%?6je z--pwJrZTqtOZI&F=;agrf^As+LWi8RRf5elf>EqMq_s7Bzx|m{o>6jVTZ7nr1;V=5-+rOj-32Km6(S6fBLKeIMw{$2Q3 zp4IS}g50e0M#9!{(_R#-~V{g+KZ_0QsLeNQi0i*&y&OpG9p?9 z<3e_-Q`!Pt*`w;v;lPSb6P7zCq%EEsXk;NcDlueXmp zzqTJtyb{hC*ya1t)HaRqjT?9i7Kc!c65VZVQ(lwsBSS1{Do^a^&JW68uF0LP{RwXj zR|FA4m|v?iJcP|M{#Cy}oP;>n&o_Tr@Z~9aCdLknJm@IazwP9&mlxrxSm(pJNbTU zjGNN6kKcu|&xxX_@+>?zLnh(+{yH zi57rq?%@&HD8CG&g(_OFiMwG)7dJ}VPbj2*;nOcUuKUQ?n=pu%ZF|4AmXA7|OOde7 zGrlHhvB+Aayx9`%_WemClpB2p5!DNy+$EnUoGGqUlEVifcysa534sRu?qej+AwK+| zg=~G}NEO5VJy#ntsszw;e~Y!y@Cn+-qUMzTxLne;$)VHFyLV^JHDhAcxtMieC8f&G zoP@5IjaWVE)q8?(GPzU?kLUT1e!Dke%`F(hY8dH{67E>vrWX$zRLmOMAXgrU{#u1e zqfnlg3o$2ap0kCxHpN6F=?0KTwJesem5x_jm=kCvecm7`$xXia^)(nW$t?|Jc|a?_ zrYFou=T+LBZm}e=vDBK#41YSZ!ngx&**NT9hZv@jbYA>T}xNT zqssVGqRgFsYK@Ydijph~ZtXr^uld@q=Rac;{9o0|9tDt}(s)#NsR?^WsTqZ7J9K8? z3wQkg#{!Pzn721=&E#L~yK_b9yY5&p!S3TzBE7hyE6Y^A(W%oYPo_j}^X_&UFKm6n z!o8Qj1E_ke+V(lyzAc-kLyo+!+zb5PB}E@KB<~LG6XQb$8Y4->99Rajlhv$FE__ja zWyKrIcry{=jV#3SR*Yc88jL8=efIu$`r7cU27KVtUcF=y0~d@brwpu3FAY@wCODMX z6=`2gD^JHqrX_m4xXn!3HJCuAOYn zmHY9F9`+;MgvscsQEbB1N@9lP&7VBmmXwL@E0lprNmn#g?-4TNo!HrJY$f=`>;^ui z9v0Vy0&B4;Gn0B|wf^a2=iQov&}lQXe^S1pO`+Xprq#?U{oUAZf{XwTD&^lwzSNib z0F(%a!r>VMwC~g<#dL)y8nXpQR5D4Fg(m|4>;VLSVSHI%0Nu#Ynfa^N%>Af7ixAw6 zxO)G^Kj#x}Qu%coV}9eTahAdxsHU8evCL8}%-UTHKDb>Z>_&RbWkdtNAf_E^2yt-v z|BObJy@YjLeL{pA_IC^Y{IhK)*pnh?I=Q@DDyO`kiWfV3x(JFPL55tvwCkIn_mRhY z$5#*j%VWff%P5IBuE@&ez0!bR)a?;$ts*R_-ZY>CJ7QFEaglkPj<}k2*!tRJk(HF3 zx`4rHJle=gV$9*)!&GCGV0&D=?@GavIc%+^-g*){hpDyMns}lQV{EOV(NlG+NgLU; zJg&LJ5uNjahhaa2)LATp%>)%A$Xke3X1>F=BMH_Ug3>s-aDU@%(q{ftz{y=fqSXs- zY?hY%n>BtXpKMnMC%0+@DIu$Fd52x#2dA=<{#=c4I4!TSE5^aW@(Z_dYg6(@1z?s; zWUw=GvaZZ|!G7|En1`*Z|IX8lcVP5J|8gyEB`W6)bN?07{h{z)A6LVGiFd$M>V>hM zKoFc1jdy@@(WB%Ib0ta+7-efVa;k7PIOX{T7&2yB`i5E68%5-i^b&vaG$#V;g@BCu z3hcZ{F}9Q)$!$E&MoGj}Z%xpOMQ>E2K$vQdaV^GN16pZ?>`=&o4z%nEtQ<|F69nQH#Ye{Dl529a^I;(*CS-o`ejK<7yD@n|CoEd%eMd+w>t zY$irgF5d5Ec8Qt}{A!nTp{~16@Q7|*MatoRSvlKPy{647RhMY6DUrzi4>O-2%wYuk@^0)F}W%%^^e4jQab%%Ufhxz23L`7 z?8TY1-_(ald0{Lh3Y9CK@OO4q`T6gy-3_ZXuVR}w>y40DmF8@WlO=W=p&>lZu8;T@ z;qR_D3>BFv_+t7q33z`TyMHf3-un*S#sZ+ruNRL@w?Q9ph-N@ z_hmE#Ted}p@z}-PP>FRCez?#_(&g^Xt*3OBeC!!Nez>gengM0|!H8t#OefA1Vrz0S zxhm_x(+wGbQ#Wn((vj+QhTPA_?LVgIJeClzf%MU>5(k&yS!QZ3`q4zgtyc(aY^W_@vOuXUeK2E~x#+f0}S`3s0Nqz}foiwy6 z!zwAmMubv92EeYlj?Y<`HiAOIA&gcmVyDtbDSxiDs7X<%VqsCiF5l6)Tdh2EN6VX^ zF;T**C{5M6Z$4YnWK=7{rj1axt>5zM*U9*ANOjnkc>EoaC{hNgcK`FU%1VDlH`S+w zr6%6LAIGavY9d|PnN$WT6}g^D817N0Qy&$t`36y~**o0Ud~L4EUXpNTkP0t1_|8)F zG0?nYBCK;DS4j39&<-;u5<-(WDp`pZg5sm+JxPdOaPM!9CkH{7@H6>Dwi25T0U+1> zoOI2X&p~gd21AVJHWLFyJU>}4UR*0)d^}MmPAISWlFFh^wiF9PJl{~K8mAOUqe_T^ zng=c6r-WJ_*#oys$~ER1@G77@bjd7Tfl@C{F_JI>w`^h3$gJMK99tDFbtbxCkU%8S zDq!_*hg<)CqGa`&`=s~&ioC?F{(q4d8+GlkM2U0BGN=mlP`~*)Iu8loL`M?ydhzV} zs{#EXhI2!Q(`sSn2$acgBUG zSW9yV4di^rQy1Ws7U0K2kD(HZfrXCOW{u+2WKnPyssBADVv0HnFHS5fWWeL)GYRV{ zbOP%c(zUjgT+d~6hq?kK;RL1ru%_a)XVOp%Q@JeD4q3wv*?BVmSmBC}=F|!l3rdwa z4$!gzpqr5*yk7e6Wfi9}d$O&kJu|9g)-_W4eA5{mm12>yqJ87~%0hd#Qc<7keD$81 zxYSYh#xfX_HKzRurfdOzejZ*)GrRQBT&*aTc3j!Eaqm5KA?2@{&X=a7OQbFNZ!2T* z$)-?XV9m{2;ld0J&7bQF=Ydm)*6?HthZ4K(wi11`b^^Oc;hj*zUEk=>qRD_`fwWmr z}ckG}(`$NlAo6=rTx^*xjK?*vVSf zLhVLIkHQX6DHQsRWFB)<{bwlbSz`|DrWx0q(lQt_{b$L#f@P|SL|?{=Pj)P-hC{K~ zvnx&I-BjSpt2Oj6m1H?5?c^FH`T^}b4oo*v-uHI4O|G!Yy5xUcSI&wuP^yT3$NpwXgrvYSHjQerPMAIjs&AhPNrG8)$iQB9n&hH_w`Z)35dfc? z|KBL?UzPaZAl?~|Wxn#Ga+=C#;V+@)J^$j#N?l+nWeSfE?KV*Z!mlXkqI=-5>L=pt zaSIf2h-7Q6Am(I4lA3umiaUbOx{1LjyyzpD~^zpdc|uvU;_ zE-ZBcOU)Qn6dv_TtQOBJXMOJPYon>Pic&2(Aq4q;Kx!M}62BfDKQF^LQYlvCR4`iJ zpx(A%U5q=!9@U7Q(_bnL-5N`2;T<6e`7`(uJ@EAPNv$&@VS%MoBV}n+M93QcNzXV# z-;&abI$>=byIk)rqRC5Sng-36G1FyEcslTshG7k@(vQB$F2*4Ke>(&JNKeM)< zKgem7|2Xa{VAi6ExG#QMz7`cL3U38?c#FGT(vB1g(5>G?)X~q7V6|V~e@^co8EeU_ zA_*{Ua=dqcYu+@)aP+NF!SYJusciZHdl2#BQ%8P^lcx=_3devC$u*eKkWTe0(4}HJ z1CmTMKqTg;B8?|tNrJ@}GKn#;Qj<}RlvH9#=%FfsRHJ4i8~}yL(^2sBq~H+r#6-k- z9c-TN5Y}rcl%Xjxy0pD&D4jK-vtn}Qjhd(D`s9LZV`5aUJmygd zhYMVV!_%7NHOa(7p5r!t7~{A=LsWs&Rp72VwRp}-{Bwi^`oQ{cP4RJTR{v}-=pK4} zA&e!$5zpkuD3M!|MSvJ*f}|r-${K(EAF-aDONE560^Q!=e+?fr98s~Xv)`l%pTx*0 z(q=lbNg|LVkln2kF3m^WLq|m_CTh#1PaW*^sz&c+unWi?AqtCAzmPBCwoU}XlB@9X zNbYVKn>?P_V4ocn@yQ)wDq7^GxwV0)SVhmSXv6X$Z6fAe9hyDh;?_w+kMdtSD(BU( z86#9E`}U?68?cc*@RCyZ+}du4w!Ae|$v%?;Zc{_0?P~M=CY(zLEWh(;oDwEl!r+}5 z_O<1PI$HidaI~B;;wm0Jj@lQczlvDNUs`m%L~&U`0YA}&;BtY8OK`Ylj{ z$M#%_yN@CVfj|R?PK%Mp7H1w_s!W}84$1K+_@ajYAOm&~>@;UFtWgl6XEebK^TUV9 zQ0WWFk(hXV&X5lUot`o5JayF6Babs|?CvX5)Tc};p+L7H!2$pRs(K^7^)OqFF!c>j zK!`;l)A)h@jMISNa3fiHU?1d0ybc6Bl1?ol`p&e>moH4+1>e$1bM#2FS&DkzNhWzD zLKQT+P@TLMZE4Jk*wD!XpDaZb0%$Y1ex zae$VrKa5vrnEEw^{v`>_fis$rwSm_&tVc{7@ zD1l`cYQ45|q@rb)$xFZ={}Yn=`_ZyG?X6gaZr5#gy@tEo3JlzWe}vni;Jv)!vN#Md z7%5}kA%VrLI@f64tUB=smKH(O(daS#6v+1rhk;AlV7nC5Dm-Y(_T%_f z2J%U)GD}R$-Yw?4)BA#-CY*4};mb41WAHV42GTN?{U+2R%b_tYA`NJH6__PxB=8pV z%HfTAgx_nEl`Q+)zfzNHI*ptqi%6|9u0+c19l25%h1d+Q9120tvlm4Y8H`4?70=sv zW3%xQug~NaWY)fDPl5Y81{Mie; z^jE6{`uk-N3lI(!JbL8XrB`5x$E@?G!a=PZE^h*$Y6sn+{# zyL=7w@Xl^EI9dJbR(qSNY;g&^f7ff_+9{&;kx2`D${i;a*9zgW#OxAM4wc^obWqcF%lPbq9zRCDNe^Fl$ z6Wf7V89~W7w-o0E;h9lC;j#8e-si^?7Cb2%6IHP@_hnzP)hE%$o2Z(+UY&e{KTY*1 zlT!-FKe|wmC{;lCJGtflZ}|WqYVCEIPsrR*QUHx9$w!KaCmGveG0l$_A5qs77f?k> zDYZa?j$p%BCj>4prFWjyvss<^PyyMdJKkk^~-1;)Kj5-?){}gPVcYjB!13DS^ zv^TO~9#~Z%<$Bsuk2kv9OgFDd9)#(jk#piIsX3195B#=19%ndNO4CiieBwTtX(D~C zxAD}W#vYlPGodaZ(l7Le8-hnRERWA6%GERaM@$NA)&yz3Nw!4#_i#GIX%jC>5--9M z=wFvYRa%YJTIrQr^{pw;&s)&X!_eqBj5KIA;AuB7s5kOcTV?yEiPgd$g~OIm!1!hgGWeVK%}ilPh8xoYE*_D_GiYne@8^ibdR1 zA1)MCHGcGm~$}_G87|vLM1W$uNy;uXZrbbT={6&P`OwRvn5aREnqR5M$+})Sh53y(% zzr=x_4BQd!gP6qyeuT0!U?IZR3(YT3(c0fbZbSH_z|(L{&Y@?_T|>?bDEr2W)5~P< z60-soXruF|H^Pf^;jmEtjj$k3j$5*_YK%Zv@gaoJ6 z6V6Rb8SIG3vR6++j;y90h$oIjMCiDSMySy;PDhu7NRq=2{Gs;YHcZj%+|dJ9SGt=) zWU_U8Qn{lgmE->z*f=sE16!91Ja|wUBhf3Hk!20!{YJ+dai|9mXu`%(%>KqZ{7TZ! zpRlKpo)Daog7bJQOrx?=TU*zocz%;nq5&s)d<3>BO1Rv1(Ap8Yw5+giYfL*Bx zF%?sy@pa0+ID;vEf-$}pnM+ARu#m`&#{lj?5xGsR`X(nIO_ll`T^V`h>)pz{ z?qo^sG&>z7$=#>2iF)xFsuC`fnYgmx4odZ|U+!BNA!P+gsFBq>nZ`GTk=3Pu5!R%R z8X|6Pk**rsy`QXO;w4}Sf))A3m%{i`7%vA`EbLO_N_|&&NYUE z8Y~9QOV7#FzEQb@8cOi6peQRy{`#0HZ_n*za}LCu7o}={f=0Rlw3byyc3vm=&O`ar z)DC!RRSzm7Hw8!?D6}Zdx~bLj{w2ay(b~21(WXNqpy1V7jGwbABDKU6^wjCWkH#%c<8O{ZaxnF?F4EL4g0pNtHl8sRc z?QcUPwfKLIfe+z85))n22uhg1@GO5_G+jRdi2Zm0W`({JA93z>>uB4Jukzp@wc--QuYmQjKxIor!IPA!(^GhR zRXkA}4t&tg`}1H7FE0!ns}5-Cy}@tU@jFoiB0ioZBI$g5(}D%wHrL*1Jj;Ig*9D;- ztro_OZJOrHzN;0$@Tc)d1CKLR59Z45EV+_Tw@zJ)ca<>utx1Ek7o)((8rX}7BZcNp zO`2Xp#}cp#_$*SKmnjD9IK(-;x~M&ew#AScsb{7tm~O9(v`+D^0;ltwCY}&iczg$O z$WqH*ZHdC)Y6TqMr^%#lWOOgGzlR=$lcUXXtH8CBV88g8H(f-YX%&{hC0H>Pq&Xki z46C%BLMu4>QLH+q&lvtpsZDcU#+$rQ^*owUmpr0vzfJQzij_%;mAQ&t{hF-q6G*># zWGo3~>{4^J$f>qW+fY9-@~~X zIp&qIues3%b6pDXnH@fHAj&?1=~JKLL#mLRDs$PdW=dXrzZ$313MrHkFDr6EIn)?S8!8VJ^Q- zLvQFoy?Z7XYJ(PeFSm4exihZj*H#|jY`}NWo0d+{mARLX$$_dAzDaYp_)HZOLC;*T z<8s_fT~V=VS+^=qET8+OO`u@x@wn%zo>4&Piyewommj!O8*Jilv%B?niiT%pJVTuY z`UNM)1`$<@IW#<@hFPN&EhT*L;(m+(kundA9cd^UxdxO*R+N`kAnR9M|K{f4(fGt5PWNvB+Y_zY2iBs@7$ zql_X;k!8ksKU=e`d|Qw^-o@Pt$K*Z8O~pgIsKuC4FHlB+>tGpnp9)kT53akeNGWX~J{9A*sX5LUzJHW}Z{W zSC$OV&Gnf-gYd)G#UJLTj1BddY9as~wAasp5L`{f!_dTA9P1Zy8K23oMBv-k$*)~=eA`t~89efc|^r-H21^_uvSoXd!!FYWw@QqNa$y(g>; zliSlmhEK6;E#YP^j_S$aV&|HX9oskRJ>mV&?3#mhtKFvuiy@Yme~t6=o3tK_<1{I0 zmPspwx)N&?vs&XO`VRh87e}|HGY@Ab?4sO*#^Cis>p2%RO~fpP&p)1V$g5&AAA~)A zu$F%H`mS8~p7P}gQfK=c*u|aF{%1ZHb{yKtg{DAoe6khQd`;aK8+FkPZwSHsH{mt+ z!(kLEKH|uVE)}{Gd?xdP#5ZwV(F!^yxgOlh+#SAcMMBk9bPZWMs_1gHmn7j^^dfi1 z3UNt_jDtk_6jV?oIr=#7+OON0w#l5>?fRIG4kEwv)pg|Di@H4|-K*0RR|90fB>?8u z1VvG)?11QWSQJ-J_61={U*b+}YG+t}g>xJml+Mf#m2>Q<xV_z@;7uikGhlSrHS4P2Z7wTl8Ei6%0=G%~`_@-}shj%=d|@_uHvH`IAQHd~({ZO*JJEA%;b z2#_(6udPMqHbb)+_mjlf0{C%TF8A|9EGvA_`>cs)&>HwQS;Gl=7Q~I6vQJoKjW|fr zH17~Ty|WE+?2g+vj6*=?K!o&&?-a+zWg(6_*IO^jq^VwZeKdagxbkY89gJfxs}VMQ zBWRX*-u%F6#}6c^E6etuzt_inU)+3utN;38OAr`E!0Y~awLAEk#<0=zk&mbEg#oNz z3dG$t3=R#5Lc-`!trFB{@qpby@tDLB_3{WlAMc1er6)#Aq%Ps5q-m{Q50q0Fa?EaO zFItVe)31g|%2W2vN^3)09h73o$YZz)+K2f@bHKwTi9y}26c~ewc$^WKJ=w(@0RBEy zcQ;EF{vN(D>DKkxswOatkfG$yD4d5H?fV<5y`iu+;^~JQf+lwlcH+rhUd;a99b+c- z`8ZSxdXmWZ!i4ODUi0pr5Vokqy;r1KB`?C0NUN|^e(~2&NbFzdU;-n8?-AL~FMD`- z`}Cp4X>GPf0vV^wM)EKWP$IRwS3in@)nxr9efyU2qLa_}j*RfGC(GZaiglUYS-Y9w zD%!QVO3i}oS7a5Cvz;?x*Zq#gTfGJRi*I| z>!R-0%{qJx`V+F@RB3VYz>ZdVq>UkiKKpPPPK;kNP^W%!qhkGLc4pISW+b~}(UFRi z-D~94M^>@0{nBrSOjkJSbR^5;6BNf6)qi0zI@?pYIUQr&q5$V)w6^9EMUa+>ygcG^ zCNc5>tl~+b)A_MXeNtr8q5@^V7@Xz&atkK=woiY4enSpgmRNMLa`nC|w?k=qSAyyU za`X;yeuN`&*JB$H*y^`>Z1Qf%PZ=n-i67NL#6a1c4y?s5a_Xjl&B70Jcs?V>tqLNn zs{b}4ige32A-LBKF{{Ao#~J!)0@E~8Bqc*JjMGNYj8>HQd_(+LV@N>Rp`0Jp^l(D3 z36agTYn=1(8Q6B+>0akF^KxS+S66{7FWam(Ul-A>p?;K$Z+?ZL8kHxL0VzXN;kCu#_j{Xw;6Un; zi<3KoYU#8e#n&f6UJhIr-^!N~R5qE#f!@5Ambsvl@JTm%J~99@{U4 z`tU`jr~>E);dUC2i|op*99O8`(_1|4eOHm7Q~T~b@is?Y(w#l(;SMF3 z@R||yCM_8E@oXz@U(e2$-Ytd+cmX)Coa!+-UXvwo4x-X&dFJh8m@bAA+5&**A@T{v z#b$&wn5NkxLs;f@CGVq8VmNNfT^?uQK8bC$*B}K|bm%B}Dash?E_L^kyvZlod2RHY zOMG+RdML4RG5n3tEci;BctO8seG4k~?yT+^KsB)agfYDa_oQzBQES6DSEVCc0&X6@ z)lc1e06&Vs*`ZO(&LSlGip}`Wx3wAnpuSy?z*xk2GfRBmb;{YWUp{SUw?a{<1z`3` z!pqX`(L$+vS2C{f4)a^R8amx134+w1w5*gqApizS%Y|?S$u)hPTIyUc`z+l!kL#)} ziyEjfs{s)sp&u5A6yMV_X}yV~l&i_qze!>A&7|;ZYUqycxhv2$&BAg=zSm>~Dj~hC z$`qLzc2)*6(SJN5H%_Z*1zXxq%wwT5ja6*aEHZZgd5S zM=F>JpqL2sSO4^<1RHuniIBK=oyUcaU3hUr<1lD_48^%rlGd6D#r_)QjV8V3gw0CE ztqRj(MVA)LEmE&Erf6n7K#sdMoTOBssdaq(rf!fa=K8p+mwEGAy>>krS@{P}iwXOY z4;>HTb*L`K8gXC)N!%!&z`aqmT;KvZpz=@n=P5a7(Q9g?2)JdEA~^&y%L`7bOy5L$ zJQleTlsFb*&f8LRgn>lul{lNO4Vrhgs-B}-9N_OEKQ4=9?1$yfz3K|%#;=+3?a5-R zB8$qEhQlnyn#(mwL7gVI-3($*tu5+PdBPmZD@lo~_w;A&ImB~a-IjkS_3NwVCvgp2 zsK0cI_c;w<6;RxshJ+&c6iQ?UHK@1iI@ZY6$l1$$rJv5>a{*Ccap3$$aP%lF^Hp92Cj=Wy#f^*4FMxiBgrv&Smicl8= z89xWEJtpa4RH~QDQx2sbqpYM92Rnsko8G1|&0-E;Fbl-mG%Xs5!j&UCOH;Y&@;Ha# z>TsN9aC;~z-G2*iWZSeG`As?_K+M}Twp^og_P`zes#$|$=Vxs@>b6i?!C5J=9YXK! z7=(IHehSl(#q->i#`fCm*rLld&_FWC+6wD~ExGep6 zoZyPo2Np0ko1+qm5EJ$X<)-)1)v^r*4=G_;J17V_C&&91nnn}J@M8|fN<(e}QWaER zt4D@#;F-xu-HPqhqGpz&QbW;I-fg?EcSX39EcgCZF6M%197o0l z6%B^~c>WH7csh(X0rUk8BkTL&d%3GT7X7bUf)Trln)TC5=Ei5zw@=v1o@CEMZ503oc0|tzh7LOV_XiF} w_|HEW7{36&ER%|)f{M1X_D^jFZ5BE!2V-Md2`K1)^MQj2fp&61<-x%I4@ml=v;Y7A diff --git a/build/ABAP2XLSX_V_7_0_6 - 2016-04-01.nugg b/build/ABAP2XLSX_V_7_0_6 - 2016-04-01.nugg deleted file mode 100644 index 4607b8e..0000000 --- a/build/ABAP2XLSX_V_7_0_6 - 2016-04-01.nugg +++ /dev/null @@ -1,46132 +0,0 @@ - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - METHOD add. - - DATA: ls_autofilter LIKE LINE OF me->mt_autofilters. - - FIELD-SYMBOLS: <ls_autofilter> LIKE LINE OF me->mt_autofilters. - - READ TABLE me->mt_autofilters ASSIGNING <ls_autofilter> WITH TABLE KEY worksheet = io_sheet. - IF sy-subrc = 0. - RAISE EXCEPTION TYPE zcx_excel. " adding another autofilter to sheet is not allowed - ENDIF. - - CREATE OBJECT ro_autofilter - EXPORTING - io_sheet = io_sheet. - - ls_autofilter-worksheet = io_sheet. - ls_autofilter-autofilter = ro_autofilter. - INSERT ls_autofilter INTO TABLE me->mt_autofilters. - - -ENDMETHOD. - - - METHOD clear. - - CLEAR me->mt_autofilters. - -ENDMETHOD. - - - - - - METHOD get. - - DATA: ls_autofilter LIKE LINE OF me->mt_autofilters. - - FIELD-SYMBOLS: <ls_autofilter> LIKE LINE OF me->mt_autofilters. - - READ TABLE me->mt_autofilters ASSIGNING <ls_autofilter> WITH TABLE KEY worksheet = io_worksheet. - IF sy-subrc = 0. - ro_autofilter = <ls_autofilter>-autofilter. - ELSE. - CLEAR ro_autofilter. - ENDIF. - -ENDMETHOD. - - - - METHOD is_empty. - IF me->mt_autofilters IS INITIAL. - r_empty = abap_true. - ENDIF. -ENDMETHOD. - - - - METHOD remove. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet. - - FIELD-SYMBOLS: <ls_autofilter> LIKE LINE OF me->mt_autofilters. - - DELETE TABLE me->mt_autofilters WITH TABLE KEY worksheet = lo_worksheet. - -ENDMETHOD. - - - - METHOD size. - DESCRIBE TABLE me->mt_autofilters LINES r_size. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS lcl_excel_common_test DEFINITION DEFERRED. -CLASS zcl_excel_common DEFINITION LOCAL FRIENDS lcl_excel_common_test. - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmless - . "#AU Duration Short -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>lcl_Excel_Common_Test -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL_COMMON -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - lx_excel TYPE REF TO zcx_excel, - ls_symsg_act TYPE symsg, " actual messageinformation of exception - ls_symsg_exp TYPE symsg, " expected messageinformation of exception - f_cut TYPE REF TO zcl_excel_common. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. -* METHODS: char2hex FOR TESTING. - METHODS: convert_column2alpha FOR TESTING. - METHODS: convert_column2int FOR TESTING. - METHODS: date_to_excel_string FOR TESTING. - METHODS: encrypt_password FOR TESTING. - METHODS: excel_string_to_date FOR TESTING. - METHODS: excel_string_to_time FOR TESTING. -* METHODS: number_to_excel_string FOR TESTING. - METHODS: time_to_excel_string FOR TESTING. - METHODS: split_file FOR TESTING. - METHODS: convert_range2column_a_row FOR TESTING. - METHODS: describe_structure FOR TESTING. - METHODS: calculate_cell_distance FOR TESTING. - METHODS: shift_formula FOR TESTING. - METHODS: is_cell_in_range FOR TESTING. -ENDCLASS. "lcl_Excel_Common_Test - - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test IMPLEMENTATION. -* =========================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - - - METHOD convert_column2alpha. -* ============================ - DATA ep_column TYPE zexcel_cell_column_alpha. - -* Test 1. Simple test - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 1 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column for OXML #16,384 = XFD - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16384 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'XFD' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 0 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum index 0 is out of bounds, min column index is 1' - level = if_aunit_constants=>fatal - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16385 ). - - zcl_excel_common=>assert_differs( - act = ep_column - exp = 'XFE' - msg = 'Colum index 16385 is out of bounds, max column index is 16384' - level = if_aunit_constants=>fatal - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "convert_Column2alpha - - - METHOD convert_column2int. -* ========================== - DATA ep_column TYPE zexcel_cell_column. - -* Test 1. Basic test - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'A' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 1 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFD' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 16384 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( '' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = '0' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - CLEAR: ls_symsg_act, - ls_symsg_exp. - ls_symsg_exp-msgid = 'ZABAP2XLSX'. - ls_symsg_exp-msgno = '800'. - ls_symsg_act-msgid = lx_excel->syst_at_raise-msgid. - ls_symsg_act-msgno = lx_excel->syst_at_raise-msgno. - zcl_excel_common=>assert_equals( act = ls_symsg_act - exp = ls_symsg_exp - msg = 'Colum name should be a valid string' - level = if_aunit_constants=>fatal ). - ENDTRY. - -* Test 4. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFE' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = 16385 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum XFE is out of range' - level = if_aunit_constants=>fatal ). - ENDTRY. - ENDMETHOD. "convert_Column2int - - - METHOD date_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000101' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 1 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000228' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 59 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000301' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 61 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '99991212' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 2958446 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - DATA: lv_date TYPE d. - ep_value = zcl_excel_common=>date_to_excel_string( lv_date ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - DATA exp_value TYPE zexcel_cell_value VALUE 0. - ep_value = zcl_excel_common=>date_to_excel_string( '18991231' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = exp_value - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Dates prior of 1900 are not available in excel' - level = if_aunit_constants=>critical - ). - ENDTRY. - - ENDMETHOD. "date_To_Excel_String - - - METHOD encrypt_password. -* ======================== - DATA lv_encrypted_pwd TYPE zexcel_aes_password. - - TRY. - lv_encrypted_pwd = zcl_excel_common=>encrypt_password( 'test' ). - - zcl_excel_common=>assert_equals( - act = lv_encrypted_pwd - exp = 'CBEB' - msg = 'Wrong password encryption' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - ENDMETHOD. "encrypt_Password - - - METHOD excel_string_to_date. -* ============================ - DATA ep_value TYPE d. - - -* Test 1. Simple test -> ABAP Manage also date prior of 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '18991231' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '59' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000228' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '61' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000301' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000101' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958446' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958447' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '00000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Date - - - METHOD excel_string_to_time. -* ============================ - DATA ep_value TYPE t. - -* Test 1. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0.99999' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '235959' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Also string greater than 1 should be managed - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '4.1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '022400' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. string is not a number - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( 'NaN' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Unable to interpret time' - msg = 'Time should be a valid string' - level = if_aunit_constants=>fatal - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Time - - - METHOD time_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000001' ). - " A test directly in Excel returns the value 0.0000115740740740741000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.0000115740740741' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '235959' ). - " A test directly in Excel returns the value 0.9999884259259260000000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.9999884259259260' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000000' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '022400' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.1000000000000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - ENDMETHOD. "time_To_Excel_String - - METHOD split_file. -* ============================ - - DATA: ep_file TYPE text255, - ep_extension TYPE char10, - ep_dotextension TYPE char10. - - -* Test 1. Basic conversion - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename.xml' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = 'xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '.xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - -* Test 2. no extension - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "split_file - - METHOD convert_range2column_a_row. - DATA: lv_range TYPE string. - DATA: lv_column_start TYPE zexcel_cell_column_alpha, - lv_column_end TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row, - lv_sheet TYPE string. - -* a) input empty --> nothing to do - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 - lv_range = `'Sheet 1'!$B$6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet 1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 - lv_range = `Sheet1!B6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* d) no sheetname - just area example $B$6:$D$13 - lv_range = `$B$6:D13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - ENDMETHOD. "convert_range2column_a_row - - - METHOD describe_structure. - DATA: ls_test TYPE scarr. - DATA: lo_structdescr TYPE REF TO cl_abap_structdescr. - DATA: lt_structure TYPE ddfields. - FIELD-SYMBOLS: <line> LIKE LINE OF lt_structure. - - " Test with DDIC Type - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_test ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'MANDT' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - " Test with local defined structure having DDIC and non DDIC elements - TYPES: - BEGIN OF t_test, - carrid TYPE s_carr_id, - carrname TYPE s_carrname, - carrdesc TYPE string, - END OF t_test. - DATA: ls_ttest TYPE t_test. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_ttest ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'CARRID' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "describe_structure - - - METHOD calculate_cell_distance. - DATA: lv_offset_rows TYPE i, - lv_offset_cols TYPE i, - lv_message TYPE string. - - DEFINE macro_calculate_cell_distance. - zcl_excel_common=>calculate_cell_distance( exporting iv_reference_cell = &1 - iv_current_cell = &2 - importing ev_row_difference = lv_offset_rows - ev_col_difference = lv_offset_cols ). -* Check delta columns - concatenate 'Error calculating column difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_cols - exp = &3 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). -* Check delta rows - concatenate 'Error calculating row difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_rows - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - END-OF-DEFINITION. - - - macro_calculate_cell_distance: - 'C12' 'C12' 0 0 , " Same cell - 'C12' 'C13' 0 1 , " Shift down 1 place - 'C12' 'C25' 0 13 , " Shift down some places - 'C12' 'C11' 0 -1 , " Shift up 1 place - 'C12' 'C1' 0 -11 , " Shift up some place - 'C12' 'D12' 1 0 , " Shift right 1 place - 'C12' 'AA12' 24 0 , " Shift right some places - 'C12' 'B12' -1 0 , " Shift left 1 place - 'AA12' 'C12' -24 0 , " Shift left some place - 'AA121' 'C12' -24 -109 . " The full package. - - ENDMETHOD. "CALCULATE_CELL_DISTANCE - - METHOD shift_formula. - DATA: lv_resulting_formula TYPE string, - lv_message TYPE string, - lv_counter TYPE num8. - - DEFINE macro_shift_formula. - add 1 to lv_counter. - clear lv_resulting_formula. - try. - lv_resulting_formula = zcl_excel_common=>shift_formula( iv_reference_formula = &1 - iv_shift_cols = &2 - iv_shift_rows = &3 ). - concatenate 'Wrong result in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - catch zcx_excel. - concatenate 'Unexpected exception occurred in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - endtry. - END-OF-DEFINITION. - -* Test shifts that should result in a valid output - macro_shift_formula: - 'C17' 0 0 'C17', " Very basic check - 'C17' 2 3 'E20', " Check shift right and down - 'C17' -2 -3 'A14', " Check shift left and up - '$C$17' 1 1 '$C$17', " Fixed columns/rows - 'SUM($C17:C$23)+C30' 1 11 'SUM($C28:D$23)+D41', " Operators and Ranges, mixed fixed rows or columns - 'RNGNAME1+C7' -1 -4 'RNGNAME1+B3', " Operators and Rangename - '"Date:"&TEXT(B2)' 1 1 '"Date:"&TEXT(C3)', " String literals and string concatenation - '[TEST6.XLSX]SHEET1!A1' 1 11 '[TEST6.XLSX]SHEET1!B12', " External sheet reference - `X(B13, "KK" ) ` 1 1 `X(C14,"KK")`, " superflous blanks, multi-argument functions, literals in function, unknown functions -* 'SIN((((((B2))))))' 1 1 'SIN((((((C3))))))', " Deep nesting -* 'SIN(SIN(SIN(SIN(E22))))' 0 1 'SIN(SIN(SIN(SIN(E23))))', " Different type of deep nesting - `SIN(SIN(SIN(SIN(E22))))` 0 1 'SIN(SIN(SIN(SIN(E23))))', " same as above - but with string input instead of Char-input - 'HEUTE()' 2 5 'HEUTE()', " Functions w/o arguments, No cellreferences - '"B2"' 2 5 '"B2"', " No cellreferences - '' 2 5 '', " Empty - 'A1+$A1+A$1+$A$1+B2' -1 0 '#REF!+$A1+#REF!+$A$1+A2', " Referencing error , column only , underflow - 'A1+$A1+A$1+$A$1+B2' 0 -1 '#REF!+#REF!+A$1+$A$1+B1', " Referencing error , row only , underflow - 'A1+$A1+A$1+$A$1+B2' -1 -1 '#REF!+#REF!+#REF!+$A$1+A1'. " Referencing error , row and column , underflow - ENDMETHOD. "SHIFT_FORMULA - - METHOD is_cell_in_range. - DATA ep_cell_in_range TYPE abap_bool. - -* Test 1: upper left corner (in range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'B' - ip_row = 2 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_true - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 2: lower right corner (in range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'D' - ip_row = 4 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_true - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 3: left side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'A' - ip_row = 3 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 4: upper side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'C' - ip_row = 1 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 5: right side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'E' - ip_row = 3 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 6: lower side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'C' - ip_row = 5 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - ENDMETHOD. - -ENDCLASS. "lcl_Excel_Common_Test - - - - - - - - - - - - - - - - - - ABAP - - - - - - - - - - - - - - - - - - - - method ASSERT_DIFFERS. - DATA: ls_seoclass TYPE seoclass. - -" Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -" Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -endmethod. - - - - - - - - - - - METHOD assert_equals. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -ENDMETHOD. - - - - - - - - METHOD calculate_cell_distance. - - DATA: lv_reference_row TYPE i, - lv_reference_col_alpha TYPE zexcel_cell_column_alpha, - lv_reference_col TYPE i, - lv_current_row TYPE i, - lv_current_col_alpha TYPE zexcel_cell_column_alpha, - lv_current_col TYPE i. - -*--------------------------------------------------------------------* -* Split reference cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_reference_cell - IMPORTING - e_column = lv_reference_col_alpha - e_row = lv_reference_row ). - lv_reference_col = convert_column2int( lv_reference_col_alpha ). - -*--------------------------------------------------------------------* -* Split current cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_current_cell - IMPORTING - e_column = lv_current_col_alpha - e_row = lv_current_row ). - lv_current_col = convert_column2int( lv_current_col_alpha ). - -*--------------------------------------------------------------------* -* Calculate row and column difference -* Positive: Current cell below reference cell -* or Current cell right of reference cell -* Negative: Current cell above reference cell -* or Current cell left of reference cell -*--------------------------------------------------------------------* - ev_row_difference = lv_current_row - lv_reference_row. - ev_col_difference = lv_current_col - lv_reference_col. - -ENDMETHOD. - - - - - method CHAR2HEX. - - IF o_conv IS NOT BOUND. - o_conv = cl_abap_conv_out_ce=>create( endian = 'L' - ignore_cerr = abap_true - replacement = '#' ). - ENDIF. - - CALL METHOD o_conv->reset( ). - CALL METHOD o_conv->write( data = i_char ). - r_hex+1 = o_conv->get_buffer( ). " x'65' must be x'0065' - -endmethod. - - - METHOD class_constructor. - c_xlsx_file_filter = 'Excel Workbook (*.xlsx)|*.xlsx|'(005). -ENDMETHOD. - - - - - - METHOD convert_column2alpha. - - DATA: lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - -* Propagate zcx_excel if error occurs " issue #155 - less restrictive typing for ip_column - lv_column = convert_column2int( ip_column ). " issue #155 - less restrictive typing for ip_column - -*--------------------------------------------------------------------* -* Check whether column is in allowed range for EXCEL to handle ( 1-16384 ) -*--------------------------------------------------------------------* - IF lv_column > 16384 - OR lv_column < 1. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDIF. - -*--------------------------------------------------------------------* -* Build alpha representation of column -*--------------------------------------------------------------------* - WHILE lv_column GT 0. - - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - - ENDWHILE. - -ENDMETHOD. - - - - - - METHOD convert_column2int. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-12-29 -* - ... -* changes: renaming variables to naming conventions -* removing unused variables -* removing commented out code that is inactive for more then half a year -* message made to support multilinguality -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#246 - error converting lower case column names -* - Stefan Schmoecker, 2012-12-29 -* changes: translating the correct variable to upper dase -* adding missing exception if input is a number -* that is out of bounds -* adding missing exception if input contains -* illegal characters like german umlauts -*--------------------------------------------------------------------* - - DATA: lv_column TYPE zexcel_cell_column_alpha, - lv_column_c TYPE char10, - lv_column_s TYPE string, - lv_errormessage TYPE string, " Can't pass '...'(abc) to exception-class - lv_modulo TYPE i. - -*--------------------------------------------------------------------* -* This module tries to identify which column a user wants to access -* Numbers as input are just passed back, anything else will be converted -* using EXCEL nomenclatura A = 1, AA = 27, ..., XFD = 16384 -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Normalize input ( upper case , no gaps ) -*--------------------------------------------------------------------* - lv_column_c = ip_column. -* TRANSLATE lv_column TO UPPER CASE. " Fix #246 - TRANSLATE lv_column_c TO UPPER CASE. " Fix #246 - CONDENSE lv_column_c NO-GAPS. - IF lv_column_c EQ ''. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* If a number gets passed, just convert it to an integer and return -* the converted value -*--------------------------------------------------------------------* - TRY. - IF lv_column_c CO '1234567890 '. " Fix #164 - ep_column = lv_column_c. " Fix #164 -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - EXIT. - ENDIF. - CATCH cx_sy_conversion_no_number. "#EC NO_HANDLER - " Try the character-approach if approach via number has failed - ENDTRY. - -*--------------------------------------------------------------------* -* Raise error if unexpected characters turns up -*--------------------------------------------------------------------* - lv_column_s = lv_column_c. - IF lv_column_s CN sy-abcde. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* Interpret input as number to base 26 with A=1, ... Z=26 -* Raise error if unexpected character turns up -*--------------------------------------------------------------------* -* 1st character -*--------------------------------------------------------------------* - lv_column = lv_column_c. - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+0(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = lv_modulo. " Leftmost digit - -*--------------------------------------------------------------------* -* 2nd character if present -*--------------------------------------------------------------------* - CHECK lv_column+1(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+1(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if second digit is present first digit is for 26^1 - -*--------------------------------------------------------------------* -* 3rd character if present -*--------------------------------------------------------------------* - CHECK lv_column+2(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+2(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if third digit is present first digit is for 26^2 and second digit for 26^1 - -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -ENDMETHOD. - - - - - - method CONVERT_COLUMNROW2COLUMN_A_ROW. -*--------------------------------------------------------------------* - "issue #256 - replacing char processing with regex -*--------------------------------------------------------------------* -* Stefan Schmoecker, 2013-08-11 -* Allow input to be CLIKE instead of STRING -*--------------------------------------------------------------------* - - DATA: pane_cell_row_a TYPE string, - lv_columnrow type string. - - lv_columnrow = i_columnrow. " Get rid of trailing blanks - - FIND REGEX '^(\D+)(\d+)$' IN lv_columnrow SUBMATCHES e_column - pane_cell_row_a. - e_row = pane_cell_row_a. - -endmethod. - - - - - - - - - - method CONVERT_RANGE2COLUMN_A_ROW. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-12-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* added exceptionclass -* added errorhandling for invalid range -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#241 - error when sheetname contains "!" -* - sheetname should be returned unescaped -* - Stefan Schmoecker, 2012-12-07 -* changes: changed coding to support sheetnames with "!" -* unescaping sheetname -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmoecker, 2012-12-07 -* changes: i_range changed to clike -* e_sheet changed to clike -*--------------------------------------------------------------------* - - DATA: lv_sheet TYPE string, - lv_range TYPE string, - lv_columnrow_start TYPE string, - lv_columnrow_end TYPE string, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Split input range into sheetname and Area -* 4 cases - a) input empty --> nothing to do -* - b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 -* - c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 -* - d) no sheetname - just area example $B$6:$D$13 -*--------------------------------------------------------------------* -* Initialize output parameters - CLEAR: e_column_start, - e_column_end, - e_row_start, - e_row_end, - e_sheet. - - IF i_range IS INITIAL. " a) input empty --> nothing to do - EXIT. - - ELSEIF i_range(1) = `'`. " b) sheetname existing - starts with ' - FIND REGEX '\![^\!]*$' IN i_range MATCH OFFSET sy-fdpos. " Find last ! - IF sy-subrc = 0. - lv_sheet = i_range(sy-fdpos). - ADD 1 TO sy-fdpos. - lv_range = i_range. - SHIFT lv_range LEFT BY sy-fdpos PLACES. - ELSE. - lv_errormessage = 'Invalid range'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ELSEIF i_range CS '!'. " c) sheetname existing - does not start with ' - SPLIT i_range AT '!' INTO lv_sheet lv_range. - - ELSE. " d) no sheetname - just area - lv_range = i_range. - ENDIF. - - REPLACE ALL OCCURRENCES OF '$' IN lv_range WITH ''. - SPLIT lv_range AT ':' INTO lv_columnrow_start lv_columnrow_end. - - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_start - IMPORTING - e_column = e_column_start - e_row = e_row_start ). - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_end - IMPORTING - e_column = e_column_end - e_row = e_row_end ). - - e_sheet = unescape_string( lv_sheet ). " Return in unescaped form -endmethod. - - - - - method DATE_TO_EXCEL_STRING. - DATA: lv_date_diff TYPE i. - - CHECK ip_value IS NOT INITIAL. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ip_value > c_excel_1900_leap_year. - lv_date_diff = ip_value - c_excel_baseline_date + 2. - ELSE. - lv_date_diff = ip_value - c_excel_baseline_date + 1. - ENDIF. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_date_diff ). -endmethod. - - - - - method DESCRIBE_STRUCTURE. - DATA: lt_components TYPE abap_component_tab, - lt_comps TYPE abap_component_tab, - lo_struct TYPE REF TO cl_abap_structdescr, - ls_component TYPE abap_componentdescr, - lo_elemdescr TYPE REF TO cl_abap_elemdescr, - ls_dfies TYPE dfies, - l_position TYPE tabfdpos. - - "for DDIC structure get the info directly - IF io_struct->is_ddic_type( ) = abap_true. - rt_dfies = io_struct->get_ddic_field_list( ). - ELSE. - lt_components = io_struct->get_components( ). - - LOOP AT lt_components INTO ls_component. - structure_case( EXPORTING is_component = ls_component - CHANGING xt_components = lt_comps ) . - ENDLOOP. - LOOP AT lt_comps INTO ls_component. - CLEAR ls_dfies. - IF ls_component-type->kind = cl_abap_typedescr=>kind_elem. "E Elementary Type - ADD 1 TO l_position. - lo_elemdescr ?= ls_component-type. - IF lo_elemdescr->is_ddic_type( ) = abap_true. - ls_dfies = lo_elemdescr->get_ddic_field( ). - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ELSE. - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ls_dfies-inttype = lo_elemdescr->type_kind. - ls_dfies-leng = lo_elemdescr->length. - ls_dfies-outputlen = lo_elemdescr->length. - ls_dfies-decimals = lo_elemdescr->decimals. - ls_dfies-fieldtext = ls_component-name. - ls_dfies-reptext = ls_component-name. - ls_dfies-scrtext_s = ls_component-name. - ls_dfies-scrtext_m = ls_component-name. - ls_dfies-scrtext_l = ls_component-name. - ls_dfies-dynpfld = abap_true. - ENDIF. - INSERT ls_dfies INTO TABLE rt_dfies. - ENDIF. - ENDLOOP. - ENDIF. -endmethod. - - - - - - - - METHOD determine_resulting_formula. - - DATA: lv_row_difference TYPE i, - lv_col_difference TYPE i. - -*--------------------------------------------------------------------* -* Calculate distance of reference and current cell -*--------------------------------------------------------------------* - calculate_cell_distance( EXPORTING - iv_reference_cell = iv_reference_cell - iv_current_cell = iv_current_cell - IMPORTING - ev_row_difference = lv_row_difference - ev_col_difference = lv_col_difference ). - -*--------------------------------------------------------------------* -* and shift formula by using the row- and columndistance -*--------------------------------------------------------------------* - ev_resulting_formula = shift_formula( iv_reference_formula = iv_reference_formula - iv_shift_rows = lv_row_difference - iv_shift_cols = lv_col_difference ). - -ENDMETHOD. "determine_resulting_formula - - - - - method ENCRYPT_PASSWORD. - - DATA lv_curr_offset TYPE i. - DATA lv_curr_char TYPE c LENGTH 1. - DATA lv_curr_hex TYPE zexcel_pwd_hash. - DATA lv_pwd_len TYPE zexcel_pwd_hash. - DATA lv_pwd_hash TYPE zexcel_pwd_hash. - - CONSTANTS: - lv_0x7fff TYPE zexcel_pwd_hash VALUE '7FFF', - lv_0x0001 TYPE zexcel_pwd_hash VALUE '0001', - lv_0xce4b TYPE zexcel_pwd_hash VALUE 'CE4B'. - - DATA lv_pwd TYPE zexcel_aes_password. - - lv_pwd = i_pwd(15). - - lv_pwd_len = STRLEN( lv_pwd ). - lv_curr_offset = lv_pwd_len - 1. - - WHILE lv_curr_offset GE 0. - - lv_curr_char = lv_pwd+lv_curr_offset(1). - lv_curr_hex = char2hex( lv_curr_char ). - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex. - SUBTRACT 1 FROM lv_curr_offset. - ENDWHILE. - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b. - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len. - - WRITE lv_pwd_hash TO r_encrypted_pwd. - -endmethod. - - - - - method ESCAPE_STRING. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-12-08 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#242 - Support escaping for white-spaces -* - Escaping also necessary when ' encountered in input -* - Stefan Schmoecker, 2012-12-08 -* changes: switched check if escaping is necessary to regular expression -* and moved the "REPLACE" -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmoecker, 2012-12-08 -* changes: ip_value changed to clike -*--------------------------------------------------------------------* - DATA: lv_value TYPE string. - -*--------------------------------------------------------------------* -* There exist various situations when a space will be used to separate -* different parts of a string. When we have a string consisting spaces -* that will cause errors unless we "escape" the string by putting ' at -* the beginning and at the end of the string. -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -* Now any remaining spaces ( white-spaces or normal spaces ) should -* trigger the escaping as well as any ' -*--------------------------------------------------------------------* - lv_value = ip_value. - - - FIND REGEX `\s|'` IN lv_value. " \s finds regular and white spaces - IF sy-subrc = 0. - REPLACE ALL OCCURRENCES OF `'` IN lv_value WITH `''`. - CONCATENATE `'` lv_value `'` INTO lv_value . - ENDIF. - - ep_escaped_value = lv_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_DATE. - DATA: lv_date_int TYPE i. - - TRY. - lv_date_int = ip_value. - ep_value = lv_date_int + c_excel_baseline_date - 2. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ep_value < c_excel_1900_leap_year. - ep_value = ep_value + 1. - ENDIF. - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDTRY. -endmethod. - - - - - - method EXCEL_STRING_TO_NUMBER. - -* If we encounter anything more complicated in EXCEL we might have to extend this -* But currently this works fine - even for numbers in scientific notation - - ep_value = ip_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_TIME. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_seconds_in_day TYPE i VALUE 86400. - - TRY. - - lv_day_fraction = ip_value. - lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day. - - ep_value = lv_seconds_in_day. - - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret time'. - ENDTRY. -endmethod. - - - - - - - method FAIL. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. - -endmethod. - - - - - METHOD get_fieldcatalog. - DATA: lr_dref_tab TYPE REF TO data, - lo_salv_table TYPE REF TO cl_salv_table, - lo_salv_columns_table TYPE REF TO cl_salv_columns_table, - lt_salv_t_column_ref TYPE salv_t_column_ref, - ls_salv_t_column_ref LIKE LINE OF lt_salv_t_column_ref, - lo_salv_column_table TYPE REF TO cl_salv_column_table. - - FIELD-SYMBOLS: <tab> TYPE STANDARD TABLE. - FIELD-SYMBOLS: <fcat> LIKE LINE OF ep_fieldcatalog. - -* Get copy of IP_TABLE-structure <-- must be changeable to create salv - CREATE DATA lr_dref_tab LIKE ip_table. - ASSIGN lr_dref_tab->* TO <tab>. -* Create salv --> implicitly create fieldcat - TRY. - cl_salv_table=>factory( IMPORTING - r_salv_table = lo_salv_table - CHANGING - t_table = <tab> ). - lo_salv_columns_table = lo_salv_table->get_columns( ). - lt_salv_t_column_ref = lo_salv_columns_table->get( ). - CATCH cx_root. -* maybe some errorhandling here - just haven't made up my mind yet - ENDTRY. - -* Loop through columns and set relevant fields ( fieldname, texts ) - LOOP AT lt_salv_t_column_ref INTO ls_salv_t_column_ref. - - lo_salv_column_table ?= ls_salv_t_column_ref-r_column. - APPEND INITIAL LINE TO ep_fieldcatalog ASSIGNING <fcat>. - <fcat>-position = sy-tabix. - <fcat>-fieldname = ls_salv_t_column_ref-columnname. - <fcat>-scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ). - <fcat>-scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ). - <fcat>-scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ). - <fcat>-abap_type = lo_salv_column_table->get_ddic_inttype( ). - - <fcat>-dynpfld = 'X'. " What in the world would we exclude here? - IF <fcat>-position = 1. " except for the MANDT-field of most tables ( 1st column that is ) - IF lo_salv_column_table->get_ddic_datatype( ) = 'CLNT'. - CLEAR <fcat>-dynpfld. - ENDIF. - ENDIF. - -* For fields that don't a description ( i.e. defined by "field type i," ) -* just use the fieldname as description - that is better than nothing - IF <fcat>-scrtext_s IS INITIAL - AND <fcat>-scrtext_m IS INITIAL - AND <fcat>-scrtext_l IS INITIAL. - CONCATENATE 'Col:' <fcat>-fieldname INTO <fcat>-scrtext_l SEPARATED BY space. - <fcat>-scrtext_m = <fcat>-scrtext_l. - <fcat>-scrtext_s = <fcat>-scrtext_l. - ENDIF. - - ENDLOOP. - -ENDMETHOD. - - - - - - - - method IS_CELL_IN_RANGE. - DATA lv_column_start TYPE zexcel_cell_column_alpha. - DATA lv_column_end TYPE zexcel_cell_column_alpha. - DATA lv_row_start TYPE zexcel_cell_row. - DATA lv_row_end TYPE zexcel_cell_row. - DATA lv_column_start_i TYPE zexcel_cell_column. - DATA lv_column_end_i TYPE zexcel_cell_column. - DATA lv_column_i TYPE zexcel_cell_column. - - -* Split range and convert columns - convert_range2column_a_row( - exporting - i_range = ip_range - IMPORTING - e_column_start = lv_column_start - e_column_end = lv_column_end - e_row_start = lv_row_start - e_row_end = lv_row_end ). - - lv_column_start_i = convert_column2int( ip_column = lv_column_start ). - lv_column_end_i = convert_column2int( ip_column = lv_column_end ). - - lv_column_i = convert_column2int( ip_column = ip_column ). - -* Check if cell is in range - IF lv_column_i >= lv_column_start_i AND - lv_column_i <= lv_column_end_i AND - ip_row >= lv_row_start AND - ip_row <= lv_row_end. - rp_in_range = abap_true. - ENDIF. -endmethod. - - - - - method NUMBER_TO_EXCEL_STRING. - DATA: lv_value_c TYPE c LENGTH 100. - - WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN. - REPLACE ALL OCCURRENCES OF ',' IN lv_value_c WITH '.'. - - ep_value = lv_value_c. - CONDENSE ep_value. - - IF ip_value < 0. - CONCATENATE '-' ep_value INTO ep_value. - ELSEIF ip_value EQ 0. - ep_value = '0'. - ENDIF. -endmethod. - - - - - - method RECURSIVE_CLASS_TO_STRUCT. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any. - - - descr ?= cl_abap_structdescr=>describe_by_data( e_target ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_targetx TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CLEAR flag_class. -* maybe source is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'i_source->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0. - EXIT. - ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursio -* IF flag_class = abap_true. -** Only borders will be passed as unbound references. But since we want to set a value we have to create an instance -* ENDIF. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = <attribute> - CHANGING e_target = <field> - e_targetx = <fieldx> ). - WHEN OTHERS. - <field> = <attribute>. - <fieldx> = abap_true. - - ENDCASE. - ENDLOOP. - -endmethod. - - - - - - METHOD recursive_struct_to_class. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any, - <attribute_s> TYPE ANY TABLE. - - - descr ?= cl_abap_structdescr=>describe_by_data( i_source ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_sourcex TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CHECK <fieldx> CA abap_true. - CLEAR flag_class. -* maybe target is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'E_TARGET->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0.EXIT.ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursion - " To avoid dump with attribute GRADTYPE of class ZCL_EXCEL_STYLE_FILL - " quick and really dirty fix -> check the attribute name - " Border has to be initialized somewhere else - IF wa_component-name EQ 'GRADTYPE'. - flag_class = abap_false. - ENDIF. - - IF flag_class = abap_true AND <attribute> IS INITIAL. -* Only borders will be passed as unbound references. But since we want to set a value we have to create an instance - CREATE OBJECT o_border. - <attribute> = o_border. - ENDIF. - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <field> - i_sourcex = <fieldx> - CHANGING e_target = <attribute> ). -* WHEN cl_abap_structdescr=>typekind_struct2. " String -* CHECK <fieldx> = abap_true. " Marked for change -* <attribute_s> = <field>. - WHEN OTHERS. - CHECK <fieldx> = abap_true. " Marked for change - <attribute> = <field>. - - ENDCASE. - ENDLOOP. - -ENDMETHOD. - - - - - - - - METHOD shift_formula. - - CONSTANTS: lcv_operators TYPE string VALUE '+-/*^%=<>&, !', - lcv_letters TYPE string VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$', - lcv_digits TYPE string VALUE '0123456789', - lcv_cell_reference_error TYPE string VALUE '#REF!'. - - DATA: lv_tcnt TYPE i, " Counter variable - lv_tlen TYPE i, " Temp variable length - lv_cnt TYPE i, " Counter variable - lv_cnt2 TYPE i, " Counter variable - lv_offset1 TYPE i, " Character offset - lv_numchars TYPE i, " Number of characters counter - lv_tchar(1) TYPE c, " Temp character - lv_tchar2(1) TYPE c, " Temp character - lv_cur_form(2000) TYPE c, " Formula for current cell - lv_ref_cell_addr TYPE string, " Reference cell address - lv_tcol1 TYPE string, " Temp column letter - lv_tcol2 TYPE string, " Temp column letter - lv_tcoln TYPE i, " Temp column number - lv_trow1 TYPE string, " Temp row number - lv_trow2 TYPE string, " Temp row number - lv_flen TYPE i, " Length of reference formula - lv_tlen2 TYPE i, " Temp variable length - lv_substr1 TYPE string, " Substring variable - lv_abscol TYPE string, " Absolute column symbol - lv_absrow TYPE string, " Absolute row symbol - - lv_errormessage TYPE string. - - FIELD-SYMBOLS: <find_my_include> TYPE ANY. - -*--------------------------------------------------------------------* -* When copying a cell in EXCEL to another cell any inherent formulas -* are copied as well. Cell-references in the formula are being adjusted -* by the distance of the new cell to the original one -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -* §2 Identify Cell-references -* §3 Shift cell-reference -* §4 Build resulting formula -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* No distance --> Reference = resulting cell/formula -*--------------------------------------------------------------------* - IF iv_shift_cols = 0 - AND iv_shift_rows = 0. - ev_resulting_formula = iv_reference_formula. - EXIT. " done - ENDIF. - - - lv_flen = STRLEN( iv_reference_formula ). - lv_numchars = 1. - -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -*--------------------------------------------------------------------* - DO lv_flen TIMES. - - CLEAR: lv_tchar, - lv_substr1, - lv_ref_cell_addr. - lv_cnt2 = lv_cnt + 1. - IF lv_cnt2 > lv_flen. - EXIT. " Done - ENDIF. - -*--------------------------------------------------------------------* -* Here we have the current character in the formula -*--------------------------------------------------------------------* - lv_tchar = iv_reference_formula+lv_cnt(1). - -*--------------------------------------------------------------------* -* Operators or opening parenthesis will separate possible cellreferences -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators - OR lv_tchar CA '(' ) - AND lv_cnt2 = 1. - lv_substr1 = iv_reference_formula+lv_offset1(1). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - -*--------------------------------------------------------------------* -* Quoted literal text holds no cell reference --> advance to end of text -*--------------------------------------------------------------------* - IF lv_tchar EQ '"'. - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - WHILE lv_tchar NE '"'. - - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - - ENDWHILE. - lv_cnt2 = lv_cnt + 1. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - IF lv_cnt = lv_flen. - EXIT. - ENDIF. - lv_offset1 = lv_cnt. - lv_numchars = 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - lv_cnt2 = lv_cnt + 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - -*--------------------------------------------------------------------* -* Operators or parenthesis or last character in formula will separate possible cellreferences -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA '():' - OR lv_cnt2 = lv_flen. - IF lv_cnt > 0. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). -*--------------------------------------------------------------------* -* Check for text concatenation and functions -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators AND lv_tchar EQ lv_substr1 ) OR lv_tchar EQ '('. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - lv_tlen = lv_cnt2 - lv_offset1. -*--------------------------------------------------------------------* -* Exclude mathematical operators and closing parentheses -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - IF lv_cnt2 = lv_flen - AND lv_numchars = 1. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ELSE. - lv_tlen = lv_tlen - 1. - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -* Capture reference cell address -*--------------------------------------------------------------------* - TRY. - MOVE: iv_reference_formula+lv_offset1(lv_tlen) TO lv_ref_cell_addr. "Ref cell address - CATCH cx_root. - lv_errormessage = 'Internal error in Class ZCL_EXCEL_COMMON Method SHIFT_FORMULA Spot 1 '. " Change to messageclass if possible - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - -*--------------------------------------------------------------------* -* Split cell address into characters and numbers -*--------------------------------------------------------------------* - CLEAR: lv_tlen, - lv_tcnt, - lv_tcol1, - lv_trow1. - lv_tlen = STRLEN( lv_ref_cell_addr ). - IF lv_tlen <> 0. - CLEAR: lv_tcnt. - DO lv_tlen TIMES. - CLEAR: lv_tchar2. - lv_tchar2 = lv_ref_cell_addr+lv_tcnt(1). - IF lv_tchar2 CA lcv_letters. - CONCATENATE lv_tcol1 lv_tchar2 INTO lv_tcol1. - ELSEIF lv_tchar2 CA lcv_digits. - CONCATENATE lv_trow1 lv_tchar2 INTO lv_trow1. - ENDIF. - lv_tcnt = lv_tcnt + 1. - ENDDO. - ENDIF. -*--------------------------------------------------------------------* -* Check for invalid cell address -*--------------------------------------------------------------------* - IF lv_tcol1 IS INITIAL OR lv_trow1 IS INITIAL. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for range names -*--------------------------------------------------------------------* - CLEAR: lv_tlen. - lv_tlen = STRLEN( lv_tcol1 ). - IF lv_tlen GT 3. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for valid row -*--------------------------------------------------------------------* - IF lv_trow1 GT 1048576. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for absolute column or row reference -*--------------------------------------------------------------------* - CLEAR: lv_tcol2, - lv_trow2, - lv_abscol, - lv_absrow. - lv_tlen2 = STRLEN( lv_tcol1 ) - 1. - IF lv_tcol1 IS NOT INITIAL. - lv_abscol = lv_tcol1(1). - ENDIF. - IF lv_tlen2 GE 0. - lv_absrow = lv_tcol1+lv_tlen2(1). - ENDIF. - IF lv_abscol EQ '$' AND lv_absrow EQ '$'. - lv_tlen2 = lv_tlen2 - 1. - IF lv_tlen2 > 0. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ENDIF. - lv_tlen2 = lv_tlen2 + 1. - ELSEIF lv_abscol EQ '$'. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ELSEIF lv_absrow EQ '$'. - lv_tcol1 = lv_tcol1(lv_tlen2). - ENDIF. -*--------------------------------------------------------------------* -* Check for valid column -*--------------------------------------------------------------------* - TRY. - lv_tcoln = zcl_excel_common=>convert_column2int( lv_tcol1 ) + iv_shift_cols. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. -*--------------------------------------------------------------------* -* Check whether there is a referencing problem -*--------------------------------------------------------------------* - lv_trow2 = lv_trow1 + iv_shift_rows. - IF ( lv_tcoln < 1 AND lv_abscol <> '$' ) " Maybe we should add here max-column and max row-tests as well. - OR ( lv_trow2 < 1 AND lv_absrow <> '$' ). " Check how EXCEL behaves in this case -*--------------------------------------------------------------------* -* Referencing problem encountered --> set error -*--------------------------------------------------------------------* - CONCATENATE lv_cur_form lcv_cell_reference_error INTO lv_cur_form. - ELSE. -*--------------------------------------------------------------------* -* No referencing problems --> adjust row and column -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Adjust column -*--------------------------------------------------------------------* - IF lv_abscol EQ '$'. - CONCATENATE lv_cur_form lv_abscol lv_tcol1 INTO lv_cur_form. - ELSEIF iv_shift_cols EQ 0. - CONCATENATE lv_cur_form lv_tcol1 INTO lv_cur_form. - ELSE. - TRY. - lv_tcol2 = zcl_excel_common=>convert_column2alpha( lv_tcoln ). - CONCATENATE lv_cur_form lv_tcol2 INTO lv_cur_form. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* Adjust row -*--------------------------------------------------------------------* - IF lv_absrow EQ '$'. - CONCATENATE lv_cur_form lv_absrow lv_trow1 INTO lv_cur_form. - ELSEIF iv_shift_rows = 0. - CONCATENATE lv_cur_form lv_trow1 INTO lv_cur_form. -* elseif lv_trow2 < 1. -* CONCATENATE lv_cur_form lc_cell_reference_error INTO lv_cur_form. - ELSE. - CONCATENATE lv_cur_form lv_trow2 INTO lv_cur_form. - ENDIF. - ENDIF. - - lv_numchars = 0. - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - CONCATENATE lv_cur_form lv_tchar INTO lv_cur_form. - ENDIF. - lv_offset1 = lv_cnt2. - ENDIF. - ENDIF. - lv_numchars = lv_numchars + 1. - lv_cnt = lv_cnt + 1. - lv_cnt2 = lv_cnt + 1. - - ENDDO. - - - -*--------------------------------------------------------------------* -* Return resulting formula -*--------------------------------------------------------------------* - IF lv_cur_form IS NOT INITIAL. - MOVE lv_cur_form TO ev_resulting_formula. - ENDIF. - -ENDMETHOD. - - - - - method SHL01. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i VALUE 2, - lv_prev_pos TYPE i VALUE 1. - - DO 15 TIMES. - GET BIT lv_curr_pos OF i_pwd_hash INTO lv_bit. - SET BIT lv_prev_pos OF r_pwd_hash TO lv_bit. - ADD 1 TO lv_curr_pos. - ADD 1 TO lv_prev_pos. - ENDDO. - SET BIT 16 OF r_pwd_hash TO 0. - -endmethod. - - - - - method SHR14. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i, - lv_next_pos TYPE i. - - r_pwd_hash = i_pwd_hash. - - DO 14 TIMES. - lv_curr_pos = 15. - lv_next_pos = 16. - - DO 15 TIMES. - GET BIT lv_curr_pos OF r_pwd_hash INTO lv_bit. - SET BIT lv_next_pos OF r_pwd_hash TO lv_bit. - SUBTRACT 1 FROM lv_curr_pos. - SUBTRACT 1 FROM lv_next_pos. - ENDDO. - SET BIT 1 OF r_pwd_hash TO 0. - ENDDO. - -endmethod. - - - - - - - method SPLIT_FILE. - - DATA: lt_hlp TYPE TABLE OF text255, - ls_hlp TYPE text255. - - DATA: lf_ext(10) TYPE c, - lf_dot_ext(10) TYPE c. - DATA: lf_str TYPE text255, - lf_anz TYPE i, - lf_len TYPE i. -** --------------------------------------------------------------------- - - CLEAR: lt_hlp, - ep_file, - ep_extension, - ep_dotextension. - -** Split the whole file at '.' - SPLIT ip_file AT '.' INTO TABLE lt_hlp. - -** get the extenstion from the last line of table - DESCRIBE TABLE lt_hlp LINES lf_anz. - IF lf_anz <= 1. - ep_file = ip_file. - EXIT. - ENDIF. - - READ TABLE lt_hlp INTO ls_hlp INDEX lf_anz. - ep_extension = ls_hlp. - lf_ext = ls_hlp. - IF NOT lf_ext IS INITIAL. - CONCATENATE '.' lf_ext INTO lf_dot_ext. - ENDIF. - ep_dotextension = lf_dot_ext. - -** get only the filename - lf_len = strlen( ip_file ) - strlen( lf_dot_ext ). - IF lf_len > 0. - ep_file = ip_file(lf_len). - ENDIF. - -endmethod. - - - - - method STRUCTURE_CASE. - DATA: lt_comp_str TYPE abap_component_tab. - - CASE is_component-type->kind. - WHEN cl_abap_typedescr=>kind_elem. "E Elementary Type - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_table. "T Table - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_struct. "S Structure - lt_comp_str = structure_recursive( is_component = is_component ). - INSERT LINES OF lt_comp_str INTO TABLE xt_components. - WHEN OTHERS. "cl_abap_typedescr=>kind_ref or cl_abap_typedescr=>kind_class or cl_abap_typedescr=>kind_intf. -* We skip it. for now. - ENDCASE. -endmethod. - - - - - method STRUCTURE_RECURSIVE. - DATA: lo_struct TYPE REF TO cl_abap_structdescr, - lt_components TYPE abap_component_tab, - ls_components TYPE abap_componentdescr. - - REFRESH rt_components. - - lo_struct ?= is_component-type. - lt_components = lo_struct->get_components( ). - - LOOP AT lt_components INTO ls_components. - structure_case( EXPORTING is_component = ls_components - CHANGING xt_components = rt_components ) . - ENDLOOP. - -endmethod. - - - - - method TIME_TO_EXCEL_STRING. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_time_baseline TYPE t VALUE '000000', - lc_seconds_in_day TYPE i VALUE 86400. - - lv_seconds_in_day = ip_value - lc_time_baseline. - lv_day_fraction = lv_seconds_in_day / lc_seconds_in_day. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_day_fraction ). -endmethod. - - - - - - method UNESCAPE_STRING. - - CONSTANTS lcv_regex TYPE string VALUE `^'[^']` & `|` & " Beginning single ' OR - `[^']'$` & `|` & " Trailing single ' OR - `[^']'[^']`. " Single ' somewhere in between - - - DATA: lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - -*--------------------------------------------------------------------* -* This method is used to extract the "real" string from an escaped string. -* An escaped string can be identified by a beginning ' which must be -* accompanied by a trailing ' -* All '' in between beginning and trailing ' are treated as single ' -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -*--------------------------------------------------------------------* - ev_unescaped_string = iv_escaped. " Pass through if not escaped - - CHECK ev_unescaped_string IS NOT INITIAL. " Nothing to do if empty - CHECK ev_unescaped_string(1) = `'`. " Nothing to do if not escaped - -*--------------------------------------------------------------------* -* Remove leading and trailing ' -*--------------------------------------------------------------------* - REPLACE REGEX `^'(.*)'$` IN ev_unescaped_string WITH '$1'. - IF sy-subrc <> 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Any remaining single ' should not be here -*--------------------------------------------------------------------* - FIND REGEX lcv_regex IN ev_unescaped_string. - IF sy-subrc = 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Replace '' with ' -*--------------------------------------------------------------------* - REPLACE ALL OCCURRENCES OF `''` IN ev_unescaped_string WITH `'`. - - -endmethod. - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -TYPES: BEGIN OF ts_alv_types, - seoclass TYPE seoclsname, - clsname TYPE seoclsname, - END OF ts_alv_types, - tt_alv_types TYPE HASHED TABLE OF ts_alv_types WITH UNIQUE KEY seoclass. - -TYPES: BEGIN OF ts_sort_values, - fieldname TYPE fieldname, - row_int TYPE zexcel_cell_row, - value TYPE REF TO data, - new TYPE flag, - sort_level TYPE int4, - is_collapsed type flag, - END OF ts_sort_values, - - tt_sort_values TYPE HASHED TABLE OF ts_sort_values WITH UNIQUE KEY fieldname. -TYPES: BEGIN OF ts_subtotal_rows, - row_int TYPE zexcel_cell_row, - row_int_start TYPE zexcel_cell_row, - columnname TYPE fieldname, - END OF ts_subtotal_rows, - - tt_subtotal_rows TYPE HASHED TABLE OF ts_subtotal_rows WITH UNIQUE KEY row_int. - -TYPES: BEGIN OF ts_styles, - type TYPE char1, - alignment TYPE zexcel_alignment, - inttype TYPE inttype, - decimals TYPE int1, - style TYPE REF TO zcl_excel_style, - guid TYPE zexcel_cell_style, - END OF ts_styles, - - tt_styles TYPE HASHED TABLE OF ts_styles WITH UNIQUE KEY type alignment inttype decimals. - -TYPES: BEGIN OF ts_color_styles, - guid_old TYPE zexcel_cell_style, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - style_new TYPE REF TO zcl_excel_style, - END OF ts_color_styles, - - tt_color_styles TYPE HASHED TABLE OF ts_color_styles WITH UNIQUE KEY guid_old fontcolor fillcolor. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ASK_OPTION. - DATA: ls_sval TYPE sval, - lt_sval TYPE STANDARD TABLE OF sval, - l_returncode TYPE string, - lt_fields TYPE ddfields, - ls_fields TYPE dfies. - - FIELD-SYMBOLS: <fs> TYPE ANY. - - rs_option = ws_option. - - CALL FUNCTION 'DDIF_FIELDINFO_GET' - EXPORTING - tabname = 'ZEXCEL_S_CONVERTER_OPTION' -* FIELDNAME = ' ' -* LANGU = sy-langu -* LFIELDNAME = ' ' -* ALL_TYPES = ' ' -* GROUP_NAMES = ' ' -* UCLEN = -* IMPORTING -* X030L_WA = -* DDOBJTYPE = -* DFIES_WA = -* LINES_DESCR = - TABLES - dfies_tab = lt_fields -* FIXED_VALUES = - EXCEPTIONS - not_found = 1 - internal_error = 2 - OTHERS = 3 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - LOOP AT lt_fields INTO ls_fields. - ASSIGN COMPONENT ls_fields-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - CLEAR ls_sval. - ls_sval-tabname = ls_fields-tabname. - ls_sval-fieldname = ls_fields-fieldname. - ls_sval-value = <fs>. - ls_sval-field_attr = space. - ls_sval-field_obl = space. - ls_sval-comp_code = space. - ls_sval-fieldtext = ls_fields-scrtext_m. - ls_sval-comp_tab = space. - ls_sval-comp_field = space. - ls_sval-novaluehlp = space. - INSERT ls_sval INTO TABLE lt_sval. - ENDIF. - ENDLOOP. - - CALL FUNCTION 'POPUP_GET_VALUES' - EXPORTING -* NO_VALUE_CHECK = space - popup_title = 'Excel creation options'(008) -* START_COLUMN = '5' -* START_ROW = '5' - IMPORTING - returncode = l_returncode - TABLES - fields = lt_sval - EXCEPTIONS - error_in_fields = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ELSE. - IF l_returncode = 'A'. - RAISE EXCEPTION TYPE zcx_excel. - ELSE. - LOOP AT lt_sval INTO ls_sval. - ASSIGN COMPONENT ls_sval-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - <fs> = ls_sval-value. - ENDIF. - ENDLOOP. - set_option( is_option = ws_option ) . - rs_option = ws_option. - ENDIF. - ENDIF. - endmethod. - - - - - method BIND_CELLS. - -* Do we need subtotals with grouping - READ TABLE wt_fieldcatalog TRANSPORTING NO FIELDS WITH KEY is_subtotalled = abap_true. - IF sy-subrc = 0 . - r_freeze_col = loop_subtotal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ELSE. - r_freeze_col = loop_normal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ENDIF. - - endmethod. - - - - - - method BIND_TABLE. - data: lt_field_catalog type zexcel_t_fieldcatalog, - ls_field_catalog type zexcel_s_fieldcatalog, - ls_fcat type zexcel_s_converter_fcat, - lo_col_dim type ref to zcl_excel_worksheet_columndime, - lo_row_dim type ref to zcl_excel_worksheet_rowdimensi, - l_col_int type zexcel_cell_column, - l_col_alpha type zexcel_cell_column_alpha, - ls_settings type zexcel_s_table_settings, - l_line type i. - - field-symbols: <fs_tab> type any table. - - assign wo_data->* to <fs_tab> . - - ls_settings-table_style = i_style_table. - ls_settings-top_left_column = zcl_excel_common=>convert_column2alpha( ip_column = w_col_int ). - ls_settings-top_left_row = w_row_int. - ls_settings-show_row_stripes = ws_layout-is_stripped. - - describe table wt_fieldcatalog lines l_line. - l_line = l_line + 1 + w_col_int. - ls_settings-bottom_right_column = zcl_excel_common=>convert_column2alpha( ip_column = l_line ). - - describe table <fs_tab> lines l_line. - ls_settings-bottom_right_row = l_line + 1 + w_row_int. - sort wt_fieldcatalog by position. - loop at wt_fieldcatalog into ls_fcat. - move-corresponding ls_fcat to ls_field_catalog. - ls_field_catalog-dynpfld = abap_true. - insert ls_field_catalog into table lt_field_catalog. - endloop. - - wo_worksheet->bind_table( - exporting - ip_table = <fs_tab> - it_field_catalog = lt_field_catalog - is_table_settings = ls_settings - importing - es_table_settings = ls_settings - ). - loop at wt_fieldcatalog into ls_fcat. - l_col_int = w_col_int + ls_fcat-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Freeze panes - if ls_fcat-fix_column = abap_true. - add 1 to r_freeze_col. - endif. -* Now let's check for optimized - if ls_fcat-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - endif. -* Now let's check for visible - if ls_fcat-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - endif. - endloop. - - endmethod. - - - method CLASS_CONSTRUCTOR. - DATA: ls_objects TYPE ts_alv_types. - DATA: ls_option TYPE zexcel_s_converter_option, - l_uname TYPE sy-uname. - - GET PARAMETER ID 'ZUS' FIELD l_uname. - IF l_uname IS INITIAL OR l_uname = space. - l_uname = sy-uname. - ENDIF. - -* Object CL_GUI_ALV_GRID - ls_objects-seoclass = 'CL_GUI_ALV_GRID'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_ALV_GRID'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_TABLE - ls_objects-seoclass = 'CL_SALV_TABLE'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_SALV_TABLE'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_RESULT - ls_objects-seoclass = 'CL_SALV_EX_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_EX'. - INSERT ls_objects INTO TABLE wt_objects. -* Object CL_SALV_WD_RESULT - ls_objects-seoclass = 'CL_SALV_WD_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_WD'. - INSERT ls_objects INTO TABLE wt_objects. - - CONCATENATE 'EXCEL_' sy-uname INTO ws_indx-srtfd. - - IMPORT p1 = ls_option FROM DATABASE indx(xl) TO ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = ls_option. - ELSE. - init_option( ) . - ENDIF. - - endmethod. - - - method CLEAN_FIELDCATALOG. - DATA: l_position TYPE int1. - - FIELD-SYMBOLS: <fs_sfcat> TYPE zexcel_s_converter_fcat. - - SORT wt_fieldcatalog BY position col_id. - - CLEAR l_position. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - ADD 1 TO l_position. - <fs_sfcat>-position = l_position. -* Default stype with alignment and format - <fs_sfcat>-style_hdr = get_style( i_type = c_type_hdr - i_alignment = <fs_sfcat>-alignment ). - IF ws_layout-is_stripped = abap_true. - <fs_sfcat>-style_stripped = get_style( i_type = c_type_str - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDIF. - <fs_sfcat>-style_normal = get_style( i_type = c_type_nor - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_subtotal = get_style( i_type = c_type_sub - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_total = get_style( i_type = c_type_tot - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDLOOP. - - endmethod. - - - - - - - - - - - - - method CONVERT. - - IF is_option IS SUPPLIED. - ws_option = is_option. - ENDIF. - - TRY. - execute_converter( EXPORTING io_object = io_alv - it_table = it_table ) . - ENDTRY. - - IF io_worksheet IS SUPPLIED AND io_worksheet IS BOUND. - wo_worksheet = io_worksheet. - ENDIF. - IF co_excel IS SUPPLIED. - IF co_excel IS NOT BOUND. - CREATE OBJECT co_excel. - co_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - wo_excel = co_excel. - ENDIF. - -* Move table to data object and clean it up - IF wt_fieldcatalog IS NOT INITIAL. - create_table( ). - ELSE. - wo_data = wo_table . - ENDIF. - - IF wo_excel IS NOT BOUND. - CREATE OBJECT wo_excel. - wo_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - IF wo_worksheet IS NOT BOUND. - " Get active sheet - wo_worksheet = wo_excel->get_active_worksheet( ). - wo_worksheet->set_title( ip_title = 'Sheet1'(001) ). - ENDIF. - - IF i_row_int <= 0. - w_row_int = 1. - ELSE. - w_row_int = i_row_int. - ENDIF. - IF i_column_int <= 0. - w_col_int = 1. - ELSE. - w_col_int = i_column_int. - ENDIF. - - create_worksheet( i_table = i_table - i_style_table = i_style_table ) . - - endmethod. - - - - - - method CREATE_COLOR_STYLE. - DATA: ls_styles TYPE ts_styles. - DATA: lo_style TYPE REF TO zcl_excel_style. - - READ TABLE wt_styles INTO ls_styles WITH KEY guid = i_style. - IF sy-subrc = 0. - lo_style = wo_excel->add_new_style( ). -* lo_style->borders = ls_styles-style->borders. -* lo_style->protection = ls_styles-style->protection. - lo_style->font->bold = ls_styles-style->font->bold. - lo_style->alignment->horizontal = ls_styles-style->alignment->horizontal. - lo_style->number_format->format_code = ls_styles-style->number_format->format_code. - - lo_style->font->color-rgb = is_colors-fontcolor. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = is_colors-fillcolor. - - ro_style = lo_style. - ENDIF. - endmethod. - - - - - - - - method CREATE_FORMULAR_SUBTOTAL. - data: l_row_alpha_start type string, - l_row_alpha_end type string, - l_func_num type string. - - l_row_alpha_start = i_row_int_start. - l_row_alpha_end = i_row_int_end. - - l_func_num = get_function_number( i_totals_function = i_totals_function ). - concatenate 'SUBTOTAL(' l_func_num ',' i_column l_row_alpha_start ':' i_column l_row_alpha_end ')' into r_formula. - endmethod. - - - - - - - method CREATE_FORMULAR_TOTAL. - data: l_row_alpha type string, - l_row_e_alpha type string. - - l_row_alpha = w_row_int + 1. - l_row_e_alpha = i_row_int. - - concatenate i_totals_function '(' i_column l_row_alpha ':' i_column l_row_e_alpha ')' into r_formula. - endmethod. - - - - method CREATE_PATH. - DATA: l_sep TYPE c , - l_path TYPE string, - l_return TYPE i . - - CLEAR r_path. - - " Save the file - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING - sapworkdir = l_path - EXCEPTIONS - get_sapworkdir_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - ). - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - CONCATENATE 'Excel_' w_fcount '.xlsx' INTO r_path. - ELSE. - DO. - ADD 1 TO w_fcount. -*-obtain file separator character--------------------------------------- - CALL METHOD cl_gui_frontend_services=>get_file_separator - CHANGING - file_separator = l_sep - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4. - - IF sy-subrc <> 0. - l_sep = ''. - ENDIF. - - CONCATENATE l_path l_sep 'Excel_' w_fcount '.xlsx' INTO r_path. - - IF cl_gui_frontend_services=>file_exist( file = r_path ) = abap_true. - cl_gui_frontend_services=>file_delete( EXPORTING filename = r_path - CHANGING rc = l_return - EXCEPTIONS OTHERS = 1 ). - IF sy-subrc = 0 . - RETURN. - ENDIF. - ELSE. - RETURN. - ENDIF. - ENDDO. - ENDIF. - - endmethod. - - - - - method CREATE_STYLE_HDR. - data: lo_style type ref to zcl_excel_style. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - lo_style->font->color-rgb = zcl_excel_style_color=>c_white. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FF4F81BD'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - ro_style = lo_style . - endmethod. - - - - - - - method CREATE_STYLE_NORMAL. - DATA: lo_style TYPE REF TO zcl_excel_style, - l_format TYPE zexcel_number_format. - - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - ENDIF. - IF l_format IS NOT INITIAL OR - ( i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL ) . - - lo_style = wo_excel->add_new_style( ). - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - - ro_style = lo_style . - - ENDIF. - endmethod. - - - - - - - method CREATE_STYLE_STRIPPED. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFDBE5F1'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - ro_style = lo_style. - - endmethod. - - - - - - - method CREATE_STYLE_SUBTOTAL. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - - ro_style = lo_style . - - endmethod. - - - - - - - method CREATE_STYLE_TOTAL. - DATA: lo_style TYPE REF TO zcl_excel_style. - DATA: l_format TYPE zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - CREATE OBJECT lo_style->borders->top. - lo_style->borders->top->border_style = zcl_excel_style_border=>c_border_thin. - lo_style->borders->top->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->right. - lo_style->borders->right->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->right->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->down. - lo_style->borders->down->border_style = zcl_excel_style_border=>c_border_double. - lo_style->borders->down->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->left. - lo_style->borders->left->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->left->border_color-rgb = zcl_excel_style_color=>c_black. - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - ENDIF. - - ro_style = lo_style . - - endmethod. - - - method CREATE_TABLE. - TYPES: BEGIN OF ts_output, - fieldname TYPE fieldname, - function TYPE funcname, - END OF ts_output. - - DATA: lo_data TYPE REF TO data. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lt_fieldcatalog TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat, - <fs_stab> TYPE ANY, - <fs_ttab> TYPE STANDARD TABLE, - <fs> TYPE ANY, - <fs_table> TYPE STANDARD TABLE. - - SORT wt_fieldcatalog BY position. - ASSIGN wo_table->* TO <fs_table>. - - READ TABLE <fs_table> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc EQ 0 . - LOOP AT wt_fieldcatalog ASSIGNING <fs_scat>. - ASSIGN COMPONENT <fs_scat>-columnname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - ls_components-name = <fs_scat>-columnname. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - DELETE TABLE wt_fieldcatalog FROM <fs_scat>. - ENDTRY. - IF lo_addit IS BOUND. - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ENDIF. - ENDIF. - ENDLOOP. - IF lt_components_tab IS NOT INITIAL. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( P_COMPONENTS = lt_components_tab - P_STRICT = abap_false ). - CATCH cx_sy_struct_creation. - RETURN. " We can not do anything in this case. - ENDTRY. - - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA wo_data TYPE HANDLE lo_table. - CREATE DATA lo_data TYPE HANDLE lo_struc. - - ASSIGN wo_data->* TO <fs_ttab>. - ASSIGN lo_data->* TO <fs_stab>. - LOOP AT <fs_table> ASSIGNING <fs>. - CLEAR <fs_stab>. - MOVE-CORRESPONDING <fs> TO <fs_stab>. - APPEND <fs_stab> TO <fs_ttab>. - ENDLOOP. - ENDIF. - ENDIF. - - endmethod. - - - - - - METHOD create_text_subtotal. - DATA: l_string(256) TYPE c, - l_func TYPE string. - - CASE i_totals_function. - WHEN zcl_excel_table=>totals_function_sum. " Total - l_func = 'Total'(003). - WHEN zcl_excel_table=>totals_function_min. " Minimum - l_func = 'Minimum'(004). - WHEN zcl_excel_table=>totals_function_max. " Maximum - l_func = 'Maximum'(005). - WHEN zcl_excel_table=>totals_function_average. " Mean Value - l_func = 'Average'(006). - WHEN zcl_excel_table=>totals_function_count. " Count - l_func = 'Count'(007). - WHEN OTHERS. - CLEAR l_func. - ENDCASE. - - MOVE i_value TO l_string. - - CONCATENATE l_string l_func INTO r_text SEPARATED BY space. - -ENDMETHOD. - - - - - - method CREATE_WORKSHEET. - DATA: l_freeze_col TYPE i. - DATA: l_guid TYPE oltpguid16. - - IF wo_data IS BOUND AND wo_worksheet IS BOUND. - - wo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. " By default is on - - IF wt_fieldcatalog IS INITIAL. - set_fieldcatalog( ) . - ELSE. - clean_fieldcatalog( ) . - ENDIF. - - IF i_table = abap_true. - l_freeze_col = bind_table( i_style_table = i_style_table ) . - ELSE. -* Let's check for filter. - IF wt_filter IS NOT INITIAL. - wo_autofilter = wo_excel->add_new_autofilter( io_sheet = wo_worksheet ). - l_freeze_col = bind_cells( ) . - set_autofilter_area( ) . - ELSE. - l_freeze_col = bind_cells( ) . - ENDIF. - - ENDIF. - -* Check for freeze panes - IF ws_layout-is_fixed = abap_true. - IF l_freeze_col = 0. - l_freeze_col = w_col_int. - ENDIF. - wo_worksheet->freeze_panes( EXPORTING ip_num_columns = l_freeze_col - ip_num_rows = w_row_int ) . - ENDIF. - ENDIF. - - endmethod. - - - - - - method EXECUTE_CONVERTER. - DATA: lt_fieldcatalog TYPE zexcel_t_fieldcatalog, - ls_fieldcatalog TYPE zexcel_s_converter_fcat, - lo_if TYPE REF TO zif_excel_converter, - ls_types TYPE ts_alv_types, - lo_addit TYPE REF TO cl_abap_classdescr, - lo_addit_superclass type ref to cl_abap_classdescr. - - IF io_object IS BOUND. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_object_ref( io_object ). - CATCH cx_sy_move_cast_error. - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - ls_types-seoclass = lo_addit->get_relative_name( ). - READ TABLE wt_objects INTO ls_types WITH TABLE KEY seoclass = ls_types-seoclass. - if sy-subrc ne 0. - do. - free lo_addit_superclass. - lo_addit_superclass = lo_addit->get_super_class_type( ). - if lo_addit_superclass is initial. - sy-subrc = '4'. - exit. - endif. - lo_addit = lo_addit_superclass. - ls_types-seoclass = lo_addit->get_relative_name( ). - read table wt_objects into ls_types with table key seoclass = ls_types-seoclass. - if sy-subrc eq 0. - exit. - endif. - enddo. - endif. - if sy-subrc = 0. - CREATE OBJECT lo_if type (ls_types-clsname). - try. - lo_if->create_fieldcatalog( - exporting - is_option = ws_option - io_object = io_object - it_table = it_table - importing - es_layout = ws_layout - et_fieldcatalog = wt_fieldcatalog - eo_table = wo_table - et_colors = wt_colors - et_filter = wt_filter - ). - endtry. -* data lines of highest level. - if ws_layout-max_subtotal_level > 0. add 1 to ws_layout-max_subtotal_level. endif. - else. - RAISE EXCEPTION type zcx_excel. - endif. - else. - refresh wt_fieldcatalog. - get reference of it_table into wo_table. - endif. -endmethod. - - - - - - - method GET_COLOR_STYLE. - DATA: ls_colors TYPE zexcel_s_converter_col, - ls_color_styles TYPE ts_color_styles, - lo_style TYPE REF TO zcl_excel_style. - - r_style = i_style. " Default we change nothing - - IF wt_colors IS NOT INITIAL. -* Full line has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = space. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - r_style = lo_style->get_guid( ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - ENDIF. - ELSE. -* Only field has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = i_fieldname. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - r_style = ls_color_styles-style_new->get_guid( ). - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - - endmethod. - - - - - - method GET_FILE. - data: lo_excel_writer type ref to zif_excel_writer, - lo_excel type ref to zcl_excel. - - data: ls_seoclass type seoclass. - - - if wo_excel is bound. - create object lo_excel_writer type zcl_excel_writer_2007. - e_file = lo_excel_writer->write_file( wo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = e_file - receiving - et_solix = et_file. - e_bytecount = xstrlen( e_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = e_file - importing - output_length = e_bytecount - tables - binary_tab = et_file. - endif. - endif. - - endmethod. - - - - - method GET_FUNCTION_NUMBER. -*Number Function -*1 AVERAGE -*2 COUNT -*3 COUNTA -*4 MAX -*5 MIN -*6 PRODUCT -*7 STDEV -*8 STDEVP -*9 SUM -*10 VAR -*11 VARP - - case i_totals_function. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_SUM. " Total - r_function_number = 9. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MIN. " Minimum - r_function_number = 5. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MAX. " Maximum - r_function_number = 4. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_AVERAGE. " Mean Value - r_function_number = 1. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_count. " Count - r_function_number = 2. - when others. - clear r_function_number. - endcase. - endmethod. - - - - method GET_OPTION. - - rs_option = ws_option. - - endmethod. - - - - - - - - method GET_STYLE. - DATA: ls_styles TYPE ts_styles, - lo_style TYPE REF TO zcl_excel_style. - - CLEAR r_style. - - READ TABLE wt_styles INTO ls_styles WITH TABLE KEY type = i_type - alignment = i_alignment - inttype = i_inttype - decimals = i_decimals. - IF sy-subrc = 0. - r_style = ls_styles-guid. - ELSE. - CASE i_type. - WHEN c_type_hdr. " Header - lo_style = create_style_hdr( i_alignment = i_alignment ). - WHEN c_type_str. "Stripped - lo_style = create_style_stripped( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_nor. "Normal - lo_style = create_style_normal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_sub. "Subtotals - lo_style = create_style_subtotal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_tot. "Totals - lo_style = create_style_total( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - ENDCASE. - IF lo_style IS NOT INITIAL. - r_style = lo_style->get_guid( ). - ls_styles-type = i_type. - ls_styles-alignment = i_alignment. - ls_styles-inttype = i_inttype. - ls_styles-decimals = i_decimals. - ls_styles-guid = r_style. - ls_styles-style = lo_style. - INSERT ls_styles INTO TABLE wt_styles. - ENDIF. - ENDIF. - endmethod. - - - method INIT_OPTION. - - ws_option-filter = abap_true. - ws_option-hidenc = abap_true. - ws_option-subtot = abap_true. - - endmethod. - - - - - - - method LOOP_NORMAL. - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - -* It is better to loop column by column - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - -* Only if the Header is required create it. - IF ws_option-hidehd IS INITIAL. - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - ENDIF. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true . - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. -* Now let's check for total versus subtotal. - IF <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_total( i_row_int = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_total ). - ENDIF. - ENDLOOP. - endmethod. - - - - - - - method LOOP_SUBTOTAL. - - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_subtotalled TYPE flag, - l_text TYPE string, - ls_sort_values TYPE ts_sort_values, - ls_subtotal_rows TYPE ts_subtotal_rows, - l_sort_level TYPE int4, - l_hidden TYPE int4, - l_line TYPE i, - l_guid TYPE guid_22, - l_tabix TYPE sy-tabix, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i, - lt_fcat TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_sortval> TYPE ANY, - <fs_sortv> TYPE ts_sort_values, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - REFRESH: wt_sort_values, - wt_subtotal_rows. - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - - READ TABLE <fs_tab> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc = 0. - l_row_int = i_row_int + 1. - lt_fcat = wt_fieldcatalog. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - ls_sort_values-fieldname = <fs_sfcat>-columnname. - ls_sort_values-row_int = l_row_int. - ls_sort_values-sort_level = <fs_sfcat>-sort_level. - ls_sort_values-is_collapsed = <fs_sfcat>-is_collapsed. - CREATE DATA ls_sort_values-value LIKE <fs_fldval>. - ASSIGN ls_sort_values-value->* TO <fs_sortval>. - <fs_sortval> = <fs_fldval>. - INSERT ls_sort_values INTO TABLE wt_sort_values. - ENDLOOP. - ENDIF. - l_row_int = i_row_int. -* Let's check if we need to hide a sort level. - DESCRIBE TABLE wt_sort_values LINES l_line. - IF l_line <= 1. - CLEAR l_hidden. - ELSE. - LOOP AT wt_sort_values INTO ls_sort_values WHERE is_collapsed = abap_false. - IF l_hidden < ls_sort_values-sort_level. - l_hidden = ls_sort_values-sort_level. - ENDIF. - ENDLOOP. - ENDIF. - ADD 1 TO l_hidden. " As this is the first level we show. -* First loop without formular only addtional rows with subtotal text. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - ADD 1 TO l_row_int. " 1 is for header row. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - IF sy-subrc = 0. - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - IF <fs_sortval> <> <fs_fldval> OR <fs_sortv>-new = abap_true. -* First let's remmember the subtotal values as it has to appear later. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* Now let's write the subtotal line - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = <fs_sfcat>-sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's change the key - ADD 1 TO l_row_int. - <fs_sortval> = <fs_fldval>. - <fs_sortv>-new = abap_false. - l_line = <fs_sortv>-sort_level. - LOOP AT wt_sort_values ASSIGNING <fs_sortv> WHERE sort_level >= l_line. - <fs_sortv>-row_int = l_row_int. - ENDLOOP. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - ENDLOOP. - ADD 1 TO l_row_int. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* First let's write the value as it has to appear. - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - - l_sort_level = <fs_sfcat>-sort_level. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. - ADD 1 TO l_row_int. - ENDIF. - ENDLOOP. -* Let's write the Grand total - l_sort_level = 0. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . -* lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . Not on grand total - - l_text = create_text_subtotal( i_value = 'Grand'(002) - i_totals_function = <fs_sfcat>-totals_function ). - - l_col_alpha_start = zcl_excel_common=>convert_column2alpha( i_col_int ). - wo_worksheet->set_cell( ip_column = l_col_alpha_start - ip_row = l_row_int - ip_value = l_text - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - -* It is better to loop column by column second time around -* Second loop with formular and data. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Let's set the row dimension values - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = ws_layout-max_subtotal_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim->set_visible( ip_visible = abap_false ) . - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Now let's check for Grand total - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_start = i_row_int + 1. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - ENDIF. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDLOOP. - - endmethod. - - - method OPEN_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string, - l_sep type c. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - - l_dir = create_path( ) . - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - cl_gui_frontend_services=>execute( - exporting - document = l_dir -* application = -* parameter = -* default_directory = -* maximized = -* minimized = -* synchronous = -* operation = 'OPEN' - exceptions - cntl_error = 1 - error_no_gui = 2 - bad_parameter = 3 - file_not_found = 4 - path_not_found = 5 - file_extension_unknown = 6 - error_execute_failed = 7 - synchronous_failed = 8 - not_supported_by_gui = 9 - ). - if sy-subrc <> 0. - message id sy-msgid type sy-msgty number sy-msgno - with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - endif. - - endif. - - - endmethod. - - - method SET_AUTOFILTER_AREA. - DATA: ls_area TYPE zexcel_s_autofilter_area, - l_lines TYPE i, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values. - -* Let's check for filter. - IF wo_autofilter IS BOUND. - ls_area-row_start = 1. - lt_values = wo_autofilter->get_values( ) . - SORT lt_values BY column ASCENDING. - DESCRIBE TABLE lt_values LINES l_lines. - READ TABLE lt_values INTO ls_values INDEX 1. - IF sy-subrc = 0. - ls_area-col_start = ls_values-column. - ENDIF. - READ TABLE lt_values INTO ls_values INDEX l_lines. - IF sy-subrc = 0. - ls_area-col_end = ls_values-column. - ENDIF. - wo_autofilter->set_filter_area( is_area = ls_area ) . - ENDIF. - - endmethod. - - - - - - method SET_CELL_FORMAT. - DATA: l_format TYPE zexcel_number_format. - - CLEAR r_format. - CASE i_inttype. - WHEN cl_abap_typedescr=>typekind_date. - r_format = wo_worksheet->get_default_excel_date_format( ). - WHEN cl_abap_typedescr=>typekind_time. - r_format = wo_worksheet->get_default_excel_time_format( ). - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - IF i_decimals > 0 . - l_format = '#,##0.'. - DO i_decimals TIMES. - CONCATENATE l_format '0' INTO l_format. - ENDDO. - r_format = l_format. - ENDIF. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - r_format = '#,##0'. - ENDCASE. - - endmethod. - - - method SET_FIELDCATALOG. - - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - ls_fieldcatalog TYPE zexcel_s_fieldcatalog. - DATA: ls_fcat TYPE zexcel_s_converter_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN wo_data->* TO <fs_tab> . - - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - LOOP AT lt_dfies INTO ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. - ls_fcat-columnname = ls_dfies-fieldname. - INSERT ls_fcat INTO TABLE wt_fieldcatalog. - ENDLOOP. - - clean_fieldcatalog( ). - - endmethod. - - - - method SET_OPTION. - - IF ws_indx-begdt IS INITIAL. - ws_indx-begdt = sy-datum. - ENDIF. - - ws_indx-aedat = sy-datum. - ws_indx-usera = sy-uname. - ws_indx-pgmid = sy-cprog. - - EXPORT p1 = is_option TO DATABASE indx(xl) FROM ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = is_option. - ENDIF. - - endmethod. - - - - method WRITE_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - if i_path is initial. - l_dir = create_path( ) . - else. - l_dir = i_path. - endif. - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - endif. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_col_converter, - col TYPE lvc_col, - int TYPE lvc_int, - inv TYPE lvc_inv, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - END OF ts_col_converter, - - tt_col_converter TYPE HASHED TABLE OF ts_col_converter WITH UNIQUE KEY col int inv. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - ABAP - KKBLO - - - - - - - - - - method APPLY_SORT. - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE, - <fs_sort> TYPE lvc_s_sort. - - CREATE DATA eo_table LIKE it_table. - ASSIGN eo_table->* TO <fs_table>. - - <fs_table> = it_table. - - SORT wt_sort BY spos. - LOOP AT wt_sort ASSIGNING <fs_sort>. - IF <fs_sort>-up = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_false. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - IF <fs_sort>-down = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_true. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - ENDLOOP. - IF lt_otab IS NOT INITIAL. - SORT <fs_table> BY (lt_otab). - ENDIF. - - endmethod. - - - method CLASS_CONSTRUCTOR. -* let's fill the color conversion routines. - DATA: ls_color TYPE ts_col_converter. -* 0 all combination the same - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Blue - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFB0E4FC'. " 176 228 252 blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFB0E4FC'. " 176 228 252 blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF5FCBFE'. " 095 203 254 Int blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF5FCBFE'. " 095 203 254 - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 - INSERT ls_color INTO TABLE wt_colors. - -* Gray - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. - ls_color-fillcolor = 'FFE5EAF0'. " 229 234 240 gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFE5EAF0'. " 229 234 240 gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFD8E8F4'. " 216 234 244 int gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFD8E8F4'. " 216 234 244 int gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -*Yellow - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFEFEB8'. " 254 254 184 yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFEFEB8'. " 254 254 184 yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFF9ED5D'. " 249 237 093 int yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFF9ED5D'. " 249 237 093 int yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* light blue - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEE7FB'. " 206 231 251 light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEE7FB'. " 206 231 251 light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF9ACCEF'. " 154 204 239 int light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF9ACCEF'. " 154 204 239 int light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Green - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEF8AE'. " 206 248 174 Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEF8AE'. " 206 248 174 Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF7AC769'. " 122 199 105 int Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF7AC769'. " 122 199 105 int Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Red - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFDBBBC'. " 253 187 188 Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFDBBBC'. " 253 187 188 Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFB6B6B'. " 251 107 107 int Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFB6B6B'. " 251 107 107 int Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - endmethod. - - - - - method GET_COLOR. - DATA: ls_con_col TYPE zexcel_s_converter_col, - ls_color TYPE ts_col_converter, - l_line TYPE i, - l_color(4) TYPE c. - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_stab> TYPE ANY, - <fs> TYPE ANY, - <fs_tcol> TYPE lvc_t_scol, - <fs_scol> TYPE lvc_s_scol, - <ft_slis> type standard table, - <fs_slis> type any. - -* Loop trough the table to set the color properties of each line. The color properties field is -* Char 4 and the characters is set as follows: -* Char 1 = C = This is a color property -* Char 2 = 6 = Color code (1 - 7) -* Char 3 = Intensified on/of = 1 = on -* Char 4 = Inverse display = 0 = of - - ASSIGN io_table->* TO <fs_tab>. - - IF ws_layo-info_fname IS NOT INITIAL OR - ws_layo-ctab_fname IS NOT INITIAL. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - IF ws_layo-info_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-info_fname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF <fs> IS NOT INITIAL. - l_color = <fs>. - IF l_color(1) = 'C'. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = l_color+1(1) - int = l_color+2(1) - inv = l_color+3(1). - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = space. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - if ws_layo-ctab_fname is not initial. - - assign component ws_layo-ctab_fname of structure <fs_stab> to <ft_slis>. - if sy-subrc = 0. - loop at <ft_slis> assigning <fs_slis>. - assign component 'COLOR' of structure <fs_slis> to <fs>. - if sy-subrc = 0. - if <fs> is not initial. - field-symbols: <col> type any, - <int> type any, - <inv> type any, - <fname> type any, - <nokeycol> type any. - assign component 'COL' of structure <fs> to <col>. - assign component 'INT' of structure <fs> to <int>. - assign component 'INV' of structure <fs> to <inv>. - read table wt_colors into ls_color with table key col = <col> - int = <int> - inv = <inv>. - if sy-subrc = 0. - ls_con_col-rownumber = l_line. - assign component 'FNAME' of structure <fs_slis> to <fname>. - if sy-subrc ne 0. - assign component 'FIELDNAME' of structure <fs_slis> to <fname>. - if sy-subrc eq 0. - ls_con_col-columnname = <fname>. - endif. - else. - ls_con_col-columnname = <fname>. - endif. - - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - assign component 'NOKEYCOL' of structure <fs_slis> to <nokeycol>. - if sy-subrc eq 0. - ls_con_col-nokeycol = <nokeycol>. - endif. - insert ls_con_col into table et_colors. - endif. - endif. - endif. - endloop. - endif. - endif. - ENDLOOP. - ENDIF. - endmethod. - - - - - METHOD get_filter. - DATA: ls_filt TYPE lvc_s_filt, - l_line TYPE i, - ls_filter TYPE zexcel_s_converter_fil. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lo_trange TYPE REF TO data, - lo_srange TYPE REF TO data, - lo_ltabdata TYPE REF TO data. - - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_ltab> TYPE STANDARD TABLE, - <fs_stab> TYPE any, - <fs> TYPE any, - <fs1> TYPE any, - <fs_srange> TYPE any, - <fs_trange> TYPE STANDARD TABLE. - - IF ws_option-filter = abap_false. - REFRESH et_filter. - RETURN. - ENDIF. - - ASSIGN xo_table->* TO <fs_tab>. - - CREATE DATA lo_ltabdata LIKE <fs_tab>. - ASSIGN lo_ltabdata->* TO <fs_ltab>. - - LOOP AT wt_filt INTO ls_filt. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - ASSIGN COMPONENT ls_filt-fieldname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF l_line = 1. - REFRESH lt_components_tab. - ls_components-name = 'SIGN'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-sign ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'OPTION'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-option ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'LOW'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'HIGH'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( p_components = lt_components_tab - p_strict = abap_false ). - CATCH cx_sy_struct_creation. - CONTINUE. - ENDTRY. - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA lo_trange TYPE HANDLE lo_table. - CREATE DATA lo_srange TYPE HANDLE lo_struc. - - ASSIGN lo_trange->* TO <fs_trange>. - ASSIGN lo_srange->* TO <fs_srange>. - ENDIF. - REFRESH <fs_trange>. - ASSIGN COMPONENT 'SIGN' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-sign. - ASSIGN COMPONENT 'OPTION' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-option. - ASSIGN COMPONENT 'LOW' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-low. - ASSIGN COMPONENT 'HIGH' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-high. - INSERT <fs_srange> INTO TABLE <fs_trange>. - IF <fs> IN <fs_trange>. - IF ws_option-filter = abap_true. - ls_filter-rownumber = l_line. - ls_filter-columnname = ls_filt-fieldname. - INSERT ls_filter INTO TABLE et_filter. - ELSE. - INSERT <fs_stab> INTO TABLE <fs_ltab>. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - IF ws_option-filter = abap_undefined. - <fs_tab> = <fs_ltab>. - REFRESH <fs_ltab>. - ENDIF. - ENDLOOP. - -ENDMETHOD. - - - - - method UPDATE_CATALOG. - DATA: ls_fieldcatalog TYPE zexcel_s_converter_fcat, - ls_ref TYPE salv_s_ddic_reference, - ls_fcat TYPE lvc_s_fcat, - ls_sort TYPE lvc_s_sort, - l_decimals TYPE lvc_decmls. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat. - - IF ws_layo-zebra IS NOT INITIAL. - cs_layout-is_stripped = abap_true. - ENDIF. - IF ws_layo-no_keyfix IS INITIAL OR - ws_layo-no_keyfix = '0'. - cs_layout-is_fixed = abap_true. - ENDIF. - - LOOP AT wt_fcat INTO ls_fcat. - CLEAR: ls_fieldcatalog, - l_decimals. - CASE ws_option-hidenc. - WHEN abap_false. " We make hiden columns visible - CLEAR ls_fcat-no_out. - WHEN abap_true. -* We convert column and hide it. - WHEN abap_undefined. "We don't convert hiden columns - IF ls_fcat-no_out = abap_true. - ls_fcat-tech = abap_true. - ENDIF. - ENDCASE. - IF ls_fcat-tech = abap_false. - ls_fieldcatalog-tabname = ls_fcat-tabname. - ls_fieldcatalog-fieldname = ls_fcat-fieldname . - ls_fieldcatalog-columnname = ls_fcat-fieldname . - ls_fieldcatalog-position = ls_fcat-col_pos. - ls_fieldcatalog-col_id = ls_fcat-col_id. - ls_fieldcatalog-convexit = ls_fcat-convexit. - ls_fieldcatalog-inttype = ls_fcat-inttype. - ls_fieldcatalog-scrtext_s = ls_fcat-scrtext_s . - ls_fieldcatalog-scrtext_m = ls_fcat-scrtext_m . - ls_fieldcatalog-scrtext_l = ls_fcat-scrtext_l. - l_decimals = ls_fcat-decimals_o. - IF l_decimals IS NOT INITIAL. - ls_fieldcatalog-decimals = l_decimals. - ELSE. - ls_fieldcatalog-decimals = ls_fcat-decimals . - ENDIF. - CASE ws_option-subtot. - WHEN abap_false. " We ignore subtotals - CLEAR ls_fcat-do_sum. - WHEN abap_true. " We convert subtotals and detail - - WHEN abap_undefined. " We should only take subtotals and displayed detail -* for now abap_true - ENDCASE. - CASE ls_fcat-do_sum. - WHEN abap_true. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. - WHEN 'A'. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_min. - WHEN 'B' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_max. - WHEN 'C' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_average. - WHEN OTHERS. - CLEAR ls_fieldcatalog-totals_function . - ENDCASE. - ls_fieldcatalog-fix_column = ls_fcat-fix_column. - IF ws_layo-cwidth_opt IS INITIAL. - IF ls_fcat-col_opt IS NOT INITIAL. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - ELSE. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - IF ls_fcat-no_out IS NOT INITIAL. - ls_fieldcatalog-is_hidden = abap_true. - ls_fieldcatalog-position = ls_fieldcatalog-col_id. " We hide based on orginal data structure - ENDIF. -* Alignment in each cell - CASE ls_fcat-just. - WHEN 'R'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_right. - WHEN 'L'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_left. - WHEN 'C'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_center. - WHEN OTHERS. - CLEAR ls_fieldcatalog-alignment. - ENDCASE. -* Check for subtotals. - READ TABLE wt_sort INTO ls_sort WITH KEY fieldname = ls_fcat-fieldname. - IF sy-subrc = 0 AND ws_option-subtot <> abap_false. - ls_fieldcatalog-sort_level = 0 . -* IF ls_fieldcatalog-totals_function IS INITIAL. " Not clear why not -* CLEAR ls_fieldcatalog-is_subtotalled. -* ELSE. - ls_fieldcatalog-is_subtotalled = ls_sort-subtot. -* ENDIF. - ls_fieldcatalog-is_collapsed = ls_sort-expa. - IF ls_fieldcatalog-is_subtotalled = abap_true. - ls_fieldcatalog-sort_level = ls_sort-spos. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. " we need function for text - ENDIF. - ENDIF. - APPEND ls_fieldcatalog TO ct_fieldcatalog. - ENDIF. - ENDLOOP. - - SORT ct_fieldcatalog BY sort_level ASCENDING. - cs_layout-max_subtotal_level = 0. - LOOP AT ct_fieldcatalog ASSIGNING <fs_scat> WHERE sort_level > 0. - cs_layout-max_subtotal_level = cs_layout-max_subtotal_level + 1. - <fs_scat>-sort_level = cs_layout-max_subtotal_level. - ENDLOOP. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - data: lo_alv type REF TO cl_gui_alv_grid. - - try. - lo_alv ?= io_object. - catch cx_sy_move_cast_error . - raise exception type zcx_excel. - endtry. - -endmethod. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_alv TYPE REF TO cl_gui_alv_grid. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_alv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_alv IS BOUND. - lo_alv->get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ). - lo_alv->get_frontend_layout( IMPORTING es_layout = ws_layo ). - lo_alv->get_sort_criteria( IMPORTING et_sort = wt_sort ) . - lo_alv->get_filter_criteria( IMPORTING et_filter = wt_filt ) . - - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method GET_TABLE. - DATA: lo_object TYPE REF TO object, - ls_seoclass TYPE seoclass, - l_method TYPE string. - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'IF_SALV_BS_DATA_SOURCE'. - - IF sy-subrc = 0. - l_method = 'GET_TABLE_REF'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ELSE. - l_method = 'GET_REF_TO_TABLE'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table, - lo_ex_cm TYPE REF TO cl_salv_ex_cm, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - lo_ex_cm ?= lo_result->r_model->r_model. - ws_layo = lo_ex_cm->s_layo. -* T_DRDN Instance Attribute Public Type LVC_T_DROP - wt_fcat = lo_ex_cm->t_fcat. - wt_filt = lo_ex_cm->t_filt. -* T_HYPE Instance Attribute Public Type LVC_T_HYPE -* T_SELECTED_CELLS Instance Attribute Public Type LVC_T_CELL -* T_SELECTED_COLUMNS Instance Attribute Public Type LVC_T_COL - wt_sort = lo_ex_cm->t_sort. - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - else. -* We have a problem and should stop here. - ENDIF. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - wo_config ?= lo_result->r_model->r_model. - - IF wo_config IS BOUND. - wt_fields = wo_config->if_salv_wd_field_settings~get_fields( ) . - wt_columns = wo_config->if_salv_wd_column_settings~get_columns( ) . - ENDIF. - - create_wt_fcat( io_table = lo_data ). - create_wt_sort( ). - create_wt_filt( ). - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - -* get_color( EXPORTING io_table = eo_table -* IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ELSE. -* We have a problem and should stop here - ENDIF. - ENDIF. -ENDMETHOD. - - - - method CREATE_WT_FCAT. - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - lv_sytabix TYPE sytabix. - - DATA: ls_fcat TYPE lvc_s_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN io_table->* TO <fs_tab> . - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - loop at lt_dfies into ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. -* ls_fcat-columnname = ls_dfies-fieldname. - ls_fcat-col_pos = ls_dfies-position. - ls_fcat-key = ls_dfies-keyflag. - get_fields_info( CHANGING xs_fcat = ls_fcat ) . - - ls_fcat-col_opt = abap_true. - - get_columns_info( CHANGING xs_fcat = ls_fcat ) . - - INSERT ls_fcat INTO TABLE wt_fcat. - endloop. - - endmethod. - - - method CREATE_WT_FILT. -* No neeed for superclass. -* Only for WD - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - DATA: lt_filters TYPE salv_wd_t_filter_rule_ref, - ls_filt TYPE lvc_s_filt. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref, - <fs_filter> TYPE salv_wd_s_filter_rule_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - REFRESH lt_filters. - lt_filters = <fs_fields>-r_field->if_salv_wd_filter~get_filter_rules( ) . - LOOP AT lt_filters ASSIGNING <fs_filter>. - ls_filt-fieldname = <fs_fields>-fieldname. - IF <fs_filter>-r_filter_rule->get_included( ) = abap_true. - ls_filt-sign = 'I'. - ELSE. - ls_filt-sign = 'E'. - ENDIF. - ls_filt-option = <fs_filter>-r_filter_rule->get_operator( ). - ls_filt-high = <fs_filter>-r_filter_rule->get_high_value( ) . - ls_filt-low = <fs_filter>-r_filter_rule->get_low_value( ) . - INSERT ls_filt INTO TABLE wt_filt. - ENDLOOP. - ENDLOOP. - - endmethod. - - - method CREATE_WT_SORT. - DATA: lo_sort TYPE REF TO cl_salv_wd_sort_rule, - l_sort_order TYPE salv_wd_constant, - ls_sort TYPE lvc_s_sort. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - lo_sort = <fs_fields>-r_field->if_salv_wd_sort~get_sort_rule( ) . - IF lo_sort IS BOUND. - l_sort_order = lo_sort->get_sort_order( ). - IF l_sort_order <> if_salv_wd_c_sort=>sort_order. - CLEAR ls_sort. - ls_sort-spos = lo_sort->get_sort_position( ). - ls_sort-fieldname = <fs_fields>-fieldname. -* ls_sort-GROUP - ls_sort-subtot = lo_sort->get_group_aggregation( ). -* ls_sort-COMP -* ls_sort-EXPA -* ls_sort-SELTEXT -* ls_sort-OBLIGATORY -* ls_sort-LEVEL -* ls_sort-NO_OUT - IF l_sort_order = if_salv_wd_c_sort=>sort_order_ascending. - ls_sort-up = abap_true. - ELSE. - ls_sort-down = abap_true. - ENDIF. - INSERT ls_sort INTO TABLE wt_sort. - ENDIF. - ENDIF. - ENDLOOP. - - endmethod. - - - - method GET_COLUMNS_INFO. - DATA: l_numc2 TYPE salv_wd_constant. - - - FIELD-SYMBOLS: <fs_column> TYPE salv_wd_s_column_ref. - - READ TABLE wt_columns ASSIGNING <fs_column> WITH KEY id = xs_fcat-fieldname . - IF sy-subrc = 0. - xs_fcat-col_pos = <fs_column>-r_column->get_position( ) . - l_numc2 = <fs_column>-r_column->get_fixed_position( ). - IF l_numc2 = '02'. - xs_fcat-fix_column = abap_true . - ENDIF. - l_numc2 = <fs_column>-r_column->get_visible( ). - IF l_numc2 = '01'. - xs_fcat-no_out = abap_true . - ENDIF. - ENDIF. - - endmethod. - - - - method GET_FIELDS_INFO. - DATA: lo_aggr TYPE REF TO cl_salv_wd_aggr_rule, - l_aggrtype TYPE salv_wd_constant. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - READ TABLE wt_fields ASSIGNING <fs_fields> WITH KEY fieldname = xs_fcat-fieldname. - IF sy-subrc = 0. - lo_aggr = <fs_fields>-r_field->if_salv_wd_aggr~get_aggr_rule( ) . - IF lo_aggr IS BOUND. - l_aggrtype = lo_aggr->get_aggregation_type( ) . - CASE l_aggrtype. - WHEN if_salv_wd_c_aggregation=>aggrtype_total. - xs_fcat-do_sum = abap_true. - WHEN if_salv_wd_c_aggregation=>aggrtype_minimum. - xs_fcat-do_sum = 'A'. - WHEN if_salv_wd_c_aggregation=>aggrtype_maximum . - xs_fcat-do_sum = 'B'. - WHEN if_salv_wd_c_aggregation=>aggrtype_average . - xs_fcat-do_sum = 'C'. - WHEN OTHERS. - CLEAR xs_fcat-do_sum . - ENDCASE. - ENDIF. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD zif_excel_converter~can_convert_object. - - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - lo_salv ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_salv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog, - et_colors . - - IF lo_salv IS BOUND. - load_data( EXPORTING io_salv = lo_salv - it_table = it_table ). - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - - method LOAD_DATA. - DATA: lo_columns TYPE REF TO cl_salv_columns_table, - lo_aggregations TYPE REF TO cl_salv_aggregations, - lo_sorts TYPE REF TO cl_salv_sorts, - lo_filters TYPE REF TO cl_salv_filters, - lo_functional TYPE REF TO cl_salv_functional_settings, - lo_display TYPE REF TO cl_salv_display_settings, - lo_selections TYPE REF TO cl_salv_selections. - - DATA: ls_vari TYPE disvariant, - lo_layout TYPE REF TO cl_salv_layout. - - DATA: lr_form_tol TYPE REF TO cl_salv_form, - lr_form_eol TYPE REF TO cl_salv_form. - - DATA lt_kkblo_fieldcat TYPE kkblo_t_fieldcat. - DATA ls_kkblo_layout TYPE kkblo_layout. - DATA lt_kkblo_filter TYPE kkblo_t_filter. - DATA lt_kkblo_sort TYPE kkblo_t_sortinfo. - - lo_layout = io_salv->get_layout( ) . - lo_columns = io_salv->get_columns( ). - lo_aggregations = io_salv->get_aggregations( ) . - lo_sorts = io_salv->get_sorts( ) . - lo_filters = io_salv->get_filters( ) . - lo_display = io_salv->get_display_settings( ) . - lo_functional = io_salv->get_functional_settings( ) . - - REFRESH: wt_fcat, - wt_sort, - wt_filt. - -* First update metadata if we can. - IF io_salv->is_offline( ) = abap_false. - io_salv->get_metadata( ) . - ELSE. -* If we are offline we need to build this. - cl_salv_controller_metadata=>get_variant( - EXPORTING - r_layout = lo_layout - CHANGING - s_variant = ls_vari ). - ENDIF. - -*... get the column information - wt_fcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog( - r_columns = lo_columns - r_aggregations = lo_aggregations ). - -*... get the layout information - cl_salv_controller_metadata=>get_lvc_layout( - EXPORTING - r_functional_settings = lo_functional - r_display_settings = lo_display - r_columns = lo_columns - r_aggregations = lo_aggregations - CHANGING - s_layout = ws_layo ). - -* the fieldcatalog is not complete yet! - CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' - EXPORTING - i_complete = 'X' - i_refresh_buffer = space - i_buffer_active = space - is_layout = ws_layo - i_test = '1' - i_fcat_complete = 'X' - IMPORTING -* E_EDIT = - es_layout = ws_layo - CHANGING - ct_fieldcat = wt_fcat. - - IF ls_vari IS NOT INITIAL AND io_salv->is_offline( ) = abap_true. - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - EXPORTING - it_fieldcat_lvc = wt_fcat - is_layout_lvc = ws_layo - IMPORTING - et_fieldcat_kkblo = lt_kkblo_fieldcat - es_layout_kkblo = ls_kkblo_layout - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - it_fieldcat_lvc_missing = 2 - OTHERS = 3. - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LT_VARIANT_LOAD' - EXPORTING -* I_TOOL = 'LT' - i_tabname = '1' -* I_TABNAME_SLAVE = - i_dialog = ' ' -* I_USER_SPECIFIC = ' ' -* I_DEFAULT = 'X' -* I_NO_REPTEXT_OPTIMIZE = -* I_VIA_GRID = - i_fcat_complete = 'X' - IMPORTING -* E_EXIT = - et_fieldcat = lt_kkblo_fieldcat - et_sort = lt_kkblo_sort - et_filter = lt_kkblo_filter - CHANGING - cs_layout = ls_kkblo_layout - ct_default_fieldcat = lt_kkblo_fieldcat - cs_variant = ls_vari - EXCEPTIONS - wrong_input = 1 - fc_not_complete = 2 - not_found = 3 - OTHERS = 4 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO' - EXPORTING -* I_TECH_COMPLETE = -* I_STRUCTURE_NAME = - it_fieldcat_kkblo = lt_kkblo_fieldcat - it_sort_kkblo = lt_kkblo_sort - it_filter_kkblo = lt_kkblo_filter -* IT_SPECIAL_GROUPS_KKBLO = -* IT_FILTERED_ENTRIES_KKBLO = -* IT_GROUPLEVELS_KKBLO = -* IS_SUBTOT_OPTIONS_KKBLO = - is_layout_kkblo = ls_kkblo_layout -* IS_REPREP_ID_KKBLO = -* I_CALLBACK_PROGRAM_KKBLO = -* IT_ADD_FIELDCAT = -* IT_EXCLUDING_KKBLO = -* IT_EXCEPT_QINFO_KKBLO = - IMPORTING - et_fieldcat_lvc = wt_fcat - et_sort_lvc = wt_sort - et_filter_lvc = wt_filt -* ET_SPECIAL_GROUPS_LVC = -* ET_FILTER_INDEX_LVC = -* ET_GROUPLEVELS_LVC = -* ES_TOTAL_OPTIONS_LVC = - es_layout_lvc = ws_layo -* ES_VARIANT_LVC = -* E_VARIANT_SAVE_LVC = -* ES_PRINT_INFO_LVC = -* ES_REPREP_LVC = -* E_REPREP_ACTIVE_LVC = -* ET_EXCLUDING_LVC = -* ET_EXCEPT_QINFO_LVC = - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - ELSE. -* ... get the sort information - wt_sort = cl_salv_controller_metadata=>get_lvc_sort( lo_sorts ). - -* ... get the filter information - wt_filt = cl_salv_controller_metadata=>get_lvc_filter( lo_filters ). - ENDIF. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - " Initialise instance variables - formula1 = ''. - formula2 = ''. - type = me->c_type_none. - errorstyle = me->c_style_stop. - operator = ''. - allowblank = abap_false. - showdropdown = abap_false. - showinputmessage = abap_true. - showerrormessage = abap_true. - errortitle = ''. - error = ''. - prompttitle = ''. - prompt = ''. -* inizialize dimension range - cell_row = 1. - cell_column = 'A'. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method ADD. - data_validations->add( ip_data_validation ). - endmethod. - - - method CLEAR. - data_validations->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT data_validations. - - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= data_validations->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = data_validations->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - data_validations->remove( ip_data_validation ). - endmethod. - - - - method SIZE. - ep_size = data_validations->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = me->guid. - me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - - me->type = ip_type. - -* inizialize dimension range - anchor = anchor_one_cell. - from_loc-col = 1. - from_loc-row = 1. -ENDMETHOD. - - - - method CREATE_MEDIA_NAME. - -* if media name is initial, create unique name - CHECK media_name IS INITIAL. - - index = ip_index. - CONCATENATE me->type index INTO media_name. - CONDENSE media_name NO-GAPS. - endmethod. - - - - - - METHOD emu2pixel. -* suppose 96 DPI - IF ip_dpi IS SUPPLIED. -* r_emu = ip_pixel * 914400 / ip_dpi. - r_pixel = ip_emu * ip_dpi / 914400. - ELSE. -* suppose 96 DPI -* r_emu = ip_pixel * 914400 / 96. - r_pixel = ip_emu * 96 / 914400. - ENDIF. -ENDMETHOD. - - - - method GET_FROM_COL. - r_from_col = me->from_loc-col. - endmethod. - - - - method GET_FROM_ROW. - r_from_row = me->from_loc-row. - endmethod. - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_HEIGHT_EMU_STR. - r_height = pixel2emu( size-height ). - CONDENSE r_height NO-GAPS. - endmethod. - - - - method GET_INDEX. - rp_index = me->index. - endmethod. - - - - METHOD get_media. - - DATA: lv_language TYPE sylangu. - DATA: lt_bin_mime TYPE sdokcntbins. - DATA: lt_mime TYPE tsfmime, - lv_filesize TYPE i, - lv_filesizec(10). - - CASE media_source. - WHEN c_media_source_xstring. - r_media = media. - WHEN c_media_source_www. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = media_key_www - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. - - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - WHEN c_media_source_mime. - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = me->io - IMPORTING - filesize = lv_filesize - bin_data = lt_bin_mime - CHANGING - language = lv_language ). - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_bin_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - ENDCASE. -ENDMETHOD. - - - - method GET_MEDIA_NAME. - CONCATENATE media_name `.` media_type INTO r_name. - endmethod. - - - - method GET_MEDIA_TYPE. - r_type = media_type. - endmethod. - - - - method GET_NAME. - r_name = title. - endmethod. - - - - method GET_POSITION. - rp_position-anchor = anchor. - rp_position-from = from_loc. - rp_position-to = to_loc. - rp_position-size = size. - endmethod. - - - - method GET_TO_COL. - r_to_col = me->to_loc-col. - endmethod. - - - - method GET_TO_ROW. - r_to_row = me->to_loc-row. - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method GET_WIDTH_EMU_STR. - r_width = pixel2emu( size-width ). - CONDENSE r_width NO-GAPS. - endmethod. - - - - method LOAD_CHART_ATTRIBUTES. - DATA: node TYPE REF TO if_ixml_element. - DATA: node2 TYPE REF TO if_ixml_element. - DATA: node3 TYPE REF TO if_ixml_element. - DATA: node4 TYPE REF TO if_ixml_element. - DATA: iterator TYPE REF TO if_ixml_node_iterator. - - DATA: chartspace TYPE REF TO if_ixml_node_collection. - DATA: coll_length TYPE i. - DATA: chartelem TYPE REF TO if_ixml_element. - - DATA lo_barchart TYPE REF TO zcl_excel_graph_bars. - DATA lo_piechart TYPE REF TO zcl_excel_graph_pie. - DATA lo_linechart TYPE REF TO zcl_excel_graph_line. - - TYPES: BEGIN OF t_prop, - val TYPE string, - rtl TYPE string, - lang TYPE string, - formatcode TYPE string, - sourcelinked TYPE string, - END OF t_prop. - - TYPES: BEGIN OF t_pagemargins, - b TYPE string, - l TYPE string, - r TYPE string, - t TYPE string, - header TYPE string, - footer TYPE string, - END OF t_pagemargins. - - DATA ls_prop TYPE t_prop. - DATA ls_pagemargins TYPE t_pagemargins. - - DATA lo_collection TYPE REF TO if_ixml_node_collection. - DATA lo_node TYPE REF TO if_ixml_node. - DATA lo_iterator TYPE REF TO if_ixml_node_iterator. - DATA lv_idx TYPE i. - DATA lv_order TYPE i. - DATA lv_invertifnegative TYPE string. - DATA lv_symbol TYPE string. - DATA lv_smooth TYPE c. - DATA lv_sername TYPE string. - DATA lv_label TYPE string. - DATA lv_value TYPE string. - DATA lv_axid TYPE string. - DATA lv_orientation TYPE string. - DATA lv_delete TYPE string. - DATA lv_axpos TYPE string. - DATA lv_formatcode TYPE string. - DATA lv_sourcelinked TYPE string. - DATA lv_majortickmark TYPE string. - DATA lv_minortickmark TYPE string. - DATA lv_ticklblpos TYPE string. - DATA lv_crossax TYPE string. - DATA lv_crosses TYPE string. - DATA lv_auto TYPE string. - DATA lv_lblalgn TYPE string. - DATA lv_lbloffset TYPE string. - DATA lv_nomultilvllbl TYPE string. - DATA lv_crossbetween TYPE string. - - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - CASE me->graph_type. - WHEN c_graph_bars. - CREATE OBJECT lo_barchart. - me->graph = lo_barchart. - WHEN c_graph_pie. - CREATE OBJECT lo_piechart. - me->graph = lo_piechart. - WHEN c_graph_line. - CREATE OBJECT lo_linechart. - me->graph = lo_linechart. - WHEN OTHERS. - ENDCASE. - - "Fill properties - node2 ?= node->find_from_name( name = 'date1904' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_1904val = ls_prop-val. - node2 ?= node->find_from_name( name = 'lang' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_langval = ls_prop-val. - node2 ?= node->find_from_name( name = 'roundedCorners' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_roundedcornersval = ls_prop-val. - - "style - node2 ?= node->find_from_name( name = 'style' namespace = 'c14' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_c14styleval = ls_prop-val. - node2 ?= node->find_from_name( name = 'style' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_styleval = ls_prop-val. - "---------------------------Read graph properties - node2 ?= node->find_from_name( name = 'autoTitleDeleted' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_autotitledeletedval = ls_prop-val. - - "plotArea - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'barDir' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_bardirval = ls_prop-val. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'invertIfNegative' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_invertifnegative = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_barchart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_invertifnegative = lv_invertifnegative - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'gapWidth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_gapwidthval = ls_prop-val. - - "Load axes - node2 ?= node->find_from_name( name = 'barChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_piechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showLeaderLines' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showleaderlinesval = ls_prop-val. - node2 ?= node->find_from_name( name = 'firstSliceAng' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_firstsliceangval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'symbol' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_symbol = ls_prop-val. - node3 ?= node2->find_from_name( name = 'smooth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_smooth = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_linechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_symbol = lv_symbol - ip_smooth = lv_smooth - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showbubblesizeval = ls_prop-val. - - node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - node2 ?= node->find_from_name( name = 'marker' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_MARKERVAL = ls_prop-val. - node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_SMOOTHVAL = ls_prop-val. - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - "Load axes - node2 ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. -* node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). -* zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). -* lv_formatcode = ls_prop-formatcode. -* lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - WHEN OTHERS. - ENDCASE. - - "legend - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_overlayval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_overlayval = ls_prop-val. - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_overlayval = ls_prop-val. - node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_pprrtl = ls_prop-rtl. - node2 ?= node->find_from_name( name = 'endParaRPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_endpararprlang = ls_prop-lang. - - WHEN OTHERS. - ENDCASE. - - node2 ?= node->find_from_name( name = 'plotVisOnly' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_plotvisonlyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'dispBlanksAs' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_dispblanksasval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showDLblsOverMax' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_showdlblsovermaxval = ls_prop-val. - "--------------------- - - node2 ?= node->find_from_name( name = 'pageMargins' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_pagemargins ). - me->graph->pagemargins = ls_pagemargins. - - - endmethod. - - - - - - method PIXEL2EMU. -* suppose 96 DPI - IF ip_dpi IS SUPPLIED. - r_emu = ip_pixel * 914400 / ip_dpi. - ELSE. -* suppose 96 DPI - r_emu = ip_pixel * 914400 / 96. - ENDIF. - endmethod. - - - - - - - method SET_MEDIA. - IF ip_media IS SUPPLIED. - media = ip_media. - ENDIF. - media_type = ip_media_type. - media_source = c_media_source_xstring. - IF ip_width IS SUPPLIED. - size-width = ip_width. - ENDIF. - IF ip_height IS SUPPLIED. - size-height = ip_height. - ENDIF. - endmethod. - - - - - - METHOD set_media_mime. - - DATA: lv_language TYPE sylangu. - - io = ip_io. - media_source = c_media_source_mime. - size-width = ip_width. - size-height = ip_height. - - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = ip_io - IMPORTING - filename = media_name - "mimetype = media_type - CHANGING - language = lv_language ). - - SPLIT media_name AT '.' INTO media_name media_type. - -ENDMETHOD. - - - - - - method SET_MEDIA_WWW. - DATA: lv_value(20). - - media_key_www = ip_key. - media_source = c_media_source_www. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'fileextension' - IMPORTING - value = lv_value. - media_type = lv_value. - SHIFT media_type LEFT DELETING LEADING '.'. - - size-width = ip_width. - size-height = ip_height. - endmethod. - - - - - - - method SET_POSITION. - from_loc-col = zcl_excel_common=>convert_column2int( ip_from_col ) - 1. - IF ip_coloff IS SUPPLIED. - from_loc-col_offset = ip_coloff. - ENDIF. - from_loc-row = ip_from_row - 1. - IF ip_rowoff IS SUPPLIED. - from_loc-row_offset = ip_rowoff. - ENDIF. - anchor = anchor_one_cell. - endmethod. - - - - - - method SET_POSITION2. - - data: lv_anchor type zexcel_drawing_anchor. - lv_anchor = ip_anchor. - - IF lv_anchor IS INITIAL. - IF ip_to IS NOT INITIAL. - lv_anchor = anchor_two_cell. - ELSE. - lv_anchor = anchor_one_cell. - ENDIF. - ENDIF. - - CASE lv_anchor. - WHEN anchor_absolute OR anchor_one_cell. - CLEAR: me->to_loc. - WHEN anchor_two_cell. - CLEAR: me->size. - ENDCASE. - - me->from_loc = ip_from. - me->to_loc = ip_to. - me->anchor = lv_anchor. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method ADD. - DATA: lv_index TYPE i. - - drawings->add( ip_drawing ). - lv_index = drawings->if_object_collection~size( ). - ip_drawing->create_media_name( - ip_index = lv_index ). - endmethod. - - - method CLEAR. - - drawings->clear( ). - endmethod. - - - - method CONSTRUCTOR. - - CREATE OBJECT drawings. - type = ip_type. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_drawing ?= drawings->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= drawings->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method INCLUDE. - drawings->add( ip_drawing ). - endmethod. - - - - method IS_EMPTY. - - is_empty = drawings->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - - drawings->remove( ip_drawing ). - endmethod. - - - - method SIZE. - - ep_size = drawings->if_object_collection~size( ). - endmethod. - - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - "Load default values - me->pagemargins-b = '0.75'. - me->pagemargins-l = '0.7'. - me->pagemargins-r = '0.7'. - me->pagemargins-t = '0.75'. - me->pagemargins-header = '0.3'. - me->pagemargins-footer = '0.3'. - endmethod. - - - - - - - - - - - - - - - - - - - - method CREATE_SERIE. - DATA ls_serie TYPE s_series. - - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7. - - - IF ip_lbl IS NOT SUPPLIED. - lv_stop_row_c = ip_lbl_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_lbl_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-lbl = ip_sheet. - ls_serie-lbl = zcl_excel_common=>escape_string( ip_value = ls_serie-lbl ). - CONCATENATE ls_serie-lbl '!$' ip_lbl_from_col '$' lv_start_row_c ':$' ip_lbl_to_col '$' lv_stop_row_c INTO ls_serie-lbl. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-lbl = ip_lbl. - ENDIF. - IF ip_ref IS NOT SUPPLIED. - lv_stop_row_c = ip_ref_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_ref_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-ref = ip_sheet. - ls_serie-ref = zcl_excel_common=>escape_string( ip_value = ls_serie-ref ). - CONCATENATE ls_serie-ref '!$' ip_ref_from_col '$' lv_start_row_c ':$' ip_ref_to_col '$' lv_stop_row_c INTO ls_serie-ref. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-ref = ip_ref. - ENDIF. - ls_serie-idx = ip_idx. - ls_serie-order = ip_order. - ls_serie-invertifnegative = ip_invertifnegative. - ls_serie-symbol = ip_symbol. - ls_serie-smooth = ip_smooth. - ls_serie-sername = ip_sername. - APPEND ls_serie TO me->series. - SORT me->series BY order ASCENDING. - endmethod. - - - - method SET_PRINT_LBL. - me->print_label = ip_value. - endmethod. - - - - method SET_STYLE. - me->ns_c14styleval = ip_style-c14style. - CONDENSE me->ns_c14styleval NO-GAPS. - me->ns_styleval = ip_style-cstyle. - CONDENSE me->ns_styleval NO-GAPS. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - if ip_type = c_catax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '1'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'b'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '2'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_auto is SUPPLIED. - ls_ax-auto = ip_auto. - else. - ls_ax-auto = '1'. - endif. - if ip_lblAlgn is SUPPLIED. - ls_ax-lblAlgn = ip_lblAlgn. - else. - ls_ax-lblAlgn = 'ctr'. - endif. - if ip_lblOffset is SUPPLIED. - ls_ax-lblOffset = ip_lblOffset. - else. - ls_ax-lblOffset = '100'. - endif. - if ip_noMultiLvlLbl is SUPPLIED. - ls_ax-noMultiLvlLbl = ip_noMultiLvlLbl. - else. - ls_ax-noMultiLvlLbl = '0'. - endif. - elseif ip_type = c_valax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '2'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'l'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '1'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_crossBetween is SUPPLIED. - ls_ax-crossBetween = ip_crossBetween. - else. - ls_ax-crossBetween = 'between'. - endif. - endif. - - APPEND ls_ax TO me->axes. - sort me->axes by axid ascending. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - IF ip_type = c_catax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '1'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'b'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '2'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_auto IS SUPPLIED. - ls_ax-auto = ip_auto. - ELSE. - ls_ax-auto = '1'. - ENDIF. - IF ip_lblalgn IS SUPPLIED. - ls_ax-lblalgn = ip_lblalgn. - ELSE. - ls_ax-lblalgn = 'ctr'. - ENDIF. - IF ip_lbloffset IS SUPPLIED. - ls_ax-lbloffset = ip_lbloffset. - ELSE. - ls_ax-lbloffset = '100'. - ENDIF. - IF ip_nomultilvllbl IS SUPPLIED. - ls_ax-nomultilvllbl = ip_nomultilvllbl. - ELSE. - ls_ax-nomultilvllbl = '0'. - ENDIF. - ELSEIF ip_type = c_valax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '2'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'l'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '1'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_crossbetween IS SUPPLIED. - ls_ax-crossbetween = ip_crossbetween. - ELSE. - ls_ax-crossbetween = 'between'. - ENDIF. - ENDIF. - - APPEND ls_ax TO me->axes. - SORT me->axes BY axid ASCENDING. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEADER_LINES. - ns_showleaderlinesval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - method CREATE. - data: lo_hyperlink type REF TO zcl_excel_hyperlink. - - create OBJECT lo_hyperlink. - - lo_hyperlink->location = iv_url. - lo_hyperlink->internal = iv_internal. - - ov_link = lo_hyperlink. - endmethod. - - - - - method CREATE_EXTERNAL_LINK. - - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_url - iv_internal = abap_false ). - endmethod. - - - - - method CREATE_INTERNAL_LINK. - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_location - iv_internal = abap_true ). - endmethod. - - - - method GET_REF. - ev_ref = row. - CONDENSE ev_ref. - CONCATENATE column ev_ref INTO ev_ref. - endmethod. - - - - method GET_URL. - ev_url = me->location. - endmethod. - - - - method IS_INTERNAL. - ev_ret = me->internal. - endmethod. - - - - - - method SET_CELL_REFERENCE. - me->column = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - me->row = ip_row. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method CONSTRUCTOR. - " default Excel palette based on - " http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.indexedcolors.aspx - - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800000' TO colors. - APPEND '00008000' TO colors. - APPEND '00000080' TO colors. - APPEND '00808000' TO colors. - - APPEND '00800080' TO colors. - APPEND '00008080' TO colors. - APPEND '00C0C0C0' TO colors. - APPEND '00808080' TO colors. - APPEND '009999FF' TO colors. - APPEND '00993366' TO colors. - APPEND '00FFFFCC' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00660066' TO colors. - APPEND '00FF8080' TO colors. - - APPEND '000066CC' TO colors. - APPEND '00CCCCFF' TO colors. - APPEND '00000080' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800080' TO colors. - APPEND '00800000' TO colors. - APPEND '00008080' TO colors. - APPEND '000000FF' TO colors. - - APPEND '0000CCFF' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00CCFFCC' TO colors. - APPEND '00FFFF99' TO colors. - APPEND '0099CCFF' TO colors. - APPEND '00FF99CC' TO colors. - APPEND '00CC99FF' TO colors. - APPEND '00FFCC99' TO colors. - APPEND '003366FF' TO colors. - APPEND '0033CCCC' TO colors. - - APPEND '0099CC00' TO colors. - APPEND '00FFCC00' TO colors. - APPEND '00FF9900' TO colors. - APPEND '00FF6600' TO colors. - APPEND '00666699' TO colors. - APPEND '00969696' TO colors. - APPEND '00003366' TO colors. - APPEND '00339966' TO colors. - APPEND '00003300' TO colors. - APPEND '00333300' TO colors. - - APPEND '00993300' TO colors. - APPEND '00993366' TO colors. - APPEND '00333399' TO colors. - APPEND '00333333' TO colors. - - endmethod. - - - - - - method GET_COLOR. - DATA: lv_index type i. - - lv_index = ip_index + 1. - READ TABLE colors INTO ep_color INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - endmethod. - - - - method GET_COLORS. - ep_colors = colors. - endmethod. - - - - method IS_MODIFIED. - ep_modified = modified. - endmethod. - - - - - method SET_COLOR. - DATA: lv_index TYPE i. - - FIELD-SYMBOLS: <lv_color> LIKE LINE OF colors. - - lv_index = ip_index + 1. - READ TABLE colors ASSIGNING <lv_color> INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - - IF <lv_color> <> ip_color. - modified = abap_true. - <lv_color> = ip_color. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - DATA: lv_timestamp TYPE timestampl. - - GET TIME STAMP FIELD lv_timestamp. - created = lv_timestamp. - modified = lv_timestamp. - -endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - method constructor. - create object elements. - create object objectdefaults. - create object extclrschemelst. - create object extlst. - endmethod. "class_constructor - - - - method read_theme. - data: lo_node_theme type ref to if_ixml_element. - data: lo_theme_children type ref to if_ixml_node_list. - data: lo_theme_iterator type ref to if_ixml_node_iterator. - data: lo_theme_element type ref to if_ixml_element. - check io_theme_xml is not initial. - - lo_node_theme = io_theme_xml->get_root_element( )." find_from_name( name = c_theme ). - if lo_node_theme is bound. - name = lo_node_theme->get_attribute( name = c_theme_name ). - xmls_a = lo_node_theme->get_attribute( name = c_theme_xmlns ). - lo_theme_children = lo_node_theme->get_children( ). - lo_theme_iterator = lo_theme_children->create_iterator( ). - lo_theme_element ?= lo_theme_iterator->get_next( ). - while lo_theme_element is bound. - case lo_theme_element->get_name( ). - when c_theme_elements. - elements->load( io_elements = lo_theme_element ). - when c_theme_object_def. - objectdefaults->load( io_object_def = lo_theme_element ). - when c_theme_extra_color. - extclrschemelst->load( io_extra_color = lo_theme_element ). - when c_theme_extlst. - extlst->load( io_extlst = lo_theme_element ). - endcase. - lo_theme_element ?= lo_theme_iterator->get_next( ). - endwhile. - endif. - endmethod. "read_theme - - - - - - - method set_color. - elements->color_scheme->set_color( - exporting - iv_type = iv_type - iv_srgb = iv_srgb - iv_syscolorname = iv_syscolorname - iv_syscolorlast = iv_syscolorlast - ). - endmethod. "set_color - - - - method set_color_scheme_name. - elements->color_scheme->set_name( iv_name = iv_name ). - endmethod. "set_color_scheme_name - - - - - - - - method set_cs_font. - elements->font_scheme->modify_cs_font( - exporting - iv_type = iv_type - iv_typeface = iv_typeface - iv_panose = iv_panose - iv_pitchfamily = iv_pitchfamily - iv_charset = iv_charset - ). - endmethod. "set_cs_font - - - - - - - - method set_ea_font. - elements->font_scheme->modify_ea_font( - exporting - iv_type = iv_type - iv_typeface = iv_typeface - iv_panose = iv_panose - iv_pitchfamily = iv_pitchfamily - iv_charset = iv_charset - ). - endmethod. "set_ea_font - - - - - - method set_font. - elements->font_scheme->modify_font( - exporting - iv_type = iv_type - iv_script = iv_script - iv_typeface = iv_typeface - ). - endmethod. "set_font - - - - method set_font_scheme_name. - elements->font_scheme->set_name( iv_name = iv_name ). - endmethod. "set_font_scheme_name - - - - - - - - method set_latin_font. - elements->font_scheme->modify_latin_font( - exporting - iv_type = iv_type - iv_typeface = iv_typeface - iv_panose = iv_panose - iv_pitchfamily = iv_pitchfamily - iv_charset = iv_charset - ). - endmethod. "set_latin_font - - - - method set_theme_name. - name = iv_name. - endmethod. - - - - method write_theme. - data: lo_ixml type ref to if_ixml, - lo_element_root type ref to if_ixml_element, - lo_encoding type ref to if_ixml_encoding. - data: lo_streamfactory TYPE REF TO if_ixml_stream_factory. - data: lo_ostream TYPE REF TO if_ixml_ostream. - data: lo_renderer TYPE REF TO if_ixml_renderer. - data: lo_document type ref to if_ixml_document. - lo_ixml = cl_ixml=>create( ). - - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - lo_document->set_namespace_prefix( prefix = 'a' ). - - lo_element_root = lo_document->create_simple_element_ns( prefix = c_theme_prefix - name = c_theme - parent = lo_document - ). - lo_element_root->set_attribute_ns( name = c_theme_xmlns - value = c_theme_xmlns_val ). - lo_element_root->set_attribute_ns( name = c_theme_name - value = name ). - - elements->build_xml( io_document = lo_document ). - objectdefaults->build_xml( io_document = lo_document ). - extclrschemelst->build_xml( io_document = lo_document ). - extlst->build_xml( io_document = lo_document ). - - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = rv_xstring ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. "write_theme - - - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method build_xml. - data: lo_scheme_element type ref to if_ixml_element. - data: lo_color type ref to if_ixml_element. - data: lo_syscolor type ref to if_ixml_element. - data: lo_srgb type ref to if_ixml_element. - data: lo_elements type ref to if_ixml_element. - - check io_document is bound. - lo_elements ?= io_document->find_from_name_ns( name = zcl_excel_theme=>c_theme_elements ). - if lo_elements is bound. - lo_scheme_element ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix - name = zcl_excel_theme_elements=>c_color_scheme - parent = lo_elements ). - lo_scheme_element->set_attribute( name = c_name value = name ). - - "! Adding colors to scheme - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix - name = c_dark1 - parent = lo_scheme_element ). - if lo_color is bound. - if dark1-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = dark1-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = dark1-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = dark1-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_light1 - parent = lo_scheme_element ). - if lo_color is bound. - if light1-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = light1-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = light1-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = light1-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_dark2 - parent = lo_scheme_element ). - if lo_color is bound. - if dark2-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = dark2-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = dark2-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = dark2-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_light2 - parent = lo_scheme_element ). - if lo_color is bound. - if light2-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = light2-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = light2-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = light2-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_accent1 - parent = lo_scheme_element ). - if lo_color is bound. - if accent1-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = accent1-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = accent1-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = accent1-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_accent2 - parent = lo_scheme_element ). - if lo_color is bound. - if accent2-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = accent2-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = accent2-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = accent2-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_accent3 - parent = lo_scheme_element ). - if lo_color is bound. - if accent3-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = accent3-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = accent3-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = accent3-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_accent4 - parent = lo_scheme_element ). - if lo_color is bound. - if accent4-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = accent4-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = accent4-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = accent4-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_accent5 - parent = lo_scheme_element ). - if lo_color is bound. - if accent5-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = accent5-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = accent5-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = accent5-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_accent6 - parent = lo_scheme_element ). - if lo_color is bound. - if accent6-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = accent6-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = accent6-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = accent6-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_hlink - parent = lo_scheme_element ). - if lo_color is bound. - if hlink-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = hlink-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = hlink-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = hlink-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - lo_color ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_folhlink - parent = lo_scheme_element ). - if lo_color is bound. - if folhlink-srgb is not initial. - lo_srgb ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_srgbcolor - parent = lo_color ). - lo_srgb->set_attribute( name = c_val value = folhlink-srgb ). - else. - lo_syscolor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_syscolor - parent = lo_color ). - lo_syscolor->set_attribute( name = c_val value = folhlink-syscolor-val ). - lo_syscolor->set_attribute( name = c_lastclr value = folhlink-syscolor-lastclr ). - endif. - clear: lo_color, lo_srgb, lo_syscolor. - endif. - - - endif. - endmethod. "build_xml - - - method constructor. - set_defaults( ). - endmethod. "constructor - - - - - method get_color. - data: lo_color_children type ref to if_ixml_node_list. - data: lo_color_iterator type ref to if_ixml_node_iterator. - data: lo_color_element type ref to if_ixml_element. - check io_object is not initial. - - lo_color_children = io_object->get_children( ). - lo_color_iterator = lo_color_children->create_iterator( ). - lo_color_element ?= lo_color_iterator->get_next( ). - if lo_color_element is bound. - case lo_color_element->get_name( ). - when c_srgbcolor. - rv_color-srgb = lo_color_element->get_attribute( name = c_val ). - when c_syscolor. - rv_color-syscolor-val = lo_color_element->get_attribute( name = c_val ). - rv_color-syscolor-lastclr = lo_color_element->get_attribute( name = c_lastclr ). - endcase. - endif. - endmethod. "get_color - - - - method load. - data: lo_scheme_children type ref to if_ixml_node_list. - data: lo_scheme_iterator type ref to if_ixml_node_iterator. - data: lo_scheme_element type ref to if_ixml_element. - check io_color_scheme is not initial. - - name = io_color_scheme->get_attribute( name = c_name ). - lo_scheme_children = io_color_scheme->get_children( ). - lo_scheme_iterator = lo_scheme_children->create_iterator( ). - lo_scheme_element ?= lo_scheme_iterator->get_next( ). - while lo_scheme_element is bound. - case lo_scheme_element->get_name( ). - when c_dark1. - dark1 = me->get_color( lo_scheme_element ). - when c_dark2. - dark2 = me->get_color( lo_scheme_element ). - when c_light1. - light1 = me->get_color( lo_scheme_element ). - when c_light2. - light2 = me->get_color( lo_scheme_element ). - when c_accent1. - accent1 = me->get_color( lo_scheme_element ). - when c_accent2. - accent2 = me->get_color( lo_scheme_element ). - when c_accent3. - accent3 = me->get_color( lo_scheme_element ). - when c_accent4. - accent4 = me->get_color( lo_scheme_element ). - when c_accent5. - accent5 = me->get_color( lo_scheme_element ). - when c_accent6. - accent6 = me->get_color( lo_scheme_element ). - when c_hlink. - hlink = me->get_color( lo_scheme_element ). - when c_folhlink. - folhlink = me->get_color( lo_scheme_element ). - endcase. - lo_scheme_element ?= lo_scheme_iterator->get_next( ). - endwhile. - endmethod. "load - - - - - - - method set_color. - field-symbols: <color> type t_color. - check iv_type is not initial. - check iv_srgb is not initial or iv_syscolorname is not initial. - case iv_type. - when c_dark1. - assign dark1 to <color>. - when c_dark2. - assign dark2 to <color>. - when c_light1. - assign light1 to <color>. - when c_light2. - assign light2 to <color>. - when c_accent1. - assign accent1 to <color>. - when c_accent2. - assign accent2 to <color>. - when c_accent3. - assign accent3 to <color>. - when c_accent4. - assign accent4 to <color>. - when c_accent5. - assign accent5 to <color>. - when c_accent6. - assign accent6 to <color>. - when c_hlink. - assign hlink to <color>. - when c_folhlink. - assign folhlink to <color>. - endcase. - check <color> is assigned. - clear <color>. - if iv_srgb is not initial. - <color>-srgb = iv_srgb. - else. - <color>-syscolor-val = iv_syscolorname. - if iv_syscolorlast is not initial. - <color>-syscolor-lastclr = iv_syscolorlast. - else. - <color>-syscolor-lastclr = '000000'. - endif. - endif. - endmethod. "set_color - - - method set_defaults. - name = 'Office'. - dark1-syscolor-val = 'windowText'. - dark1-syscolor-lastclr = '000000'. - light1-syscolor-val = 'window'. - light1-syscolor-lastclr = 'FFFFFF'. - dark2-srgb = '44546A'. - light2-srgb = 'E7E6E6'. - accent1-srgb = '5B9BD5'. - accent2-srgb = 'ED7D31'. - accent3-srgb = 'A5A5A5'. - accent4-srgb = 'FFC000'. - accent5-srgb = '4472C4'. - accent6-srgb = '70AD47'. - hlink-srgb = '0563C1'. - folhlink-srgb = '954F72'. - endmethod. "set_defaults - - - - method set_name. - if strlen( iv_name ) > 50. - name = iv_name(50). - else. - name = iv_name. - endif. - endmethod. "set_name - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes - - - - method build_xml. - data: lo_theme_element type ref to if_ixml_element. - data: lo_theme type ref to if_ixml_element. - data: lo_theme_objdef type ref to if_ixml_element. - check io_document is bound. - lo_theme ?= io_document->get_root_element( ). - check lo_theme is bound. - if extracolor is initial. - lo_theme_objdef ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix - name = zcl_excel_theme=>c_theme_extra_color - parent = lo_theme ). - - else. - lo_theme->append_child( new_child = extracolor ). - endif. - - endmethod. "build_xml - - - - method load. - "! so far copy only existing values - extracolor ?= io_extra_color. - endmethod. "load - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes - - - - - - - - - - method build_xml. - data: lo_theme_element type ref to if_ixml_element. - data: lo_theme type ref to if_ixml_element. - check io_document is bound. - lo_theme ?= io_document->get_root_element( ).. - if lo_theme is bound. - lo_theme_element ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix - name = c_theme_elements - parent = lo_theme ). - - color_scheme->build_xml( io_document = io_document ). - font_scheme->build_xml( io_document = io_document ). - fmt_scheme->build_xml( io_document = io_document ). - endif. - endmethod. - - - method constructor. - create object color_scheme. - create object font_scheme. - create object fmt_scheme. - endmethod. "constructor - - - - method load. - data: lo_elements_children type ref to if_ixml_node_list. - data: lo_elements_iterator type ref to if_ixml_node_iterator. - data: lo_elements_element type ref to if_ixml_element. - check io_elements is not initial. - - lo_elements_children = io_elements->get_children( ). - lo_elements_iterator = lo_elements_children->create_iterator( ). - lo_elements_element ?= lo_elements_iterator->get_next( ). - while lo_elements_element is bound. - case lo_elements_element->get_name( ). - when c_color_scheme. - color_scheme->load( io_color_scheme = lo_elements_element ). - when c_font_scheme. - font_scheme->load( io_font_scheme = lo_elements_element ). - when c_fmt_scheme. - fmt_scheme->load( io_fmt_scheme = lo_elements_element ). - endcase. - lo_elements_element ?= lo_elements_iterator->get_next( ). - endwhile. - endmethod. "load - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes - - - - method build_xml. - data: lo_theme_element type ref to if_ixml_element. - data: lo_theme type ref to if_ixml_element. - data: lo_theme_objdef type ref to if_ixml_element. - check io_document is bound. - - lo_theme ?= io_document->get_root_element( ). - check lo_theme is bound. - if extlst is initial. - lo_theme_objdef ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix - name = zcl_excel_theme=>c_theme_extlst - parent = lo_theme ). - - else. - lo_theme->append_child( new_child = extlst ). - endif. - endmethod. "build_xml - - - - method load. - "! so far copy only existing values - extlst ?= io_extlst. - endmethod. "load - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes - - - - method build_xml. - data: lo_xml type ref to cl_xml_document. - data: lo_node type ref to if_ixml_node. - data: default_fmt_scheme type string. - data: lo_scheme_element type ref to if_ixml_element. - data: lo_elements type ref to if_ixml_element. - check io_document is bound. - lo_elements ?= io_document->find_from_name_ns( name = zcl_excel_theme=>c_theme_elements ). - if lo_elements is bound. - - if fmt_scheme is initial. - create object lo_xml. - lo_xml->parse_string( get_default_fmt( ) ). - lo_node = lo_xml->get_first_node( ). - lo_elements->append_child( new_child = lo_node ). - else. - lo_elements->append_child( new_child = fmt_scheme ). - endif. - endif. - endmethod. "build_xml - - - - method get_default_fmt. - concatenate '<a:fmtScheme name="Office">' - ' <a:fillStyleLst>' - ' <a:solidFill>' - ' <a:schemeClr val="phClr"/>' - ' </a:solidFill>' - ' <a:gradFill rotWithShape="1">' - ' <a:gsLst>' - ' <a:gs pos="0">' - ' <a:schemeClr val="phClr">' - ' <a:lumMod val="110000"/>' - ' <a:satMod val="105000"/>' - ' <a:tint val="67000"/>' - ' </a:schemeClr>' - ' </a:gs>' - ' <a:gs pos="50000">' - ' <a:schemeClr val="phClr">' - ' <a:lumMod val="105000"/>' - ' <a:satMod val="103000"/>' - ' <a:tint val="73000"/>' - ' </a:schemeClr>' - ' </a:gs>' - ' <a:gs pos="100000">' - ' <a:schemeClr val="phClr">' - ' <a:lumMod val="105000"/>' - ' <a:satMod val="109000"/>' - ' <a:tint val="81000"/>' - ' </a:schemeClr>' - ' </a:gs>' - ' </a:gsLst>' - ' <a:lin ang="5400000" scaled="0"/>' - ' </a:gradFill>' - ' <a:gradFill rotWithShape="1">' - ' <a:gsLst>' - ' <a:gs pos="0">' - ' <a:schemeClr val="phClr">' - ' <a:satMod val="103000"/>' - ' <a:lumMod val="102000"/>' - ' <a:tint val="94000"/>' - ' </a:schemeClr>' - ' </a:gs>' - ' <a:gs pos="50000">' - ' <a:schemeClr val="phClr">' - ' <a:satMod val="110000"/>' - ' <a:lumMod val="100000"/>' - ' <a:shade val="100000"/>' - ' </a:schemeClr>' - ' </a:gs>' - ' <a:gs pos="100000">' - ' <a:schemeClr val="phClr">' - ' <a:lumMod val="99000"/>' - ' <a:satMod val="120000"/>' - ' <a:shade val="78000"/>' - ' </a:schemeClr>' - ' </a:gs>' - ' </a:gsLst>' - ' <a:lin ang="5400000" scaled="0"/>' - ' </a:gradFill>' - ' </a:fillStyleLst>' - ' <a:lnStyleLst>' - ' <a:ln w="6350" cap="flat" cmpd="sng" algn="ctr">' - ' <a:solidFill>' - ' <a:schemeClr val="phClr"/>' - ' </a:solidFill>' - ' <a:prstDash val="solid"/>' - ' <a:miter lim="800000"/>' - ' </a:ln>' - ' <a:ln w="12700" cap="flat" cmpd="sng" algn="ctr">' - ' <a:solidFill>' - ' <a:schemeClr val="phClr"/>' - ' </a:solidFill>' - ' <a:prstDash val="solid"/>' - ' <a:miter lim="800000"/>' - ' </a:ln>' - ' <a:ln w="19050" cap="flat" cmpd="sng" algn="ctr">' - ' <a:solidFill>' - ' <a:schemeClr val="phClr"/>' - ' </a:solidFill>' - ' <a:prstDash val="solid"/>' - ' <a:miter lim="800000"/>' - ' </a:ln>' - ' </a:lnStyleLst>' - ' <a:effectStyleLst>' - ' <a:effectStyle>' - ' <a:effectLst/>' - ' </a:effectStyle>' - ' <a:effectStyle>' - ' <a:effectLst/>' - ' </a:effectStyle>' - ' <a:effectStyle>' - ' <a:effectLst>' - ' <a:outerShdw blurRad="57150" dist="19050" dir="5400000" algn="ctr" rotWithShape="0">' - ' <a:srgbClr val="000000">' - ' <a:alpha val="63000"/>' - ' </a:srgbClr>' - ' </a:outerShdw>' - ' </a:effectLst>' - ' </a:effectStyle>' - ' </a:effectStyleLst>' - ' <a:bgFillStyleLst>' - ' <a:solidFill>' - ' <a:schemeClr val="phClr"/>' - ' </a:solidFill>' - ' <a:solidFill>' - ' <a:schemeClr val="phClr">' - ' <a:tint val="95000"/>' - ' <a:satMod val="170000"/>' - ' </a:schemeClr>' - ' </a:solidFill>' - ' <a:gradFill rotWithShape="1">' - ' <a:gsLst>' - ' <a:gs pos="0">' - ' <a:schemeClr val="phClr">' - ' <a:tint val="93000"/>' - ' <a:satMod val="150000"/>' - ' <a:shade val="98000"/>' - ' <a:lumMod val="102000"/>' - ' </a:schemeClr>' - ' </a:gs>' - ' <a:gs pos="50000">' - ' <a:schemeClr val="phClr">' - ' <a:tint val="98000"/>' - ' <a:satMod val="130000"/>' - ' <a:shade val="90000"/>' - ' <a:lumMod val="103000"/>' - ' </a:schemeClr>' - ' </a:gs>' - ' <a:gs pos="100000">' - ' <a:schemeClr val="phClr">' - ' <a:shade val="63000"/>' - ' <a:satMod val="120000"/>' - ' </a:schemeClr>' - ' </a:gs>' - ' </a:gsLst>' - ' <a:lin ang="5400000" scaled="0"/>' - ' </a:gradFill>' - ' </a:bgFillStyleLst>' - ' </a:fmtScheme>' - into rv_string . - endmethod. "get_default_fmt - - - - method load. - "! so far copy only existing values - fmt_scheme ?= io_fmt_scheme. - endmethod. "load - - - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes - - - - - - - - - - - - - - - - - method build_xml. - data: lo_scheme_element type ref to if_ixml_element. - data: lo_font type ref to if_ixml_element. - data: lo_latin type ref to if_ixml_element. - data: lo_ea type ref to if_ixml_element. - data: lo_cs type ref to if_ixml_element. - data: lo_major type ref to if_ixml_element. - data: lo_minor type ref to if_ixml_element. - data: lo_elements type ref to if_ixml_element. - field-symbols: <font> type t_font. - check io_document is bound. - lo_elements ?= io_document->find_from_name_ns( name = zcl_excel_theme=>c_theme_elements ). - if lo_elements is bound. - lo_scheme_element ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = zcl_excel_theme_elements=>c_font_scheme - parent = lo_elements ). - lo_scheme_element->set_attribute( name = c_name value = font_scheme-name ). - - lo_major ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_major - parent = lo_scheme_element ). - if lo_major is bound. - lo_latin ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_latin - parent = lo_major ). - lo_latin->set_attribute( name = c_typeface value = font_scheme-major-latin-typeface ). - if font_scheme-major-latin-panose is not initial. - lo_latin->set_attribute( name = c_panose value = font_scheme-major-latin-panose ). - endif. - if font_scheme-major-latin-pitchfamily is not initial. - lo_latin->set_attribute( name = c_pitchfamily value = font_scheme-major-latin-pitchfamily ). - endif. - if font_scheme-major-latin-charset is not initial. - lo_latin->set_attribute( name = c_charset value = font_scheme-major-latin-charset ). - endif. - - lo_ea ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_ea - parent = lo_major ). - lo_ea->set_attribute( name = c_typeface value = font_scheme-major-ea-typeface ). - if font_scheme-major-ea-panose is not initial. - lo_ea->set_attribute( name = c_panose value = font_scheme-major-ea-panose ). - endif. - if font_scheme-major-ea-pitchfamily is not initial. - lo_ea->set_attribute( name = c_pitchfamily value = font_scheme-major-ea-pitchfamily ). - endif. - if font_scheme-major-ea-charset is not initial. - lo_ea->set_attribute( name = c_charset value = font_scheme-major-ea-charset ). - endif. - - lo_cs ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_cs - parent = lo_major ). - lo_cs->set_attribute( name = c_typeface value = font_scheme-major-cs-typeface ). - if font_scheme-major-cs-panose is not initial. - lo_cs->set_attribute( name = c_panose value = font_scheme-major-cs-panose ). - endif. - if font_scheme-major-cs-pitchfamily is not initial. - lo_cs->set_attribute( name = c_pitchfamily value = font_scheme-major-cs-pitchfamily ). - endif. - if font_scheme-major-cs-charset is not initial. - lo_cs->set_attribute( name = c_charset value = font_scheme-major-cs-charset ). - endif. - - loop at font_scheme-major-fonts assigning <font>. - if <font>-script is not initial and <font>-typeface is not initial. - clear lo_font. - lo_font ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_font - parent = lo_major ). - lo_font->set_attribute( name = c_script value = <font>-script ). - lo_font->set_attribute( name = c_typeface value = <font>-typeface ). - endif. - endloop. - clear: lo_latin, lo_ea, lo_cs, lo_font. - endif. - - lo_minor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_minor - parent = lo_scheme_element ). - if lo_minor is bound. - lo_latin ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_latin - parent = lo_minor ). - lo_latin->set_attribute( name = c_typeface value = font_scheme-minor-latin-typeface ). - if font_scheme-minor-latin-panose is not initial. - lo_latin->set_attribute( name = c_panose value = font_scheme-minor-latin-panose ). - endif. - if font_scheme-minor-latin-pitchfamily is not initial. - lo_latin->set_attribute( name = c_pitchfamily value = font_scheme-minor-latin-pitchfamily ). - endif. - if font_scheme-minor-latin-charset is not initial. - lo_latin->set_attribute( name = c_charset value = font_scheme-minor-latin-charset ). - endif. - - lo_ea ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_ea - parent = lo_minor ). - lo_ea->set_attribute( name = c_typeface value = font_scheme-minor-ea-typeface ). - if font_scheme-minor-ea-panose is not initial. - lo_ea->set_attribute( name = c_panose value = font_scheme-minor-ea-panose ). - endif. - if font_scheme-minor-ea-pitchfamily is not initial. - lo_ea->set_attribute( name = c_pitchfamily value = font_scheme-minor-ea-pitchfamily ). - endif. - if font_scheme-minor-ea-charset is not initial. - lo_ea->set_attribute( name = c_charset value = font_scheme-minor-ea-charset ). - endif. - - lo_cs ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_cs - parent = lo_minor ). - lo_cs->set_attribute( name = c_typeface value = font_scheme-minor-cs-typeface ). - if font_scheme-minor-cs-panose is not initial. - lo_cs->set_attribute( name = c_panose value = font_scheme-minor-cs-panose ). - endif. - if font_scheme-minor-cs-pitchfamily is not initial. - lo_cs->set_attribute( name = c_pitchfamily value = font_scheme-minor-cs-pitchfamily ). - endif. - if font_scheme-minor-cs-charset is not initial. - lo_cs->set_attribute( name = c_charset value = font_scheme-minor-cs-charset ). - endif. - - loop at font_scheme-minor-fonts assigning <font>. - if <font>-script is not initial and <font>-typeface is not initial. - clear lo_font. - lo_font ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_font - parent = lo_minor ). - lo_font->set_attribute( name = c_script value = <font>-script ). - lo_font->set_attribute( name = c_typeface value = <font>-typeface ). - endif. - endloop. - clear: lo_latin, lo_ea, lo_cs, lo_font. - endif. - - - endif. - endmethod. "build_xml - - - method constructor. - set_defaults( ). - endmethod. "constructor - - - - method load. - data: lo_scheme_children type ref to if_ixml_node_list. - data: lo_scheme_iterator type ref to if_ixml_node_iterator. - data: lo_scheme_element type ref to if_ixml_element. - data: lo_major_children type ref to if_ixml_node_list. - data: lo_major_iterator type ref to if_ixml_node_iterator. - data: lo_major_element type ref to if_ixml_element. - data: lo_minor_children type ref to if_ixml_node_list. - data: lo_minor_iterator type ref to if_ixml_node_iterator. - data: lo_minor_element type ref to if_ixml_element. - data: ls_font type t_font. - check io_font_scheme is not initial. - clear font_scheme. - font_scheme-name = io_font_scheme->get_attribute( name = c_name ). - lo_scheme_children = io_font_scheme->get_children( ). - lo_scheme_iterator = lo_scheme_children->create_iterator( ). - lo_scheme_element ?= lo_scheme_iterator->get_next( ). - while lo_scheme_element is bound. - case lo_scheme_element->get_name( ). - when c_major. - lo_major_children = lo_scheme_element->get_children( ). - lo_major_iterator = lo_major_children->create_iterator( ). - lo_major_element ?= lo_major_iterator->get_next( ). - while lo_major_element is bound. - case lo_major_element->get_name( ). - when c_latin. - font_scheme-major-latin-typeface = lo_major_element->get_attribute( name = c_typeface ). - font_scheme-major-latin-panose = lo_major_element->get_attribute( name = c_panose ). - font_scheme-major-latin-pitchfamily = lo_major_element->get_attribute( name = c_pitchfamily ). - font_scheme-major-latin-charset = lo_major_element->get_attribute( name = c_charset ). - when c_ea. - font_scheme-major-ea-typeface = lo_major_element->get_attribute( name = c_typeface ). - font_scheme-major-ea-panose = lo_major_element->get_attribute( name = c_panose ). - font_scheme-major-ea-pitchfamily = lo_major_element->get_attribute( name = c_pitchfamily ). - font_scheme-major-ea-charset = lo_major_element->get_attribute( name = c_charset ). - when c_cs. - font_scheme-major-cs-typeface = lo_major_element->get_attribute( name = c_typeface ). - font_scheme-major-cs-panose = lo_major_element->get_attribute( name = c_panose ). - font_scheme-major-cs-pitchfamily = lo_major_element->get_attribute( name = c_pitchfamily ). - font_scheme-major-cs-charset = lo_major_element->get_attribute( name = c_charset ). - when c_font. - clear ls_font. - ls_font-script = lo_major_element->get_attribute( name = c_script ). - ls_font-typeface = lo_major_element->get_attribute( name = c_typeface ). - try. - insert ls_font into table font_scheme-major-fonts. - catch cx_root. "not the best but just to avoid duplicate lines dump - - endtry. - endcase. - lo_major_element ?= lo_major_iterator->get_next( ). - endwhile. - when c_minor. - lo_minor_children = lo_scheme_element->get_children( ). - lo_minor_iterator = lo_minor_children->create_iterator( ). - lo_minor_element ?= lo_minor_iterator->get_next( ). - while lo_minor_element is bound. - case lo_minor_element->get_name( ). - when c_latin. - font_scheme-minor-latin-typeface = lo_minor_element->get_attribute( name = c_typeface ). - font_scheme-minor-latin-panose = lo_minor_element->get_attribute( name = c_panose ). - font_scheme-minor-latin-pitchfamily = lo_minor_element->get_attribute( name = c_pitchfamily ). - font_scheme-minor-latin-charset = lo_minor_element->get_attribute( name = c_charset ). - when c_ea. - font_scheme-minor-ea-typeface = lo_minor_element->get_attribute( name = c_typeface ). - font_scheme-minor-ea-panose = lo_minor_element->get_attribute( name = c_panose ). - font_scheme-minor-ea-pitchfamily = lo_minor_element->get_attribute( name = c_pitchfamily ). - font_scheme-minor-ea-charset = lo_minor_element->get_attribute( name = c_charset ). - when c_cs. - font_scheme-minor-cs-typeface = lo_minor_element->get_attribute( name = c_typeface ). - font_scheme-minor-cs-panose = lo_minor_element->get_attribute( name = c_panose ). - font_scheme-minor-cs-pitchfamily = lo_minor_element->get_attribute( name = c_pitchfamily ). - font_scheme-minor-cs-charset = lo_minor_element->get_attribute( name = c_charset ). - when c_font. - clear ls_font. - ls_font-script = lo_minor_element->get_attribute( name = c_script ). - ls_font-typeface = lo_minor_element->get_attribute( name = c_typeface ). - try. - insert ls_font into table font_scheme-minor-fonts. - catch cx_root. "not the best but just to avoid duplicate lines dump - - endtry. - endcase. - lo_minor_element ?= lo_minor_iterator->get_next( ). - endwhile. - endcase. - lo_scheme_element ?= lo_scheme_iterator->get_next( ). - endwhile. - endmethod. "load - - - - - - - - method modify_cs_font. - modify_lec_fonts( - exporting - iv_type = iv_type - iv_font_type = c_cs - iv_typeface = iv_typeface - iv_panose = iv_panose - iv_pitchfamily = iv_pitchfamily - iv_charset = iv_charset - ). - endmethod. "modify_latin_font - - - - - - - - method modify_ea_font. - modify_lec_fonts( - exporting - iv_type = iv_type - iv_font_type = c_ea - iv_typeface = iv_typeface - iv_panose = iv_panose - iv_pitchfamily = iv_pitchfamily - iv_charset = iv_charset - ). - endmethod. "modify_latin_font - - - - - - method modify_font. - data: ls_font type t_font. - field-symbols: <font> type t_font. - ls_font-script = iv_script. - ls_font-typeface = iv_typeface. - try. - case iv_type. - when c_major. - read table font_scheme-major-fonts with key script = iv_script assigning <font>. - if sy-subrc eq 0. - <font> = ls_font. - else. - insert ls_font into table font_scheme-major-fonts. - endif. - when c_minor. - read table font_scheme-minor-fonts with key script = iv_script assigning <font>. - if sy-subrc eq 0. - <font> = ls_font. - else. - insert ls_font into table font_scheme-minor-fonts. - endif. - endcase. - catch cx_root. "not the best but just to avoid duplicate lines dump - endtry. - endmethod. "add_font - - - - - - - - method modify_latin_font. - modify_lec_fonts( - exporting - iv_type = iv_type - iv_font_type = c_latin - iv_typeface = iv_typeface - iv_panose = iv_panose - iv_pitchfamily = iv_pitchfamily - iv_charset = iv_charset - ). - endmethod. "modify_latin_font - - - - - - - - - method modify_lec_fonts. - field-symbols: <type> type t_fonts, - <font> type t_fonttype. - case iv_type. - when c_minor. - assign font_scheme-minor to <type>. - when c_major. - assign font_scheme-major to <type>. - when others. - return. - endcase. - check <type> is assigned. - case iv_font_type. - when c_latin. - assign <type>-latin to <font>. - when c_ea. - assign <type>-ea to <font>. - when c_cs. - assign <type>-cs to <font>. - when others. - return. - endcase. - check <font> is assigned. - <font>-typeface = iv_typeface. - <font>-panose = iv_panose. - <font>-pitchfamily = iv_pitchfamily. - <font>-charset = iv_charset. - endmethod. "modify_lec_fonts - - - method set_defaults. - clear font_scheme. - font_scheme-name = 'Office'. - font_scheme-major-latin-typeface = 'Calibri Light'. - font_scheme-major-latin-panose = '020F0302020204030204'. - modify_font( iv_type = c_major iv_script = 'Jpan' iv_typeface = 'MS Pゴシック' ). - modify_font( iv_type = c_major iv_script = 'Hang' iv_typeface = '맑은 고딕' ). - modify_font( iv_type = c_major iv_script = 'Hans' iv_typeface = '宋体' ). - modify_font( iv_type = c_major iv_script = 'Hant' iv_typeface = '新細明體' ). - modify_font( iv_type = c_major iv_script = 'Arab' iv_typeface = 'Times New Roman' ). - modify_font( iv_type = c_major iv_script = 'Hebr' iv_typeface = 'Times New Roman' ). - modify_font( iv_type = c_major iv_script = 'Thai' iv_typeface = 'Tahoma' ). - modify_font( iv_type = c_major iv_script = 'Ethi' iv_typeface = 'Nyala' ). - modify_font( iv_type = c_major iv_script = 'Beng' iv_typeface = 'Vrinda' ). - modify_font( iv_type = c_major iv_script = 'Gujr' iv_typeface = 'Shruti' ). - modify_font( iv_type = c_major iv_script = 'Khmr' iv_typeface = 'MoolBoran' ). - modify_font( iv_type = c_major iv_script = 'Knda' iv_typeface = 'Tunga' ). - modify_font( iv_type = c_major iv_script = 'Guru' iv_typeface = 'Raavi' ). - modify_font( iv_type = c_major iv_script = 'Cans' iv_typeface = 'Euphemia' ). - modify_font( iv_type = c_major iv_script = 'Cher' iv_typeface = 'Plantagenet Cherokee' ). - modify_font( iv_type = c_major iv_script = 'Yiii' iv_typeface = 'Microsoft Yi Baiti' ). - modify_font( iv_type = c_major iv_script = 'Tibt' iv_typeface = 'Microsoft Himalaya' ). - modify_font( iv_type = c_major iv_script = 'Thaa' iv_typeface = 'MV Boli' ). - modify_font( iv_type = c_major iv_script = 'Deva' iv_typeface = 'Mangal' ). - modify_font( iv_type = c_major iv_script = 'Telu' iv_typeface = 'Gautami' ). - modify_font( iv_type = c_major iv_script = 'Taml' iv_typeface = 'Latha' ). - modify_font( iv_type = c_major iv_script = 'Syrc' iv_typeface = 'Estrangelo Edessa' ). - modify_font( iv_type = c_major iv_script = 'Orya' iv_typeface = 'Kalinga' ). - modify_font( iv_type = c_major iv_script = 'Mlym' iv_typeface = 'Kartika' ). - modify_font( iv_type = c_major iv_script = 'Laoo' iv_typeface = 'DokChampa' ). - modify_font( iv_type = c_major iv_script = 'Sinh' iv_typeface = 'Iskoola Pota' ). - modify_font( iv_type = c_major iv_script = 'Mong' iv_typeface = 'Mongolian Baiti' ). - modify_font( iv_type = c_major iv_script = 'Viet' iv_typeface = 'Times New Roman' ). - modify_font( iv_type = c_major iv_script = 'Uigh' iv_typeface = 'Microsoft Uighur' ). - modify_font( iv_type = c_major iv_script = 'Geor' iv_typeface = 'Sylfaen' ). - - font_scheme-minor-latin-typeface = 'Calibri'. - font_scheme-minor-latin-panose = '020F0502020204030204'. - modify_font( iv_type = c_minor iv_script = 'Jpan' iv_typeface = 'MS Pゴシック' ). - modify_font( iv_type = c_minor iv_script = 'Hang' iv_typeface = '맑은 고딕' ). - modify_font( iv_type = c_minor iv_script = 'Hans' iv_typeface = '宋体' ). - modify_font( iv_type = c_minor iv_script = 'Hant' iv_typeface = '新細明體' ). - modify_font( iv_type = c_minor iv_script = 'Arab' iv_typeface = 'Arial' ). - modify_font( iv_type = c_minor iv_script = 'Hebr' iv_typeface = 'Arial' ). - modify_font( iv_type = c_minor iv_script = 'Thai' iv_typeface = 'Tahoma' ). - modify_font( iv_type = c_minor iv_script = 'Ethi' iv_typeface = 'Nyala' ). - modify_font( iv_type = c_minor iv_script = 'Beng' iv_typeface = 'Vrinda' ). - modify_font( iv_type = c_minor iv_script = 'Gujr' iv_typeface = 'Shruti' ). - modify_font( iv_type = c_minor iv_script = 'Khmr' iv_typeface = 'DaunPenh' ). - modify_font( iv_type = c_minor iv_script = 'Knda' iv_typeface = 'Tunga' ). - modify_font( iv_type = c_minor iv_script = 'Guru' iv_typeface = 'Raavi' ). - modify_font( iv_type = c_minor iv_script = 'Cans' iv_typeface = 'Euphemia' ). - modify_font( iv_type = c_minor iv_script = 'Cher' iv_typeface = 'Plantagenet Cherokee' ). - modify_font( iv_type = c_minor iv_script = 'Yiii' iv_typeface = 'Microsoft Yi Baiti' ). - modify_font( iv_type = c_minor iv_script = 'Tibt' iv_typeface = 'Microsoft Himalaya' ). - modify_font( iv_type = c_minor iv_script = 'Thaa' iv_typeface = 'MV Boli' ). - modify_font( iv_type = c_minor iv_script = 'Deva' iv_typeface = 'Mangal' ). - modify_font( iv_type = c_minor iv_script = 'Telu' iv_typeface = 'Gautami' ). - modify_font( iv_type = c_minor iv_script = 'Taml' iv_typeface = 'Latha' ). - modify_font( iv_type = c_minor iv_script = 'Syrc' iv_typeface = 'Estrangelo Edessa' ). - modify_font( iv_type = c_minor iv_script = 'Orya' iv_typeface = 'Kalinga' ). - modify_font( iv_type = c_minor iv_script = 'Mlym' iv_typeface = 'Kartika' ). - modify_font( iv_type = c_minor iv_script = 'Laoo' iv_typeface = 'DokChampa' ). - modify_font( iv_type = c_minor iv_script = 'Sinh' iv_typeface = 'Iskoola Pota' ). - modify_font( iv_type = c_minor iv_script = 'Mong' iv_typeface = 'Mongolian Baiti' ). - modify_font( iv_type = c_minor iv_script = 'Viet' iv_typeface = 'Arial' ). - modify_font( iv_type = c_minor iv_script = 'Uigh' iv_typeface = 'Microsoft Uighur' ). - modify_font( iv_type = c_minor iv_script = 'Geor' iv_typeface = 'Sylfaen' ). - - endmethod. "set_defaults - - - - method set_name. - font_scheme-name = iv_name. - endmethod. "set_name - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes - - - - method build_xml. - data: lo_theme_element type ref to if_ixml_element. - data: lo_theme type ref to if_ixml_element. - data: lo_theme_objdef type ref to if_ixml_element. - check io_document is bound. - lo_theme ?= io_document->get_root_element( ). - check lo_theme is bound. - if objectdefaults is initial. - lo_theme_objdef ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix - name = zcl_excel_theme=>c_theme_object_def - parent = lo_theme ). - else. - lo_theme->append_child( new_child = objectdefaults ). - endif. - endmethod. "build_xml - - - - method load. - "! so far copy only existing values - objectdefaults ?= io_object_def. - endmethod. "load - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - METHOD create_xl_sharedstrings. -* -* Redefinition using simple transformation instead of CL_IXML -* -** Constant node name - - TYPES: - BEGIN OF ts_root, - count TYPE string, - unique_count TYPE string, - END OF ts_root. - - DATA: - lv_last_allowed_char TYPE char1, - lv_invalid TYPE string. - - DATA: - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: - ls_root TYPE ts_root, - lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_sytabix TYPE sytabix. - - FIELD-SYMBOLS: - <sheet_content> TYPE zexcel_s_cell_data. - -********************************************************************** -* STEP 0: Build Regex for invalid characters - CASE cl_abap_char_utilities=>charsize. - WHEN 1.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 255 ). " FF in non-Unicode - WHEN 2.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 65533 )." FFFD in Unicode - ENDCASE. - CONCATENATE '[^\n\t\r -' lv_last_allowed_char ']' INTO lv_invalid. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL " delete formula content - OR data_type NE 's'. " MvC: Only shared strings - - ls_root-count = lines( lt_cell_data ). - CONDENSE ls_root-count. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - ls_root-unique_count = lines( lt_cell_data ). - CONDENSE ls_root-unique_count. - - LOOP AT lt_cell_data ASSIGNING <sheet_content>. - - lv_sytabix = sy-tabix - 1. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <sheet_content>-cell_value TO ls_shared_string-string_value. - REPLACE ALL OCCURRENCES OF REGEX lv_invalid - IN ls_shared_string-string_value WITH ` `. - APPEND ls_shared_string TO shared_strings. - - ENDLOOP. - -********************************************************************** -* STEP 2: Create XML - - CALL TRANSFORMATION zexcel_tr_shared_strings - SOURCE root = ls_root - shared_strings = shared_strings - OPTIONS xml_header = 'full' - RESULT XML ep_content. - - -ENDMETHOD. - - - METHOD create_xl_sheet. -* -* Build Sheet#.xml with Simple Transformation ZEXCEL_TR_SHEET -* -* This is an adaption of ZCL_EXCEL_WRITER_2007. -* Not all features are supported, notably the autofilter settings, -* conditional formatting and sheet protection. -* -* Bug reports to marcus.voncube AT deutschebahn.com -* - TYPES: - lty_bool TYPE c LENGTH 5. - - CONSTANTS: - lc_false TYPE lty_bool VALUE 'false', "#EC NEEDED - lc_true TYPE lty_bool VALUE 'true', - lc_zero TYPE c LENGTH 1 VALUE '0', - lc_one TYPE c LENGTH 1 VALUE '1', - lc_default_col_width TYPE float VALUE '9.10'. - - TYPES: - BEGIN OF lty_column, - min TYPE i, - max TYPE i, - width TYPE float, - hidden TYPE lty_bool, - customwidth TYPE lty_bool, - bestfit TYPE lty_bool, - collapsed TYPE lty_bool, - outlinelevel TYPE i, - style TYPE i, - END OF lty_column, - - BEGIN OF lty_row, - row TYPE i, - index TYPE i, - spans TYPE c LENGTH 11, "12345:12345" - hidden TYPE lty_bool, - customheight TYPE lty_bool, - height TYPE float, - collapsed TYPE lty_bool, - outlinelevel TYPE i, - customformat TYPE lty_bool, - style TYPE i, - END OF lty_row, - - BEGIN OF lty_mergecell, - ref TYPE c LENGTH 21, "AAA1234567:BBB1234567" - END OF lty_mergecell, - - BEGIN OF lty_hyperlink, - ref TYPE string, - location TYPE string, - r_id TYPE string, - END OF lty_hyperlink, - - BEGIN OF lty_table, - r_id TYPE string, - END OF lty_table, - - BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, - END OF lty_table_area, - - BEGIN OF ty_missing_columns, - first_column TYPE zexcel_cell_column, - last_column TYPE zexcel_cell_column, - END OF ty_missing_columns. - -* -* Root node for transformation -* - DATA: - BEGIN OF l_worksheet, - dimension TYPE string, - tabcolor TYPE string, - summarybelow TYPE c, - summaryright TYPE c, - fittopage TYPE c, - showzeros TYPE c, - tabselected TYPE c, - zoomscale TYPE i, - zoomscalenormal TYPE i, - zoomscalepageview TYPE i, - zoomscalesheetview TYPE i, - workbookviewid TYPE c, - showgridlines TYPE c, - showrowcolheaders TYPE c, - activepane TYPE string, - state TYPE string, - ysplit TYPE i, - xsplit TYPE i, - topleftcell TYPE c LENGTH 10, - activecell TYPE c LENGTH 10, - customheight TYPE lty_bool, - defaultrowheight TYPE float, - defaultcolwidth TYPE float, - outlinelevelrow TYPE i, - outlinelevelcol TYPE i, - cols TYPE STANDARD TABLE OF lty_column, - rows TYPE STANDARD TABLE OF lty_row, - mergecells_count TYPE i, - mergecells TYPE STANDARD TABLE OF lty_mergecell, - hyperlinks_count TYPE i, - hyperlinks TYPE STANDARD TABLE OF lty_hyperlink, - BEGIN OF printoptions, - gridlines TYPE lty_bool, - horizontalcentered TYPE lty_bool, - verticalcentered TYPE lty_bool, - END OF printoptions, - BEGIN OF pagemargins, - left TYPE zexcel_dec_8_2, - right TYPE zexcel_dec_8_2, - top TYPE zexcel_dec_8_2, - bottom TYPE zexcel_dec_8_2, - header TYPE zexcel_dec_8_2, - footer TYPE zexcel_dec_8_2, - END OF pagemargins, - BEGIN OF pagesetup, - blackandwhite TYPE c, - cellcomments TYPE string, - copies TYPE i, - draft TYPE c, - errors TYPE string, - firstpagenumber TYPE i, - fittopage TYPE c, - fittoheight TYPE i, - fittowidth TYPE i, - horizontaldpi TYPE i, - orientation TYPE string, - pageorder TYPE string, - paperheight TYPE string, - papersize TYPE i, - paperwidth TYPE string, - scale TYPE i, - usefirstpagenumber TYPE c, - useprinterdefaults TYPE c, - verticaldpi TYPE i, - END OF pagesetup, - BEGIN OF headerfooter, - differentoddeven TYPE c, - oddheader TYPE string, - oddfooter TYPE string, - evenheader TYPE string, - evenfooter TYPE string, - END OF headerfooter, - drawings TYPE string, - tables_count TYPE i, - tables TYPE STANDARD TABLE OF lty_table, - END OF l_worksheet. - -* -* Local data -* - DATA: - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, - default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lv_value TYPE string, - lv_index TYPE i, - lv_spans TYPE string, - lt_range_merge TYPE string_table, - lv_column TYPE zexcel_cell_column, - lv_style_guid TYPE zexcel_cell_style, - ls_last_row TYPE zexcel_s_cell_data, - lv_freeze_cell_row TYPE zexcel_cell_row, - lv_freeze_cell_column TYPE zexcel_cell_column, - lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, - row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - lv_relation_id TYPE i VALUE 0, - outline_level_row TYPE i VALUE 0, - outline_level_col TYPE i VALUE 0, - col_count TYPE int4, - lt_table_areas TYPE SORTED TABLE OF lty_table_area - WITH NON-UNIQUE KEY left right top bottom, - ls_table_area LIKE LINE OF lt_table_areas, - lts_sorted_columns TYPE SORTED TABLE OF zexcel_cell_column - WITH UNIQUE KEY table_line, - t_missing_columns TYPE STANDARD TABLE OF ty_missing_columns - WITH NON-UNIQUE DEFAULT KEY, - missing_column LIKE LINE OF t_missing_columns, - lo_link TYPE REF TO zcl_excel_hyperlink, - lo_drawings TYPE REF TO zcl_excel_drawings. - - FIELD-SYMBOLS: - <sheet_content> TYPE zexcel_s_cell_data, - <range_merge> LIKE LINE OF lt_range_merge, - <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio, - <col> TYPE lty_column, - <row> TYPE lty_row, - <hyperlink> TYPE lty_hyperlink, - <mergecell> TYPE lty_mergecell, - <table> TYPE lty_table. - -********************************************************************** -* STEP 1: Fill root node -* - l_worksheet-tabcolor = io_worksheet->tabcolor-rgb. - l_worksheet-summarybelow = io_worksheet->zif_excel_sheet_properties~summarybelow. - l_worksheet-summaryright = io_worksheet->zif_excel_sheet_properties~summaryright. - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - l_worksheet-fittopage = lc_one. - ENDIF. - - l_worksheet-dimension = io_worksheet->get_dimension_range( ). - - IF io_worksheet->zif_excel_sheet_properties~show_zeros EQ abap_true. - l_worksheet-showzeros = lc_one. - ELSE. - l_worksheet-showzeros = lc_zero. - ENDIF. - - IF iv_active = abap_true - OR io_worksheet->zif_excel_sheet_properties~selected EQ abap_true. - l_worksheet-tabselected = lc_one. - ELSE. - l_worksheet-tabselected = lc_zero. - ENDIF. - - IF io_worksheet->zif_excel_sheet_properties~zoomscale GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale = 10. - ENDIF. - l_worksheet-zoomscale = io_worksheet->zif_excel_sheet_properties~zoomscale. - - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_normal LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 10. - ENDIF. - l_worksheet-zoomscalenormal = io_worksheet->zif_excel_sheet_properties~zoomscale_normal. - ENDIF. - - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 10. - ENDIF. - l_worksheet-zoomscalepageview = io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview. - ENDIF. - - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 10. - ENDIF. - l_worksheet-zoomscalesheetview = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. - ENDIF. - - l_worksheet-workbookviewid = lc_zero. - - IF io_worksheet->show_gridlines = abap_true. - l_worksheet-showgridlines = lc_one. - ELSE. - l_worksheet-showgridlines = lc_zero. - ENDIF. - - IF io_worksheet->show_rowcolheaders = abap_true. - l_worksheet-showrowcolheaders = lc_one. - ELSE. - l_worksheet-showrowcolheaders = lc_zero. - ENDIF. - -* -* Freeze -* - io_worksheet->get_freeze_cell( - IMPORTING ep_row = lv_freeze_cell_row - ep_column = lv_freeze_cell_column ). - - IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL. - IF lv_freeze_cell_row > 1. - l_worksheet-ysplit = lv_freeze_cell_row - 1. - ENDIF. - - IF lv_freeze_cell_column > 1. - lv_value = lv_freeze_cell_column - 1. - l_worksheet-xsplit = lv_freeze_cell_row - 1. - ENDIF. - - lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ). - CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value. - l_worksheet-topleftcell = lv_value. - - l_worksheet-activepane = 'bottomRight'. - l_worksheet-state = 'frozen'. - ENDIF. - - l_worksheet-activecell = io_worksheet->get_active_cell( ). - -* -* Row and column info -* - column_dimensions[] = io_worksheet->get_column_dimensions( ). - row_dimensions[] = io_worksheet->get_row_dimensions( ). - - IF NOT column_dimensions IS INITIAL. - io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). - ENDIF. - - default_row_dimension = io_worksheet->get_default_row_dimension( ). - IF default_row_dimension IS BOUND. - IF default_row_dimension->get_row_height( ) >= 0. - l_worksheet-customheight = lc_true. - lv_value = default_row_dimension->get_row_height( ). - ELSE. - lv_value = '12.75'. - ENDIF. - ELSE. - lv_value = '12.75'. - ENDIF. - CONDENSE lv_value. - l_worksheet-defaultrowheight = lv_value. - - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - l_worksheet-defaultcolwidth = default_col_dimension->get_width( ). - ENDIF. - ENDIF. - - LOOP AT row_dimensions ASSIGNING <row_dimension>. - IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. - l_worksheet-outlinelevelrow = <row_dimension>-row_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - - LOOP AT column_dimensions ASSIGNING <column_dimension>. - IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. - l_worksheet-outlinelevelcol = <column_dimension>-column_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - -* -* Set column information (width, style, ...) -* - LOOP AT column_dimensions ASSIGNING <column_dimension>. - APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING <col>. - <col>-min = <col>-max = <column_dimension>-column_dimension->get_column_index( ). - <col>-width = <column_dimension>-column_dimension->get_width( ). - IF <col>-width < 0. - <col>-width = lc_default_col_width. - ENDIF. - IF <column_dimension>-column_dimension->get_visible( ) = abap_false. - <col>-hidden = lc_true. - ENDIF. - IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true. - <col>-bestfit = lc_true. - ENDIF. - IF default_col_dimension IS BOUND. - IF <column_dimension>-column_dimension->get_width( ) - <> default_col_dimension->get_width( ). - <col>-customwidth = lc_true. - ENDIF. - ELSE. - <col>-customwidth = lc_true. - ENDIF. - IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true. - <col>-collapsed = lc_true. - ENDIF. - <col>-outlinelevel = <column_dimension>-column_dimension->get_outline_level( ). - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). - <col>-style = me->excel->get_style_index_in_styles( lv_style_guid ) - 1. - ENDLOOP. - -* -* Missing columns -* -* First collect columns that were already handled before. -* The rest has to be inserted now. -* - LOOP AT column_dimensions ASSIGNING <column_dimension>. - lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-column ). - INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. - -* -* Now find all columns that were missing so far -* - missing_column-first_column = 1. - - LOOP AT lts_sorted_columns INTO lv_column. - IF lv_column > missing_column-first_column. - missing_column-last_column = lv_column - 1. - APPEND missing_column TO t_missing_columns. - ENDIF. - missing_column-first_column = lv_column + 1. - ENDLOOP. - - missing_column-last_column = zcl_excel_common=>c_excel_sheet_max_col. - APPEND missing_column TO t_missing_columns. - -* -* Now apply stylesetting and other defaults -* - LOOP AT t_missing_columns INTO missing_column. - APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING <col>. - <col>-min = missing_column-first_column. - <col>-max = missing_column-last_column. - IF default_col_dimension IS BOUND AND default_col_dimension->get_width( ) >= 0. - <col>-width = default_col_dimension->get_width( ). - ELSE. - <col>-width = lc_default_col_width. - ENDIF. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - <col>-style = me->excel->get_style_index_in_styles( lv_style_guid ) - 1. - ENDLOOP. - -* -* Build table to hold all table-areas attached to this sheet -* - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). - ls_table_area-right = lo_table->get_right_column_integer( ). - ls_table_area-top = lo_table->settings-top_left_row. - ls_table_area-bottom = lo_table->get_bottom_row_integer( ). - INSERT ls_table_area INTO TABLE lt_table_areas. - ENDWHILE. - -* -* Build sheet data node -* -* Spans is constant amongst all rows -* - col_count = io_worksheet->get_highest_column( ). - lv_spans = col_count. - CONCATENATE '1:' lv_spans INTO lv_spans. - CONDENSE lv_spans. - - LOOP AT io_worksheet->sheet_content ASSIGNING <sheet_content>. - - IF ls_last_row-cell_row NE <sheet_content>-cell_row. -* -* Fill row information. -* Cell data is filled in by callback GET_CELLS called from transformation -* - lv_index = sy-tabix. - APPEND INITIAL LINE TO l_worksheet-rows ASSIGNING <row>. - <row>-row = <sheet_content>-cell_row. - <row>-index = lv_index. - <row>-spans = lv_spans. - -* -* Row dimension attributes -* - row_dimension = io_worksheet->get_row_dimension( <sheet_content>-cell_row ). - IF row_dimension->get_visible( ) = abap_false. - <row>-hidden = lc_true. - ENDIF. - - IF row_dimension->get_row_height( ) >= 0. - <row>-customheight = lc_one. - <row>-height = row_dimension->get_row_height( ). - ENDIF. - -* -* Collapsed -* - IF row_dimension->get_collapsed( ) = abap_true. - <row>-collapsed = lc_true. - ENDIF. - -* -* Outline level -* - <row>-outlinelevel = row_dimension->get_outline_level( ). - -* -* Style -* - <row>-style = row_dimension->get_xf_index( ). - IF <row>-style <> 0. - <row>-customformat = lc_one. - ENDIF. - ENDIF. - - ls_last_row = <sheet_content>. - ENDLOOP. - -* -* Merged cells -* - lt_range_merge = io_worksheet->get_merge( ). - IF lt_range_merge IS NOT INITIAL. - l_worksheet-mergecells_count = lines( lt_range_merge ). - - LOOP AT lt_range_merge ASSIGNING <range_merge>. - APPEND INITIAL LINE TO l_worksheet-mergecells ASSIGNING <mergecell>. - <mergecell>-ref = <range_merge>. - io_worksheet->delete_merge( ). - ENDLOOP. - ENDIF. - -* -* Hyperlinks -* - l_worksheet-hyperlinks_count = io_worksheet->get_hyperlinks_size( ). - IF l_worksheet-hyperlinks_count > 0. - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - - APPEND INITIAL LINE TO l_worksheet-hyperlinks ASSIGNING <hyperlink>. - <hyperlink>-ref = lo_link->get_ref( ). - IF lo_link->is_internal( ) = abap_true. - <hyperlink>-location = lo_link->get_url( ). - ELSE. - ADD 1 TO lv_relation_id. - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - <hyperlink>-r_id = lv_value. - ENDIF. - ENDWHILE. - ENDIF. - -* -* Print options -* - IF io_worksheet->print_gridlines = abap_true. - l_worksheet-printoptions-gridlines = lc_true. - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_centered = abap_true. - l_worksheet-printoptions-horizontalcentered = lc_true. - ENDIF. - - IF io_worksheet->sheet_setup->vertical_centered = abap_true. - l_worksheet-printoptions-verticalcentered = lc_true. - ENDIF. - -* -* Page margins -* - l_worksheet-pagemargins-left = io_worksheet->sheet_setup->margin_left. - l_worksheet-pagemargins-right = io_worksheet->sheet_setup->margin_right. - l_worksheet-pagemargins-top = io_worksheet->sheet_setup->margin_top. - l_worksheet-pagemargins-bottom = io_worksheet->sheet_setup->margin_bottom. - l_worksheet-pagemargins-header = io_worksheet->sheet_setup->margin_header. - l_worksheet-pagemargins-footer = io_worksheet->sheet_setup->margin_footer. - -* -* Page setup -* - l_worksheet-pagesetup-cellcomments = io_worksheet->sheet_setup->cell_comments. - l_worksheet-pagesetup-copies = io_worksheet->sheet_setup->copies. - l_worksheet-pagesetup-firstpagenumber = io_worksheet->sheet_setup->first_page_number. - l_worksheet-pagesetup-fittopage = io_worksheet->sheet_setup->fit_to_page. - l_worksheet-pagesetup-fittoheight = io_worksheet->sheet_setup->fit_to_height. - l_worksheet-pagesetup-fittowidth = io_worksheet->sheet_setup->fit_to_width. - l_worksheet-pagesetup-horizontaldpi = io_worksheet->sheet_setup->horizontal_dpi. - l_worksheet-pagesetup-orientation = io_worksheet->sheet_setup->orientation. - l_worksheet-pagesetup-pageorder = io_worksheet->sheet_setup->page_order. - l_worksheet-pagesetup-paperheight = io_worksheet->sheet_setup->paper_height. - l_worksheet-pagesetup-papersize = io_worksheet->sheet_setup->paper_size. - l_worksheet-pagesetup-paperwidth = io_worksheet->sheet_setup->paper_width. - l_worksheet-pagesetup-scale = io_worksheet->sheet_setup->scale. - l_worksheet-pagesetup-usefirstpagenumber = io_worksheet->sheet_setup->use_first_page_num. - l_worksheet-pagesetup-verticaldpi = io_worksheet->sheet_setup->vertical_dpi. - - IF io_worksheet->sheet_setup->black_and_white IS NOT INITIAL. - l_worksheet-pagesetup-blackandwhite = lc_one. - ENDIF. - - IF io_worksheet->sheet_setup->draft IS NOT INITIAL. - l_worksheet-pagesetup-draft = lc_one. - ENDIF. - - IF io_worksheet->sheet_setup->errors IS NOT INITIAL. - l_worksheet-pagesetup-errors = io_worksheet->sheet_setup->errors. - ENDIF. - - IF io_worksheet->sheet_setup->use_printer_defaults IS NOT INITIAL. - l_worksheet-pagesetup-useprinterdefaults = lc_one. - ENDIF. - -* -* Header and footer -* - IF io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - l_worksheet-headerfooter-differentoddeven = lc_one. - ENDIF. - - io_worksheet->sheet_setup->get_header_footer_string( - IMPORTING - ep_odd_header = l_worksheet-headerfooter-oddheader - ep_odd_footer = l_worksheet-headerfooter-oddfooter - ep_even_header = l_worksheet-headerfooter-evenheader - ep_even_footer = l_worksheet-headerfooter-evenfooter ). - -* -* Drawings -* - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - ADD 1 TO lv_relation_id. - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO l_worksheet-drawings. - ENDIF. - -* -* Tables -* - l_worksheet-tables_count = io_worksheet->get_tables_size( ). - IF l_worksheet-tables_count > 0. - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND INITIAL LINE TO l_worksheet-tables ASSIGNING <table>. - ADD 1 TO lv_relation_id. - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO <table>-r_id. - ENDWHILE. - ENDIF. - -********************************************************************** -* STEP 2: Create XML - - me->worksheet = io_worksheet. "Neccessary for callback GET_CELL - - CALL TRANSFORMATION zexcel_tr_sheet - SOURCE worksheet = l_worksheet - cells = me->cells - writer = me - OPTIONS xml_header = 'full' - RESULT XML ep_content. - -ENDMETHOD. "CREATE_XL_SHEET - - - - - METHOD get_cells. -* -* Callback method from transformation ZEXCEL_TR_SHEET -* -* The method fills the data cells for each row. -* This saves memory if there are many rows. -* - DATA: - lv_cell_style TYPE zexcel_cell_style. - - FIELD-SYMBOLS: - <cell> TYPE ty_cell, - <content> TYPE zexcel_s_cell_data, - <style> TYPE zexcel_s_styles_mapping. - - CLEAR cells. - - LOOP AT worksheet->sheet_content FROM i_index ASSIGNING <content>. - IF <content>-cell_row <> i_row. -* -* End of row -* - EXIT. - ENDIF. - -* -* Determine style index -* - IF lv_cell_style <> <content>-cell_style. - lv_cell_style = <content>-cell_style. - UNASSIGN <style>. - IF lv_cell_style IS NOT INITIAL. - READ TABLE styles_mapping ASSIGNING <style> WITH KEY guid = lv_cell_style. - ENDIF. - ENDIF. -* -* Add a new cell -* - APPEND INITIAL LINE TO cells ASSIGNING <cell>. - <cell>-name = <content>-cell_coords. - <cell>-formula = <content>-cell_formula. - <cell>-type = <content>-data_type. - IF <cell>-type = 's'. - <cell>-value = me->get_shared_string_index( <content>-cell_value ). - ELSE. - <cell>-value = <content>-cell_value. - ENDIF. - IF <style> IS ASSIGNED. - <cell>-style = <style>-style. - ELSE. - <cell>-style = -1. - ENDIF. - - ENDLOOP. - -ENDMETHOD. - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - METHOD constructor. - worksheet = io_sheet. -ENDMETHOD. - - - - - METHOD get_column_filter. - - DATA: ls_filter LIKE LINE OF me->mt_filters. - - READ TABLE me->mt_filters REFERENCE INTO rr_filter WITH TABLE KEY column = i_column. - IF sy-subrc <> 0. - ls_filter-column = i_column. - INSERT ls_filter INTO TABLE me->mt_filters REFERENCE INTO rr_filter. - ENDIF. - -ENDMETHOD. - - - - METHOD get_filter_area. - - validate_area( ). - - rs_area = filter_area. - -ENDMETHOD. - - - - METHOD get_filter_range. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - - CONCATENATE l_col_start_c l_row_start_c ':' l_col_end_c l_row_end_c INTO r_range. - -ENDMETHOD. - - - - METHOD get_filter_reference. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - l_value = worksheet->get_title( ) . - - r_ref = zcl_excel_common=>escape_string( ip_value = l_value ). - - CONCATENATE r_ref '!$' l_col_start_c '$' l_row_start_c ':$' l_col_end_c '$' l_row_end_c INTO r_ref. - -ENDMETHOD. - - - - METHOD get_values. - - FIELD-SYMBOLS: <ls_filter> LIKE LINE OF me->mt_filters, - <ls_value> LIKE LINE OF <ls_filter>-t_values. - - DATA: ls_filter LIKE LINE OF rt_filter. - - LOOP AT me->mt_filters ASSIGNING <ls_filter> WHERE rule = mc_filter_rule_single_values. - - ls_filter-column = <ls_filter>-column. - LOOP AT <ls_filter>-t_values ASSIGNING <ls_value>. - ls_filter-value = <ls_value>. - APPEND ls_filter TO rt_filter. - ENDLOOP. - - ENDLOOP. - -ENDMETHOD. - - - - - METHOD is_row_hidden. - - - DATA: lr_filter TYPE REF TO ts_filter, - lv_col TYPE i, - ls_value TYPE zexcel_s_autofilter_values. - - FIELD-SYMBOLS: <ls_filter> TYPE ts_filter. - - rv_is_hidden = abap_false. - -*--------------------------------------------------------------------* -* 1st row of filter area is never hidden, because here the filter -* symbol is being shown -*--------------------------------------------------------------------* - IF iv_row = me->filter_area-row_start. - RETURN. - ENDIF. - - - lv_col = me->filter_area-col_start. - - - WHILE lv_col <= me->filter_area-col_end. - - lr_filter = me->get_column_filter( lv_col ). - ASSIGN lr_filter->* TO <ls_filter>. - - CASE <ls_filter>-rule. - - WHEN mc_filter_rule_single_values. - rv_is_hidden = me->is_row_hidden_single_values( iv_row = iv_row - iv_col = lv_col - is_filter = <ls_filter> ). - - WHEN mc_filter_rule_text_pattern. - rv_is_hidden = me->is_row_hidden_text_pattern( iv_row = iv_row - iv_col = lv_col - is_filter = <ls_filter> ). - - ENDCASE. - - IF rv_is_hidden = abap_true. - RETURN. - ENDIF. - - - ADD 1 TO lv_col. - - ENDWHILE. - - -ENDMETHOD. - - - - - - - METHOD is_row_hidden_single_values. - - - DATA: lv_value TYPE string. - - FIELD-SYMBOLS: <ls_sheet_content> LIKE LINE OF me->worksheet->sheet_content. - - rv_is_hidden = abap_false. " Default setting is NOT HIDDEN = is in filter range - -*--------------------------------------------------------------------* -* No filter values --> only symbol should be shown but nothing is being hidden -*--------------------------------------------------------------------* - IF is_filter-t_values IS INITIAL. - RETURN. - ENDIF. - -*--------------------------------------------------------------------* -* Get value of cell -*--------------------------------------------------------------------* - READ TABLE me->worksheet->sheet_content ASSIGNING <ls_sheet_content> WITH TABLE KEY cell_row = iv_row - cell_column = iv_col. - IF sy-subrc = 0. - lv_value = <ls_sheet_content>-cell_value. - ELSE. - CLEAR lv_value. - ENDIF. - -*--------------------------------------------------------------------* -* Check whether it is affected by filter -* this needs to be extended if we support other filtertypes -* other than single values -*--------------------------------------------------------------------* - READ TABLE is_filter-t_values TRANSPORTING NO FIELDS WITH TABLE KEY table_line = lv_value. - IF sy-subrc <> 0. - rv_is_hidden = abap_true. - RETURN. - ENDIF. - -ENDMETHOD. - - - - - - - METHOD is_row_hidden_text_pattern. - - - - DATA: lv_value TYPE string. - - FIELD-SYMBOLS: <ls_sheet_content> LIKE LINE OF me->worksheet->sheet_content. - - rv_is_hidden = abap_false. " Default setting is NOT HIDDEN = is in filter range - -*--------------------------------------------------------------------* -* Get value of cell -*--------------------------------------------------------------------* - READ TABLE me->worksheet->sheet_content ASSIGNING <ls_sheet_content> WITH TABLE KEY cell_row = iv_row - cell_column = iv_col. - IF sy-subrc = 0. - lv_value = <ls_sheet_content>-cell_value. - ELSE. - CLEAR lv_value. - ENDIF. - -*--------------------------------------------------------------------* -* Check whether it is affected by filter -* this needs to be extended if we support other filtertypes -* other than single values -*--------------------------------------------------------------------* - IF lv_value NOT IN is_filter-tr_textfilter1. - rv_is_hidden = abap_true. - RETURN. - ENDIF. - -ENDMETHOD. - - - - METHOD set_filter_area. - - filter_area = is_area. - -ENDMETHOD. - - - - - - - METHOD set_text_filter. -* see method documentation how to use this - - DATA: lr_filter TYPE REF TO ts_filter, - ls_value1 TYPE LINE OF ts_filter-tr_textfilter1. - - FIELD-SYMBOLS: <ls_filter> TYPE ts_filter. - - - lr_filter = me->get_column_filter( i_column ). - ASSIGN lr_filter->* TO <ls_filter>. - - <ls_filter>-rule = mc_filter_rule_text_pattern. - CLEAR <ls_filter>-tr_textfilter1. - - IF iv_textfilter1 CA '*+'. " Pattern - ls_value1-sign = 'I'. - ls_value1-option = 'CP'. - ls_value1-low = iv_textfilter1. - ELSE. - ls_value1-sign = 'I'. - ls_value1-option = 'EQ'. - ls_value1-low = iv_textfilter1. - ENDIF. - APPEND ls_value1 TO <ls_filter>-tr_textfilter1. - -ENDMETHOD. - - - - - - - - - - - - - - - - - - - - - - - - METHOD set_value. - - DATA: lr_filter TYPE REF TO ts_filter, - ls_value TYPE zexcel_s_autofilter_values. - - FIELD-SYMBOLS: <ls_filter> TYPE ts_filter. - - - lr_filter = me->get_column_filter( i_column ). - ASSIGN lr_filter->* TO <ls_filter>. - - <ls_filter>-rule = mc_filter_rule_single_values. - - INSERT i_value INTO TABLE <ls_filter>-t_values. - -ENDMETHOD. - - - - METHOD set_values. - - FIELD-SYMBOLS: <ls_value> LIKE LINE OF it_values. - - LOOP AT it_values ASSIGNING <ls_value>. - - me->set_value( i_column = <ls_value>-column - i_value = <ls_value>-value ). - - ENDLOOP. - -ENDMETHOD. - - - METHOD validate_area. - DATA: l_col TYPE zexcel_cell_column, - l_row TYPE zexcel_cell_row. - - l_row = worksheet->get_highest_row( ) . - l_col = worksheet->get_highest_column( ) . - - IF filter_area IS INITIAL. - filter_area-row_start = 1. - filter_area-col_start = 1. - filter_area-row_end = l_row . - filter_area-col_end = l_col . - ENDIF. - - IF filter_area-row_start < 1. - filter_area-row_start = 1. - ENDIF. - IF filter_area-col_start < 1. - filter_area-col_start = 1. - ENDIF. - IF filter_area-row_end > l_row OR - filter_area-row_end < 1. - filter_area-row_end = l_row. - ENDIF. - IF filter_area-col_end > l_col OR - filter_area-col_end < 1. - filter_area-col_end = l_col. - ENDIF. - IF filter_area-row_start >= filter_area-row_end. - filter_area-row_start = filter_area-row_end - 1. - IF filter_area-row_start < 1. - filter_area-row_start = 1. - filter_area-row_end = 2. - ENDIF. - ENDIF. - IF filter_area-col_start > filter_area-col_end. - filter_area-col_start = filter_area-col_end. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - ranges->add( ip_range ). - endmethod. - - - method CLEAR. - ranges->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT ranges. - - endmethod. - - - - - method GET. - eo_range ?= ranges->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= ranges->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = ranges->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - ranges->remove( ip_range ). - endmethod. - - - - method SIZE. - ep_size = ranges->if_object_collection~size( ). - endmethod. - - - - - - - - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - TYPES: BEGIN OF t_relationship, - id TYPE string, - type TYPE string, - target TYPE string, - END OF t_relationship. - -* - CLASS lcl_abap_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: abap_zip TYPE REF TO cl_abap_zip. - METHODS constructor IMPORTING i_data TYPE xstring - RAISING zcx_excel. - ENDCLASS. "lcl_abap_zip_archive DEFINITION - -* - CLASS lcl_alternate_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: alternate_zip TYPE REF TO object. - METHODS constructor - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RAISING zcx_excel. - ENDCLASS. "lcl_alternate_zip_archive DEFINITION - -* - CLASS lcl_abap_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_abap_zip_archive - EXPORTING - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT abap_zip. - abap_zip->load( - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - CALL METHOD abap_zip->get - EXPORTING - name = i_filename - IMPORTING - content = r_content - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_abap_zip_archive IMPLEMENTATION - -* - CLASS lcl_alternate_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_alternate_zip_archive - EXPORTING - i_alternate_zip_class = i_alternate_zip_class - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT alternate_zip TYPE (i_alternate_zip_class). - TRY. - CALL METHOD alternate_zip->('LOAD') - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method LOAD missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - TRY. - CALL METHOD alternate_zip->('GET') - EXPORTING - name = i_filename - IMPORTING - content = r_content " Contents - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method GET missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_alternate_zip_archive IMPLEMENTATION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -* -class lcl_zip_archive definition abstract. - public section. - methods read abstract - importing i_filename type csequence - returning value(r_content) type xstring " Remember copy-on-write! - raising zcx_excel. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - IXML - - - - - - - METHOD zif_excel_reader~load. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Map Document Properties to ZCL_EXCEL -*--------------------------------------------------------------------* - - CONSTANTS: lcv_core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lcv_office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'. - - DATA: lo_rels TYPE REF TO if_ixml_document, - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship. - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller - -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets - -* §3 Extracting from this the path&file where the workbook is located -* Following is an example how this file could be set up -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* <Relationship Target="docProps/core.xml" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Id="rId2"/> -* <Relationship Target="xl/workbook.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Id="rId1"/> -* </Relationships> -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller -*--------------------------------------------------------------------* - IF iv_zcl_excel_classname IS INITIAL. - CREATE OBJECT r_excel. - ELSE. - CREATE OBJECT r_excel TYPE (iv_zcl_excel_classname). - ENDIF. - - zip = create_zip_archive( i_xlsx_binary = i_excel2007 - i_use_alternate_zip = i_use_alternate_zip ). - -*--------------------------------------------------------------------* -* §2 Get file in folderstructure -*--------------------------------------------------------------------* - lo_rels = get_ixml_from_zip_archive( '_rels/.rels' ). - -*--------------------------------------------------------------------* -* §3 Cycle through the Relationship Tags and use the ones we need -*--------------------------------------------------------------------* - lo_node ?= lo_rels->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_relationship ). - CASE ls_relationship-type. - - WHEN lcv_office_document. -*--------------------------------------------------------------------* -* Parse workbook - main part here -*--------------------------------------------------------------------* - load_workbook( iv_workbook_full_filename = ls_relationship-target - io_excel = r_excel ). - - WHEN lcv_core_properties. - " 2do§1 Map Document Properties to ZCL_EXCEL - - WHEN OTHERS. - - ENDCASE. - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - METHOD zif_excel_reader~load_file. - - DATA: lv_excel_data TYPE xstring. - -*--------------------------------------------------------------------* -* Read file into binary string -*--------------------------------------------------------------------* - IF i_from_applserver = abap_true. - lv_excel_data = read_from_applserver( i_filename ). - ELSE. - lv_excel_data = read_from_local_file( i_filename ). - ENDIF. - -*--------------------------------------------------------------------* -* Parse Excel data into ZCL_EXCEL object from binary string -*--------------------------------------------------------------------* - r_excel = zif_excel_reader~load( i_excel2007 = lv_excel_data - i_use_alternate_zip = i_use_alternate_zip - iv_zcl_excel_classname = iv_zcl_excel_classname ). - -ENDMETHOD. - - - - - - - METHOD create_zip_archive. - CASE i_use_alternate_zip. - WHEN space. - e_zip = lcl_abap_zip_archive=>create( i_xlsx_binary ). - WHEN OTHERS. - e_zip = lcl_alternate_zip_archive=>create( i_data = i_xlsx_binary - i_alternate_zip_class = i_use_alternate_zip ). - ENDCASE. -ENDMETHOD. - - - - - METHOD fill_row_outlines. - - TYPES: BEGIN OF lts_row_data, - row TYPE i, - outline_level TYPE i, - END OF lts_row_data, - ltt_row_data TYPE SORTED TABLE OF lts_row_data WITH UNIQUE KEY row. - - DATA: lt_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - - lt_row_data TYPE ltt_row_data, - ls_row_data LIKE LINE OF lt_row_data, - lt_collapse_rows TYPE HASHED TABLE OF i WITH UNIQUE KEY table_line, - - lv_collapsed TYPE abap_bool, - - lv_outline_level TYPE i, - lv_next_consecutive_row TYPE i, - lt_outline_rows TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - ls_outline_row LIKE LINE OF lt_outline_rows, - - lv_row_offset TYPE i, - lv_row_collapse_flag TYPE i. - - - FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF lt_row_dimensions, - <ls_row_data> LIKE LINE OF lt_row_data. - -* First collect information about outlines ( outline leven and collapsed state ) - lt_row_dimensions = io_worksheet->get_row_dimensions( ). - LOOP AT lt_row_dimensions ASSIGNING <ls_row_dimension>. - - ls_row_data-row = <ls_row_dimension>-row. - ls_row_data-outline_level = <ls_row_dimension>-row_dimension->get_outline_level( ). - IF ls_row_data-outline_level IS NOT INITIAL. - INSERT ls_row_data INTO TABLE lt_row_data. - ENDIF. - - lv_collapsed = <ls_row_dimension>-row_dimension->get_collapsed( ). - IF lv_collapsed = abap_true. - INSERT <ls_row_dimension>-row INTO TABLE lt_collapse_rows. - ENDIF. - - ENDLOOP. - -* Now parse this information - we need consecutive rows - any gap will create a new outline - DO 7 TIMES. " max number of outlines allowed - lv_outline_level = sy-index. - CLEAR lv_next_consecutive_row. - CLEAR ls_outline_row. - LOOP AT lt_row_data ASSIGNING <ls_row_data> WHERE outline_level >= lv_outline_level. - - IF lv_next_consecutive_row <> <ls_row_data>-row " A gap --> close all open outlines - AND lv_next_consecutive_row IS NOT INITIAL. " First time in loop. - INSERT ls_outline_row INTO TABLE lt_outline_rows. - CLEAR: ls_outline_row. - ENDIF. - - IF ls_outline_row-row_from IS INITIAL. - ls_outline_row-row_from = <ls_row_data>-row. - ENDIF. - ls_outline_row-row_to = <ls_row_data>-row. - - lv_next_consecutive_row = <ls_row_data>-row + 1. - - ENDLOOP. - IF ls_outline_row-row_from IS NOT INITIAL. - INSERT ls_outline_row INTO TABLE lt_outline_rows. - ENDIF. - ENDDO. - -* lt_outline_rows holds all outline information -* we now need to determine whether the outline is collapsed or not - LOOP AT lt_outline_rows INTO ls_outline_row. - - IF io_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. - lv_row_collapse_flag = ls_outline_row-row_from - 1. - ELSE. - lv_row_collapse_flag = ls_outline_row-row_to + 1. - ENDIF. - READ TABLE lt_collapse_rows TRANSPORTING NO FIELDS WITH TABLE KEY table_line = lv_row_collapse_flag. - IF sy-subrc = 0. - ls_outline_row-collapsed = abap_true. - ENDIF. - io_worksheet->set_row_outline( iv_row_from = ls_outline_row-row_from - iv_row_to = ls_outline_row-row_to - iv_collapsed = ls_outline_row-collapsed ). - - ENDLOOP. - -* Finally purge outline information ( collapsed state, outline leve) from row_dimensions, since we want to keep these in the outline-table - LOOP AT lt_row_dimensions ASSIGNING <ls_row_dimension>. - - <ls_row_dimension>-row_dimension->set_outline_level( 0 ). - <ls_row_dimension>-row_dimension->set_collapsed( abap_false ). - - ENDLOOP. - -ENDMETHOD. - - - - - method fill_struct_from_attributes. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-11-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - - data: lv_name type string, - lo_attributes type ref to if_ixml_named_node_map, - lo_attribute type ref to if_ixml_attribute, - lo_iterator type ref to if_ixml_node_iterator. - - field-symbols: <component> type any. - -*--------------------------------------------------------------------* -* The values of named attributes of a tag are being read and moved into corresponding -* fields of given structure -* Behaves like move-corresonding tag to structure - -* Example: -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* Here the attributes are Target, Type and Id. Thus if the passed -* structure has fieldnames Id and Target these would be filled with -* "rId3" and "docProps/app.xml" respectively -*--------------------------------------------------------------------* - clear cp_structure. - - lo_attributes = ip_element->get_attributes( ). - lo_iterator = lo_attributes->create_iterator( ). - lo_attribute ?= lo_iterator->get_next( ). - while lo_attribute is bound. - - lv_name = lo_attribute->get_name( ). - translate lv_name to upper case. - assign component lv_name of structure cp_structure to <component>. - if sy-subrc = 0. - <component> = lo_attribute->get_value( ). - endif. - lo_attribute ?= lo_iterator->get_next( ). - - endwhile. - - -endmethod. - - - - - - METHOD get_dxf_style_guid. - DATA: lo_ixml_dxf_children TYPE REF TO if_ixml_node_list, - lo_ixml_iterator_dxf_children TYPE REF TO if_ixml_node_iterator, - lo_ixml_dxf_child TYPE REF TO if_ixml_element, - - lv_dxf_child_type TYPE string, - - lo_ixml_element TYPE REF TO if_ixml_element, - lo_ixml_element2 TYPE REF TO if_ixml_element, - lv_val TYPE string. - - DATA: ls_cstyle TYPE zexcel_s_cstyle_complete, - ls_cstylex TYPE zexcel_s_cstylex_complete. - - - - lo_ixml_dxf_children = io_ixml_dxf->get_children( ). - lo_ixml_iterator_dxf_children = lo_ixml_dxf_children->create_iterator( ). - lo_ixml_dxf_child ?= lo_ixml_iterator_dxf_children->get_next( ). - WHILE lo_ixml_dxf_child IS BOUND. - - lv_dxf_child_type = lo_ixml_dxf_child->get_name( ). - CASE lv_dxf_child_type. - - WHEN 'font'. -*--------------------------------------------------------------------* -* italic -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'i' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'val' ). - IF lv_val <> '0'. - ls_cstyle-font-italic = 'X'. - ls_cstylex-font-italic = 'X'. - ENDIF. - - ENDIF. -*--------------------------------------------------------------------* -* bold -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'b' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'val' ). - IF lv_val <> '0'. - ls_cstyle-font-bold = 'X'. - ls_cstylex-font-bold = 'X'. - ENDIF. - - ENDIF. -*--------------------------------------------------------------------* -* strikethrough -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'strike' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'val' ). - IF lv_val <> '0'. - ls_cstyle-font-strikethrough = 'X'. - ls_cstylex-font-strikethrough = 'X'. - ENDIF. - - ENDIF. -*--------------------------------------------------------------------* -* color -*--------------------------------------------------------------------* - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'color' ). - IF lo_ixml_element IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element->get_attribute_ns( 'rgb' ). - ls_cstyle-font-color-rgb = lv_val. - ls_cstylex-font-color-rgb = 'X'. - ENDIF. - - WHEN 'fill'. - lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'patternFill' ). - IF lo_ixml_element IS BOUND. - lo_ixml_element2 = lo_ixml_element->find_from_name( 'bgColor' ). - IF lo_ixml_element2 IS BOUND. - CLEAR lv_val. - lv_val = lo_ixml_element2->get_attribute_ns( 'rgb' ). - IF lv_val IS NOT INITIAL. - ls_cstyle-fill-filltype = zcl_excel_style_fill=>c_fill_solid. - ls_cstyle-fill-bgcolor-rgb = lv_val. - ls_cstylex-fill-filltype = 'X'. - ls_cstylex-fill-bgcolor-rgb = 'X'. - ENDIF. - ENDIF. - CLEAR lv_val. - lv_val = lo_ixml_element2->get_attribute_ns( 'theme' ). - IF lv_val IS NOT INITIAL. - ls_cstyle-fill-filltype = zcl_excel_style_fill=>c_fill_solid. - ls_cstyle-fill-bgcolor-theme = lv_val. - ls_cstylex-fill-filltype = 'X'. - ls_cstylex-fill-bgcolor-theme = 'X'. - ENDIF. - ENDIF. - -* 2do - borders into dxf-styles. Here and in writerclass -* WHEN 'border'. -* lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'left' ). -* IF lo_ixml_element IS BOUND. -* CLEAR lv_val. -* lv_val = lo_ixml_element2->get_attribute_ns( 'style' ). -* IF lv_val IS NOT INITIAL. -* ls_cstyle-borders-left-border_style = lv_val. -* ls_cstylex-borders-left-border_style = 'X'. -* ENDIF. -* ENDIF. - - ENDCASE. - - lo_ixml_dxf_child ?= lo_ixml_iterator_dxf_children->get_next( ). - - ENDWHILE. - - - - - rv_style_guid = io_excel->get_static_cellstyle_guid( ip_cstyle_complete = ls_cstyle - ip_cstylex_complete = ls_cstylex ). - - -ENDMETHOD. - - - - - - METHOD get_from_zip_archive. - - ASSERT zip IS BOUND. " zip object has to exist at this point - - r_content = zip->read( i_filename ). - -ENDMETHOD. - - - - - - - METHOD get_ixml_from_zip_archive. - - DATA: lv_content TYPE xstring, - lo_ixml TYPE REF TO if_ixml, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_istream TYPE REF TO if_ixml_istream, - lo_parser TYPE REF TO if_ixml_parser. - -*--------------------------------------------------------------------* -* Load XML file from archive into an input stream, -* and parse that stream into an ixml object -*--------------------------------------------------------------------* - lv_content = me->get_from_zip_archive( i_filename ). - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_istream = lo_streamfactory->create_istream_xstring( lv_content ). - r_ixml = lo_ixml->create_document( ). - lo_parser = lo_ixml->create_parser( stream_factory = lo_streamfactory - istream = lo_istream - document = r_ixml ). - lo_parser->set_normalizing( is_normalizing ). - lo_parser->set_validating( mode = if_ixml_parser=>co_no_validation ). - lo_parser->parse( ). - -ENDMETHOD. - - - - - - METHOD load_drawing_anchor. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - TYPES: BEGIN OF t_ext, - cx TYPE string, - cy TYPE string, - END OF t_ext. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - node TYPE REF TO if_ixml_element, - node2 TYPE REF TO if_ixml_element, - node3 TYPE REF TO if_ixml_element, - node4 TYPE REF TO if_ixml_element, - - ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location, - ls_size TYPE zexcel_drawing_size, - ext TYPE t_ext, - lv_content TYPE xstring, - lv_relation_id TYPE string, - lv_title TYPE string, - - cnvpr TYPE t_c_nv_pr, - blip TYPE t_blip, - chart TYPE t_chart, - drawing_type TYPE zexcel_drawing_type, - - rel_drawing TYPE t_rel_drawing. - - node ?= io_anchor_element->find_from_name( name = 'from' namespace = 'xdr' ). - CHECK node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_upper-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_upper-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_upper-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_upper-row_offset = node2->get_value( ). - - node ?= io_anchor_element->find_from_name( name = 'ext' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_size. - ELSE. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = ext ). - ls_size-width = ext-cx. - ls_size-height = ext-cy. - TRY. - ls_size-width = zcl_excel_drawing=>emu2pixel( ls_size-width ). - CATCH cx_root. - ENDTRY. - TRY. - ls_size-height = zcl_excel_drawing=>emu2pixel( ls_size-height ). - CATCH cx_root. - ENDTRY. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'to' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_lower. - ELSE. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_lower-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_lower-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_lower-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_lower-row_offset = node2->get_value( ). - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'pic' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvPicPr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'blipFill' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'blip' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = blip ). - lv_relation_id = blip-embed. - - drawing_type = zcl_excel_drawing=>type_image. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'graphicFrame' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvGraphicFramePr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'graphic' namespace = 'a' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'graphicData' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - node4 ?= node2->find_from_name( name = 'chart' namespace = 'c' ). - CHECK node4 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node4 CHANGING cp_structure = chart ). - lv_relation_id = chart-id. - - drawing_type = zcl_excel_drawing=>type_chart. - ENDIF. - - lo_drawing = io_worksheet->excel->add_new_drawing( - ip_type = drawing_type - ip_title = lv_title ). - io_worksheet->add_drawing( lo_drawing ). - - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - READ TABLE it_related_drawings INTO rel_drawing - WITH KEY id = lv_relation_id. - - lo_drawing->set_media( - EXPORTING - ip_media = rel_drawing-content - ip_media_type = rel_drawing-file_ext - ip_width = ls_size-width - ip_height = ls_size-height ). - - IF drawing_type = zcl_excel_drawing=>type_chart. - "-------------Added by Alessandro Iannacci - Should load chart attributes - lo_drawing->load_chart_attributes( rel_drawing-content_xml ). - ENDIF. - -ENDMETHOD. - - - - - - METHOD load_dxf_styles. - - DATA: lo_styles_xml TYPE REF TO if_ixml_document, - lo_node_dxfs TYPE REF TO if_ixml_element, - - lo_nodes_dxf TYPE REF TO if_ixml_node_collection, - lo_iterator_dxf TYPE REF TO if_ixml_node_iterator, - lo_node_dxf TYPE REF TO if_ixml_element, - - lv_dxf_count TYPE i. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF mt_dxf_styles. - -*--------------------------------------------------------------------* -* Look for dxfs-node -*--------------------------------------------------------------------* - lo_styles_xml = me->get_ixml_from_zip_archive( iv_path ). - lo_node_dxfs = lo_styles_xml->find_from_name( 'dxfs' ). - CHECK lo_node_dxfs IS BOUND. - - -*--------------------------------------------------------------------* -* loop through all dxf-nodes and create style for each -*--------------------------------------------------------------------* - lo_nodes_dxf ?= lo_node_dxfs->get_elements_by_tag_name( 'dxf' ). - lo_iterator_dxf = lo_nodes_dxf->create_iterator( ). - lo_node_dxf ?= lo_iterator_dxf->get_next( ). - WHILE lo_node_dxf IS BOUND. - - APPEND INITIAL LINE TO mt_dxf_styles ASSIGNING <ls_dxf_style>. - <ls_dxf_style>-dxf = lv_dxf_count. " We start counting at 0 - ADD 1 TO lv_dxf_count. " prepare next entry - - <ls_dxf_style>-guid = get_dxf_style_guid( io_ixml_dxf = lo_node_dxf - io_excel = io_excel ). - lo_node_dxf ?= lo_iterator_dxf->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - method LOAD_SHARED_STRINGS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support partial formatting of strings in cells -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-11-11 -* - ... -* changes: renaming variables to naming conventions -* renaming variables to indicate what they are used for -* aligning code -* adding comments to explain what we are trying to achieve -* rewriting code for better readibility -*--------------------------------------------------------------------* - - - - DATA: - lo_shared_strings_xml TYPE REF TO if_ixml_document, - lo_node_si TYPE REF TO if_ixml_element, - lo_node_si_child TYPE REF TO if_ixml_element, - lo_node_r_child_t TYPE REF TO if_ixml_element, - lv_tag_name TYPE string, - lv_node_value TYPE string. - - FIELD-SYMBOLS: <lv_shared_string> LIKE LINE OF me->shared_strings. - -*--------------------------------------------------------------------* - -* §1 Parse shared strings file and get into internal table -* So far I have encountered 2 ways how a string can be represented in the shared strings file -* §1.1 - "simple" strings -* §1.2 - rich text formatted strings - -* Following is an example how this file could be set up; 2 strings in simple formatting, 3rd string rich textformatted - - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <sst uniqueCount="6" count="6" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <si> -* <t>This is a teststring 1</t> -* </si> -* <si> -* <t>This is a teststring 2</t> -* </si> -* <si> -* <r> -* <t>T</t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color rgb="FFFF0000"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t xml:space="preserve">his is a </t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color theme="1"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t>teststring 3</t> -* </r> -* </si> -* </sst> -*--------------------------------------------------------------------* - - lo_shared_strings_xml = me->get_ixml_from_zip_archive( i_filename = ip_path - is_normalizing = space ). " NO!!! normalizing - otherwise leading blanks will be omitted and that is not really desired for the stringtable - lo_node_si ?= lo_shared_strings_xml->find_from_name( 'si' ). - WHILE lo_node_si IS BOUND. - - APPEND INITIAL LINE TO me->shared_strings ASSIGNING <lv_shared_string>. " Each <si>-entry in the xml-file must lead to an entry in our stringtable - lo_node_si_child ?= lo_node_si->get_first_child( ). - IF lo_node_si_child IS BOUND. - lv_tag_name = lo_node_si_child->get_name( ). - IF lv_tag_name = 't'. -*--------------------------------------------------------------------* -* §1.1 - "simple" strings -* Example: see above -*--------------------------------------------------------------------* - <lv_shared_string> = lo_node_si_child->get_value( ). - ELSE. -*--------------------------------------------------------------------* -* §1.2 - rich text formatted strings -* it is sufficient to strip the <t>...</t> tag from each <r>-tag and concatenate these -* as long as rich text formatting is not supported (2do§1) ignore all info about formatting -* Example: see above -*--------------------------------------------------------------------* - WHILE lo_node_si_child IS BOUND. " actually these children of <si> are <r>-tags - - lo_node_r_child_t ?= lo_node_si_child->find_from_name( 't' ). " extract the <t>...</t> part of each <r>-tag - IF lo_node_r_child_t IS BOUND. - lv_node_value = lo_node_r_child_t->get_value( ). - CONCATENATE <lv_shared_string> lv_node_value INTO <lv_shared_string> RESPECTING BLANKS. - ENDIF. - - lo_node_si_child ?= lo_node_si_child->get_next( ). - - ENDWHILE. - ENDIF. - ENDIF. - - lo_node_si ?= lo_node_si->get_next( ). - ENDWHILE. - - endmethod. - - - - - - METHOD load_styles. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (wip ) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_xf, - applyalignment TYPE string, - applyborder TYPE string, - applyfill TYPE string, - applyfont TYPE string, - applynumberformat TYPE string, - applyprotection TYPE string, - borderid TYPE string, - fillid TYPE string, - fontid TYPE string, - numfmtid TYPE string, - pivotbutton TYPE string, - quoteprefix TYPE string, - xfid TYPE string, - END OF lty_xf. - - TYPES: BEGIN OF lty_alignment, - horizontal TYPE string, - indent TYPE string, - justifylastline TYPE string, - readingorder TYPE string, - relativeindent TYPE string, - shrinktofit TYPE string, - textrotation TYPE string, - vertical TYPE string, - wraptext TYPE string, - END OF lty_alignment. - - TYPES: BEGIN OF lty_protection, - hidden TYPE string, - locked TYPE string, - END OF lty_protection. - - DATA: lo_styles_xml TYPE REF TO if_ixml_document, - lo_style TYPE REF TO zcl_excel_style, - - lt_num_formats TYPE zcl_excel_style_number_format=>t_num_formats, - lt_fills TYPE t_fills, - lt_borders TYPE t_borders, - lt_fonts TYPE t_fonts, - - ls_num_format TYPE zcl_excel_style_number_format=>t_num_format , - ls_fill TYPE REF TO zcl_excel_style_fill, - ls_cell_border TYPE REF TO zcl_excel_style_borders, - ls_font TYPE REF TO zcl_excel_style_font, - - lo_node_cellxfs TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_alignment TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_protection TYPE REF TO if_ixml_element, - - lo_nodes_xf TYPE REF TO if_ixml_node_collection, - lo_iterator_cellxfs TYPE REF TO if_ixml_node_iterator, - - ls_xf TYPE lty_xf, - ls_alignment TYPE lty_alignment, - ls_protection TYPE lty_protection, - lv_index TYPE i. - -*--------------------------------------------------------------------* -* To build a complete style that fully describes how a cell looks like -* we need the various parts -* §1 - Numberformat -* §2 - Fillstyle -* §3 - Borders -* §4 - Font -* §5 - Alignment -* §6 - Protection - -* Following is an example how this part of a file could be set up -* ... -* parts with various formatinformation - see §1,§2,§3,§4 -* ... -* <cellXfs count="26"> -* <xf numFmtId="0" borderId="0" fillId="0" fontId="0" xfId="0"/> -* <xf numFmtId="0" borderId="0" fillId="2" fontId="0" xfId="0" applyFill="1"/> -* <xf numFmtId="0" borderId="1" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="2" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="3" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="4" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="0" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* ... -* </cellXfs> -*--------------------------------------------------------------------* - - lo_styles_xml = me->get_ixml_from_zip_archive( ip_path ). - -*--------------------------------------------------------------------* -* The styles are build up from -* §1 number formats -* §2 fill styles -* §3 border styles -* §4 fonts -* These need to be read before we can try to build up a complete -* style that describes the look of a cell -*--------------------------------------------------------------------* - lt_num_formats = load_style_num_formats( lo_styles_xml ). " §1 - lt_fills = load_style_fills( lo_styles_xml ). " §2 - lt_borders = load_style_borders( lo_styles_xml ). " §3 - lt_fonts = load_style_fonts( lo_styles_xml ). " §4 - -*--------------------------------------------------------------------* -* Now everything is prepared to build a "full" style -*--------------------------------------------------------------------* - lo_node_cellxfs = lo_styles_xml->find_from_name( name = 'cellXfs' ). - IF lo_node_cellxfs IS BOUND. - lo_nodes_xf = lo_node_cellxfs->get_elements_by_tag_name( name = 'xf' ). - lo_iterator_cellxfs = lo_nodes_xf->create_iterator( ). - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - WHILE lo_node_cellxfs_xf IS BOUND. - - lo_style = ip_excel->add_new_style( ). - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf - CHANGING - cp_structure = ls_xf ). -*--------------------------------------------------------------------* -* §2 fill style -*--------------------------------------------------------------------* - IF ls_xf-applyfill = '1' AND ls_xf-fillid IS NOT INITIAL. - lv_index = ls_xf-fillid + 1. - READ TABLE lt_fills INTO ls_fill INDEX lv_index. - IF sy-subrc = 0. - lo_style->fill = ls_fill. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §1 number format -*--------------------------------------------------------------------* - IF ls_xf-numfmtid IS NOT INITIAL. - READ TABLE lt_num_formats INTO ls_num_format WITH TABLE KEY id = ls_xf-numfmtid. - IF sy-subrc = 0. - lo_style->number_format = ls_num_format-format. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §3 border style -*--------------------------------------------------------------------* - IF ls_xf-applyborder = '1' AND ls_xf-borderid IS NOT INITIAL. - lv_index = ls_xf-borderid + 1. - READ TABLE lt_borders INTO ls_cell_border INDEX lv_index. - IF sy-subrc = 0. - lo_style->borders = ls_cell_border. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §4 font -*--------------------------------------------------------------------* - IF ls_xf-applyfont = '1' AND ls_xf-fontid IS NOT INITIAL. - lv_index = ls_xf-fontid + 1. - READ TABLE lt_fonts INTO ls_font INDEX lv_index. - IF sy-subrc = 0. - lo_style->font = ls_font. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §5 - Alignment -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_alignment ?= lo_node_cellxfs_xf->find_from_name( 'alignment' ). - IF lo_node_cellxfs_xf_alignment IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_alignment - CHANGING - cp_structure = ls_alignment ). - IF ls_alignment-horizontal IS NOT INITIAL. - lo_style->alignment->horizontal = ls_alignment-horizontal. - ENDIF. - - IF ls_alignment-vertical IS NOT INITIAL. - lo_style->alignment->vertical = ls_alignment-vertical. - ENDIF. - - IF ls_alignment-textrotation IS NOT INITIAL. - lo_style->alignment->textrotation = ls_alignment-textrotation. - ENDIF. - - IF ls_alignment-wraptext = '1' OR ls_alignment-wraptext = 'true'. - lo_style->alignment->wraptext = abap_true. - ENDIF. - - IF ls_alignment-shrinktofit = '1' OR ls_alignment-shrinktofit = 'true'. - lo_style->alignment->shrinktofit = abap_true. - ENDIF. - - IF ls_alignment-indent IS NOT INITIAL. - lo_style->alignment->indent = ls_alignment-indent. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §6 - Protection -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_protection ?= lo_node_cellxfs_xf->find_from_name( 'protection' ). - IF lo_node_cellxfs_xf_protection IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_protection - CHANGING - cp_structure = ls_protection ). - IF ls_protection-locked = '1' OR ls_protection-locked = 'true'. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_locked. - ELSE. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - ENDIF. - - IF ls_protection-hidden = '1' OR ls_protection-hidden = 'true'. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_hidden. - ELSE. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_unhidden. - ENDIF. - - ENDIF. - - INSERT lo_style INTO TABLE me->styles. - - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - - ENDWHILE. - ENDIF. - -ENDMETHOD. - - - - - method LOAD_STYLE_BORDERS. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_border TYPE REF TO if_ixml_element, - lo_node_bordertype TYPE REF TO if_ixml_element, - lo_node_bordercolor TYPE REF TO if_ixml_element, - lo_cell_border TYPE REF TO zcl_excel_style_borders, - lo_border TYPE REF TO zcl_excel_style_border, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used borderformats to build up our styles -* §1 A cell has 4 outer borders and 2 diagonal "borders" -* These borders can be formatted separately but the diagonal borders -* are always being formatted the same -* We'll parse through the <border>-tag for each of the bordertypes -* §2 and read the corresponding formatting information - -* Following is an example how this part of a file could be set up -* <border diagonalDown="1"> -* <left style="mediumDashDotDot"> -* <color rgb="FFFF0000"/> -* </left> -* <right/> -* <top style="thick"> -* <color rgb="FFFF0000"/> -* </top> -* <bottom style="thick"> -* <color rgb="FFFF0000"/> -* </bottom> -* <diagonal style="thick"> -* <color rgb="FFFF0000"/> -* </diagonal> -* </border> -*--------------------------------------------------------------------* - lo_node_border ?= ip_xml->find_from_name( 'border' ). - WHILE lo_node_border IS BOUND. - - CREATE OBJECT lo_cell_border. - -*--------------------------------------------------------------------* -* Diagonal borderlines are formatted the equally. Determine what kind of diagonal borders are present if any -*--------------------------------------------------------------------* -* DiagonalNone = 0 -* DiagonalUp = 1 -* DiagonalDown = 2 -* DiagonalBoth = 3 -*--------------------------------------------------------------------* - IF lo_node_border->get_attribute( 'diagonalDown' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_down to lo_cell_border->diagonal_mode. - ENDIF. - - IF lo_node_border->get_attribute( 'diagonalUp' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_up to lo_cell_border->diagonal_mode. - ENDIF. - - lo_node_bordertype ?= lo_node_border->get_first_child( ). - WHILE lo_node_bordertype IS BOUND. -*--------------------------------------------------------------------* -* §1 Determine what kind of border we are talking about -*--------------------------------------------------------------------* -* Up, down, left, right, diagonal -*--------------------------------------------------------------------* - CREATE OBJECT lo_border. - - CASE lo_node_bordertype->get_name( ). - - WHEN 'left'. - lo_cell_border->left = lo_border. - - WHEN 'right'. - lo_cell_border->right = lo_border. - - WHEN 'top'. - lo_cell_border->top = lo_border. - - WHEN 'bottom'. - lo_cell_border->down = lo_border. - - WHEN 'diagonal'. - lo_cell_border->diagonal = lo_border. - - ENDCASE. - -*--------------------------------------------------------------------* -* §2 Read the border-formatting -*--------------------------------------------------------------------* - lo_border->border_style = lo_node_bordertype->get_attribute( 'style' ). - lo_node_bordercolor ?= lo_node_bordertype->find_from_name( 'color' ). - IF lo_node_bordercolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bordercolor - CHANGING - cp_structure = ls_color ). - - lo_border->border_color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_border->border_color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_border->border_color-theme = ls_color-theme. - ENDIF. - lo_border->border_color-tint = ls_color-tint. - ENDIF. - - lo_node_bordertype ?= lo_node_bordertype->get_next( ). - - ENDWHILE. - - INSERT lo_cell_border INTO TABLE ep_borders. - - lo_node_border ?= lo_node_border->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_FILLS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support gradientFill -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* commenting on problems/future enhancements/todos we already know of or should decide upon -* adding comments to explain what we are trying to achieve -* renaming variables to indicate what they are used for -*--------------------------------------------------------------------* - DATA: lv_value TYPE string, - lo_node_fill TYPE REF TO if_ixml_element, - lo_node_fill_child TYPE REF TO if_ixml_element, - lo_node_bgcolor TYPE REF TO if_ixml_element, - lo_node_fgcolor TYPE REF TO if_ixml_element, - lo_node_stop TYPE REF TO if_ixml_element, - lo_fill TYPE REF TO zcl_excel_style_fill, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fillformats to build up our styles - -* Following is an example how this part of a file could be set up -* <fill> -* <patternFill patternType="gray125"/> -* </fill> -* <fill> -* <patternFill patternType="solid"> -* <fgColor rgb="FFFFFF00"/> -* <bgColor indexed="64"/> -* </patternFill> -* </fill> -*--------------------------------------------------------------------* - - lo_node_fill ?= ip_xml->find_from_name( 'fill' ). - WHILE lo_node_fill IS BOUND. - - CREATE OBJECT lo_fill. - lo_node_fill_child ?= lo_node_fill->get_first_child( ). - lv_value = lo_node_fill_child->get_name( ). - CASE lv_value. - -*--------------------------------------------------------------------* -* Patternfill -*--------------------------------------------------------------------* - WHEN 'patternFill'. - lo_fill->filltype = lo_node_fill_child->get_attribute( 'patternType' ). -*--------------------------------------------------------------------* -* Patternfill - background color -*--------------------------------------------------------------------* - lo_node_bgcolor = lo_node_fill_child->find_from_name( 'bgColor' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - -*--------------------------------------------------------------------* -* Patternfill - foreground color -*--------------------------------------------------------------------* - lo_node_fgcolor = lo_node_fill->find_from_name( 'fgColor' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - - -*--------------------------------------------------------------------* -* gradientFill -*--------------------------------------------------------------------* - WHEN 'gradientFill'. - lo_fill->gradtype-type = lo_node_fill_child->get_attribute( 'type' ). - lo_fill->gradtype-top = lo_node_fill_child->get_attribute( 'top' ). - lo_fill->gradtype-left = lo_node_fill_child->get_attribute( 'left' ). - lo_fill->gradtype-right = lo_node_fill_child->get_attribute( 'right' ). - lo_fill->gradtype-bottom = lo_node_fill_child->get_attribute( 'bottom' ). - lo_fill->gradtype-degree = lo_node_fill_child->get_attribute( 'degree' ). - free lo_node_stop. - lo_node_stop ?= lo_node_fill_child->find_from_name( 'stop' ). - while lo_node_stop is bound. - if lo_fill->gradtype-position1 is initial. - lo_fill->gradtype-position1 = lo_node_stop->get_attribute( 'position' ). - lo_node_bgcolor = lo_node_stop->find_from_name( 'color' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - elseif lo_fill->gradtype-position2 is initial. - lo_fill->gradtype-position2 = lo_node_stop->get_attribute( 'position' ). - lo_node_fgcolor = lo_node_stop->find_from_name( 'color' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - elseif lo_fill->gradtype-position3 is initial. - lo_fill->gradtype-position3 = lo_node_stop->get_attribute( 'position' ). - "BGColor is filled already with position 1 no need to check again - endif. - - lo_node_stop ?= lo_node_stop->get_next( ). - ENDWHILE. - - WHEN OTHERS. - - ENDCASE. - - - INSERT lo_fill INTO TABLE ep_fills. - - lo_node_fill ?= lo_node_fill->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - METHOD load_style_fonts. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* removing unused variables -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_font TYPE REF TO if_ixml_element, - lo_node2 TYPE REF TO if_ixml_element, - lo_font TYPE REF TO zcl_excel_style_font, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fonts to build up our styles - -* Following is an example how this part of a file could be set up -* <font> -* <sz val="11"/> -* <color theme="1"/> -* <name val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </font> -*--------------------------------------------------------------------* - lo_node_font ?= ip_xml->find_from_name( 'font' ). - WHILE lo_node_font IS BOUND. - - CREATE OBJECT lo_font. -*--------------------------------------------------------------------* -* Bold -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'b' ) IS BOUND. - lo_font->bold = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Italic -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'i' ) IS BOUND. - lo_font->italic = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Underline -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'u' ). - IF lo_node2 IS BOUND. - lo_font->underline = abap_true. - lo_font->underline_mode = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* StrikeThrough -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'strike' ) IS BOUND. - lo_font->strikethrough = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Fontsize -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'sz' ). - IF lo_node2 IS BOUND. - lo_font->size = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontname -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'name' ). - IF lo_node2 IS BOUND. - lo_font->name = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontfamily -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'family' ). - IF lo_node2 IS BOUND. - lo_font->family = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontscheme -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'scheme' ). - IF lo_node2 IS BOUND. - lo_font->scheme = lo_node2->get_attribute( 'val' ). - ELSE. - CLEAR lo_font->scheme. - ENDIF. - -*--------------------------------------------------------------------* -* Fontcolor -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'color' ). - IF lo_node2 IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node2 - CHANGING - cp_structure = ls_color ). - lo_font->color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_font->color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_font->color-theme = ls_color-theme. - ENDIF. - lo_font->color-tint = ls_color-tint. - ENDIF. - - INSERT lo_font INTO TABLE ep_fonts. - - lo_node_font ?= lo_node_font->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_style_num_formats. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Explain gaps in predefined formats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* adding comments to explain what we are trying to achieve -* aligning code -*--------------------------------------------------------------------* - DATA: lo_node_numfmt TYPE REF TO if_ixml_element, - ls_num_format TYPE ZCL_EXCEL_STYLE_NUMBER_FORMAT=>T_NUM_FORMAT . - -*--------------------------------------------------------------------* -* We need a table of used numberformats to build up our styles -* there are two kinds of numberformats -* §1 built-in numberformats -* §2 and those that have been explicitly added by the createor of the excel-file -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 built-in numberformats -*--------------------------------------------------------------------* - ep_num_formats = ZCL_EXCEL_STYLE_NUMBER_FORMAT=>mt_built_in_num_formats. - -*--------------------------------------------------------------------* -* §2 Get non-internal numberformats that are found in the file explicitly - -* Following is an example how this part of a file could be set up -* <numFmts count="1"> -* <numFmt formatCode="#,###,###,###,##0.00" numFmtId="164"/> -* </numFmts> -*--------------------------------------------------------------------* - lo_node_numfmt ?= ip_xml->find_from_name( 'numFmt' ). - WHILE lo_node_numfmt IS BOUND. - - CLEAR ls_num_format. - - CREATE OBJECT ls_num_format-format. - ls_num_format-format->format_code = lo_node_numfmt->get_attribute( 'formatCode' ). - ls_num_format-id = lo_node_numfmt->get_attribute( 'numFmtId' ). - INSERT ls_num_format INTO TABLE ep_num_formats. - - lo_node_numfmt ?= lo_node_numfmt->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - method load_theme. - data theme type ref to zcl_excel_theme. - data: lo_theme_xml type ref to if_ixml_document. - create object theme. - lo_theme_xml = me->get_ixml_from_zip_archive( iv_path ). - theme->read_theme( io_theme_xml = lo_theme_xml ). - ip_excel->set_theme( io_theme = theme ). -endmethod. - - - - - - method LOAD_WORKBOOK. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Move macro-reading from zcl_excel_reader_xlsm to this class -* autodetect existance of macro/vba content -* Allow inputparameter to explicitly tell reader to ignore vba-content -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-11-10 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* removing unused variables -* adding me-> where possible -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -* renaming i/o parameters: previous input-parameter ip_path holds a (full) filename and not a path --> rename to iv_workbook_full_filename -* ip_excel renamed while being at it --> rename to io_excel -*--------------------------------------------------------------------* -* issue #232 - Read worksheetstate hidden/veryHidden -* - Stefan Schmoecker, 2012-11-11 -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmoecker, 2012-12-02 -* changes: correction in named ranges to correctly attach -* sheetlocal names/ranges to the correct sheet -*--------------------------------------------------------------------* -* issue#284 - Copied formulae ignored when reading excelfile -* - Stefan Schmoecker, 2013-08-02 -* changes: initialize area to hold referenced formulaedata -* after all worksheets have been read resolve formuae -*--------------------------------------------------------------------* - - CONSTANTS: lcv_shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - lcv_worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lcv_styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lcv_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader - lcv_theme TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - begin data declarations -*--------------------------------------------------------------------* - lcv_worksheet_state_hidden TYPE string VALUE 'hidden', - lcv_worksheet_state_veryhidden TYPE string VALUE 'veryHidden'. -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - end data declarations -*--------------------------------------------------------------------* - - DATA: - lv_path TYPE string, - lv_filename TYPE chkfile, - lv_full_filename TYPE string, - - lo_rels_workbook TYPE REF TO if_ixml_document, - lt_worksheets TYPE STANDARD TABLE OF t_relationship WITH NON-UNIQUE DEFAULT KEY, - lo_workbook TYPE REF TO if_ixml_document, - lv_workbook_index TYPE i, - lv_worksheet_path TYPE string, - ls_sheet TYPE t_sheet, - - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lv_worksheet_title TYPE zexcel_sheet_title, - lv_tabix TYPE sytabix, " #235 - repeat rows/cols. Needed to link defined name to correct worksheet - - ls_range TYPE t_range, - lv_range_value TYPE zexcel_range_value, -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin data declarations -*--------------------------------------------------------------------* - lv_active_sheet_string TYPE string, - lv_zexcel_active_worksheet TYPE zexcel_active_worksheet, -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - added autofilter support while changing this section - lo_autofilter TYPE REF TO zcl_excel_autofilter, - ls_area TYPE zexcel_s_autofilter_area, - lv_col_start_alpha TYPE zexcel_cell_column_alpha, - lv_col_end_alpha TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row , - lv_regex TYPE string, - lv_range_value_1 TYPE zexcel_range_value, - lv_range_value_2 TYPE zexcel_range_value. -*--------------------------------------------------------------------* -* #229: Set active worksheet - end data declarations -*--------------------------------------------------------------------* - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - -*--------------------------------------------------------------------* - -* §1 Get the position of files related to this workbook -* Usually this will be <root>/xl/workbook.xml -* Thus the workbookroot will be <root>/xl/ -* The position of all related files will be given in file -* <workbookroot>/_rels/<workbookfilename>.rels and their positions -* be be given relative to the workbookroot - -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="styles.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Id="rId6"/> -* <Relationship Target="theme/theme1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Id="rId5"/> -* <Relationship Target="worksheets/sheet1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId1"/> -* <Relationship Target="worksheets/sheet2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId2"/> -* <Relationship Target="worksheets/sheet3.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId3"/> -* <Relationship Target="worksheets/sheet4.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId4"/> -* <Relationship Target="sharedStrings.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Id="rId7"/> -* </Relationships> -* -* §2 Load data that is relevant to the complete workbook -* Currently supported is: -* §2.1 Shared strings - This holds all strings that are used in all worksheets -* §2.2 Styles - This holds all styles that are used in all worksheets -* §2.3 Worksheets - For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* §2.4 [Themes] - not supported -* §2.5 [VBA (Macro)] - supported in class zcl_excel_reader_xlsm but should be moved here and autodetect -* ... -* -* §3 Some information is held in the workbookfile as well -* §3.1 Names and order of of worksheets -* §3.2 Active worksheet -* §3.3 Defined names -* ... -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <fileVersion rupBuild="4506" lowestEdited="4" lastEdited="4" appName="xl"/> -* <workbookPr defaultThemeVersion="124226"/> -* <bookViews> -* <workbookView activeTab="1" windowHeight="8445" windowWidth="19035" yWindow="120" xWindow="120"/> -* </bookViews> -* <sheets> -* <sheet r:id="rId1" sheetId="1" name="Sheet1"/> -* <sheet r:id="rId2" sheetId="2" name="Sheet2"/> -* <sheet r:id="rId3" sheetId="3" name="Sheet3" state="hidden"/> -* <sheet r:id="rId4" sheetId="4" name="Sheet4"/> -* </sheets> -* <definedNames/> -* <calcPr calcId="125725"/> -* </workbook> -*--------------------------------------------------------------------* - - CLEAR me->mt_ref_formulae. " ins issue#284 - -*--------------------------------------------------------------------* -* §1 Get the position of files related to this workbook -* Entry into this method is with the filename of the workbook -*--------------------------------------------------------------------* - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = lv_filename - file_path = lv_path. - - CONCATENATE lv_path '_rels/' lv_filename '.rels' - INTO lv_full_filename. - lo_rels_workbook = me->get_ixml_from_zip_archive( lv_full_filename ). - - lo_node ?= lo_rels_workbook->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING ip_element = lo_node CHANGING cp_structure = ls_relationship ). - - CASE ls_relationship-type. - -*--------------------------------------------------------------------* -* §2.1 Shared strings - This holds all strings that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_shared_strings. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_shared_strings( lv_full_filename ). - -*--------------------------------------------------------------------* -* §2.3 Worksheets -* For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* Shared strings and styles have to be present before we can start with creating the worksheets -* thus we only store this information for use when parsing the workbookfile for sheetinformations -*--------------------------------------------------------------------* - WHEN lcv_worksheet. - APPEND ls_relationship TO lt_worksheets. - -*--------------------------------------------------------------------* -* §2.2 Styles - This holds the styles that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_styles. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_styles( ip_path = lv_full_filename - ip_excel = io_excel ). - me->load_dxf_styles( iv_path = lv_full_filename - io_excel = io_excel ). - when lcv_theme. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_theme( - exporting - iv_path = lv_full_filename - ip_excel = io_excel " Excel creator - ). - WHEN OTHERS. - - ENDCASE. - - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - -*--------------------------------------------------------------------* -* §3 Some information held in the workbookfile -*--------------------------------------------------------------------* - lo_workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - -*--------------------------------------------------------------------* -* §3.1 Names and order of of worksheets -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'sheet' ). - lv_workbook_index = 1. - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_sheet ). -*--------------------------------------------------------------------* -* Create new worksheet in workbook with correct name -*--------------------------------------------------------------------* - lv_worksheet_title = ls_sheet-name. - IF lv_workbook_index = 1. " First sheet has been added automatically by creating io_excel - lo_worksheet = io_excel->get_active_worksheet( ). - lo_worksheet->set_title( lv_worksheet_title ). - ELSE. - lo_worksheet = io_excel->add_new_worksheet( lv_worksheet_title ). - ENDIF. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - begin of coding -* Set status hidden if necessary -*--------------------------------------------------------------------* - CASE ls_sheet-state. - - WHEN lcv_worksheet_state_hidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - WHEN lcv_worksheet_state_veryhidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_veryhidden. - - ENDCASE. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - end of coding -*--------------------------------------------------------------------* -*--------------------------------------------------------------------* -* Load worksheetdata -*--------------------------------------------------------------------* - READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_sheet-id. - IF sy-subrc = 0. - <worksheet>-sheetid = ls_sheet-sheetid. "ins #235 - repeat rows/cols - needed to identify correct sheet - CONCATENATE lv_path <worksheet>-target - INTO lv_worksheet_path. - me->load_worksheet( ip_path = lv_worksheet_path - io_worksheet = lo_worksheet ). - <worksheet>-worksheet = lo_worksheet. - ENDIF. - - lo_node ?= lo_node->get_next( ). - ADD 1 TO lv_workbook_index. - - ENDWHILE. - SORT lt_worksheets BY sheetid. " needed for localSheetid -referencing - -*--------------------------------------------------------------------* -* #284: Set active worksheet - Resolve referenced formulae to -* explicit formulae those cells -*--------------------------------------------------------------------* - me->resolve_referenced_formulae( ). - " ins issue#284 -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin coding -* §3.2 Active worksheet -*--------------------------------------------------------------------* - lv_zexcel_active_worksheet = 1. " First sheet = active sheet if nothing else specified. - lo_node ?= lo_workbook->find_from_name( 'workbookView' ). - IF lo_node IS BOUND. - lv_active_sheet_string = lo_node->get_attribute( 'activeTab' ). - TRY. - lv_zexcel_active_worksheet = lv_active_sheet_string + 1. " EXCEL numbers the sheets from 0 onwards --> index into worksheettable is increased by one - CATCH cx_sy_conversion_error. "#EC NO_HANDLER - error here --> just use the default 1st sheet - ENDTRY. - ENDIF. - io_excel->set_active_sheet_index( lv_zexcel_active_worksheet ). -*--------------------------------------------------------------------* -* #229: Set active worksheet - end coding -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §3.3 Defined names -* So far I have encountered these -* - named ranges - sheetlocal -* - named ranges - workbookglobal -* - autofilters - sheetlocal ( special range ) -* - repeat rows/cols - sheetlocal ( special range ) -* -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'definedName' ). - WHILE lo_node IS BOUND. - - CLEAR lo_range. "ins issue #235 - repeat rows/cols - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_range ). - lv_range_value = lo_node->get_value( ). - - IF ls_range-localsheetid IS NOT INITIAL. " issue #163+ -* READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_range-localsheetid. "del issue #235 - repeat rows/cols " issue #163+ -* lo_range = <worksheet>-worksheet->add_new_range( ). "del issue #235 - repeat rows/cols " issue #163+ -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - begin -*--------------------------------------------------------------------* - lv_tabix = ls_range-localsheetid + 1. - READ TABLE lt_worksheets ASSIGNING <worksheet> INDEX lv_tabix. - IF sy-subrc = 0. - CASE ls_range-name. - -*--------------------------------------------------------------------* -* insert autofilters -*--------------------------------------------------------------------* - WHEN zcl_excel_autofilters=>c_autofilter. - lo_autofilter = io_excel->add_new_autofilter( io_sheet = <worksheet>-worksheet ) . - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = ls_area-row_start - e_row_end = ls_area-row_end ). - ls_area-col_start = zcl_excel_common=>convert_column2int( lv_col_start_alpha ). - ls_area-col_end = zcl_excel_common=>convert_column2int( lv_col_end_alpha ). - lo_autofilter->set_filter_area( is_area = ls_area ). - -*--------------------------------------------------------------------* -* repeat print rows/columns -*--------------------------------------------------------------------* - WHEN zif_excel_sheet_printsettings=>gcv_print_title_name. - lo_range = <worksheet>-worksheet->add_new_range( ). -*--------------------------------------------------------------------* -* This might be a temporary solution. Maybe ranges get be reworked -* to support areas consisting of multiple rectangles -* But for now just split the range into row and columnpart -*--------------------------------------------------------------------* - CLEAR:lv_range_value_1, - lv_range_value_2. - IF lv_range_value IS INITIAL. -* Empty --> nothing to do - ELSE. - IF lv_range_value(1) = `'`. " Escaped - lv_regex = `^('[^']*')+![^,]*,`. - ELSE. - lv_regex = `^[^!]*![^,]*,`. - ENDIF. -* Split into two ranges if necessary - FIND REGEX lv_regex IN lv_range_value MATCH LENGTH sy-fdpos. - IF sy-subrc = 0 AND sy-fdpos > 0. - lv_range_value_2 = lv_range_value+sy-fdpos. - SUBTRACT 1 FROM sy-fdpos. - lv_range_value_1 = lv_range_value(sy-fdpos). - ELSE. - lv_range_value_1 = lv_range_value. - ENDIF. - ENDIF. -* 1st range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - -* 2nd range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - - WHEN OTHERS. - - ENDCASE. - ENDIF. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - end -*--------------------------------------------------------------------* - ELSE. " issue #163+ - lo_range = io_excel->add_new_range( ). " issue #163+ - ENDIF. " issue #163+ -* lo_range = ip_excel->add_new_range( ). " issue #163- - IF lo_range IS BOUND. "ins issue #235 - repeat rows/cols - lo_range->name = ls_range-name. - lo_range->set_range_value( lv_range_value ). - ENDIF. "ins issue #235 - repeat rows/cols - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - endmethod. - - - - - - METHOD load_worksheet. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Header/footer -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, -* - ... -* changes: renaming variables to naming conventions -* aligning code (started) -* add a list of open ToDos here -* adding comments to explain what we are trying to achieve (started) -*--------------------------------------------------------------------* -* issue #345 - Dump on small pagemargins -* Took the chance to modularize this very long method -* by extracting the code that needed correction into -* own method ( load_worksheet_pagemargins ) -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_cell, - r TYPE string, - t TYPE string, - s TYPE string, - END OF lty_cell. - - TYPES: BEGIN OF lty_column, - min TYPE string, - max TYPE string, - width TYPE float, - customwidth TYPE string, - style TYPE string, - bestfit TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_column. - - TYPES: BEGIN OF lty_sheetview, - showgridlines TYPE zexcel_show_gridlines, - tabselected TYPE string, - zoomscalenormal TYPE string, - workbookviewid TYPE string, - showrowcolheaders TYPE string, - END OF lty_sheetview. - - TYPES: BEGIN OF lty_mergecell, - ref TYPE string, - END OF lty_mergecell. - - TYPES: BEGIN OF lty_row, - r TYPE string, - customheight TYPE string, - ht TYPE float, - spans TYPE string, - thickbot TYPE string, - customformat TYPE string, - thicktop TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_row. - - TYPES: BEGIN OF lty_page_setup, - id TYPE string, - orientation TYPE string, - scale TYPE string, - fittoheight TYPE string, - fittowidth TYPE string, - END OF lty_page_setup. - - TYPES: BEGIN OF lty_sheetformatpr, - customheight TYPE string, - defaultrowheight TYPE string, - customwidth TYPE string, - defaultcolwidth TYPE string, - END OF lty_sheetformatpr. - - TYPES: BEGIN OF lty_headerfooter, - alignwithmargins TYPE string, - differentoddeven TYPE string, - END OF lty_headerfooter. - - TYPES: BEGIN OF lty_tabcolor, - rgb TYPE string, - theme TYPE string, - END OF lty_tabcolor. - - TYPES: BEGIN OF lty_datavalidation, - type TYPE zexcel_data_val_type, - allowblank TYPE flag, - showinputmessage TYPE flag, - showerrormessage TYPE flag, - showdropdown TYPE flag, - operator TYPE zexcel_data_val_operator, - formula1 TYPE zexcel_validation_formula1, - formula2 TYPE zexcel_validation_formula1, - sqref TYPE string, - cell_column TYPE zexcel_cell_column_alpha, - cell_column_to TYPE zexcel_cell_column_alpha, - cell_row TYPE zexcel_cell_row, - cell_row_to TYPE zexcel_cell_row, - error TYPE string, - errortitle TYPE string, - prompt TYPE string, - prompttitle TYPE string, - errorstyle TYPE zexcel_data_val_error_style, - END OF lty_datavalidation. - - - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1', - lc_rel_drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_rel_hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', - lc_rel_printer TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings'. - - DATA: lo_ixml_worksheet TYPE REF TO if_ixml_document, - lo_ixml_cells TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, - lo_ixml_row_elem TYPE REF TO if_ixml_element, - lo_ixml_cell_elem TYPE REF TO if_ixml_element, - ls_cell TYPE lty_cell, - lv_index TYPE i, - lo_ixml_value_elem TYPE REF TO if_ixml_element, - lo_ixml_formula_elem TYPE REF TO if_ixml_element, - lv_cell_value TYPE zexcel_cell_value, - lv_cell_formula TYPE zexcel_cell_formula, - lv_cell_column TYPE zexcel_cell_column_alpha, - lv_cell_row TYPE zexcel_cell_row, - lo_excel_style TYPE REF TO zcl_excel_style, - lv_style_guid TYPE zexcel_cell_style, - - lo_ixml_imension_elem TYPE REF TO if_ixml_element, "#+234 - lv_dimension_range TYPE string, "#+234 - - lo_ixml_sheetview_elem TYPE REF TO if_ixml_element, - ls_sheetview TYPE lty_sheetview, - lo_ixml_pane_elem TYPE REF TO if_ixml_element, - ls_excel_pane TYPE zexcel_pane, - lv_pane_cell_row TYPE zexcel_cell_row, - lv_pane_cell_col_a TYPE zexcel_cell_column_alpha, - lv_pane_cell_col TYPE zexcel_cell_column, - - lo_ixml_mergecells TYPE REF TO if_ixml_node_collection, - lo_ixml_mergecell_elem TYPE REF TO if_ixml_element, - ls_mergecell TYPE lty_mergecell, - lv_merge_column_start TYPE zexcel_cell_column_alpha, - lv_merge_column_end TYPE zexcel_cell_column_alpha, - lv_merge_row_start TYPE zexcel_cell_row, - lv_merge_row_end TYPE zexcel_cell_row, - - lo_ixml_sheetformatpr_elem TYPE REF TO if_ixml_element, - ls_sheetformatpr TYPE lty_sheetformatpr, - lv_height TYPE float, - - lo_ixml_headerfooter_elem TYPE REF TO if_ixml_element, - ls_headerfooter TYPE lty_headerfooter, - ls_odd_header TYPE zexcel_s_worksheet_head_foot, - ls_odd_footer TYPE zexcel_s_worksheet_head_foot, - ls_even_header TYPE zexcel_s_worksheet_head_foot, - ls_even_footer TYPE zexcel_s_worksheet_head_foot, - lo_ixml_hf_value_elem TYPE REF TO if_ixml_element, - - lo_ixml_pagesetup_elem TYPE REF TO if_ixml_element, - lo_ixml_sheetpr TYPE REF TO if_ixml_element, - lv_fit_to_page TYPE string, - ls_pagesetup TYPE lty_page_setup, - - lo_ixml_columns TYPE REF TO if_ixml_node_collection, - lo_ixml_column_elem TYPE REF TO if_ixml_element, - ls_column TYPE lty_column, - lv_column_alpha TYPE zexcel_cell_column_alpha, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_outline_level TYPE int4, - - lo_ixml_tabcolor TYPE REF TO if_ixml_element, - ls_tabcolor TYPE lty_tabcolor, - ls_excel_s_tabcolor TYPE zexcel_s_tabcolor, - - lo_ixml_rows TYPE REF TO if_ixml_node_collection, - ls_row TYPE lty_row, - lv_max_col TYPE i, "for use with SPANS element -* lv_min_col TYPE i, "for use with SPANS element " not in use currently - lv_max_col_s TYPE char10, "for use with SPANS element - lv_min_col_s TYPE char10, "for use with SPANS element - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, -*--- End of current code aligning ------------------------------------------------------------------- - - lv_path TYPE string, - lo_ixml_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_ixml_rels_worksheet TYPE REF TO if_ixml_document, - lv_rels_worksheet_path TYPE string, - lv_stripped_name TYPE chkfile, - lv_dirname TYPE string, - - lt_external_hyperlinks TYPE gtt_external_hyperlinks, - ls_external_hyperlink LIKE LINE OF lt_external_hyperlinks, - - lo_ixml_datavalidations TYPE REF TO if_ixml_node_collection, - lo_ixml_datavalidation_elem TYPE REF TO if_ixml_element, - ls_datavalidation TYPE lty_datavalidation, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_datavalidation_range TYPE string, - lt_datavalidation_range TYPE TABLE OF string. - -*--------------------------------------------------------------------* -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets -*--------------------------------------------------------------------* - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = lv_stripped_name - file_path = lv_dirname. - CONCATENATE lv_dirname '_rels/' lv_stripped_name '.rels' - INTO lv_rels_worksheet_path. - TRY. " +#222 _rels/xxx.rels might not be present. If not found there can be no drawings --> just ignore this section - lo_ixml_rels_worksheet = me->get_ixml_from_zip_archive( lv_rels_worksheet_path ). - lo_ixml_node ?= lo_ixml_rels_worksheet->find_from_name( 'Relationship' ). - CATCH zcx_excel. "#EC NO_HANDLER +#222 - " +#222 No errorhandling necessary - node will be unbound if error occurs - ENDTRY. " +#222 - WHILE lo_ixml_node IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_node - CHANGING - cp_structure = ls_relationship ). - CONCATENATE lv_dirname ls_relationship-target INTO lv_path. - lv_path = resolve_path( lv_path ). - - CASE ls_relationship-type. - WHEN lc_rel_drawing. - " Read Drawings -* Issue # 339 Not all drawings are in the path mentioned below. -* Some Excel elements like textfields (which we don't support ) have a drawing-part in the relationsships -* but no "xl/drawings/_rels/drawing____.xml.rels" part. -* Since we don't support these there is no need to read them. Catching exceptions thrown -* in the "load_worksheet_drawing" shouldn't lead to an abortion of the reading - TRY. - me->load_worksheet_drawing( ip_path = lv_path - io_worksheet = io_worksheet ). - CATCH zcx_excel. "--> then ignore it - ENDTRY. - - WHEN lc_rel_printer. - " Read Printer settings - - WHEN lc_rel_hyperlink. - MOVE-CORRESPONDING ls_relationship TO ls_external_hyperlink. - INSERT ls_external_hyperlink INTO TABLE lt_external_hyperlinks. - - WHEN OTHERS. - ENDCASE. - - lo_ixml_node ?= lo_ixml_node->get_next( ). - ENDWHILE. - - - lo_ixml_worksheet = me->get_ixml_from_zip_archive( ip_path ). - - - lo_ixml_tabcolor ?= lo_ixml_worksheet->find_from_name( 'tabColor' ). - IF lo_ixml_tabcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_tabcolor - CHANGING - cp_structure = ls_tabcolor ). -* Theme not supported yet - IF ls_tabcolor-rgb IS NOT INITIAL. - ls_excel_s_tabcolor-rgb = ls_tabcolor-rgb. - io_worksheet->set_tabcolor( ls_excel_s_tabcolor ). - ENDIF. - ENDIF. - - lo_ixml_rows = lo_ixml_worksheet->get_elements_by_tag_name( name = 'row' ). - lo_ixml_iterator = lo_ixml_rows->create_iterator( ). - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_row_elem IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_row_elem - CHANGING - cp_structure = ls_row ). - SPLIT ls_row-spans AT ':' INTO lv_min_col_s lv_max_col_s. - lv_index = lv_max_col_s. - IF lv_index > lv_max_col. - lv_max_col = lv_index. - ENDIF. - lv_cell_row = ls_row-r. - IF ls_row-customheight = '1' - OR ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int - OR ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int - OR ls_row-outlinelevel > '0'. - lo_row_dimension = io_worksheet->get_row_dimension( lv_cell_row ). - IF ls_row-customheight = '1'. - lo_row_dimension->set_row_height( ls_row-ht ). - ENDIF. - - IF ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int. - lo_row_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int. - lo_row_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_row-outlinelevel > ''. -* outline_level = condense( row-outlineLevel ). "For basis 7.02 and higher - CONDENSE ls_row-outlinelevel. - lv_outline_level = ls_row-outlinelevel. - IF lv_outline_level > 0. - lo_row_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - ENDIF. - - lo_ixml_cells = lo_ixml_row_elem->get_elements_by_tag_name( name = 'c' ). - lo_ixml_iterator2 = lo_ixml_cells->create_iterator( ). - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - WHILE lo_ixml_cell_elem IS BOUND. - CLEAR: lv_cell_value, - lv_cell_formula, - lv_style_guid. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_cell_elem CHANGING cp_structure = ls_cell ). - - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'v' ). - - CASE ls_cell-t. - WHEN 's'. " String values are stored as index in shared string table - lv_index = lo_ixml_value_elem->get_value( ) + 1. - READ TABLE shared_strings INTO lv_cell_value INDEX lv_index. - WHEN 'inlineStr'. " inlineStr values are kept in special node - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'is' ). - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - WHEN OTHERS. "other types are stored directly - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - ENDCASE. - - CLEAR lv_style_guid. - "read style based on index - IF ls_cell-s IS NOT INITIAL. - lv_index = ls_cell-s + 1. - READ TABLE styles INTO lo_excel_style INDEX lv_index. - IF sy-subrc = 0. - lv_style_guid = lo_excel_style->get_guid( ). - ENDIF. - ENDIF. - - lo_ixml_formula_elem = lo_ixml_cell_elem->find_from_name( name = 'f' ). - IF lo_ixml_formula_elem IS BOUND. - lv_cell_formula = lo_ixml_formula_elem->get_value( ). -*--------------------------------------------------------------------* -* Begin of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - DATA: BEGIN OF ls_formula_attributes, - ref TYPE string, - si TYPE i, - t TYPE string, - END OF ls_formula_attributes, - ls_ref_formula TYPE ty_ref_formulae. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_formula_elem CHANGING cp_structure = ls_formula_attributes ). - IF ls_formula_attributes-t = 'shared'. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - - TRY. - CLEAR ls_ref_formula. - ls_ref_formula-sheet = io_worksheet. - ls_ref_formula-row = lv_cell_row. - ls_ref_formula-column = zcl_excel_common=>convert_column2int( lv_cell_column ). - ls_ref_formula-si = ls_formula_attributes-si. - ls_ref_formula-ref = ls_formula_attributes-ref. - ls_ref_formula-formula = lv_cell_formula. - INSERT ls_ref_formula INTO TABLE me->mt_ref_formulae. - CATCH cx_root. - BREAK-POINT. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* End of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - ENDIF. - - IF lv_cell_value IS NOT INITIAL - OR lv_cell_formula IS NOT INITIAL - OR lv_style_guid IS NOT INITIAL. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - io_worksheet->set_cell( ip_column = lv_cell_column " cell_elem Column - ip_row = lv_cell_row " cell_elem row_elem - ip_value = lv_cell_value " cell_elem Value - ip_formula = lv_cell_formula - ip_data_type = ls_cell-t - ip_style = lv_style_guid ). - ENDIF. - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - ENDWHILE. - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -*--------------------------------------------------------------------* -*#234 - column width not read correctly - begin of coding -* reason - libre office doesn't use SPAN in row - definitions -*--------------------------------------------------------------------* - IF lv_max_col = 0. - lo_ixml_imension_elem = lo_ixml_worksheet->find_from_name( name = 'dimension' ). - IF lo_ixml_imension_elem IS BOUND. - lv_dimension_range = lo_ixml_imension_elem->get_attribute( 'ref' ). - IF lv_dimension_range CS ':'. - REPLACE REGEX '\D+\d+:(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ELSE. - REPLACE REGEX '(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ENDIF. - lv_max_col = zcl_excel_common=>convert_column2int( lv_dimension_range ). - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -*#234 - column width not read correctly - end of coding -*--------------------------------------------------------------------* - - "Get the customized column width - lo_ixml_columns = lo_ixml_worksheet->get_elements_by_tag_name( name = 'col' ). - lo_ixml_iterator = lo_ixml_columns->create_iterator( ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_column_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_column_elem - CHANGING - cp_structure = ls_column ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int - OR ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int - OR ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int - OR ls_column-outlinelevel > '' - OR ls_column-style > ''. - lv_index = ls_column-min. - WHILE lv_index <= ls_column-max AND lv_index <= lv_max_col. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_index ). - lo_column_dimension = io_worksheet->get_column_dimension( lv_column_alpha ). - - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-width IS NOT INITIAL. "+#234 - lo_column_dimension->set_width( ls_column-width ). - ENDIF. - - IF ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int. - lo_column_dimension->set_auto_size( abap_true ). - ENDIF. - - IF ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int. - lo_column_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int. - lo_column_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_column-outlinelevel > ''. -* outline_level = condense( column-outlineLevel ). - CONDENSE ls_column-outlinelevel. - lv_outline_level = ls_column-outlinelevel. - IF lv_outline_level > 0. - lo_column_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - - IF ls_column-style > ''. - sy-index = ls_column-style + 1. - READ TABLE styles INTO lo_excel_style INDEX sy-index. - DATA: dummy_zexcel_cell_style TYPE zexcel_cell_style. - dummy_zexcel_cell_style = lo_excel_style->get_guid( ). - lo_column_dimension->set_column_style_by_guid( dummy_zexcel_cell_style ). - ENDIF. - - ADD 1 TO lv_index. - ENDWHILE. - ENDIF. - -* issue #367 - hide columns from - IF ls_column-max = zcl_excel_common=>c_excel_sheet_max_col. " Max = very right column - IF ls_column-hidden = 1 " all hidden - AND ls_column-min > 0. - io_worksheet->zif_excel_sheet_properties~hide_columns_from = zcl_excel_common=>convert_column2alpha( ls_column-min ). - ELSEIF ls_column-style > ''. - sy-index = ls_column-style + 1. - READ TABLE styles INTO lo_excel_style INDEX sy-index. - dummy_zexcel_cell_style = lo_excel_style->get_guid( ). -* Set style for remaining columns - io_worksheet->zif_excel_sheet_properties~set_style( dummy_zexcel_cell_style ). - ENDIF. - ENDIF. - - - ENDWHILE. - - "Now we need to get information from the sheetView node - lo_ixml_sheetview_elem = lo_ixml_worksheet->find_from_name( name = 'sheetView' ). - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetview_elem CHANGING cp_structure = ls_sheetview ). - IF ls_sheetview-showgridlines IS INITIAL OR - ls_sheetview-showgridlines = lc_xml_attr_true OR - ls_sheetview-showgridlines = lc_xml_attr_true_int. - "If the attribute is not specified or set to true, we will show grid lines - ls_sheetview-showgridlines = abap_true. - ELSE. - ls_sheetview-showgridlines = abap_false. - ENDIF. - io_worksheet->set_show_gridlines( ls_sheetview-showgridlines ). - - - "Add merge cell information - lo_ixml_mergecells = lo_ixml_worksheet->get_elements_by_tag_name( name = 'mergeCell' ). - lo_ixml_iterator = lo_ixml_mergecells->create_iterator( ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_mergecell_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_mergecell_elem - CHANGING - cp_structure = ls_mergecell ). - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = ls_mergecell-ref - IMPORTING - e_column_start = lv_merge_column_start - e_column_end = lv_merge_column_end - e_row_start = lv_merge_row_start - e_row_end = lv_merge_row_end ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - io_worksheet->set_merge( EXPORTING - ip_column_start = lv_merge_column_start - ip_column_end = lv_merge_column_end - ip_row = lv_merge_row_start - ip_row_to = lv_merge_row_end ). - ENDWHILE. - - " read sheet format properties - lo_ixml_sheetformatpr_elem = lo_ixml_worksheet->find_from_name( 'sheetFormatPr' ). - IF lo_ixml_sheetformatpr_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetformatpr_elem CHANGING cp_structure = ls_sheetformatpr ). - IF ls_sheetformatpr-customheight = '1'. - lv_height = ls_sheetformatpr-defaultrowheight. - lo_row_dimension = io_worksheet->get_default_row_dimension( ). - lo_row_dimension->set_row_height( lv_height ). - ENDIF. - - " TODO... column - ENDIF. - - " Read in page margins - me->load_worksheet_pagemargins( EXPORTING - io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - -* FitToPage - lo_ixml_sheetpr ?= lo_ixml_worksheet->find_from_name( 'pageSetUpPr' ). - IF lo_ixml_sheetpr IS BOUND. - - lv_fit_to_page = lo_ixml_sheetpr->get_attribute_ns( 'fitToPage' ). - IF lv_fit_to_page IS NOT INITIAL. - io_worksheet->sheet_setup->fit_to_page = 'X'. - ENDIF. - ENDIF. - " Read in page setup - lo_ixml_pagesetup_elem = lo_ixml_worksheet->find_from_name( 'pageSetup' ). - IF lo_ixml_pagesetup_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagesetup_elem - CHANGING - cp_structure = ls_pagesetup ). - io_worksheet->sheet_setup->orientation = ls_pagesetup-orientation. - io_worksheet->sheet_setup->scale = ls_pagesetup-scale. - IF io_worksheet->sheet_setup->fit_to_page = 'X'. - IF ls_pagesetup-fittowidth IS NOT INITIAL. - io_worksheet->sheet_setup->fit_to_width = ls_pagesetup-fittowidth. - ELSE. - io_worksheet->sheet_setup->fit_to_width = 1. " Default if not given - Excel doesn't write this to xml - ENDIF. - IF ls_pagesetup-fittoheight IS NOT INITIAL. - io_worksheet->sheet_setup->fit_to_height = ls_pagesetup-fittoheight. - ELSE. - io_worksheet->sheet_setup->fit_to_height = 1. " Default if not given - Excel doesn't write this to xml - ENDIF. - ENDIF. - ENDIF. - - - - " Read header footer - lo_ixml_headerfooter_elem = lo_ixml_worksheet->find_from_name( 'headerFooter' ). - IF lo_ixml_headerfooter_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_headerfooter_elem CHANGING cp_structure = ls_headerfooter ). - io_worksheet->sheet_setup->diff_oddeven_headerfooter = ls_headerfooter-differentoddeven. - - lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name( 'oddFooter' ). - IF lo_ixml_hf_value_elem IS NOT INITIAL. - ls_odd_footer-left_value = lo_ixml_hf_value_elem->get_value( ). - ENDIF. - -* 2do§1 Header/footer - " TODO.. get the rest. - - io_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_odd_header - ip_odd_footer = ls_odd_footer - ip_even_header = ls_even_header - ip_even_footer = ls_even_footer ). - - ENDIF. - - " Start fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - " Read pane - lo_ixml_pane_elem = lo_ixml_sheetview_elem->find_from_name( name = 'pane' ). - IF lo_ixml_pane_elem IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_pane_elem CHANGING cp_structure = ls_excel_pane ). - " Issue #194 - " Replace REGEX with method from the common class - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_excel_pane-topleftcell - IMPORTING - e_column = lv_pane_cell_col_a " Cell Column - e_row = lv_pane_cell_row ). " Natural number - lv_pane_cell_col = zcl_excel_common=>convert_column2int( lv_pane_cell_col_a ). - SUBTRACT 1 FROM: lv_pane_cell_col, - lv_pane_cell_row. - IF lv_pane_cell_col > 0 - AND lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row - ip_num_columns = lv_pane_cell_col ). - ELSEIF lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row ). - ELSE. - io_worksheet->freeze_panes( ip_num_columns = lv_pane_cell_col ). - ENDIF. - ENDIF. - " End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - - " Start fix 276 Read data validations - lo_ixml_datavalidations = lo_ixml_worksheet->get_elements_by_tag_name( name = 'dataValidation' ). - lo_ixml_iterator = lo_ixml_datavalidations->create_iterator( ). - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_datavalidation_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_datavalidation_elem - CHANGING - cp_structure = ls_datavalidation ). - CLEAR lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula1' ). - IF lo_ixml_formula_elem IS BOUND. - ls_datavalidation-formula1 = lo_ixml_formula_elem->get_value( ). - ENDIF. - CLEAR lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula2' ). - IF lo_ixml_formula_elem IS BOUND. - ls_datavalidation-formula2 = lo_ixml_formula_elem->get_value( ). - ENDIF. - SPLIT ls_datavalidation-sqref AT space INTO TABLE lt_datavalidation_range. - LOOP AT lt_datavalidation_range INTO lv_datavalidation_range. - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_datavalidation_range - IMPORTING - e_column_start = ls_datavalidation-cell_column - e_column_end = ls_datavalidation-cell_column_to - e_row_start = ls_datavalidation-cell_row - e_row_end = ls_datavalidation-cell_row_to ). - lo_data_validation = io_worksheet->add_new_data_validation( ). - lo_data_validation->type = ls_datavalidation-type. - lo_data_validation->allowblank = ls_datavalidation-allowblank. - IF ls_datavalidation-showinputmessage IS INITIAL. - lo_data_validation->showinputmessage = abap_false. - ELSE. - lo_data_validation->showinputmessage = abap_true. - ENDIF. - IF ls_datavalidation-showerrormessage IS INITIAL. - lo_data_validation->showerrormessage = abap_false. - ELSE. - lo_data_validation->showerrormessage = abap_true. - ENDIF. - IF ls_datavalidation-showdropdown IS INITIAL. - lo_data_validation->showdropdown = abap_false. - ELSE. - lo_data_validation->showdropdown = abap_true. - ENDIF. - lo_data_validation->operator = ls_datavalidation-operator. - lo_data_validation->formula1 = ls_datavalidation-formula1. - lo_data_validation->formula2 = ls_datavalidation-formula2. - lo_data_validation->prompttitle = ls_datavalidation-prompttitle. - lo_data_validation->prompt = ls_datavalidation-prompt. - lo_data_validation->errortitle = ls_datavalidation-errortitle. - lo_data_validation->error = ls_datavalidation-error. - lo_data_validation->errorstyle = ls_datavalidation-errorstyle. - lo_data_validation->cell_row = ls_datavalidation-cell_row. - lo_data_validation->cell_row_to = ls_datavalidation-cell_row_to. - lo_data_validation->cell_column = ls_datavalidation-cell_column. - lo_data_validation->cell_column_to = ls_datavalidation-cell_column_to. - ENDLOOP. - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - " End fix 276 Read data validations - - " Read hyperlinks - TRY. - me->load_worksheet_hyperlinks( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet - it_external_hyperlinks = lt_external_hyperlinks ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - TRY. - me->fill_row_outlines( io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - " Issue #366 - conditional formatting - TRY. - me->load_worksheet_cond_format( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - " Issue #377 - pagebreaks - TRY. - me->load_worksheet_pagebreaks( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore pagebreak reading errors - pass everything we were able to identify - ENDTRY. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_cond_format. - - DATA: lo_ixml_cond_formats TYPE REF TO if_ixml_node_collection, - lo_ixml_cond_format TYPE REF TO if_ixml_element, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_rules TYPE REF TO if_ixml_node_collection, - lo_ixml_rule TYPE REF TO if_ixml_element, - lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional. - - - DATA: lv_area TYPE string, - lt_areas TYPE STANDARD TABLE OF string WITH NON-UNIQUE DEFAULT KEY, - lv_area_start_row TYPE zexcel_cell_row, - lv_area_end_row TYPE zexcel_cell_row, - lv_area_start_col TYPE zexcel_cell_column_alpha, - lv_area_end_col TYPE zexcel_cell_column_alpha, - lv_rule TYPE zexcel_condition_rule. - - -* FIELD-SYMBOLS: <ls_external_hyperlink> LIKE LINE OF it_external_hyperlinks. - - lo_ixml_cond_formats = io_ixml_worksheet->get_elements_by_tag_name( name = 'conditionalFormatting' ). - lo_ixml_iterator = lo_ixml_cond_formats->create_iterator( ). - lo_ixml_cond_format ?= lo_ixml_iterator->get_next( ). - - WHILE lo_ixml_cond_format IS BOUND. - - CLEAR: lv_area, - lo_ixml_rule, - lo_style_conditional. - - -*--------------------------------------------------------------------* -* Get type of rule -*--------------------------------------------------------------------* - lo_ixml_rules = io_ixml_worksheet->get_elements_by_tag_name( name = 'cfRule' ). - lo_ixml_iterator2 = lo_ixml_rules->create_iterator( ). - lo_ixml_rule ?= lo_ixml_iterator2->get_next( ). -* IF lo_ixml_rule IS BOUND. - WHILE lo_ixml_rule IS BOUND. - lv_rule = lo_ixml_rule->get_attribute_ns( 'type' ). - CLEAR lo_style_conditional. - -*--------------------------------------------------------------------* -* Depending on ruletype get additional information -*--------------------------------------------------------------------* - CASE lv_rule. - - WHEN zcl_excel_style_conditional=>c_rule_cellis. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_ci( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - -* WHEN zcl_excel_style_conditional=>c_rule_containstext. -* - WHEN zcl_excel_style_conditional=>c_rule_databar. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_db( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_expression. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_ex( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_is( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_cs( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_top10. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_t10( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - - WHEN zcl_excel_style_conditional=>c_rule_above_average. - lo_style_conditional = io_worksheet->add_new_conditional_style( ). - load_worksheet_cond_format_aa( io_ixml_rule = lo_ixml_rule - io_style_conditional = lo_style_conditional ). - -* WHEN zcl_excel_style_conditional=>c_rule_none. -* - - WHEN OTHERS. - ENDCASE. -* ENDIF. - - IF lo_style_conditional IS BOUND. - lo_style_conditional->rule = lv_rule. - lo_style_conditional->priority = lo_ixml_rule->get_attribute_ns( 'priority' ). -*--------------------------------------------------------------------* -* Set area to which conditional formatting belongs -*--------------------------------------------------------------------* - lv_area = lo_ixml_cond_format->get_attribute_ns( 'sqref' ). - SPLIT lv_area AT space INTO TABLE lt_areas. - DELETE lt_areas WHERE table_line IS INITIAL. - LOOP AT lt_areas INTO lv_area. -* IF sy-tabix = 1. " Add futher style for next area -* lo_style_conditional2 = lo_style_conditional. -* ELSE. -* lo_style_conditional2 = io_worksheet->add_new_conditional_style( ). -* lo_style_conditional2->mode_cellis = lo_style_conditional->mode_cellis . -* lo_style_conditional2->mode_colorscale = lo_style_conditional->mode_colorscale . -* lo_style_conditional2->mode_databar = lo_style_conditional->mode_databar . -* lo_style_conditional2->mode_expression = lo_style_conditional->mode_expression . -* lo_style_conditional2->mode_iconset = lo_style_conditional->mode_iconset . -* lo_style_conditional2->mode_top10 = lo_style_conditional->mode_top10 . -* lo_style_conditional2->mode_above_average = lo_style_conditional->mode_above_average. -* lo_style_conditional2->priority = lo_style_conditional->priority . -* lo_style_conditional2->rule = lo_style_conditional->rule . -* ENDIF. - - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_area - IMPORTING - e_column_start = lv_area_start_col - e_column_end = lv_area_end_col - e_row_start = lv_area_start_row - e_row_end = lv_area_end_row ). -* lo_style_conditional2->set_range( ip_start_column = lv_area_start_col -* ip_stop_column = lv_area_end_col -* ip_start_row = lv_area_start_row -* ip_stop_row = lv_area_end_row ). - lo_style_conditional->add_range( ip_start_column = lv_area_start_col - ip_stop_column = lv_area_end_col - ip_start_row = lv_area_start_row - ip_stop_row = lv_area_end_row ). - ENDLOOP. - - ENDIF. - lo_ixml_rule ?= lo_ixml_iterator2->get_next( ). - ENDWHILE. - - - lo_ixml_cond_format ?= lo_ixml_iterator->get_next( ). - - ENDWHILE. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_aa. - DATA: lv_dxf_style_index TYPE i, - val TYPE string. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - -*--------------------------------------------------------------------* -* above or below average -*--------------------------------------------------------------------* - val = io_ixml_rule->get_attribute_ns( 'aboveAverage' ). - IF val = '0'. " 0 = below average - io_style_conditional->mode_above_average-above_average = space. - ELSE. - io_style_conditional->mode_above_average-above_average = 'X'. " Not present or <> 0 --> we use above average - ENDIF. - -*--------------------------------------------------------------------* -* Equal average also? -*--------------------------------------------------------------------* - CLEAR val. - val = io_ixml_rule->get_attribute_ns( 'equalAverage' ). - IF val = '1'. " 0 = below average - io_style_conditional->mode_above_average-equal_average = 'X'. - ELSE. - io_style_conditional->mode_above_average-equal_average = ' '. " Not present or <> 1 --> we use not equal average - ENDIF. - -*--------------------------------------------------------------------* -* Standard deviation instead of value ( 2nd stddev, 3rd stdev ) -*--------------------------------------------------------------------* - CLEAR val. - val = io_ixml_rule->get_attribute_ns( 'stdDev' ). - CASE val. - WHEN 1 - OR 2 - OR 3. " These seem to be supported by excel - don't try anything more - io_style_conditional->mode_above_average-standard_deviation = val. - ENDCASE. - -*--------------------------------------------------------------------* -* Cell formatting for top10 -*--------------------------------------------------------------------* - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_above_average-cell_style = <ls_dxf_style>-guid. - ENDIF. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_ci. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element, - lv_dxf_style_index TYPE i, - lo_excel_style LIKE LINE OF me->styles. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - - io_style_conditional->mode_cellis-operator = io_ixml_rule->get_attribute_ns( 'operator' ). - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_cellis-cell_style = <ls_dxf_style>-guid. - ENDIF. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'formula' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_cellis-formula = lo_ixml->get_value( ). - - WHEN 2. - io_style_conditional->mode_cellis-formula2 = lo_ixml->get_value( ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_cs. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element. - - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'cfvo' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_colorscale-cfvo1_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_colorscale-cfvo1_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 2. - io_style_conditional->mode_colorscale-cfvo2_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_colorscale-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 3. - io_style_conditional->mode_colorscale-cfvo3_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_colorscale-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'color' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_colorscale-colorrgb1 = lo_ixml->get_attribute_ns( 'rgb' ). - - WHEN 2. - io_style_conditional->mode_colorscale-colorrgb2 = lo_ixml->get_attribute_ns( 'rgb' ). - - WHEN 3. - io_style_conditional->mode_colorscale-colorrgb3 = lo_ixml->get_attribute_ns( 'rgb' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_db. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element. - - lo_ixml ?= io_ixml_rule->find_from_name( 'color' ). - IF lo_ixml IS BOUND. - io_style_conditional->mode_databar-colorrgb = lo_ixml->get_attribute_ns( 'rgb' ). - ENDIF. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'cfvo' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_databar-cfvo1_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_databar-cfvo1_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 2. - io_style_conditional->mode_databar-cfvo2_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_databar-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_ex. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element, - lv_dxf_style_index TYPE i, - lo_excel_style LIKE LINE OF me->styles. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_expression-cell_style = <ls_dxf_style>-guid. - ENDIF. - - lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'formula' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_expression-formula = lo_ixml->get_value( ). - - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_is. - DATA: lo_ixml_nodes TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml TYPE REF TO if_ixml_element, - lo_ixml_rule_iconset TYPE REF TO if_ixml_element. - - lo_ixml_rule_iconset ?= io_ixml_rule->get_first_child( ). - io_style_conditional->mode_iconset-iconset = lo_ixml_rule_iconset->get_attribute_ns( 'iconSet' ). - io_style_conditional->mode_iconset-showvalue = lo_ixml_rule_iconset->get_attribute_ns( 'showValue' ). - lo_ixml_nodes ?= lo_ixml_rule_iconset->get_elements_by_tag_name( 'cfvo' ). - lo_ixml_iterator = lo_ixml_nodes->create_iterator( ). - lo_ixml ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml IS BOUND. - - CASE sy-index. - WHEN 1. - io_style_conditional->mode_iconset-cfvo1_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo1_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 2. - io_style_conditional->mode_iconset-cfvo2_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo2_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 3. - io_style_conditional->mode_iconset-cfvo3_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo3_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 4. - io_style_conditional->mode_iconset-cfvo4_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo4_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN 5. - io_style_conditional->mode_iconset-cfvo5_type = lo_ixml->get_attribute_ns( 'type' ). - io_style_conditional->mode_iconset-cfvo5_value = lo_ixml->get_attribute_ns( 'val' ). - - WHEN OTHERS. - EXIT. - ENDCASE. - - lo_ixml ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -ENDMETHOD. - - - - - METHOD load_worksheet_cond_format_t10. - DATA: lv_dxf_style_index TYPE i. - - FIELD-SYMBOLS: <ls_dxf_style> LIKE LINE OF me->mt_dxf_styles. - - io_style_conditional->mode_top10-topxx_count = io_ixml_rule->get_attribute_ns( 'rank' ). " Top10, Top20, Top 50... - - io_style_conditional->mode_top10-percent = io_ixml_rule->get_attribute_ns( 'percent' ). " Top10 percent instead of Top10 values - if io_style_conditional->mode_top10-percent = '1'. - io_style_conditional->mode_top10-percent = 'X'. - else. - io_style_conditional->mode_top10-percent = ' '. - endif. - - io_style_conditional->mode_top10-bottom = io_ixml_rule->get_attribute_ns( 'bottom' ). " Bottom10 instead of Top10 - if io_style_conditional->mode_top10-bottom = '1'. - io_style_conditional->mode_top10-bottom = 'X'. - else. - io_style_conditional->mode_top10-bottom = ' '. - endif. -*--------------------------------------------------------------------* -* Cell formatting for top10 -*--------------------------------------------------------------------* - lv_dxf_style_index = io_ixml_rule->get_attribute_ns( 'dxfId' ). - READ TABLE me->mt_dxf_styles ASSIGNING <ls_dxf_style> WITH KEY dxf = lv_dxf_style_index. - IF sy-subrc = 0. - io_style_conditional->mode_top10-cell_style = <ls_dxf_style>-guid. - ENDIF. - -ENDMETHOD. - - - - - - method LOAD_WORKSHEET_DRAWING. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: drawing TYPE REF TO if_ixml_document, - anchors TYPE REF TO if_ixml_node_collection, - node TYPE REF TO if_ixml_element, - coll_length TYPE i, - iterator TYPE REF TO if_ixml_node_iterator, - anchor_elem TYPE REF TO if_ixml_element, - - relationship TYPE t_relationship, - rel_drawings TYPE t_rel_drawings, - rel_drawing TYPE t_rel_drawing, - rels_drawing TYPE REF TO if_ixml_document, - rels_drawing_path TYPE string, - stripped_name TYPE chkfile, - dirname TYPE string, - - path TYPE string, - path2 TYPE text255, - file_ext2 TYPE char10. - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = stripped_name - file_path = dirname. - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_drawing_path. - rels_drawing_path = resolve_path( rels_drawing_path ). - rels_drawing = me->get_ixml_from_zip_archive( rels_drawing_path ). - node ?= rels_drawing->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - rel_drawing-id = relationship-id. - - CONCATENATE dirname relationship-target INTO path. - path = resolve_path( path ). - rel_drawing-content = me->get_from_zip_archive( path ). "------------> This is for template usage - - path2 = path. - zcl_excel_common=>split_file( EXPORTING ip_file = path2 - IMPORTING ep_extension = file_ext2 ). - rel_drawing-file_ext = file_ext2. - - "-------------Added by Alessandro Iannacci - Should load graph xml - CASE relationship-type. - WHEN lc_rel_chart. - "Read chart xml - rel_drawing-content_xml = me->get_ixml_from_zip_archive( path ). - WHEN OTHERS. - ENDCASE. - "---------------------------- - - - APPEND rel_drawing TO rel_drawings. - - node ?= node->get_next( ). - ENDWHILE. - - drawing = me->get_ixml_from_zip_archive( ip_path ). - -* one-cell anchor ************** - anchors = drawing->get_elements_by_tag_name( name = 'oneCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - -* two-cell anchor ****************** - anchors = drawing->get_elements_by_tag_name( name = 'twoCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - - endmethod. - - - - - - - METHOD load_worksheet_hyperlinks. - - DATA: lo_ixml_hyperlinks TYPE REF TO if_ixml_node_collection, - lo_ixml_hyperlink TYPE REF TO if_ixml_element, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lv_row TYPE zexcel_cell_row, - lv_column TYPE zexcel_cell_column_alpha, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lv_value TYPE zexcel_cell_value. - - DATA: BEGIN OF ls_hyperlink, - ref TYPE string, - display TYPE string, - location TYPE string, - tooltip TYPE string, - r_id TYPE string, - END OF ls_hyperlink. - - FIELD-SYMBOLS: <ls_external_hyperlink> LIKE LINE OF it_external_hyperlinks. - - lo_ixml_hyperlinks = io_ixml_worksheet->get_elements_by_tag_name( name = 'hyperlink' ). - lo_ixml_iterator = lo_ixml_hyperlinks->create_iterator( ). - lo_ixml_hyperlink ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_hyperlink IS BOUND. - - CLEAR ls_hyperlink. - CLEAR lo_hyperlink. - - ls_hyperlink-ref = lo_ixml_hyperlink->get_attribute_ns( 'ref' ). - ls_hyperlink-display = lo_ixml_hyperlink->get_attribute_ns( 'display' ). - ls_hyperlink-location = lo_ixml_hyperlink->get_attribute_ns( 'location' ). - ls_hyperlink-tooltip = lo_ixml_hyperlink->get_attribute_ns( 'tooltip' ). - ls_hyperlink-r_id = lo_ixml_hyperlink->get_attribute( name = 'id' - namespace = 'r' ). - IF ls_hyperlink-r_id IS INITIAL. " Internal link - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = ls_hyperlink-location ). - ELSE. " External link - READ TABLE it_external_hyperlinks ASSIGNING <ls_external_hyperlink> WITH TABLE KEY id = ls_hyperlink-r_id. - IF sy-subrc = 0. - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = <ls_external_hyperlink>-target ). - ENDIF. - ENDIF. - IF lo_hyperlink IS BOUND. " because of unsupported external links - - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_hyperlink-ref - IMPORTING - e_row = lv_row - e_column = lv_column ). -* Currently it is not allowed to pass a hyperlink w/o text, but text has already been read. -* So just reread it and be done with it - io_worksheet->get_cell( EXPORTING - ip_column = lv_column - ip_row = lv_row - IMPORTING - ep_value = lv_value ). - io_worksheet->set_cell( ip_column = lv_column - ip_row = lv_row - ip_value = lv_value - ip_hyperlink = lo_hyperlink ). - ENDIF. - - lo_ixml_hyperlink ?= lo_ixml_iterator->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_pagebreaks. - - DATA: lo_node TYPE REF TO if_ixml_element, - lo_ixml_rowbreaks TYPE REF TO if_ixml_node_collection, - lo_ixml_colbreaks TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_rowbreak TYPE REF TO if_ixml_element, - lo_ixml_colbreak TYPE REF TO if_ixml_element, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_count TYPE i. - - - DATA: lt_pagebreaks TYPE STANDARD TABLE OF zcl_excel_worksheet_pagebreaks=>ts_pagebreak_at, - lo_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks. - - FIELD-SYMBOLS: <ls_pagebreak_row> LIKE LINE OF lt_pagebreaks. - FIELD-SYMBOLS: <ls_pagebreak_col> LIKE LINE OF lt_pagebreaks. - -*--------------------------------------------------------------------* -* Get minimal number of cells where to add pagebreaks -* Since rows and columns are handled in separate nodes -* Build table to identify these cells -*--------------------------------------------------------------------* - lo_node ?= io_ixml_worksheet->find_from_name( 'rowBreaks' ). - check lo_node is bound. - lo_ixml_rowbreaks = lo_node->get_elements_by_tag_name( name = 'brk' ). - lo_ixml_iterator = lo_ixml_rowbreaks->create_iterator( ). - lo_ixml_rowbreak ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_rowbreak IS BOUND. - APPEND INITIAL LINE TO lt_pagebreaks ASSIGNING <ls_pagebreak_row>. - <ls_pagebreak_row>-cell_row = lo_ixml_rowbreak->get_attribute_ns( 'id' ). - - lo_ixml_rowbreak ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - CHECK <ls_pagebreak_row> IS ASSIGNED. - - lo_node ?= io_ixml_worksheet->find_from_name( 'colBreaks' ). - check lo_node is bound. - lo_ixml_colbreaks = lo_node->get_elements_by_tag_name( name = 'brk' ). - lo_ixml_iterator = lo_ixml_colbreaks->create_iterator( ). - lo_ixml_colbreak ?= lo_ixml_iterator->get_next( ). - CLEAR lv_count. - WHILE lo_ixml_colbreak IS BOUND. - ADD 1 TO lv_count. - READ TABLE lt_pagebreaks INDEX lv_count ASSIGNING <ls_pagebreak_col>. - IF sy-subrc <> 0. - APPEND INITIAL LINE TO lt_pagebreaks ASSIGNING <ls_pagebreak_col>. - <ls_pagebreak_col>-cell_row = <ls_pagebreak_row>-cell_row. - ENDIF. - <ls_pagebreak_col>-cell_column = lo_ixml_colbreak->get_attribute_ns( 'id' ). - - lo_ixml_colbreak ?= lo_ixml_iterator->get_next( ). - ENDWHILE. -*--------------------------------------------------------------------* -* Finally add each pagebreak -*--------------------------------------------------------------------* - lo_pagebreaks = io_worksheet->get_pagebreaks( ). - LOOP AT lt_pagebreaks ASSIGNING <ls_pagebreak_row>. - lo_pagebreaks->add_pagebreak( ip_column = <ls_pagebreak_row>-cell_column - ip_row = <ls_pagebreak_row>-cell_row ). - ENDLOOP. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_pagemargins. - - TYPES: BEGIN OF lty_page_margins, - footer TYPE string, - header TYPE string, - bottom TYPE string, - top TYPE string, - right TYPE string, - left TYPE string, - END OF lty_page_margins. - - DATA:lo_ixml_pagemargins_elem TYPE REF TO if_ixml_element, - ls_pagemargins TYPE lty_page_margins. - - - lo_ixml_pagemargins_elem = io_ixml_worksheet->find_from_name( 'pageMargins' ). - IF lo_ixml_pagemargins_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagemargins_elem - CHANGING - cp_structure = ls_pagemargins ). - io_worksheet->sheet_setup->margin_bottom = zcl_excel_common=>excel_string_to_number( ls_pagemargins-bottom ). - io_worksheet->sheet_setup->margin_footer = zcl_excel_common=>excel_string_to_number( ls_pagemargins-footer ). - io_worksheet->sheet_setup->margin_header = zcl_excel_common=>excel_string_to_number( ls_pagemargins-header ). - io_worksheet->sheet_setup->margin_left = zcl_excel_common=>excel_string_to_number( ls_pagemargins-left ). - io_worksheet->sheet_setup->margin_right = zcl_excel_common=>excel_string_to_number( ls_pagemargins-right ). - io_worksheet->sheet_setup->margin_top = zcl_excel_common=>excel_string_to_number( ls_pagemargins-top ). - ENDIF. - -ENDMETHOD. - - - - - METHOD read_from_applserver. - - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_max_length_line TYPE i, - lv_actual_length_line TYPE i, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - DESCRIBE FIELD ls_binary_data LENGTH lv_max_length_line IN BYTE MODE. - OPEN DATASET lv_filename FOR INPUT IN BINARY MODE. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - WHILE sy-subrc = 0. - - READ DATASET lv_filename INTO ls_binary_data MAXIMUM LENGTH lv_max_length_line ACTUAL LENGTH lv_actual_length_line. - APPEND ls_binary_data TO lt_binary_data. - lv_filelength = lv_filelength + lv_actual_length_line. - - ENDWHILE. - CLOSE DATASET lv_filename. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - ENDMETHOD. - - - - - - METHOD read_from_local_file. - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - cl_gui_frontend_services=>gui_upload( EXPORTING - filename = lv_filename - filetype = 'BIN' " We are basically working with zipped directories --> force binary read - IMPORTING - filelength = lv_filelength - CHANGING - data_tab = lt_binary_data - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 ). - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - - ENDMETHOD. - - - - - method RESOLVE_PATH. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Determine whether the replacement should be done -* iterative to allow /../../.. or something alike -* 2do§2 Determine whether /./ has to be supported as well -* 2do§3 Create unit-test for this method -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-11-11 -* - ... -* changes: replaced previous coding by regular expression -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 This routine will receive a path, that may have a relative pathname (/../) included somewhere -* The output should be a resolved path without relative references -* Example: Input xl/worksheets/../drawings/drawing1.xml -* Output xl/drawings/drawing1.xml -*--------------------------------------------------------------------* - - rp_result = ip_path. -*--------------------------------------------------------------------* -* §1 Remove relative pathnames -*--------------------------------------------------------------------* -* Regular expression [^/]*/\.\./ -* [^/]* --> any number of characters other than / -* followed by /\.\./ --> the sequence /../ -* ==> worksheets/../ will be found in the example -*--------------------------------------------------------------------* - REPLACE REGEX '[^/]*/\.\./' IN rp_result WITH ``. - - - endmethod. - - - method RESOLVE_REFERENCED_FORMULAE. - TYPES: BEGIN OF ty_referenced_cells, - sheet TYPE REF TO zcl_excel_worksheet, - si TYPE i, - row_from TYPE i, - row_to TYPE i, - col_from TYPE i, - col_to TYPE i, - formula TYPE string, - ref_cell TYPE char10, - END OF ty_referenced_cells. - - DATA: ls_ref_formula LIKE LINE OF me->mt_ref_formulae, - lts_referenced_cells TYPE SORTED TABLE OF ty_referenced_cells WITH NON-UNIQUE KEY sheet si row_from row_to col_from col_to, - ls_referenced_cell LIKE LINE OF lts_referenced_cells, - lv_col_from TYPE zexcel_cell_column_alpha, - lv_col_to TYPE zexcel_cell_column_alpha, - lv_resulting_formula TYPE string, - lv_current_cell TYPE char10. - - - me->mt_ref_formulae = me->mt_ref_formulae. - -*--------------------------------------------------------------------* -* Get referenced Cells, Build ranges for easy lookup -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref <> space. - - CLEAR ls_referenced_cell. - ls_referenced_cell-sheet = ls_ref_formula-sheet. - ls_referenced_cell-si = ls_ref_formula-si. - ls_referenced_cell-formula = ls_ref_formula-formula. - - TRY. - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = ls_ref_formula-ref - IMPORTING e_column_start = lv_col_from - e_column_end = lv_col_to - e_row_start = ls_referenced_cell-row_from - e_row_end = ls_referenced_cell-row_to ). - ls_referenced_cell-col_from = zcl_excel_common=>convert_column2int( lv_col_from ). - ls_referenced_cell-col_to = zcl_excel_common=>convert_column2int( lv_col_to ). - - - CLEAR ls_referenced_cell-ref_cell. - TRY. - ls_referenced_cell-ref_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - ls_referenced_cell-ref_cell+3 = ls_ref_formula-row. - CONDENSE ls_referenced_cell-ref_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - INSERT ls_referenced_cell INTO TABLE lts_referenced_cells. - CATCH zcx_excel. - ENDTRY. - - ENDLOOP. - -* break x0009004. -*--------------------------------------------------------------------* -* For each referencing cell determine the referenced cell -* and resolve the formula -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref = space. - - - CLEAR lv_current_cell. - TRY. - lv_current_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - lv_current_cell+3 = ls_ref_formula-row. - CONDENSE lv_current_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - LOOP AT lts_referenced_cells INTO ls_referenced_cell WHERE sheet = ls_ref_formula-sheet - AND si = ls_ref_formula-si - AND row_from <= ls_ref_formula-row - AND row_to >= ls_ref_formula-row - AND col_from <= ls_ref_formula-column - AND col_to >= ls_ref_formula-column. - - TRY. - - lv_resulting_formula = zcl_excel_common=>determine_resulting_formula( iv_reference_cell = ls_referenced_cell-ref_cell - iv_reference_formula = ls_referenced_cell-formula - iv_current_cell = lv_current_cell ). - - ls_referenced_cell-sheet->set_cell_formula( ip_column = ls_ref_formula-column - ip_row = ls_ref_formula-row - ip_formula = lv_resulting_formula ). - CATCH zcx_excel. - ENDTRY. - EXIT. - - ENDLOOP. - - ENDLOOP. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - METHOD load_vbaproject. - - DATA lv_content TYPE xstring. - - lv_content = me->get_from_zip_archive( ip_path ). - - ip_excel->zif_excel_book_vba_project~set_vbaproject( lv_content ). - - ENDMETHOD. - - - method LOAD_WORKBOOK. - super->load_workbook( EXPORTING iv_workbook_full_filename = iv_workbook_full_filename - io_excel = io_excel ). - - CONSTANTS: lc_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject'. - - DATA: rels_workbook_path TYPE string, - rels_workbook TYPE REF TO if_ixml_document, - path TYPE string, - node TYPE REF TO if_ixml_element, - workbook TYPE REF TO if_ixml_document, - stripped_name TYPE chkfile, - dirname TYPE string, - relationship TYPE t_relationship, - fileversion TYPE t_fileversion, - workbookpr TYPE t_workbookpr. - - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = stripped_name - file_path = dirname. - - " Read Workbook Relationships - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_workbook_path. - - rels_workbook = me->get_ixml_from_zip_archive( rels_workbook_path ). - - node ?= rels_workbook->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - CASE relationship-type. - WHEN lc_vba_project. - " Read VBA binary - CONCATENATE dirname relationship-target INTO path. - me->load_vbaproject( ip_path = path - ip_excel = io_excel ). - WHEN OTHERS. - ENDCASE. - - node ?= node->get_next( ). - ENDWHILE. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'fileVersion' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = fileversion ). - - io_excel->zif_excel_book_vba_project~set_codename( fileversion-codename ). - ENDIF. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'workbookPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = workbookpr ). - - io_excel->zif_excel_book_vba_project~set_codename_pr( workbookpr-codename ). - ENDIF. - - endmethod. - - - METHOD load_worksheet. - - super->load_worksheet( EXPORTING ip_path = ip_path - io_worksheet = io_worksheet ). - - DATA: path TYPE string, - node TYPE REF TO if_ixml_element, - worksheet TYPE REF TO if_ixml_document, - sheetpr TYPE t_sheetpr. - - " Read Workbook codeName - worksheet = me->get_ixml_from_zip_archive( ip_path ). - node ?= worksheet->find_from_name( 'sheetPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = sheetpr ). - IF sheetpr-codename IS NOT INITIAL. - io_worksheet->zif_excel_sheet_vba_project~set_codename_pr( sheetpr-codename ). - ENDIF. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - METHOD is_security_enabled. - IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. - ep_security_enabled = abap_true. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - orientation = me->c_orientation_default. - -* default margins - margin_bottom = '0.75'. - margin_footer = '0.3'. - margin_header = '0.3'. - margin_left = '0.7'. - margin_right = '0.7'. - margin_top = '0.75'. - -* clear page settings - CLEAR: black_and_white, - cell_comments, - copies, - draft, - errors, - first_page_number, - fit_to_page, - fit_to_height, - fit_to_width, - horizontal_dpi, - orientation, - page_order, - paper_height, - paper_size, - paper_width, - scale, - use_first_page_num, - use_printer_defaults, - vertical_dpi. - endmethod. - - - - - - - method GET_HEADER_FOOTER_STRING. -* ---------------------------------------------------------------------- - DATA: lc_marker_left(2) TYPE c VALUE '&L' - , lc_marker_right(2) TYPE c VALUE '&R' - , lc_marker_center(2) TYPE c VALUE '&C' - , lv_value TYPE string - . -* ---------------------------------------------------------------------- - IF ep_odd_header IS SUPPLIED. - - IF me->odd_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'CENTER' ). - CONCATENATE ep_odd_header lc_marker_center lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'RIGHT' ). - CONCATENATE ep_odd_header lc_marker_right lv_value INTO ep_odd_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_odd_footer IS SUPPLIED. - - IF me->odd_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'CENTER' ). - CONCATENATE ep_odd_footer lc_marker_center lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'RIGHT' ). - CONCATENATE ep_odd_footer lc_marker_right lv_value INTO ep_odd_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_header IS SUPPLIED. - - IF me->even_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'CENTER' ). - CONCATENATE ep_even_header lc_marker_center lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'RIGHT' ). - CONCATENATE ep_even_header lc_marker_right lv_value INTO ep_even_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_footer IS SUPPLIED. - - IF me->even_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'CENTER' ). - CONCATENATE ep_even_footer lc_marker_center lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'RIGHT' ). - CONCATENATE ep_even_footer lc_marker_right lv_value INTO ep_even_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - endmethod. - - - - - - method PROCESS_HEADER_FOOTER. - -* ---------------------------------------------------------------------- -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size - - DATA: lv_fname(12) TYPE c - , lv_string TYPE string - . - - FIELD-SYMBOLS: <lv_value> TYPE string - , <ls_font> TYPE zexcel_s_style_font - . - -* ---------------------------------------------------------------------- - CONCATENATE ip_side '_VALUE' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <lv_value>. - - CONCATENATE ip_side '_FONT' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <ls_font>. - - IF <ls_font> IS ASSIGNED AND <lv_value> IS ASSIGNED. - - IF <ls_font>-name IS NOT INITIAL. - CONCATENATE '&"' <ls_font>-name ',' INTO rv_processed_string. - ELSE. - rv_processed_string = '&"-,'. - ENDIF. - - IF <ls_font>-bold = abap_true. - CONCATENATE rv_processed_string 'Bold"' INTO rv_processed_string. - ELSE. - CONCATENATE rv_processed_string 'Standard"' INTO rv_processed_string. - ENDIF. - - IF <ls_font>-size IS NOT INITIAL. - lv_string = <ls_font>-size. - CONCATENATE rv_processed_string '&' lv_string INTO rv_processed_string. - ENDIF. - - CONCATENATE rv_processed_string <lv_value> INTO rv_processed_string. - - ENDIF. -* ---------------------------------------------------------------------- - - endmethod. - - - - - - - method SET_HEADER_FOOTER. - -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size -* -* usefull placeholders, which can be used in header/footer value strings -* '&P' - page number -* '&N' - total number of pages -* '&D' - Date -* '&T' - Time -* '&F' - File Name -* '&Z' - Path -* '&A' - Sheet name -* new line via class constant CL_ABAP_CHAR_UTILITIES=>newline -* -* Example Value String 'page &P of &N' -* -* DO NOT USE &L , &C or &R which automatically created as position markers - - me->odd_header = ip_odd_header. - me->odd_footer = ip_odd_footer. - me->even_header = ip_even_header. - me->even_footer = ip_even_footer. - - IF me->even_header IS NOT INITIAL OR me->even_footer IS NOT INITIAL. - me->diff_oddeven_headerfooter = abap_true. - ENDIF. - - - endmethod. - - - - - - - - - - method SET_PAGE_MARGINS. - DATA: lv_coef TYPE f, - lv_unit TYPE string. - - lv_unit = ip_unit. - TRANSLATE lv_unit TO UPPER CASE. - - CASE lv_unit. - WHEN 'IN'. lv_coef = 1. - WHEN 'CM'. lv_coef = '0.393700787'. - WHEN 'MM'. lv_coef = '0.0393700787'. - ENDCASE. - - IF ip_bottom IS SUPPLIED. margin_bottom = lv_coef * ip_bottom. ENDIF. - IF ip_footer IS SUPPLIED. margin_footer = lv_coef * ip_footer. ENDIF. - IF ip_header IS SUPPLIED. margin_header = lv_coef * ip_header. ENDIF. - IF ip_left IS SUPPLIED. margin_left = lv_coef * ip_left. ENDIF. - IF ip_right IS SUPPLIED. margin_right = lv_coef * ip_right. ENDIF. - IF ip_top IS SUPPLIED. margin_top = lv_coef * ip_top. ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - METHOD constructor. - - - CREATE OBJECT font. - CREATE OBJECT fill. - CREATE OBJECT borders. - CREATE OBJECT alignment. - CREATE OBJECT number_format. - CREATE OBJECT protection. - -* Start of insertion # issue 139 - Dateretention of cellstyles - IF ip_guid IS NOT INITIAL. - me->guid = ip_guid. - ELSE. -* End of insertion # issue 139 - Dateretention of cellstyles -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = me->guid. - me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call -* Start of insertion # issue 139 - Dateretention of cellstyles - ENDIF. -* End of insertion # issue 139 - Dateretention of cellstyles - -ENDMETHOD. - - - - method GET_GUID. - - - ep_guid = me->guid. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - - - styles->add( ip_style ). - endmethod. - - - method CLEAR. - - - styles->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT styles. - endmethod. - - - - - method GET. - - - eo_style ?= styles->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - - - eo_iterator ?= styles->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - - - is_empty = styles->if_object_collection~is_empty( ). - endmethod. - - - - - method REGISTER_NEW_STYLE. - - - me->add( io_style ). - ep_style_code = me->size( ) - 1. "style count starts from 0 - endmethod. - - - - method REMOVE. - - - styles->remove( ip_style ). - endmethod. - - - - method SIZE. - - - ep_size = styles->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - styles_conditional->add( ip_style_conditional ). - endmethod. - - - method CLEAR. - styles_conditional->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT styles_conditional. - - endmethod. - - - - - method GET. - DATA lv_index TYPE i. - lv_index = ip_index. - eo_style_conditional ?= styles_conditional->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= styles_conditional->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = styles_conditional->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - styles_conditional->remove( ip_style_conditional ). - endmethod. - - - - method SIZE. - ep_size = styles_conditional->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - horizontal = me->c_horizontal_general. - vertical = me->c_vertical_bottom. - wrapText = abap_false. - shrinkToFit = abap_false. - endmethod. - - - - method GET_STRUCTURE. - - es_alignment-horizontal = me->horizontal. - es_alignment-vertical = me->vertical. - es_alignment-textrotation = me->textrotation. - es_alignment-wraptext = me->wraptext. - es_alignment-shrinktofit = me->shrinktofit. - es_alignment-indent = me->indent. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - border_style = zcl_excel_style_border=>c_border_none. - border_color-theme = zcl_excel_style_color=>c_theme_not_set. - border_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - method GET_STRUCTURE. -*initialize colors to 'not set' - es_fill-left_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-left_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-right_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-right_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-top_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-top_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-bottom_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-bottom_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-diagonal_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-diagonal_color-theme = zcl_excel_style_color=>c_theme_not_set. - -* Check if all borders is set otherwise check single border - IF me->allborders IS BOUND. - es_fill-left_color = me->allborders->border_color. - es_fill-left_style = me->allborders->border_style. - es_fill-right_color = me->allborders->border_color. - es_fill-right_style = me->allborders->border_style. - es_fill-top_color = me->allborders->border_color. - es_fill-top_style = me->allborders->border_style. - es_fill-bottom_color = me->allborders->border_color. - es_fill-bottom_style = me->allborders->border_style. - ELSE. - IF me->left IS BOUND. - es_fill-left_color = me->left->border_color. - es_fill-left_style = me->left->border_style. - ENDIF. - IF me->right IS BOUND. - es_fill-right_color = me->right->border_color. - es_fill-right_style = me->right->border_style. - ENDIF. - IF me->top IS BOUND. - es_fill-top_color = me->top->border_color. - es_fill-top_style = me->top->border_style. - ENDIF. - IF me->down IS BOUND. - es_fill-bottom_color = me->down->border_color. - es_fill-bottom_style = me->down->border_style. - ENDIF. - ENDIF. - -* Check if diagonal is set - IF me->diagonal IS BOUND. - es_fill-diagonal_color = me->diagonal->border_color. - es_fill-diagonal_style = me->diagonal->border_style. - CASE me->diagonal_mode. - WHEN 1. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 0. - WHEN 2. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 1. - WHEN 3. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 1. - WHEN OTHERS. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 0. - ENDCASE. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD create_new_arbg_int. - DATA: lv_red TYPE int1, - lv_green TYPE int1, - lv_blue TYPE int1, - lv_hex TYPE x, - lv_char_red TYPE zexcel_style_color_component, - lv_char_green TYPE zexcel_style_color_component, - lv_char_blue TYPE zexcel_style_color_component. - - lv_red = iv_red MOD 256. - lv_green = iv_green MOD 256. - lv_blue = iv_blue MOD 256. - - lv_hex = lv_red. - lv_char_red = lv_hex. - - lv_hex = lv_green. - lv_char_green = lv_hex. - - lv_hex = lv_blue. - lv_char_blue = lv_hex. - - - concatenate zcl_excel_style_color=>c_alpha lv_char_red lv_char_green lv_char_blue into rv_color_argb. - - -ENDMETHOD. - - - - - - - METHOD create_new_argb. - - CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD add_range. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string, - lv_col_alpha TYPE string, - lv_coords1 TYPE string, - lv_coords2 TYPE string. - - - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). -* me->mv_cell_data-cell_row = 1. -* me->mv_cell_data-cell_column = lv_column. -* - lv_col_alpha = ip_start_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE lv_col_alpha lv_row_alpha INTO lv_coords1. - - IF ip_stop_column IS NOT INITIAL. - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - ELSE. - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - ENDIF. - - IF ip_stop_row IS NOT INITIAL. " If we don't get explicitly a stop column use start column - lv_row_alpha = ip_stop_row. - ELSE. - lv_row_alpha = ip_start_row. - ENDIF. - IF ip_stop_column IS NOT INITIAL. " If we don't get explicitly a stop column use start column - lv_col_alpha = ip_stop_column. - ELSE. - lv_col_alpha = ip_start_column. - ENDIF. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE lv_col_alpha lv_row_alpha INTO lv_coords2. - IF lv_coords2 IS NOT INITIAL AND lv_coords2 <> lv_coords1. - CONCATENATE me->mv_rule_range ` ` lv_coords1 ':' lv_coords2 INTO me->mv_rule_range. - ELSE. - CONCATENATE me->mv_rule_range ` ` lv_coords1 INTO me->mv_rule_range. - ENDIF. - SHIFT me->mv_rule_range LEFT DELETING LEADING space. - -ENDMETHOD. - - - METHOD constructor. - - DATA: ls_iconset TYPE zexcel_conditional_iconset. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - - - me->rule = zcl_excel_style_conditional=>c_rule_none. -* me->iconset->operator = zcl_excel_style_conditional=>c_operator_none. - me->mode_iconset = ls_iconset. - me->priority = 1. - -* inizialize dimension range - me->MV_RULE_RANGE = 'A1'. -ENDMETHOD. - - - - - - - - - - - - - - - - - METHOD factory_cond_style_iconset. - -*--------------------------------------------------------------------* -* Work in progress -* Missing: LE or LT may be specified --> extend structure ZEXCEL_CONDITIONAL_ICONSET to hold this information as well -*--------------------------------------------------------------------* - -* DATA: lv_needed_values TYPE i. -* CASE icon_type. -* -* WHEN 'C_ICONSET_3ARROWS' -* OR 'C_ICONSET_3ARROWSGRAY' -* OR 'C_ICONSET_3FLAGS' -* OR 'C_ICONSET_3SIGNS' -* OR 'C_ICONSET_3SYMBOLS' -* OR 'C_ICONSET_3SYMBOLS2' -* OR 'C_ICONSET_3TRAFFICLIGHTS' -* OR 'C_ICONSET_3TRAFFICLIGHTS2'. -* lv_needed_values = 3. -* -* WHEN 'C_ICONSET_4ARROWS' -* OR 'C_ICONSET_4ARROWSGRAY' -* OR 'C_ICONSET_4RATING' -* OR 'C_ICONSET_4REDTOBLACK' -* OR 'C_ICONSET_4TRAFFICLIGHTS'. -* lv_needed_values = 4. -* -* WHEN 'C_ICONSET_5ARROWS' -* OR 'C_ICONSET_5ARROWSGRAY' -* OR 'C_ICONSET_5QUARTERS' -* OR 'C_ICONSET_5RATING'. -* lv_needed_values = 5. -* -* WHEN OTHERS. -* RETURN. -* ENDCASE. - -ENDMETHOD. - - - - METHOD get_dimension_range. - - ep_dimension_range = me->mv_rule_range. - -ENDMETHOD. - - - - - - - METHOD set_range. - - CLEAR: me->mv_rule_range. - - me->add_range( ip_start_row = ip_start_row - ip_start_column = ip_start_column - ip_stop_row = ip_stop_row - ip_stop_column = ip_stop_column ). - -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method build_gradient. - check check_filltype_is_gradient( ) eq abap_true. - clear gradtype. - case filltype. - when c_fill_gradient_horizontal90. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontal270. - gradtype-degree = '270'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontalb. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_vertical. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_fromcenter. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - when c_fill_gradient_diagonal45. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal45b. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_diagonal135. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal135b. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_cornerlt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_cornerlb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '1'. - gradtype-top = '1'. - when c_fill_gradient_cornerrt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-left = '1'. - gradtype-right = '1'. - when c_fill_gradient_cornerrb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - endcase. - - endmethod. "build_gradient - - - - method check_filltype_is_gradient. - case filltype. - when c_fill_gradient_horizontal90 or - c_fill_gradient_horizontal270 or - c_fill_gradient_horizontalb or - c_fill_gradient_vertical or - c_fill_gradient_fromcenter or - c_fill_gradient_diagonal45 or - c_fill_gradient_diagonal45b or - c_fill_gradient_diagonal135 or - c_fill_gradient_diagonal135b or - c_fill_gradient_cornerlt or - c_fill_gradient_cornerlb or - c_fill_gradient_cornerrt or - c_fill_gradient_cornerrb. - rv_is_gradient = abap_true. - endcase. - endmethod. "check_filltype_is_gradient - - - method constructor. - filltype = zcl_excel_style_fill=>c_fill_none. - fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. - bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. - rotation = 0. - - endmethod. "CONSTRUCTOR - - - - method get_structure. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgcolor = me->fgcolor. - es_fill-bgcolor = me->bgcolor. - me->build_gradient( ). - es_fill-gradtype = me->gradtype. - endmethod. "GET_STRUCTURE - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CALCULATE_TEXT_WIDTH. - " Addition to solve issue #120, contribution by Stefan Schmoecker - r_width = strlen( i_text ). - " use scale factor based on default 11 - " ( don't know where defaultsetting is stored currently ) - r_width = r_width * me->size / 11. - endmethod. - - - method CONSTRUCTOR. - me->color-rgb = zcl_excel_style_color=>c_black. - me->color-theme = zcl_excel_style_color=>c_theme_not_set. - me->color-indexed = zcl_excel_style_color=>c_indexed_not_set. - me->scheme = zcl_excel_style_font=>c_scheme_minor. - me->underline_mode = zcl_excel_style_font=>c_underline_single. - endmethod. - - - - method GET_STRUCTURE. - - es_font-bold = me->bold. - es_font-italic = me->italic. - es_font-underline = me->underline. - es_font-underline_mode = me->underline_mode. - es_font-strikethrough = me->strikethrough. - es_font-size = me->size. - es_font-color = me->color. - es_font-name = me->name. - es_font-family = me->family. - es_font-scheme = me->scheme. - - endmethod. - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD class_constructor. - - DATA: ls_num_format LIKE LINE OF mt_built_in_num_formats. - - DEFINE predefined_format. - ls_num_format-id = &1. - create object ls_num_format-format. - ls_num_format-format->format_code = &2. - insert ls_num_format into table mt_built_in_num_formats. - END-OF-DEFINITION. - - CLEAR mt_built_in_num_formats. - - predefined_format '1' zcl_excel_style_number_format=>c_format_number. " '0'. - predefined_format '2' zcl_excel_style_number_format=>c_format_number_00. " '0.00'. - predefined_format '3' zcl_excel_style_number_format=>c_format_number_comma_sep0. " '#,##0'. - predefined_format '4' zcl_excel_style_number_format=>c_format_number_comma_sep1. " '#,##0.00'. - predefined_format '5' zcl_excel_style_number_format=>c_format_currency_simple. " '$#,##0_);($#,##0)'. - predefined_format '6' zcl_excel_style_number_format=>c_format_currency_simple_red. " '$#,##0_);[Red]($#,##0)'. - predefined_format '7' zcl_excel_style_number_format=>c_format_currency_simple2. " '$#,##0.00_);($#,##0.00)'. - predefined_format '8' zcl_excel_style_number_format=>c_format_currency_simple_red2. " '$#,##0.00_);[Red]($#,##0.00)'. - predefined_format '9' zcl_excel_style_number_format=>c_format_percentage. " '0%'. - predefined_format '10' zcl_excel_style_number_format=>c_format_percentage_00. " '0.00%'. - predefined_format '11' zcl_excel_style_number_format=>c_format_scientific. " '0.00E+00'. - predefined_format '12' zcl_excel_style_number_format=>c_format_fraction_1. " '# ?/?'. - predefined_format '13' zcl_excel_style_number_format=>c_format_fraction_2. " '# ??/??'. - predefined_format '14' zcl_excel_style_number_format=>c_format_date_xlsx14. "'m/d/yyyy'. <-- should have been 'mm-dd-yy' like constant in zcl_excel_style_number_format - predefined_format '15' zcl_excel_style_number_format=>c_format_date_xlsx15. "'d-mmm-yy'. - predefined_format '16' zcl_excel_style_number_format=>c_format_date_xlsx16. "'d-mmm'. - predefined_format '17' zcl_excel_style_number_format=>c_format_date_xlsx17. "'mmm-yy'. - predefined_format '18' zcl_excel_style_number_format=>c_format_date_time1. " 'h:mm AM/PM'. - predefined_format '19' zcl_excel_style_number_format=>c_format_date_time2. " 'h:mm:ss AM/PM'. - predefined_format '20' zcl_excel_style_number_format=>c_format_date_time3. " 'h:mm'. - predefined_format '21' zcl_excel_style_number_format=>c_format_date_time4. " 'h:mm:ss'. - predefined_format '22' zcl_excel_style_number_format=>c_format_date_xlsx22. " 'm/d/yyyy h:mm'. - - - predefined_format '37' zcl_excel_style_number_format=>c_format_xlsx37. " '#,##0_);(#,##0)'. - predefined_format '38' zcl_excel_style_number_format=>c_format_xlsx38. " '#,##0_);[Red](#,##0)'. - predefined_format '39' zcl_excel_style_number_format=>c_format_xlsx39. " '#,##0.00_);(#,##0.00)'. - predefined_format '40' zcl_excel_style_number_format=>c_format_xlsx40. " '#,##0.00_);[Red](#,##0.00)'. - predefined_format '41' zcl_excel_style_number_format=>c_format_xlsx41. " '_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)'. - predefined_format '42' zcl_excel_style_number_format=>c_format_xlsx42. " '_($* #,##0_);_($* (#,##0);_($* "-"_);_(@_)'. - predefined_format '43' zcl_excel_style_number_format=>c_format_xlsx43. " '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)'. - predefined_format '44' zcl_excel_style_number_format=>c_format_xlsx44. " '_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)'. - predefined_format '45' zcl_excel_style_number_format=>c_format_date_xlsx45. " 'mm:ss'. - predefined_format '46' zcl_excel_style_number_format=>c_format_date_xlsx46. " '[h]:mm:ss'. - predefined_format '47' zcl_excel_style_number_format=>c_format_date_xlsx47. " 'mm:ss.0'. - predefined_format '48' zcl_excel_style_number_format=>c_format_special_01. " '##0.0E+0'. - predefined_format '49' zcl_excel_style_number_format=>c_format_text. " '@'. - -ENDMETHOD. - - - method CONSTRUCTOR. - format_code = me->c_format_general. - endmethod. - - - - method GET_STRUCTURE. - ep_number_format-numfmt = me->format_code. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method CONSTRUCTOR. - locked = me->c_protection_locked. - hidden = me->c_protection_unhidden. - endmethod. - - - - method GET_STRUCTURE. - ep_protection-locked = me->locked. - ep_protection-hidden = me->hidden. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method GET_BOTTOM_ROW_INTEGER. - DATA: lv_table_lines TYPE i. - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - IF settings-bottom_right_row IS NOT INITIAL. -* ev_row = zcl_excel_common=>convert_column2int( settings-bottom_right_row ). " del issue #246 - ev_row = settings-bottom_right_row . " ins issue #246 - EXIT. - ENDIF. - - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - - ev_row = settings-top_left_row + lv_table_lines. - - IF me->has_totals( ) = abap_true." ???? AND ip_include_totals_row = abap_true. - ADD 1 TO ev_row. - ENDIF. - endmethod. - - - - method GET_ID. - ov_id = id. - endmethod. - - - - method GET_NAME. - - IF me->name IS INITIAL. - me->name = zcl_excel_common=>number_to_excel_string( ip_value = me->id ). - CONCATENATE 'table' me->name INTO me->name. - ENDIF. - - ov_name = me->name. - endmethod. - - - - - method GET_REFERENCE. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - lv_right_column TYPE zexcel_cell_column_alpha, - ls_field_catalog TYPE zexcel_s_fieldcatalog, - lv_bottom_row TYPE zexcel_cell_row, - lv_top_row_string(10) TYPE c, - lv_bottom_row_string(10) TYPE c. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - -*column - lv_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - lv_table_lines = 0. - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO lv_table_lines. - ENDLOOP. - lv_column = lv_column + lv_table_lines - 1. - lv_right_column = zcl_excel_common=>convert_column2alpha( lv_column ). - -*row - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - lv_bottom_row = settings-top_left_row + lv_table_lines . - - IF me->has_totals( ) = abap_true AND ip_include_totals_row = abap_true. - ADD 1 TO lv_bottom_row. - ENDIF. - - lv_top_row_string = zcl_excel_common=>number_to_excel_string( settings-top_left_row ). - lv_bottom_row_string = zcl_excel_common=>number_to_excel_string( lv_bottom_row ). - - CONCATENATE settings-top_left_column lv_top_row_string - ':' - lv_right_column lv_bottom_row_string INTO ov_reference. - - endmethod. - - - - - method GET_RIGHT_COLUMN_INTEGER. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - ls_field_catalog TYPE zexcel_s_fieldcatalog. - - IF settings-bottom_right_column IS NOT INITIAL. - ev_column = zcl_excel_common=>convert_column2int( settings-bottom_right_column ). - EXIT. - ENDIF. - - ev_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO ev_column. - ENDLOOP. - - endmethod. - - - - - - method GET_TOTALS_FORMULA. - CONSTANTS: lc_function_id_sum TYPE string VALUE '109', - lc_function_id_min TYPE string VALUE '105', - lc_function_id_max TYPE string VALUE '104', - lc_function_id_count TYPE string VALUE '103', - lc_function_id_average TYPE string VALUE '101'. - - DATA: lv_function_id TYPE string. - - CASE ip_function. - WHEN zcl_excel_table=>totals_function_sum. - lv_function_id = lc_function_id_sum. - - WHEN zcl_excel_table=>totals_function_min. - lv_function_id = lc_function_id_min. - - WHEN zcl_excel_table=>totals_function_max. - lv_function_id = lc_function_id_max. - - WHEN zcl_excel_table=>totals_function_count. - lv_function_id = lc_function_id_count. - - WHEN zcl_excel_table=>totals_function_average. - lv_function_id = lc_function_id_average. - - WHEN zcl_excel_table=>totals_function_custom. " issue #292 - RETURN. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid totals formula. See ZCL_ for possible values'. - ENDCASE. - - CONCATENATE 'SUBTOTAL(' lv_function_id ',[' ip_column '])' INTO ep_formula. - endmethod. - - - - method HAS_TOTALS. - DATA: ls_field_catalog TYPE zexcel_s_fieldcatalog. - - ep_result = abap_false. - - LOOP AT fieldcat INTO ls_field_catalog. - IF ls_field_catalog-totals_function IS NOT INITIAL. - ep_result = abap_true. - EXIT. - ENDIF. - ENDLOOP. - - endmethod. - - - - METHOD set_data. - - DATA lr_temp TYPE REF TO data. - - FIELD-SYMBOLS: <lt_table_temp> TYPE ANY TABLE, - <lt_table> TYPE ANY TABLE. - - GET REFERENCE OF ir_data INTO lr_temp. - ASSIGN lr_temp->* TO <lt_table_temp>. - CREATE DATA table_data LIKE <lt_table_temp>. - ASSIGN me->table_data->* TO <lt_table>. - <lt_table> = <lt_table_temp>. - -ENDMETHOD. - - - - method SET_ID. - id = iv_id. - endmethod. - - - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - -*&---------------------------------------------------------------------* -*& Class (Implementation) C_OI_PROXY_ERROR -*&---------------------------------------------------------------------* -CLASS c_oi_proxy_error IMPLEMENTATION. - METHOD constructor. -* IMPORTING object_name TYPE c -* method_name TYPE c. - error_nr = ret_call_not_flushed. - me->i_oi_error~error_code = c_oi_errors=>ret_call_not_flushed. - me->i_oi_error~is_flushed = ' '. - me->i_oi_error~has_failed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->message_id = 'SOFFICEINTEGRATION'. - me->message_nr = '899'. - me->param1 = object_name. - me->param2 = method_name. - ENDMETHOD. "constructor - - METHOD i_oi_error~flush_error. - IF error_nr EQ 0. - me->i_oi_error~error_code = c_oi_errors=>ret_ok. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_failed = ' '. - me->i_oi_error~has_succeeded = 'X'. - me->message_id = ''. - me->message_nr = '000'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - IMPORTING - retcode = me->i_oi_error~error_code. - ELSEIF error_nr EQ ret_call_not_flushed. - "call still not flushed - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = me->param2 "method name - objectname = me->param1 - IMPORTING - retcode = me->i_oi_error~error_code. - ELSE. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->i_oi_error~has_failed = 'X'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = error_string - IMPORTING - retcode = me->i_oi_error~error_code. - CALL METHOD c_oi_errors=>get_message - IMPORTING - message_id = me->message_id - message_number = me->message_nr - param1 = me->param1 - param2 = me->param2 - param3 = me->param3 - param4 = me->param4. - ENDIF. - ENDMETHOD. "i_oi_error~flush_error - - METHOD i_oi_error~raise_message. -* IMPORTING type TYPE c. -* EXCEPTIONS message_raised flush_failed. - IF me->i_oi_error~has_succeeded IS INITIAL. - IF NOT me->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. "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->param1. param2 = me->param2. - param3 = me->param3. param4 = me->param4. - - message_id = me->message_id. - message_number = me->message_nr. - ENDMETHOD. "i_oi_error~get_message -ENDCLASS. "C_OI_PROXY_ERROR - -*&---------------------------------------------------------------------* -*& Class (Implementation) CL_GRID_ACCESSION -*&---------------------------------------------------------------------* -CLASS lcl_gui_alv_grid IMPLEMENTATION. - - METHOD get_alv_attributes. - CREATE DATA et_table LIKE io_grid->mt_outtab. - et_table = io_grid->mt_outtab. - ENDMETHOD. "get_data - -ENDCLASS. "CL_GRID_ACCESSION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method'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. "c_oi_proxy_error DEFINITION - -*--------------------------------------------------------------------* -* 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 " ALV grid - EXPORTING - et_table TYPE REF TO data. " dta table - -ENDCLASS. "lcl_gui_alv_grid DEFINITION - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_col_from, - me->print_title_col_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_row_from, - me->print_title_row_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS. - ev_columns_from = me->print_title_col_from. - ev_columns_to = me->print_title_col_to. - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS. - ev_rows_from = me->print_title_row_from. - ev_rows_to = me->print_title_row_to. - endmethod. - - - 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=>convert_column2int( iv_columns_from ). - lv_col_to_int = zcl_excel_common=>convert_column2int( iv_columns_to ). - -*--------------------------------------------------------------------* -* Check if valid range is supplied -*--------------------------------------------------------------------* - IF lv_col_from_int < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF lv_col_from_int > lv_col_to_int. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_col_from = iv_columns_from. - me->print_title_col_to = iv_columns_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - endmethod. - - - 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 < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF iv_rows_from > iv_rows_to. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_row_from = iv_rows_from. - me->print_title_row_to = iv_rows_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - 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->excel->get_default_style( ). - ENDIF. - endmethod. - - - method ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE. - - zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_showzero. - zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. - zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>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. - - - method ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE. - zif_excel_sheet_properties~style = ip_style. - endmethod. - - - method ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE. - - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_unprotected. - CLEAR me->zif_excel_sheet_protection~password. - me->zif_excel_sheet_protection~auto_filter = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_hyperlinks = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_noactive. -* me->zif_excel_sheet_protection~password = zif_excel_sheet_protection=>c_noactive. "issue #68 - me->zif_excel_sheet_protection~pivot_tables = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_locked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_unlocked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sort = zif_excel_sheet_protection=>c_noactive. - - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME. - me->zif_excel_sheet_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - - method ADD_DRAWING. - CASE ip_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - drawings->include( ip_drawing ). - WHEN zcl_excel_drawing=>type_chart. - charts->include( ip_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_CONDITIONAL_STYLE. - - CREATE OBJECT eo_conditional_style. - conditional_styles->add( eo_conditional_style ). - endmethod. - - - - method ADD_NEW_DATA_VALIDATION. - - CREATE OBJECT eo_data_validation. - data_validations->add( eo_data_validation ). - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - - - - - - method BIND_ALV. - data: lo_converter type ref to zcl_excel_converter. - - create object lo_converter. - - try. - lo_converter->convert( - exporting - io_alv = io_alv - it_table = it_table - i_row_int = i_top - i_column_int = i_left - i_table = i_table - i_style_table = table_style - io_worksheet = me - changing - co_excel = excel ). - catch zcx_excel . - endtry. - - endmethod. - - - - - - - - - - - - - - - - - - - - - - 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'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. "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: <f_collect00> type standard table. - field-symbols: <f_collect01> type standard table. - field-symbols: <f_collect02> type standard table. - field-symbols: <f_collect03> type standard table. - field-symbols: <f_collect04> type standard table. - field-symbols: <f_collect05> type standard table. - field-symbols: <f_collect06> type standard table. - field-symbols: <f_collect07> type standard table. - field-symbols: <f_collect08> type standard table. - field-symbols: <f_collect09> type standard table. - -* table before append subtotal lines - field-symbols: <f_alv_tab> 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: <f_excel_tab> type standard table. - field-symbols: <f_excel_line> type any. - -* dyn subtotal tables - field-symbols: <f_collect_tab> type standard table. - field-symbols: <f_collect_line> type any. - - field-symbols: <f_filter_idx_line> like line of LT_FILTER_IDX_KKBLO. - field-symbols: <f_fieldcat_line> like line of LT_FIELDCAT_KKBLO. - field-symbols: <f_grouplevels_line> like line of LT_GROUPLEVELS_KKBLO. - field-symbols: <f_line> 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. " currency / quantity flag - data: wa_t006 type t006. " decimal place of unit - - data: l_num type i. " table columns number - data: l_typ type c. " table type - data: wa type ref to data. - data: l_int type i. - data: l_counter type i. - - field-symbols: <f_excel_column> type any. - field-symbols: <f_fcat_column> 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. " exporting column number - data vkeycount type i. - data all type i. - data mit type i value 1. " index of recent row? - data li_col_pos type i value 1. " column position - data li_col_num type i. " table columns number - field-symbols: <line> type any. - field-symbols: <item> 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. "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 'X'. - data: li_head_top type i. "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->is_destroyed - IMPORTING - ret_value = l_is_closed. - -* if dun detroyed yet: close -> release proxy - - IF l_is_closed is initial. - call method lo_proxy->close_document -* EXPORTING -* do_save = do_save - IMPORTING - error = lo_error - retcode = lc_retcode. - ENDIF. - - call method lo_proxy->release_document - IMPORTING - error = lo_error - retcode = lC_retcode. - - else. - lc_retcode = c_oi_errors=>ret_document_not_open. - ENDIF. - -* Detroy control container - - IF lo_control is not initial. - CALL METHOD lo_control->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=>ret_ok. - close_document. - call method lo_error->raise_message - EXPORTING - type = 'E'. - clear: lo_error. - endif. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* SESSION 0: DOI CONSTRUCTOR -*--------------------------------------------------------------------* - -* check active windown - - call function 'GUI_HAS_ACTIVEX' - 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=>get_container_control - IMPORTING - control = lo_control - retcode = lC_retcode. - - error_doi. - -* Initialize Container control - - CALL METHOD lo_control->init_control - EXPORTING - parent = CL_GUI_CONTAINER=>DEFAULT_SCREEN - r3_application_name = '' - inplace_enabled = 'X' - no_flush = 'X' - register_on_close_event = 'X' - register_on_custom_event = 'X' - IMPORTING - error = lO_ERROR - retcode = lc_retcode. - - error_doi. - -* Get Proxy Document: -* check exist of document proxy, if exist -> 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 = 'Excel.Sheet.8'. - else. -* xlsx format, doctype = soi_doctype_excel_sheet - l_doctype_excel_sheet = 'Excel.Sheet'. - ENDIF. - - CALL METHOD lo_control->get_document_proxy - EXPORTING - document_type = l_doctype_excel_sheet - register_container = 'X' - 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->create_document - EXPORTING - create_view_data = 'X' - open_inplace = 'X' - no_flush = 'X' - 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->open_document - EXPORTING - document_url = i_document_url - open_inplace = 'X' - no_flush = 'X' - IMPORTING - error = lo_error - retcode = lc_retcode. - - error_doi. - - endif. - -* Check Spreadsheet Interface of Document Proxy - - CALL METHOD lo_proxy->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->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=>SCREEN0. - - call method lo_grid->get_alv_attributes - EXPORTING - io_grid = io_alv - IMPORTING - Et_table = lt_alv. - - assign lt_alv->* to <f_alv_tab>. - -* fieldcat - - CALL METHOD iO_alv->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 = '1'. - endif. - clear: wa_fieldcat_lvc. - -* sort table - - CALL METHOD IO_ALV->GET_SORT_CRITERIA - IMPORTING - ET_SORT = lt_sort_lvc. - - -* filter index - - CALL METHOD IO_ALV->GET_FILTERED_ENTRIES - IMPORTING - ET_FILTERED_ENTRIES = lt_filter_idx_lvc. - -* group level + subtotal - - CALL METHOD IO_ALV->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->* to <f_collect00>. - assign lt_collect01->* to <f_collect01>. - assign lt_collect02->* to <f_collect02>. - assign lt_collect03->* to <f_collect03>. - assign lt_collect04->* to <f_collect04>. - assign lt_collect05->* to <f_collect05>. - assign lt_collect06->* to <f_collect06>. - assign lt_collect07->* to <f_collect07>. - assign lt_collect08->* to <f_collect08>. - assign lt_collect09->* to <f_collect09>. - -* transfer to KKBLO struct - - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - 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 = <f_alv_tab> - EXCEPTIONS - IT_DATA_MISSING = 1 - IT_FIELDCAT_LVC_MISSING = 2 - OTHERS = 3. - IF SY-SUBRC <> 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 & total line - - create data lt_excel like <f_ALV_TAB>. - assign lt_excel->* to <f_excel_tab>. - - loop at <f_alv_tab> assigning <f_line>. - l_save_index = sy-tabix. - -* filter base on filter index table - - read table LT_FILTER_IDX_KKBLO assigning <f_filter_idx_line> - with key index = l_save_index - binary search. - if sy-subrc ne 0. - append <f_line> to <f_excel_tab>. - endif. - -* append subtotal lines - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - with key index_to = l_save_index - binary search. - if sy-subrc = 0. - l_tabix = sy-tabix. - do. - if <f_grouplevels_line>-subtot eq 'X' and - <f_grouplevels_line>-hide_level is initial and - <f_grouplevels_line>-cindex_from ne 0. - -* dynamic append subtotal line to excel table base on grouplevel table -* ex <f_GROUPLEVELS_line>-level = 1 -* then <f_collect_tab> = '<F_COLLECT01>' - - l_collect = <f_grouplevels_line>-level. - condense l_collect. - concatenate '<F_COLLECT0' - l_collect '>' -* '->*' - into l_collect. - - assign (l_collect) to <f_collect_tab>. - -* incase there're more than 1 total line of group, at the same level -* for example: subtotal of multi currency - - LOOP AT <f_collect_tab> assigning <f_collect_line>. - IF sy-tabix between <f_grouplevels_line>-cindex_from - and <f_grouplevels_line>-cindex_to. - - - append <f_collect_line> to <f_excel_tab>. - -* 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 'SUBTOT' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - clear: subrangeitem. - - ENDIF. - ENDLOOP. - unassign: <f_collect_tab>. - unassign: <f_collect_line>. - clear: l_collect. - endif. - -* check next subtotal level of group - - unassign: <f_grouplevels_line>. - add 1 to l_tabix. - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - index l_tabix. - if sy-subrc ne 0 - or <f_grouplevels_line>-index_to ne l_save_index. - exit. - endif. - - unassign: - <f_collect_tab>, - <f_collect_line>. - - enddo. - endif. - - clear: - l_tabix, - l_save_index. - - unassign: - <f_filter_idx_line>, - <f_grouplevels_line>. - - endloop. - -* free local data - - unassign: - <f_line>, - <f_collect_tab>, - <f_collect_line>, - <f_fieldcat_line>. - -* append grand total line - - IF <f_collect00> is assigned. - assign <f_collect00> to <f_collect_tab>. - if <f_collect_tab> is not initial. - LOOP AT <f_collect_tab> assigning <f_collect_line>. - - append <f_collect_line> to <f_excel_tab>. - -* 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 'TOTAL' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - ENDLOOP. - endif. - ENDIF. - - clear: - subrangeitem, - LT_SORT_KKBLO, - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>. - - unassign: - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>, - <f_collect_tab>, - <f_collect_line>. - -*--------------------------------------------------------------------* -* SESSION 3: MAP DATA TO SEMANTIC TABLE -*--------------------------------------------------------------------* - -* get dependent field field: currency and quantity - - create data wa like line of <f_excel_tab>. - assign wa->* to <f_excel_line>. - - describe field <f_excel_line> type l_typ components l_num. - - do l_num times. - l_save_index = sy-index. - assign component l_save_index of structure <f_excel_line> - to <f_excel_column>. - if sy-subrc ne 0. - message e059(0k) with 'FATAL ERROR' raising fatal_error. - endif. - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname. - assign component <f_fieldcat_line>-fieldname - of structure <f_excel_line> to <f_fcat_column>. - - describe distance between <f_excel_column> and <f_fcat_column> - 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 = <f_fieldcat_line>-fieldname. - wa_column_index-tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-cfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-ctabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - - if <f_fieldcat_line>-qfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-qfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-qtabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - -* rewrite field data type - - if <f_fieldcat_line>-inttype = 'X' - and <f_fieldcat_line>-datatype(3) = 'INT'. - <f_fieldcat_line>-inttype = 'I'. - endif. - - endloop. - - clear: l_save_index. - unassign: <f_fieldcat_line>. - - enddo. - -* build semantic tables - - l_n_hrz_keys = 1. - -* Get keyfigures - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - - clear wa_sema. - clear wa_hkey. - -* Units belong to keyfigures -> display as str - - read table lt_fieldcat_depf into wa_fieldcat_depf with key - fieldname = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-tabname. - - if sy-subrc = 0. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - -* Keyfigures - - else. - case <f_fieldcat_line>-datatype. - when 'QUAN'. - wa_sema-col_typ = 'N03'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. " no dependent field - endif. - - when 'DATS'. - wa_sema-col_typ = 'DAT'. - wa_sema-col_ops = 'NOP'. - - when 'CHAR' OR 'UNIT' OR 'CUKY'. " Added fieldformats UNIT and CUKY - dd. 26-10-2012 Wouter Heuvelmans - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. " dependent field - -* incase numeric, ex '00120' -> display as '12' - - when 'NUMC'. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - - when others. - wa_sema-col_typ = 'NUM'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. - 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 = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-cfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-qfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-qfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-currency is initial. - - select * from tcurx into table lt_tcurx. - sort lt_tcurx. - read table lt_tcurx into wa_tcurx - with key currkey = <f_fieldcat_line>-currency. - if sy-subrc = 0. - l_num_help = wa_tcurx-currdec. - concatenate 'N' 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 = <f_fieldcat_line>-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: - <f_fieldcat_line>, - <f_excel_line>, - <f_excel_column>, - <f_fcat_column>. - -*--------------------------------------------------------------------* -* 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=>ret_interface_not_supported. - call method c_oi_errors=>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 = 'OLE_DOCUMENT_PROXY' - method_name = 'get_ranges_names'. - - call method c_oi_errors=>add_error - EXPORTING - error = l_error. - - - describe table lt_sema lines datareal. - describe table <f_excel_tab> 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 ('.', ',', ...) in Office config - - call method lo_proxy->get_application_property - EXPORTING - property_name = 'INTERNATIONAL' - subproperty_name = 'DECIMAL_SEPARATOR' - 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 <g> type any. - data search_item(4) value ' #'. - - concatenate ',' decimal '.' decimal into comma_elim. - - data help type i. " table (with subtotal) line number - - help = datac. - - data: rowmax type i value 1. " header row number - data: columnmax type i value 0. " header columns number - - loop at lt_hkey into hkeyitem. - if hkeyitem-col_no > columnmax. - columnmax = hkeyitem-col_no. - endif. - - if hkeyitem-row_no > rowmax. - rowmax = hkeyitem-row_no. - endif. - endloop. - - data: hkeycolumns type i. " header columns no - - hkeycolumns = columnmax. - - if hkeycolumns < l_n_att_cols. - hkeycolumns = l_n_att_cols. - endif. - - columnmax = 0. - - loop at lt_vkey into vkeyitem. - if vkeyitem-col_no > columnmax. - columnmax = vkeyitem-col_no. - endif. - endloop. - - data overflow type i value 1. - data testname(10) type c. - data temp2 type i. " 1st item row position in excel - data realmit type i value 1. - data realoverflow type i value 1. " row index in content - - call method lo_spreadsheet->screen_update - EXPORTING - updating = ''. - - call method lo_spreadsheet->load_lib. - - data: str(40) type c. " range names of columns range (w/o col header) - data: rows type i. " 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 'TITLE'. - 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->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 'H'. "title - li_font_size = 16. - li_font_bold = 1. - li_font_italic = -1. - when 'S'. "subtile - li_font_size = -1. - li_font_bold = 1. - li_font_italic = -1. - when others. "'A' comment - li_font_size = -1. - li_font_bold = -1. - li_font_italic = 1. - endcase. - - call method lo_spreadsheet->set_font - EXPORTING - rangename = ls_commentary_range - family = '' - 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->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 = 'DAT' or semaitem-col_typ = 'MON' or - semaitem-col_typ = 'N00' or semaitem-col_typ = 'N01' or - semaitem-col_typ = 'N01' or semaitem-col_typ = 'N02' or - semaitem-col_typ = 'N03' or semaitem-col_typ = 'PCT' or - semaitem-col_typ = 'STR' or semaitem-col_typ = 'NUM'. - clear str. - str = semaitem-col_no. - condense str. - concatenate 'DATA' 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->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 <f_excel_tab> assigning <line>. - assign component semaitem-col_no of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - dec = typeinfo-decimals. - elseif typeinfo-type = 'I'. - dec = 0. - endif. - - describe field <line> type typ components count. - mit = 1. - do count times. - if mit = semaitem-col_src. - assign component sy-index of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - 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 = 'DAT'. - if semaitem-col_no > vkeycount. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = all - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'STR'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'MON'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 10 - no_flush = no_flush. - elseif semaitem-col_typ = 'N00'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'N01'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 1 - no_flush = no_flush. - elseif semaitem-col_typ = 'N02'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - elseif semaitem-col_typ = 'N03'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 3 - no_flush = no_flush. - elseif semaitem-col_typ = 'N04'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 4 - no_flush = no_flush. - elseif semaitem-col_typ = 'NUM'. - if dec eq -1. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = dec - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'PCT'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - 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 = ''. - curritem-size = -1. - curritem-bold = -1. - curritem-italic = -1. - curritem-align = -1. - curritem-frametyp = -1. - curritem-framecolor = -1. - curritem-currency = ''. - 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 <f_excel_tab> assigning <line>. - -* save line index to compare with lt_subtot_indexs, -* to discover line is a subtotal / totale line or not -* ex use to set 'dun display zero in subtotal / total line' - - 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 <line> to <item>. - else. - assign component sy-index - of structure <line> to <item>. - endif. - - contentsitem-row = realoverflow. - - if sy-subrc = 0. - move semaitem-col_ops to search_item(3). - search 'ADD#CNT#MIN#MAX#AVG#NOP#DFT#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - move semaitem-col_typ to search_item(3). - search 'NUM#N00#N01#N02#N03#N04#PCT#DAT#MON#STR#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - contentsitem-column = sy-index. - if semaitem-col_typ eq 'DAT' or semaitem-col_typ eq 'MON'. - if semaitem-col_no > vkeycount. - - " Hinweis 512418 - " EXCEL bezieht Datumsangaben - " auf den 31.12.1899, behandelt - " aber 1900 als ein Schaltjahr - " d.h. ab 1.3.1900 korrekt - " 1.3.1900 als Zahl = 61 - - data: genesis type d value '18991230'. - data: number_of_days type p. -* change for date in char format & sema_type = X - data: temp_date type d. - - if not <item> is initial and not <item> co ' ' and not - <item> co '0'. -* change for date in char format & sema_type = X starts - if sema_type = 'X'. - describe field <item> type typ. - if typ = 'C'. - temp_date = <item>. - number_of_days = temp_date - genesis. - else. - number_of_days = <item> - genesis. - endif. - else. - number_of_days = <item> - genesis. - endif. -* change for date in char format & sema_type = X ends - if number_of_days < 61. - number_of_days = number_of_days - 1. - endif. - - set country 'DE'. - 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 <item> to contentsitem-value. - endif. - elseif semaitem-col_typ eq 'NUM' or - semaitem-col_typ eq 'N00' or - semaitem-col_typ eq 'N01' or - semaitem-col_typ eq 'N02' or - semaitem-col_typ eq 'N03' or - semaitem-col_typ eq 'N04' or - semaitem-col_typ eq 'PCT'. - set country 'DE'. - describe field <item> type typ. - - if semaitem-col_cur is initial. - if typ ne 'F'. - write <item> to contentsitem-value no-grouping - no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - no-sign. - endif. - else. -* Treat of fixed curreny for column >>Y9CK007319 - if semaitem-col_cur < 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 'F'. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign. - endif. - endif. - else. - assign component semaitem-col_cur - of structure <line> to <g>. -* 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 <f_fieldcat_line> - with key tabname = l_tabname - tech = space - no_out = space - col_pos = semaitem-col_no. - IF sy-subrc = 0. - IF <f_fieldcat_line>-cfieldname is not initial. - l_def = 'C'. - else."if <f_fieldcat_line>-qfieldname is not initial. - l_def = 'Q'. - ENDIF. - ENDIF. - -* if field is amount field -* exporting of amount field base on currency decimal table: TCURX - IF l_def = 'C'. "field is amount field - select single * from tcurx into wa_tcurx - where currkey = <g>. -* if amount ref to un-know currency -> 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 'F'. - write <item> to contentsitem-value - currency <g> - no-sign no-grouping. - else. - write <item> to contentsitem-value - decimals 14 currency <g> - no-sign no-grouping. - endif. - -* if field is quantity field -* exporting of quantity field base on quantity decimal table: T006 - - else."if l_def = 'Q'. " field is quantity field - clear: wa_t006. - select single * from t006 into wa_t006 - where MSEHI = <g>. -* if quantity ref to un-know unit-> default decimal = 2 - if sy-subrc eq 0. - curritem-decimals = wa_t006-decan. - else. - curritem-decimals = 2. - endif. - append curritem to currcells. - - write <item> to contentsitem-value - unit <g> - no-sign no-grouping. - condense contentsitem-value. - - ENDIF. - - endif. "Y9CK007319 - endif. - condense contentsitem-value. - -* add function fieldcat-no zero display - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - if <f_fieldcat_line>-col_pos = semaitem-col_no. - if <f_fieldcat_line>-no_zero = 'X'. - if <item> = '0'. - 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 <item> = '0'. - clear: contentsitem-value. - endif. - ENDIF. - endif. - endif. - endloop. - unassign: <f_fieldcat_line>. - - if <item> lt 0. - search contentsitem-value for 'E'. - if sy-fdpos eq 0. - -* use prefix notation for signed numbers - - translate contentsitem-value using '- '. - condense contentsitem-value no-gaps. - concatenate '-' contentsitem-value - into contentsitem-value. - else. - concatenate '-' 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 ":" enthalten. -* Für die -* darf keine Kommaseparierung stattfinden. -* Changing for correction request - Y6BK041073 - if contentsitem-value co '0123456789.,-+E '. - translate contentsitem-value using comma_elim. - endif. - else. - clear contentsitem-value. - -* if type is not numeric -> dun display with zero - - write <item> 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: <f_fieldcat_line>. - -* set item range for set_range_data method - - testname = mit / const. - condense testname. - - concatenate 'TEST' 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->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 = 'X'. - -* 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 > 1. - rowmaxtemp = rowmax - 1. - rowcount = 1. - do rowmaxtemp times. - columncount = 1. - do columnmax times. - contentsitem-column = columncount. - contentsitem-row = rowcount. - contentsitem-value = ''. - 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 = 'TESTHKEY'. - rangeitem-rows = rowmax. - rangeitem-columns = hkeycolumns. - append rangeitem to ranges. - clear: rangeitem. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'TESTHKEY' - 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. " 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: <f_source> type any. - field-symbols: <f_des> type any. - -* columns header format - - wa_format-front = -1. - wa_format-back = 15. "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 -* -> map input format - - if i_columns_header = 'X'. - wa_format-name = 'TESTHKEY'. - 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. " dun map range name - assign component sy-index of structure i_format_col_header - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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 = 'X'. - 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 = 'X'. - 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->cell_format - EXPORTING - cells = currcells - no_flush = no_flush. - -* item data: write item table content - - call method lo_spreadsheet->set_ranges_data - EXPORTING - ranges = ranges - contents = contents - no_flush = no_flush. - -* whole table range to format all table - - if i_columns_header = 'X'. - li_head_top = li_commentary_rows + 1. - else. - li_head_top = li_commentary_rows + 2. - help = help - 1. - endif. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'WHOLE_TABLE' - 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 = 'X'. - call method lo_spreadsheet->fit_widest - EXPORTING - name = 'WHOLE_TABLE' - 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=>FLUSH ) - - call method lo_spreadsheet->set_frame - EXPORTING - rangename = 'WHOLE_TABLE' - 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->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) = 'SUB'. - wa_format-back = 36. "subtotal line - wa_format_temp = i_format_subtotal. - else. - wa_format-back = 27. "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. " dun map range name - assign component sy-index of structure wa_format_temp - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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->set_ranges_format - EXPORTING - formattable = lt_format - no_flush = no_flush. - refresh: lt_format. - endif. -*--------------------------------------------------------------------* - call method lo_spreadsheet->screen_update - EXPORTING - updating = 'X'. - - call method c_oi_errors=>flush_errors. - - lo_error_w = l_error. - lc_retcode = lo_error_w->error_code. - -** catch no_flush -> led to dump ( optional ) -* go_error = l_error. -* gc_retcode = go_error->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, - <f_excel_tab>. - - clear: - lo_error_w. - - unassign: - <line>, - <item>, - <f_excel_tab>. - -*--------------------------------------------------------------------* -* SESSION 5: SAVE AND CLOSE FILE -*--------------------------------------------------------------------* - -* ex of save path: 'FILE://C:\temp\test.xlsx' - concatenate 'FILE://' I_save_path - into ls_path. - - call method lo_proxy->save_document_to_url - EXPORTING - no_flush = 'X' - url = ls_path - IMPORTING - error = lo_error - retcode = lc_retcode - CHANGING - document_size = li_document_size. - - error_doi. - -* if save successfully -> raise successful message -* message i499(sy) with 'Document is Exported to ' p_path. - message i499(sy) with 'Data has been exported successfully'. - - clear: - ls_path, - li_document_size. - - close_document. - endmethod. - - - - - - - - - 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 'A', - lc_top_left_row TYPE zexcel_cell_row VALUE 1. - - 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_value_lowercase TYPE string, - lv_syindex TYPE char3, - lv_errormessage TYPE string, "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: - <ls_field_catalog> TYPE zexcel_s_fieldcatalog, - <ls_field_catalog_custom> TYPE zexcel_s_fieldcatalog, - <fs_table_line> TYPE ANY, - <fs_fldval> 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=>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=>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 -*--------------------------------------------------------------------* - "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. - - "Calculate the top left row of the current table - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - lv_row_int = ls_settings-top_left_row. - - "Get number of row for the current table - DESCRIBE TABLE ip_table LINES lv_rows. - - "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=>convert_column2alpha( lv_maxcol ). - ls_settings-bottom_right_row = lv_maxrow. - - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - - lo_iterator = me->tables->if_object_collection~get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_curtable ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF ( ( ls_settings-top_left_row GE lo_curtable->settings-top_left_row AND ls_settings-top_left_row LE lo_curtable->settings-bottom_right_row ) - OR - ( ls_settings-bottom_right_row GE lo_curtable->settings-top_left_row AND ls_settings-bottom_right_row LE lo_curtable->settings-bottom_right_row ) - ) - AND - ( ( lv_column_int GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_column_int LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - OR - ( lv_maxcol GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_maxcol LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - ). - lv_errormessage = 'Table overlaps with previously bound table and will not be added to worksheet.'(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->settings = ls_settings. - lo_table->set_data( ir_data = ip_table ). - lv_id = me->excel->get_next_table_id( ). - lo_table->set_id( iv_id = lv_id ). -* lo_table->fieldcat = lt_field_catalog[]. - - me->tables->add( lo_table ). - -* It is better to loop column by column (only visible column) - LOOP AT lt_field_catalog ASSIGNING <ls_field_catalog> WHERE dynpfld EQ abap_true. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - " Due restrinction of new table object we cannot have two column with the same name - " Check if a column with the same name exists, if exists add a counter - " If no medium description is provided we try to use small or long -* lv_value = <ls_field_catalog>-scrtext_m. - field-symbols: <scrtxt1> type any, - <scrtxt2> type any, - <scrtxt3> type any. - - case iv_default_descr. - when 'M'. - assign <ls_field_catalog>-scrtext_m to <scrtxt1>. - assign <ls_field_catalog>-scrtext_s to <scrtxt2>. - assign <ls_field_catalog>-scrtext_l to <scrtxt3>. - when 'S'. - assign <ls_field_catalog>-scrtext_s to <scrtxt1>. - assign <ls_field_catalog>-scrtext_m to <scrtxt2>. - assign <ls_field_catalog>-scrtext_l to <scrtxt3>. - when 'L'. - assign <ls_field_catalog>-scrtext_l to <scrtxt1>. - assign <ls_field_catalog>-scrtext_m to <scrtxt2>. - assign <ls_field_catalog>-scrtext_s to <scrtxt3>. - when others. - assign <ls_field_catalog>-scrtext_m to <scrtxt1>. - assign <ls_field_catalog>-scrtext_s to <scrtxt2>. - assign <ls_field_catalog>-scrtext_l to <scrtxt3>. - endcase. - - - if <scrtxt1> is not initial. - lv_value = <scrtxt1>. - <ls_field_catalog>-scrtext_l = lv_value. - elseif <scrtxt2> is not initial. - lv_value = <scrtxt2>. - <ls_field_catalog>-scrtext_l = lv_value. - elseif <scrtxt3> is not initial. - lv_value = <scrtxt3>. - <ls_field_catalog>-scrtext_l = lv_value. - else. - lv_value = 'Column'. " default value as Excel does - <ls_field_catalog>-scrtext_l = lv_value. - endif. - WHILE 1 = 1. - lv_value_lowercase = lv_value. - TRANSLATE lv_value_lowercase TO LOWER CASE. - READ TABLE lt_column_name_buffer TRANSPORTING NO FIELDS WITH KEY table_line = lv_value_lowercase BINARY SEARCH. - IF sy-subrc <> 0. - <ls_field_catalog>-scrtext_l = lv_value. - INSERT lv_value_lowercase INTO TABLE lt_column_name_buffer. - EXIT. - ELSE. - lv_syindex = sy-index. - CONCATENATE <ls_field_catalog>-scrtext_l lv_syindex INTO lv_value. - ENDIF. - - ENDWHILE. - " First of all write column header - IF <ls_field_catalog>-style_header IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_value - ip_style = <ls_field_catalog>-style_header ). - ELSE. - me->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 <fs_table_line>. - - ASSIGN COMPONENT <ls_field_catalog>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - " issue #290 Add formula support in table - IF <ls_field_catalog>-formula EQ abap_true. - IF <ls_field_catalog>-style IS NOT INITIAL. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> - ip_abap_type = <ls_field_catalog>-abap_type - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ENDIF. - ELSE. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - - ip_formula = <fs_fldval> - ip_abap_type = <ls_field_catalog>-abap_type ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> ). - ENDIF. - ENDIF. - ELSE. - IF <ls_field_catalog>-style IS NOT INITIAL. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> - ip_abap_type = <ls_field_catalog>-abap_type - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ENDIF. - ELSE. - IF <ls_field_catalog>-abap_type IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_abap_type = <ls_field_catalog>-abap_type - ip_value = <fs_fldval> ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> ). - ENDIF. - ENDIF. - ENDIF. - ADD 1 TO lv_row_int. - - ENDLOOP. - IF sy-subrc <> 0. "create empty row if table has no data - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = space ). - ADD 1 TO lv_row_int. - ENDIF. - -*--------------------------------------------------------------------* - " totals -*--------------------------------------------------------------------* - IF <ls_field_catalog>-totals_function IS NOT INITIAL. - lv_formula = lo_table->get_totals_formula( ip_column = <ls_field_catalog>-scrtext_l ip_function = <ls_field_catalog>-totals_function ). - IF <ls_field_catalog>-style_total IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = lv_formula - ip_style = <ls_field_catalog>-style_total ). - ELSE. - me->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. - -*--------------------------------------------------------------------* - " conditional formatting -*--------------------------------------------------------------------* - IF <ls_field_catalog>-cond_style IS NOT INITIAL. - lv_first_row = ls_settings-top_left_row + 1. " +1 to exclude header - lv_last_row = ls_settings-top_left_row + lv_rows. - <ls_field_catalog>-cond_style->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. - -*--------------------------------------------------------------------* - " Set field catalog -*--------------------------------------------------------------------* - lo_table->fieldcat = lt_field_catalog[]. - - es_table_settings = ls_settings. - es_table_settings-bottom_right_column = lv_column_alpha. - " >> Issue #291 - IF ip_table IS INITIAL. - es_table_settings-bottom_right_row = ls_settings-top_left_row + 2. "Last rows - ELSE. - es_table_settings-bottom_right_row = ls_settings-top_left_row + lv_rows + 1. "Last rows - ENDIF. - " << Issue #291 - - endmethod. - - - - - - - *--------------------------------------------------------------------* -* issue #293 - Roberto Bianco -* - Christian Assig 2014-03-14 -* -* changes: - Calculate widths using SAPscript font metrics -* (transaction SE73) -* - Calculate the width of dates -* - Add additional width for auto filter buttons -* - Add cell padding to simulate Excel behavior -*--------------------------------------------------------------------* -METHOD calculate_cell_width. - - CONSTANTS: - lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT - lc_default_font_height TYPE tdfontsize VALUE '110', - lc_excel_cell_padding TYPE float VALUE '0.75'. - - DATA: ld_cell_value TYPE zexcel_cell_value, - ld_current_character TYPE c LENGTH 1, - ld_style_guid TYPE zexcel_cell_style, - ls_stylemapping TYPE zexcel_s_stylemapping, - lo_table_object TYPE REF TO object, - lo_table TYPE REF TO zcl_excel_table, - ld_table_top_left_column TYPE zexcel_cell_column, - ld_table_bottom_right_column TYPE zexcel_cell_column, - ld_flag_contains_auto_filter TYPE abap_bool VALUE abap_false, - ld_flag_bold TYPE abap_bool VALUE abap_false, - ld_flag_italic TYPE abap_bool VALUE abap_false, - ld_date TYPE d, - ld_date_char TYPE c LENGTH 50, - ld_font_height TYPE tdfontsize VALUE lc_default_font_height, - lt_itcfc TYPE STANDARD TABLE OF itcfc, - ld_offset TYPE i, - ld_length TYPE i, - ld_uccp TYPE i, - ls_font_metric TYPE mty_s_font_metric, - ld_width_from_font_metrics TYPE i, - ld_font_family TYPE itcfh-tdfamily, - ld_font_name TYPE zexcel_style_font_name VALUE lc_default_font_name, - lt_font_families LIKE STANDARD TABLE OF ld_font_family, - ls_font_cache TYPE mty_s_font_cache. - - FIELD-SYMBOLS: <ls_font_cache> TYPE mty_s_font_cache, - <ls_font_metric> TYPE mty_s_font_metric, - <ls_itcfc> TYPE itcfc. - - " Determine cell content and cell style - me->get_cell( EXPORTING ip_column = ip_column - ip_row = ip_row - IMPORTING ep_value = ld_cell_value - ep_guid = ld_style_guid ). - - " ABAP2XLSX uses tables to define areas containing headers and - " auto-filters. Find out if the current cell is in the header - " of one of these tables. - LOOP AT me->tables->collection INTO lo_table_object. - " Downcast: OBJECT -> ZCL_EXCEL_TABLE - lo_table ?= lo_table_object. - - " Convert column letters to corresponding integer values - ld_table_top_left_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-top_left_column ). - - ld_table_bottom_right_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-bottom_right_column ). - - " Is the current cell part of the table header? - IF ip_column BETWEEN ld_table_top_left_column AND - ld_table_bottom_right_column AND - ip_row EQ lo_table->settings-top_left_row. - " Current cell is part of the table header - " -> Assume that an auto filter is present and that the font is - " bold - ld_flag_contains_auto_filter = abap_true. - ld_flag_bold = abap_true. - ENDIF. - ENDLOOP. - - " If a style GUID is present, read style attributes - IF ld_style_guid IS NOT INITIAL. - TRY. - " Read style attributes - ls_stylemapping = me->excel->get_style_to_guid( ld_style_guid ). - - " If the current cell contains the default date format, - " convert the cell value to a date and calculate its length - IF ls_stylemapping-complete_style-number_format-format_code = - zcl_excel_style_number_format=>c_format_date_std. - - " Convert excel date to ABAP date - ld_date = - zcl_excel_common=>excel_string_to_date( ld_cell_value ). - - " Format ABAP date using user's formatting settings - WRITE ld_date TO ld_date_char. - - " Remember the formatted date to calculate the cell size - ld_cell_value = ld_date_char. - - ENDIF. - - " Read the font size and convert it to the font height - " used by SAPscript (multiplication by 10) - IF ls_stylemapping-complete_stylex-font-size = abap_true. - ld_font_height = ls_stylemapping-complete_style-font-size * 10. - ENDIF. - - " If set, remember the font name - IF ls_stylemapping-complete_stylex-font-name = abap_true. - ld_font_name = ls_stylemapping-complete_style-font-name. - ENDIF. - - " If set, remember whether font is bold and italic. - IF ls_stylemapping-complete_stylex-font-bold = abap_true. - ld_flag_bold = ls_stylemapping-complete_style-font-bold. - ENDIF. - - IF ls_stylemapping-complete_stylex-font-italic = abap_true. - ld_flag_italic = ls_stylemapping-complete_style-font-italic. - ENDIF. - - CATCH zcx_excel. "#EC NO_HANDLER - " Style GUID is present, but style was not found - " Continue with default values - - ENDTRY. - ENDIF. - - " Check if the same font (font name and font attributes) was already - " used before - READ TABLE mth_font_cache - WITH TABLE KEY - font_name = ld_font_name - font_height = ld_font_height - flag_bold = ld_flag_bold - flag_italic = ld_flag_italic - ASSIGNING <ls_font_cache>. - - IF sy-subrc <> 0. - " Font is used for the first time - " Add the font to our local font cache - ls_font_cache-font_name = ld_font_name. - ls_font_cache-font_height = ld_font_height. - ls_font_cache-flag_bold = ld_flag_bold. - ls_font_cache-flag_italic = ld_flag_italic. - INSERT ls_font_cache INTO TABLE mth_font_cache - ASSIGNING <ls_font_cache>. - - " Determine the SAPscript font family name from the Excel - " font name - SELECT tdfamily - FROM tfo01 - INTO TABLE lt_font_families - UP TO 1 ROWS - WHERE tdtext = ld_font_name - ORDER BY PRIMARY KEY. - - " Check if a matching font family was found - " Fonts can be uploaded from TTF files using transaction SE73 - IF lines( lt_font_families ) > 0. - READ TABLE lt_font_families INDEX 1 INTO ld_font_family. - - " Load font metrics (returns a table with the size of each letter - " in the font) - CALL FUNCTION 'LOAD_FONT' - EXPORTING - family = ld_font_family - height = ld_font_height - printer = 'SWIN' - bold = ld_flag_bold - italic = ld_flag_italic - TABLES - metric = lt_itcfc - EXCEPTIONS - font_family = 1 - codepage = 2 - device_type = 3 - OTHERS = 4. - IF sy-subrc <> 0. - CLEAR lt_itcfc. - ENDIF. - - " For faster access, convert each character number to the actual - " character, and store the characters and their sizes in a hash - " table - LOOP AT lt_itcfc ASSIGNING <ls_itcfc>. - ld_uccp = <ls_itcfc>-cpcharno. - ls_font_metric-char = - cl_abap_conv_in_ce=>uccpi( ld_uccp ). - ls_font_metric-char_width = <ls_itcfc>-tdcwidths. - INSERT ls_font_metric - INTO TABLE <ls_font_cache>-th_font_metrics. - ENDLOOP. - - ENDIF. - ENDIF. - - " Calculate the cell width - " If available, use font metrics - IF lines( <ls_font_cache>-th_font_metrics ) = 0. - " Font metrics are not available - " -> Calculate the cell width using only the font size - ld_length = strlen( ld_cell_value ). - ep_width = ld_length * ld_font_height / lc_default_font_height + lc_excel_cell_padding. - - ELSE. - " Font metrics are available - - " Calculate the size of the text by adding the sizes of each - " letter - ld_length = strlen( ld_cell_value ). - DO ld_length TIMES. - " Subtract 1, because the first character is at offset 0 - ld_offset = sy-index - 1. - - " Read the current character from the cell value - ld_current_character = ld_cell_value+ld_offset(1). - - " Look up the size of the current letter - READ TABLE <ls_font_cache>-th_font_metrics - WITH TABLE KEY char = ld_current_character - ASSIGNING <ls_font_metric>. - IF sy-subrc = 0. - " The size of the letter is known - " -> Add the actual size of the letter - ADD <ls_font_metric>-char_width TO ld_width_from_font_metrics. - ELSE. - " The size of the letter is unknown - " -> Add the font height as the default letter size - ADD ld_font_height TO ld_width_from_font_metrics. - ENDIF. - ENDDO. - - " Add cell padding (Excel makes columns a bit wider than the space - " that is needed for the text itself) and convert unit - " (division by 100) - ep_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding. - ENDIF. - - " If the current cell contains an auto filter, make it a bit wider. - " The size used by the auto filter button does not depend on the font - " size. - IF ld_flag_contains_auto_filter = abap_true. - ADD 2 TO ep_width. - ENDIF. - -ENDMETHOD. - - - - 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." 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 float. - - FIELD-SYMBOLS: <column_dimension> LIKE LINE OF column_dimensions. - FIELD-SYMBOLS: <auto_size> LIKE LINE OF auto_sizes. - - column_dimensions[] = me->get_column_dimensions( ). - LOOP AT column_dimensions ASSIGNING <column_dimension>. - auto_size = <column_dimension>-column_dimension->get_auto_size( ). - IF auto_size = abap_true. - APPEND INITIAL LINE TO auto_sizes ASSIGNING <auto_size>. - <auto_size>-col_index = <column_dimension>-column_dimension->get_column_index( ). - <auto_size>-width = -1. - ENDIF. - ENDLOOP. - - " There is only something to do if there are some auto-size columns - IF NOT auto_sizes IS INITIAL. - highest_row = me->get_highest_row( ). - LOOP AT auto_sizes ASSIGNING <auto_size>. -* col_alpha = zcl_excel_common=>convert_column2alpha( <auto_size>-col_index )." issue #155 - less restrictive typing for ip_column - count = 1. - WHILE count <= highest_row. -* Do not check merged cells - IF is_cell_merged( - ip_column = <auto_size>-col_index - ip_row = count ) = abap_false. -* Start of change # issue 139 - Dateretention of cellstyles -* IF cell_style IS BOUND. -* CREATE OBJECT cell_style. -* ENDIF. -* me->get_cell( -* EXPORTING -* ip_column = col_alpha " Cell Column -* ip_row = count " Cell Row -* IMPORTING -* ep_value = cell_value " Cell Value -* ep_style = cell_style " Request Cell Style as well -* ). -* " For an easy start we just take the number of characters as the width -* width = strlen( cell_value ). -* " Addition to solve issue #120, contribution by Stefan Schmöcker -* " Calculate width using Font Size and Font Type -* IF cell_style IS BOUND -* AND cell_style->font IS BOUND. -* width = cell_style->font->calculate_text_width( cell_value ). -* ENDIF. -* width = calculate_cell_width( ip_column = col_alpha " issue #155 - less restrictive typing for ip_column - width = calculate_cell_width( ip_column = <auto_size>-col_index " issue #155 - less restrictive typing for ip_column - ip_row = count ). -* End of change # issue 139 - Dateretention of cellstyles - IF width > <auto_size>-width. - <auto_size>-width = width. - ENDIF. - ENDIF. - count = count + 1. - ENDWHILE. -* column_dimension = me->get_column_dimension( col_alpha ). " issue #155 - less restrictive typing for ip_column - column_dimension = me->get_column_dimension( <auto_size>-col_index ). " issue #155 - less restrictive typing for ip_column - column_dimension->set_width( <auto_size>-width ). - ENDLOOP. - ENDIF. - - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD change_cell_style. - " 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 zexcel_cell_style. "issue # 177 - -* We have a lot of parameters. Use some macros to make the coding more structured - - DEFINE clear_initial_colorxfields. - if &1-rgb is initial. - clear &2-rgb. - endif. - if &1-indexed is initial. - clear &2-indexed. - endif. - if &1-theme is initial. - clear &2-theme. - endif. - if &1-tint is initial. - clear &2-tint. - endif. - END-OF-DEFINITION. - - DEFINE move_supplied_borders. - if ip_&1 is supplied. " only act if parameter was supplied - if ip_x&1 is supplied. " - borderx = ip_x&1. " use supplied x-parameter - else. - clear borderx with 'X'. -* clear in a way that would be expected to work easily - if ip_&1-border_style is initial. - clear borderx-border_style. - endif. - clear_initial_colorxfields ip_&1-border_color borderx-border_color. - endif. - move-corresponding ip_&1 to complete_style-&2. - move-corresponding borderx to complete_stylex-&2. - endif. - END-OF-DEFINITION. - -* First get current stylsettings - TRY. - me->get_cell( EXPORTING ip_column = ip_column " Cell Column - ip_row = ip_row " Cell Row - IMPORTING ep_guid = l_guid )." Cell Value ). "issue # 177 - - - stylemapping = me->excel->get_style_to_guid( l_guid ). "issue # 177 - complete_style = stylemapping-complete_style. - complete_stylex = stylemapping-complete_stylex. - CATCH zcx_excel. -* Error --> 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 = 'Complete styleinfo has to be supplied with corresponding X-field'. - 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 'X' TO: fontx-bold, - fontx-italic, - fontx-strikethrough, - fontx-underline_mode. - CLEAR fontx-color WITH 'X'. - clear_initial_colorxfields ip_font-color fontx-color. - IF ip_font-family IS NOT INITIAL. - fontx-family = 'X'. - ENDIF. - IF ip_font-name IS NOT INITIAL. - fontx-name = 'X'. - ENDIF. - IF ip_font-scheme IS NOT INITIAL. - fontx-scheme = 'X'. - ENDIF. - IF ip_font-size IS NOT INITIAL. - fontx-size = 'X'. - ENDIF. - IF ip_font-underline_mode IS NOT INITIAL. - fontx-underline_mode = 'X'. - 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 'X'. - 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 'X'. - 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 'X'. - 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_protection TO complete_style-protection. - IF ip_xprotection IS SUPPLIED. - MOVE-CORRESPONDING ip_xprotection TO complete_stylex-protection. - ELSE. - IF ip_protection-hidden IS NOT INITIAL. - complete_stylex-protection-hidden = 'X'. - ENDIF. - IF ip_protection-locked IS NOT INITIAL. - complete_stylex-protection-locked = 'X'. - 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_&1 is supplied. - complete_style-&2 = ip_&1. - complete_stylex-&2 = 'X'. - 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, - - fill_gradtype_type fill-gradtype-TYPE, - fill_gradtype_degree fill-gradtype-DEGREE, - fill_gradtype_bottom fill-gradtype-BOTTOM, - fill_gradtype_left fill-gradtype-LEFT, - fill_gradtype_top fill-gradtype-TOP, - fill_gradtype_right fill-gradtype-RIGHT, - fill_gradtype_position1 fill-gradtype-POSITION1, - fill_gradtype_position2 fill-gradtype-POSITION2, - fill_gradtype_position3 fill-gradtype-POSITION3, - - - - 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&paste of styles is requested - ep_guid = me->excel->get_static_cellstyle_guid( ip_cstyle_complete = complete_style - ip_cstylex_complete = complete_stylex ). - me->set_cell_style( ip_column = ip_column - ip_row = ip_row - ip_style = ep_guid ). - -ENDMETHOD. - - - - - - METHOD constructor. - DATA: lv_title TYPE zexcel_sheet_title. - - me->excel = ip_excel. - -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = me->guid. - me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call - - IF ip_title IS NOT INITIAL. - lv_title = ip_title. - ELSE. -* lv_title = me->guid. " del issue #154 - Names of worksheets - lv_title = me->generate_title( ). " ins issue #154 - Names of worksheets - ENDIF. - - me->set_title( ip_title = lv_title ). - - CREATE OBJECT sheet_setup. - CREATE OBJECT conditional_styles. - CREATE OBJECT data_validations. - CREATE OBJECT tables. - CREATE OBJECT ranges. " issue #163 - CREATE OBJECT mo_pagebreaks. - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - me->zif_excel_sheet_protection~initialize( ). - me->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. - - - - - METHOD delete_merge. - - FIELD-SYMBOLS: <ls_merged_cell> LIKE LINE OF me->mt_merged_cells. - DATA: is_merged TYPE abap_bool. -*--------------------------------------------------------------------* -* If cell information is passed delete merge including this cell, -* otherwise delete all merges -*--------------------------------------------------------------------* - IF ip_cell_column IS INITIAL - OR ip_cell_row IS INITIAL. - CLEAR me->mt_merged_cells. - ELSE. - LOOP AT me->mt_merged_cells ASSIGNING <ls_merged_cell>. - - is_merged = me->is_cell_merged( ip_column = ip_cell_column - ip_row = ip_cell_row ). - IF is_merged = abap_true. - DELETE me->mt_merged_cells. " Delete this merge, that includes this cell - EXIT. - ENDIF. - - ENDLOOP. - ENDIF. - -ENDMETHOD. - - - - - - METHOD delete_row_outline. - - DELETE me->mt_row_outlines WHERE row_from = iv_row_from - AND row_to = iv_row_to. - IF sy-subrc <> 0. " didn't find outline that was to be deleted - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Row outline to be deleted does not exist'. - ENDIF. - -ENDMETHOD. - - - - - - 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 = 'Pleas provide number of rows and/or columns to freeze'. - ENDIF. - - IF ip_num_columns IS SUPPLIED AND ip_num_columns <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of columns to freeze should be positive'. - ENDIF. - - IF ip_num_rows IS SUPPLIED AND ip_num_rows <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of rows to freeze should be positive'. - ENDIF. - - freeze_pane_cell_column = ip_num_columns + 1. - freeze_pane_cell_row = ip_num_rows + 1. - endmethod. - - - - 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->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = abap_true. - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - title = lo_worksheet->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. " Start counting with next number - DO. - title = sheetnumber. - SHIFT title LEFT DELETING LEADING space. - CONCATENATE 'Sheet'(001) title INTO ep_title. - INSERT ep_title INTO TABLE t_titles. - IF sy-subrc = 0. " Title not used so far --> take it - EXIT. - ENDIF. - - ADD 1 TO sheetnumber. - ENDDO. - endmethod. - - - - - method GET_ACTIVE_CELL. - - DATA: lv_active_column TYPE zexcel_cell_column_alpha, - lv_active_row TYPE string. - - lv_active_column = zcl_excel_common=>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. - - - - - - - - - - - method GET_CELL. - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = zcl_excel_common=>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. " issue 139 - added this to be used for columnwidth calculation - ep_formula = ls_sheet_content-cell_formula. - - " 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->excel->get_styles_iterator( ). - WHILE style_iterator->has_next( ) = 'X'. - style ?= style_iterator->get_next( ). - IF style->get_guid( ) = ls_sheet_content-cell_style. - ep_style = style. - EXIT. - ENDIF. - ENDWHILE. - ENDIF. - endmethod. - - - - - - method GET_COLUMN_DIMENSION. - FIELD-SYMBOLS: <fs_column_dimension> LIKE LINE OF column_dimensions. - DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. " issue #155 - less restrictive typing for ip_column - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column )." issue #155 - less restrictive typing for ip_column - READ TABLE me->column_dimensions ASSIGNING <fs_column_dimension> - WITH KEY column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - - IF NOT <fs_column_dimension> IS ASSIGNED. - CREATE OBJECT r_column_dimension - EXPORTING - ip_index = lv_column_alpha " issue #155 - less restrictive typing for ip_column - ip_excel = me->excel " issue #157 - Allow style for columns - ip_worksheet = me. " issue #157 - Allow style for columns - APPEND INITIAL LINE TO me->column_dimensions ASSIGNING <fs_column_dimension>. - <fs_column_dimension>-column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - <fs_column_dimension>-column_dimension = r_column_dimension. - ELSE. - r_column_dimension = <fs_column_dimension>-column_dimension. - ENDIF. - - endmethod. - - - - method GET_COLUMN_DIMENSIONS. - r_column_dimension[] = me->column_dimensions[]. - endmethod. - - - - method GET_COND_STYLES_ITERATOR. - - eo_iterator = me->conditional_styles->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_ITERATOR. - - eo_iterator = me->data_validations->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_SIZE. - ep_size = me->data_validations->size( ). - endmethod. - - - - method GET_DEFAULT_COLUMN_DIMENSION. - IF me->default_column_dimension IS NOT BOUND. - CREATE OBJECT me->default_column_dimension - EXPORTING - ip_index = 'A' " ???? - ip_worksheet = me - ip_excel = me->excel. - ENDIF. - - r_column_dimension = me->default_column_dimension. - endmethod. - - - - method GET_DEFAULT_EXCEL_DATE_FORMAT. - CONSTANTS: c_lang_e TYPE lang VALUE 'E'. - - IF default_excel_date_format IS NOT INITIAL. - ep_default_excel_date_format = default_excel_date_format. - RETURN. - ENDIF. - - "try to get defaults - TRY. - cl_abap_datfm=>get_date_format_des( EXPORTING im_langu = c_lang_e - IMPORTING ex_dateformat = default_excel_date_format ). - CATCH cx_abap_datfm_format_unknown. - - ENDTRY. - - " and fallback to fixed format - IF default_excel_date_format IS INITIAL. - default_excel_date_format = zcl_excel_style_number_format=>c_format_date_ddmmyyyydot. - ENDIF. - - ep_default_excel_date_format = default_excel_date_format. - endmethod. - - - - 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's get default - l_timefm = cl_abap_timefm=>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=>c_format_date_time6. - WHEN 1. -*1 12 Hour Format (Example: 12:05:10 PM) - default_excel_time_format = zcl_excel_style_number_format=>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=>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=>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=>c_format_date_time2. - WHEN OTHERS. - " and fallback to fixed format - default_excel_time_format = zcl_excel_style_number_format=>c_format_date_time6. - ENDCASE. - - ep_default_excel_time_format = default_excel_time_format. - endmethod. - - - - method GET_DEFAULT_ROW_DIMENSION. - IF me->default_row_dimension IS NOT BOUND. - CREATE OBJECT me->default_row_dimension. - ENDIF. - - r_row_dimension = me->default_row_dimension. - endmethod. - - - - - method GET_DIMENSION_RANGE. - - me->update_dimension_range( ). - IF upper_cell EQ lower_cell. "only one cell - " Worksheet not filled -* IF upper_cell-cell_coords = '0'. - IF upper_cell-cell_coords IS INITIAL. - ep_dimension_range = 'A1'. - ELSE. - ep_dimension_range = upper_cell-cell_coords. - ENDIF. - ELSE. - CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. - ENDIF. - - endmethod. - - - - - 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=>type_image. - r_drawings = drawings. - WHEN zcl_excel_drawing=>type_chart. - r_drawings = charts. - WHEN space. - CREATE OBJECT r_drawings - EXPORTING - ip_type = ''. - - lo_iterator = drawings->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - lo_iterator = charts->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - WHEN OTHERS. - ENDCASE. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = charts->get_iterator( ). - ENDCASE. - endmethod. - - - - - method GET_FREEZE_CELL. - ep_row = me->freeze_pane_cell_row. - ep_column = me->freeze_pane_cell_column. - endmethod. - - - - METHOD get_guid. - - ep_guid = me->guid. - -ENDMETHOD. - - - - - method GET_HIGHEST_COLUMN. - me->update_dimension_range( ). - r_highest_column = me->lower_cell-cell_column. - endmethod. - - - - - METHOD get_highest_row. - me->update_dimension_range( ). - r_highest_row = me->lower_cell-cell_row. -ENDMETHOD. - - - - method GET_HYPERLINKS_ITERATOR. - eo_iterator = hyperlinks->get_iterator( ). - endmethod. - - - - method GET_HYPERLINKS_SIZE. - ep_size = hyperlinks->size( ). - endmethod. - - - - - METHOD get_merge. - - FIELD-SYMBOLS: <ls_merged_cell> LIKE LINE OF me->mt_merged_cells. - - DATA: lv_col_from TYPE string, - lv_col_to TYPE string, - lv_row_from TYPE string, - lv_row_to TYPE string, - lv_merge_range TYPE string. - - LOOP AT me->mt_merged_cells ASSIGNING <ls_merged_cell>. - - lv_col_from = zcl_excel_common=>convert_column2alpha( <ls_merged_cell>-col_from ). - lv_col_to = zcl_excel_common=>convert_column2alpha( <ls_merged_cell>-col_to ). - lv_row_from = <ls_merged_cell>-row_from. - lv_row_to = <ls_merged_cell>-row_to . - CONCATENATE lv_col_from lv_row_from ':' lv_col_to lv_row_to - INTO lv_merge_range. - CONDENSE lv_merge_range NO-GAPS. - APPEND lv_merge_range TO merge_range. - - ENDLOOP. - -ENDMETHOD. - - - - - method GET_PAGEBREAKS. - ro_pagebreaks = mo_pagebreaks. -endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - METHOD GET_ROW_DIMENSION. - - FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF me->row_dimensions. - - DATA: ls_row_dimension LIKE LINE OF me->row_dimensions. - - READ TABLE me->row_dimensions ASSIGNING <ls_row_dimension> - WITH TABLE KEY row = ip_row. - - IF NOT <ls_row_dimension> IS ASSIGNED. - CREATE OBJECT r_row_dimension - EXPORTING - ip_index = ip_row. - ls_row_dimension-row = ip_row. - ls_row_dimension-row_dimension = r_row_dimension. - INSERT ls_row_dimension INTO TABLE me->row_dimensions. - ELSE. - r_row_dimension = <ls_row_dimension>-row_dimension. - ENDIF. - -ENDMETHOD. - - - - METHOD get_row_dimensions. - - r_row_dimension[] = me->row_dimensions[]. - -ENDMETHOD. - - - - METHOD get_row_outlines. - - rt_row_outlines = me->mt_row_outlines. - -ENDMETHOD. - - - - method GET_TABCOLOR. - ev_tabcolor = me->tabcolor. - endmethod. - - - - method GET_TABLES_ITERATOR. - eo_iterator = tables->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TABLES_SIZE. - ep_size = tables->if_object_collection~size( ). - endmethod. - - - - - method GET_TITLE. - DATA lv_value TYPE string. - IF ip_escaped EQ abap_true. - lv_value = me->title. - ep_title = zcl_excel_common=>escape_string( lv_value ). - ELSE. - ep_title = me->title. - ENDIF. - endmethod. - - - - - - 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=>typekind_string. " Thats our default if something goes wrong. - - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ip_value ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - ENDTRY. - IF lo_addit IS BOUND. - lo_addit->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 'CONVERSION_EXIT_' ls_dfies-convexit '_OUTPUT' 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 <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ELSE. - TRY. - ep_value = l_value. - CATCH cx_root. - ep_value = ip_value. - ENDTRY. - ENDIF. - ENDIF. - ENDIF. - ELSE. - ep_value_type = lo_addit->get_data_type_kind( ip_value ). - ENDIF. - ENDIF. - -ENDMETHOD. - - - - - - - METHOD is_cell_merged. - - DATA: lv_column TYPE i. - - FIELD-SYMBOLS: <ls_merged_cell> LIKE LINE OF me->mt_merged_cells. - - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - - rp_is_merged = abap_false. " Assume not in merged area - - LOOP AT me->mt_merged_cells ASSIGNING <ls_merged_cell>. - - IF <ls_merged_cell>-col_from <= lv_column - AND <ls_merged_cell>-col_to >= lv_column - AND <ls_merged_cell>-row_from <= ip_row - AND <ls_merged_cell>-row_to >= ip_row. - rp_is_merged = abap_true. " until we are proven different - RETURN. - ENDIF. - - ENDLOOP. - -ENDMETHOD. - - - method PRINT_TITLE_SET_RANGE. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmoecker, 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->get_ranges_iterator( ). - WHILE lo_range_iterator->has_next( ) = abap_true. - - lo_range ?= lo_range_iterator->get_next( ). - IF lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - EXIT. " Found it - ENDIF. - CLEAR lo_range. - - ENDWHILE. - - - IF me->print_title_col_from IS INITIAL AND - me->print_title_row_from IS INITIAL. -*--------------------------------------------------------------------* -* No print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS BOUND. - me->ranges->remove( lo_range ). - ENDIF. - ELSE. -*--------------------------------------------------------------------* -* Print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS NOT BOUND. - lo_range = me->add_new_range( ). - lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - ENDIF. - - lv_repeat_range_sheetname = me->get_title( ). - lv_repeat_range_sheetname = zcl_excel_common=>escape_string( lv_repeat_range_sheetname ). - -*--------------------------------------------------------------------* -* Repeat-columns -*--------------------------------------------------------------------* - IF me->print_title_col_from IS NOT INITIAL. - CONCATENATE lv_repeat_range_sheetname - '!$' me->print_title_col_from - ':$' me->print_title_col_to - INTO lv_repeat_range_col. - ENDIF. - -*--------------------------------------------------------------------* -* Repeat-rows -*--------------------------------------------------------------------* - IF me->print_title_row_from IS NOT INITIAL. - lv_row_char_from = me->print_title_row_from. - lv_row_char_to = me->print_title_row_to. - CONCATENATE '!$' lv_row_char_from - ':$' 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 ','. - ENDIF. - - - lo_range->set_range_value( lv_repeat_range ). - ENDIF. - - - - endmethod. - - - - - - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_numeric> TYPE numeric, - <fs_date> TYPE d, - <fs_time> TYPE t, - <fs_value> TYPE simple. - - IF ip_value IS NOT SUPPLIED AND ip_formula IS NOT SUPPLIED. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please provide the value or formula'. - ENDIF. - -* Begin of change issue #152 - don't touch exisiting style if only value is passed -* lv_style_guid = ip_style. - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 - cell_column = lv_column. - IF sy-subrc = 0. - IF ip_style IS INITIAL. - " If no style is provided as method-parameter and cell is found use cell's current style - lv_style_guid = <fs_sheet_content>-cell_style. - ELSE. - " Style provided as method-parameter --> use this - lv_style_guid = ip_style. - ENDIF. - ELSE. - " No cell found --> use supplied style even if empty - lv_style_guid = ip_style. - ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - IF ip_value IS SUPPLIED. - "if data type is passed just write the value. Otherwise map abap type to excel and perform conversion - "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->* TO <fs_value>. - <fs_value> = 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 = <fs_value> ) . - ENDIF. - lv_value = <fs_value>. - 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 = <fs_value> - ep_value_type = lv_value_type ). - ENDIF. - CASE lv_value_type. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - lo_addit = cl_abap_elemdescr=>get_i( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - lo_addit = cl_abap_elemdescr=>get_f( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_char OR cl_abap_typedescr=>typekind_string OR cl_abap_typedescr=>typekind_num OR - cl_abap_typedescr=>typekind_hex. - lv_value = <fs_value>. - lv_data_type = 's'. - - WHEN cl_abap_typedescr=>typekind_date. - lo_addit = cl_abap_elemdescr=>get_d( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_date>. - IF sy-subrc = 0. - <fs_date> = <fs_value>. - lv_value = zcl_excel_common=>date_to_excel_string( ip_value = <fs_date> ) . - ENDIF. -* Begin of change issue #152 - don'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. "get default date format in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = get_default_excel_date_format( ). -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN cl_abap_typedescr=>typekind_time. - lo_addit = cl_abap_elemdescr=>get_t( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_time>. - IF sy-subrc = 0. - <fs_time> = <fs_value>. - lv_value = zcl_excel_common=>time_to_excel_string( ip_value = <fs_time> ). - ENDIF. -* Begin of change issue #152 - don'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. "get default time format for user in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_date_time6. -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid data type of input value'. - ENDCASE. - ENDIF. - - ENDIF. - - IF ip_hyperlink IS BOUND. - ip_hyperlink->set_cell_reference( ip_column = ip_column - ip_row = ip_row ). - me->hyperlinks->add( ip_hyperlink ). - ENDIF. - -* Begin of change issue #152 - don'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=>convert_column2int( ip_column ). - -* READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row -* cell_column = lv_column. -* -* IF sy-subrc EQ 0. - IF <fs_sheet_content> IS ASSIGNED. -* End of change issue #152 - don't touch exisiting style if only value is passed - <fs_sheet_content>-cell_value = lv_value. - <fs_sheet_content>-cell_formula = ip_formula. - <fs_sheet_content>-cell_style = lv_style_guid. - <fs_sheet_content>-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."del #152 - replaced with condense - should be faster -* SHIFT lv_row_alpha LEFT DELETING LEADING space. "del #152 - replaced with condense - should be faster - CONDENSE lv_row_alpha NO-GAPS. "ins #152 - replaced 2 shifts - should be faster - lv_col_alpha = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - CONCATENATE lv_col_alpha lv_row_alpha INTO ls_sheet_content-cell_coords. " issue #155 - less restrictive typing for ip_column - INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING <fs_sheet_content>. "ins #152 - Now <fs_sheet_content> always holds the data -* APPEND ls_sheet_content TO sheet_content. -* SORT sheet_content BY cell_row cell_column. - " me->update_dimension_range( ). - - ENDIF. - -* Begin of change issue #152 - don'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=>typekind_date. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_std. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_number_format_format_code = lo_format_code_datetime ). - - WHEN cl_abap_typedescr=>typekind_time. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_time6. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->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't touch exisiting style if only value is passed - -* Fix issue #162 - lv_value = ip_value. - IF lv_value CS cl_abap_char_utilities=>cr_lf. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_alignment_wraptext = abap_true ). - ENDIF. -* End of Fix issue #162 - - endmethod. - - - - - - - method SET_CELL_FORMULA. - DATA: - lv_column TYPE zexcel_cell_column, - ls_sheet_content LIKE LINE OF me->sheet_content. - - FIELD-SYMBOLS: - <sheet_content> LIKE LINE OF me->sheet_content. - -*--------------------------------------------------------------------* -* Get cell to set formula into -*--------------------------------------------------------------------* - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE me->sheet_content ASSIGNING <sheet_content> WITH TABLE KEY cell_row = ip_row - cell_column = lv_column. - IF sy-subrc <> 0. " Create new entry in sheet_content if necessary - CHECK ip_formula IS INITIAL. " no need to create new entry in sheet_content when no formula is passed - ls_sheet_content-cell_row = ip_row. - ls_sheet_content-cell_column = lv_column. - INSERT ls_sheet_content INTO TABLE me->sheet_content ASSIGNING <sheet_content>. - ENDIF. - -*--------------------------------------------------------------------* -* Fieldsymbol now holds the relevant cell -*--------------------------------------------------------------------* - <sheet_content>-cell_formula = ip_formula. - - - endmethod. - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_style_guid = ip_style. - - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row - cell_column = lv_column. - - IF sy-subrc EQ 0. - <fs_sheet_content>-cell_style = lv_style_guid. - ELSE. - set_cell( ip_column = ip_column ip_row = ip_row ip_value = '' ip_style = ip_style ). - ENDIF. - - endmethod. - - - - - - - method SET_COLUMN_WIDTH. - DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - DATA: width TYPE float. - - column_dimension = me->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 <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as column-width'. - ENDIF. - column_dimension->set_width( width ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - ENDIF. - -* If we get down to here, we have to use whatever is found in autosize. - column_dimension->set_auto_size( ip_width_autosize ). - - - endmethod. - - - - - method SET_DEFAULT_EXCEL_DATE_FORMAT. - - IF ip_default_excel_date_format IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Default date format cannot be blank'. - ENDIF. - - default_excel_date_format = ip_default_excel_date_format. - endmethod. - - - - - - - - METHOD set_merge. - - DATA: ls_merge TYPE mty_merge, - lv_errormessage TYPE string. - - FIELD-SYMBOLS: <ls_merge> LIKE LINE OF me->mt_merged_cells. - -*--------------------------------------------------------------------* -* Build new range area to insert into range table -*--------------------------------------------------------------------* - ls_merge-row_from = ip_row. - IF ip_row IS SUPPLIED AND ip_row IS NOT INITIAL AND ip_row_to IS NOT SUPPLIED. - ls_merge-row_to = ls_merge-row_from. - ELSE. - ls_merge-row_to = ip_row_to. - ENDIF. - IF ls_merge-row_from > ls_merge-row_to. - lv_errormessage = 'Merge: First row larger then last row'(405). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ls_merge-col_from = zcl_excel_common=>convert_column2int( ip_column_start ). - IF ip_column_start IS SUPPLIED AND ip_column_start IS NOT INITIAL AND ip_column_end IS NOT SUPPLIED. - ls_merge-col_to = ls_merge-col_from. - ELSE. - ls_merge-col_to = zcl_excel_common=>convert_column2int( ip_column_end ). - ENDIF. - IF ls_merge-col_from > ls_merge-col_to. - lv_errormessage = 'Merge: First column larger then last column'(406). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Check merge not overlapping with existing merges -*--------------------------------------------------------------------* - LOOP AT me->mt_merged_cells TRANSPORTING NO FIELDS WHERE NOT ( row_from > ls_merge-row_to - OR row_to < ls_merge-row_from - OR col_from > ls_merge-col_to - OR col_to < ls_merge-col_from ). - lv_errormessage = 'Overlapping merges'(404). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - - ENDLOOP. - -*--------------------------------------------------------------------* -* Everything seems ok --> add to merge table -*--------------------------------------------------------------------* - INSERT ls_merge INTO TABLE me->mt_merged_cells. - -ENDMETHOD. - - - - method SET_PRINT_GRIDLINES. - me->print_gridlines = i_print_gridlines. - endmethod. - - - - - - method SET_ROW_HEIGHT. - DATA: row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: height TYPE float. - - row_dimension = me->get_row_dimension( ip_row ). - -* if a fix size is supplied use this - TRY. - height = ip_height_fix. - IF height <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as row-height'. - ENDIF. - row_dimension->set_row_height( height ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - - - - endmethod. - - - - - - - METHOD set_row_outline. - - DATA: ls_row_outline LIKE LINE OF me->mt_row_outlines. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF me->mt_row_outlines. - - READ TABLE me->mt_row_outlines ASSIGNING <ls_row_outline> WITH TABLE KEY row_from = iv_row_from - row_to = iv_row_to. - IF sy-subrc <> 0. - IF iv_row_from <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'First row of outline must be a positive number'. - ENDIF. - IF iv_row_to < iv_row_from. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Last row of outline may not be less than first line of outline'. - ENDIF. - ls_row_outline-row_from = iv_row_from. - ls_row_outline-row_to = iv_row_to. - INSERT ls_row_outline INTO TABLE me->mt_row_outlines ASSIGNING <ls_row_outline>. - ENDIF. - - CASE iv_collapsed. - - WHEN abap_true - OR abap_false. - <ls_row_outline>-collapsed = iv_collapsed. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unknown collapse state'. - - ENDCASE. -ENDMETHOD. - - - - method SET_SHOW_GRIDLINES. - me->show_gridlines = i_show_gridlines. - endmethod. - - - - method SET_SHOW_ROWCOLHEADERS. - me->show_rowcolheaders = i_show_rowcolheaders. - endmethod. - - - - method SET_TABCOLOR. - me->tabcolor = iv_tabcolor. - endmethod. - - - - - - - - - - - - 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 2, - lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - 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: <fs_table_line> TYPE ANY, - <fs_fldval> TYPE ANY, - <fs_dfies> TYPE dfies, - <fs_cell_value> TYPE zexcel_cell_value. - - lv_column_int = zcl_excel_common=>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=>describe_by_data_ref( lr_data ). - - ls_header = lo_tabdescr->get_ddic_header( ). - - lt_dfies = lo_tabdescr->get_ddic_field_list( ). - -* It is better to loop column by column - LOOP AT lt_dfies ASSIGNING <fs_dfies>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - IF ip_no_header = abap_false. - " First of all write column header - lv_cell_value = <fs_dfies>-scrtext_m. - me->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 <fs_table_line>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - ASSIGN COMPONENT <fs_dfies>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - MOVE <fs_fldval> TO lv_cell_value. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> "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=>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. - - - - - method SET_TITLE. -*--------------------------------------------------------------------* -* ToDos: -* 2do §1 The current coding for replacing a named ranges name -* after renaming a sheet should be checked if it is -* really working if sheetname should be escaped -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (wip ) 2012-12-08 -* - ... -* changes: aligning code -* message made to support multilinguality -*--------------------------------------------------------------------* -* issue#243 - ' is not allowed as first character in sheet title -* - Stefan Schmoecker, 2012-12-02 -* changes: added additional check for ' as first character -*--------------------------------------------------------------------* - 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, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Check whether title consists only of allowed characters -* Illegal characters are: / \ [ ] * ? : --> http://msdn.microsoft.com/en-us/library/ff837411.aspx -* Illegal characters not in documentation: ' as first character -*--------------------------------------------------------------------* - IF ip_title CA '/\[]*?:'. - lv_errormessage = 'Found illegal character in sheetname. List of forbidden characters: /\[]*?:'(402). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF ip_title IS NOT INITIAL AND ip_title(1) = `'`. - lv_errormessage = 'Sheetname may not start with &'(403). " & used instead of ' to allow fallbacklanguage - REPLACE '&' IN lv_errormessage WITH `'`. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -*--------------------------------------------------------------------* -* Check whether title is unique in workbook -*--------------------------------------------------------------------* - lo_worksheets_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = 'X'. - - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - CHECK me->guid <> lo_worksheet->get_guid( ). " Don't check against itself - IF ip_title = lo_worksheet->get_title( ). " Not unique --> raise exception - errormessage = 'Duplicate sheetname &'. - REPLACE '&' IN errormessage WITH ip_title. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = errormessage. - ENDIF. - - ENDWHILE. - -*--------------------------------------------------------------------* -* Remember old sheetname and rename sheet to desired name -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_old. - me->title = ip_title. - -*--------------------------------------------------------------------* -* After changing this worksheet's title we have to adjust -* all ranges that are referring to this worksheet. -*--------------------------------------------------------------------* -* 2do §1 - Check if the following quickfix is solid -* I fear it isn't - but this implementation is better then -* nothing at all since it handles a supposed majority of cases -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_new. - - lo_ranges_iterator = me->excel->get_ranges_iterator( ). - WHILE lo_ranges_iterator->has_next( ) = 'X'. - - lo_range ?= lo_ranges_iterator->get_next( ). - lv_range_value = lo_range->get_value( ). - REPLACE ALL OCCURRENCES OF lv_rangesheetname_old IN lv_range_value WITH lv_rangesheetname_new. - IF sy-subrc = 0. - lo_range->set_range_value( lv_range_value ). - ENDIF. - - ENDWHILE. - - - endmethod. - - - - 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. - "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=>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. - - "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=>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. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ADD. - - worksheets->add( ip_worksheet ). - - endmethod. - - - method CLEAR. - - worksheets->clear( ). - - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT worksheets. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_worksheet ?= worksheets->if_object_collection~get( lv_index ). - - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= worksheets->if_object_collection~get_iterator( ). - - endmethod. - - - - method IS_EMPTY. - - is_empty = worksheets->if_object_collection~is_empty( ). - - endmethod. - - - - method REMOVE. - - worksheets->remove( ip_worksheet ). - - endmethod. - - - - method SIZE. - - ep_size = worksheets->if_object_collection~size( ). - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - method CONSTRUCTOR. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - me->width = -1. - me->auto_size = abap_false. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - me->excel = ip_excel. "ins issue #157 - Allow Style for columns - me->worksheet = ip_worksheet. "ins issue #157 - Allow Style for columns - - " set default index to cellXf - me->xf_index = 0. - - endmethod. - - - - method GET_AUTO_SIZE. - r_auto_size = me->auto_size. - endmethod. - - - - method GET_COLLAPSED. - r_Collapsed = me->Collapsed. - endmethod. - - - - method GET_COLUMN_INDEX. - r_column_index = me->column_index. - endmethod. - - - - - method GET_COLUMN_STYLE_GUID. - IF me->style_guid IS NOT INITIAL. - ep_style_guid = me->style_guid. - ELSE. - ep_style_guid = me->worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - endmethod. - - - - method GET_OUTLINE_LEVEL. - r_outline_level = me->outline_level. - endmethod. - - - - method GET_VISIBLE. - r_Visible = me->Visible. - endmethod. - - - - method GET_WIDTH. - r_WIDTH = me->WIDTH. - endmethod. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - - method SET_AUTO_SIZE. - me->auto_size = ip_auto_size. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLLAPSED. - me->Collapsed = ip_Collapsed. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_INDEX. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_STYLE_BY_GUID. - DATA: stylemapping TYPE zexcel_s_stylemapping. - - IF me->excel IS NOT BOUND. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Internal error - reference to ZCL_EXCEL not bound'. - ENDIF. - TRY. - stylemapping = me->excel->get_style_to_guid( ip_style_guid ). - me->style_guid = stylemapping-guid. - - CATCH zcx_excel . - EXIT. " leave as is in case of error - ENDTRY. - - endmethod. - - - - method SET_OUTLINE_LEVEL. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_VISIBLE. - me->Visible = ip_Visible. - r_worksheet_columndime = me. - endmethod. - - - - - - method SET_WIDTH. - TRY. - me->width = ip_width. - r_worksheet_columndime = me. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret width as number'. - ENDTRY. - endmethod. - - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - r_worksheet_columndime = me. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - method CONSTRUCTOR. - " Initialise values - me->row_index = ip_index. - me->row_height = -1. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - - " set row dimension as unformatted by default - me->xf_index = 0. - endmethod. - - - - - METHOD get_collapsed. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - lv_previous_row TYPE i, - lv_following_row TYPE i. - - r_collapsed = me->collapsed. - - CHECK r_collapsed = abap_false. " Maybe new method for outlines is being used - CHECK io_worksheet IS BOUND. - -* If an outline is collapsed ( even inside an outer outline ) the line following the last line -* of the group gets the flag "collapsed" - IF io_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. - lv_following_row = me->row_index + 1. - lt_row_outlines = io_worksheet->get_row_outlines( ). - READ TABLE lt_row_outlines TRANSPORTING NO FIELDS WITH KEY row_from = lv_following_row " first line of an outline - collapsed = abap_true. " that is collapsed - ELSE. - lv_previous_row = me->row_index - 1. - lt_row_outlines = io_worksheet->get_row_outlines( ). - READ TABLE lt_row_outlines TRANSPORTING NO FIELDS WITH KEY row_to = lv_previous_row " last line of an outline - collapsed = abap_true. " that is collapsed - ENDIF. - CHECK sy-subrc = 0. " ok - we found it - r_collapsed = abap_true. - - -ENDMETHOD. - - - - - METHOD get_outline_level. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF lt_row_outlines. - -* if someone has set the outline level explicitly - just use that - IF me->outline_level IS NOT INITIAL. - r_outline_level = me->outline_level. - RETURN. - ENDIF. -* Maybe we can use the outline information in the worksheet - CHECK io_worksheet IS BOUND. - - lt_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lt_row_outlines ASSIGNING <ls_row_outline> WHERE row_from <= me->row_index - AND row_to >= me->row_index. - - ADD 1 TO r_outline_level. - - ENDLOOP. - -ENDMETHOD. - - - - method GET_ROW_HEIGHT. - r_row_height = me->row_height. - endmethod. - - - - method GET_ROW_INDEX. - r_row_index = me->row_index. - endmethod. - - - - - METHOD get_visible. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF lt_row_outlines. - - r_visible = me->visible. - CHECK r_visible = 'X'. " Currently visible --> but maybe the new outline methodology will hide it implicitly - CHECK io_worksheet IS BOUND. " But we have to see the worksheet to make sure - - lt_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lt_row_outlines ASSIGNING <ls_row_outline> WHERE row_from <= me->row_index - AND row_to >= me->row_index - AND collapsed = abap_true. " row is in a collapsed outline --> not visible - CLEAR r_visible. - RETURN. " one hit is enough to ensure invisibility - - ENDLOOP. - -ENDMETHOD. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - method SET_COLLAPSED. - me->collapsed = ip_collapsed. - endmethod. - - - - - method SET_OUTLINE_LEVEL. - IF ip_outline_level < 0 - OR ip_outline_level > 7. - - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Outline level must range between 0 and 7.'. - - ENDIF. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_ROW_HEIGHT. - TRY. - me->row_height = ip_row_height. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret ip_row_height as number'. - ENDTRY. - endmethod. - - - - method SET_ROW_INDEX. - me->row_index = ip_index. - endmethod. - - - - method SET_VISIBLE. - me->visible = ip_visible. - endmethod. - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - - ep_file = me->create( ). - endmethod. - - - - METHOD add_further_data_to_zip. -* Can be used by child classes like xlsm-writer to write additional data to zip archive -ENDMETHOD. - - - - method CREATE. - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - - "-------------Added by Alessandro Iannacci - Only if template exist - IF lv_content IS NOT INITIAL AND me->excel->use_template EQ abap_true. - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ELSE. "ADD CUSTOM CHART!!!! - lv_content = me->create_xl_charts( lo_drawing ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDIF. - "------------------------------------------------- - ENDWHILE. - -* Second to last step: Allow further information put into the zip archive by child classes - me->add_further_data_to_zip( lo_zip ). - -********************************************************************** -* Last step: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - - method CREATE_CONTENT_TYPES. - - -** Constant node name - DATA: lc_xml_node_types TYPE string VALUE 'Types', - lc_xml_node_override TYPE string VALUE 'Override', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - " Node namespace - lc_xml_node_types_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/content-types', - " Node extension - lc_xml_node_rels_ext TYPE string VALUE 'rels', - lc_xml_node_xml_ext TYPE string VALUE 'xml', - " Node partnumber - lc_xml_node_theme_pn TYPE string VALUE '/xl/theme/theme1.xml', - lc_xml_node_styles_pn TYPE string VALUE '/xl/styles.xml', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_props_pn TYPE string VALUE '/docProps/app.xml', - lc_xml_node_worksheet_pn TYPE string VALUE '/xl/worksheets/sheet#.xml', - lc_xml_node_strings_pn TYPE string VALUE '/xl/sharedStrings.xml', - lc_xml_node_core_pn TYPE string VALUE '/docProps/core.xml', - lc_xml_node_chart_pn TYPE string VALUE '/xl/charts/chart#.xml', - " Node contentType - lc_xml_node_theme_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.theme+xml', - lc_xml_node_styles_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', - lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', - lc_xml_node_rels_ct TYPE string VALUE 'application/vnd.openxmlformats-package.relationships+xml', - lc_xml_node_xml_ct TYPE string VALUE 'application/xml', - lc_xml_node_props_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.extended-properties+xml', - lc_xml_node_worksheet_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', - lc_xml_node_strings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', - lc_xml_node_core_ct TYPE string VALUE 'application/vnd.openxmlformats-package.core-properties+xml', - lc_xml_node_table_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml', - lc_xml_node_drawings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawing+xml', - lc_xml_node_chart_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table. - - DATA: lv_worksheets_num TYPE i, - lv_worksheets_numc TYPE numc3, - lv_xml_node_worksheet_pn TYPE string, - lv_xml_size TYPE i, - lv_value TYPE string, - lv_drawing_index TYPE i VALUE 1, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node types - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_types - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_types_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_rels_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_rels_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_xml_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_xml_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_theme_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_theme_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_styles_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_styles_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Workbook node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_workb_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Properties node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_props_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_props_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Worksheet node - lv_worksheets_num = excel->get_worksheets_size( ). - DO lv_worksheets_num TIMES. - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - - MOVE sy-index TO lv_worksheets_numc. - SHIFT lv_worksheets_numc LEFT DELETING LEADING '0'. - lv_xml_node_worksheet_pn = lc_xml_node_worksheet_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_worksheet_pn WITH lv_worksheets_numc. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_xml_node_worksheet_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_worksheet_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - lo_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - - lv_value = lo_table->get_name( ). - CONCATENATE '/xl/tables/' lv_value '.xml' INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_table_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Drawings - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lv_index_str = lv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - CONCATENATE '/' me->c_xl_drawings INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_drawings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - - " media mimes - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - lt_media_type TYPE TABLE OF mimetypes-extension, - lv_media_type TYPE mimetypes-extension, - lv_mime_type TYPE mimetypes-type. - - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_media_type = lo_drawing->get_media_type( ). - COLLECT lv_media_type INTO lt_media_type. - ENDWHILE. - - LOOP AT lt_media_type INTO lv_media_type. - CALL FUNCTION 'SDOK_MIMETYPE_GET' - EXPORTING - extension = lv_media_type - IMPORTING - mimetype = lv_mime_type. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lv_value = lv_media_type. - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lv_value ). - lv_value = lv_mime_type. - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - - " Charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lv_index_str = lo_drawing->get_index( ). - CONDENSE lv_index_str. - lv_value = lc_xml_node_chart_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_value WITH lv_index_str. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_chart_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_strings_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_strings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_core_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_core_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_APP. - - -** Constant node name - DATA: lc_xml_node_properties TYPE string VALUE 'Properties', - lc_xml_node_application TYPE string VALUE 'Application', - lc_xml_node_docsecurity TYPE string VALUE 'DocSecurity', - lc_xml_node_scalecrop TYPE string VALUE 'ScaleCrop', - lc_xml_node_headingpairs TYPE string VALUE 'HeadingPairs', - lc_xml_node_vector TYPE string VALUE 'vector', - lc_xml_node_variant TYPE string VALUE 'variant', - lc_xml_node_lpstr TYPE string VALUE 'lpstr', - lc_xml_node_i4 TYPE string VALUE 'i4', - lc_xml_node_titlesofparts TYPE string VALUE 'TitlesOfParts', - lc_xml_node_company TYPE string VALUE 'Company', - lc_xml_node_linksuptodate TYPE string VALUE 'LinksUpToDate', - lc_xml_node_shareddoc TYPE string VALUE 'SharedDoc', - lc_xml_node_hyperlinkschanged TYPE string VALUE 'HyperlinksChanged', - lc_xml_node_appversion TYPE string VALUE 'AppVersion', - " Namespace prefix - lc_vt_ns TYPE string VALUE 'vt', - lc_xml_node_props_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', - lc_xml_node_props_vt_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - " Node attributes - lc_xml_attr_size TYPE string VALUE 'size', - lc_xml_attr_basetype TYPE string VALUE 'baseType'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element_vector TYPE REF TO if_ixml_element, - lo_sub_element_variant TYPE REF TO if_ixml_element, - lo_sub_element_lpstr TYPE REF TO if_ixml_element, - lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node properties - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_properties - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_props_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:vt' - value = lc_xml_node_props_vt_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Application - lo_element = lo_document->create_simple_element( name = lc_xml_node_application - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~application. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " DocSecurity - lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~docsecurity. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " ScaleCrop - lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~scalecrop ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HeadingPairs - lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = '2' ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_variant ). - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** i4 node - lo_sub_element_i4 = lo_document->create_simple_element_ns( name = lc_xml_node_i4 - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_i4 ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " HeadingPairs - - - " TitlesOfParts - lo_element = lo_document->create_simple_element( name = lc_xml_node_titlesofparts - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = lv_value ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_lpstr ). - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " ** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->get_title( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_vector->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - ENDWHILE. - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " TitlesOfParts - - - - " Company - IF excel->zif_excel_book_properties~company IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_company - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~company. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " LinksUpToDate - lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~linksuptodate ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " SharedDoc - lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~shareddoc ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HyperlinksChanged - lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~hyperlinkschanged ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " AppVersion - lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~appversion. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_CORE. - - -** Constant node name - DATA: lc_xml_node_coreproperties TYPE string VALUE 'coreProperties', - lc_xml_node_creator TYPE string VALUE 'creator', - lc_xml_node_description TYPE string VALUE 'description', - lc_xml_node_lastmodifiedby TYPE string VALUE 'lastModifiedBy', - lc_xml_node_created TYPE string VALUE 'created', - lc_xml_node_modified TYPE string VALUE 'modified', - " Node attributes - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_target TYPE string VALUE 'dcterms:W3CDTF', - " Node namespace - lc_cp_ns TYPE string VALUE 'cp', - lc_dc_ns TYPE string VALUE 'dc', - lc_dcterms_ns TYPE string VALUE 'dcterms', -* lc_dcmitype_ns TYPE string VALUE 'dcmitype', - lc_xsi_ns TYPE string VALUE 'xsi', - lc_xml_node_cp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', - lc_xml_node_dc_ns TYPE string VALUE 'http://purl.org/dc/elements/1.1/', - lc_xml_node_dcterms_ns TYPE string VALUE 'http://purl.org/dc/terms/', - lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', - lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_value TYPE string, - lv_date TYPE sydatum, - lv_time TYPE syuzeit. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node coreProperties - lo_element_root = lo_document->create_simple_element_ns( name = lc_xml_node_coreproperties - prefix = lc_cp_ns - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:cp' - value = lc_xml_node_cp_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dc' - value = lc_xml_node_dc_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcterms' - value = lc_xml_node_dcterms_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcmitype' - value = lc_xml_node_dcmitype_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:xsi' - value = lc_xml_node_xsi_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Creator node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_creator - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~creator. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Description node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_description - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~description. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " lastModifiedBy node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby - prefix = lc_cp_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~lastmodifiedby. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Created node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - - CONVERT TIME STAMP excel->zif_excel_book_properties~created TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~created. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Modified node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - CONVERT TIME STAMP excel->zif_excel_book_properties~modified TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~modified. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - - - - METHOD create_dxf_style. - - CONSTANTS: lc_xml_node_dxf TYPE string VALUE 'dxf', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - y TYPE i VALUE 0. - - DATA: ls_styles_mapping TYPE zexcel_s_styles_mapping, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lv_index TYPE i, - ls_font TYPE zexcel_s_style_font, - lo_element_font TYPE REF TO if_ixml_element, - lv_value TYPE string, - ls_fill TYPE zexcel_s_style_fill, - lo_element_fill TYPE REF TO if_ixml_element, - x. - - CHECK iv_cell_style IS NOT INITIAL. - - READ TABLE me->styles_mapping INTO ls_styles_mapping WITH KEY guid = iv_cell_style. - ADD 1 TO ls_styles_mapping-style. " the numbering starts from 0 - READ TABLE it_cellxfs INTO ls_cellxfs INDEX ls_styles_mapping-style. - ADD 1 TO ls_cellxfs-fillid. " the numbering starts from 0 - - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY style = ls_styles_mapping-style. - IF sy-subrc EQ 0. - ls_style_cond_mapping-guid = iv_cell_style. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ELSE. - ls_style_cond_mapping-guid = iv_cell_style. - ls_style_cond_mapping-style = ls_styles_mapping-style. - ls_style_cond_mapping-dxf = cv_dfx_count. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ADD 1 TO cv_dfx_count. - - " dxf node - lo_sub_element = io_ixml_document->create_simple_element( name = lc_xml_node_dxf - parent = io_ixml_document ). - - "Conditional formatting font style correction by Alessandro Iannacci START - lv_index = ls_cellxfs-fontid + 1. - READ TABLE it_fonts INTO ls_font INDEX lv_index. - IF ls_font IS NOT INITIAL. - lo_element_font = io_ixml_document->create_simple_element( name = lc_xml_node_font - parent = io_ixml_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_b - parent = io_ixml_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_i - parent = io_ixml_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_u - parent = io_ixml_document ). - lv_value = ls_font-underline_mode. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_strike - parent = io_ixml_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - "color - create_xl_styles_color_node( - io_document = io_ixml_document - io_parent = lo_element_font - is_color = ls_font-color ). - lo_sub_element->append_child( new_child = lo_element_font ). - ENDIF. - "---Conditional formatting font style correction by Alessandro Iannacci END - - - READ TABLE it_fills INTO ls_fill INDEX ls_cellxfs-fillid. - IF ls_fill IS NOT INITIAL. - " fill properties - lo_element_fill = io_ixml_document->create_simple_element( name = lc_xml_node_fill - parent = io_ixml_document ). - "pattern - lo_sub_element_2 = io_ixml_document->create_simple_element( name = lc_xml_node_patternfill - parent = io_ixml_document ). - lv_value = ls_fill-filltype. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = io_ixml_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = io_ixml_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - - lo_element_fill->append_child( new_child = lo_sub_element_2 ). "pattern - - lo_sub_element->append_child( new_child = lo_element_fill ). - ENDIF. - ENDIF. - - io_dxf_element->append_child( new_child = lo_sub_element ). -ENDMETHOD. - - - - method CREATE_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_rId1_id TYPE string VALUE 'rId1', - lc_xml_node_rId2_id TYPE string VALUE 'rId2', - lc_xml_node_rId3_id TYPE string VALUE 'rId3', - " Node type - lc_xml_node_rId1_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - lc_xml_node_rId2_tp TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lc_xml_node_rId3_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - " Node target - lc_xml_node_rId1_tg TYPE string VALUE 'xl/workbook.xml', - lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', - lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId3_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId3_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId2_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId2_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId1_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId1_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_CHARTS. - - -** Constant node name - CONSTANTS: lc_xml_node_chartspace TYPE string VALUE 'c:chartSpace', - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_date1904 TYPE string VALUE 'c:date1904', - lc_xml_node_lang TYPE string VALUE 'c:lang', - lc_xml_node_roundedcorners TYPE string VALUE 'c:roundedCorners', - lc_xml_node_altcont TYPE string VALUE 'mc:AlternateContent', - lc_xml_node_altcont_ns_mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_choice TYPE string VALUE 'mc:Choice', - lc_xml_node_choice_ns_requires TYPE string VALUE 'c14', - lc_xml_node_choice_ns_c14 TYPE string VALUE 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart', - lc_xml_node_style TYPE string VALUE 'c14:style', - lc_xml_node_fallback TYPE string VALUE 'mc:Fallback', - lc_xml_node_style2 TYPE string VALUE 'c:style', - - "---------------------------CHART - lc_xml_node_chart TYPE string VALUE 'c:chart', - lc_xml_node_autotitledeleted TYPE string VALUE 'c:autoTitleDeleted', - "plotArea - lc_xml_node_plotarea TYPE string VALUE 'c:plotArea', - lc_xml_node_layout TYPE string VALUE 'c:layout', - lc_xml_node_varycolors TYPE string VALUE 'c:varyColors', - lc_xml_node_ser TYPE string VALUE 'c:ser', - lc_xml_node_idx TYPE string VALUE 'c:idx', - lc_xml_node_order TYPE string VALUE 'c:order', - lc_xml_node_tx TYPE string VALUE 'c:tx', - lc_xml_node_v TYPE string VALUE 'c:v', - lc_xml_node_val TYPE string VALUE 'c:val', - lc_xml_node_cat TYPE string VALUE 'c:cat', - lc_xml_node_numref TYPE string VALUE 'c:numRef', - lc_xml_node_strref TYPE string VALUE 'c:strRef', - lc_xml_node_f TYPE string VALUE 'c:f', "this is the range - lc_xml_node_overlap TYPE string VALUE 'c:overlap', - "note: numcache avoided - lc_xml_node_dlbls TYPE string VALUE 'c:dLbls', - lc_xml_node_showlegendkey TYPE string VALUE 'c:showLegendKey', - lc_xml_node_showval TYPE string VALUE 'c:showVal', - lc_xml_node_showcatname TYPE string VALUE 'c:showCatName', - lc_xml_node_showsername TYPE string VALUE 'c:showSerName', - lc_xml_node_showpercent TYPE string VALUE 'c:showPercent', - lc_xml_node_showbubblesize TYPE string VALUE 'c:showBubbleSize', - "plotArea->pie - lc_xml_node_piechart TYPE string VALUE 'c:pieChart', - lc_xml_node_showleaderlines TYPE string VALUE 'c:showLeaderLines', - lc_xml_node_firstsliceang TYPE string VALUE 'c:firstSliceAng', - "plotArea->line - lc_xml_node_linechart TYPE string VALUE 'c:lineChart', - lc_xml_node_symbol TYPE string VALUE 'c:symbol', - lc_xml_node_marker TYPE string VALUE 'c:marker', - lc_xml_node_smooth TYPE string VALUE 'c:smooth', - "plotArea->bar - lc_xml_node_invertifnegative TYPE string VALUE 'c:invertIfNegative', - lc_xml_node_barchart TYPE string VALUE 'c:barChart', - lc_xml_node_bardir TYPE string VALUE 'c:barDir', - lc_xml_node_gapwidth TYPE string VALUE 'c:gapWidth', - "plotArea->line + plotArea->bar - lc_xml_node_grouping TYPE string VALUE 'c:grouping', - lc_xml_node_axid TYPE string VALUE 'c:axId', - lc_xml_node_catax TYPE string VALUE 'c:catAx', - lc_xml_node_valax TYPE string VALUE 'c:valAx', - lc_xml_node_scaling TYPE string VALUE 'c:scaling', - lc_xml_node_orientation TYPE string VALUE 'c:orientation', - lc_xml_node_delete TYPE string VALUE 'c:delete', - lc_xml_node_axpos TYPE string VALUE 'c:axPos', - lc_xml_node_numfmt TYPE string VALUE 'c:numFmt', - lc_xml_node_majorgridlines TYPE string VALUE 'c:majorGridlines', - lc_xml_node_majortickmark TYPE string VALUE 'c:majorTickMark', - lc_xml_node_minortickmark TYPE string VALUE 'c:minorTickMark', - lc_xml_node_ticklblpos TYPE string VALUE 'c:tickLblPos', - lc_xml_node_crossax TYPE string VALUE 'c:crossAx', - lc_xml_node_crosses TYPE string VALUE 'c:crosses', - lc_xml_node_auto TYPE string VALUE 'c:auto', - lc_xml_node_lblalgn TYPE string VALUE 'c:lblAlgn', - lc_xml_node_lbloffset TYPE string VALUE 'c:lblOffset', - lc_xml_node_nomultilvllbl TYPE string VALUE 'c:noMultiLvlLbl', - lc_xml_node_crossbetween TYPE string VALUE 'c:crossBetween', - "legend - lc_xml_node_legend TYPE string VALUE 'c:legend', - "legend->pie - lc_xml_node_legendpos TYPE string VALUE 'c:legendPos', -* lc_xml_node_layout TYPE string VALUE 'c:layout', "already exist - lc_xml_node_overlay TYPE string VALUE 'c:overlay', - lc_xml_node_txpr TYPE string VALUE 'c:txPr', - lc_xml_node_bodypr TYPE string VALUE 'a:bodyPr', - lc_xml_node_lststyle TYPE string VALUE 'a:lstStyle', - lc_xml_node_p TYPE string VALUE 'a:p', - lc_xml_node_ppr TYPE string VALUE 'a:pPr', - lc_xml_node_defrpr TYPE string VALUE 'a:defRPr', - lc_xml_node_endpararpr TYPE string VALUE 'a:endParaRPr', - "legend->bar + legend->line - lc_xml_node_plotvisonly TYPE string VALUE 'c:plotVisOnly', - lc_xml_node_dispblanksas TYPE string VALUE 'c:dispBlanksAs', - lc_xml_node_showdlblsovermax TYPE string VALUE 'c:showDLblsOverMax', - "---------------------------END OF CHART - - lc_xml_node_printsettings TYPE string VALUE 'c:printSettings', - lc_xml_node_headerfooter TYPE string VALUE 'c:headerFooter', - lc_xml_node_pagemargins TYPE string VALUE 'c:pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'c:pageSetup'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - DATA: lv_rel_id TYPE i. - - DATA lo_element TYPE REF TO if_ixml_element. - DATA lo_element2 TYPE REF TO if_ixml_element. - DATA lo_element3 TYPE REF TO if_ixml_element. - DATA lo_el_rootchart TYPE REF TO if_ixml_element. - DATA lo_element4 TYPE REF TO if_ixml_element. - DATA lo_element5 TYPE REF TO if_ixml_element. - DATA lo_element6 TYPE REF TO if_ixml_element. - DATA lo_element7 TYPE REF TO if_ixml_element. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_chartspace - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - -********************************************************************** -* STEP 4: Create chart - - DATA lo_chartb TYPE REF TO zcl_excel_graph_bars. - DATA lo_chartp TYPE REF TO zcl_excel_graph_pie. - DATA lo_chartl TYPE REF TO zcl_excel_graph_line. - DATA lo_chart TYPE REF TO zcl_excel_graph. - - DATA ls_serie TYPE zcl_excel_graph=>s_series. - DATA ls_ax TYPE zcl_excel_graph_bars=>s_ax. - DATA lv_str TYPE string. - - "Identify chart type - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - lo_chartb ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_pie. - lo_chartp ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_line. - lo_chartl ?= io_drawing->graph. - WHEN OTHERS. - ENDCASE. - - - lo_chart = io_drawing->graph. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_date1904 - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_1904val ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_lang - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_langval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_roundedcorners - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_roundedcornersval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_altcont - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_altcont_ns_mc ). - - "Choice - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_choice - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'Requires' - value = lc_xml_node_choice_ns_requires ). - lo_element2->set_attribute_ns( name = 'xmlns:c14' - value = lc_xml_node_choice_ns_c14 ). - - "C14:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_c14styleval ). - - "Fallback - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_fallback - parent = lo_element ). - - "C:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style2 - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_styleval ). - - "---------------------------CHART - lo_element = lo_document->create_simple_element( name = lc_xml_node_chart - parent = lo_element_root ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_autotitledeleted - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_autotitledeletedval ). - - "plotArea - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotarea - parent = lo_element ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_barchart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bardir - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_bardirval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_varycolorsval ). - - "series - LOOP AT lo_chartb->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_invertifnegative - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-invertifnegative ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - IF lo_chartb->ns_groupingval = zcl_excel_graph_bars=>c_groupingval_stacked. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_overlap - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = '100' ). - ENDIF. - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_gapwidth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_gapwidthval ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartb->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_bars=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_bars=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_piechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_varycolorsval ). - - "series - LOOP AT lo_chartp->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showbubblesizeval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showleaderlines - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showleaderlinesval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_firstsliceang - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_firstsliceangval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_linechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_varycolorsval ). - - "series - LOOP AT lo_chartl->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_symbol - parent = lo_element5 ). - lo_element6->set_attribute_ns( name = 'val' - value = ls_serie-symbol ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-smooth ). - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_MARKERVAL ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_SMOOTHVAL ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartl->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_line=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). -* lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt -* parent = lo_element3 ). -* lo_element4->set_attribute_ns( name = 'formatCode' -* value = ls_ax-formatcode ). -* lo_element4->set_attribute_ns( name = 'sourceLinked' -* value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_line=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN OTHERS. - ENDCASE. - - "legend - IF lo_chart->print_label EQ abap_true. - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_legend - parent = lo_element ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_overlayval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_txpr - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bodypr - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lststyle - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_p - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_ppr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'rtl' - value = lo_chartp->ns_pprrtl ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_defrpr - parent = lo_element5 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_endpararpr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'lang' - value = lo_chartp->ns_endpararprlang ). - WHEN OTHERS. - ENDCASE. - ENDIF. - - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotvisonly - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_plotvisonlyval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_dispblanksas - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_dispblanksasval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_showdlblsovermax - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_showdlblsovermaxval ). - "---------------------------END OF CHART - - "printSettings - lo_element = lo_document->create_simple_element( name = lc_xml_node_printsettings - parent = lo_element_root ). - "headerFooter - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_element ). - "pageMargins - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'b' - value = lo_chart->pagemargins-b ). - lo_element2->set_attribute_ns( name = 'l' - value = lo_chart->pagemargins-l ). - lo_element2->set_attribute_ns( name = 'r' - value = lo_chart->pagemargins-r ). - lo_element2->set_attribute_ns( name = 't' - value = lo_chart->pagemargins-t ). - lo_element2->set_attribute_ns( name = 'header' - value = lo_chart->pagemargins-header ). - lo_element2->set_attribute_ns( name = 'footer' - value = lo_chart->pagemargins-footer ). - "pageSetup - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS. - - -** Constant node name - CONSTANTS: lc_xml_node_wsdr TYPE string VALUE 'xdr:wsDr', - lc_xml_node_ns_xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main'. - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - DATA: lv_rel_id TYPE i. - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_wsdr - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:xdr' - value = lc_xml_node_ns_xdr ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - -********************************************************************** -* STEP 4: Create drawings - - CLEAR: lv_rel_id. - - lo_drawings = io_worksheet->get_drawings( ). - - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - ADD 1 TO lv_rel_id. - lo_element_cellanchor = me->create_xl_drawing_anchor( - io_drawing = lo_drawing - io_document = lo_document - ip_index = lv_rel_id ). - - lo_element_root->append_child( new_child = lo_element_cellanchor ). - - ENDWHILE. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS_RELS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lv_value TYPE string, - lv_counter TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_counter = 0. - lo_drawings = io_worksheet->get_drawings( ). - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_counter. - - lv_value = lv_counter. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - lv_value = lo_drawing->get_media_name( ). - CASE lo_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - CONCATENATE '../media/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_image_tp ). - - WHEN zcl_excel_drawing=>type_chart. - CONCATENATE '../charts/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_chart_tp ). - - ENDCASE. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - method CREATE_XL_DRAWING_ANCHOR. - -** Constant node name - CONSTANTS: lc_xml_node_onecellanchor TYPE string VALUE 'xdr:oneCellAnchor', - lc_xml_node_twocellanchor TYPE string VALUE 'xdr:twoCellAnchor', - lc_xml_node_from TYPE string VALUE 'xdr:from', - lc_xml_node_to TYPE string VALUE 'xdr:to', - lc_xml_node_pic TYPE string VALUE 'xdr:pic', - lc_xml_node_ext TYPE string VALUE 'xdr:ext', - lc_xml_node_clientdata TYPE string VALUE 'xdr:clientData', - - lc_xml_node_col TYPE string VALUE 'xdr:col', - lc_xml_node_coloff TYPE string VALUE 'xdr:colOff', - lc_xml_node_row TYPE string VALUE 'xdr:row', - lc_xml_node_rowoff TYPE string VALUE 'xdr:rowOff', - - lc_xml_node_nvpicpr TYPE string VALUE 'xdr:nvPicPr', - lc_xml_node_cnvpr TYPE string VALUE 'xdr:cNvPr', - lc_xml_node_cnvpicpr TYPE string VALUE 'xdr:cNvPicPr', - lc_xml_node_piclocks TYPE string VALUE 'a:picLocks', - - lc_xml_node_sppr TYPE string VALUE 'xdr:spPr', - lc_xml_node_apgeom TYPE string VALUE 'a:prstGeom', - lc_xml_node_aavlst TYPE string VALUE 'a:avLst', - - lc_xml_node_graphicframe TYPE string VALUE 'xdr:graphicFrame', - lc_xml_node_nvgraphicframepr TYPE string VALUE 'xdr:nvGraphicFramePr', - lc_xml_node_cnvgraphicframepr TYPE string VALUE 'xdr:cNvGraphicFramePr', - lc_xml_node_graphicframelocks TYPE string VALUE 'a:graphicFrameLocks', - lc_xml_node_xfrm TYPE string VALUE 'xdr:xfrm', - lc_xml_node_aoff TYPE string VALUE 'a:off', - lc_xml_node_aext TYPE string VALUE 'a:ext', - lc_xml_node_agraphic TYPE string VALUE 'a:graphic', - lc_xml_node_agraphicdata TYPE string VALUE 'a:graphicData', - - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_cchart TYPE string VALUE 'c:chart', - - lc_xml_node_blipfill TYPE string VALUE 'xdr:blipFill', - lc_xml_node_ablip TYPE string VALUE 'a:blip', - lc_xml_node_astretch TYPE string VALUE 'a:stretch', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'. - - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_element_graphicframe TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_element3 TYPE REF TO if_ixml_element, - lo_element_from TYPE REF TO if_ixml_element, - lo_element_to TYPE REF TO if_ixml_element, - lo_element_ext TYPE REF TO if_ixml_element, - lo_element_pic TYPE REF TO if_ixml_element, - lo_element_clientdata TYPE REF TO if_ixml_element, - - ls_position TYPE zexcel_drawing_position, - - lv_col TYPE string, " zexcel_cell_column, - lv_row TYPE string, " zexcel_cell_row. - lv_col_offset TYPE string, - lv_row_offset TYPE string, - lv_value TYPE string. - - ls_position = io_drawing->get_position( ). - - IF ls_position-anchor = 'ONE'. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_onecellanchor - parent = io_document ). - ELSE. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_twocellanchor - parent = io_document ). - ENDIF. - -* from cell ****************************** - lo_element_from = io_document->create_simple_element( name = lc_xml_node_from - parent = io_document ). - - lv_col = ls_position-from-col. - lv_row = ls_position-from-row. - lv_col_offset = ls_position-from-col_offset. - lv_row_offset = ls_position-from-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_from->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_from ). - - IF ls_position-anchor = 'ONE'. - -* ext ****************************** - lo_element_ext = io_document->create_simple_element( name = lc_xml_node_ext - parent = io_document ). - - lv_value = io_drawing->get_width_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cx' - value = lv_value ). - lv_value = io_drawing->get_height_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cy' - value = lv_value ). - ep_anchor->append_child( new_child = lo_element_ext ). - - ELSEIF ls_position-anchor = 'TWO'. - -* to cell ****************************** - lo_element_to = io_document->create_simple_element( name = lc_xml_node_to - parent = io_document ). - - lv_col = ls_position-to-col. - lv_row = ls_position-to-row. - lv_col_offset = ls_position-to-col_offset. - lv_row_offset = ls_position-to-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_to->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_to ). - - ENDIF. - - CASE io_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. -* pic ********************************** - lo_element_pic = io_document->create_simple_element( name = lc_xml_node_pic - parent = io_document ). -* nvPicPr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvpicpr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). - -* cNvPicPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpicpr - parent = io_document ). - -* picLocks - lo_element3 = io_document->create_simple_element( name = lc_xml_node_piclocks - parent = io_document ). - lo_element3->set_attribute_ns( name = 'noChangeAspect' - value = '1' ). - - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_pic->append_child( new_child = lo_element ). - -* blipFill - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = io_document->create_simple_element( name = lc_xml_node_blipfill - parent = io_document ). - lo_element2 = io_document->create_simple_element( name = lc_xml_node_ablip - parent = io_document ). - lo_element2->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element2->set_attribute_ns( name = 'r:embed' - value = lv_value ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_astretch - parent = io_document ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - -* spPr - lo_element = io_document->create_simple_element( name = lc_xml_node_sppr - parent = io_document ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_apgeom - parent = io_document ). - lo_element2->set_attribute_ns( name = 'prst' - value = 'rect' ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_aavlst - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_pic ). - WHEN zcl_excel_drawing=>type_chart. -* graphicFrame ********************************** - lo_element_graphicframe = io_document->create_simple_element( name = lc_xml_node_graphicframe - parent = io_document ). -* nvGraphicFramePr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvgraphicframepr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). -* cNvGraphicFramePr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvgraphicframepr - parent = io_document ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_graphicframelocks - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* xfrm - lo_element = io_document->create_simple_element( name = lc_xml_node_xfrm - parent = io_document ). -* off - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aoff - parent = io_document ). - lo_element2->set_attribute_ns( name = 'y' value = '0' ). - lo_element2->set_attribute_ns( name = 'x' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). -* ext - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aext - parent = io_document ). - lo_element2->set_attribute_ns( name = 'cy' value = '0' ). - lo_element2->set_attribute_ns( name = 'cx' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* graphic - lo_element = io_document->create_simple_element( name = lc_xml_node_agraphic - parent = io_document ). -* graphicData - lo_element2 = io_document->create_simple_element( name = lc_xml_node_agraphicdata - parent = io_document ). - lo_element2->set_attribute_ns( name = 'uri' value = lc_xml_node_ns_c ). - -* chart - lo_element3 = io_document->create_simple_element( name = lc_xml_node_cchart - parent = io_document ). - - lo_element3->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element3->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element3->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_graphicframe ). - - ENDCASE. - -* client data *************************** - lo_element_clientdata = io_document->create_simple_element( name = lc_xml_node_clientdata - parent = io_document ). - ep_anchor->append_child( new_child = lo_element_clientdata ). - - endmethod. - - - - method CREATE_XL_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_sheet_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lc_xml_node_rid_theme_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - lc_xml_node_rid_styles_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lc_xml_node_rid_shared_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - " Node target - lc_xml_node_ridx_tg TYPE string VALUE 'worksheets/sheet#.xml', - lc_xml_node_rid_shared_tg TYPE string VALUE 'sharedStrings.xml', - lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', - lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_syindex(3) TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lv_size = excel->get_worksheets_size( ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 1. - lv_syindex = lv_size. - shift lv_syindex RIGHT DELETING TRAILING space. - shift lv_syindex left DELETING leading space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - replace all occurrences of '#' in lv_xml_node_ridx_id with lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_theme_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( new_child = lo_element ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 1. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_styles_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( new_child = lo_element ). - - - - lv_size = excel->get_worksheets_size( ). - - DO lv_size TIMES. - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - lv_xml_node_ridx_tg = lc_xml_node_ridx_tg. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_tg WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_sheet_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 3 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_shared_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - METHOD create_xl_sharedstrings. - - -** Constant node name - DATA: lc_xml_node_sst TYPE string VALUE 'sst', - lc_xml_node_si TYPE string VALUE 'si', - lc_xml_node_t TYPE string VALUE 't', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_value TYPE string, - lv_count_str TYPE string, - lv_uniquecount_str TYPE string, - lv_sytabix TYPE sytabix, - lv_count TYPE i, - lv_uniquecount TYPE i. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_sheet_string> TYPE zexcel_s_shared_string. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - DESCRIBE TABLE lt_cell_data LINES lv_count. - MOVE lv_count TO lv_count_str. - - SHIFT lv_count_str RIGHT DELETING TRAILING space. - SHIFT lv_count_str LEFT DELETING LEADING space. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - DESCRIBE TABLE lt_cell_data LINES lv_uniquecount. - MOVE lv_uniquecount TO lv_uniquecount_str. - - SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. - SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - - clear lv_count. - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content> where data_type = 's'. -* lv_sytabix = sy-tabix - 1. - lv_sytabix = lv_count. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. - MOVE <fs_sheet_content>-data_type TO ls_shared_string-string_type. - APPEND ls_shared_string TO shared_strings. - add 1 to lv_count. - ENDLOOP. - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_sst - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_count - value = lv_count_str ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_uniquecount - value = lv_uniquecount_str ). - -********************************************************************** -* STEP 4: Create subnode - LOOP AT shared_strings ASSIGNING <fs_sheet_string>. - lo_element = lo_document->create_simple_element( name = lc_xml_node_si - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). -* if <fs_sheet_string>-string_type EQ 's_leading_blanks'. - IF <fs_sheet_string>-string_value IS NOT INITIAL AND <fs_sheet_string>-string_value(1) EQ ` `. - lo_sub_element->set_attribute( name = 'space' namespace = 'xml' value = 'preserve' ). - ENDIF. - lo_sub_element->set_value( value = <fs_sheet_string>-string_value ). - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_sheet. -*--------------------------------------------------------------------* -* issue #330 - Adding ColorScale conditional formatting -* - Ivan Femia, 2014-08-25 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF colors, - colorrgb TYPE zexcel_color, - END OF colors. - -*--------------------------------------------------------------------* -* issue #237 - Error writing column-style -* - Stefan Schmoecker, 2012-11-01 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF cfvo, - value TYPE zexcel_conditional_value, - type TYPE zexcel_conditional_type, - END OF cfvo. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - start -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, - END OF lty_table_area. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - end -*--------------------------------------------------------------------* -** Constants - CONSTANTS: - lc_dummy_cell_content TYPE zexcel_s_cell_data-cell_value VALUE '})~~~ This is a dummy value for ABAP2XLSX and you should never find this in a real excelsheet Ihope'. - - -** Constant node name - DATA: lc_xml_node_worksheet TYPE string VALUE 'worksheet', - lc_xml_node_sheetpr TYPE string VALUE 'sheetPr', - lc_xml_node_tabcolor TYPE string VALUE 'tabColor', - lc_xml_node_outlinepr TYPE string VALUE 'outlinePr', - lc_xml_node_dimension TYPE string VALUE 'dimension', - lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', - lc_xml_node_sheetview TYPE string VALUE 'sheetView', - lc_xml_node_selection TYPE string VALUE 'selection', - lc_xml_node_pane TYPE string VALUE 'pane', - lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', - lc_xml_node_cols TYPE string VALUE 'cols', - lc_xml_node_col TYPE string VALUE 'col', -* lc_xml_node_sheetdata TYPE string VALUE 'sheetData', -* lc_xml_node_row TYPE string VALUE 'row', -* lc_xml_node_c TYPE string VALUE 'c', -* lc_xml_node_v TYPE string VALUE 'v', -* lc_xml_node_f TYPE string VALUE 'f', - lc_xml_node_sheetprotection TYPE string VALUE 'sheetProtection', - lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'pageSetup', - lc_xml_node_pagesetuppr TYPE string VALUE 'pageSetUpPr', - lc_xml_node_condformatting TYPE string VALUE 'conditionalFormatting', - lc_xml_node_cfrule TYPE string VALUE 'cfRule', - lc_xml_node_color TYPE string VALUE 'color', " Databar by Albert Lladanosa - lc_xml_node_databar TYPE string VALUE 'dataBar', " Databar by Albert Lladanosa - lc_xml_node_colorscale TYPE string VALUE 'colorScale', - lc_xml_node_iconset TYPE string VALUE 'iconSet', - lc_xml_node_cfvo TYPE string VALUE 'cfvo', - lc_xml_node_formula TYPE string VALUE 'formula', - lc_xml_node_datavalidations TYPE string VALUE 'dataValidations', - lc_xml_node_datavalidation TYPE string VALUE 'dataValidation', - lc_xml_node_formula1 TYPE string VALUE 'formula1', - lc_xml_node_formula2 TYPE string VALUE 'formula2', - lc_xml_node_mergecell TYPE string VALUE 'mergeCell', - lc_xml_node_mergecells TYPE string VALUE 'mergeCells', - lc_xml_node_drawing TYPE string VALUE 'drawing', - lc_xml_node_headerfooter TYPE string VALUE 'headerFooter', - lc_xml_node_oddheader TYPE string VALUE 'oddHeader', - lc_xml_node_oddfooter TYPE string VALUE 'oddFooter', - lc_xml_node_evenheader TYPE string VALUE 'evenHeader', - lc_xml_node_evenfooter TYPE string VALUE 'evenFooter', - lc_xml_node_autofilter TYPE string VALUE 'autoFilter', - lc_xml_node_filtercolumn TYPE string VALUE 'filterColumn', - lc_xml_node_filters TYPE string VALUE 'filters', - lc_xml_node_filter TYPE string VALUE 'filter', - " Node attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_summarybelow TYPE string VALUE 'summaryBelow', - lc_xml_attr_summaryright TYPE string VALUE 'summaryRight', - lc_xml_attr_tabselected TYPE string VALUE 'tabSelected', - lc_xml_attr_showzeros TYPE string VALUE 'showZeros', - lc_xml_attr_zoomscale TYPE string VALUE 'zoomScale', - lc_xml_attr_zoomscalenormal TYPE string VALUE 'zoomScaleNormal', - lc_xml_attr_zoomscalepageview TYPE string VALUE 'zoomScalePageLayoutView', - lc_xml_attr_zoomscalesheetview TYPE string VALUE 'zoomScaleSheetLayoutView', - lc_xml_attr_workbookviewid TYPE string VALUE 'workbookViewId', - lc_xml_attr_showgridlines TYPE string VALUE 'showGridLines', - lc_xml_attr_gridlines TYPE string VALUE 'gridLines', - lc_xml_attr_showrowcolheaders TYPE string VALUE 'showRowColHeaders', - lc_xml_attr_activecell TYPE string VALUE 'activeCell', - lc_xml_attr_sqref TYPE string VALUE 'sqref', - lc_xml_attr_min TYPE string VALUE 'min', - lc_xml_attr_max TYPE string VALUE 'max', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_width TYPE string VALUE 'width', - lc_xml_attr_defaultwidth TYPE string VALUE '9.10', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_bestfit TYPE string VALUE 'bestFit', - lc_xml_attr_customheight TYPE string VALUE 'customHeight', - lc_xml_attr_customwidth TYPE string VALUE 'customWidth', - lc_xml_attr_collapsed TYPE string VALUE 'collapsed', - lc_xml_attr_defaultrowheight TYPE string VALUE 'defaultRowHeight', - lc_xml_attr_defaultcolwidth TYPE string VALUE 'defaultColWidth', - lc_xml_attr_outlinelevelrow TYPE string VALUE 'x14ac:outlineLevelRow', - lc_xml_attr_outlinelevelcol TYPE string VALUE 'x14ac:outlineLevelCol', - lc_xml_attr_outlinelevel TYPE string VALUE 'outlineLevel', -* lc_xml_attr_r TYPE string VALUE 'r', -* lc_xml_attr_s TYPE string VALUE 's', -* lc_xml_attr_spans TYPE string VALUE 'spans', -* lc_xml_attr_t TYPE string VALUE 't', - lc_xml_attr_password TYPE string VALUE 'password', - lc_xml_attr_sheet TYPE string VALUE 'sheet', - lc_xml_attr_objects TYPE string VALUE 'objects', - lc_xml_attr_scenarios TYPE string VALUE 'scenarios', - lc_xml_attr_autofilter TYPE string VALUE 'autoFilter', - lc_xml_attr_deletecolumns TYPE string VALUE 'deleteColumns', - lc_xml_attr_deleterows TYPE string VALUE 'deleteRows', - lc_xml_attr_formatcells TYPE string VALUE 'formatCells', - lc_xml_attr_formatcolumns TYPE string VALUE 'formatColumns', - lc_xml_attr_formatrows TYPE string VALUE 'formatRows', - lc_xml_attr_insertcolumns TYPE string VALUE 'insertColumns', - lc_xml_attr_inserthyperlinks TYPE string VALUE 'insertHyperlinks', - lc_xml_attr_insertrows TYPE string VALUE 'insertRows', - lc_xml_attr_pivottables TYPE string VALUE 'pivotTables', - lc_xml_attr_selectlockedcells TYPE string VALUE 'selectLockedCells', - lc_xml_attr_selectunlockedcell TYPE string VALUE 'selectUnlockedCells', - lc_xml_attr_sort TYPE string VALUE 'sort', - lc_xml_attr_left TYPE string VALUE 'left', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_header TYPE string VALUE 'header', - lc_xml_attr_footer TYPE string VALUE 'footer', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_iconset TYPE string VALUE 'iconSet', - lc_xml_attr_showvalue TYPE string VALUE 'showValue', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_dxfid TYPE string VALUE 'dxfId', - lc_xml_attr_priority TYPE string VALUE 'priority', - lc_xml_attr_operator TYPE string VALUE 'operator', - lc_xml_attr_allowblank TYPE string VALUE 'allowBlank', - lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage', - lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage', - lc_xml_attr_showdropdown TYPE string VALUE 'showDropDown', - lc_xml_attr_errortitle TYPE string VALUE 'errorTitle', - lc_xml_attr_error TYPE string VALUE 'error', - lc_xml_attr_prompttitle TYPE string VALUE 'promptTitle', - lc_xml_attr_prompt TYPE string VALUE 'prompt', - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_blackandwhite TYPE string VALUE 'blackAndWhite', - lc_xml_attr_cellcomments TYPE string VALUE 'cellComments', - lc_xml_attr_copies TYPE string VALUE 'copies', - lc_xml_attr_draft TYPE string VALUE 'draft', - lc_xml_attr_errors TYPE string VALUE 'errors', - lc_xml_attr_firstpagenumber TYPE string VALUE 'firstPageNumber', - lc_xml_attr_fittopage TYPE string VALUE 'fitToPage', - lc_xml_attr_fittoheight TYPE string VALUE 'fitToHeight', - lc_xml_attr_fittowidth TYPE string VALUE 'fitToWidth', - lc_xml_attr_horizontaldpi TYPE string VALUE 'horizontalDpi', - lc_xml_attr_orientation TYPE string VALUE 'orientation', - lc_xml_attr_pageorder TYPE string VALUE 'pageOrder', - lc_xml_attr_paperheight TYPE string VALUE 'paperHeight', - lc_xml_attr_papersize TYPE string VALUE 'paperSize', - lc_xml_attr_paperwidth TYPE string VALUE 'paperWidth', - lc_xml_attr_scale TYPE string VALUE 'scale', - lc_xml_attr_usefirstpagenumber TYPE string VALUE 'useFirstPageNumber', - lc_xml_attr_useprinterdefaults TYPE string VALUE 'usePrinterDefaults', - lc_xml_attr_verticaldpi TYPE string VALUE 'verticalDpi', - lc_xml_attr_differentoddeven TYPE string VALUE 'differentOddEven', - lc_xml_attr_colid TYPE string VALUE 'colId', - lc_xml_attr_filtermode TYPE string VALUE 'filterMode', - lc_xml_attr_tabcolor_rgb TYPE string VALUE 'rgb', - lc_xml_attr_tabcolor_theme TYPE string VALUE 'theme', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_comp_pref TYPE string VALUE 'x14ac', - lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_table TYPE REF TO zcl_excel_table, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_row_dim_empty TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, - default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_value TYPE string, - lt_range_merge TYPE string_table, - lv_merge TYPE string, - lv_column_p TYPE zexcel_cell_column_alpha, - lv_column TYPE zexcel_cell_column, - lv_cell_value TYPE zexcel_cell_value, - lv_style_guid TYPE zexcel_cell_style, - lv_flag TYPE c, - ls_databar TYPE zexcel_conditional_databar, " Databar by Albert Lladanosa - ls_colorscale TYPE zexcel_conditional_colorscale, - ls_iconset TYPE zexcel_conditional_iconset, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - ls_conditional_top10 TYPE zexcel_conditional_top10, - ls_conditional_above_avg TYPE zexcel_conditional_above_avg, - lt_cfvo TYPE TABLE OF cfvo, - ls_cfvo TYPE cfvo, - lt_colors TYPE TABLE OF colors, - ls_colors TYPE colors, - lv_cell_row_s TYPE string, - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping, - lv_freeze_cell_row TYPE zexcel_cell_row, - lv_freeze_cell_column TYPE zexcel_cell_column, - lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, - row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - lv_relation_id TYPE i VALUE 0, - outline_level_row TYPE i VALUE 0, - outline_level_col TYPE i VALUE 0, - lv_current_row TYPE i, - lv_next_row TYPE i, - ls_sheet_content LIKE LINE OF io_worksheet->sheet_content, - ls_sheet_content_empty LIKE LINE OF io_worksheet->sheet_content, - lv_last_row TYPE i, - lts_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - lts_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - col_count TYPE int4, - merge_count TYPE int4, - write_current_row TYPE boolean, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values, -* lv_guid TYPE uuid, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter, - l_autofilter_hidden TYPE flag, - ls_area TYPE zexcel_s_autofilter_area, - lv_ref TYPE string, - lv_style_index TYPE i. " issue #237 - - - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data, - <fs_range_merge> LIKE LINE OF lt_range_merge, - <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio, - <ls_row_outline> LIKE LINE OF lts_row_outlines. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - start -*--------------------------------------------------------------------* - DATA: lt_table_areas TYPE SORTED TABLE OF lty_table_area WITH NON-UNIQUE KEY left right top bottom, - ls_table_area LIKE LINE OF lt_table_areas. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - end -*--------------------------------------------------------------------* - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_worksheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_comp_ns ). - lo_element_root->set_attribute_ns( name = 'mc:Ignorable' - value = lc_xml_node_comp_pref ). - lo_element_root->set_attribute_ns( name = 'xmlns:x14ac' - value = lc_xml_node_ig_ns ). - - -********************************************************************** -* STEP 4: Create subnodes - " sheetPr - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetpr - parent = lo_document ). - " TODO tabColor - IF io_worksheet->tabcolor IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_tabcolor - parent = lo_element ). -* Theme not supported yet - start with RGB - lv_value = io_worksheet->tabcolor-rgb. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - ENDIF. - - " outlinePr - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_outlinepr - parent = lo_document ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summarybelow. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summarybelow - value = lv_value ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summaryright. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summaryright - value = lv_value ). - - lo_element->append_child( new_child = lo_element_2 ). - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_pagesetuppr - parent = lo_document ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_fittopage - value = `1` ). - lo_element->append_child( new_child = lo_element_2 ). " pageSetupPr node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - - " dimension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension - parent = lo_document ). - lv_value = io_worksheet->get_dimension_range( ). - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " sheetViews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews - parent = lo_document ). - " sheetView node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_sheetview - parent = lo_document ). - IF io_worksheet->zif_excel_sheet_properties~show_zeros EQ abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showzeros - value = '0' ). - ENDIF. - IF iv_active = abap_true - OR io_worksheet->zif_excel_sheet_properties~selected EQ abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '0' ). - ENDIF. - " Zoom scale - IF io_worksheet->zif_excel_sheet_properties~zoomscale GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscale - value = lv_value ). - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_normal LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_normal. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalenormal - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalepageview - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalesheetview - value = lv_value ). - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid - value = '0' ). - " showGridLines attribute - IF io_worksheet->show_gridlines = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '0' ). - ENDIF. - - " showRowColHeaders attribute - IF io_worksheet->show_rowcolheaders = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '0' ). - ENDIF. - - - " freeze panes - io_worksheet->get_freeze_cell( IMPORTING ep_row = lv_freeze_cell_row - ep_column = lv_freeze_cell_column ). - - IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_pane - parent = lo_element_2 ). - - IF lv_freeze_cell_row > 1. - lv_value = lv_freeze_cell_row - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'ySplit' - value = lv_value ). - ENDIF. - - IF lv_freeze_cell_column > 1. - lv_value = lv_freeze_cell_column - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'xSplit' - value = lv_value ). - ENDIF. - - lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ). - CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value. - lo_element_3->set_attribute_ns( name = 'topLeftCell' - value = lv_value ). - - lo_element_3->set_attribute_ns( name = 'activePane' - value = 'bottomRight' ). - - lo_element_3->set_attribute_ns( name = 'state' - value = 'frozen' ). - - lo_element_2->append_child( new_child = lo_element_3 ). - ENDIF. - " selection node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection - parent = lo_document ). - lv_value = io_worksheet->get_active_cell( ). - lo_element_3->set_attribute_ns( name = lc_xml_attr_activecell - value = lv_value ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " sheetView node - - lo_element->append_child( new_child = lo_element_2 ). " sheetView node - - lo_element_root->append_child( new_child = lo_element ). " sheetViews node - - - column_dimensions[] = io_worksheet->get_column_dimensions( ). - " Calculate col - IF NOT column_dimensions IS INITIAL. - io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). - ENDIF. - row_dimensions[] = io_worksheet->get_row_dimensions( ). - " sheetFormatPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetformatpr - parent = lo_document ). - " defaultRowHeight - default_row_dimension = io_worksheet->get_default_row_dimension( ). - IF default_row_dimension IS BOUND. - IF default_row_dimension->get_row_height( ) >= 0. - lo_element->set_attribute_ns( name = lc_xml_attr_customheight - value = lc_xml_attr_true ). - lv_value = default_row_dimension->get_row_height( ). - ELSE. - lv_value = '12.75'. - ENDIF. - ELSE. - lv_value = '12.75'. - ENDIF. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight - value = lv_value ). - " defaultColWidth - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - lv_value = default_col_dimension->get_width( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultcolwidth - value = lv_value ). - ENDIF. - ENDIF. - " outlineLevelRow -* Excel is recalculating the outlinelevel on startup from the outline levels found in the rows -* If we place anything incorrect here it gets corrected, if don't place anything it gets added -* So no need to calculate the outlinelevel here ( at least for rows - probably for columns as well but I haven't tested yet -* LOOP AT row_dimensions ASSIGNING <row_dimension>. -* IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. -* outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). -* ENDIF. -* ENDLOOP. -* lv_value = outline_level_row. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow -* value = lv_value ). - " outlineLevelCol - LOOP AT column_dimensions ASSIGNING <column_dimension>. - IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. - outline_level_col = <column_dimension>-column_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - lv_value = outline_level_col. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelcol - value = lv_value ). -* lv_value = 0. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_dydescent -* value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). " sheetFormatPr node - - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL OR NOT column_dimensions IS INITIAL. - " cols node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cols - parent = lo_document ). - " This code have to be enhanced in order to manage also column style properties - " Now it is an out/out - IF NOT column_dimensions IS INITIAL. - LOOP AT column_dimensions ASSIGNING <column_dimension>. - " col node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). - lv_value = <column_dimension>-column_dimension->get_column_index( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - " Width - IF <column_dimension>-column_dimension->get_width( ) < 0. - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - ELSE. - lv_value = <column_dimension>-column_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lv_value ). - ENDIF. - " Column visibility - IF <column_dimension>-column_dimension->get_visible( ) = abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lc_xml_attr_true ). - ENDIF. - " Auto size? - IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_bestfit - value = lc_xml_attr_true ). - ENDIF. - " Custom width? - IF default_col_dimension IS BOUND. - IF <column_dimension>-column_dimension->get_width( ) - <> default_col_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - - ENDIF. - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - ENDIF. - " Collapsed - IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_collapsed - value = lc_xml_attr_true ). - ENDIF. - " outlineLevel - IF <column_dimension>-column_dimension->get_outline_level( ) > 0. - lv_value = <column_dimension>-column_dimension->get_outline_level( ). - - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_outlinelevel - value = lv_value ). - ENDIF. - " Style -* lv_value = <column_dimension>-column_dimension->get_xf_index( ). "del issue #157 - set column style - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). "ins issue #157 - set column style -* lv_value = me->excel->get_style_index_in_styles( lv_style_guid ). "del issue #237 - CLEAR ls_style_mapping. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* lv_style_index = ls_style_mapping-style. "del issue #295 -* IF lv_style_index > 0. "ins issue #237 - del issue #295 -* lv_value = lv_style_index - 1. "ins issue #237 - del issue #295 - IF sy-subrc = 0. "ins issue #295 - lv_value = ls_style_mapping-style. "ins issue #295 - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. "ins issue #237 - - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. -* ELSE. "del issue #157 - set sheet style ( add missing columns -* IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. "del issue #157 - set sheet style ( add missing columns -* Begin of insertion issue #157 - set sheet style ( add missing columns - ENDIF. -* Always pass through this coding - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. - DATA: lts_sorted_columns TYPE SORTED TABLE OF zexcel_cell_column WITH UNIQUE KEY table_line. - TYPES: BEGIN OF ty_missing_columns, - first_column TYPE zexcel_cell_column, - last_column TYPE zexcel_cell_column, - END OF ty_missing_columns. - DATA: t_missing_columns TYPE STANDARD TABLE OF ty_missing_columns WITH NON-UNIQUE DEFAULT KEY, - missing_column LIKE LINE OF t_missing_columns. - -* First collect columns that were already handled before. The rest has to be inserted now - LOOP AT column_dimensions ASSIGNING <column_dimension>. - lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-column ). - INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. - -* Now find all columns that were missing so far - missing_column-first_column = 1. - LOOP AT lts_sorted_columns INTO lv_column. - IF lv_column > missing_column-first_column. - missing_column-last_column = lv_column - 1. - APPEND missing_column TO t_missing_columns. - ENDIF. - missing_column-first_column = lv_column + 1. - ENDLOOP. - missing_column-last_column = zcl_excel_common=>c_excel_sheet_max_col. - APPEND missing_column TO t_missing_columns. -* Now apply stylesetting ( and other defaults - I copy it from above. Whoever programmed that seems to know what to do :o) - LOOP AT t_missing_columns INTO missing_column. -* End of insertion issue #157 - set column style - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). -* lv_value = zcl_excel_common=>c_excel_sheet_min_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-first_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). -* lv_value = zcl_excel_common=>c_excel_sheet_max_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-last_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. - lv_value = ls_style_mapping-style. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. "ins issue #157 - set sheet style ( add missing columns - - ENDIF. -*--------------------------------------------------------------------* -* issue #367 add feature hide columns from -*--------------------------------------------------------------------* - IF io_worksheet->zif_excel_sheet_properties~hide_columns_from IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). - lv_value = zcl_excel_common=>convert_column2int( io_worksheet->zif_excel_sheet_properties~hide_columns_from ). - CONDENSE lv_value NO-GAPS. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = '16384' ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = '1' ). - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " cols node - ENDIF. - -*--------------------------------------------------------------------* -* Sheet content - use own method to create this -*--------------------------------------------------------------------* - lo_element = create_xl_sheet_sheet_data( io_worksheet = io_worksheet - io_document = lo_document - it_column_dimensions = column_dimensions ) . -* " sheetData node -* lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata -* parent = lo_document ). -* " Get column count -* col_count = io_worksheet->get_highest_column( ). -* " Get autofilter -** lv_guid = io_worksheet->get_guid( ) . - lo_autofilters = excel->get_autofilters_reference( ). - lo_autofilter = lo_autofilters->get( io_worksheet = io_worksheet ) . -* IF lo_autofilter IS BOUND. -* lt_values = lo_autofilter->get_values( ) . -* ls_area = lo_autofilter->get_filter_area( ) . -* l_autofilter_hidden = abap_true. " First defautl is not showing -* ENDIF. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - start -**--------------------------------------------------------------------* -** Build table to hold all table-areas attached to this sheet -* lo_iterator = io_worksheet->get_tables_iterator( ). -* WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. -* lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). -* ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). -* ls_table_area-right = lo_table->get_right_column_integer( ). -* ls_table_area-top = lo_table->settings-top_left_row. -* ls_table_area-bottom = lo_table->get_bottom_row_integer( ). -* INSERT ls_table_area INTO TABLE lt_table_areas. -* ENDWHILE. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end -**--------------------------------------------------------------------* -** We have problems when the first rows or trailing rows are not set but we have rowinformation -** to solve this we add dummycontent into first and last line that will not be set -** Set first line if necessary -* READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = 1. -* IF sy-subrc <> 0. -* ls_sheet_content_empty-cell_row = 1. -* ls_sheet_content_empty-cell_column = 1. -* ls_sheet_content_empty-cell_value = lc_dummy_cell_content. -* INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. -* ENDIF. -** Set last line if necessary -** Last row with cell content -* lv_last_row = io_worksheet->get_highest_row( ). -** Last line with row-information set directly ( like line height, hidden-status ... ) -* lts_row_dimensions = io_worksheet->get_row_dimensions( ). -* SORT lts_row_dimensions BY row DESCENDING. -* READ TABLE lts_row_dimensions INDEX 1 ASSIGNING <row_dimension>. -* IF sy-subrc = 0 AND <row_dimension>-row > lv_last_row. -* lv_last_row = <row_dimension>-row. -* ENDIF. -** Last line with row-information set indirectly by row outline -* lts_row_outlines = io_worksheet->get_row_outlines( ). -* LOOP AT lts_row_outlines ASSIGNING <ls_row_outline>. -* IF <ls_row_outline>-collapsed = 'X'. -* lv_current_row = <ls_row_outline>-row_to + 1. " collapsed-status may be set on following row -* ELSE. -* lv_current_row = <ls_row_outline>-row_to. " collapsed-status may be set on following row -* ENDIF. -* IF lv_current_row > lv_last_row. -* lv_last_row = lv_current_row. -* ENDIF. -* ENDLOOP. -* READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = lv_last_row. -* IF sy-subrc <> 0. -* ls_sheet_content_empty-cell_row = lv_last_row. -* ls_sheet_content_empty-cell_column = 1. -* ls_sheet_content_empty-cell_value = lc_dummy_cell_content. -* INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. -* ENDIF. -* -* CLEAR ls_sheet_content. -* LOOP AT io_worksheet->sheet_content INTO ls_sheet_content. -* IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much -* CLEAR l_autofilter_hidden. -* ELSE. -* READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. -* IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. -* CLEAR l_autofilter_hidden. -* ENDIF. -* ENDIF. -* CLEAR ls_style_mapping. -** Create row element -** issues #346,#154, #195 - problems when we have information in row_dimension but no cell content in that row -** Get next line that may have to be added. If we have empty lines this is the next line after previous cell content -** Otherwise it is the line of the current cell content -* lv_current_row = ls_last_row-cell_row + 1. -* IF lv_current_row > ls_sheet_content-cell_row. -* lv_current_row = ls_sheet_content-cell_row. -* ENDIF. -** Fill in empty lines if necessary - assign an emtpy sheet content -* lv_next_row = lv_current_row. -* WHILE lv_next_row <= ls_sheet_content-cell_row. -* lv_current_row = lv_next_row. -* lv_next_row = lv_current_row + 1. -* IF lv_current_row = ls_sheet_content-cell_row. " cell value found in this row -* ASSIGN ls_sheet_content TO <ls_sheet_content>. -* ELSE. -** Check if empty row is really necessary - this is basically the case when we have information in row_dimension -* lo_row_dim_empty = io_worksheet->get_row_dimension( lv_current_row ). -* CHECK lo_row_dim_empty->get_row_height( ) >= 0 OR -* lo_row_dim_empty->get_collapsed( io_worksheet ) = abap_true OR -* lo_row_dim_empty->get_outline_level( io_worksheet ) > 0 OR -* lo_row_dim_empty->get_xf_index( ) <> 0. -* " Dummyentry A1 -* ls_sheet_content_empty-cell_row = lv_current_row. -* ls_sheet_content_empty-cell_column = 1. -* ASSIGN ls_sheet_content_empty TO <ls_sheet_content>. -* ENDIF. -* -* IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. -* IF lo_autofilter IS BOUND. -* IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header -* ls_area-row_end < ls_last_row-cell_row . -* CLEAR l_autofilter_hidden. -* ENDIF. -* ELSE. -* CLEAR l_autofilter_hidden. -* ENDIF. -* IF ls_last_row-cell_row IS NOT INITIAL. -* " Row visibility of previos row. -* IF row_dimension->get_visible( io_worksheet ) = abap_false OR -* l_autofilter_hidden = abap_true. -* lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). -* ENDIF. -* lo_element->append_child( new_child = lo_element_2 ). " row node -* ENDIF. -* " Add new row -* lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row -* parent = lo_document ). -* " r -* lv_value = <ls_sheet_content>-cell_row. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* -* lo_element_2->set_attribute_ns( name = lc_xml_attr_r -* value = lv_value ). -* " Spans -* lv_value = col_count. -* CONCATENATE '1:' lv_value INTO lv_value. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element_2->set_attribute_ns( name = lc_xml_attr_spans -* value = lv_value ). -* row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). -* " Do we need the row dimension attributes? -* IF row_dimension->get_row_height( ) >= 0 OR -* row_dimension->get_collapsed( io_worksheet ) = abap_true OR -* row_dimension->get_outline_level( io_worksheet ) > 0 OR -* row_dimension->get_xf_index( ) <> 0 OR -* l_autofilter_hidden = abap_true. -* " Row dimensions -* IF row_dimension->get_row_height( ) >= 0. -* lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). -* lv_value = row_dimension->get_row_height( ). -* lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). -* ENDIF. -* " Collapsed -* IF row_dimension->get_collapsed( io_worksheet ) = abap_true. -* lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). -* ENDIF. -* " Outline level -* IF row_dimension->get_outline_level( io_worksheet ) > 0. -* lv_value = row_dimension->get_outline_level( io_worksheet ). -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). -* ENDIF. -* " Style -* IF row_dimension->get_xf_index( ) <> 0. -* lv_value = row_dimension->get_xf_index( ). -* lo_element_2->set_attribute_ns( name = 's' value = lv_value ). -* lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). -* ENDIF. -* ENDIF. -* IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much -* CLEAR l_autofilter_hidden. -* ELSE. -* l_autofilter_hidden = abap_true. " First default is not showing -* ENDIF. -* ELSE. -* -* ENDIF. -* ENDWHILE. -* -* lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c -* parent = lo_document ). -* -* lo_element_3->set_attribute_ns( name = lc_xml_attr_r -* value = <ls_sheet_content>-cell_coords ). -* -** begin of change issue #157 - allow column cellstyle -** if no cellstyle is set, look into column, then into sheet -* IF <ls_sheet_content>-cell_style IS NOT INITIAL. -* lv_style_guid = <ls_sheet_content>-cell_style. -* ELSE. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - start -**--------------------------------------------------------------------* -** Check if cell in any of the table areas -* LOOP AT lt_table_areas TRANSPORTING NO FIELDS WHERE top <= <ls_sheet_content>-cell_row -* AND bottom >= <ls_sheet_content>-cell_row -* AND left <= <ls_sheet_content>-cell_column -* AND right >= <ls_sheet_content>-cell_column. -* EXIT. -* ENDLOOP. -* IF sy-subrc = 0. -* CLEAR lv_style_guid. " No style --> EXCEL will use built-in-styles as declared in the tables-section -* ELSE. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - end -**--------------------------------------------------------------------* -* lv_column_p = zcl_excel_common=>convert_column2alpha( <ls_sheet_content>-cell_column ). -* READ TABLE column_dimensions WITH KEY column = lv_column_p ASSIGNING <column_dimension>. -* IF sy-subrc = 0. -* lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). -* IF lv_style_guid IS INITIAL. -* lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). -* ENDIF. -* ELSE. -* lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). -* ENDIF. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - start -**--------------------------------------------------------------------* -* ENDIF. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - end -**--------------------------------------------------------------------* -* ENDIF. -** IF <ls_sheet_content>-cell_style IS NOT INITIAL. -** READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. -* IF lv_style_guid IS NOT INITIAL. -* READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -** end of change issue #157 - allow column cellstyles -* lv_value = ls_style_mapping-style. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element_3->set_attribute_ns( name = lc_xml_attr_s -* value = lv_value ). -* ENDIF. -* -* " For cells with formula ignore the value - Excel will calculate it -* IF <ls_sheet_content>-cell_formula IS NOT INITIAL. -* " fomula node -* lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f -* parent = lo_document ). -* lv_value = <ls_sheet_content>-cell_formula. -* CONDENSE lv_value. -* lo_element_4->set_value( value = lv_value ). -* lo_element_3->append_child( new_child = lo_element_4 ). " fomula node -* ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL "cell can have just style or formula -* AND <ls_sheet_content>-cell_value <> lc_dummy_cell_content. -* IF <ls_sheet_content>-data_type IS NOT INITIAL. -* IF <ls_sheet_content>-data_type EQ 's_leading_blanks'. -* lo_element_3->set_attribute_ns( name = lc_xml_attr_t -* value = 's' ). -* ELSE. -* lo_element_3->set_attribute_ns( name = lc_xml_attr_t -* value = <ls_sheet_content>-data_type ). -* ENDIF. -* ENDIF. -* -* " value node -* lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v -* parent = lo_document ). -* -* IF <ls_sheet_content>-data_type EQ 's' OR <ls_sheet_content>-data_type EQ 's_leading_blanks'. -* lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). -* CONDENSE lv_value. -* lo_element_4->set_value( value = lv_value ). -* ELSE. -* lv_value = <ls_sheet_content>-cell_value. -* CONDENSE lv_value. -* lo_element_4->set_value( value = lv_value ). -* ENDIF. -* -* lo_element_3->append_child( new_child = lo_element_4 ). " value node -* ENDIF. -* -* lo_element_2->append_child( new_child = lo_element_3 ). " column node -* ls_last_row = <ls_sheet_content>. -* ENDLOOP. -* IF sy-subrc = 0. -* READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. -* IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. -* CLEAR l_autofilter_hidden. -* ENDIF. -* IF lo_autofilter IS BOUND. -* IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header -* ls_area-row_end < ls_last_row-cell_row . -* CLEAR l_autofilter_hidden. -* ENDIF. -* ELSE. -* CLEAR l_autofilter_hidden. -* ENDIF. -* " Row visibility of previos row. -* IF row_dimension->get_visible( ) = abap_false OR -* l_autofilter_hidden = abap_true. -* lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). -* ENDIF. -* lo_element->append_child( new_child = lo_element_2 ). " row node -* ENDIF. -* DELETE io_worksheet->sheet_content WHERE cell_value = lc_dummy_cell_content. " Get rid of dummyentries - - lo_element_root->append_child( new_child = lo_element ). " sheetData node - - IF lo_autofilter IS BOUND. -* Create node autofilter - lo_element = lo_document->create_simple_element( name = lc_xml_node_autofilter - parent = lo_document ). - lv_ref = lo_autofilter->get_filter_range( ) . - CONDENSE lv_ref NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - lt_values = lo_autofilter->get_values( ) . - IF lt_values IS NOT INITIAL. -* If we filter we need to set the filter mode to 1. - lo_element_2 = lo_document->find_from_name( name = lc_xml_node_sheetpr ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_filtermode - value = '1' ). -* Create node filtercolumn - CLEAR lv_column. - LOOP AT lt_values INTO ls_values. - IF ls_values-column <> lv_column. - IF lv_column IS NOT INITIAL. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_filtercolumn - parent = lo_element ). - lv_column = ls_values-column - lo_autofilter->filter_area-col_start. - lv_value = lv_column. - CONDENSE lv_value NO-GAPS. - lo_element_2->set_attribute_ns( name = lc_xml_attr_colid - value = lv_value ). - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_filters - parent = lo_element_2 ). - lv_column = ls_values-column. - ENDIF. - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_filter - parent = lo_element_3 ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = ls_values-value ). - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDLOOP. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - IF io_worksheet->zif_excel_sheet_protection~protected EQ abap_true. - " sheetProtection node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetprotection - parent = lo_document ). - MOVE io_worksheet->zif_excel_sheet_protection~password TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_password - value = lv_value ). - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_protection~auto_filter. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_autofilter - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deletecolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deleterows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_hyperlinks. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_inserthyperlinks - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~objects. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_objects - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~pivot_tables. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_pivottables - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~scenarios. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scenarios - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_locked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectlockedcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_unlocked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectunlockedcell - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sheet. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sheet - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sort. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sort - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " Merged cells - lt_range_merge = io_worksheet->get_merge( ). - IF lt_range_merge IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_mergecells - parent = lo_document ). - DESCRIBE TABLE lt_range_merge LINES merge_count. - lv_value = merge_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - LOOP AT lt_range_merge ASSIGNING <fs_range_merge>. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_mergecell - parent = lo_document ). - - lo_element_2->set_attribute_ns( name = lc_xml_attr_ref - value = <fs_range_merge> ). - lo_element->append_child( new_child = lo_element_2 ). - lo_element_root->append_child( new_child = lo_element ). - io_worksheet->delete_merge( ). - ENDLOOP. - ENDIF. - - " Conditional formatting node - lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_style_conditional->rule IS INITIAL. - CONTINUE. - ENDIF. - lo_element = lo_document->create_simple_element( name = lc_xml_node_condformatting - parent = lo_document ). - lv_value = lo_style_conditional->get_dimension_range( ) . - lo_element->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - " cfRule node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_cfrule - parent = lo_document ). - lv_value = lo_style_conditional->rule. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = lo_style_conditional->priority. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_priority - value = lv_value ). - - CASE lo_style_conditional->rule. - " Start >> Databar by Albert Lladanosa - WHEN zcl_excel_style_conditional=>c_rule_databar. - - ls_databar = lo_style_conditional->mode_databar. - - CLEAR lt_cfvo. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_databar - parent = lo_document ). - - MOVE ls_databar-cfvo1_value TO ls_cfvo-value. - MOVE ls_databar-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_databar-cfvo2_value TO ls_cfvo-value. - MOVE ls_databar-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_databar-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - " End << Databar by Albert Lladanosa - - WHEN zcl_excel_style_conditional=>c_rule_colorscale. - - ls_colorscale = lo_style_conditional->mode_colorscale. - - CLEAR: lt_cfvo, lt_colors. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_colorscale - parent = lo_document ). - - MOVE ls_colorscale-cfvo1_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo2_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo3_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - APPEND ls_colorscale-colorrgb1 TO lt_colors. - APPEND ls_colorscale-colorrgb2 TO lt_colors. - APPEND ls_colorscale-colorrgb3 TO lt_colors. - - LOOP AT lt_cfvo INTO ls_cfvo. - - IF ls_cfvo IS INITIAL. - CONTINUE. - ENDIF. - - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - LOOP AT lt_colors INTO ls_colors. - - IF ls_colors IS INITIAL. - CONTINUE. - ENDIF. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_colors-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - ENDLOOP. - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - - WHEN zcl_excel_style_conditional=>c_rule_iconset. - - ls_iconset = lo_style_conditional->mode_iconset. - - CLEAR lt_cfvo. - " iconset node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_iconset - parent = lo_document ). - IF ls_iconset-iconset NE zcl_excel_style_conditional=>c_iconset_3trafficlights. - lv_value = ls_iconset-iconset. - lo_element_3->set_attribute_ns( name = lc_xml_attr_iconset - value = lv_value ). - ENDIF. - - " Set the showValue attribute - lv_value = ls_iconset-showvalue. - lo_element_3->set_attribute_ns( name = lc_xml_attr_showvalue - value = lv_value ). - - CASE ls_iconset-iconset. - WHEN zcl_excel_style_conditional=>c_iconset_3trafficlights2 OR - zcl_excel_style_conditional=>c_iconset_3arrows OR - zcl_excel_style_conditional=>c_iconset_3arrowsgray OR - zcl_excel_style_conditional=>c_iconset_3flags OR - zcl_excel_style_conditional=>c_iconset_3signs OR - zcl_excel_style_conditional=>c_iconset_3symbols OR - zcl_excel_style_conditional=>c_iconset_3symbols2 OR - zcl_excel_style_conditional=>c_iconset_3trafficlights OR - zcl_excel_style_conditional=>c_iconset_3trafficlights2. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_4arrows OR - zcl_excel_style_conditional=>c_iconset_4arrowsgray OR - zcl_excel_style_conditional=>c_iconset_4rating OR - zcl_excel_style_conditional=>c_iconset_4redtoblack OR - zcl_excel_style_conditional=>c_iconset_4trafficlights. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_5arrows OR - zcl_excel_style_conditional=>c_iconset_5arrowsgray OR - zcl_excel_style_conditional=>c_iconset_5quarters OR - zcl_excel_style_conditional=>c_iconset_5rating. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo5_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo5_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN OTHERS. - CLEAR lt_cfvo. - ENDCASE. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - - lo_element_2->append_child( new_child = lo_element_3 ). " iconset node - - WHEN zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis = lo_style_conditional->mode_cellis. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_cellis-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - lv_value = ls_cellis-operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_cellis-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - IF ls_cellis-formula2 IS NOT INITIAL. - lv_value = ls_cellis-formula2. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " 2nd formula node - ENDIF. - - WHEN zcl_excel_style_conditional=>c_rule_expression. - ls_expression = lo_style_conditional->mode_expression. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_expression-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_expression-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - -* begin of ins issue #366 - missing conditional rules: top10 - WHEN zcl_excel_style_conditional=>c_rule_top10. - ls_conditional_top10 = lo_style_conditional->mode_top10. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_conditional_top10-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - lv_value = ls_conditional_top10-topxx_count. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = 'rank' - value = lv_value ). - IF ls_conditional_top10-bottom = 'X'. - lo_element_2->set_attribute_ns( name = 'bottom' - value = '1' ). - ENDIF. - IF ls_conditional_top10-percent = 'X'. - lo_element_2->set_attribute_ns( name = 'percent' - value ='1' ). - ENDIF. - - WHEN zcl_excel_style_conditional=>c_rule_above_average. - ls_conditional_above_avg = lo_style_conditional->mode_above_average. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_conditional_above_avg-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - - IF ls_conditional_above_avg-above_average IS INITIAL. " = below average - lo_element_2->set_attribute_ns( name = 'aboveAverage' - value = '0' ). - ENDIF. - IF ls_conditional_above_avg-equal_average = 'X'. " = equal average also - lo_element_2->set_attribute_ns( name = 'equalAverage' - value = '1' ). - ENDIF. - IF ls_conditional_above_avg-standard_deviation <> 0. " standard deviation instead of value - lv_value = ls_conditional_above_avg-standard_deviation. - lo_element_2->set_attribute_ns( name = 'stdDev' - value = lv_value ). - ENDIF. - -* end of ins issue #366 - missing conditional rules: top10 - - ENDCASE. - - lo_element->append_child( new_child = lo_element_2 ). " cfRule node - - lo_element_root->append_child( new_child = lo_element ). " Conditional formatting node - ENDWHILE. - - IF io_worksheet->get_data_validations_size( ) GT 0. - " dataValidations node - lo_element = lo_document->create_simple_element( name = lc_xml_node_datavalidations - parent = lo_document ). - " Conditional formatting node - lo_iterator = io_worksheet->get_data_validations_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_data_validation ?= lo_iterator->if_object_collection_iterator~get_next( ). - " dataValidation node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_datavalidation - parent = lo_document ). - lv_value = lo_data_validation->type. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - IF NOT lo_data_validation->operator IS INITIAL. - lv_value = lo_data_validation->operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - ENDIF. - IF lo_data_validation->allowblank EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_allowblank - value = lv_value ). - IF lo_data_validation->showinputmessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showinputmessage - value = lv_value ). - IF lo_data_validation->showerrormessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showerrormessage - value = lv_value ). - IF lo_data_validation->showdropdown EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showdropdown - value = lv_value ). - IF NOT lo_data_validation->errortitle IS INITIAL. - lv_value = lo_data_validation->errortitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_errortitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->error IS INITIAL. - lv_value = lo_data_validation->error. - lo_element_2->set_attribute_ns( name = lc_xml_attr_error - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompttitle IS INITIAL. - lv_value = lo_data_validation->prompttitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompttitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompt IS INITIAL. - lv_value = lo_data_validation->prompt. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompt - value = lv_value ). - ENDIF. - lv_cell_row_s = lo_data_validation->cell_row. - CONDENSE lv_cell_row_s. - CONCATENATE lo_data_validation->cell_column lv_cell_row_s INTO lv_value. - IF lo_data_validation->cell_row_to IS NOT INITIAL. - lv_cell_row_s = lo_data_validation->cell_row_to. - CONDENSE lv_cell_row_s. - CONCATENATE lv_value ':' lo_data_validation->cell_column_to lv_cell_row_s INTO lv_value. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - " formula1 node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula1 - parent = lo_document ). - lv_value = lo_data_validation->formula1. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula1 node - " formula2 node - IF NOT lo_data_validation->formula2 IS INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula2 - parent = lo_document ). - lv_value = lo_data_validation->formula2. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula2 node - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). " dataValidation node - ENDWHILE. - lo_element_root->append_child( new_child = lo_element ). " dataValidations node - ENDIF. - - " Hyperlinks - DATA: lv_hyperlinks_count TYPE i, - lo_link TYPE REF TO zcl_excel_hyperlink. - - lv_hyperlinks_count = io_worksheet->get_hyperlinks_size( ). - IF lv_hyperlinks_count > 0. - lo_element = lo_document->create_simple_element( name = 'hyperlinks' - parent = lo_document ). - - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element_2 = lo_document->create_simple_element( name = 'hyperlink' - parent = lo_element ). - - lv_value = lo_link->get_ref( ). - lo_element_2->set_attribute_ns( name = 'ref' - value = lv_value ). - - IF lo_link->is_internal( ) = abap_true. - lv_value = lo_link->get_url( ). - lo_element_2->set_attribute_ns( name = 'location' - value = lv_value ). - ELSE. - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - - " PrintOptions - IF io_worksheet->print_gridlines = abap_true OR - io_worksheet->sheet_setup->vertical_centered = abap_true OR - io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element = lo_document->create_simple_element( name = 'printOptions' - parent = lo_document ). - - IF io_worksheet->print_gridlines = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_gridlines - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element->set_attribute_ns( name = 'horizontalCentered' - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_centered = abap_true. - lo_element->set_attribute_ns( name = 'verticalCentered' - value = 'true' ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - " pageMargins node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_document ). - - lv_value = io_worksheet->sheet_setup->margin_left. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_left - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_right. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_right - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_top. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_top - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_bottom. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_bottom - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_header. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_header - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_footer. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_footer - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). " pageMargins node - -* pageSetup node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_document ). - - IF io_worksheet->sheet_setup->black_and_white IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_blackandwhite - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->cell_comments IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_cellcomments - value = io_worksheet->sheet_setup->cell_comments ). - ENDIF. - - IF io_worksheet->sheet_setup->copies IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->copies. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_copies - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->draft IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_draft - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->errors IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_errors - value = io_worksheet->sheet_setup->errors ). - ENDIF. - - IF io_worksheet->sheet_setup->first_page_number IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->first_page_number. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_firstpagenumber - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->fit_to_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittoheight - value = lv_value ). - lv_value = io_worksheet->sheet_setup->fit_to_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittowidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->horizontal_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_horizontaldpi - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->orientation IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->orientation. - lo_element->set_attribute_ns( name = lc_xml_attr_orientation - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->page_order IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_pageorder - value = io_worksheet->sheet_setup->page_order ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_height IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperheight - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_size IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_size. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_papersize - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_width IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperwidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->scale IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->scale. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scale - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->use_first_page_num IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_usefirstpagenumber - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->use_printer_defaults IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_useprinterdefaults - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->vertical_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_verticaldpi - value = lv_value ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " pageSetup node - -* { headerFooter necessary? > - IF io_worksheet->sheet_setup->odd_header IS NOT INITIAL - OR io_worksheet->sheet_setup->odd_footer IS NOT INITIAL - OR io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_document ). - - " Different header/footer for odd/even pages? - IF io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_differentoddeven - value = '1' ). - ENDIF. - - " OddHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " OddFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - - lo_element_root->append_child( new_child = lo_element ). " headerFooter - - ENDIF. - -* issue #377 pagebreaks - TRY. - create_xl_sheet_pagebreaks( io_document = lo_document - io_parent = lo_element_root - io_worksheet = io_worksheet ) . - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_drawing - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute( name = 'r:id' - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -* tables - DATA lv_table_count TYPE i. - - lv_table_count = io_worksheet->get_tables_size( ). - IF lv_table_count > 0. - lo_element = lo_document->create_simple_element( name = 'tableParts' - parent = lo_document ). - lv_value = lv_table_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element_2 = lo_document->create_simple_element( name = 'tablePart' - parent = lo_element ). - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - - ENDIF. - - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - -* REPLACE FIRST OCCURRENCE OF me->mv_sheet_data_xstring_dummy IN ep_content WITH me->mv_sheet_data_xstring IN BYTE MODE. - -ENDMETHOD. - - - - - - - METHOD create_xl_sheet_pagebreaks. - DATA: lo_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks, - lt_pagebreaks TYPE zcl_excel_worksheet_pagebreaks=>tt_pagebreak_at, - lt_rows TYPE HASHED TABLE OF int4 WITH UNIQUE KEY table_line, - lt_columns TYPE HASHED TABLE OF int4 WITH UNIQUE KEY table_line, - - lo_node_rowbreaks TYPE REF TO if_ixml_element, - lo_node_colbreaks TYPE REF TO if_ixml_element, - lo_node_break TYPE REF TO if_ixml_element, - - lv_value TYPE string. - - - FIELD-SYMBOLS: <ls_pagebreak> LIKE LINE OF lt_pagebreaks. - - lo_pagebreaks = io_worksheet->get_pagebreaks( ). - CHECK lo_pagebreaks IS BOUND. - - lt_pagebreaks = lo_pagebreaks->get_all_pagebreaks( ). - CHECK lt_pagebreaks IS NOT INITIAL. " No need to proceed if don't have any pagebreaks. - - lo_node_rowbreaks = io_document->create_simple_element( name = 'rowBreaks' - parent = io_document ). - - lo_node_colbreaks = io_document->create_simple_element( name = 'colBreaks' - parent = io_document ). - - - LOOP AT lt_pagebreaks ASSIGNING <ls_pagebreak>. - -* Count how many rows and columns need to be broken - INSERT <ls_pagebreak>-cell_row INTO TABLE lt_rows. - IF sy-subrc = 0. " New - lv_value = <ls_pagebreak>-cell_row. - CONDENSE lv_value. - - lo_node_break = io_document->create_simple_element( name = 'brk' - parent = io_document ). - lo_node_break->set_attribute( name = 'id' value = lv_value ). - lo_node_break->set_attribute( name = 'man' value = '1' ). " Manual break - lo_node_break->set_attribute( name = 'max' value = '16383' ). " Max columns - - lo_node_rowbreaks->append_child( new_child = lo_node_break ). - ENDIF. - - INSERT <ls_pagebreak>-cell_column INTO TABLE lt_columns. - IF sy-subrc = 0. " New - lv_value = <ls_pagebreak>-cell_column. - CONDENSE lv_value. - - lo_node_break = io_document->create_simple_element( name = 'brk' - parent = io_document ). - lo_node_break->set_attribute( name = 'id' value = lv_value ). - lo_node_break->set_attribute( name = 'man' value = '1' ). " Manual break - lo_node_break->set_attribute( name = 'max' value = '1048575' ). " Max rows - - lo_node_colbreaks->append_child( new_child = lo_node_break ). - ENDIF. - - - ENDLOOP. - - lv_value = lines( lt_rows ). - CONDENSE lv_value. - lo_node_rowbreaks->set_attribute( name = 'count' value = lv_value ). - lo_node_rowbreaks->set_attribute( name = 'manualBreakCount' value = lv_value ). - - lv_value = lines( lt_rows ). - CONDENSE lv_value. - lo_node_colbreaks->set_attribute( name = 'count' value = lv_value ). - lo_node_colbreaks->set_attribute( name = 'manualBreakCount' value = lv_value ). - - - - - io_parent->append_child( new_child = lo_node_rowbreaks ). - io_parent->append_child( new_child = lo_node_colbreaks ). - -ENDMETHOD. - - - - - - METHOD create_xl_sheet_rels. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', - lc_xml_val_external TYPE string VALUE 'External', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', - lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_link TYPE REF TO zcl_excel_hyperlink. - - DATA: lv_value TYPE string, - lv_relation_id TYPE i, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_relation_id = 0. - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_link->is_internal( ) = abap_false. " issue #340 - don't put internal links here - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_link_tp ). - - lv_value = lo_link->get_url( ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_target_mode - value = lc_xml_val_external ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_drawing_tp ). - - lv_index_str = iv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - MOVE me->c_xl_drawings TO lv_value. - REPLACE 'xl' WITH '..' INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_table_tp ). - - lv_value = lo_table->get_name( ). - CONCATENATE '../tables/' lv_value '.xml' INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* IF io_worksheet->get_print_settings( )->is_empty( ) = abap_false. -* ADD 1 TO lv_relation_id. -* lv_value = lv_relation_id. -* CONDENSE lv_value. -* CONCATENATE 'rId' lv_value INTO lv_value. -* -* lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship -* parent = lo_document ). -* lo_element->set_attribute_ns( name = lc_xml_attr_id -* value = lv_value ). -* lo_element->set_attribute_ns( name = lc_xml_attr_type -* value = lc_xml_node_rid_printer_tp ). -* -* lv_index_str = iv_printer_index. -* CONDENSE lv_index_str NO-GAPS. -* MOVE me->c_xl_printersettings TO lv_value. -* REPLACE 'xl' WITH '..' INTO lv_value. -* REPLACE '#' WITH lv_index_str INTO lv_value. -* lo_element->set_attribute_ns( name = lc_xml_attr_target -* value = lv_value ). -* -* lo_element_root->append_child( new_child = lo_element ). -* ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_sheet_sheet_data. - - TYPES: BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, - END OF lty_table_area. - - CONSTANTS: lc_dummy_cell_content TYPE zexcel_s_cell_data-cell_value VALUE '})~~~ This is a dummy value for ABAP2XLSX and you should never find this in a real excelsheet Ihope'. - - CONSTANTS: lc_xml_node_sheetdata TYPE string VALUE 'sheetData', " SheetData tag - lc_xml_node_row TYPE string VALUE 'row', " Row tag - lc_xml_attr_r TYPE string VALUE 'r', " Cell: row-attribute - lc_xml_attr_spans TYPE string VALUE 'spans', " Cell: spans-attribute - lc_xml_node_c TYPE string VALUE 'c', " Cell tag - lc_xml_node_v TYPE string VALUE 'v', " Cell: value - lc_xml_node_f TYPE string VALUE 'f', " Cell: formula - lc_xml_attr_s TYPE string VALUE 's', " Cell: style - lc_xml_attr_t TYPE string VALUE 't'. " Cell: type - - DATA: col_count TYPE int4, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter, - l_autofilter_hidden TYPE flag, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values, - ls_area TYPE zexcel_s_autofilter_area, - - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lt_table_areas TYPE SORTED TABLE OF lty_table_area WITH NON-UNIQUE KEY left right top bottom, - ls_table_area LIKE LINE OF lt_table_areas, - - ls_sheet_content LIKE LINE OF io_worksheet->sheet_content, - ls_sheet_content_empty LIKE LINE OF io_worksheet->sheet_content, - lv_current_row TYPE i, - lv_next_row TYPE i, - lv_last_row TYPE i, - - lts_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - lo_row_dim_empty TYPE REF TO zcl_excel_worksheet_rowdimensi, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lts_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping, - - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - - lv_value TYPE string, - lv_style_guid TYPE zexcel_cell_style, - lv_column_p TYPE zexcel_cell_column_alpha, - - xxx. - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data, - <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio, - <ls_row_outline> LIKE LINE OF lts_row_outlines. - - - DATA: lv_xstring_partial TYPE xstring, - lv_xstring TYPE xstring. - - " sheetData node - rv_ixml_sheet_data_root = io_document->create_simple_element( name = lc_xml_node_sheetdata - parent = io_document ). - me->mv_sheet_data_xstring_dummy = render_ixml_element_no_header( rv_ixml_sheet_data_root ). - - " Get column count - col_count = io_worksheet->get_highest_column( ). - " Get autofilter -*lv_guid = io_worksheet->get_guid( ) . - lo_autofilters = excel->get_autofilters_reference( ). - lo_autofilter = lo_autofilters->get( io_worksheet = io_worksheet ) . - IF lo_autofilter IS BOUND. - lt_values = lo_autofilter->get_values( ) . - ls_area = lo_autofilter->get_filter_area( ) . - l_autofilter_hidden = abap_true. " First defautl is not showing - ENDIF. -*--------------------------------------------------------------------* -*issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - start -*--------------------------------------------------------------------* -*Build table to hold all table-areas attached to this sheet - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). - ls_table_area-right = lo_table->get_right_column_integer( ). - ls_table_area-top = lo_table->settings-top_left_row. - ls_table_area-bottom = lo_table->get_bottom_row_integer( ). - INSERT ls_table_area INTO TABLE lt_table_areas. - ENDWHILE. -*--------------------------------------------------------------------* -*issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end -*--------------------------------------------------------------------* -*We have problems when the first rows or trailing rows are not set but we have rowinformation -*to solve this we add dummycontent into first and last line that will not be set -*Set first line if necessary - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = 1. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = 1. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. -*Set last line if necessary -*Last row with cell content - lv_last_row = io_worksheet->get_highest_row( ). -*Last line with row-information set directly ( like line height, hidden-status ... ) - lts_row_dimensions = io_worksheet->get_row_dimensions( ). - SORT lts_row_dimensions BY row DESCENDING. - READ TABLE lts_row_dimensions INDEX 1 ASSIGNING <row_dimension>. - IF sy-subrc = 0 AND <row_dimension>-row > lv_last_row. - lv_last_row = <row_dimension>-row. - ENDIF. -*Last line with row-information set indirectly by row outline - lts_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lts_row_outlines ASSIGNING <ls_row_outline>. - IF <ls_row_outline>-collapsed = 'X'. - lv_current_row = <ls_row_outline>-row_to + 1. " collapsed-status may be set on following row - ELSE. - lv_current_row = <ls_row_outline>-row_to. " collapsed-status may be set on following row - ENDIF. - IF lv_current_row > lv_last_row. - lv_last_row = lv_current_row. - ENDIF. - ENDLOOP. - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = lv_last_row. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = lv_last_row. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. - - CLEAR ls_sheet_content. - LOOP AT io_worksheet->sheet_content INTO ls_sheet_content. - IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much - CLEAR l_autofilter_hidden. - ELSE. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - ENDIF. - CLEAR ls_style_mapping. -*Create row element -*issues #346,#154, #195 - problems when we have information in row_dimension but no cell content in that row -*Get next line that may have to be added. If we have empty lines this is the next line after previous cell content -*Otherwise it is the line of the current cell content - lv_current_row = ls_last_row-cell_row + 1. - IF lv_current_row > ls_sheet_content-cell_row. - lv_current_row = ls_sheet_content-cell_row. - ENDIF. -*Fill in empty lines if necessary - assign an emtpy sheet content - lv_next_row = lv_current_row. - WHILE lv_next_row <= ls_sheet_content-cell_row. - lv_current_row = lv_next_row. - lv_next_row = lv_current_row + 1. - IF lv_current_row = ls_sheet_content-cell_row. " cell value found in this row - ASSIGN ls_sheet_content TO <ls_sheet_content>. - ELSE. -*Check if empty row is really necessary - this is basically the case when we have information in row_dimension - lo_row_dim_empty = io_worksheet->get_row_dimension( lv_current_row ). - CHECK lo_row_dim_empty->get_row_height( ) >= 0 OR - lo_row_dim_empty->get_collapsed( io_worksheet ) = abap_true OR - lo_row_dim_empty->get_outline_level( io_worksheet ) > 0 OR - lo_row_dim_empty->get_xf_index( ) <> 0. - " Dummyentry A1 - ls_sheet_content_empty-cell_row = lv_current_row. - ls_sheet_content_empty-cell_column = 1. - ASSIGN ls_sheet_content_empty TO <ls_sheet_content>. - ENDIF. - - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - IF ls_last_row-cell_row IS NOT INITIAL. - " Row visibility of previos row. - IF row_dimension->get_visible( io_worksheet ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. -* lv_xstring_partial = render_ixml_element_no_header( lo_element_2 ). -* CONCATENATE lv_xstring lv_xstring_partial -* INTO lv_xstring IN BYTE MODE. - rv_ixml_sheet_data_root->append_child( new_child = lo_element_2 ). " row node - ENDIF. - " Add new row - lo_element_2 = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - " r - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - " Spans - lv_value = col_count. - CONCATENATE '1:' lv_value INTO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = lv_value ). - row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). - " Do we need the row dimension attributes? - IF row_dimension->get_row_height( ) >= 0 OR - row_dimension->get_collapsed( io_worksheet ) = abap_true OR - row_dimension->get_outline_level( io_worksheet ) > 0 OR - row_dimension->get_xf_index( ) <> 0 OR - l_autofilter_hidden = abap_true. - " Row dimensions - IF row_dimension->get_row_height( ) >= 0. - lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). - lv_value = row_dimension->get_row_height( ). - lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). - ENDIF. - " Collapsed - IF row_dimension->get_collapsed( io_worksheet ) = abap_true. - lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). - ENDIF. - " Outline level - IF row_dimension->get_outline_level( io_worksheet ) > 0. - lv_value = row_dimension->get_outline_level( io_worksheet ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). - ENDIF. - " Style - IF row_dimension->get_xf_index( ) <> 0. - lv_value = row_dimension->get_xf_index( ). - lo_element_2->set_attribute_ns( name = 's' value = lv_value ). - lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). - ENDIF. - ENDIF. - IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much - CLEAR l_autofilter_hidden. - ELSE. - l_autofilter_hidden = abap_true. " First default is not showing - ENDIF. - ELSE. - - ENDIF. - ENDWHILE. - - lo_element_3 = io_document->create_simple_element( name = lc_xml_node_c - parent = io_document ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_r - value = <ls_sheet_content>-cell_coords ). - -*begin of change issue #157 - allow column cellstyle -*if no cellstyle is set, look into column, then into sheet - IF <ls_sheet_content>-cell_style IS NOT INITIAL. - lv_style_guid = <ls_sheet_content>-cell_style. - ELSE. -*--------------------------------------------------------------------* -*issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - start -*--------------------------------------------------------------------* -*Check if cell in any of the table areas - LOOP AT lt_table_areas TRANSPORTING NO FIELDS WHERE top <= <ls_sheet_content>-cell_row - AND bottom >= <ls_sheet_content>-cell_row - AND left <= <ls_sheet_content>-cell_column - AND right >= <ls_sheet_content>-cell_column. - EXIT. - ENDLOOP. - IF sy-subrc = 0. - CLEAR lv_style_guid. " No style --> EXCEL will use built-in-styles as declared in the tables-section - ELSE. -*--------------------------------------------------------------------* -*issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - end -*--------------------------------------------------------------------* - lv_column_p = zcl_excel_common=>convert_column2alpha( <ls_sheet_content>-cell_column ). - READ TABLE it_column_dimensions WITH KEY column = lv_column_p ASSIGNING <column_dimension>. - IF sy-subrc = 0. - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). - IF lv_style_guid IS INITIAL. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - ELSE. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. -*--------------------------------------------------------------------* -*issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - start -*--------------------------------------------------------------------* - ENDIF. -*--------------------------------------------------------------------* -*issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - end -*--------------------------------------------------------------------* - ENDIF. -* IF <ls_sheet_content>-cell_style IS NOT INITIAL. -* READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. - IF lv_style_guid IS NOT INITIAL. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -*end of change issue #157 - allow column cellstyles - lv_value = ls_style_mapping-style. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_3->set_attribute_ns( name = lc_xml_attr_s - value = lv_value ). - ENDIF. - - " For cells with formula ignore the value - Excel will calculate it - IF <ls_sheet_content>-cell_formula IS NOT INITIAL. - " fomula node - lo_element_4 = io_document->create_simple_element( name = lc_xml_node_f - parent = io_document ). - lv_value = <ls_sheet_content>-cell_formula. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " fomula node - ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL "cell can have just style or formula - AND <ls_sheet_content>-cell_value <> lc_dummy_cell_content. - IF <ls_sheet_content>-data_type IS NOT INITIAL. - IF <ls_sheet_content>-data_type EQ 's_leading_blanks'. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = 's' ). - ELSE. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = <ls_sheet_content>-data_type ). - ENDIF. - ENDIF. - - " value node - lo_element_4 = io_document->create_simple_element( name = lc_xml_node_v - parent = io_document ). - - IF <ls_sheet_content>-data_type EQ 's' OR <ls_sheet_content>-data_type EQ 's_leading_blanks'. - lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ELSE. - lv_value = <ls_sheet_content>-cell_value. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ENDIF. - - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDIF. - - lo_element_2->append_child( new_child = lo_element_3 ). " column node - ls_last_row = <ls_sheet_content>. - ENDLOOP. - IF sy-subrc = 0. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - " Row visibility of previos row. - IF row_dimension->get_visible( ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. -* lv_xstring_partial = render_ixml_element_no_header( lo_element_2 ). -* CONCATENATE lv_xstring lv_xstring_partial -* INTO lv_xstring IN BYTE MODE. - rv_ixml_sheet_data_root->append_child( new_child = lo_element_2 ). " row node - ENDIF. - DELETE io_worksheet->sheet_content WHERE cell_value = lc_dummy_cell_content. " Get rid of dummyentries - -* -* -* me->mv_sheet_data_xstring = render_ixml_element_no_header( rv_ixml_sheet_data_root ). -* -* -** Für den Dummystringersatz jetzt alles zurück auf Anfang -* rv_ixml_sheet_data_root = io_document->create_simple_element( name = lc_xml_node_sheetdata -* parent = io_document ). -* me->mv_sheet_data_xstring_dummy = render_ixml_element_no_header( rv_ixml_sheet_data_root ). -* -* DATA: lv_sheetdata_tag_start TYPE xstring, -* lv_sheetdata_tag_end TYPE xstring. -* -* lv_sheetdata_tag_start = cl_bcs_convert=>string_to_xstring( '<sheetData>' ). -* lv_sheetdata_tag_end = cl_bcs_convert=>string_to_xstring( '</sheetData>' ). -* CONCATENATE lv_sheetdata_tag_start lv_xstring lv_sheetdata_tag_end -* INTO lv_xstring IN BYTE MODE. -* me->mv_sheet_data_xstring = lv_xstring. - -ENDMETHOD. - - - - METHOD create_xl_styles. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 dxfs-cellstyles are used in conditional formats: -* CellIs, Expression, top10 ( forthcoming above average as well ) -* create own method to write dsfx-cellstyle to be reuseable by all these -*--------------------------------------------------------------------* - - -** Constant node name - CONSTANTS: lc_xml_node_stylesheet TYPE string VALUE 'styleSheet', - " font - lc_xml_node_fonts TYPE string VALUE 'fonts', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - " fill - lc_xml_node_fills TYPE string VALUE 'fills', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - lc_xml_node_gradientfill TYPE string VALUE 'gradientFill', - lc_xml_node_stop TYPE string VALUE 'stop', - " borders - lc_xml_node_borders TYPE string VALUE 'borders', - lc_xml_node_border TYPE string VALUE 'border', - lc_xml_node_left TYPE string VALUE 'left', - lc_xml_node_right TYPE string VALUE 'right', - lc_xml_node_top TYPE string VALUE 'top', - lc_xml_node_bottom TYPE string VALUE 'bottom', - lc_xml_node_diagonal TYPE string VALUE 'diagonal', - " numfmt - lc_xml_node_numfmts TYPE string VALUE 'numFmts', - lc_xml_node_numfmt TYPE string VALUE 'numFmt', - " Styles - lc_xml_node_cellstylexfs TYPE string VALUE 'cellStyleXfs', - lc_xml_node_xf TYPE string VALUE 'xf', - lc_xml_node_cellxfs TYPE string VALUE 'cellXfs', - lc_xml_node_cellstyles TYPE string VALUE 'cellStyles', - lc_xml_node_cellstyle TYPE string VALUE 'cellStyle', - lc_xml_node_dxfs TYPE string VALUE 'dxfs', - lc_xml_node_dxf TYPE string VALUE 'dxf', - lc_xml_node_tablestyles TYPE string VALUE 'tableStyles', - " Colors - lc_xml_node_colors TYPE string VALUE 'colors', - lc_xml_node_indexedcolors TYPE string VALUE 'indexedColors', - lc_xml_node_rgbcolor TYPE string VALUE 'rgbColor', - lc_xml_node_mrucolors TYPE string VALUE 'mruColors', - " Alignment - lc_xml_node_alignment TYPE string VALUE 'alignment', - " Protection - lc_xml_node_protection TYPE string VALUE 'protection', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_position TYPE string VALUE 'position', - lc_xml_attr_degree TYPE string VALUE 'degree', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_attr_numfmtid TYPE string VALUE 'numFmtId', - lc_xml_attr_fontid TYPE string VALUE 'fontId', - lc_xml_attr_fillid TYPE string VALUE 'fillId', - lc_xml_attr_borderid TYPE string VALUE 'borderId', - lc_xml_attr_xfid TYPE string VALUE 'xfId', - lc_xml_attr_applynumberformat TYPE string VALUE 'applyNumberFormat', - lc_xml_attr_applyprotection TYPE string VALUE 'applyProtection', - lc_xml_attr_applyfont TYPE string VALUE 'applyFont', - lc_xml_attr_applyfill TYPE string VALUE 'applyFill', - lc_xml_attr_applyborder TYPE string VALUE 'applyBorder', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_builtinid TYPE string VALUE 'builtinId', - lc_xml_attr_defaulttablestyle TYPE string VALUE 'defaultTableStyle', - lc_xml_attr_defaultpivotstyle TYPE string VALUE 'defaultPivotStyle', - lc_xml_attr_applyalignment TYPE string VALUE 'applyAlignment', - lc_xml_attr_horizontal TYPE string VALUE 'horizontal', - lc_xml_attr_formatcode TYPE string VALUE 'formatCode', - lc_xml_attr_vertical TYPE string VALUE 'vertical', - lc_xml_attr_wraptext TYPE string VALUE 'wrapText', - lc_xml_attr_textrotation TYPE string VALUE 'textRotation', - lc_xml_attr_shrinktofit TYPE string VALUE 'shrinkToFit', - lc_xml_attr_indent TYPE string VALUE 'indent', - lc_xml_attr_locked TYPE string VALUE 'locked', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_diagonalup TYPE string VALUE 'diagonalUp', - lc_xml_attr_diagonaldown TYPE string VALUE 'diagonalDown', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_left TYPE string VALUE 'left'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_fonts TYPE REF TO if_ixml_element, - lo_element_font TYPE REF TO if_ixml_element, - lo_element_fills TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_borders TYPE REF TO if_ixml_element, - lo_element_border TYPE REF TO if_ixml_element, - lo_element_numfmts TYPE REF TO if_ixml_element, - lo_element_numfmt TYPE REF TO if_ixml_element, - lo_element_cellxfs TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator2 TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style TYPE REF TO zcl_excel_style. - - - DATA: lt_fonts TYPE zexcel_t_style_font, - ls_font TYPE zexcel_s_style_font, - lt_fills TYPE zexcel_t_style_fill, - ls_fill TYPE zexcel_s_style_fill, - lt_borders TYPE zexcel_t_style_border, - ls_border TYPE zexcel_s_style_border, - lt_numfmts TYPE zexcel_t_style_numfmt, - ls_numfmt TYPE zexcel_s_style_numfmt, - lt_protections TYPE zexcel_t_style_protection, - ls_protection TYPE zexcel_s_style_protection, - lt_alignments TYPE zexcel_t_style_alignment, - ls_alignment TYPE zexcel_s_style_alignment, - lt_cellxfs TYPE zexcel_t_cellxfs, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_styles_mapping TYPE zexcel_s_styles_mapping, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - ls_conditional_top10 TYPE zexcel_conditional_top10, - - lt_colors TYPE zexcel_t_style_color_argb, - ls_color LIKE LINE OF lt_colors. - - DATA: lv_value TYPE string, - lv_dfx_count TYPE i, - lv_fonts_count TYPE i, - lv_fills_count TYPE i, - lv_borders_count TYPE i, - lv_cellxfs_count TYPE i, - lv_index TYPE i, - lv_align_flag TYPE c. - - TYPES: BEGIN OF ts_built_in_format, - num_format TYPE zexcel_number_format, - id TYPE sytabix, - END OF ts_built_in_format. - - DATA: lt_built_in_num_formats TYPE HASHED TABLE OF ts_built_in_format WITH UNIQUE KEY num_format, - ls_built_in_num_format LIKE LINE OF lt_built_in_num_formats. - FIELD-SYMBOLS: <ls_built_in_format> LIKE LINE OF lt_built_in_num_formats, - <ls_reader_built_in> LIKE LINE OF zcl_excel_style_number_format=>mt_built_in_num_formats. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_stylesheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lo_element_fonts = lo_document->create_simple_element( name = lc_xml_node_fonts - parent = lo_document ). - - lo_element_fills = lo_document->create_simple_element( name = lc_xml_node_fills - parent = lo_document ). - - lo_element_borders = lo_document->create_simple_element( name = lc_xml_node_borders - parent = lo_document ). - - lo_element_cellxfs = lo_document->create_simple_element( name = lc_xml_node_cellxfs - parent = lo_document ). - - lo_element_numfmts = lo_document->create_simple_element( name = lc_xml_node_numfmts - parent = lo_document ). - -* Prepare built-in number formats. - LOOP AT zcl_excel_style_number_format=>mt_built_in_num_formats ASSIGNING <ls_reader_built_in>. - ls_built_in_num_format-id = <ls_reader_built_in>-id. - ls_built_in_num_format-num_format = <ls_reader_built_in>-format->format_code. - INSERT ls_built_in_num_format INTO TABLE lt_built_in_num_formats. - ENDLOOP. -* Compress styles - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_font = lo_style->font->get_structure( ). - ls_fill = lo_style->fill->get_structure( ). - ls_border = lo_style->borders->get_structure( ). - ls_alignment = lo_style->alignment->get_structure( ). - ls_protection = lo_style->protection->get_structure( ). - ls_numfmt = lo_style->number_format->get_structure( ). - - CLEAR ls_cellxfs. - - -* Compress fonts - READ TABLE lt_fonts FROM ls_font TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fontid = sy-tabix. - ELSE. - APPEND ls_font TO lt_fonts. - DESCRIBE TABLE lt_fonts LINES ls_cellxfs-fontid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fontid. - -* Compress alignment - READ TABLE lt_alignments FROM ls_alignment TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-alignmentid = sy-tabix. - ELSE. - APPEND ls_alignment TO lt_alignments. - DESCRIBE TABLE lt_alignments LINES ls_cellxfs-alignmentid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - -* Compress fills - READ TABLE lt_fills FROM ls_fill TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fillid = sy-tabix. - ELSE. - APPEND ls_fill TO lt_fills. - DESCRIBE TABLE lt_fills LINES ls_cellxfs-fillid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fillid. - -* Compress borders - READ TABLE lt_borders FROM ls_border TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-borderid = sy-tabix. - ELSE. - APPEND ls_border TO lt_borders. - DESCRIBE TABLE lt_borders LINES ls_cellxfs-borderid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-borderid. - -* Compress protection - IF ls_protection-locked EQ c_on AND ls_protection-hidden EQ c_off. - ls_cellxfs-applyprotection = 0. - ELSE. - READ TABLE lt_protections FROM ls_protection TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-protectionid = sy-tabix. - ELSE. - APPEND ls_protection TO lt_protections. - DESCRIBE TABLE lt_protections LINES ls_cellxfs-protectionid. - ENDIF. - ls_cellxfs-applyprotection = 1. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - -* Compress number formats - - "----------- - IF ls_numfmt-numfmt NE zcl_excel_style_number_format=>c_format_date_std." and ls_numfmt-NUMFMT ne 'STD_NDEC'. " ALE Changes on going - "--- - IF ls_numfmt IS NOT INITIAL. -* issue #389 - Problem with built-in format ( those are not being taken account of ) -* There are some internal number formats built-in into EXCEL -* Use these instead of duplicating the entries here, since they seem to be language-dependant and adjust to user settings in excel - READ TABLE lt_built_in_num_formats ASSIGNING <ls_built_in_format> WITH TABLE KEY num_format = ls_numfmt-numfmt. - IF sy-subrc = 0. - ls_cellxfs-numfmtid = <ls_built_in_format>-id. - ELSE. - READ TABLE lt_numfmts FROM ls_numfmt TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-numfmtid = sy-tabix. - ELSE. - APPEND ls_numfmt TO lt_numfmts. - DESCRIBE TABLE lt_numfmts LINES ls_cellxfs-numfmtid. - ENDIF. - ADD zcl_excel_common=>c_excel_numfmt_offset TO ls_cellxfs-numfmtid. " Add OXML offset for custom styles - ENDIF. - ls_cellxfs-applynumberformat = 1. - ELSE. - ls_cellxfs-applynumberformat = 0. - ENDIF. - "----------- " ALE changes on going - ELSE. - ls_cellxfs-applynumberformat = 1. - IF ls_numfmt-numfmt EQ zcl_excel_style_number_format=>c_format_date_std. - ls_cellxfs-numfmtid = 14. -* elseif ls_numfmt-NUMFMT eq 'STD_NDEC'. -* ls_cellxfs-numfmtid = 2. - ENDIF. - ENDIF. - "--- - - IF ls_cellxfs-fontid NE 0. - ls_cellxfs-applyfont = 1. - ELSE. - ls_cellxfs-applyfont = 0. - ENDIF. - IF ls_cellxfs-alignmentid NE 0. - ls_cellxfs-applyalignment = 1. - ELSE. - ls_cellxfs-applyalignment = 0. - ENDIF. - IF ls_cellxfs-fillid NE 0. - ls_cellxfs-applyfill = 1. - ELSE. - ls_cellxfs-applyfill = 0. - ENDIF. - IF ls_cellxfs-borderid NE 0. - ls_cellxfs-applyborder = 1. - ELSE. - ls_cellxfs-applyborder = 0. - ENDIF. - -* Remap styles - READ TABLE lt_cellxfs FROM ls_cellxfs TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_styles_mapping-style = sy-tabix. - ELSE. - APPEND ls_cellxfs TO lt_cellxfs. - DESCRIBE TABLE lt_cellxfs LINES ls_styles_mapping-style. - ENDIF. - SUBTRACT 1 FROM ls_styles_mapping-style. - ls_styles_mapping-guid = lo_style->get_guid( ). - APPEND ls_styles_mapping TO me->styles_mapping. - ENDWHILE. - - " create numfmt elements - LOOP AT lt_numfmts INTO ls_numfmt. - lo_element_numfmt = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_document ). - lv_value = sy-tabix + zcl_excel_common=>c_excel_numfmt_offset. - CONDENSE lv_value. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - lv_value = ls_numfmt-numfmt. -* REPLACE ALL OCCURRENCES OF '.' IN lv_value WITH '\.'. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_formatcode - value = lv_value ). - lo_element_numfmts->append_child( new_child = lo_element_numfmt ). - ENDLOOP. - - " create font elements - LOOP AT lt_fonts INTO ls_font. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz - parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). - - "name - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name - parent = lo_document ). - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family - parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "scheme - IF ls_font-scheme IS NOT INITIAL. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - lo_element_fonts->append_child( new_child = lo_element_font ). - ENDLOOP. - - " create fill elements - LOOP AT lt_fills INTO ls_fill. - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - - IF ls_fill-gradtype IS NOT INITIAL. - "gradient - - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_gradientfill - parent = lo_document ). - IF ls_fill-gradtype-degree IS NOT INITIAL. - lv_value = ls_fill-gradtype-degree. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_degree value = lv_value ). - ENDIF. - IF ls_fill-gradtype-type IS NOT INITIAL. - lv_value = ls_fill-gradtype-type. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_type value = lv_value ). - ENDIF. - IF ls_fill-gradtype-bottom IS NOT INITIAL. - lv_value = ls_fill-gradtype-bottom. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_bottom value = lv_value ). - ENDIF. - IF ls_fill-gradtype-top IS NOT INITIAL. - lv_value = ls_fill-gradtype-top. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_top value = lv_value ). - ENDIF. - IF ls_fill-gradtype-right IS NOT INITIAL. - lv_value = ls_fill-gradtype-right. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_right value = lv_value ). - ENDIF. - IF ls_fill-gradtype-left IS NOT INITIAL. - lv_value = ls_fill-gradtype-left. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_left value = lv_value ). - ENDIF. - - IF ls_fill-gradtype-position3 IS NOT INITIAL. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position3. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - ELSE. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - - - - - ELSE. - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - ENDIF. - - lo_element_fill->append_child( new_child = lo_sub_element )."pattern - lo_element_fills->append_child( new_child = lo_element_fill ). - ENDLOOP. - - " create border elements - LOOP AT lt_borders INTO ls_border. - lo_element_border = lo_document->create_simple_element( name = lc_xml_node_border - parent = lo_document ). - - IF ls_border-diagonalup IS NOT INITIAL. - lv_value = ls_border-diagonalup. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonalup - value = lv_value ). - ENDIF. - - IF ls_border-diagonaldown IS NOT INITIAL. - lv_value = ls_border-diagonaldown. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonaldown - value = lv_value ). - ENDIF. - - "left - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_left - parent = lo_document ). - IF ls_border-left_style IS NOT INITIAL. - lv_value = ls_border-left_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-left_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "right - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right - parent = lo_document ). - IF ls_border-right_style IS NOT INITIAL. - lv_value = ls_border-right_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-right_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "top - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top - parent = lo_document ). - IF ls_border-top_style IS NOT INITIAL. - lv_value = ls_border-top_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-top_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "bottom - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom - parent = lo_document ). - IF ls_border-bottom_style IS NOT INITIAL. - lv_value = ls_border-bottom_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-bottom_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "diagonal - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal - parent = lo_document ). - IF ls_border-diagonal_style IS NOT INITIAL. - lv_value = ls_border-diagonal_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-diagonal_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - lo_element_borders->append_child( new_child = lo_element_border ). - ENDLOOP. - - " update attribute "count" - DESCRIBE TABLE lt_fonts LINES lv_fonts_count. - MOVE lv_fonts_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fonts->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_fills LINES lv_fills_count. - MOVE lv_fills_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fills->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_borders LINES lv_borders_count. - MOVE lv_borders_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_borders->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_cellxfs LINES lv_cellxfs_count. - MOVE lv_cellxfs_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_cellxfs->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - - " Append to root node - lo_element_root->append_child( new_child = lo_element_numfmts ). - lo_element_root->append_child( new_child = lo_element_fonts ). - lo_element_root->append_child( new_child = lo_element_fills ). - lo_element_root->append_child( new_child = lo_element_borders ). - - " cellstylexfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fontid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fillid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT lt_cellxfs INTO ls_cellxfs. - lo_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - MOVE ls_cellxfs-numfmtid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - MOVE ls_cellxfs-fontid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fontid - value = lv_value ). - MOVE ls_cellxfs-fillid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fillid - value = lv_value ). - MOVE ls_cellxfs-borderid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_borderid - value = lv_value ). - MOVE ls_cellxfs-xfid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_xfid - value = lv_value ). - IF ls_cellxfs-applynumberformat EQ 1. - MOVE ls_cellxfs-applynumberformat TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applynumberformat - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfont EQ 1. - MOVE ls_cellxfs-applyfont TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfont - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfill EQ 1. - MOVE ls_cellxfs-applyfill TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfill - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyborder EQ 1. - MOVE ls_cellxfs-applyborder TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyborder - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyalignment EQ 1. " depends on each style not for all the sheet - MOVE ls_cellxfs-applyalignment TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyalignment - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_alignment - parent = lo_document ). - ADD 1 TO ls_cellxfs-alignmentid. "Table index starts from 1 - READ TABLE lt_alignments INTO ls_alignment INDEX ls_cellxfs-alignmentid. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - IF ls_alignment-horizontal IS NOT INITIAL. - MOVE ls_alignment-horizontal TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_horizontal - value = lv_value ). - ENDIF. - IF ls_alignment-vertical IS NOT INITIAL. - MOVE ls_alignment-vertical TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_vertical - value = lv_value ). - ENDIF. - IF ls_alignment-wraptext EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_wraptext - value = c_on ). - ENDIF. - IF ls_alignment-textrotation IS NOT INITIAL. - MOVE ls_alignment-textrotation TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_textrotation - value = lv_value ). - ENDIF. - IF ls_alignment-shrinktofit EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_shrinktofit - value = c_on ). - ENDIF. - IF ls_alignment-indent IS NOT INITIAL. - MOVE ls_alignment-indent TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indent - value = lv_value ). - ENDIF. - - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_cellxfs-applyprotection EQ 1. - MOVE ls_cellxfs-applyprotection TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_applyprotection - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_protection - parent = lo_document ). - ADD 1 TO ls_cellxfs-protectionid. "Table index starts from 1 - READ TABLE lt_protections INTO ls_protection INDEX ls_cellxfs-protectionid. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - IF ls_protection-locked IS NOT INITIAL. - MOVE ls_protection-locked TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_locked - value = lv_value ). - ENDIF. - IF ls_protection-hidden IS NOT INITIAL. - MOVE ls_protection-hidden TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - lo_element_cellxfs->append_child( new_child = lo_element ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element_cellxfs ). - - " cellStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_cellstyle - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = 'Normal' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xfid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - " dxfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs - parent = lo_document ). - - lo_iterator = me->excel->get_worksheets_iterator( ). - " get sheets - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - " Conditional formatting styles into exch sheet - lo_iterator2 = lo_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator2->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator2->if_object_collection_iterator~get_next( ). - CASE lo_style_conditional->rule. -* begin of change issue #366 - missing conditional rules: top10, move dfx-styles to own method - WHEN zcl_excel_style_conditional=>c_rule_cellis. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_cellis-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). - - WHEN zcl_excel_style_conditional=>c_rule_expression. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_expression-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). - - - - WHEN zcl_excel_style_conditional=>c_rule_top10. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_top10-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). - - WHEN zcl_excel_style_conditional=>c_rule_above_average. - me->create_dxf_style( EXPORTING - iv_cell_style = lo_style_conditional->mode_above_average-cell_style - io_dxf_element = lo_element - io_ixml_document = lo_document - it_cellxfs = lt_cellxfs - it_fonts = lt_fonts - it_fills = lt_fills - CHANGING - cv_dfx_count = lv_dfx_count ). -* begin of change issue #366 - missing conditional rules: top10, move dfx-styles to own method - - WHEN OTHERS. - CONTINUE. - ENDCASE. - ENDWHILE. - ENDWHILE. - - lv_value = lv_dfx_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " tableStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaulttablestyle - value = zcl_excel_table=>builtinstyle_medium9 ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle - value = zcl_excel_table=>builtinstyle_pivot_light16 ). - lo_element_root->append_child( new_child = lo_element ). - - "write legacy color palette in case any indexed color was changed - IF excel->legacy_palette->is_modified( ) = abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_colors - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_indexedcolors - parent = lo_document ). - lo_element->append_child( new_child = lo_sub_element ). - - lt_colors = excel->legacy_palette->get_colors( ). - LOOP AT lt_colors INTO ls_color. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_rgbcolor - parent = lo_document ). - lv_value = ls_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_styles_color_node. - DATA: lo_sub_element TYPE REF TO if_ixml_element, - lv_value TYPE string. - - CONSTANTS: lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint'. - - "add node only if at least one attribute is set - CHECK is_color-rgb IS NOT INITIAL OR - is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set OR - is_color-theme <> zcl_excel_style_color=>c_theme_not_set OR - is_color-tint IS NOT INITIAL. - - lo_sub_element = io_document->create_simple_element( - name = iv_color_elem_name - parent = io_parent ). - - IF is_color-rgb IS NOT INITIAL. - lv_value = is_color-rgb. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - ENDIF. - - IF is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-indexed ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_indexed - value = lv_value ). - ENDIF. - - IF is_color-theme <> zcl_excel_style_color=>c_theme_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-theme ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_theme - value = lv_value ). - ENDIF. - - IF is_color-tint IS NOT INITIAL. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-tint ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_tint - value = lv_value ). - ENDIF. - - io_parent->append_child( new_child = lo_sub_element ). -ENDMETHOD. - - - - - METHOD create_xl_table. - - DATA: lc_xml_node_table TYPE string VALUE 'table', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_display_name TYPE string VALUE 'displayName', - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_totals TYPE string VALUE 'totalsRowShown', - " Node namespace - lc_xml_node_table_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - - lv_table_name TYPE string, - lv_id TYPE i, - lv_match TYPE i, - lv_syindex TYPE char3, - lv_ref TYPE string, - lv_value TYPE string, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_num_columns TYPE i, - ls_fieldcat TYPE zexcel_s_fieldcatalog. - - -********************************************************************** -* STEP 1: Create xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node table - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_table - parent = lo_document ). - - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_table_ns ). - - lv_id = io_table->get_id( ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_id ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - FIND ALL OCCURRENCES OF REGEX '[^_a-zA-Z0-9]' IN io_table->settings-table_name IGNORING CASE MATCH COUNT lv_match. - IF io_table->settings-table_name IS NOT INITIAL AND lv_match EQ 0. - lv_table_name = io_table->settings-table_name. - ELSE. - lv_table_name = io_table->get_name( ). - ENDIF. - lo_element_root->set_attribute_ns( name = lc_xml_attr_name - value = lv_table_name ). - - lo_element_root->set_attribute_ns( name = lc_xml_attr_display_name - value = lv_table_name ). - - lv_ref = io_table->get_reference( ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - IF io_table->has_totals( ) = abap_true. - lo_element_root->set_attribute_ns( name = 'totalsRowCount' - value = '1' ). - ELSE. - lo_element_root->set_attribute_ns( name = lc_xml_attr_totals - value = '0' ). - ENDIF. - -********************************************************************** -* STEP 4: Create subnodes - - " autoFilter - IF io_table->settings-nofilters EQ abap_false. - lo_element = lo_document->create_simple_element( name = 'autoFilter' - parent = lo_document ). - - lv_ref = io_table->get_reference( ip_include_totals_row = abap_false ). - lo_element->set_attribute_ns( name = 'ref' - value = lv_ref ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - "columns - lo_element = lo_document->create_simple_element( name = 'tableColumns' - parent = lo_document ). - -* lo_columns = io_table->get_columns( ). - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - ADD 1 TO lv_num_columns. - ENDLOOP. - - lv_value = lv_num_columns. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - lo_element2 = lo_document->create_simple_element_ns( name = 'tableColumn' - parent = lo_element ). - - lv_value = ls_fieldcat-position. - SHIFT lv_value LEFT DELETING LEADING '0'. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lv_value = ls_fieldcat-scrtext_l. - lo_element2->set_attribute_ns( name = 'name' - value = lv_value ). - - IF ls_fieldcat-totals_function IS NOT INITIAL. - lo_element2->set_attribute_ns( name = 'totalsRowFunction' - value = ls_fieldcat-totals_function ). - ENDIF. - - lo_element->append_child( new_child = lo_element2 ). - ENDLOOP. - - - lo_element = lo_document->create_simple_element( name = 'tableStyleInfo' - parent = lo_element_root ). - - lo_element->set_attribute_ns( name = 'name' - value = io_table->settings-table_style ). - - lo_element->set_attribute_ns( name = 'showFirstColumn' - value = '0' ). - - lo_element->set_attribute_ns( name = 'showLastColumn' - value = '0' ). - - IF io_table->settings-show_row_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showRowStripes' - value = lv_value ). - - IF io_table->settings-show_column_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showColumnStripes' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - method create_xl_theme. - data: lo_theme type ref to zcl_excel_theme. - - excel->get_theme( - importing - eo_theme = lo_theme - ). - if lo_theme is initial. - create object lo_theme. - endif. - ep_content = lo_theme->write_theme( ). - -endmethod. - - - - METHOD create_xl_workbook. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (done) 2012-11-07 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmoecker, 2012-12-01 -* changes: correction of pointer to localSheetId -*--------------------------------------------------------------------* - -** Constant node name - DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', - lc_xml_node_fileversion TYPE string VALUE 'fileVersion', - lc_xml_node_workbookpr TYPE string VALUE 'workbookPr', - lc_xml_node_bookviews TYPE string VALUE 'bookViews', - lc_xml_node_workbookview TYPE string VALUE 'workbookView', - lc_xml_node_sheets TYPE string VALUE 'sheets', - lc_xml_node_sheet TYPE string VALUE 'sheet', - lc_xml_node_calcpr TYPE string VALUE 'calcPr', - lc_xml_node_workbookprotection TYPE string VALUE 'workbookProtection', - lc_xml_node_definednames TYPE string VALUE 'definedNames', - lc_xml_node_definedname TYPE string VALUE 'definedName', - " Node attributes - lc_xml_attr_appname TYPE string VALUE 'appName', - lc_xml_attr_lastedited TYPE string VALUE 'lastEdited', - lc_xml_attr_lowestedited TYPE string VALUE 'lowestEdited', - lc_xml_attr_rupbuild TYPE string VALUE 'rupBuild', - lc_xml_attr_themeversion TYPE string VALUE 'defaultThemeVersion', - lc_xml_attr_xwindow TYPE string VALUE 'xWindow', - lc_xml_attr_ywindow TYPE string VALUE 'yWindow', - lc_xml_attr_windowwidth TYPE string VALUE 'windowWidth', - lc_xml_attr_windowheight TYPE string VALUE 'windowHeight', - lc_xml_attr_activetab TYPE string VALUE 'activeTab', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_sheetid TYPE string VALUE 'sheetId', - lc_xml_attr_state TYPE string VALUE 'state', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_calcid TYPE string VALUE 'calcId', - lc_xml_attr_lockrevision TYPE string VALUE 'lockRevision', - lc_xml_attr_lockstructure TYPE string VALUE 'lockStructure', - lc_xml_attr_lockwindows TYPE string VALUE 'lockWindows', - lc_xml_attr_revisionspassword TYPE string VALUE 'revisionsPassword', - lc_xml_attr_workbookpassword TYPE string VALUE 'workbookPassword', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_localsheetid TYPE string VALUE 'localSheetId', - " Node namespace - lc_r_ns TYPE string VALUE 'r', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_range TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator_range TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - - DATA: lv_xml_node_ridx_id TYPE string, - lv_value TYPE string, - lv_syindex TYPE string, - l_guid TYPE uuid, - lv_active_sheet TYPE zexcel_active_worksheet. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_workbook - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnode - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_fileversion - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_appname - value = 'xl' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lastedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lowestedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild - value = '4506' ). - lo_element_root->append_child( new_child = lo_element ). - - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr - parent = lo_document ). -* lo_element->set_attribute_ns( name = lc_xml_attr_themeversion -* value = '124226' ). - lo_element_root->append_child( new_child = lo_element ). - - " workbookProtection node - IF me->excel->zif_excel_book_protection~protected EQ abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookprotection - parent = lo_document ). - MOVE me->excel->zif_excel_book_protection~workbookpassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_workbookpassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~revisionspassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_revisionspassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~lockrevision TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockrevision - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockstructure TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockstructure - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockwindows TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockwindows - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " bookviews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews - parent = lo_document ). - " bookview node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_workbookview - parent = lo_document ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xwindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_ywindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowwidth - value = '19035' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight - value = '8445' ). - " Set Active Sheet - lv_active_sheet = excel->get_active_sheet_index( ). -* issue #365 - test if sheet exists - otherwise set active worksheet to 1 - lo_worksheet = excel->get_worksheet_by_index( lv_active_sheet ). - IF lo_worksheet IS NOT BOUND. - lv_active_sheet = 1. - excel->SET_ACTIVE_SHEET_INDEX( lv_active_sheet ). - ENDIF. - IF lv_active_sheet > 1. - lv_active_sheet = lv_active_sheet - 1. - lv_value = lv_active_sheet. - CONDENSE lv_value. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_activetab - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element )." bookview node - lo_element_root->append_child( new_child = lo_element )." bookviews node - - " sheets node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets - parent = lo_document ). - lo_iterator = excel->get_worksheets_iterator( ). - - " ranges node - lo_element_range = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 + - parent = lo_document ). " issue 163 + - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " sheet node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index. " question by Stefan Schmöcker 2012-12-02: sy-index seems to do the job - but is it proven to work or purely coincedence - lv_value = lo_worksheet->get_title( ). - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_sheetid - value = lv_syindex ). - IF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_hidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'hidden' ). - ELSEIF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_veryhidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'veryHidden' ). - ENDIF. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_id - prefix = lc_r_ns - value = lv_xml_node_ridx_id ). - lo_element->append_child( new_child = lo_sub_element ). " sheet node - - " issue 163 >>> - lo_iterator_range = lo_worksheet->get_ranges_iterator( ). - -*--------------------------------------------------------------------* -* Defined names sheetlocal: Ranges, Repeat rows and columns -*--------------------------------------------------------------------* - WHILE lo_iterator_range->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator_range->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - -* lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid "del #235 Repeat rows/cols - EXCEL starts couting from zero -* value = lv_xml_node_ridx_id ). "del #235 Repeat rows/cols - and needs absolute referencing to localSheetId - lv_value = lv_syindex - 1. "ins #235 Repeat rows/cols - CONDENSE lv_value NO-GAPS. "ins #235 Repeat rows/cols - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - " issue 163 <<< - - ENDWHILE. - lo_element_root->append_child( new_child = lo_element )." sheets node - - -*--------------------------------------------------------------------* -* Defined names workbookgolbal: Ranges -*--------------------------------------------------------------------* -* " ranges node -* lo_element = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 - -* parent = lo_document ). " issue 163 - - lo_iterator = excel->get_ranges_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - -*--------------------------------------------------------------------* -* Defined names - Autofilters ( also sheetlocal ) -*--------------------------------------------------------------------* - lo_autofilters = excel->get_autofilters_reference( ). - IF lo_autofilters->is_empty( ) = abap_false. - lo_iterator = excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index - 1 . - l_guid = lo_worksheet->get_guid( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = l_guid ) . - IF lo_autofilter IS BOUND. - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lv_value = lo_autofilters->c_autofilter. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lv_syindex. - CONDENSE lv_value NO-GAPS. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - lv_value = '1'. " Always hidden - lo_sub_element->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - lv_value = lo_autofilter->get_filter_reference( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - ENDIF. - - ENDWHILE. - ENDIF. - lo_element_root->append_child( new_child = lo_element_range ). " ranges node - - - " calcPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_calcid - value = '125725' ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - method FLAG2BOOL. - - - IF ip_flag EQ abap_true. - ep_boolean = 'true'. - ELSE. - ep_boolean = 'false'. - ENDIF. - endmethod. - - - - - METHOD get_shared_string_index. - - - DATA ls_shared_string TYPE zexcel_s_shared_string. - -* READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH. - READ TABLE shared_strings INTO ls_shared_string WITH TABLE KEY string_value = ip_cell_value. - ep_index = ls_shared_string-string_no. - -ENDMETHOD. - - - - - METHOD render_ixml_element_no_header. - -* - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, -* lo_element_root type ref to if_ixml_element, -* lo_element type ref to if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - - DATA: lv_content TYPE string. - DATA: lv_contentx TYPE xstring. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - lo_document->set_declaration( abap_false ). " NO header!! - - lo_document->append_child( new_child = iv_ixml_element ). - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). -* lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_ostream = lo_streamfactory->create_ostream_cstring( string = lv_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -* write:/ lv_content. - - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = rv_xstring ). -* lo_ostream = lo_streamfactory->create_ostream_cstring( string = lv_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - -* rv_xstring = lv_contentx. - -ENDMETHOD. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - ep_file = me->create( ). - endmethod. - - - - method CREATE. - -* .csv format with ; delimiter - - ep_excel = me->CREATE_CSV( ). - - endmethod. - - - - method CREATE_CSV. - - TYPES: BEGIN OF lty_format, - cmpname TYPE SEOCMPNAME, - attvalue TYPE SEOVALUE, - END OF lty_format. - DATA: lt_format TYPE STANDARD TABLE OF lty_format, - ls_format LIKE LINE OF lt_format, - lv_date TYPE DATS, - lv_tmp TYPE string, - lv_time TYPE CHAR08. - - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - lv_row TYPE sytabix, - lv_col TYPE sytabix, - lv_string TYPE string, - lc_value TYPE string, - lv_attrname TYPE SEOCMPNAME. - - DATA: ls_numfmt TYPE zexcel_s_style_numfmt, - lo_style TYPE REF TO zcl_excel_style. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - -* --- Retrieve supported cell format - REFRESH lt_format. - SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_format - FROM seocompodf - WHERE clsname = 'ZCL_EXCEL_STYLE_NUMBER_FORMAT' - AND typtype = 1 - AND type = 'ZEXCEL_NUMBER_FORMAT'. - -* --- Retrieve SAP date format - CLEAR ls_format. - SELECT ddtext INTO ls_format-attvalue FROM dd07t WHERE domname = 'XUDATFM' - AND ddlanguage = sy-langu. - ls_format-cmpname = 'DATE'. - CONDENSE ls_format-attvalue. - CONCATENATE '''' ls_format-attvalue '''' INTO ls_format-attvalue. - APPEND ls_format TO lt_format. - ENDSELECT. - - - LOOP AT lt_format INTO ls_format. - TRANSLATE ls_format-attvalue TO UPPER CASE. - MODIFY lt_format FROM ls_format. - ENDLOOP. - - -* STEP 1: Collect strings from the first worksheet - lo_iterator = excel->get_worksheets_iterator( ). - data: current_worksheet_title type ZEXCEL_SHEET_TITLE. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - IF worksheet_name IS NOT INITIAL. - current_worksheet_title = lo_worksheet->get_title( ). - CHECK current_worksheet_title = worksheet_name. - ELSE. - IF worksheet_index IS INITIAL. - worksheet_index = 1. - ENDIF. - CHECK worksheet_index = sy-index. - ENDIF. - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - EXIT. " Take first worksheet only - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - SORT lt_cell_data BY cell_row - cell_column. - lv_row = 1. - lv_col = 1. - CLEAR lv_string. - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - -* --- Retrieve Cell Style format and data type - CLEAR ls_numfmt. - IF <fs_sheet_content>-data_type IS INITIAL AND <fs_sheet_content>-cell_style IS NOT INITIAL. - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_style->get_guid( ) = <fs_sheet_content>-cell_style. - ls_numfmt = lo_style->number_format->get_structure( ). - EXIT. - ENDWHILE. - ENDIF. - IF <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - " determine data-type - CLEAR lv_attrname. - CONCATENATE '''' ls_numfmt-NUMFMT '''' INTO ls_numfmt-NUMFMT. - TRANSLATE ls_numfmt-numfmt TO UPPER CASE. - READ TABLE lt_format INTO ls_format WITH KEY attvalue = ls_numfmt-NUMFMT. - IF sy-subrc = 0. - lv_attrname = ls_format-cmpname. - ENDIF. - - IF lv_attrname IS NOT INITIAL. - FIND FIRST OCCURRENCE OF 'DATETIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'TIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 't'. - ELSE. - FIND FIRST OCCURRENCE OF 'DATE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'CURRENCY' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'NUMBER' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'PERCENTAGE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ENDIF. " Purcentage - ENDIF. " Number - ENDIF. " Currency - ENDIF. " Date - ENDIF. " TIME - ENDIF. " DATETIME - ENDIF. " lv_attrname IS NOT INITIAL. - ENDIF. " <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - -* --- Add empty rows - WHILE lv_row < <fs_sheet_content>-cell_row. -* CONCATENATE lv_string cl_abap_char_utilities=>newline INTO lv_string. -* CONCATENATE lv_string cl_abap_char_utilities=>cr_lf INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>eol INTO lv_string. - lv_row = lv_row + 1. - lv_col = 1. - ENDWHILE. - -* --- Add empty columns - WHILE lv_col < <fs_sheet_content>-cell_column. -* CONCATENATE lv_string ';' INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>delimiter INTO lv_string. - lv_col = lv_col + 1. - ENDWHILE. - -* ----- Use format to determine the data type and display format. - CASE <fs_sheet_content>-data_type. -* WHEN 'n' OR 'N'. -* lc_value = zcl_excel_common=>excel_number_to_string( ip_value = <fs_sheet_content>-cell_value ). - - WHEN 'd' OR 'D'. - lc_value = zcl_excel_common=>excel_string_to_date( ip_value = <fs_sheet_content>-cell_value ). - TRY. - lv_date = lc_value. - CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' - EXPORTING - DATE_INTERNAL = lv_date - IMPORTING - DATE_EXTERNAL = lv_tmp - EXCEPTIONS - DATE_INTERNAL_IS_INVALID = 1 - OTHERS = 2 - . - IF SY-SUBRC = 0. - lc_value = lv_tmp. - ENDIF. - - CATCH CX_SY_CONVERSION_NO_NUMBER. - - ENDTRY. - - WHEN 't' OR 'T'. - lc_value = zcl_excel_common=>excel_string_to_time( ip_value = <fs_sheet_content>-cell_value ). - write lc_value to lv_time USING EDIT MASK '__:__:__'. - lc_value = lv_time. - WHEN OTHERS. - lc_value = <fs_sheet_content>-cell_value. - - ENDCASE. - -* REPLACE ALL OCCURRENCES OF '"' in lc_value with '""'. - CONCATENATE zcl_excel_writer_csv=>enclosure zcl_excel_writer_csv=>enclosure INTO lv_tmp. - CONDENSE lv_tmp. - REPLACE ALL OCCURRENCES OF zcl_excel_writer_csv=>enclosure in lc_value with lv_tmp. - -* FIND FIRST OCCURRENCE OF ';' IN lc_value. - FIND FIRST OCCURRENCE OF zcl_excel_writer_csv=>delimiter IN lc_value. - IF sy-subrc = 0. - CONCATENATE lv_string zcl_excel_writer_csv=>enclosure lc_value zcl_excel_writer_csv=>enclosure INTO lv_string. - ELSE. - CONCATENATE lv_string lc_value INTO lv_string. - ENDIF. - - ENDLOOP. " AT lt_cell_data - - CLEAR ep_content. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - TEXT = lv_string -* MIMETYPE = ' ' -* ENCODING = - IMPORTING - BUFFER = ep_content - EXCEPTIONS - FAILED = 1 - OTHERS = 2 - . - - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX. - CLEAR WORKSHEET_NAME. - WORKSHEET_INDEX = i_active_worksheet. - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX_BY_NAME. - CLEAR WORKSHEET_INDEX. - WORKSHEET_NAME = i_worksheet_name. - endmethod. - - - - method SET_DELIMITER. - delimiter = ip_value. - endmethod. - - - - method SET_ENCLOSURE. - zcl_excel_writer_csv=>enclosure = ip_value. - endmethod. - - - - method SET_ENDOFLINE. - zcl_excel_writer_csv=>eol = ip_value. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - METHOD add_further_data_to_zip. - - super->add_further_data_to_zip( io_zip = io_zip ). - -* Add vbaProject.bin to zip - io_zip->add( name = me->c_xl_vbaproject - content = me->excel->zif_excel_book_vba_project~vbaproject ). - -ENDMETHOD. - - - method CREATE. - - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 9: Add vbaProject.bin to zip - lo_zip->add( name = me->c_xl_vbaproject - content = me->excel->zif_excel_book_vba_project~vbaproject ). - -********************************************************************** -* STEP 12: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - METHOD create_content_types. -** Constant node name - DATA: lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.ms-excel.sheet.macroEnabled.main+xml', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - lc_xml_attr_codename TYPE string VALUE 'codeName', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_bin_ext TYPE string VALUE 'bin', - lc_xml_node_bin_ct TYPE string VALUE 'application/vnd.ms-office.vbaProject'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_contenttype TYPE string, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard contentType - ep_content = super->create_content_types( ). - -********************************************************************** -* STEP 2: modify XML adding the extension bin definition - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_bin_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_bin_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: modify XML changing the contentType of node Override /xl/workbook.xml - - lo_collection = lo_document->get_elements_by_tag_name( 'Override' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lv_contenttype = lo_element->get_attribute_ns( lc_xml_attr_partname ). - IF lv_contenttype EQ lc_xml_node_workb_pn. - lo_element->remove_attribute_ns( lc_xml_attr_contenttype ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - EXIT. - ENDIF. - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - METHOD create_xl_relationships. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_vba_tp TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', - " Node target - lc_xml_node_rid_vba_tg TYPE string VALUE 'vbaProject.bin'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_relationships( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 4 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_vba_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_vba_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - METHOD create_xl_sheet. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_sheet( io_worksheet = io_worksheet - iv_active = iv_active ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - lo_collection = lo_document->get_elements_by_tag_name( 'sheetPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = io_worksheet->zif_excel_sheet_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). -ENDMETHOD. - - - METHOD create_xl_workbook. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_workbook( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'workbookPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - method IF_MESSAGE~GET_LONGTEXT. - - IF me->error IS NOT INITIAL - OR me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this as longtext as well -*--------------------------------------------------------------------* - result = me->get_text( ). - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - super->if_message~get_longtext( EXPORTING - preserve_newlines = preserve_newlines - RECEIVING - result = result ). - ENDIF. - endmethod. - - - method IF_MESSAGE~GET_TEXT. - - IF me->error IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this -*--------------------------------------------------------------------* - result = me->error . - ELSEIF me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied by syst create messagetext now -*--------------------------------------------------------------------* - MESSAGE ID syst_at_raise-msgid TYPE syst_at_raise-msgty NUMBER syst_at_raise-msgno - WITH syst_at_raise-msgv1 syst_at_raise-msgv2 syst_at_raise-msgv3 syst_at_raise-msgv4 - INTO result. - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - CALL METHOD super->if_message~get_text - RECEIVING - result = result. - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_VALUE. - - ep_value = me->value. - - endmethod. - - - - method SET_RANGE_VALUE. - me->value = ip_value. - endmethod. - - - - - - - - method SET_VALUE. - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7, - lv_value TYPE string. - lv_stop_row_c = ip_stop_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_start_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - lv_value = ip_sheet_name. - me->value = zcl_excel_common=>escape_string( ip_value = lv_value ). - - CONCATENATE me->value '!$' ip_start_column '$' lv_start_row_c ':$' ip_stop_column '$' lv_stop_row_c INTO me->value. - endmethod. - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - -* Signal "not found" -class lcx_not_found implementation. - method constructor. - super->constructor( textid = textid previous = previous ). - me->error = error. - endmethod. "constructor - method if_message~get_text. - result = error. - endmethod. "if_message~get_text -endclass. "lcx_not_found IMPLEMENTATION - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - -* Signal for "Not found" -class lcx_not_found definition inheriting from cx_static_check. - public section. - data error type string. - methods constructor - importing error type string - textid type sotr_conc optional - previous type ref to cx_root optional. - methods if_message~get_text redefinition. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes -class lcl_test definition deferred. -class zcl_excel_reader_huge_file definition local friends lcl_test. - -* -class lcl_test definition for testing " #AU Risk_Level Harmless - inheriting from cl_aunit_assert. " #AU Duration Short - - private section. - data: - out type ref to zcl_excel_reader_huge_file, " object under test - excel type ref to zcl_excel, - worksheet type ref to zcl_excel_worksheet. - methods: - setup, - test_number for testing, - test_shared_string for testing, - test_shared_string_missing for testing, - test_inline_string for testing, - test_empty_cells for testing, - test_boolean for testing, - test_style for testing, - test_style_missing for testing, - test_formula for testing, - test_read_shared_strings for testing, - test_shared_string_some_empty for testing, - test_skip_to_inexistent for testing, - get_reader importing iv_xml type string returning value(eo_reader) type ref to if_sxml_reader, - assert_value_equals importing iv_row type i default 1 iv_col type i default 1 iv_value type string, - assert_formula_equals importing iv_row type i default 1 iv_col type i default 1 iv_formula type string, - assert_style_equals importing iv_row type i default 1 iv_col type i default 1 iv_style type ZEXCEL_CELL_STYLE, - assert_datatype_equals importing iv_row type i default 1 iv_col type i default 1 iv_datatype type string. - -endclass. "lcl_test DEFINITION - -* -class lcl_test implementation. - -* - method test_number. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><v>17</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `17` ). - assert_datatype_equals( `n` ). - endmethod. "test_shared_string - -* - method test_shared_string. - data lo_reader type ref to if_sxml_reader. - append `Test1` to out->shared_strings. - append `Test2` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Test2` ). - assert_datatype_equals( `s` ). - endmethod. "test_shared_string -* - method test_shared_string_missing. - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `Test` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Index to non-existent shared string should give an error`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. -* - method test_inline_string. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Alpha` ). - assert_datatype_equals( `inlineStr` ). - endmethod. "test_inline_string - -* - method test_boolean. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="b"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `1` ). - assert_datatype_equals( `b` ). - endmethod. "test_boolean - -* - method test_formula. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><f>A2*A2</f></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_formula_equals( `A2*A2` ). - assert_datatype_equals( `n` ). - endmethod. "test_formula - -* - method test_empty_cells. - -* There is no need to store an empty cell in the ABAP worksheet structure - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `` to out->shared_strings. - append `t` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>0</v></c>` & - `<c r="A2" t="inlineStr"><is><t></t></is></c>` & - `<c r="A3" t="s"><v>1</v></c>` - ). - - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). - - endmethod. - -* - method test_style. - data: - lo_reader type ref to if_sxml_reader, - lo_style type ref to zcl_excel_style, - lv_guid type ZEXCEL_CELL_STYLE. - create object lo_style. - append lo_style to out->styles. - lv_guid = lo_style->get_guid( ). - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_style_equals( lv_guid ). - - endmethod. "test_style - -* - method test_style_missing. - - data: - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Reference to non-existent style should throw an lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. "test_style - -* - method test_read_shared_strings. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. - - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - importing buffer = lv_xstring ). - lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `Bravo` to lt_exp. - - lt_act = out->read_shared_strings( lo_reader ). - - assert_equals( act = lt_act - exp = lt_exp ). - - endmethod. - -* - method test_shared_string_some_empty. - data: lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. - lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( - `<sst><si><t/></si>` & - `<si><t>Alpha</t></si>` & - `<si><t/></si>` & - `<si><t>Bravo</t></si></sst>` - ) ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `` to lt_exp, - `Bravo` to lt_exp. - - lt_act = out->read_shared_strings( lo_reader ). - - assert_equals( act = lt_act - exp = lt_exp ). - - endmethod. - - -* - method test_skip_to_inexistent. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - importing buffer = lv_xstring ). - lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - try. - out->skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ). - fail(`Skipping to non-existing element must raise lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " May inspect exception text in debugger - endtry. - endmethod. - -* - method get_reader. - data: lv_full type string, - lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring. - concatenate `<root><sheetData><row>` iv_xml `</row></sheetData></root>` into lv_full. - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = lv_full - importing buffer = lv_xstring ). - eo_reader = cl_sxml_string_reader=>create( lv_xstring ). - endmethod. "get_reader -* - method assert_value_equals. - - constants: lc_empty_string type string value is initial. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data, - <lv_value> type string. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - if sy-subrc eq 0. - assign <ls_cell_data>-cell_value to <lv_value>. - else. - assign lc_empty_string to <lv_value>. - endif. - - assert_equals( act = <lv_value> - exp = iv_value ). - - endmethod. "assert_value_equals -** - method assert_formula_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_formula - exp = iv_formula ). - - endmethod. "assert_formula_equals -* - method assert_style_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_style - exp = iv_style ). - - endmethod. -* - method assert_datatype_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-data_type - exp = iv_datatype ). - - endmethod. "assert_datatype_equals - method setup. - create object out. - create object excel. - create object worksheet - exporting - ip_excel = excel. - endmethod. "setup -endclass. "lcl_test IMPLEMENTATION - - - - - - - - - - - - - - - - method FILL_CELL_FROM_ATTRIBUTES. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_attribute( ). - if io_reader->node_type ne c_attribute. - exit. - endif. - case io_reader->name. - when `t`. - es_cell-datatype = io_reader->value. - when `s`. - if io_reader->value is not initial. - es_cell-style = get_style( io_reader->value ). - endif. - when `r`. - es_cell-coord = get_cell_coord( io_reader->value ). - endcase. - endwhile. - -endmethod. - - - - - method GET_CELL_COORD. - - zcl_excel_common=>convert_columnrow2column_a_row( - exporting - i_columnrow = iv_coord - importing - e_column = es_coord-column - e_row = es_coord-row - ). - -endmethod. - - - - - - method GET_SHARED_STRING. - data: lv_tabix type i, - lv_error type string. - lv_tabix = iv_index + 1. - read table shared_strings into ev_value index lv_tabix. - if sy-subrc ne 0. - concatenate 'Entry ' iv_index ' not found in Shared String Table' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - endif. -endmethod. - - - - - - method GET_STYLE. - - data: lv_tabix type i, - lo_style type ref to zcl_excel_style, - lv_error type string. - - if gs_buffer_style-index ne iv_index. - lv_tabix = iv_index + 1. - read table styles into lo_style index lv_tabix. - if sy-subrc ne 0. - concatenate 'Entry ' iv_index ' not found in Style Table' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - else. - gs_buffer_style-index = iv_index. - gs_buffer_style-guid = lo_style->get_guid( ). - endif. - endif. - - ev_style_guid = gs_buffer_style-guid. - -endmethod. - - - - - - method GET_SXML_READER. - - data: lv_xml type xstring. - - lv_xml = get_from_zip_archive( iv_path ). - eo_reader = cl_sxml_string_reader=>create( lv_xml ). - -endmethod. - - - method LOAD_SHARED_STRINGS. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - shared_strings = read_shared_strings( lo_reader ). - -endmethod. - - - method LOAD_WORKSHEET. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - read_worksheet_data( io_reader = lo_reader - io_worksheet = io_worksheet ). - -endmethod. - - - - - method PUT_CELL_TO_WORKSHEET. - check is_cell-value is not initial - or is_cell-formula is not initial - or is_cell-style is not initial. - call method io_worksheet->set_cell - exporting - ip_column = is_cell-column - ip_row = is_cell-row - ip_value = is_cell-value - ip_formula = is_cell-formula - ip_data_type = is_cell-datatype - ip_style = is_cell-style. -endmethod. - - - - - method read_shared_strings. - - data lv_value type string. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - if io_reader->name eq `t`. - case io_reader->node_type . - when c_element_open . - clear lv_value . - when c_node_value . - lv_value = lv_value && io_reader->value . - when c_element_close . - append lv_value to et_shared_strings. - endcase . - endif. - endwhile. - -endmethod. - - - - - - method READ_WORKSHEET_DATA. - - data: ls_cell type t_cell. - -* Skip to <sheetData> element - skip_to( iv_element_name = `sheetData` io_reader = io_reader ). - -* Main loop: Evaluate the <c> elements and its children - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - case io_reader->node_type. - when c_element_open. - if io_reader->name eq `c`. - ls_cell = fill_cell_from_attributes( io_reader ). - endif. - when c_node_value. - case io_reader->name. - when `f`. - ls_cell-formula = io_reader->value. - when `v`. - if ls_cell-datatype eq `s`. - ls_cell-value = get_shared_string( io_reader->value ). - else. - ls_cell-value = io_reader->value. - endif. - when `t` or `is`. - ls_cell-value = io_reader->value. - endcase. - when c_element_close. - case io_reader->name. - when `c`. - put_cell_to_worksheet( is_cell = ls_cell io_worksheet = io_worksheet ). - when `sheetData`. - exit. - endcase. - endcase. - endwhile. - -endmethod. - - - - - - method SKIP_TO. - - data: lv_error type string. - -* Skip forward to given element - while io_reader->name ne iv_element_name or - io_reader->node_type ne c_element_open. - io_reader->next_node( ). - if io_reader->node_type = c_end_of_stream. - concatenate 'XML error: Didn''t find element <' iv_element_name '>' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - endif. - endwhile. - - -endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD add_pagebreak. - DATA: ls_pagebreak LIKE LINE OF me->mt_pagebreaks. - - ls_pagebreak-cell_row = ip_row. - ls_pagebreak-cell_column = zcl_excel_common=>convert_column2int( ip_column ). - - INSERT ls_pagebreak INTO TABLE me->mt_pagebreaks. - - -ENDMETHOD. - - - - METHOD get_all_pagebreaks. - rt_pagebreaks = me->mt_pagebreaks. -ENDMETHOD. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - METHOD guid_create. - - TRY. - rv_guid_16 = cl_system_uuid=>if_system_uuid_static~create_uuid_x16( ). - CATCH cx_uuid_error. - ENDTRY. - -*--------------------------------------------------------------------* -* If you are on a release that does not yet have the class cl_system_uuid -* please use the following coding instead which is using the function -* call that was used before but which has been flagged as obsolete -* in newer SAP releases -*--------------------------------------------------------------------* -* -* CALL FUNCTION 'GUID_CREATE' -* IMPORTING -* ev_guid_16 = rv_guid_16. - -ENDMETHOD. - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS zcl_tc_excel DEFINITION DEFERRED. -CLASS zcl_excel DEFINITION LOCAL FRIENDS zcl_tc_excel. - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel DEFINITION FOR TESTING - DURATION SHORT - RISK LEVEL HARMLESS -. -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>zcl_Tc_Excel -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - f_cut TYPE REF TO zcl_excel. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. - METHODS: create_empty_excel FOR TESTING. - -ENDCLASS. "zcl_Tc_Excel - - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel IMPLEMENTATION. -* ================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - -*// START TEST METHODS - - METHOD create_empty_excel. -* ================================== - - DATA: lv_count TYPE i. - lv_count = f_cut->get_worksheets_size( ). - - cl_abap_unit_assert=>assert_equals( act = lv_count - exp = 1 - msg = 'Testing number of sheet' - level = if_aunit_constants=>tolerable ). - ENDMETHOD. "create_empty_excel - -*// END TEST METHODS - - -ENDCLASS. "zcl_Tc_Excel - - - - - - - - - - - - - - - - - - - - - - METHOD zif_excel_book_properties~initialize. - DATA: lv_timestamp TYPE timestampl. - - me->zif_excel_book_properties~application = 'Microsoft Excel'. - me->zif_excel_book_properties~appversion = '12.0000'. - - GET TIME STAMP FIELD lv_timestamp. - me->zif_excel_book_properties~created = lv_timestamp. - me->zif_excel_book_properties~creator = sy-uname. - me->zif_excel_book_properties~description = zcl_excel=>version. - me->zif_excel_book_properties~modified = lv_timestamp. - me->zif_excel_book_properties~lastmodifiedby = sy-uname. -ENDMETHOD. - - - method ZIF_EXCEL_BOOK_PROTECTION~INITIALIZE. - me->zif_excel_book_protection~protected = zif_excel_book_protection=>c_unprotected. - me->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_unlocked. - CLEAR me->zif_excel_book_protection~workbookpassword. - CLEAR me->zif_excel_book_protection~revisionspassword. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME. - me->zif_excel_book_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_book_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_VBAPROJECT. - me->zif_excel_book_vba_project~vbaproject = ip_vbaproject. - endmethod. - - - - - - METHOD add_new_autofilter. -* Check for autofilter reference: new or overwrite; only one per sheet - ro_autofilter = autofilters->add( io_sheet ) . -ENDMETHOD. - - - - - - method ADD_NEW_DRAWING. - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_drawing - EXPORTING - ip_type = ip_type - ip_title = ip_title. - - CASE ip_type. - WHEN 'image'. - drawings->add( eo_drawing ). - WHEN 'chart'. - charts->add( eo_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - method ADD_NEW_STYLE. -* Start of deletion # issue 139 - Dateretention of cellstyles -* CREATE OBJECT eo_style. -* styles->add( eo_style ). -* End of deletion # issue 139 - Dateretention of cellstyles -* Start of insertion # issue 139 - Dateretention of cellstyles -* Create default style - CREATE OBJECT eo_style - EXPORTING - ip_guid = ip_guid. - styles->add( eo_style ). - - DATA: style2 TYPE zexcel_s_stylemapping. -* Copy to new representations - style2 = stylemapping_dynamic_style( eo_style ). - INSERT style2 INTO TABLE t_stylemapping1. - INSERT style2 INTO TABLE t_stylemapping2. -* End of insertion # issue 139 - Dateretention of cellstyles - - endmethod. - - - - - - method ADD_NEW_WORKSHEET. - DATA: lv_guid TYPE guid_16. - -* Create default blank worksheet - CREATE OBJECT eo_worksheet - EXPORTING - ip_excel = me - ip_title = ip_title. - - worksheets->add( eo_worksheet ). - worksheets->active_worksheet = worksheets->size( ). - endmethod. - - - METHOD add_static_styles. - " # issue 139 - FIELD-SYMBOLS: <style1> LIKE LINE OF t_stylemapping1, - <style2> LIKE LINE OF t_stylemapping2. - DATA: style TYPE REF TO zcl_excel_style. - - LOOP AT me->t_stylemapping1 ASSIGNING <style1> WHERE added_to_iterator IS INITIAL. - READ TABLE me->t_stylemapping2 ASSIGNING <style2> WITH TABLE KEY guid = <style1>-guid. - CHECK sy-subrc = 0. " Should always be true since these tables are being filled parallel - - style = me->add_new_style( <style1>-guid ). - - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <style1>-complete_style - i_sourcex = <style1>-complete_stylex - CHANGING e_target = style ). - - ENDLOOP. -ENDMETHOD. - - - method CONSTRUCTOR. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style. - -* Inizialize instance objects - CREATE OBJECT security. - CREATE OBJECT worksheets. - CREATE OBJECT ranges. - CREATE OBJECT styles. - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - CREATE OBJECT legacy_palette. - CREATE OBJECT autofilters. - - me->zif_excel_book_protection~initialize( ). - me->zif_excel_book_properties~initialize( ). - - me->add_new_worksheet( ). - me->add_new_style( ). " Standard style - lo_style = me->add_new_style( ). " Standard style with fill gray125 - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_pattern_gray125. - - endmethod. - - - - - METHOD delete_worksheet. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - l_size TYPE i, - lv_errormessage TYPE string. - - l_size = get_worksheets_size( ). - IF l_size = 1. " Only 1 worksheet left --> check whether this is the worksheet to be deleted - lo_worksheet = me->get_worksheet_by_index( 1 ). - IF lo_worksheet = io_worksheet. - lv_errormessage = 'Deleting last remaining worksheet is not allowed'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - ENDIF. - - me->worksheets->remove( io_worksheet ). - -ENDMETHOD. - - - - METHOD delete_worksheet_by_index. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_errormessage TYPE string. - - lo_worksheet = me->get_worksheet_by_index( iv_index ). - IF lo_worksheet IS NOT BOUND. - lv_errormessage = 'Worksheet not existing'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - me->delete_worksheet( lo_worksheet ). - -ENDMETHOD. - - - - METHOD delete_worksheet_by_name. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_errormessage TYPE string. - - lo_worksheet = me->get_worksheet_by_name( iv_title ). - IF lo_worksheet IS NOT BOUND. - lv_errormessage = 'Worksheet not existing'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - me->delete_worksheet( lo_worksheet ). - -ENDMETHOD. - - - - method GET_ACTIVE_SHEET_INDEX. - r_active_worksheet = me->worksheets->active_worksheet. - endmethod. - - - - method GET_ACTIVE_WORKSHEET. - - eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). - - endmethod. - - - - method GET_AUTOFILTERS_REFERENCE. - - ro_autofilters = autofilters. - - endmethod. - - - - method GET_DEFAULT_STYLE. - ep_style = me->default_style. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = me->drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = me->charts->get_iterator( ). - WHEN OTHERS. - ENDCASE. - - endmethod. - - - - method GET_NEXT_TABLE_ID. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_tables_count TYPE i. - - lo_iterator = me->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_tables_count = lo_worksheet->get_tables_size( ). - ADD lv_tables_count TO ep_id. - - ENDWHILE. - - ADD 1 TO ep_id. - - endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - - METHOD get_static_cellstyle_guid. - " # issue 139 - DATA: style LIKE LINE OF me->t_stylemapping1. - - READ TABLE me->t_stylemapping1 INTO style - WITH TABLE KEY dynamic_style_guid = style-guid " no dynamic style --> look for initial guid here - complete_style = ip_cstyle_complete - complete_stylex = ip_cstylex_complete. - IF sy-subrc <> 0. - style-complete_style = ip_cstyle_complete. - style-complete_stylex = ip_cstylex_complete. -* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases -* IMPORTING -* ev_guid_16 = style-guid. - style-guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call - INSERT style INTO TABLE me->t_stylemapping1. - INSERT style INTO TABLE me->t_stylemapping2. - - ENDIF. - - ep_guid = style-guid. -ENDMETHOD. - - - - method GET_STYLES_ITERATOR. - - eo_iterator = me->styles->get_iterator( ). - - endmethod. - - - - - - method GET_STYLE_INDEX_IN_STYLES. - DATA: index TYPE syindex. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style TYPE REF TO zcl_excel_style. - - CHECK ip_guid IS NOT INITIAL. - - - lo_iterator = me->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) = 'X'. - ADD 1 TO index. - lo_style ?= lo_iterator->get_next( ). - IF lo_style->get_guid( ) = ip_guid. - ep_index = index. - EXIT. - ENDIF. - ENDWHILE. - - IF ep_index IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index not found'. - else. - SUBTRACT 1 from ep_index. " In excel list starts with "0" - ENDIF. - endmethod. - - - - - - method GET_STYLE_TO_GUID. - " # issue 139 - - READ TABLE me->t_stylemapping2 INTO ep_stylemapping WITH TABLE KEY guid = ip_guid. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'GUID not found'. - ENDIF. - - IF ep_stylemapping-dynamic_style_guid IS NOT INITIAL. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = ep_stylemapping-cl_style - CHANGING e_target = ep_stylemapping-complete_style - e_targetx = ep_stylemapping-complete_stylex ). - ENDIF. - - - endmethod. - - - - method GET_THEME. - eo_theme = theme. -endmethod. - - - - method GET_WORKSHEETS_ITERATOR. - - eo_iterator = me->worksheets->get_iterator( ). - - endmethod. - - - - method GET_WORKSHEETS_NAME. - - ep_name = me->worksheets->name. - - endmethod. - - - - METHOD get_worksheets_size. - - ep_size = me->worksheets->size( ). - -ENDMETHOD. - - - - - METHOD get_worksheet_by_index. - - - DATA: lv_index TYPE zexcel_active_worksheet. - - lv_index = iv_index. - eo_worksheet = me->worksheets->get( lv_index ). - -ENDMETHOD. - - - - - METHOD get_worksheet_by_name. - - DATA: lv_index TYPE zexcel_active_worksheet, - l_size TYPE i. - - l_size = get_worksheets_size( ). - - DO l_size TIMES. - lv_index = sy-index. - eo_worksheet = me->worksheets->get( lv_index ). - IF eo_worksheet->get_title( ) = ip_sheet_name. - RETURN. - ENDIF. - ENDDO. - - CLEAR eo_worksheet. - -ENDMETHOD. - - - - - METHOD set_active_sheet_index. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_errormessage TYPE string. - -*--------------------------------------------------------------------* -* Check whether worksheet exists -*--------------------------------------------------------------------* - lo_worksheet = me->get_worksheet_by_index( i_active_worksheet ). - IF lo_worksheet IS NOT BOUND. - lv_errormessage = 'Worksheet not existing'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - me->worksheets->active_worksheet = i_active_worksheet. - -ENDMETHOD. - - - - METHOD set_active_sheet_index_by_name. - - DATA: ws_it TYPE REF TO cl_object_collection_iterator, - ws TYPE REF TO zcl_excel_worksheet, - lv_title TYPE zexcel_sheet_title, - count TYPE i VALUE 1. - - ws_it = me->worksheets->get_iterator( ). - - WHILE ws_it->if_object_collection_iterator~has_next( ) = abap_true. - ws ?= ws_it->if_object_collection_iterator~get_next( ). - lv_title = ws->get_title( ). - IF lv_title = i_worksheet_name. - me->worksheets->active_worksheet = count. - EXIT. - ENDIF. - count = count + 1. - ENDWHILE. - -ENDMETHOD. - - - - - method SET_DEFAULT_STYLE. - me->default_style = ip_style. - endmethod. - - - - method SET_THEME. - theme = io_theme. -endmethod. - - - - - method STYLEMAPPING_DYNAMIC_STYLE. -" # issue 139 - eo_style2-dynamic_style_guid = ip_style->get_guid( ). - eo_style2-guid = eo_style2-dynamic_style_guid. - eo_style2-added_to_iterator = abap_true. - eo_style2-cl_style = ip_style. - -* don't care about attributes here, since this data may change -* dynamically - - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PROCESS BEFORE OUTPUT. - MODULE STATUS_9000. - -PROCESS AFTER INPUT. - MODULE USER_COMMAND_9000 AT EXIT-COMMAND. - MODULE USER_COMMAND_9000. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REPORT. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'ABAP2XLSX Inheritance.xlsx'. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL1 -* Variation of ZCL_EXCEL that creates numerous sheets -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel1 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor IMPORTING iv_sheetcount TYPE i DEFAULT 5. -ENDCLASS. - -CLASS lcl_my_zcl_excel1 IMPLEMENTATION. - METHOD constructor. - DATA: lv_sheets_to_create TYPE i. - super->constructor( ). - lv_sheets_to_create = iv_sheetcount - 1. " one gets created by standard class - DO lv_sheets_to_create TIMES. - TRY. - me->add_new_worksheet( ). - CATCH zcx_excel. - ENDTRY. - ENDDO. - me->set_active_sheet_index( 1 ). - - ENDMETHOD. -ENDCLASS. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL_WORKSHEET -* Variation of ZCL_EXCEL_WORKSHEET ( and ZCL_EXCEL that calls the new type of worksheet ) -* that sets a fixed title -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel2 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet DEFINITION INHERITING FROM zcl_excel_worksheet. - PUBLIC SECTION. - METHODS: constructor IMPORTING ip_excel TYPE REF TO zcl_excel - ip_title TYPE zexcel_sheet_title OPTIONAL " Will be ignored - keep parameter for demonstration purpose - RAISING zcx_excel. -ENDCLASS. - -CLASS lcl_my_zcl_excel2 IMPLEMENTATION. - METHOD constructor. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet. - - super->constructor( ). - -* To use own worksheet we have to remove the standard worksheet - lo_worksheet = get_active_worksheet( ). - me->worksheets->remove( lo_worksheet ). -* and replace it with own version - CREATE OBJECT lo_worksheet TYPE lcl_my_zcl_excel_worksheet - EXPORTING - ip_excel = me - ip_title = 'This title will be ignored'. - me->worksheets->add( lo_worksheet ). - - ENDMETHOD. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet IMPLEMENTATION. - METHOD constructor. - super->constructor( ip_excel = ip_excel - ip_title = 'Inherited Worksheet' ). - - ENDMETHOD. -ENDCLASS. - -DATA: go_excel1 TYPE REF TO lcl_my_zcl_excel1. -DATA: go_excel2 TYPE REF TO lcl_my_zcl_excel2. - - -SELECTION-SCREEN BEGIN OF BLOCK bli WITH FRAME TITLE text-bli. -PARAMETERS: rbi_1 RADIOBUTTON GROUP rbi DEFAULT 'X' , " Simple inheritance - rbi_2 RADIOBUTTON GROUP rbi. -SELECTION-SCREEN END OF BLOCK bli. - -INCLUDE zdemo_excel_outputopt_incl. - -END-OF-SELECTION. - - CASE 'X'. - - WHEN rbi_1. " Simple inheritance of zcl_excel, object created directly - CREATE OBJECT go_excel1 - EXPORTING - iv_sheetcount = 5. - lcl_output=>output( go_excel1 ). - - WHEN rbi_2. " Inheritance of zcl_excel_worksheet, inheritance of zcl_excel needed to allow this - CREATE OBJECT go_excel2. - lcl_output=>output( go_excel2 ). - - - ENDCASE. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZABAP2XLSX_DEMO_SHOW -*&---------------------------------------------------------------------* -REPORT zabap2xlsx_demo_like_se83. - - -*----------------------------------------------------------------------* -* CLASS lcl_perform DEFINITION -*----------------------------------------------------------------------* -CLASS lcl_perform DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: setup_objects, - collect_reports, - - handle_nav FOR EVENT double_click OF cl_gui_alv_grid - IMPORTING e_row. - - PRIVATE SECTION. - TYPES: BEGIN OF ty_reports, - progname TYPE reposrc-progname, - sort TYPE reposrc-progname, - filename TYPE string, - END OF ty_reports. - - CLASS-DATA: - lo_grid TYPE REF TO cl_gui_alv_grid, - lo_text TYPE REF TO cl_gui_textedit, - cl_document TYPE REF TO i_oi_document_proxy, - - t_reports TYPE STANDARD TABLE OF ty_reports WITH NON-UNIQUE DEFAULT KEY. - CLASS-DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control. "Office Dokument - -ENDCLASS. "lcl_perform DEFINITION - - -START-OF-SELECTION. - lcl_perform=>collect_reports( ). - lcl_perform=>setup_objects( ). - -END-OF-SELECTION. - - WRITE '.'. " Force output - - -*----------------------------------------------------------------------* -* CLASS lcl_perform IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_perform IMPLEMENTATION. - METHOD setup_objects. - DATA: lo_split TYPE REF TO cl_gui_splitter_container, - lo_container TYPE REF TO cl_gui_container. - - DATA: it_fieldcat TYPE lvc_t_fcat, - is_layout TYPE lvc_s_layo, - is_variant TYPE disvariant. - FIELD-SYMBOLS: <fc> LIKE LINE OF it_fieldcat. - - - CREATE OBJECT lo_split - EXPORTING - parent = cl_gui_container=>screen0 - rows = 1 - columns = 3 - no_autodef_progid_dynnr = 'X'. - lo_split->set_column_width( EXPORTING id = 1 - width = 20 ). - lo_split->set_column_width( EXPORTING id = 2 - width = 40 ). - -* Left: List of reports - lo_container = lo_split->get_container( row = 1 - column = 1 ). - - CREATE OBJECT lo_grid - EXPORTING - i_parent = lo_container. - SET HANDLER lcl_perform=>handle_nav FOR lo_grid. - - is_variant-report = sy-repid. - is_variant-handle = '0001'. - - is_layout-cwidth_opt = 'X'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'PROGNAME'. - <fc>-tabname = 'REPOSRC'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'SORT'. - <fc>-ref_field = 'PROGNAME'. - <fc>-ref_table = 'REPOSRC'. - - - lo_grid->set_table_for_first_display( EXPORTING - is_variant = is_variant - i_save = 'A' - is_layout = is_layout - CHANGING - it_outtab = t_reports - it_fieldcatalog = it_fieldcat - EXCEPTIONS - invalid_parameter_combination = 1 - program_error = 2 - too_many_lines = 3 - OTHERS = 4 ). - -* Middle: Text with coding - lo_container = lo_split->get_container( row = 1 - column = 2 ). - CREATE OBJECT lo_text - EXPORTING - parent = lo_container. - lo_text->set_readonly_mode( cl_gui_textedit=>true ). - lo_text->set_font_fixed( ). - - - -* right: DemoOutput - lo_container = lo_split->get_container( row = 1 - column = 3 ). - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = lo_container - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - - ENDMETHOD. "setup_objects - - "collect_reports - METHOD collect_reports. - FIELD-SYMBOLS:<report> LIKE LINE OF t_reports. - DATA: t_source TYPE STANDARD TABLE OF text255 WITH NON-UNIQUE DEFAULT KEY. - -* Get all demoreports - SELECT progname - INTO CORRESPONDING FIELDS OF TABLE t_reports - FROM reposrc - WHERE progname LIKE 'ZDEMO_EXCEL%' - AND progname <> sy-repid - AND subc = '1'. - - LOOP AT t_reports ASSIGNING <report>. - -* Check if already switched to new outputoptions - READ REPORT <report>-progname INTO t_source. - IF sy-subrc = 0. - FIND 'INCLUDE zdemo_excel_outputopt_incl.' IN TABLE t_source IGNORING CASE. - ENDIF. - IF sy-subrc <> 0. - DELETE t_reports. - CONTINUE. - ENDIF. - - -* Build half-numeric sort - <report>-sort = <report>-progname. - REPLACE REGEX '(ZDEMO_EXCEL)(\d\d)\s*$' IN <report>-sort WITH '$1\0$2'. " REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE - - REPLACE REGEX '(ZDEMO_EXCEL)(\d)\s*$' IN <report>-sort WITH '$1\0\0$2'. - ENDLOOP. - SORT t_reports BY sort progname. - - ENDMETHOD. "collect_reports - - METHOD handle_nav. - CONSTANTS: filename TYPE text80 VALUE 'ZABAP2XLSX_DEMO_SHOW.xlsx'. - DATA: wa_report LIKE LINE OF t_reports, - t_source TYPE STANDARD TABLE OF text255, - t_rawdata TYPE solix_tab, - wa_rawdata LIKE LINE OF t_rawdata, - bytecount TYPE i, - length TYPE i, - add_selopt TYPE flag. - - - READ TABLE t_reports INTO wa_report INDEX e_row-index. - CHECK sy-subrc = 0. - -* Set new text into middle frame - READ REPORT wa_report-progname INTO t_source. - lo_text->set_text_as_r3table( EXPORTING table = t_source ). - - -* Unload old xls-file - cl_document->close_document( ). - -* Get the demo -* If additional parameters found on selection screen, start via selection screen , otherwise start w/o - CLEAR add_selopt. - FIND 'PARAMETERS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ELSE. - FIND 'SELECT-OPTIONS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ENDIF. - ENDIF. - IF add_selopt IS INITIAL. - SUBMIT (wa_report-progname) AND RETURN "#EC CI_SUBMIT - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ELSE. - SUBMIT (wa_report-progname) VIA SELECTION-SCREEN AND RETURN "#EC CI_SUBMIT - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ENDIF. - - OPEN DATASET filename FOR INPUT IN BINARY MODE. - IF sy-subrc = 0. - DO. - CLEAR wa_rawdata. - READ DATASET filename INTO wa_rawdata LENGTH length. - IF sy-subrc <> 0. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - EXIT. - ENDIF. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - ENDDO. - CLOSE DATASET filename. - ENDIF. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - ENDMETHOD. "handle_nav - -ENDCLASS. "lcl_perform IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZANGRY_BIRDS -*& Just for fun -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zangry_birds. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_border_light TYPE REF TO zcl_excel_style_border, - lo_style_color0 TYPE REF TO zcl_excel_style, - lo_style_color1 TYPE REF TO zcl_excel_style, - lo_style_color2 TYPE REF TO zcl_excel_style, - lo_style_color3 TYPE REF TO zcl_excel_style, - lo_style_color4 TYPE REF TO zcl_excel_style, - lo_style_color5 TYPE REF TO zcl_excel_style, - lo_style_color6 TYPE REF TO zcl_excel_style, - lo_style_color7 TYPE REF TO zcl_excel_style, - lo_style_credit TYPE REF TO zcl_excel_style, - lo_style_link TYPE REF TO zcl_excel_style, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_style_color0_guid TYPE zexcel_cell_style, - lv_style_color1_guid TYPE zexcel_cell_style, - lv_style_color2_guid TYPE zexcel_cell_style, - lv_style_color3_guid TYPE zexcel_cell_style, - lv_style_color4_guid TYPE zexcel_cell_style, - lv_style_color5_guid TYPE zexcel_cell_style, - lv_style_color6_guid TYPE zexcel_cell_style, - lv_style_color7_guid TYPE zexcel_cell_style, - lv_style_credit_guid TYPE zexcel_cell_style, - lv_style_link_guid TYPE zexcel_cell_style, - lv_style TYPE zexcel_cell_style. - -DATA: lv_col_str TYPE zexcel_cell_column_alpha, - lv_row TYPE i, - lv_col TYPE i, - lt_mapper TYPE TABLE OF zexcel_cell_style, - ls_mapper TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'angry_birds.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_white. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - - " Create color white - lo_style_color0 = lo_excel->add_new_style( ). - lo_style_color0->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color0->fill->fgcolor-rgb = 'FFFFFFFF'. - lo_style_color0->borders->allborders = lo_border_light. - lv_style_color0_guid = lo_style_color0->get_guid( ). - - " Create color black - lo_style_color1 = lo_excel->add_new_style( ). - lo_style_color1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color1->fill->fgcolor-rgb = 'FF252525'. - lo_style_color1->borders->allborders = lo_border_light. - lv_style_color1_guid = lo_style_color1->get_guid( ). - - " Create color dark green - lo_style_color2 = lo_excel->add_new_style( ). - lo_style_color2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color2->fill->fgcolor-rgb = 'FF75913A'. - lo_style_color2->borders->allborders = lo_border_light. - lv_style_color2_guid = lo_style_color2->get_guid( ). - - " Create color light green - lo_style_color3 = lo_excel->add_new_style( ). - lo_style_color3->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color3->fill->fgcolor-rgb = 'FF9DFB73'. - lo_style_color3->borders->allborders = lo_border_light. - lv_style_color3_guid = lo_style_color3->get_guid( ). - - " Create color green - lo_style_color4 = lo_excel->add_new_style( ). - lo_style_color4->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color4->fill->fgcolor-rgb = 'FF92CF56'. - lo_style_color4->borders->allborders = lo_border_light. - lv_style_color4_guid = lo_style_color4->get_guid( ). - - " Create color 2dark green - lo_style_color5 = lo_excel->add_new_style( ). - lo_style_color5->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color5->fill->fgcolor-rgb = 'FF506228'. - lo_style_color5->borders->allborders = lo_border_light. - lv_style_color5_guid = lo_style_color5->get_guid( ). - - " Create color yellow - lo_style_color6 = lo_excel->add_new_style( ). - lo_style_color6->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color6->fill->fgcolor-rgb = 'FFC3E224'. - lo_style_color6->borders->allborders = lo_border_light. - lv_style_color6_guid = lo_style_color6->get_guid( ). - - " Create color yellow - lo_style_color7 = lo_excel->add_new_style( ). - lo_style_color7->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color7->fill->fgcolor-rgb = 'FFB3C14F'. - lo_style_color7->borders->allborders = lo_border_light. - lv_style_color7_guid = lo_style_color7->get_guid( ). - - " Credits - lo_style_credit = lo_excel->add_new_style( ). - lo_style_credit->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_credit->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_credit->font->size = 20. - lv_style_credit_guid = lo_style_credit->get_guid( ). - - " Link - lo_style_link = lo_excel->add_new_style( ). - lo_style_link->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_link->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. -* lo_style_link->font->size = 20. - lv_style_link_guid = lo_style_link->get_guid( ). - - " Create image map " line 2 - DO 30 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 3 - DO 28 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 4 - DO 27 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 5 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 6 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 7 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 8 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 9 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 10 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 11 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 12 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 13 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 14 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 12 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 15 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 16 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 17 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 18 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 19 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 27 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 20 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 21 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 19 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 22 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 23 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 24 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 25 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 26 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 27 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 28 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 29 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 30 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 31 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 32 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 33 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 34 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 35 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 36 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 37 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 38 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 39 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 22 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 40 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 41 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 42 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 43 - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 44 - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 45 - DO 16 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 46 - DO 18 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Angry Birds' ). - - lv_row = 1. - lv_col = 1. - - LOOP AT lt_mapper INTO ls_mapper. - lv_col_str = zcl_excel_common=>convert_column2alpha( lv_col ). - IF ls_mapper IS INITIAL. - lo_row_dimension = lo_worksheet->get_row_dimension( ip_row = lv_row ). - lo_row_dimension->set_row_height( ip_row_height = 8 ). - lv_col = 1. - lv_row = lv_row + 1. - CONTINUE. - ENDIF. - lo_worksheet->set_cell( ip_column = lv_col_str - ip_row = lv_row - ip_value = space - ip_style = ls_mapper ). - lv_col = lv_col + 1. - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = lv_col_str ). - lo_column_dimension->set_width( ip_width = 2 ). - ENDLOOP. - - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 15 - ip_value = 'Created with abap2xlsx' - ip_style = lv_style_credit_guid ). - - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 24 - ip_value = 'http://www.abap2xlsx.org' - ip_style = lv_style_link_guid - ip_hyperlink = lo_hyperlink ). - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'AP' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->set_merge( ip_row = 15 ip_column_start = 'AP' ip_row_to = 22 ip_column_end = 'AR' ). - lo_worksheet->set_merge( ip_row = 24 ip_column_start = 'AP' ip_row_to = 26 ip_column_end = 'AR' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_CALENDAR -*& abap2xlsx Demo: Create Calendar with Pictures -*&---------------------------------------------------------------------* -*& This report creates a monthly calendar in the specified date range. -*& Each month is put on a seperate worksheet. The pictures for each -*& month can be specified in a tab delimited file called "Calendar.txt" -*& which is saved in the Export Directory. By default this is the SAP -*& Workdir. The file contains 3 fields: -*& -*& Month (with leading 0) -*& Image Filename -*& Image Description -*& URL for the Description -*& -*& The Images should be landscape JPEG's with a 3:2 ratio and min. -*& 450 pixel height. They must also be saved in the Export Directory. -*& In my tests I've discovered a limit of 20 MB in the -*& cl_gui_frontend_services=>gui_download method. So keep your images -*& smaller or change to a server export using OPEN DATASET. -*&---------------------------------------------------------------------* - -REPORT zdemo_calendar. - -TYPE-POOLS: abap. -CONSTANTS: gc_save_file_name TYPE string VALUE 'Calendar.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. -INCLUDE zdemo_calendar_classes. - -DATA: lv_workdir TYPE string. - -PARAMETERS: p_from TYPE dfrom DEFAULT '20130101', - p_to TYPE dto DEFAULT '20131231'. - -SELECTION-SCREEN BEGIN OF BLOCK orientation WITH FRAME TITLE orient. -PARAMETERS: p_portr TYPE flag RADIOBUTTON GROUP orie, - p_lands TYPE flag RADIOBUTTON GROUP orie DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK orientation. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - orient = 'Orientation'(000). - -START-OF-SELECTION. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lo_style_month TYPE REF TO zcl_excel_style, - lv_style_month_guid TYPE zexcel_cell_style. - DATA: lo_style_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lv_style_border_guid TYPE zexcel_cell_style. - DATA: lo_style_center TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lv_full_path TYPE string, - image_descr_path TYPE string, - lv_file_separator TYPE c. - DATA: lv_content TYPE xstring, - width TYPE i, - lv_height TYPE i, - lv_from_row TYPE zexcel_cell_row. - - DATA: month TYPE i, - month_nr TYPE fcmnr, - count TYPE i VALUE 1, - title TYPE zexcel_sheet_title, - value TYPE string, - image_path TYPE string, - date_from TYPE datum, - date_to TYPE datum, - row TYPE zexcel_cell_row, - to_row TYPE zexcel_cell_row, - to_col TYPE zexcel_cell_column_alpha, - to_col_end TYPE zexcel_cell_column_alpha, - to_col_int TYPE i. - - DATA: month_names TYPE TABLE OF t247. - FIELD-SYMBOLS: <month_name> LIKE LINE OF month_names. - - TYPES: BEGIN OF tt_datatab, - month_nr TYPE fcmnr, - filename TYPE string, - descr TYPE string, - url TYPE string, - END OF tt_datatab. - - DATA: image_descriptions TYPE TABLE OF tt_datatab. - FIELD-SYMBOLS: <img_descr> LIKE LINE OF image_descriptions. - - CONSTANTS: lv_default_file_name TYPE string VALUE 'Calendar', "#EC NOTEXT - c_from_row_portrait TYPE zexcel_cell_row VALUE 28, - c_from_row_landscape TYPE zexcel_cell_row VALUE 38, - from_col TYPE zexcel_cell_column_alpha VALUE 'C', - c_height_portrait TYPE i VALUE 450, " Image Height in Portrait Mode - c_height_landscape TYPE i VALUE 670, " Image Height in Landscape Mode - c_factor TYPE f VALUE '1.5'. " Image Ratio, default 3:2 - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name '.xlsx' INTO lv_full_path. "#EC NOTEXT - - " Read Image Names for Month and Description - CONCATENATE p_path lv_file_separator lv_default_file_name '.txt' INTO image_descr_path. "#EC NOTEXT - cl_gui_frontend_services=>gui_upload( - EXPORTING - filename = image_descr_path " Name of file - filetype = 'ASC' " File Type (ASCII, Binary) - has_field_separator = 'X' - read_by_line = 'X' " File Written Line-By-Line to the Internal Table - CHANGING - data_tab = image_descriptions " Transfer table for file contents - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create Styles - " Create an underline double style - lo_style_month = lo_excel->add_new_style( ). - " lo_style_month->font->underline = abap_true. - " lo_style_month->font->underline_mode = zcl_excel_style_font=>c_underline_single. - lo_style_month->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_month->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_month->font->family = zcl_excel_style_font=>c_family_roman. - lo_style_month->font->bold = abap_true. - lo_style_month->font->size = 36. - lv_style_month_guid = lo_style_month->get_guid( ). - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lo_style_border->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_border_guid = lo_style_border->get_guid( ). - "Create style alignment center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_center->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_center_guid = lo_style_center->get_guid( ). - - " Get Month Names - CALL FUNCTION 'MONTH_NAMES_GET' - TABLES - month_names = month_names. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = p_from - i_date_to = p_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - date_from = p_from. - - WHILE count <= month. - IF count = 1. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - ELSE. - lo_worksheet = lo_excel->add_new_worksheet( ). - ENDIF. - - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - - title = count. - value = count. - CONDENSE title. - CONDENSE value. - lo_worksheet->set_title( title ). - lo_worksheet->set_print_gridlines( abap_false ). - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_col_dim = lo_worksheet->get_column_dimension( 'A' ). - lo_col_dim->set_width( '1.0' ). - lo_col_dim = lo_worksheet->get_column_dimension( 'B' ). - lo_col_dim->set_width( '2.0' ). - IF p_lands = abap_true. - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lv_height = c_height_landscape. - lv_from_row = c_from_row_landscape. - lo_worksheet->sheet_setup->margin_top = '0.10'. - lo_worksheet->sheet_setup->margin_left = '0.10'. - lo_worksheet->sheet_setup->margin_right = '0.10'. - lo_worksheet->sheet_setup->margin_bottom = '0.10'. - ELSE. - lo_col_dim = lo_worksheet->get_column_dimension( 'K' ). - lo_col_dim->set_width( '3.0' ). - lo_worksheet->sheet_setup->margin_top = '0.80'. - lo_worksheet->sheet_setup->margin_left = '0.55'. - lo_worksheet->sheet_setup->margin_right = '0.05'. - lo_worksheet->sheet_setup->margin_bottom = '0.30'. - lv_height = c_height_portrait. - lv_from_row = c_from_row_portrait. - ENDIF. - - " Add Month Name - month_nr = date_from+4(2). - IF p_portr = abap_true. - READ TABLE month_names WITH KEY mnr = month_nr ASSIGNING <month_name>. - CONCATENATE <month_name>-ltx ` ` date_from(4) INTO value. - row = lv_from_row - 2. - to_col = from_col. - ELSE. - row = lv_from_row - 1. - to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 32. - to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). - to_col_int = to_col_int + 1. - to_col_end = zcl_excel_common=>convert_column2alpha( to_col_int ). - CONCATENATE month_nr '/' date_from+2(2) INTO value. - to_row = row + 2. - lo_worksheet->set_merge( - EXPORTING - ip_column_start = to_col " Cell Column Start - ip_column_end = to_col_end " Cell Column End - ip_row = row " Cell Row - ip_row_to = to_row " Cell Row - ). - ENDIF. - lo_worksheet->set_cell( - EXPORTING - ip_column = to_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = lv_style_month_guid - ). - -* to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 7. -* to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). -* -* lo_worksheet->set_merge( -* EXPORTING -* ip_column_start = from_col " Cell Column Start -* ip_column_end = to_col " Cell Column End -* ip_row = row " Cell Row -* ip_row_to = row " Cell Row -* ). - - " Add drawing from a XSTRING read from a file - UNASSIGN <img_descr>. - READ TABLE image_descriptions WITH KEY month_nr = month_nr ASSIGNING <img_descr>. - IF <img_descr> IS ASSIGNED. - value = <img_descr>-descr. - IF p_portr = abap_true. - row = lv_from_row - 3. - ELSE. - row = lv_from_row - 2. - ENDIF. - IF NOT <img_descr>-url IS INITIAL. - hyperlink = zcl_excel_hyperlink=>create_external_link( <img_descr>-url ). - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - ELSE. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ). - ENDIF. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '22.0' ). - - " In Landscape mode the row between the description and the - " dates should be not so high - IF p_lands = abap_true. - row = lv_from_row - 3. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '7.0' ). - row = lv_from_row - 1. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - ENDIF. - - CONCATENATE p_path lv_file_separator <img_descr>-filename INTO image_path. - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 1 - ip_from_col = 'B' ). - - lv_content = zcl_helper=>load_image( image_path ). - width = lv_height * c_factor. - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = width - ip_height = lv_height ). - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - " Add Calendar -* CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH' -* EXPORTING -* day_in = date_from -* IMPORTING -* last_day_of_month = date_to. - date_to = date_from. - date_to+6(2) = '01'. " First of month - add 31 to date_to. " Somewhere in following month - date_to = date_to - date_to+6(2). " Last of month - IF p_portr = abap_true. - zcl_helper=>add_calendar( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ELSE. - zcl_helper=>add_calendar_landscape( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ENDIF. - count = count + 1. - date_from = date_to + 1. - ENDWHILE. - - lo_excel->set_active_sheet_index_by_name( '1' ). -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_CALENDAR_CLASSES -*&---------------------------------------------------------------------* - -*&---------------------------------------------------------------------* -*& Class ZCL_DATE_CALCULATION -*&---------------------------------------------------------------------* -* Text -*----------------------------------------------------------------------* -CLASS zcl_date_calculation DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: months_between_two_dates - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_incl_to TYPE flag - EXPORTING - e_month TYPE i. -ENDCLASS. "ZCL_DATE_CALCULATION - - -*----------------------------------------------------------------------* -* CLASS ZCL_DATE_CALCULATION IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation IMPLEMENTATION. - METHOD months_between_two_dates. - DATA: date_to TYPE datum. - DATA: BEGIN OF datum_von, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_von. - - DATA: BEGIN OF datum_bis, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_bis. - - e_month = 0. - - CHECK NOT ( i_date_from IS INITIAL ) - AND NOT ( i_date_to IS INITIAL ). - - date_to = i_date_to. - IF i_incl_to = abap_true. - date_to = date_to + 1. - ENDIF. - - datum_von = i_date_from. - datum_bis = date_to. - - e_month = ( datum_bis-jjjj - datum_von-jjjj ) * 12 - + ( datum_bis-mm - datum_von-mm ). - ENDMETHOD. "MONTHS_BETWEEN_TWO_DATES -ENDCLASS. "ZCL_DATE_CALCULATION IMPLEMENTATION - -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test DEFINITION FOR TESTING - " DURATION SHORT - " RISK LEVEL HARMLESS - "#AU Duration Medium - "#AU Risk_Level Harmless - . - PUBLIC SECTION. - METHODS: - months_between_two_dates FOR TESTING. -ENDCLASS. "zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test IMPLEMENTATION. - METHOD months_between_two_dates. - - DATA: date_from TYPE datum VALUE '20120101', - date_to TYPE datum VALUE '20121231'. - DATA: month TYPE i. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - cl_aunit_assert=>assert_equals( - exp = 12 " Data Object with Expected Type - act = month " Data Object with Current Value - msg = 'Calculated date is wrong' " Message in Case of Error - ). - - ENDMETHOD. "months_between_two_dates -ENDCLASS. "zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* CLASS zcl_helper DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: - load_image - IMPORTING - filename TYPE string - RETURNING value(r_image) TYPE xstring, - add_calendar - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calendar_landscape - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_a2x_footer - IMPORTING - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calender_week - IMPORTING - i_date TYPE datum - i_row TYPE zexcel_cell_row - i_col TYPE zexcel_cell_column_alpha - i_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet. -ENDCLASS. "zcl_helper DEFINITION - -*----------------------------------------------------------------------* -* CLASS zcl_helper IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper IMPLEMENTATION. - METHOD load_image. - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = filename - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = r_image - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - ENDMETHOD. "load_image - METHOD add_calendar. - DATA: day_names TYPE TABLE OF t246. - DATA: row TYPE zexcel_cell_row, - row_max TYPE i, - col_int TYPE zexcel_cell_column, - col_max TYPE i, - from_col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha, - lr_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lr_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: lv_date TYPE datum, - value TYPE string, - weekday TYPE wotnr, - weekrow TYPE wotnr VALUE 1, - day TYPE i, - width TYPE f, - height TYPE f. - DATA: hyperlink TYPE REF TO zcl_excel_hyperlink. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - from_col_int = zcl_excel_common=>convert_column2int( i_from_col ). - " Add description for Calendar Week - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = 'CW'(001) " Cell Value - ip_style = i_cw_style - ). - - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - LOOP AT day_names ASSIGNING <day_name>. - row = i_from_row. - col_int = from_col_int + <day_name>-wotnr. - col = zcl_excel_common=>convert_column2alpha( col_int ). - value = <day_name>-langt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - ENDLOOP. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - - row = i_from_row + weekrow. - col_int = from_col_int + weekday. - col = zcl_excel_common=>convert_column2alpha( col_int ). - - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - - IF weekday = 7. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - weekrow = weekrow + 1. - ENDIF. - lv_date = lv_date + 1. - ENDWHILE. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - " Add Created with abap2xlsx - row = row + 2. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - col_int = from_col_int. - col_max = from_col_int + 7. - WHILE col_int <= col_max. - col = zcl_excel_common=>convert_column2alpha( col_int ). - IF sy-index = 1. - width = '5.0'. - ELSE. - width = '11.4'. - ENDIF. - lr_col_dim = c_worksheet->get_column_dimension( col ). - lr_col_dim->set_width( width ). - col_int = col_int + 1. - ENDWHILE. - row = i_from_row + 1. - row_max = i_from_row + 6. - WHILE row <= row_max. - height = 50. - lr_row_dim = c_worksheet->get_row_dimension( row ). - lr_row_dim->set_row_height( height ). - row = row + 1. - ENDWHILE. - ENDMETHOD. "add_calendar - METHOD add_a2x_footer. - DATA: value TYPE string, - hyperlink TYPE REF TO zcl_excel_hyperlink. - - value = 'Created with abap2xlsx. Find more information at http://abap2xlsx.org.'(002). - hyperlink = zcl_excel_hyperlink=>create_external_link( 'http://abap2xlsx.org' ). "#EC NOTEXT - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - - ENDMETHOD. "add_a2x_footer - METHOD add_calendar_landscape. - DATA: day_names TYPE TABLE OF t246. - - DATA: lv_date TYPE datum, - day TYPE i, - value TYPE string, - weekday TYPE wotnr. - DATA: row TYPE zexcel_cell_row, - from_col_int TYPE zexcel_cell_column, - col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha. - DATA: lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - " Day name row - row = i_from_row. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - READ TABLE day_names ASSIGNING <day_name> - WITH KEY wotnr = weekday. - value = <day_name>-kurzt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - - " Day row - row = i_from_row + 1. - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - - - lv_date = lv_date + 1. - ENDWHILE. - " Add ABAP2XLSX Footer - row = i_from_row + 2. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = c_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - row = i_from_row + 3. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - - " Set with for all 31 coulumns - WHILE day < 32. - day = day + 1. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - ENDWHILE. - ENDMETHOD. "ADD_CALENDAR_LANDSCAPE - - METHOD add_calender_week. - DATA: week TYPE kweek, - week_int TYPE i, - value TYPE string. - " Add Calender Week - CALL FUNCTION 'DATE_GET_WEEK' - EXPORTING - date = i_date " Date for which the week should be calculated - IMPORTING - week = week. " Week for date (format:YYYYWW) - value = week+4(2). - week_int = value. - value = week_int. - CONDENSE value. - c_worksheet->set_cell( - EXPORTING - ip_column = i_col " Cell Column - ip_row = i_row " Cell Row - ip_value = value " Cell Value - ip_style = i_style - ). - ENDMETHOD. "add_calender_week -ENDCLASS. "zcl_helper IMPLEMENTATION - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel. - -DATA: lv_workdir TYPE string, - lv_upfile TYPE string. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = sy-lisel ). - CONCATENATE p_path sy-lisel '01_HelloWorld.xlsx' INTO lv_upfile. - - SUBMIT zdemo_excel1 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Hello world - SUBMIT zdemo_excel2 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Styles - SUBMIT zdemo_excel3 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: iTab binding - SUBMIT zdemo_excel4 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multi sheets, page setup and sheet properties - SUBMIT zdemo_excel5 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel6 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Formulas - SUBMIT zdemo_excel7 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel8 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Ranges - SUBMIT zdemo_excel9 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Data validation - SUBMIT zdemo_excel10 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind table with field catalog - " zdemo_excel11 is not added because it has a selection screen and - " you also need to have business partners maintained in transaction BP - SUBMIT zdemo_excel12 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Column size - SUBMIT zdemo_excel13 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Merge cell - SUBMIT zdemo_excel14 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Alignment - " zdemo_excel15 added at the end - SUBMIT zdemo_excel16 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Drawing - SUBMIT zdemo_excel17 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Lock sheet - SUBMIT zdemo_excel18 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Lock workbook - SUBMIT zdemo_excel19 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Set active sheet - " zdemo_excel20 is not added because it uses ALV and cannot be processed (OLE2) - SUBMIT zdemo_excel21 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Color Picker - SUBMIT zdemo_excel22 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind table with field catalog & sheet style - SUBMIT zdemo_excel23 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multiple sheets with and w/o grid lines, print options - SUBMIT zdemo_excel24 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multiple sheets with different default date formats - SUBMIT zdemo_excel25 AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Create and xlsx on Application Server (could be executed in batch mode) - " zdemo_excel26 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel27 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional Formatting - SUBMIT zdemo_excel28 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: CSV writer - " SUBMIT zdemo_excel29 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Macro enabled workbook - SUBMIT zdemo_excel30 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: ABAP Cell data types + leading blanks string - SUBMIT zdemo_excel31 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Autosize Column with different Font sizes - " zdemo_excel32 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel33 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Table autofilter - SUBMIT zdemo_excel34 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Static Styles Chess - SUBMIT zdemo_excel35 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Static Styles - SUBMIT zdemo_excel36 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Style applied to sheet, column and single cell - SUBMIT zdemo_excel37 WITH p_upfile = lv_upfile - WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Simplest call of the reader and writer - passthrough data - SUBMIT zdemo_excel38 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Show off integration of drawings ( here using the SAP-Icons ) - SUBMIT zdemo_excel39 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Charts - SUBMIT zdemo_excel40 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Demo Printsettings - SUBMIT zdemo_excel41 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Inheritance - " - " Reader/Writer Demo must always run at the end - " to make sure all documents where created - " - SUBMIT zdemo_excel15 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT Read Excel and write it back - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel1. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -CONSTANTS: gc_save_file_name TYPE string VALUE '01_HelloWorld.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). -* lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_width( ip_width = 11 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL10 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel10. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_iconset TYPE zexcel_conditional_iconset. - -CONSTANTS: gc_save_file_name TYPE string VALUE '10_iTabFieldCatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - "Conditional style - lo_style_conditional2 = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional2->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional2->mode_iconset = ls_iconset. - lo_style_conditional2->priority = 1. - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_count. - WHEN 'CONNID'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-abap_type = cl_abap_typedescr=>typekind_int. - "This avoid the excel warning that the number is formatted as a text: abap2xlsx is not able to recognize numc as a number so it formats the number as a text with - "the related warning. You can force the type and the framework will correctly format the number as a number - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'PRICE'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - <fs_field_catalog>-cond_style = lo_style_conditional2. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). "make date field a bit wider - column_dimension->set_width( ip_width = 13 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL11 -*& Export Organisation and Contact Persons using ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel11. - -TYPE-POOLS: abap. - -DATA: central_search TYPE bapibus1006_central_search, - addressdata_search TYPE bapibus1006_addr_search, - others_search TYPE bapibus1006_other_data. -DATA: searchresult TYPE TABLE OF bapibus1006_bp_addr, - return TYPE TABLE OF bapiret2. -DATA: lines TYPE i. -FIELD-SYMBOLS: <searchresult_line> LIKE LINE OF searchresult. -DATA: centraldata TYPE bapibus1006_central, - centraldataperson TYPE bapibus1006_central_person, - centraldataorganization TYPE bapibus1006_central_organ. -DATA: addressdata TYPE bapibus1006_address. -DATA: relationships TYPE TABLE OF bapibus1006_relations. -FIELD-SYMBOLS: <relationship> LIKE LINE OF relationships. -DATA: relationship_centraldata TYPE bapibus1006002_central. -DATA: relationship_addresses TYPE TABLE OF bapibus1006002_addresses. -FIELD-SYMBOLS: <relationship_address> LIKE LINE OF relationship_addresses. - -DATA: lt_download TYPE TABLE OF zexcel_s_org_rel. -FIELD-SYMBOLS: <download> LIKE LINE OF lt_download. - -CONSTANTS: gc_save_file_name TYPE string VALUE '11_Export_Org_and_Contact.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -PARAMETERS: md TYPE flag RADIOBUTTON GROUP act. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-00a. -PARAMETERS: partnerc TYPE bu_type DEFAULT 2, " Organizations - postlcod TYPE ad_pstcd1 DEFAULT '8334*', - country TYPE land1 DEFAULT 'DE', - maxsel TYPE bu_maxsel DEFAULT 100. -SELECTION-SCREEN END OF BLOCK a. - -PARAMETERS: rel TYPE flag RADIOBUTTON GROUP act DEFAULT 'X'. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-00b. -PARAMETERS: reltyp TYPE bu_reltyp DEFAULT 'BUR011', - partner TYPE bu_partner DEFAULT '191'. -SELECTION-SCREEN END OF BLOCK b. - -START-OF-SELECTION. - IF md = abap_true. - " Read all Companies by Master Data - central_search-partnercategory = partnerc. - addressdata_search-postl_cod1 = postlcod. - addressdata_search-country = country. - others_search-maxsel = maxsel. - others_search-no_search_for_contactperson = 'X'. - - CALL FUNCTION 'BAPI_BUPA_SEARCH_2' - EXPORTING - centraldata = central_search - addressdata = addressdata_search - OTHERS = others_search - TABLES - searchresult = searchresult - return = return. - - SORT searchresult BY partner. - DELETE ADJACENT DUPLICATES FROM searchresult COMPARING partner. - ELSEIF rel = abap_true. - " Read by Relationship - SELECT but050~partner1 AS partner FROM but050 - INNER JOIN but000 ON but000~partner = but050~partner1 AND but000~type = '2' - INTO CORRESPONDING FIELDS OF TABLE searchresult - WHERE but050~partner2 = partner - AND but050~reltyp = reltyp. - ENDIF. - - DESCRIBE TABLE searchresult LINES lines. - WRITE: / 'Number of search results: ', lines. - - LOOP AT searchresult ASSIGNING <searchresult_line>. - " Read Details of Organization - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - centraldataorganization = centraldataorganization. - " Read Standard Address of Organization - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - addressdata = addressdata. - - " Add Organization to Download - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - " Fill Organization Partner Numbers - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - CLEAR: addressdata. - - " Read all Relationships - CLEAR: relationships. - CALL FUNCTION 'BAPI_BUPA_RELATIONSHIPS_GET' - EXPORTING - businesspartner = <searchresult_line>-partner - TABLES - relationships = relationships. - DELETE relationships WHERE relationshipcategory <> 'BUR001'. - LOOP AT relationships ASSIGNING <relationship>. - " Read details of Contact person - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - centraldata = centraldata - centraldataperson = centraldataperson. - " Read details of the Relationship - CALL FUNCTION 'BAPI_BUPR_CONTP_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - IMPORTING - centraldata = relationship_centraldata. - " Read relationship address - CLEAR: relationship_addresses. - - CALL FUNCTION 'BAPI_BUPR_CONTP_ADDRESSES_GET' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - TABLES - addresses = relationship_addresses. - - READ TABLE relationship_addresses - ASSIGNING <relationship_address> - WITH KEY standardaddress = 'X'. - - IF <relationship_address> IS ASSIGNED. - " Read Relationship Address - CLEAR addressdata. - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - addressguid = <relationship_address>-addressguid - IMPORTING - addressdata = addressdata. - - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner1 - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - businesspartnerout = <download>-contpers_number - businesspartnerguidout = <download>-contpers_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - MOVE-CORRESPONDING centraldataperson TO <download>. - MOVE-CORRESPONDING relationship_centraldata TO <download>. - - WRITE: / <relationship>-partner1, <relationship>-partner2. - WRITE: centraldataorganization-name1(20), centraldataorganization-name2(10). - WRITE: centraldataperson-firstname(15), centraldataperson-lastname(15). - WRITE: addressdata-street(25), addressdata-house_no, - addressdata-postl_cod1, addressdata-city(25). - ENDIF. - ENDLOOP. - - ENDLOOP. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_body TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_style_body_even_guid TYPE zexcel_cell_style, - lv_style_body_green TYPE zexcel_cell_style. - - DATA: row TYPE zexcel_cell_row. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings. - - DATA: column TYPE zexcel_cell_column, - column_alpha TYPE zexcel_cell_column_alpha, - value TYPE zexcel_cell_value. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border even - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_yellow. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_even_guid = lo_style_body->get_guid( ). - "Create style with border and green fill - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_green = lo_style_body->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_download ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'ORG_NUMBER'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CONTPERS_NUMBER'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME1'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME2'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'STREET'. - <fs_field_catalog>-position = 5. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'HOUSE_NO'. - <fs_field_catalog>-position = 6. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'POSTL_COD1'. - <fs_field_catalog>-position = 7. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CITY'. - <fs_field_catalog>-position = 8. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'COUNTRYISO'. - <fs_field_catalog>-position = 9. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FIRSTNAME'. - <fs_field_catalog>-position = 10. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'LASTNAME'. - <fs_field_catalog>-position = 11. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FUNCTIONNAME'. - <fs_field_catalog>-position = 12. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'DEPARTMENTNAME'. - <fs_field_catalog>-position = 13. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_NUMBR'. - <fs_field_catalog>-position = 14. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_EXT'. - <fs_field_catalog>-position = 15. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_NUMBER'. - <fs_field_catalog>-position = 16. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_EXTENS'. - <fs_field_catalog>-position = 17. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'E_MAIL'. - <fs_field_catalog>-position = 18. - <fs_field_catalog>-dynpfld = abap_true. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = '2'. - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_download - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - LOOP AT lt_download ASSIGNING <download>. - row = sy-tabix + 2. - IF NOT <download>-org_number IS INITIAL - AND <download>-contpers_number IS INITIAL. - " Mark fields of Organization which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'C' - ip_row = row - ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'D' - ip_row = row - ip_style = lv_style_body_green - ). -* CATCH zcx_excel. " Exceptions for ABAP2XLSX - ELSEIF NOT <download>-org_number IS INITIAL - AND NOT <download>-contpers_number IS INITIAL. - " Mark fields of Relationship which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'L' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'M' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'N' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'O' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'P' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'Q' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'R' ip_row = row ip_style = lv_style_body_green - ). - ENDIF. - ENDLOOP. - " Add Fieldnames in first row and hide the row - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog> - WHERE position <> '' AND dynpfld = abap_true. - column = <fs_field_catalog>-position. - column_alpha = zcl_excel_common=>convert_column2alpha( column ). - value = <fs_field_catalog>-fieldname. - lo_worksheet->set_cell( ip_column = column_alpha - ip_row = 1 - ip_value = value - ip_style = lv_style_body_even_guid ). - ENDLOOP. - " Hide first row - row_dimension = lo_worksheet->get_row_dimension( 1 ). - row_dimension->set_visible( abap_false ). - - DATA: highest_column TYPE zexcel_cell_column, - count TYPE int4, - col_alpha TYPE zexcel_cell_column_alpha. - - highest_column = lo_worksheet->get_highest_column( ). - count = 1. - WHILE count <= highest_column. - col_alpha = zcl_excel_common=>convert_column2alpha( ip_column = count ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = col_alpha ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - count = count + 1. - ENDWHILE. -* " Set Column width manuall -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). -* column_dimension->set_width( ip_width = 35 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). -* column_dimension->set_width( ip_width = 18 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). -* column_dimension->set_width( ip_width = 5 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). -* column_dimension->set_width( ip_width = 6 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). -* column_dimension->set_width( ip_width = 3 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'J' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'K' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'L' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'M' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'N' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'O' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'P' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'Q' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'R' ). -* column_dimension->set_width( ip_width = 40 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL12 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel12. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: gc_save_file_name TYPE string VALUE '12_HideSizeOutlineRowsAndColumns.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world in AutoSize column' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Hello world in a column width size 50' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Hello world (hidden column)' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'Outline column level 0' ). - lo_worksheet->set_cell( ip_column = 'G' ip_row = 2 ip_value = 'Outline column level 1' ). - lo_worksheet->set_cell( ip_column = 'H' ip_row = 2 ip_value = 'Outline column level 2' ). - lo_worksheet->set_cell( ip_column = 'I' ip_row = 2 ip_value = 'Small' ). - - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Hello world (hidden row)' ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 5 ip_value = 'Hello world in a row height size 20' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Simple outline rows 10-16 ( collapsed )' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 19 ip_value = '3 Outlines - Outlinelevel 1 is collapsed' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_value = 'One of the two inner outlines is expanded, one collapsed' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_value = 'Inner outline level - expanded' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 24 ip_value = 'Inner outline level - lines 25-28 are collapsed' ). - - lo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. " By default is on - lo_worksheet->zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>c_right_off. " By default is on - - " Column Settings - " Auto size - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - " Manual Width - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_width( ip_width = 50 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_visible( ip_visible = abap_false ). - " Implementation in the Writer is not working yet ===== TODO ===== - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). - column_dimension->set_outline_level( ip_outline_level = 0 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). - column_dimension->set_outline_level( ip_outline_level = 1 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). - column_dimension->set_outline_level( ip_outline_level = 2 ). - - row_dimension = lo_worksheet->get_row_dimension( ip_row = 1 ). - row_dimension->set_visible( ip_visible = abap_false ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 5 ). - row_dimension->set_row_height( ip_row_height = 20 ). -* obsolete, not intuitive. Use new method shown below -* " Implementation in the Writer is not working yet ===== TODO ===== -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 6 ). -* row_dimension->set_outline_level( ip_outline_level = 0 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 7 ). -* row_dimension->set_outline_level( ip_outline_level = 1 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 8 ). -* row_dimension->set_outline_level( ip_outline_level = 2 ). - -* Define an outline rows 10-16, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 10 - iv_row_to = 16 - iv_collapsed = abap_true ). " collapsed - -* Define an inner outline rows 21-22, expanded when outer outline becomes extended - lo_worksheet->set_row_outline( iv_row_from = 21 - iv_row_to = 22 - iv_collapsed = abap_false ). " expanded - -* Define an inner outline rows 25-28, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 25 - iv_row_to = 28 - iv_collapsed = abap_true ). " collapsed - -* Define an outer outline rows 20-30, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 20 - iv_row_to = 30 - iv_collapsed = abap_true ). " collapsed - -* Hint: the order you create the outlines can be arbitrary -* You can start with inner outlines or with outer outlines - -*--------------------------------------------------------------------* -* Hide columns right of column M -*--------------------------------------------------------------------* - lo_worksheet->zif_excel_sheet_properties~hide_columns_from = 'M'. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL13 -*& -*&---------------------------------------------------------------------* -*& Example by: Alvaro "Blag" Tejada Galindo. -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel13. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_bold_border_guid TYPE zexcel_cell_style, - lo_style_bold_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '13_MergedCells.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - - lo_style_bold_border = lo_excel->add_new_style( ). - lo_style_bold_border->font->bold = abap_true. - lo_style_bold_border->font->italic = abap_false. - lo_style_bold_border->font->color-rgb = zcl_excel_style_color=>c_black. - lo_style_bold_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_bold_border->borders->allborders = lo_border_dark. - lv_style_bold_border_guid = lo_style_bold_border->get_guid( ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - - lo_worksheet->set_merge( ip_row = 4 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test also if merge works when oher merged chells are empty - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Tomato' ). - lo_worksheet->set_merge( ip_row = 6 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test the patch provided by Victor Alekhin to merge cells in one column - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 'Merge cells also over multiple rows by Victor Alekhin' ). - lo_worksheet->set_merge( ip_row = 8 ip_column_start = 'B' ip_column_end = 'G' ip_row_to = 10 ). - - " Test the patch provided by Alexander Budeyev with different column merges - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 'Merge cells with different merges by Alexander Budeyev' ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - - " Test merge (issue) - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'B' ip_column_end = 'C' ip_row_to = 15 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'D' ip_column_end = 'D' ip_row_to = 14 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'E' ip_column_end = 'F' ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL14 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel14. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_center TYPE REF TO zcl_excel_style, - lo_style_right TYPE REF TO zcl_excel_style, - lo_style_left TYPE REF TO zcl_excel_style, - lo_style_general TYPE REF TO zcl_excel_style, - lo_style_bottom TYPE REF TO zcl_excel_style, - lo_style_middle TYPE REF TO zcl_excel_style, - lo_style_top TYPE REF TO zcl_excel_style, - lo_style_justify TYPE REF TO zcl_excel_style, - lo_style_mixed TYPE REF TO zcl_excel_style, - lo_style_mixed_wrap TYPE REF TO zcl_excel_style, - lo_style_rotated TYPE REF TO zcl_excel_style, - lo_style_shrink TYPE REF TO zcl_excel_style, - lo_style_indent TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style, - lv_style_right_guid TYPE zexcel_cell_style, - lv_style_left_guid TYPE zexcel_cell_style, - lv_style_general_guid TYPE zexcel_cell_style, - lv_style_bottom_guid TYPE zexcel_cell_style, - lv_style_middle_guid TYPE zexcel_cell_style, - lv_style_top_guid TYPE zexcel_cell_style, - lv_style_justify_guid TYPE zexcel_cell_style, - lv_style_mixed_guid TYPE zexcel_cell_style, - lv_style_mixed_wrap_guid TYPE zexcel_cell_style, - lv_style_rotated_guid TYPE zexcel_cell_style, - lv_style_shrink_guid TYPE zexcel_cell_style, - lv_style_indent_guid TYPE zexcel_cell_style. - -DATA: lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '14_Alignment.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - "Center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lv_style_center_guid = lo_style_center->get_guid( ). - "Right - lo_style_right = lo_excel->add_new_style( ). - lo_style_right->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lv_style_right_guid = lo_style_right->get_guid( ). - "Left - lo_style_left = lo_excel->add_new_style( ). - lo_style_left->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_left. - lv_style_left_guid = lo_style_left->get_guid( ). - "General - lo_style_general = lo_excel->add_new_style( ). - lo_style_general->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_general. - lv_style_general_guid = lo_style_general->get_guid( ). - "Bottom - lo_style_bottom = lo_excel->add_new_style( ). - lo_style_bottom->alignment->vertical = zcl_excel_style_alignment=>c_vertical_bottom. - lv_style_bottom_guid = lo_style_bottom->get_guid( ). - "Middle - lo_style_middle = lo_excel->add_new_style( ). - lo_style_middle->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_middle_guid = lo_style_middle->get_guid( ). - "Top - lo_style_top = lo_excel->add_new_style( ). - lo_style_top->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_top_guid = lo_style_top->get_guid( ). - "Justify - lo_style_justify = lo_excel->add_new_style( ). - lo_style_justify->alignment->vertical = zcl_excel_style_alignment=>c_vertical_justify. - lv_style_justify_guid = lo_style_justify->get_guid( ). - - "Shrink - lo_style_shrink = lo_excel->add_new_style( ). - lo_style_shrink->alignment->shrinktofit = abap_true. - lv_style_shrink_guid = lo_style_shrink->get_guid( ). - - "Indent - lo_style_indent = lo_excel->add_new_style( ). - lo_style_indent->alignment->indent = 5. - lv_style_indent_guid = lo_style_indent->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed_wrap = lo_excel->add_new_style( ). - lo_style_mixed_wrap->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed_wrap->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_mixed_wrap->alignment->wraptext = abap_true. - lv_style_mixed_wrap_guid = lo_style_mixed_wrap->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed = lo_excel->add_new_style( ). - lo_style_mixed->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_mixed_guid = lo_style_mixed->get_guid( ). - - "Center - lo_style_rotated = lo_excel->add_new_style( ). - lo_style_rotated->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_rotated->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_rotated->alignment->textrotation = 165. " -75° == 90° + 75° - lv_style_rotated_guid = lo_style_rotated->get_guid( ). - - - " Set row size for first 7 rows to 40 - DO 7 TIMES. - lo_row_dimension = lo_worksheet->get_row_dimension( sy-index ). - lo_row_dimension->set_row_height( 40 ). - ENDDO. - - "Horizontal alignment - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Centered Text' ip_style = lv_style_center_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Right Text' ip_style = lv_style_right_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Left Text' ip_style = lv_style_left_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'General Text' ip_style = lv_style_general_guid ). - - " Shrink & indent - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'Text shrinked' ip_style = lv_style_shrink_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 'Text indented' ip_style = lv_style_indent_guid ). - - "Vertical alignment - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Bottom Text' ip_style = lv_style_bottom_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Middle Text' ip_style = lv_style_middle_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Top Text' ip_style = lv_style_top_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 'Justify Text' ip_style = lv_style_justify_guid ). - - " Wrapped - lo_worksheet->set_cell( ip_row = 10 ip_column = 'B' - ip_value = 'This is a wrapped text centered in the middle' - ip_style = lv_style_mixed_wrap_guid ). - - " Rotated - lo_worksheet->set_cell( ip_row = 10 ip_column = 'D' - ip_value = 'This is a centered text rotated by -75°' - ip_style = lv_style_rotated_guid ). - - " forced line break - DATA: lv_value TYPE string. - CONCATENATE 'This is a wrapped text centered in the middle' cl_abap_char_utilities=>cr_lf - 'and a manuall line break.' INTO lv_value. - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' - ip_value = lv_value - ip_style = lv_style_mixed_guid ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL15 -*& -*&---------------------------------------------------------------------* -*& 2010-10-30, Gregor Wolf: -*& Added the functionality to ouput the read table content -*& 2011-12-19, Shahrin Shahrulzaman: -*& Added the functionality to have multiple input and output files -*&---------------------------------------------------------------------* - -REPORT zdemo_excel15. - -TYPE-POOLS: abap. - -TYPES: - BEGIN OF t_demo_excel15, - input TYPE string, - END OF t_demo_excel15. - -DATA: excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - reader TYPE REF TO zif_excel_reader. - -DATA: ex TYPE REF TO zcx_excel, - msg TYPE string. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_workdir TYPE string, - output_file_path TYPE string, - input_file_path TYPE string, - lv_file_separator TYPE c. - -DATA: worksheet TYPE REF TO zcl_excel_worksheet, - highest_column TYPE zexcel_cell_column, - highest_row TYPE int4, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha, - row TYPE int4 VALUE 1, - value TYPE zexcel_cell_value. - -DATA: - lt_files TYPE TABLE OF t_demo_excel15. -FIELD-SYMBOLS: <wa_files> TYPE t_demo_excel15. - -PARAMETERS: p_path TYPE zexcel_export_dir, - p_noout TYPE xfeld DEFAULT abap_true. - - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '01_HelloWorld.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '02_Styles.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '03_iTab.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '04_Sheets.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '08_Range.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '13_MergedCells.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '31_AutosizeWithDifferentFontSizes.xlsx'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - - LOOP AT lt_files ASSIGNING <wa_files>. - CONCATENATE p_path lv_file_separator <wa_files>-input INTO input_file_path. - CONCATENATE p_path lv_file_separator '15_' <wa_files>-input INTO output_file_path. - REPLACE '.xlsx' IN output_file_path WITH 'FromReader.xlsx'. - - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( input_file_path ). - - IF p_noout EQ abap_false. - worksheet = excel->get_active_worksheet( ). - highest_column = worksheet->get_highest_column( ). - highest_row = worksheet->get_highest_row( ). - - WRITE: 'Highest column: ', highest_column, 'Highest row: ', highest_row. - WRITE: /. - - WHILE row <= highest_row. - WHILE column <= highest_column. - col_str = zcl_excel_common=>convert_column2alpha( column ). - worksheet->get_cell( - EXPORTING - ip_column = col_str - ip_row = row - IMPORTING - ep_value = value - ). - WRITE: value. - column = column + 1. - ENDWHILE. - WRITE: /. - column = 1. - row = row + 1. - ENDWHILE. - ENDIF. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = output_file_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - CATCH zcx_excel INTO ex. " Exceptions for ABAP2XLSX - msg = ex->get_text( ). - WRITE: / msg. - ENDTRY. - ENDLOOP. - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel16. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - - -DATA: ls_io TYPE skwf_io. - -CONSTANTS: gc_save_file_name TYPE string VALUE '16_Drawings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_objid TYPE sdok_docid DEFAULT '456694429165174BE10000000A1550C0', " Question mark in standard Web Dynpro WDT_QUIZ - p_class TYPE sdok_class DEFAULT 'M_IMAGE_P', - pobjtype TYPE skwf_ioty DEFAULT 'P'. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i, - lv_content TYPE xstring, - ls_key TYPE wwwdatatab. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = 'c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp' - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. -* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno -* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = lv_content - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Image from web repository (SMW0)' ). - - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 3 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Image from a file (c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 9 - ip_from_col = 'B' ). - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_bmp - ip_width = 83 - ip_height = 160 ). - - lo_worksheet->add_drawing( lo_drawing ). - - ls_io-objid = p_objid. - ls_io-class = p_class. - ls_io-objtype = pobjtype. - IF ls_io IS NOT INITIAL. - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_value = 'Mime repository (by default Question mark in standard Web Dynpro WDT_QUIZ)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 19 - ip_from_col = 'B' ). - lo_drawing->set_media_mime( ip_io = ls_io - ip_width = 126 - ip_height = 145 ). - - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL26 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel29. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_excel_reader TYPE REF TO zif_excel_reader. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_filename TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -PARAMETERS: p_path TYPE zexcel_export_dir OBLIGATORY. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - DATA: lt_filetable TYPE filetable, - lv_rc TYPE i. - - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - CALL METHOD cl_gui_frontend_services=>file_open_dialog - EXPORTING - window_title = 'Select Macro-Enabled Workbook template' - default_extension = '*.xlsm' - file_filter = 'Excel Macro-Enabled Workbook (*.xlsm)|*.xlsm' - initial_directory = lv_workdir - CHANGING - file_table = lt_filetable - rc = lv_rc - EXCEPTIONS - file_open_dialog_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - OTHERS = 5. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - READ TABLE lt_filetable INTO lv_filename INDEX 1. - p_path = lv_filename. - -START-OF-SELECTION. - - lv_full_path = p_path. - - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_xlsm. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_xlsm. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE '.xlsm' IN lv_full_path WITH 'FromReader.xlsm'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL28 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel28. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_file_name TYPE string, - lv_file_path TYPE string, - lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '28_HelloWorld.csv'. - -PARAMETERS: p_path TYPE string. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = p_path - CHANGING selected_folder = p_path ). - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_width( 11 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_csv. - zcl_excel_writer_csv=>set_delimiter( ip_value = cl_abap_char_utilities=>horizontal_tab ). - zcl_excel_writer_csv=>set_enclosure( ip_value = '''' ). - zcl_excel_writer_csv=>set_endofline( ip_value = cl_abap_char_utilities=>cr_lf ). - - zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). -* zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet2' ). - - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - REPLACE FIRST OCCURRENCE OF '.csv' IN lv_full_path WITH '_Sheet2.csv'. - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - -* zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). - zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet1' ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE FIRST OCCURRENCE OF '_Sheet2.csv' IN lv_full_path WITH '_Sheet1.csv'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL27 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel27. - -CONSTANTS: c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_1 TYPE REF TO zcl_excel_style, - lo_style_2 TYPE REF TO zcl_excel_style, - lv_style_1_guid TYPE zexcel_cell_style, - lv_style_2_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis. - - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '27_ConditionalFormatting.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - lo_style_1 = lo_excel->add_new_style( ). - lo_style_1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_1->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_1_guid = lo_style_1->get_guid( ). - - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_2->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_2_guid = lo_style_2->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = 'Select a value' ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Anchovy"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_1_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Carp"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_2_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL26 -* Demo for method zcl_excel_worksheet-bind_object: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -report zdemo_excel26. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events definition. - public section. - methods: - on_user_command for event added_function of cl_salv_events - importing e_salv_function. -endclass. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events implementation. - method on_user_command. - perform user_command." using e_salv_function text-i08. - endmethod. "on_user_command -endclass. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -data: lo_excel type ref to zcl_excel, - lo_worksheet type ref to zcl_excel_worksheet, - lo_salv type ref to cl_salv_table, - gr_events type ref to lcl_handle_events, - lr_events type ref to cl_salv_events_table, - gt_sbook type table of sbook. - -data: l_path type string, " local dir - lv_workdir type string, - lv_file_separator type c. - -constants: - lv_default_file_name type string value '26_Bind_ALV.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -start-of-selection. - -* get data -* ------------------------------------------ - - select * - into table gt_sbook[] - from sbook "#EC CI_NOWHERE - up to 10 rows. - -* Display ALV -* ------------------------------------------ - - try. - cl_salv_table=>factory( - exporting - list_display = abap_false - importing - r_salv_table = lo_salv - changing - t_table = gt_sbook[] ). - catch cx_salv_msg . - endtry. - - try. - lo_salv->set_screen_status( - exporting - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - catch cx_salv_msg . - endtry. - - lr_events = lo_salv->get_event( ). - create object gr_events. - set handler gr_events->on_user_command for lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -form user_command . - if sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( changing sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - exporting initial_folder = l_path - changing selected_folder = l_path ). - - if l_path is initial. - cl_gui_frontend_services=>get_sapgui_workdir( - changing sapworkdir = lv_workdir ). - l_path = lv_workdir. - endif. - - cl_gui_frontend_services=>get_file_separator( - changing file_separator = lv_file_separator ). - - concatenate l_path lv_file_separator lv_default_file_name - into l_path. - -* export file to save file path - perform export_to_excel. - - endif. -endform. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -form export_to_excel. - data: lo_converter type ref to zcl_excel_converter. -* create zcl_excel_worksheet object - - create object lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object - try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). - catch zcx_excel . - endtry. - - perform write_file. - -endform. "EXPORT_TO_EXCEL -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -form write_file . - data: lt_file type solix_tab, - l_bytecount type i, - l_file type xstring. - - data: lo_excel_writer type ref to zif_excel_writer. - - data: ls_seoclass type seoclass. - - create object lo_excel_writer type zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = l_file - receiving - et_solix = lt_file. - - l_bytecount = xstrlen( l_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = l_file - importing - output_length = l_bytecount - tables - binary_tab = lt_file. - endif. - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - changing data_tab = lt_file ). - -endform. " WRITE_FILE - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL25 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel25. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_exception TYPE REF TO cx_root. - -DATA: lv_file TYPE xstring. - -CONSTANTS: lv_file_name TYPE string VALUE '25_HelloWorld.xlsx'. -DATA: lv_default_file_name TYPE string. -DATA: lv_error TYPE string. - -CALL FUNCTION 'FILE_GET_NAME_USING_PATH' - EXPORTING - logical_path = 'LOCAL_TEMPORARY_FILES' " Logical path' - file_name = lv_file_name " File name - IMPORTING - file_name_with_path = lv_default_file_name. " File name with path -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->set_title( ip_title = 'Sheet1' ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - -CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -lv_file = lo_excel_writer->write_file( lo_excel ). - -TRY. - OPEN DATASET lv_default_file_name FOR OUTPUT IN BINARY MODE. - TRANSFER lv_file TO lv_default_file_name. - CLOSE DATASET lv_default_file_name. - CATCH cx_root INTO lo_exception. - lv_error = lo_exception->get_text( ). - MESSAGE lv_error TYPE 'I'. -ENDTRY. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel24. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lv_value TYPE string. - -CONSTANTS: gc_save_file_name TYPE string VALUE '24_Sheets_with_different_default_date_formats.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Default Date Format' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!A1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmdd ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYYMMDD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " TODO: It seems that the zcl_excel_style_number_format=>c_format_date_yyyymmddslash - " does not produce a valid output - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmddslash ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYY/MM/DD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the 4th sheet' ip_hyperlink = lo_hyperlink ). - - " 4th sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " Illustrate the Problem caused by: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year. - " http://support.microsoft.com/kb/214326/en-us - lo_worksheet->set_title( ip_title = 'Sheet4' ). - " Loop from Start Date to the Max Date current data in daily steps - CONSTANTS: lv_max type d VALUE '19000302'. - - DATA: lv_date TYPE d VALUE '19000226', - lv_row TYPE i. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Formated date' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Integer value for this date' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'Date as string' ). - - lv_row = 4. - WHILE lv_date < lv_max. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_row ip_value = lv_date ). - lv_value = zcl_excel_common=>date_to_excel_string( lv_date ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_row ip_value = lv_value ). - lv_value = lv_date. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_row ip_value = lv_value ). - lv_date = lv_date + 1. - lv_row = lv_row + 1. - ENDWHILE. - - lv_row = lv_row + 1. - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_row ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel23. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '23_Sheets_with_and_without_grid_lines.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet with grid lines and print centered horizontal & vertical' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet with grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 160. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_PAGELAYOUTVIEW = 200. - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the third sheet without grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_false ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the fourth sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 170. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_SHEETLAYOUTVIEW = 150. - - " Fourth sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the fourth sheet with grid lines and print centered ONLY horizontal' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - -" lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL17 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel17. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_protection TYPE REF TO zcl_excel_style, - lv_style_protection_guid TYPE zexcel_cell_style, - lo_style TYPE REF TO zcl_excel_style, - lv_style TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '17_SheetProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_pwd TYPE zexcel_aes_password LOWER CASE DEFAULT 'secret'. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. -* lo_worksheet->zif_excel_sheet_protection~password = 'DAA7'. "it is the encoded word "secret" - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( p_pwd ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - " First style to unlock a cell - lo_style_protection = lo_excel->add_new_style( ). - lo_style_protection->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - lv_style_protection_guid = lo_style_protection->get_guid( ). - " Another style which should not affect the unlock style - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFCC3333'. - lv_style = lo_style->get_guid( ). - lo_worksheet->set_cell( ip_row = 3 ip_column = 'C' ip_value = 'This cell is locked locked and has the second formating' ip_style = lv_style ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL18 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel18. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_protection_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '18_BookProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_excel->zif_excel_book_protection~protected = zif_excel_book_protection=>c_protected. - lo_excel->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_locked. - - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL19 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel19. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '19_SetActiveSheet.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_noout TYPE xfeld DEFAULT abap_true. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " First Worksheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'First' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 1' ). - - " Second Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Second' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 2' ). - - " Third Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Third' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 3' ). - - IF p_noout EQ abap_false. - " lo_excel->set_active_sheet_index_by_name( data_sheet_name ). - DATA: active_sheet_index TYPE zexcel_active_worksheet. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index before: ', active_sheet_index. - ENDIF. - lo_excel->set_active_sheet_index( '2' ). - IF p_noout EQ abap_false. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index after: ', active_sheet_index. - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel2. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style, - lv_style_gr_cornerlb_guid TYPE zexcel_cell_style, - lv_style_gr_cornerlt_guid TYPE zexcel_cell_style, - lv_style_gr_cornerrb_guid TYPE zexcel_cell_style, - lv_style_gr_cornerrt_guid TYPE zexcel_cell_style, - lv_style_gr_horizontal90_guid TYPE zexcel_cell_style, - lv_style_gr_horizontal270_guid TYPE zexcel_cell_style, - lv_style_gr_horizontalb_guid TYPE zexcel_cell_style, - lv_style_gr_vertical_guid TYPE zexcel_cell_style, - lv_style_gr_vertical2_guid TYPE zexcel_cell_style, - lv_style_gr_fromcenter_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal45_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal45b_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal135_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal135b_guid TYPE zexcel_cell_style . - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. -DATA: lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '02_Styles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled with gradients - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerlb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerlt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerrb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerrt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal90. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontal90_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal270. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontal270_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontalb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontalb_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_vertical_guid = lo_style_filled->get_guid( ). - - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_vertical2_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_fromcenter. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_fromcenter_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal45_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal45b_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal135_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal135b_guid = lo_style_filled->get_guid( ). - - - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_style = lv_style_gr_cornerlb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 10 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 11 ip_style = lv_style_gr_cornerlt_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 11 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 12 ip_style = lv_style_gr_cornerrb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 12 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 13 ip_style = lv_style_gr_cornerrt_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 13 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 14 ip_style = lv_style_gr_horizontal90_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal90 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 14 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 15 ip_style = lv_style_gr_horizontal270_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal270 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 15 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 16 ip_style = lv_style_gr_horizontalb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontalb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 16 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 17 ip_style = lv_style_gr_vertical_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 17 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_style = lv_style_gr_vertical2_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 18 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_style = lv_style_gr_fromcenter_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_fromcenter ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 19 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_style = lv_style_gr_diagonal45_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 20 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 21 ip_style = lv_style_gr_diagonal45b_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 21 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 22 ip_style = lv_style_gr_diagonal135_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 22 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 23 ip_style = lv_style_gr_diagonal135b_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 23 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - - - -* CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -* lv_file = lo_excel_writer->write_file( lo_excel ). -* -* " Convert to binary -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = lv_file -* IMPORTING -* output_length = lv_bytecount -* TABLES -* binary_tab = lt_file_tab. -** " This method is only available on AS ABAP > 6.40 -** lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -** lv_bytecount = xstrlen( lv_file ). -* -* " Save the file -* cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount -* filename = lv_full_path -* filetype = 'BIN' -* CHANGING data_tab = lt_file_tab ). - - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL22 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel22. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style, - lo_style_date TYPE REF TO zcl_excel_style, - lo_style_editable TYPE REF TO zcl_excel_style, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_table_settings_out TYPE zexcel_s_table_settings. - -DATA: lv_style_guid TYPE zexcel_cell_style. - -DATA: lv_row TYPE char10. - -FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - -CONSTANTS: gc_save_file_name TYPE string VALUE '22_itab_fieldcatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'PN_MASSIVE'). - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - " sheet style (white background) - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lv_style_guid = lo_style->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_guid ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( 'test' ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - - " Create cell style for display only fields - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_text. - - " Create cell style for display only date field - lo_style_date = lo_excel->add_new_style( ). - lo_style_date->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_date->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style_date->number_format->format_code = zcl_excel_style_number_format=>c_format_date_ddmmyyyy. - - " Create cell style for editable fields - lo_style_editable = lo_excel->add_new_style( ). - lo_style_editable->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'CONNID'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_date->get_guid( ). - WHEN 'PRICE'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_editable->get_guid( ). - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( EXPORTING - ip_table = lt_test - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - IMPORTING - es_table_settings = ls_table_settings_out ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lv_row = ls_table_settings_out-top_left_row. - CONDENSE lv_row. - CONCATENATE 'ISNUMBER(' ls_table_settings_out-top_left_column lv_row ')' INTO lo_data_validation->formula1. - lo_data_validation->cell_row = ls_table_settings_out-top_left_row. - lo_data_validation->cell_column = ls_table_settings_out-top_left_column. - lo_data_validation->cell_row_to = ls_table_settings_out-bottom_right_row. - lo_data_validation->cell_column_to = ls_table_settings_out-bottom_right_column. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL21 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel21. - -TYPES: - BEGIN OF t_color_style, - color TYPE zexcel_style_color_argb, - style TYPE zexcel_cell_style, - END OF t_color_style. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_filled TYPE REF TO zcl_excel_style. - -DATA: color_styles TYPE TABLE OF t_color_style. - -FIELD-SYMBOLS: <color_style> LIKE LINE OF color_styles. - -CONSTANTS: max TYPE i VALUE 255, - step TYPE i VALUE 51. - -DATA: red TYPE i, - green TYPE i, - blue TYPE i, - red_hex(1) TYPE x, - green_hex(1) TYPE x, - blue_hex(1) TYPE x, - red_str TYPE string, - green_str TYPE string, - blue_str TYPE string. - -DATA: color TYPE zexcel_style_color_argb, - tint TYPE zexcel_style_color_tint. - -DATA: row TYPE i, - row_tmp TYPE i, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha. - -CONSTANTS: gc_save_file_name TYPE string VALUE '21_BackgroundColorPicker.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - WHILE red <= max. - green = 0. - WHILE green <= max. - blue = 0. - WHILE blue <= max. - red_hex = red. - red_str = red_hex. - green_hex = green. - green_str = green_hex. - blue_hex = blue. - blue_str = blue_hex. - " Create filled - CONCATENATE 'FF' red_str green_str blue_str INTO color. - APPEND INITIAL LINE TO color_styles ASSIGNING <color_style>. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = color. - <color_style>-color = color. - <color_style>-style = lo_style_filled->get_guid( ). - blue = blue + step. - ENDWHILE. - green = green + step. - ENDWHILE. - red = red + step. - ENDWHILE. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Color Picker' ). - LOOP AT color_styles ASSIGNING <color_style>. - row_tmp = ( max / step + 1 ) * 3. - IF row = row_tmp. - row = 0. - column = column + 1. - ENDIF. - row = row + 1. - col_str = zcl_excel_common=>convert_column2alpha( column ). - - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = col_str - ip_row = row - ip_value = <color_style>-color - ip_style = <color_style>-style ). - ENDLOOP. - - row = row + 2. - tint = '-0.5'. - DO 10 TIMES. - column = 1. - DO 10 TIMES. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = sy-index - 1. - lo_style_filled->fill->fgcolor-tint = tint. - <color_style>-style = lo_style_filled->get_guid( ). - col_str = zcl_excel_common=>convert_column2alpha( column ). - lo_worksheet->set_cell_style( ip_column = col_str - ip_row = row - ip_style = <color_style>-style ). - - ADD 1 TO column. - ENDDO. - ADD '0.1' TO tint. - ADD 1 TO row. - ENDDO. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL20 -* Demo for method zcl_excel_worksheet-bind_alv: -* export data from ALV (CL_GUI_ALV_GRID) object to excel -*--------------------------------------------------------------------* -REPORT zdemo_excel20. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_alv TYPE REF TO cl_gui_alv_grid, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook, - gt_listheader TYPE slis_t_listheader, - wa_listheader LIKE LINE OF gt_listheader. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '20_BindAlv.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 10 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - IF sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - -* export file to save file path - - PERFORM export_to_excel. - - ENDIF. -ENDFORM. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel. - -* create zcl_excel_worksheet object - - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - -* get ALV object from screen - - CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' - IMPORTING - e_grid = lo_alv. - -* build list header - - wa_listheader-typ = 'H'. - wa_listheader-info = sy-title. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'S'. - wa_listheader-info = 'Created by: ABAP2XLSX Group'. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'A'. - wa_listheader-info = - 'Project hosting at https://cw.sdn.sap.com/cw/groups/abap2xlsx'. - APPEND wa_listheader TO gt_listheader. - -* write to excel using method Bin_ALV - - lo_worksheet->bind_alv_ole2( - EXPORTING -* I_DOCUMENT_URL = SPACE " excel template -* I_XLS = 'X' " create in xls format? - i_save_path = l_path - io_alv = lo_alv - it_listheader = gt_listheader - i_top = 2 - i_left = 1 -* I_COLUMNS_HEADER = 'X' -* I_COLUMNS_AUTOFIT = 'X' -* I_FORMAT_COL_HEADER = -* I_FORMAT_SUBTOTAL = -* I_FORMAT_TOTAL = - EXCEPTIONS - miss_guide = 1 - ex_transfer_kkblo_error = 2 - fatal_error = 3 - inv_data_range = 4 - dim_mismatch_vkey = 5 - dim_mismatch_sema = 6 - error_in_sema = 7 - OTHERS = 8 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - -ENDFORM. "EXPORT_TO_EXCEL - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL42 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT ZDEMO_EXCEL42. -type-POOLS: vrm. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_theme TYPE REF TO zcl_excel_theme, - lo_style type ref to zcl_excel_style, - lv_style_guid type ZEXCEL_CELL_STYLE. -DATA: gc_save_file_name TYPE string VALUE '42 Theme Manipulation demo.&'. -include zdemo_excel_outputopt_incl. - -initialization. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create a bold / italic style with usage of major font - lo_style = lo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - lo_style->font->italic = abap_true. - lo_style->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_guid = lo_style->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_guid ). - - "create theme - create object lo_theme. - lo_theme->set_theme_name( iv_name = 'Theme Demo 42 A2X' ). - lo_theme->set_color_scheme_name( iv_name = 'Demo 42 A2X' ). - - "set theme colors - lo_theme->set_color( - exporting - iv_type = zcl_excel_theme_color_scheme=>c_dark1 - iv_srgb = '5F9EA0' -* iv_syscolorname = -* iv_syscolorlast = - ). - lo_theme->set_color( - exporting - iv_type = zcl_excel_theme_color_scheme=>c_dark2 - iv_srgb = 'FFA500' -* iv_syscolorname = -* iv_syscolorlast = - ). - lo_theme->set_color( - exporting - iv_type = zcl_excel_theme_color_scheme=>c_light1 - iv_srgb = '778899' -* iv_syscolorname = -* iv_syscolorlast = - ). - - lo_theme->set_color( - exporting - iv_type = zcl_excel_theme_color_scheme=>c_light1 - iv_srgb = '9932CC' -* iv_syscolorname = -* iv_syscolorlast = - ). - lo_theme->set_font_scheme_name( iv_name = 'Demo 42 A2X' ). - - - "set theme latin fonts - major and minor - lo_theme->set_latin_font( - exporting - iv_type = zcl_excel_theme_font_scheme=>c_major - iv_typeface = 'Britannic Bold' -* iv_panose = -* iv_pitchfamily = -* iv_charset = - ). - lo_theme->set_latin_font( - exporting - iv_type = zcl_excel_theme_font_scheme=>c_minor - iv_typeface = 'Broadway' -* iv_panose = -* iv_pitchfamily = -* iv_charset = - ). - "push theme to file - lo_excel->set_theme( io_theme = lo_theme ). - - "output - lcl_output=>output( cl_excel = lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lo_send_request TYPE REF TO cl_bcs, - lo_document TYPE REF TO cl_document_bcs, - lo_sender TYPE REF TO cl_sapuser_bcs, - lo_recipient TYPE REF TO cl_sapuser_bcs, - lo_recipient_i TYPE REF TO CL_CAM_ADDRESS_BCS. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lv_bytecount_c TYPE sood-objlen, - lt_file_tab TYPE solix_tab. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - lv_bytecount_c = lv_bytecount. - - " Send via email - lo_document = cl_document_bcs=>create_document( i_type = 'RAW' - i_subject = 'Demo TechEd' ). - - lo_document->add_attachment( i_attachment_type = 'EXT' - i_attachment_subject = 'abap2xlsx.xlsx' - i_attachment_size = lv_bytecount_c - i_att_content_hex = lt_file_tab ). - - lo_sender = cl_sapuser_bcs=>create( sy-uname ). - lo_recipient = cl_sapuser_bcs=>create( sy-uname ). -* lo_recipient_i = cl_cam_address_bcs=>create_internet_address( 'ivan.femia@techedge.it' ). - - lo_send_request = cl_bcs=>create_persistent( ). - lo_send_request->set_document( lo_document ). - lo_send_request->set_sender( lo_sender ). - lo_send_request->add_recipient( lo_recipient ). - lo_send_request->set_send_immediately( abap_true ). - lo_send_request->send( ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel3. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: ls_table_settings TYPE zexcel_s_table_settings. - - -DATA: lv_title TYPE zexcel_sheet_title, - lt_carr TYPE TABLE OF scarr, - row TYPE zexcel_cell_row VALUE 2, - lo_range TYPE REF TO zcl_excel_range. -DATA: lo_data_validation TYPE REF TO zcl_excel_data_validation. -FIELD-SYMBOLS: <carr> LIKE LINE OF lt_carr. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '03_iTab.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_empty TYPE flag. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - DATA lt_test TYPE TABLE OF sflight. - - IF p_empty <> abap_true. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - ENDIF. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - ls_table_settings-nofilters = abap_true. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). "make date field a bit wider - column_dimension->set_width( ip_width = 11 ). - " Add another table for data validations - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = c_airlines ). - SELECT * FROM scarr INTO TABLE lt_carr. "#EC CI_NOWHERE - LOOP AT lt_carr ASSIGNING <carr>. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = <carr>-carrid ). - row = row + 1. - ENDLOOP. - row = row - 1. - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_airlines. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 2 - ip_stop_column = 'A' - ip_stop_row = row ). - " Set Data Validation - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_airlines. - lo_data_validation->cell_row = 4. - lo_data_validation->cell_column = 'C'. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel30. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: lv_value TYPE string, - lv_count TYPE i VALUE 10, - lv_packed TYPE p LENGTH 16 DECIMALS 1 VALUE '1234567890.5'. - -CONSTANTS: lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string, - lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed, - lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num, - lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date, - lc_typekind_s_ls TYPE string VALUE 's_leading_blanks'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '30_CellDataTypes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Cell data types' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Number as String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = '11' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = ' String with leading spaces' - ip_data_type = lc_typekind_s_ls ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = ' Negative Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.01-' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = '0 %' - ip_abap_type = lc_typekind_num ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = 'Date' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = '20110831' - ip_abap_type = lc_typekind_date ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.02' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %' - ip_abap_type = lc_typekind_num ). - - WHILE lv_count <= 15. - lv_value = lv_count. - CONCATENATE 'Positive Value with' lv_value 'Digits' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_packed ). - CONCATENATE 'Positive Value with' lv_value 'Digits formated as string' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_string ). - lv_packed = lv_packed * 10. - lv_count = lv_count + 1. - ENDWHILE. - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). - column_dimension->set_auto_size( abap_true ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel31. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: fieldval TYPE text80, - row TYPE i, - style_column_a TYPE REF TO zcl_excel_style, - style_column_a_guid TYPE zexcel_cell_style, - style_column_b TYPE REF TO zcl_excel_style, - style_column_b_guid TYPE zexcel_cell_style, - style_column_c TYPE REF TO zcl_excel_style, - style_column_c_guid TYPE zexcel_cell_style, - style_font TYPE REF TO zcl_excel_style_font. - -CONSTANTS: gc_save_file_name TYPE string VALUE '31_AutosizeWithDifferentFontSizes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - " Use active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Regular Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a_guid = style_column_a->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c_guid = style_column_c->get_guid( ). - - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Bold Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->bold = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->bold = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->bold = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Italic Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->italic = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->italic = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->italic = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet for merged cells - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Merged cells' ). - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'This is a very long header text' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = 'Some data' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Some more data' ). - - lo_worksheet->set_merge( - EXPORTING - ip_column_start = 'A' - ip_column_end = 'C' - ip_row = 1 ). - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - lo_excel->set_active_sheet_index( i_active_worksheet = 1 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL32 -* Demo for export options from ALV GRID: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -REPORT zdemo_excel32. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '32_Export_ALV.xlsx', - lv_default_file_name2 TYPE string VALUE '32_Export_Convert.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 100 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - - -* export file to save file path - CASE sy-ucomm. - WHEN 'EXCELBIND'. - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - PERFORM export_to_excel_bind. - - WHEN 'EXCELCONV'. - - CONCATENATE l_path lv_file_separator lv_default_file_name2 - INTO l_path. - PERFORM export_to_excel_conv. - - ENDCASE. -ENDFORM. " USER_COMMAND -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_CONV -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_conv. - DATA: lo_converter TYPE REF TO zcl_excel_converter. - - CREATE OBJECT lo_converter. -*TRY. - lo_converter->convert( - EXPORTING - io_alv = lo_salv - it_table = gt_sbook - i_row_int = 2 - i_column_int = 2 -* i_table = -* i_style_table = -* io_worksheet = -* CHANGING -* co_excel = - ). -* CATCH zcx_excel . -*ENDTRY. - lo_converter->write_file( i_path = l_path ). - -ENDFORM. "EXPORT_TO_EXCEL_CONV - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_BIND -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_bind. -* create zcl_excel_worksheet object - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object -*try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). -* catch zcx_excel . -*endtry. - - - PERFORM write_file. - -ENDFORM. "EXPORT_TO_EXCEL_BIND -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -FORM write_file . - DATA: lt_file TYPE solix_tab, - l_bytecount TYPE i, - l_file TYPE xstring. - - DATA: lo_excel_writer TYPE REF TO zif_excel_writer. - - DATA: ls_seoclass TYPE seoclass. - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_BCS_CONVERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>xstring_to_solix - EXPORTING - iv_xstring = l_file - RECEIVING - et_solix = lt_file. - - l_bytecount = XSTRLEN( l_file ). - ELSE. - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = l_file - IMPORTING - output_length = l_bytecount - TABLES - binary_tab = lt_file. - ENDIF. - - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - CHANGING data_tab = lt_file ). - -ENDFORM. " WRITE_FILE - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel33. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_converter TYPE REF TO zcl_excel_converter, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - -DATA lt_test TYPE TABLE OF t005t. - -DATA: l_cell_value TYPE zexcel_cell_value, - ls_area TYPE zexcel_s_autofilter_area. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '33_autofilter.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - SELECT * UP TO 2 ROWS FROM t005t INTO TABLE lt_test. "#EC CI_NOWHERE - - CREATE OBJECT lo_converter. - - lo_converter->convert( EXPORTING - it_table = lt_test - i_row_int = 1 - i_column_int = 1 - io_worksheet = lo_worksheet - CHANGING - co_excel = lo_excel ) . - - lo_autofilter = lo_excel->add_new_autofilter( io_sheet = lo_worksheet ) . - - ls_area-row_start = 1. - ls_area-col_start = 1. - ls_area-row_end = lo_worksheet->get_highest_row( ). - ls_area-col_end = lo_worksheet->get_highest_column( ). - - lo_autofilter->set_filter_area( is_area = ls_area ). - - lo_worksheet->get_cell( EXPORTING - ip_column = 'C' - ip_row = 2 - IMPORTING - ep_value = l_cell_value ). - lo_autofilter->set_value( i_column = 3 - i_value = l_cell_value ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel34. - -CONSTANTS: width TYPE f VALUE '10.14'. -CONSTANTS: height TYPE f VALUE '57.75'. - -DATA: current_row TYPE i, - col TYPE i, - col_alpha TYPE zexcel_cell_column_alpha, - row TYPE i, - row_board TYPE i, - colorflag TYPE i, - color TYPE zexcel_style_color_argb, - - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - - writing1 TYPE string, - writing2 TYPE string. - - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -CONSTANTS: gc_save_file_name TYPE string VALUE '34_Static Styles_Chess.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Spassky_vs_Bronstein' ). - -* Header - current_row = 1. - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'White' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Spassky, Boris V -- wins in turn 23' ). - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'Black' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Bronstein, David I' ). - - ADD 1 TO current_row. -* Set size of column + Writing above chessboard - DO 8 TIMES. - - writing1 = zcl_excel_common=>convert_column2alpha( sy-index ). - writing2 = sy-index . - row = current_row + sy-index. - - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - -* Set size of column - column_dimension = lo_worksheet->get_column_dimension( col_alpha ). - column_dimension->set_width( width ). - -* Set size of row - row_dimension = lo_worksheet->get_row_dimension( row ). - row_dimension->set_row_height( height ). - -* Set writing on chessboard - lo_worksheet->set_cell( ip_row = row - ip_column = 'A' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'A' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = 'J' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'J' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - - row = current_row + 9. - lo_worksheet->set_cell( ip_row = current_row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = current_row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'J' ). - column_dimension->set_auto_size( abap_true ). - -* Set win-position - CONSTANTS: c_pawn TYPE string VALUE 'Pawn'. - CONSTANTS: c_rook TYPE string VALUE 'Rook'. - CONSTANTS: c_knight TYPE string VALUE 'Knight'. - CONSTANTS: c_bishop TYPE string VALUE 'Bishop'. - CONSTANTS: c_queen TYPE string VALUE 'Queen'. - CONSTANTS: c_king TYPE string VALUE 'King'. - - row = current_row + 1. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_knight ). - row = current_row + 2. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_king ). - row = current_row + 3. - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 4. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_knight ). - row = current_row + 5. - lo_worksheet->set_cell( ip_row = row ip_column = 'E' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - row = current_row + 6. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_bishop ). - row = current_row + 7. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 8. - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_king ). - -* Set Chessboard - DO 8 TIMES. - IF sy-index <= 3. " Black - color = zcl_excel_style_color=>c_black. - ELSE. - color = zcl_excel_style_color=>c_white. - ENDIF. - row_board = sy-index. - row = current_row + sy-index. - DO 8 TIMES. - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - TRY. -* Borders around outer limits - IF row_board = 1. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_top_style = zcl_excel_style_border=>c_border_thick - ip_borders_top_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF row_board = 8. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_down_style = zcl_excel_style_border=>c_border_thick - ip_borders_down_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 2. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_left_style = zcl_excel_style_border=>c_border_thick - ip_borders_left_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 9. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_right_style = zcl_excel_style_border=>c_border_thick - ip_borders_right_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. -* Style for writing - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_font_color_rgb = color - ip_font_bold = 'X' - ip_font_size = 16 - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid ). -* Color of field - colorflag = ( row + col ) MOD 2. - IF colorflag = 0. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFB5866A' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - ELSE. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFF5DEBF' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - ENDIF. - - - - CATCH zcx_excel . - ENDTRY. - - ENDDO. - ENDDO. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel35. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '35_Static_Styles.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>GET_DESKTOP_DIRECTORY( CHANGING DESKTOP_DIRECTORY = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - sy-title = 'ZDEMO_EXCEL2;Issue 139: Change cellstyle retroactivly'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - -* Demonstrate how to retroactivly change the cellstyle -*Filled text and underlinded text - lo_worksheet->change_cell_style( ip_column = 'B' - ip_row = 5 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - lo_worksheet->change_cell_style( ip_column = 'D' - ip_row = 4 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL36 -REPORT zdemo_excel36. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - col TYPE i. - -DATA: lo_style_arial20 TYPE REF TO zcl_excel_style, - lo_style_times11 TYPE REF TO zcl_excel_style, - lo_style_cambria8red TYPE REF TO zcl_excel_style. - -DATA: lv_style_arial20_guid TYPE zexcel_cell_style, - lv_style_times11_guid TYPE zexcel_cell_style, - lv_style_cambria8red_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '36_DefaultStyles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create a bold / italic style - lo_style_arial20 = lo_excel->add_new_style( ). - lo_style_arial20->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_arial20->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_arial20->font->size = 20. - lv_style_arial20_guid = lo_style_arial20->get_guid( ). - - lo_style_times11 = lo_excel->add_new_style( ). - lo_style_times11->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_times11->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_times11->font->size = 11. - lv_style_times11_guid = lo_style_times11->get_guid( ). - - lo_style_cambria8red = lo_excel->add_new_style( ). - lo_style_cambria8red->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_cambria8red->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_cambria8red->font->size = 8. - lo_style_cambria8red->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_cambria8red_guid = lo_style_cambria8red->get_guid( ). - - lo_excel->set_default_style( lv_style_arial20_guid ). " Default for all new worksheets - -* 1st sheet - do not change anything --> defaultstyle from lo_excel should apply - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Style for complete document' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 2nd sheet - defaultstyle for this sheet set explicitly ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for this sheet' ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Times New Roman, fontsize 11' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because this style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'thus the default style from zcl_excel does not apply to this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 3rd sheet - defaultstyle for columns ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for 3 columns' ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'F' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'The columns B,C and F are set to Times New Roman' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 10 ip_value = 'All other cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 11 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 12 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - - lo_worksheet->set_cell( ip_column = 8 ip_row = 1 ip_value = 'Of course' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 2 ip_value = 'setting a specific style to a cell' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 3 ip_value = 'takes precedence over all defaults' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 4 ip_value = 'Here: Cambria 8 in red' ip_style = lv_style_cambria8red_guid ). - - -* Set entry into each of the first 10 columns - DO 20 TIMES. - col = sy-index. - CASE col. - WHEN 2 " B - OR 3 " C - OR 6." F - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Times 11' ). - WHEN OTHERS. - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Arial 20' ). - ENDCASE. - ENDDO. - - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - - - lo_excel->set_active_sheet_index( 1 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - REPORT zdemo_excel37. - -TYPE-POOLS: vrm. - -DATA: excel TYPE REF TO zcl_excel, - reader TYPE REF TO zif_excel_reader, - go_error TYPE REF TO cx_root, - gv_memid_gr8 TYPE text255, - gv_message TYPE string, - lv_extension TYPE string, - gv_error_program_name TYPE syrepid, - gv_error_include_name TYPE syrepid, - gv_error_line TYPE i. - -DATA: gc_save_file_name TYPE string VALUE '37- Read template and output.&'. - -SELECTION-SCREEN BEGIN OF BLOCK blx WITH FRAME. -PARAMETERS: p_upfile TYPE string LOWER CASE MEMORY ID gr8. -SELECTION-SCREEN END OF BLOCK blx. - -INCLUDE zdemo_excel_outputopt_incl. - -SELECTION-SCREEN BEGIN OF BLOCK cls WITH FRAME TITLE text-cls. -PARAMETERS: lb_read TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -PARAMETERS: lb_write TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -SELECTION-SCREEN END OF BLOCK cls. - -SELECTION-SCREEN BEGIN OF BLOCK bl_err WITH FRAME TITLE text-err. -PARAMETERS: cb_errl AS CHECKBOX DEFAULT 'X'. -SELECTION-SCREEN BEGIN OF LINE. -PARAMETERS: cb_dump AS CHECKBOX DEFAULT space. -SELECTION-SCREEN COMMENT (60) cmt_dump FOR FIELD cb_dump. -SELECTION-SCREEN END OF LINE. -SELECTION-SCREEN END OF BLOCK bl_err. - -INITIALIZATION. - PERFORM setup_listboxes. - cmt_dump = text-dum. - GET PARAMETER ID 'GR8' FIELD gv_memid_gr8. - p_upfile = gv_memid_gr8. - - IF p_upfile IS INITIAL. - p_upfile = 'c:\temp\whatever.xlsx'. - ENDIF. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile. - PERFORM f4_p_upfile CHANGING p_upfile. - - -START-OF-SELECTION. - IF cb_dump IS INITIAL. - TRY. - PERFORM read_template. - PERFORM write_template. -*** Create output - CATCH cx_root INTO go_error. - MESSAGE 'Error reading excelfile' TYPE 'I'. - gv_message = go_error->get_text( ). - IF cb_errl = ' '. - IF gv_message IS NOT INITIAL. - MESSAGE gv_message TYPE 'I'. - ENDIF. - ELSE. - go_error->get_source_position( IMPORTING program_name = gv_error_program_name - include_name = gv_error_include_name - source_line = gv_error_line ). - WRITE:/ 'Errormessage:' ,gv_message. - WRITE:/ 'Errorposition:', - AT /10 'Program:' ,gv_error_program_name, - AT /10 'include_name:' ,gv_error_include_name, - AT /10 'source_line:' ,gv_error_line. - ENDIF. - ENDTRY. - ELSE. " This will dump if an error occurs. In some cases the information given in cx_root is not helpful - this will show exactly where the problem is - PERFORM read_template. - PERFORM write_template. - ENDIF. - - - -*&---------------------------------------------------------------------* -*& Form F4_P_UPFILE -*&---------------------------------------------------------------------* -FORM f4_p_upfile CHANGING p_upfile TYPE string. - - DATA: lv_repid TYPE syrepid, - lt_fields TYPE dynpread_tabtype, - ls_field LIKE LINE OF lt_fields, - lt_files TYPE filetable, - lv_file_filter TYPE string. - - lv_repid = sy-repid. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = lv_repid - dynumb = '1000' - request = 'A' - TABLES - dynpfields = lt_fields - EXCEPTIONS - invalid_abapworkarea = 01 - invalid_dynprofield = 02 - invalid_dynproname = 03 - invalid_dynpronummer = 04 - invalid_request = 05 - no_fielddescription = 06 - undefind_error = 07. - READ TABLE lt_fields INTO ls_field WITH KEY fieldname = 'P_UPFILE'. - p_upfile = ls_field-fieldvalue. - - lv_file_filter = 'Excel Files (*.XLSX;*.XLSM)|*.XLSX;*.XLSM'. - cl_gui_frontend_services=>file_open_dialog( EXPORTING - default_filename = p_upfile - file_filter = lv_file_filter - CHANGING - file_table = lt_files - rc = sy-tabix - EXCEPTIONS - OTHERS = 1 ). - READ TABLE lt_files INDEX 1 INTO p_upfile. - -ENDFORM. " F4_P_UPFILE - - -*&---------------------------------------------------------------------* -*& Form SETUP_LISTBOXES -*&---------------------------------------------------------------------* -FORM setup_listboxes . - - DATA: lv_id TYPE vrm_id, - lt_values TYPE vrm_values, - lt_implementing_classes TYPE seo_relkeys. - - FIELD-SYMBOLS: <ls_implementing_class> LIKE LINE OF lt_implementing_classes, - <ls_value> LIKE LINE OF lt_values. - -*--------------------------------------------------------------------* -* Possible READER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_READ'. - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = 'Autodetect'(001). - <ls_value>-text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_READER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING <ls_implementing_class>. - - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = <ls_implementing_class>-clsname. - <ls_value>-text = <ls_implementing_class>-clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -*--------------------------------------------------------------------* -* Possible WRITER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_WRITE'. - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = 'Autodetect'(001). - <ls_value>-text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_WRITER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING <ls_implementing_class>. - - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = <ls_implementing_class>-clsname. - <ls_value>-text = <ls_implementing_class>-clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -ENDFORM. " SETUP_LISTBOXES - - -*&---------------------------------------------------------------------* -*& Form GET_IMPLEMENTING_CLASSDS -*&---------------------------------------------------------------------* -FORM get_implementing_classds USING iv_interface_name TYPE clike - CHANGING ct_implementing_classes TYPE seo_relkeys. - - DATA: lo_oo_interface TYPE REF TO cl_oo_interface, - lo_oo_class TYPE REF TO cl_oo_class, - lt_implementing_subclasses TYPE seo_relkeys. - - FIELD-SYMBOLS: <ls_implementing_class> LIKE LINE OF ct_implementing_classes. - - TRY. - lo_oo_interface ?= cl_oo_interface=>get_instance( iv_interface_name ). - CATCH cx_class_not_existent. - RETURN. - ENDTRY. - ct_implementing_classes = lo_oo_interface->get_implementing_classes( ). - - LOOP AT ct_implementing_classes ASSIGNING <ls_implementing_class>. - TRY. - lo_oo_class ?= cl_oo_class=>get_instance( <ls_implementing_class>-clsname ). - lt_implementing_subclasses = lo_oo_class->get_subclasses( ). - APPEND LINES OF lt_implementing_subclasses TO ct_implementing_classes. - CATCH cx_class_not_existent. - ENDTRY. - ENDLOOP. - - -ENDFORM. " GET_IMPLEMENTING_CLASSDS - - -*&---------------------------------------------------------------------* -*& Form READ_TEMPLATE -*&---------------------------------------------------------------------* -FORM read_template RAISING zcx_excel . - - CASE lb_read. - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - WHEN '.XLSM'. - CREATE OBJECT reader TYPE zcl_excel_reader_xlsm. - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - CREATE OBJECT reader TYPE (lb_read). - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - ENDCASE. - -ENDFORM. " READ_TEMPLATE - - -*&---------------------------------------------------------------------* -*& Form WRITE_TEMPLATE -*&---------------------------------------------------------------------* -FORM write_template RAISING zcx_excel. - - CASE lb_write. - - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - REPLACE '&' IN gc_save_file_name WITH 'xlsx'. " Pass extension for standard writer - lcl_output=>output( excel ). - - WHEN '.XLSM'. - REPLACE '&' IN gc_save_file_name WITH 'xlsm'. " Pass extension for macro-writer - lcl_output=>output( cl_excel = excel - iv_writerclass_name = 'ZCL_EXCEL_WRITER_XLSM' ). - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - lcl_output=>output( cl_excel = excel - iv_writerclass_name = lb_write ). - ENDCASE. - -ENDFORM. " WRITE_TEMPLATE - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_drawing TYPE REF TO zcl_excel_drawing. - -TYPES: BEGIN OF gty_icon, -* name TYPE icon_name, "Fix #228 - name TYPE iconname, "Fix #228 - objid TYPE w3objid, - END OF gty_icon, - gtyt_icon TYPE STANDARD TABLE OF gty_icon WITH NON-UNIQUE DEFAULT KEY. - -DATA: lt_icon TYPE gtyt_icon, - lv_row TYPE sytabix, - ls_wwwdatatab TYPE wwwdatatab, - lt_mimedata TYPE STANDARD TABLE OF w3mime WITH NON-UNIQUE DEFAULT KEY, - lv_xstring TYPE xstring. - -FIELD-SYMBOLS: <icon> LIKE LINE OF lt_icon, - <mimedata> LIKE LINE OF lt_mimedata. - -CONSTANTS: gc_save_file_name TYPE string VALUE '38_SAP-Icons.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -TABLES: icon. -SELECT-OPTIONS: s_icon FOR icon-name DEFAULT 'ICON_LED_*' OPTION CP. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Icons' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - lo_column_dimension->set_auto_size( 'X' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( 'X' ). - -* Get all icons - SELECT name - INTO TABLE lt_icon - FROM icon - WHERE name IN s_icon - ORDER BY name. - LOOP AT lt_icon ASSIGNING <icon>. - - lv_row = sy-tabix. -*--------------------------------------------------------------------* -* Set name of icon -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'A' - ip_value = <icon>-name ). -*--------------------------------------------------------------------* -* Check whether the mime-repository holds some icondata for us -*--------------------------------------------------------------------* - -* Get key - SELECT SINGLE objid - INTO <icon>-objid - FROM wwwdata - WHERE text = <icon>-name. - CHECK sy-subrc = 0. " :o( - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'B' - ip_value = <icon>-objid ). - -* Load mimedata - CLEAR lt_mimedata. - CLEAR ls_wwwdatatab. - ls_wwwdatatab-relid = 'MI' . - ls_wwwdatatab-objid = <icon>-objid. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_wwwdatatab - TABLES - mime = lt_mimedata - EXCEPTIONS - wrong_object_type = 1 - import_error = 2 - OTHERS = 3. - CHECK sy-subrc = 0. " :o( - - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = lv_row - ip_from_col = 'C' ). - CLEAR lv_xstring. - LOOP AT lt_mimedata ASSIGNING <mimedata>. - CONCATENATE lv_xstring <mimedata>-line INTO lv_xstring IN BYTE MODE. - ENDLOOP. - - lo_drawing->set_media( ip_media = lv_xstring - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = 16 - ip_height = 14 ). - lo_worksheet->add_drawing( lo_drawing ). - - ENDLOOP. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel39. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - -DATA lv_value TYPE i. - -DATA: ls_io TYPE skwf_io. - -DATA: ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location. - -DATA: lo_bar1 TYPE REF TO zcl_excel_graph_bars, - lo_bar1_stacked TYPE REF TO zcl_excel_graph_bars, - lo_bar2 TYPE REF TO zcl_excel_graph_bars, - lo_pie TYPE REF TO zcl_excel_graph_pie, - lo_line TYPE REF TO zcl_excel_graph_line. - -CONSTANTS: gc_save_file_name TYPE string VALUE '39_Charts.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Create a pie chart and series - CREATE OBJECT lo_pie. - - CALL METHOD lo_pie->create_serie - EXPORTING - ip_order = 0 - ip_sheet = 'Values' - ip_lbl_from_col = 'B' - ip_lbl_from_row = '1' - ip_lbl_to_col = 'B' - ip_lbl_to_row = '3' - ip_ref_from_col = 'A' - ip_ref_from_row = '1' - ip_ref_to_col = 'A' - ip_ref_to_row = '3' - ip_sername = 'My serie 1'. - - " Set style - lo_pie->set_style( zcl_excel_graph=>c_style_15 ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar1. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set style - lo_bar1->set_style( zcl_excel_graph=>c_style_default ). - - " Set label to none - lo_bar1->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - -* Same barchart - but this time stacked - CREATE OBJECT lo_bar1_stacked. - - CALL METHOD lo_bar1_stacked->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1_stacked->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1_stacked->create_ax - EXPORTING - ip_type = zcl_excel_graph_bars=>c_catax . - - CALL METHOD lo_bar1_stacked->create_ax - EXPORTING - ip_type = zcl_excel_graph_bars=>c_valax. - - " Set style - lo_bar1_stacked->set_style( zcl_excel_graph=>c_style_default ). - - " Set label to none - lo_bar1_stacked->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - - " Make it stacked - lo_bar1_stacked->ns_groupingval = zcl_excel_graph_bars=>c_groupingval_stacked. - - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar2. - - CALL METHOD lo_bar2->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_yes - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set layout - lo_bar2->set_show_legend_key( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_values( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_cat_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_ser_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_percent( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_varycolor( zcl_excel_graph_bars=>c_show_true ). - - " Create a line chart, series and axes - CREATE OBJECT lo_line. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 0 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 1 - ip_symbol = zcl_excel_graph_line=>c_symbol_none - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 2 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$F$1:$F$3' - ip_ref = 'Values!$E$1:$E$3' - ip_sername = 'My serie 3'. - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - - - - - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet (Pie sheet) - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'PieChart' ). - - " Create global drawing, set type as pie chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART PIE' ). - lo_drawing->graph = lo_pie. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_pie. - - "Set chart position (anchor 2 cells) - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart1 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart1' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 2 SERIES' ). - lo_drawing->graph = lo_bar1. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 11. - ls_lower-row = 22. - ls_lower-col = 21. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'Stacked CHART BARS WITH 2 SER.' ). - lo_drawing->graph = lo_bar1_stacked. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 1. - ls_lower-row = 22. - ls_lower-col = 10. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart2 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart2' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 1 SERIE' ). - lo_drawing->graph = lo_bar2. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " LineChart sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'LineChart' ). - - " Create global drawing, set type as line chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART LINES' ). - lo_drawing->graph = lo_line. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_line. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " Values sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for chart - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = lv_value ). - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = lv_value ). - lv_value = -1. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'One (Minus)' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = lv_value ). - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'F' ip_row = 3 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 1 ip_value = 'Three' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL4 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - - lv_tabcolor TYPE zexcel_s_tabcolor, - - ls_header TYPE zexcel_s_worksheet_head_foot, - ls_footer TYPE zexcel_s_worksheet_head_foot. - -CONSTANTS: gc_save_file_name TYPE string VALUE '04_Sheets.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). -* Set color to tab with sheetname - Red - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = 'FF' - ip_green = '00' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to second sheet' ip_hyperlink = lo_hyperlink ). - - " Page printing settings - lo_worksheet->sheet_setup->set_page_margins( ip_header = '1' ip_footer = '1' ip_unit = 'cm' ). - lo_worksheet->sheet_setup->black_and_white = 'X'. - lo_worksheet->sheet_setup->fit_to_page = 'X'. " you should turn this on to activate fit_to_height and fit_to_width - lo_worksheet->sheet_setup->fit_to_height = 0. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->fit_to_width = 2. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lo_worksheet->sheet_setup->page_order = zcl_excel_sheet_setup=>c_ord_downthenover. - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->scale = 80. " used only if ip_fit_to_page = SPACE - - " Header and Footer - ls_header-right_value = 'print date &D'. - ls_header-right_font-size = 8. - ls_header-right_font-name = zcl_excel_style_font=>c_name_arial. - - ls_footer-left_value = '&Z&F'. "Path / Filename - ls_footer-left_font = ls_header-right_font. - ls_footer-right_value = 'page &P of &N'. "page x of y - ls_footer-right_font = ls_header-right_font. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). -* Set color to tab with sheetname - Green - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to first sheet' ip_hyperlink = lo_hyperlink ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Sheet3 is hidden' ). - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). -* Set color to tab with sheetname - Blue - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = '00' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). -* Set color to tab with sheetname - other color - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Cell B3 has value 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 0 ). - lo_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_hidezero. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_row TYPE zexcel_cell_row, - lv_col TYPE i, - lv_row_char TYPE char10, - lv_value TYPE string, - ls_fontcolor TYPE zexcel_style_color_argb. - -CONSTANTS: gc_save_file_name TYPE string VALUE '40_Printsettings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Printsettings' ). - -*--------------------------------------------------------------------* -* Prepare sheet with trivial data -* - first 4 columns will have fontocolor set -* - first 3 rows will have fontcolor set -* These marked cells will be used for repeatable rows/columns on printpages -*--------------------------------------------------------------------* - DO 100 TIMES. " Rows - - lv_row = sy-index . - WRITE lv_row TO lv_row_char. - - DO 20 TIMES. - - lv_col = sy-index - 1. - CONCATENATE sy-abcde+lv_col(1) lv_row_char INTO lv_value. - lv_col = sy-index. - lo_worksheet->set_cell( ip_row = lv_row - ip_column = lv_col - ip_value = lv_value ). - - TRY. - IF lv_row <= 3. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid - ip_fill_fgcolor_rgb = zcl_excel_style_color=>c_yellow ). - ENDIF. - IF lv_col <= 4. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_font_color_rgb = zcl_excel_style_color=>c_red ). - ENDIF. - CATCH zcx_excel . - ENDTRY. - - ENDDO. - - - - ENDDO. - - -*--------------------------------------------------------------------* -* Printsettings -*--------------------------------------------------------------------* - TRY. - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = 'A' - iv_columns_to = 'D' ). - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = 1 - iv_rows_to = 3 ). - CATCH zcx_excel . - ENDTRY. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL5 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel5. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset TYPE zexcel_conditional_iconset. - - - -CONSTANTS: gc_save_file_name TYPE string VALUE '05_Conditional.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '33'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '66'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_false. - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 500 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - -* ls_key-relid = 'MI'. -* ls_key-objid = 'WBLOGO'. -* lo_drawing->set_media_www( ip_key = ls_key -* ip_width = 140 -* ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED2 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched2. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lv_style_title_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL6 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel6. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_row TYPE syindex, - lv_formula TYPE string. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '06_Formulas.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -*--------------------------------------------------------------------* -* Get some testdata -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = -10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - -*--------------------------------------------------------------------* -* Demonstrate using formulas -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_formula = 'SUM(C4:C8)' ). - - -*--------------------------------------------------------------------* -* Demonstrate standard EXCEL-behaviour when copying a formula to another cell -* by calculating the resulting formula to put into another cell -*--------------------------------------------------------------------* - DO 10 TIMES. - - lv_formula = zcl_excel_common=>shift_formula( iv_reference_formula = 'SUM(C4:C8)' - iv_shift_cols = 0 " Offset in Columns - here we copy in same column --> 0 - iv_shift_rows = sy-index ). " Offset in Row - here we copy downward --> sy-index - lv_row = 9 + sy-index. " Absolute row = sy-index rows below reference cell - lo_worksheet->set_cell( ip_row = lv_row ip_column = 'C' ip_formula = lv_formula ). - - ENDDO. - -*--------------------------------------------------------------------* -*** Create output -*--------------------------------------------------------------------* - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL7 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel7. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset3 TYPE zexcel_conditional_iconset, - ls_iconset4 TYPE zexcel_conditional_iconset, - ls_iconset5 TYPE zexcel_conditional_iconset, - ls_databar TYPE zexcel_conditional_databar, - ls_colorscale2 TYPE zexcel_conditional_colorscale, - ls_colorscale3 TYPE zexcel_conditional_colorscale. - -CONSTANTS: gc_save_file_name TYPE string VALUE '07_ConditionalAll.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - ls_iconset3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo1_value = '0'. - ls_iconset3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo2_value = '33'. - ls_iconset3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo3_value = '66'. - ls_iconset3-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset4-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo1_value = '0'. - ls_iconset4-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo2_value = '25'. - ls_iconset4-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo3_value = '50'. - ls_iconset4-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo4_value = '75'. - ls_iconset4-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset5-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo1_value = '0'. - ls_iconset5-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo2_value = '20'. - ls_iconset5-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo3_value = '40'. - ls_iconset5-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo4_value = '60'. - ls_iconset5-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo5_value = '80'. - ls_iconset5-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_databar-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_databar-cfvo1_value = '0'. - ls_databar-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_databar-cfvo2_value = '0'. - ls_databar-colorrgb = 'FF638EC6'. - - ls_colorscale2-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale2-cfvo1_value = '0'. - ls_colorscale2-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale2-cfvo2_value = '50'. - ls_colorscale2-colorrgb1 = 'FFF8696B'. - ls_colorscale2-colorrgb2 = 'FF63BE7B'. - - ls_colorscale3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale3-cfvo1_value = '0'. - ls_colorscale3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale3-cfvo2_value = '50'. - ls_colorscale3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_colorscale3-cfvo3_value = '0'. - ls_colorscale3-colorrgb1 = 'FFF8696B'. - ls_colorscale3-colorrgb2 = 'FFFFEB84'. - ls_colorscale3-colorrgb3 = 'FF63BE7B'. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -* ICONSET - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrows. - - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 5 - ip_stop_column = 'B' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'C_ICONSET_3ARROWS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 5 - ip_stop_column = 'C' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'C_ICONSET_3ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = 50 ). - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3flags. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 5 - ip_stop_column = 'D' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'C_ICONSET_3FLAGS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 5 - ip_stop_column = 'E' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'C_ICONSET_3TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 5 - ip_stop_column = 'F' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'C_ICONSET_3TRAFFICLIGHTS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3signs. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'G' - ip_start_row = 5 - ip_stop_column = 'G' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = 'C_ICONSET_3SIGNS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'G' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'G' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'G' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'G' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'G' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'H' - ip_start_row = 5 - ip_stop_column = 'H' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'H' ip_value = 'C_ICONSET_3SYMBOLS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'H' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'H' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'H' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'H' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'H' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'I' - ip_start_row = 5 - ip_stop_column = 'I' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'I' ip_value = 'C_ICONSET_3SYMBOLS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'I' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'I' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'I' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'I' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'I' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrows. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 12 - ip_stop_column = 'B' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = 'C_ICONSET_4ARROWS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 12 - ip_stop_column = 'C' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'C' ip_value = 'C_ICONSET_4ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4redtoblack. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 12 - ip_stop_column = 'D' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'D' ip_value = 'C_ICONSET_4REDTOBLACK' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4rating. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 12 - ip_stop_column = 'E' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'E' ip_value = 'C_ICONSET_4RATING' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4trafficlights. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 12 - ip_stop_column = 'F' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'F' ip_value = 'C_ICONSET_4TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 19 - ip_stop_column = 'B' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'B' ip_value = 'C_ICONSET_5ARROWS' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 19 - ip_stop_column = 'C' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'C' ip_value = 'C_ICONSET_5ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5rating. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 19 - ip_stop_column = 'D' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'D' ip_value = 'C_ICONSET_5RATING' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5quarters. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 19 - ip_stop_column = 'E' - ip_stop_row = 23 ). - -* DATABAR - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'B' ip_value = 'DATABAR' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_databar. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_databar = ls_databar. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 26 - ip_stop_column = 'B' - ip_stop_row = 30 ). - -* COLORSCALE - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'C' ip_value = 'COLORSCALE 2 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 26 - ip_stop_column = 'C' - ip_stop_row = 30 ). - - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'D' ip_value = 'COLORSCALE 3 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 26 - ip_stop_column = 'D' - ip_stop_row = 30 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL8 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel8. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range. - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '08_Range.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Sheet1'. - lo_worksheet->set_title( lv_title ). - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'range'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - " Define another Range with a name longer than 40 characters that - " tests the fix of issue #168 ranges namescan be only up to 20 chars - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'A_range_with_a_name_that_is_longer_than_20_characters'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Range Value 1' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Range Value 2' ). - - " issue #163 - " Define another Range with sheet visibility - lo_range = lo_worksheet->add_new_range( ). - lo_range->name = 'A_range_with_sheet_visibility'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'Range Value 3' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 'Range Value 4' ). - " issue #163 - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL9 -*& -*&---------------------------------------------------------------------* -*& abap2xlsx Demo: Data validations -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel9. - -CONSTANTS: c_fruits TYPE string VALUE 'Fruits', - c_vegetables TYPE string VALUE 'Vegetables', - c_meat TYPE string VALUE 'Meat', - c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: row TYPE zexcel_cell_row. - - -DATA: lv_title TYPE zexcel_sheet_title. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '09_DataValidation.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_sbook TYPE flag. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = c_meat ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Pork' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Beef' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Chicken' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'Turkey' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_meat. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'B' - ip_start_row = 4 - ip_stop_column = 'B' - ip_stop_row = 7 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fruits. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = c_vegetables ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Cucumber' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Sweet pepper ' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Lettuce' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_vegetables. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 6 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Table with Data Validation'. - lo_worksheet->set_title( lv_title ). - - " Maximum Text length - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'Validate Maximum Text length of <= 10 in Cell A2:' ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'abcdefghij' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_textlength. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_lessthanorequal. - lo_data_validation->formula1 = 10. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'A'. - - " Integer Value between 1 and 10 - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Validate Integer Value between 1 and 10 in Cell A5:' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = '5' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_whole. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_between. - lo_data_validation->formula1 = 1. - lo_data_validation->formula2 = 10. - lo_data_validation->prompttitle = 'Range'. - lo_data_validation->prompt = 'Enter a value between 1 and 10'. - lo_data_validation->errortitle = 'Error'. - lo_data_validation->error = 'You have entered a wrong value. Please use only numbers between 1 and 10.'. - lo_data_validation->cell_row = 5. - lo_data_validation->cell_column = 'A'. - - " Evaluation by Formula from issue #161 - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Validate if B8 contains a "-":' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Text' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = '-' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lo_data_validation->formula1 = '"IF(B8<>"""";INDIRECT(LEFT(B8;SEARCH(""-"";B8;1)));EMPTY)"'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'A'. - - " There was an error when data validation was combined with cell merges this should test that: - lo_worksheet->set_cell( ip_row = 10 ip_column = 'A' ip_value = 'Demo for data validation with a dropdown list' ). - lo_worksheet->set_merge( ip_row = 10 ip_column_start = 'A' ip_column_end = 'F' ). - - " Headlines - lo_worksheet->set_cell( ip_row = 11 ip_column = 'A' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = c_vegetables ). - - row = 12. - WHILE row < 20. " Starting with 14500 the data validation is dropped 14000 are still ok - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fruits. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'A'. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = 'Select a value' ). - " 2nd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_vegetables. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'B'. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = 'Select a value' ). - " 3rd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_meat. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = 'Select a value' ). - " 4th - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'D'. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = 'Select a value' ). - " Increment row - row = row + 1. - ENDWHILE. - - IF p_sbook = abap_true. - DATA: bookings type TABLE OF sbook. - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'SBOOK'. - lo_worksheet->set_title( lv_title ). - - SELECT * from sbook INTO TABLE bookings UP TO 4000 ROWS. - - lo_worksheet->bind_table( - EXPORTING - ip_table = bookings -* it_field_catalog = " Table binding field catalog -* is_table_settings = " Excel table binding settings -* IMPORTING -* es_table_settings = " Excel table binding settings - ). - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_reader TYPE REF TO zif_excel_reader, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lt_files TYPE filetable, - ls_file TYPE file_table, - lv_rc TYPE i, - lv_value TYPE zexcel_cell_value. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'TechEd01.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - -******************************* -* abap2xlsx read XLSX * -******************************* - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_2007. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_worksheet->get_cell( EXPORTING ip_column = 'C' - ip_row = 10 - IMPORTING ep_value = lv_value ). - - WRITE: 'abap2xlsx total score is ', lv_value. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched1. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo01' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_EXCEL_OUTPUTOPT_INCL -*&---------------------------------------------------------------------* -CLASS lcl_output DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: - output IMPORTING cl_excel TYPE REF TO zcl_excel - iv_writerclass_name TYPE clike OPTIONAL, - f4_path RETURNING VALUE(selected_folder) TYPE string, - parametertexts. - - PRIVATE SECTION. - METHODS: - download_frontend, - download_backend, - display_online, - send_email. - - DATA: xdata TYPE xstring, " Will be used for sending as email - t_rawdata TYPE solix_tab, " Will be used for downloading or open directly - bytecount TYPE i. " Will be used for downloading or open directly -ENDCLASS. "lcl_output DEFINITION - - -SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE txt_bl1. -PARAMETERS: rb_down RADIOBUTTON GROUP rb1 USER-COMMAND space. - -PARAMETERS: rb_back RADIOBUTTON GROUP rb1. - -PARAMETERS: rb_show RADIOBUTTON GROUP rb1 DEFAULT 'X' . - -PARAMETERS: rb_send RADIOBUTTON GROUP rb1. - -PARAMETERS: p_path TYPE string LOWER CASE MODIF ID pat. -PARAMETERS: p_email TYPE string LOWER CASE MODIF ID ema OBLIGATORY DEFAULT 'insert_your_emailadress@here'. -PARAMETERS: p_backfn TYPE text40 NO-DISPLAY. -SELECTION-SCREEN END OF BLOCK bl1. - - -AT SELECTION-SCREEN OUTPUT. - LOOP AT SCREEN. - - IF rb_down IS INITIAL AND screen-group1 = 'PAT'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - IF rb_send IS INITIAL AND screen-group1 = 'EMA'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - MODIFY SCREEN. - - ENDLOOP. - -INITIALIZATION. - IF sy-batch IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = p_path ). - cl_gui_cfw=>flush( ). - ENDIF. - lcl_output=>parametertexts( ). " If started in language w/o textelements translated set defaults - sy-title = gc_save_file_name. - txt_bl1 = 'Output options'(bl1). - p_backfn = gc_save_file_name. " Use as default if nothing else is supplied by submit - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - p_path = lcl_output=>f4_path( ). - - -*----------------------------------------------------------------------* -* CLASS lcl_output IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_output IMPLEMENTATION. - METHOD output. - - DATA: cl_output TYPE REF TO lcl_output, - cl_writer TYPE REF TO zif_excel_writer. - - IF iv_writerclass_name IS INITIAL. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. - ELSE. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE (iv_writerclass_name). - ENDIF. - cl_output->xdata = cl_writer->write_file( cl_excel ). - -* After 6.40 via cl_bcs_convert - cl_output->t_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstring = cl_output->xdata ). - cl_output->bytecount = xstrlen( cl_output->xdata ). - -* before 6.40 -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = cl_output->xdata -* IMPORTING -* output_length = cl_output->bytecount -* TABLES -* binary_tab = cl_output->t_rawdata. - - CASE 'X'. - WHEN rb_down. - IF sy-batch IS INITIAL. - cl_output->download_frontend( ). - ELSE. - MESSAGE e001(00) WITH 'Frontenddownload impossible in background processing'. - ENDIF. - - WHEN rb_back. - cl_output->download_backend( ). - - WHEN rb_show. - IF sy-batch IS INITIAL. - cl_output->display_online( ). - ELSE. - MESSAGE e001(00) WITH 'Online display absurd in background processing'. - ENDIF. - - WHEN rb_send. - cl_output->send_email( ). - - ENDCASE. - ENDMETHOD. "output - - METHOD f4_path. - DATA: new_path TYPE string, - repid TYPE syrepid, - dynnr TYPE sydynnr, - lt_dynpfields TYPE TABLE OF dynpread, - ls_dynpfields LIKE LINE OF lt_dynpfields. - -* Get current value - dynnr = sy-dynnr. - repid = sy-repid. - ls_dynpfields-fieldname = 'P_PATH'. - APPEND ls_dynpfields TO lt_dynpfields. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = repid - dynumb = dynnr - TABLES - dynpfields = lt_dynpfields - EXCEPTIONS - invalid_abapworkarea = 1 - invalid_dynprofield = 2 - invalid_dynproname = 3 - invalid_dynpronummer = 4 - invalid_request = 5 - no_fielddescription = 6 - invalid_parameter = 7 - undefind_error = 8 - double_conversion = 9 - stepl_not_found = 10 - OTHERS = 11. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - EXIT. - ENDIF. - - READ TABLE lt_dynpfields INTO ls_dynpfields INDEX 1. - - new_path = ls_dynpfields-fieldvalue. - selected_folder = new_path. - - cl_gui_frontend_services=>directory_browse( - EXPORTING - window_title = 'Select path to download EXCEL-file' - initial_folder = new_path - CHANGING - selected_folder = new_path - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4 - ). - cl_gui_cfw=>flush( ). - CHECK new_path IS NOT INITIAL. - selected_folder = new_path. - - ENDMETHOD. "f4_path - - METHOD parametertexts. -* If started in language w/o textelements translated set defaults -* Furthermore I don't have to change the selectiontexts of all demoreports. - DEFINE default_parametertext. - if %_&1_%_app_%-text = '&1' or - %_&1_%_app_%-text is initial. - %_&1_%_app_%-text = &2. - endif. - END-OF-DEFINITION. - - default_parametertext: rb_down 'Save to frontend', - rb_back 'Save to backend', - rb_show 'Direct display', - rb_send 'Send via email', - - p_path 'Frontend-path to download to', - p_email 'Email to send xlsx to'. - - ENDMETHOD. "parametertexts - - METHOD: download_frontend. - DATA: filename TYPE string. -* I don't like p_path here - but for this include it's ok - filename = p_path. -* Add trailing "\" or "/" - IF filename CA '/'. - REPLACE REGEX '([^/])\s*$' IN filename WITH '$1/' . - ELSE. - REPLACE REGEX '([^\\])\s*$' IN filename WITH '$1\\'. - ENDIF. - - CONCATENATE filename gc_save_file_name INTO filename. -* Get trailing blank - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = bytecount - filename = filename - filetype = 'BIN' - CHANGING data_tab = t_rawdata ). - ENDMETHOD. "download_frontend - - METHOD download_backend. - DATA: bytes_remain TYPE i. - FIELD-SYMBOLS: <rawdata> LIKE LINE OF t_rawdata. - - OPEN DATASET p_backfn FOR OUTPUT IN BINARY MODE. - CHECK sy-subrc = 0. - - bytes_remain = bytecount. - - LOOP AT t_rawdata ASSIGNING <rawdata>. - - AT LAST. - CHECK bytes_remain >= 0. - TRANSFER <rawdata> TO p_backfn LENGTH bytes_remain. - EXIT. - ENDAT. - - TRANSFER <rawdata> TO p_backfn. - SUBTRACT 255 FROM bytes_remain. " Solix has length 255 - - ENDLOOP. - - CLOSE DATASET p_backfn. - - - - - IF sy-repid <> sy-cprog AND sy-cprog IS NOT INITIAL. " no need to display anything if download was selected and report was called for demo purposes - LEAVE PROGRAM. - ELSE. - MESSAGE 'Data transferred to default backend directory' TYPE 'S'. - ENDIF. - ENDMETHOD. "download_backend - - METHOD display_online. - DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control, "OIContainerCtrl - cl_document TYPE REF TO i_oi_document_proxy. "Office Dokument - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = cl_gui_container=>screen0 - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - WRITE: '.'. " To create an output. That way screen0 will exist - ENDMETHOD. "display_online - - METHOD send_email. -* Needed to send emails - DATA: bcs_exception TYPE REF TO cx_bcs, - errortext TYPE string, - cl_send_request TYPE REF TO cl_bcs, - cl_document TYPE REF TO cl_document_bcs, - cl_recipient TYPE REF TO if_recipient_bcs, - cl_sender TYPE REF TO cl_cam_address_bcs, - t_attachment_header TYPE soli_tab, - wa_attachment_header LIKE LINE OF t_attachment_header, - attachment_subject TYPE sood-objdes, - - sood_bytecount TYPE sood-objlen, - mail_title TYPE so_obj_des, - t_mailtext TYPE soli_tab, - wa_mailtext LIKE LINE OF t_mailtext, - send_to TYPE adr6-smtp_addr, - sent TYPE os_boolean. - - - mail_title = 'Mail title'. - wa_mailtext = 'Mailtext'. - APPEND wa_mailtext TO t_mailtext. - - TRY. -* Create send request - cl_send_request = cl_bcs=>create_persistent( ). -* Create new document with mailtitle and mailtextg - cl_document = cl_document_bcs=>create_document( i_type = 'RAW' "#EC NOTEXT - i_text = t_mailtext - i_subject = mail_title ). -* Add attachment to document -* since the new excelfiles have an 4-character extension .xlsx but the attachment-type only holds 3 charactes .xls, -* we have to specify the real filename via attachment header -* Use attachment_type xls to have SAP display attachment with the excel-icon - attachment_subject = gc_save_file_name. - CONCATENATE '&SO_FILENAME=' attachment_subject INTO wa_attachment_header. - APPEND wa_attachment_header TO t_attachment_header. -* Attachment - sood_bytecount = bytecount. " next method expects sood_bytecount instead of any positive integer *sigh* - cl_document->add_attachment( i_attachment_type = 'XLS' "#EC NOTEXT - i_attachment_subject = attachment_subject - i_attachment_size = sood_bytecount - i_att_content_hex = t_rawdata - i_attachment_header = t_attachment_header ). - -* add document to send request - cl_send_request->set_document( cl_document ). - -* set sender in case if no own email is availabe -* cl_sender = cl_cam_address_bcs=>create_internet_address( 'sender@sender.sender' ). -* cl_send_request->set_sender( cl_sender ). - -* add recipient(s) - here only 1 will be needed - send_to = p_email. - IF send_to IS INITIAL. - send_to = 'no_email@no_email.no_email'. " Place into SOST in any case for demonstration purposes - ENDIF. - cl_recipient = cl_cam_address_bcs=>create_internet_address( send_to ). - cl_send_request->add_recipient( cl_recipient ). - -* Und abschicken - sent = cl_send_request->send( i_with_error_screen = 'X' ). - - COMMIT WORK. - - IF sent IS INITIAL. - MESSAGE i500(sbcoms) WITH p_email. - ELSE. - MESSAGE s022(so). - MESSAGE 'Document ready to be sent - Check SOST or SCOT' TYPE 'I'. - ENDIF. - - CATCH cx_bcs INTO bcs_exception. - errortext = bcs_exception->if_message~get_text( ). - MESSAGE errortext TYPE 'I'. - - ENDTRY. - ENDMETHOD. "send_email - - -ENDCLASS. "lcl_output IMPLEMENTATION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?sap.transform simple?> -<tt:transform xmlns:tt="http://www.sap.com/transformation-templates"> - - <tt:root name="ROOT"/> - <tt:root name="SHARED_STRINGS"/> - - <tt:template> - <sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> - <tt:attribute name="count" value-ref="ROOT.COUNT"/> - <tt:attribute name="uniqueCount" value-ref="ROOT.UNIQUE_COUNT"/> - <tt:loop ref="SHARED_STRINGS"> - <si> - <t> - <tt:value ref="STRING_VALUE"/> - </t> - </si> - </tt:loop> - </sst> - </tt:template> - -</tt:transform> - - - <?sap.transform simple?> -<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" - xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> - - <tt:root name="WORKSHEET"/> - <tt:root name="CELLS"/> - <tt:root name="WRITER"/> - <tt:variable name="owriter" ref-type="ZCL_EXCEL_WRITER_HUGE_FILE"/> - - <tt:template> - <tt:assign ref="WRITER" to-var="owriter"/> - <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" - xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" - mc:Ignorable="x14ac"> - <tt:namespace name="r" /> - <tt:namespace name="mc" /> - <tt:namespace name="x14ac" /> - <sheetPr> - <tt:cond check="not-initial(WORKSHEET.TABCOLOR)"> - <tabColor> - <tt:attribute name="rgb" value-ref="WORKSHEET.TABCOLOR" /> - </tabColor> - </tt:cond> - <outlinePr> - <tt:attribute name="summaryRight" value-ref="WORKSHEET.SUMMARYRIGHT" /> - <tt:attribute name="summaryBelow" value-ref="WORKSHEET.SUMMARYBELOW" /> - </outlinePr> - </sheetPr> - <tt:cond check="not-initial(WORKSHEET.FITTOPAGE)"> - <pageSetupPr> - <tt:attribute name="fitToPage" value-ref="WORKSHEET.FITTOPAGE" /> - </pageSetupPr> - </tt:cond> - <dimension> - <tt:attribute name="ref" value-ref="WORKSHEET.DIMENSION" /> - </dimension> - <sheetViews> - <sheetView> - <tt:attribute name="showZeros" value-ref="WORKSHEET.SHOWZEROS" /> - <tt:attribute name="tabSelected" value-ref="WORKSHEET.TABSELECTED" /> - <tt:attribute name="zoomScale" value-ref="WORKSHEET.ZOOMSCALE" /> - <tt:cond check="WORKSHEET.ZOOMSCALENORMAL != 0"> - <tt:attribute name="zoomScaleNormal" value-ref="WORKSHEET.ZOOMSCALENORMAL" /> - </tt:cond> - <tt:cond check="WORKSHEET.ZOOMSCALEPAGEVIEW != 0"> - <tt:attribute name="zoomScalePageLayoutView" value-ref="WORKSHEET.ZOOMSCALEPAGEVIEW" /> - </tt:cond> - <tt:attribute name="zoomScaleSheetLayoutView" value-ref="WORKSHEET.ZOOMSCALESHEETVIEW" /> - <tt:attribute name="workbookViewId" value-ref="WORKSHEET.WORKBOOKVIEWID" /> - <tt:attribute name="showGridLines" value-ref="WORKSHEET.SHOWGRIDLINES" /> - <tt:attribute name="showRowColHeaders" value-ref="WORKSHEET.SHOWROWCOLHEADERS" /> - <tt:cond check="WORKSHEET.YSPLIT != 0 or WORKSHEET.XSPLIT != 0"> - <pane activePane="bottomRight" state="frozen"> - <tt:cond check="WORKSHEET.YSPLIT != 0"> - <tt:attribute name="ySplit" value-ref="WORKSHEET.YSPLIT" /> - </tt:cond> - <tt:cond check="WORKSHEET.XSPLIT != 0"> - <tt:attribute name="xSplit" value-ref="WORKSHEET.XSPLIT" /> - </tt:cond> - <tt:attribute name="topLeftCell" value-ref="WORKSHEET.TOPLEFTCELL" /> - </pane> - </tt:cond> - <selection> - <tt:attribute name="activeCell" value-ref="WORKSHEET.ACTIVECELL" /> - <tt:attribute name="sqref" value-ref="WORKSHEET.ACTIVECELL" /> - </selection> - </sheetView> - </sheetViews> - <sheetFormatPr> - <tt:attribute name="defaultRowHeight" value-ref="WORKSHEET.DEFAULTROWHEIGHT" /> - <tt:cond check="WORKSHEET.DEFAULTCOLWIDTH != 0"> - <tt:attribute name="defaultColWidth" value-ref="WORKSHEET.DEFAULTCOLWIDTH" /> - </tt:cond> - <tt:attribute name="x14ac:outlineLevelRow" value-ref="WORKSHEET.OUTLINELEVELROW" /> - <tt:attribute name="x14ac:outlineLevelCol" value-ref="WORKSHEET.OUTLINELEVELCOL" /> - </sheetFormatPr> - <cols> - <tt:loop ref="WORKSHEET.COLS"> - <col> - <tt:attribute name="min" value-ref="MIN" /> - <tt:attribute name="max" value-ref="MAX" /> - <tt:attribute name="width" value-ref="WIDTH" /> - <tt:cond check="not-initial(HIDDEN)"> - <tt:attribute name="hidden" value-ref="HIDDEN" /> - </tt:cond> - <tt:cond check="not-initial(CUSTOMWIDTH)"> - <tt:attribute name="customWidth" value-ref="CUSTOMWIDTH" /> - </tt:cond> - <tt:cond check="not-initial(BESTFIT)"> - <tt:attribute name="bestFit" value-ref="BESTFIT" /> - </tt:cond> - <tt:cond check="not-initial(COLLAPSED)"> - <tt:attribute name="collapsed" value-ref="COLLAPSED" /> - </tt:cond> - <tt:cond check="OUTLINELEVEL != 0"> - <tt:attribute name="outlineLevel" value-ref="OUTLINELEVEL" /> - </tt:cond> - <tt:cond check="STYLE >= 0"> - <tt:attribute name="style" value-ref="STYLE" /> - </tt:cond> - </col> - </tt:loop> - </cols> - <sheetData> - <tt:loop ref="WORKSHEET.ROWS"> - <row> - <tt:attribute name="r" value-ref="ROW" /> - <tt:attribute name="spans" value-ref="SPANS" /> - <tt:cond check="not-initial(HIDDEN)"> - <tt:attribute name="hidden" value-ref="HIDDEN" /> - </tt:cond> - <tt:cond check="not-initial(CUSTOMHEIGHT)"> - <tt:attribute name="customHeight" value-ref="CUSTOMHIGHT" /> - <tt:attribute name="ht" value-ref="HIGHT" /> - </tt:cond> - <tt:cond check="not-initial(COLLAPSED)"> - <tt:attribute name="collapsed" value-ref="COLLAPSED" /> - </tt:cond> - <tt:cond check="OUTLINELEVEL != 0"> - <tt:attribute name="outlineLevel" value-ref="OUTLINELEVEL" /> - </tt:cond> - <tt:cond check="STYLE != 0"> - <tt:attribute name="customFormat" value-ref="CUSTOMFORMAT" /> - <tt:attribute name="s" value-ref="STYLE" /> - </tt:cond> - <!-- Aufruf get_cells --> - <tt:call-method s-name="GET_CELLS" var="owriter"> - <tt:with-parameter name="I_ROW" ref="ROW" /> - <tt:with-parameter name="I_INDEX" ref="INDEX" /> - </tt:call-method> - <tt:loop ref=".CELLS"> - <c> - <tt:attribute name="r" value-ref="NAME" /> - <tt:cond check="STYLE >= 0"> - <tt:attribute name="s" value-ref="STYLE" /> - </tt:cond> - <tt:cond check="not-initial(FORMULA)"> - <tt:attribute name="f" value-ref="FORMULA" /> - </tt:cond> - <tt:cond check="not-initial(VALUE) and initial(FORMULA)"> - <tt:attribute name="t" value-ref="TYPE" /> - <tt:cond check="TYPE = 'inlineStr'"> - <is> - <t> - <tt:value ref="VALUE" /> - </t> - </is> - </tt:cond> - <tt:cond check="TYPE != 'inlineStr'"> - <v> - <tt:value ref="VALUE" /> - </v> - </tt:cond> - </tt:cond> - </c> - </tt:loop> - </row> - </tt:loop> - </sheetData> - <tt:cond check="WORKSHEET.MERGECELLS_COUNT != 0"> - <mergeCells> - <tt:attribute name="count" value-ref="WORKSHEET.MERGECELLS_COUNT" /> - <tt:loop ref="WORKSHEET.MERGECELLS"> - <mergeCell> - <tt:attribute name="ref" value-ref="REF" /> - </mergeCell> - </tt:loop> - </mergeCells> - </tt:cond> - <tt:cond check="WORKSHEET.HYPERLINKS_COUNT != 0"> - <hyperlinks> - <tt:loop ref="WORKSHEET.HYPERLINKS"> - <hyperlink> - <tt:attribute name="ref" value-ref="REF" /> - <tt:cond check="not-initial(LOCATION)"> - <tt:attribute name="location" value-ref="LOCATION" /> - </tt:cond> - <tt:cond check="not-initial(R_ID)"> - <tt:attribute name="r:id" value-ref="R_ID" /> - </tt:cond> - </hyperlink> - </tt:loop> - </hyperlinks> - </tt:cond> - <tt:cond check="not-initial(WORKSHEET.PRINTOPTIONS)"> - <printOptions> - <tt:ref name="WORKSHEET.PRINTOPTIONS"> - <tt:cond check="not-initial(GRIDLINES)"> - <tt:attribute name="gridLines" value-ref="GRIDLINES" /> - </tt:cond> - <tt:cond check="not-initial(HORIZONTALCENTERED)"> - <tt:attribute name="horizontalCentered" value-ref="HORIZONTALCENTERED" /> - </tt:cond> - <tt:cond check="not-initial(VERTICALCENTERED)"> - <tt:attribute name="verticalCentered" value-ref="VERTICALCENTERED" /> - </tt:cond> - </tt:ref> - </printOptions> - </tt:cond> - <pageMargins> - <tt:ref name="WORKSHEET.PAGEMARGINS"> - <tt:attribute name="left" value-ref="LEFT" /> - <tt:attribute name="right" value-ref="RIGHT" /> - <tt:attribute name="top" value-ref="TOP" /> - <tt:attribute name="bottom" value-ref="BOTTOM" /> - <tt:attribute name="header" value-ref="HEADER" /> - <tt:attribute name="footer" value-ref="FOOTER" /> - </tt:ref> - </pageMargins> - <pageSetup> - <tt:ref name="WORKSHEET.PAGESETUP"> - <tt:cond check="not-initial(BLACKANDWHITE)"> - <tt:attribute name="blackAndWhite" value-ref="BLACKANDWHITE" /> - </tt:cond> - <tt:cond check="not-initial(CELLCOMMENTS)"> - <tt:attribute name="cellComments" value-ref="CELLCOMMENTS" /> - </tt:cond> - <tt:cond check="COPIES != 0"> - <tt:attribute name="copies" value-ref="COPIES" /> - </tt:cond> - <tt:cond check="not-initial(DRAFT)"> - <tt:attribute name="draft" value-ref="DRAFT" /> - </tt:cond> - <tt:cond check="not-initial(ERRORS)"> - <tt:attribute name="errors" value-ref="ERRORS" /> - </tt:cond> - <tt:cond check="FIRSTPAGENUMBER != 0"> - <tt:attribute name="firstPageNumber" value-ref="FIRSTPAGENUMBER" /> - </tt:cond> - <tt:cond check="not-initial(FITTOPAGE)"> - <tt:attribute name="fitToHeight" value-ref="FITTOHIGHT" /> - <tt:attribute name="fitToWidth" value-ref="FITTOWIDTH" /> - </tt:cond> - <tt:cond check="HORIZONTALDPI != 0"> - <tt:attribute name="horizontalDpi" value-ref="HORIZONTALDPI" /> - </tt:cond> - <tt:cond check="not-initial(ORIENTATION)"> - <tt:attribute name="orientation" value-ref="ORIENTATION" /> - </tt:cond> - <tt:cond check="not-initial(PAGEORDER)"> - <tt:attribute name="pageOrder" value-ref="PAGEORDER" /> - </tt:cond> - <tt:cond check="not-initial(PAPERHEIGHT)"> - <tt:attribute name="paperHeight" value-ref="PAPERHEIGHT" /> - </tt:cond> - <tt:cond check="PAPERSIZE != 0"> - <tt:attribute name="paperSize" value-ref="PAPERSIZE" /> - </tt:cond> - <tt:cond check="not-initial(PAPERWIDTH)"> - <tt:attribute name="paperWidth" value-ref="PAPERWIDTH" /> - </tt:cond> - <tt:cond check="SCALE != 0"> - <tt:attribute name="scale" value-ref="SCALE" /> - </tt:cond> - <tt:cond check="not-initial(USEFIRSTPAGENUMBER)"> - <tt:attribute name="useFirstPageNumber" value-ref="USEFIRSTPAGENUMBER" /> - </tt:cond> - <tt:cond check="not-initial(USEPRINTERDEFAULTS)"> - <tt:attribute name="usePrinterDefaults" value-ref="USEPRINTERDEFAULTS" /> - </tt:cond> - <tt:cond check="VERTICALDPI != 0"> - <tt:attribute name="verticalDpi" value-ref="VERTICALDPI" /> - </tt:cond> - </tt:ref> - </pageSetup> - <tt:cond check="not-initial(WORKSHEET.HEADERFOOTER)"> - <headerFooter> - <tt:ref name="WORKSHEET.HEADERFOOTER"> - <tt:cond check="not-initial(WORKSHEET.HEADERFOOTER)"> - <tt:attribute name="differentOddEven" value-ref="DIFFERENTODDEVEN" /> - </tt:cond> - <oddHeader> - <tt:value ref="ODDHEADER" /> - </oddHeader> - <oddFooter> - <tt:value ref="ODDFOOTER" /> - </oddFooter> - <evenHeader> - <tt:value ref="EVENHEADER" /> - </evenHeader> - <evenFooter> - <tt:value ref="EVENFOOTER" /> - </evenFooter> - </tt:ref> - </headerFooter> - </tt:cond> - <tt:cond check="not-initial(WORKSHEET.DRAWINGS)"> - <drawing> - <tt:attribute name="r:id" value-ref="WORKSHEET.DRAWINGS" /> - </drawing> - </tt:cond> - <tt:cond check="WORKSHEET.TABLES_COUNT != 0"> - <tableParts> - <tt:attribute name="count" value-ref="WORKSHEET.TABLES_COUNT" /> - <tt:loop ref="WORKSHEET.TABLES"> - <tablePart> - <tt:attribute name="r:id" value-ref="R_ID" /> - </tablePart> - </tt:loop> - </tableParts> - </tt:cond> - </worksheet> - </tt:template> -</tt:transform> - - diff --git a/build/ABAP2XLSX_V_7_0_6 - 2016-04-01.nugg.zip b/build/ABAP2XLSX_V_7_0_6 - 2016-04-01.nugg.zip deleted file mode 100644 index 545711d8681abd0d92e901129e10546c7f07ddab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378711 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%0DKAt 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 J*g}EI{|6PiHMsx) diff --git a/build/LICENSE.txt b/build/LICENSE.txt deleted file mode 100644 index 7a4a3ea..0000000 --- a/build/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/build/Transport-2019-02-20.zip b/build/Transport-2019-02-20.zip deleted file mode 100644 index 62defb3befb239a578a24dab1564d7f31852bea2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1642701 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

~4#yS>Mitl{y}4x(s1Qk3(J+iiCWz&V$Z; z7xY=ccaj8NQ7*`j6z$u2At)O^Hi%i*+T^;=ooI<$`A3DJMwQR7?E#mD^Mq5;Z|7QP znvv@wl}%h?+N|xXreN)Ta=*HL3NGb1r;}$ye2JfDa|-KSgr~$IeH#M`@Pa^1Px$dY zBG(&|@MkG^xkJ=kuys4@3yoW>k%WXzzz)6RJ%} zM}f0dauTOieK_w)8=@{k5o~-l4pMlMm8Agj3ipFS7~yh9{>R10>doq zc8d_hDd!7)chICI^xy8D35$Z^*TNj3+|B(!l~*q-46tV!y|S*ueVfhXC!TG~D2Mq< zQ69$vM`Z!zMjh$a+APNP%YwQE>$CbsBD1kV;jn_Rq{ywh~6;57_0wVn}f zw6qLoc@&~1rX`ANCA^(%z#!RkoJOHot0qMjY|NFj*lwtLF*P;8c>2Nx6IDEiST!Bf z#biaBuC0(n-3-0l($xS*y=A8=RS#`k!zb1%vzsF{3P#*qfhzPiKd!LP%jT|1ZE&pM zRlIqez9*{@E@75hGn)C>Iu5R&Cq>}>QMm+zh*HBXC)P2K_`Fh=N5YjUzq`^w2TX{P z_HAM>nL@F;6kE&XPgV?-Q{(&s-1R{-+`>*REn~%3$_>j`Ae`oV|5xAKd)aZFaa4yg zy`xxT94a%>+7K(ur+r4!5QH@ExqYwC&M*%-2{6sntf^~_FKjemc#Ra%1RMAu)~)8; zBqzlOC>!V4SN{U=t}MgOG4!vennkzFzTmjN{eI-)-LwzCrVpma!;rzLRMuA>{+^hO zXBo_T-|)oiW&ZO0?|)5GHfKjqMt0q{Ocw#aUe`QIDeDg<6)y_J95ou?Z93mUjnx|F zGT|1L6o?Jl|J=;|vU(N{ebZ%aeBg3nI{yZ#W+Mq1l1%aAyg*py{3A|fN+=4i{HIS* zulbJWNRfWio8&;seah^4y3(3-P@2bYMv3wj8%(N`_Yx%4E7Y`#TF@NN>m|LTN*{#g zz?js5;rf`luQF?|Z`wTzA9X+{TMnIklUhkW+ELP>V2qA;$5UAc81>_zZB{;w>j?Fe z@t|7!W*Cls&8gkB%2u4e5jBmmNAoyt&k9r1N6jXzXY*|6x6u(uIoeK;Zt#9wFj760 zttPA#Od*|4RSHk)r|-Q``k6!F%{xy@#3Ft$hG%&nndp_COY5_Hbc1#s-E|LcN!#)? z9|mD*=4Dt{)ub&c{l+6-(3X_P(MS(R2cQYnXz8d9G3%7)77C}o-t2=fw}6=BAI#?f zImj^8gV0C(u$m7Rz%U5~w4w}xQ0RUe-Xb^GNQ`J0clBTnZTN+;4HW%L>rn|9_6f## z^X0riR9i0T{(^2gVwyKF-u^FRi(Z80fr)wlzLrMTt)zYpkhtpNhMyH4vl%%HqT#^2 zf_2U!O^;^Tp#=(5b{iwRO<~J8RzQ zuJ(0NOxfc&{JcAc(EDBUaQ1O3wND0{T14O1l9FhDU$wZ1u}p!p<80C*7=@^Iwx92rpYLq#QhOFL&i9eg55>BJ&)62ZP+A(*B%su$pJj_Rqf;^@ z4V3R(`Oy^?T0zb!6n=Emi0#2hNlfSBVQqUPjzOWj;*83C&TB>!53N3Z1M{d0~OvYcqU?>*m}iXL}`Gu&MgkqI9CDzr44cAezNUC!izTt;PFu~jjK z&eEtWwZ|5!eA!g&C?W^mq#QsawZ?@nHBm7+7mBA9Uv#51Btwk1<>qlCS*YFMwVQa& zh`3(*FVRZjWL<#AYxd643|FG)$T_9skzY^v=t(^qqdO#PGeQI~_O(s6dai#G8J%ac z*JriN?^fB0C0n~{os_vevVQof7>suc7m!&lqPdYVTu2-SPJ9PcK=>wQ1BxM z2mv;3D_SD_Njf@Ek1^QI9CQ1DM7UVzJJsXMp+A!x+MLyIzbT6gOTaa*LN3m%8Oi>f zU1ndgK_4K_ZK?Y%b@}i!2G75nb-fZH9qaA3>PQ&67gz7eB_}TSH@11kc3@2dh$~41 zDRx#QQTZwd==G_cxfP7N$QHc8Uu<|OO!nxK3jRBY^Ig3Ge6|Fjf3@a$K{h2J5DSDG zD&pcFQe&Vl@H!29{Soa=hOHZ#S)qsIXCS`+Y)}4^_xfn=i$eStc*7{9Jl6cX{}!q> z-)D?K#bX`=QxInMrxJ~6TLrXmlgpLrc`?Z$s^>t?6Xq=0Ox5C!=8i+~kkd#bIR}E^ zC8)Mh2RY>AFjfbY9VH9Oqx|ieYn!!aYS0PunS1oRBHIWmGWHmkVNDnb4uTTqzo?&? z7s$3lu&ZwT&RV`4T~9^0ow=dcUSuQb?;>Y2v22dYu+J;fNRt3sw?byYb>xgj1%Wq- za#?gWgP6`7+eg`LdJ=LisqeT{RlTdsH*gp5 z{&jTX_$J0%tnn6yZ13z+_Wt+}< zYwa!1d~M&*X>7DVA?}&s&#gwMH_(;NDcfN|ci(tu7xD)@_ z{)%T=f!Dr|iKO~ZQ46s|YD~HfkP*GX)FatO5sn;n(wudhW zBYqe8hrK?eHHZwM@*`a(GqEW+wzNlrI&^2F>P(-8ZiTe2T%%L%vJF^2_-97w(!?4x z9|hrh-aY@!V9bITTT^;ld`0kwwXNrh4M63*pBEH**uAX_Ep%e4PttGN(O&~fBzWFV zYPdGBc%5n)A1p~eepL`I=Y8)2R)r%ceQqp+qzB8_;lwOB@Vreu3+i^|_$;8i(q|BQzg|4^E(7LIN zP?g~V2bkyD6$pJ;Rld;AWM<+2-GB;&S@mtobz}BU2!{DOAxyC-KE38xMbK%Imy9V+ za!CU-cIDWipE~{971~N1mg`}i_IS!!wFPCK%}--AV30#}(RQu1(|-RaY)gl)%UtZ6 zxvbpA$qm-(Z*5b5=N=jp5;?U)V2Q8KQkZ*@YRGWreuyY~=WVld513aEe}Vd#q5o3Z zDaEU7#4Hw*8PEXPMWRwmKBW>o>P%YE&JeN=vdLSbAteNZebLkr zDrgDbRj)Bv^!z*+0y!;_2+$R~w;;^H;8(fMBgvq=x-UL$Q!vz}k*pBi7Q zczSQ2d1A(zaHd0Jf8AtNYFP{*>_o4wvhsiRZAz#r37*)fC^ubF~tedsYzgize@6!5jA77bJjuKNMDFn_Z z+x4yXDHfLk9KFCt^+a_D#bD!YA?uIKWb zXPO`TMWieNLhFi-v5PEH=pEqHR%{z3|J@gHSIl1B)T7I4`J<<2#jjDsESU2p*T4p%8Awz>_g){)t0=u_dGNpuGvFyd;6y_8mV^n(+y3M3E7tu zKk2uHOSry)#Hj;SdCk9tz1Bty; z(MGT8!vy60cIBwz84sz{#^5~D(P(9JDb#NXLI@%s!Rh!agjcgIyKBpk2Kv{{_3+z@ zLUYeGQ4ODw8C?O^c2^jc{b2RrGbOI<$n5c-Jb_wXaIE$dwT;K+n$d7vSrNt+-0!GX z9hqUAZ<0uF!DGXrQ24|#X6>=3#p3;ayyytPL*QHsKfBQVxF{a&x^y*;k6jXj)Tmo4 zQA4N{Vk(tLesa>Zf#?=@`xMcf=UU@K?rOv4G%|DuEVk@)7P2dr{>X;)-Qtwe3ZIT_ zltN>VX?+oSI=d5ZG5e}XGir)v|4hY_bloppsL^bUx3o>Zz;PB9N>A596!iAL1x*i_I~( zxD18c<+Z)t7cgFiYNO^_TId#g<6kKpD4pAp-sMO75CG+#-Nku($d4i%)ID|=&kl=@ z9U`?^J(Ux$!@KVt*HWb|lU28+ZquY?ST)#B#;u%R9-SQH(9J%nLIH+J(9-8eqPKLs zsMDko^vBL_u+)4V;=%nHJu{;jeo{GDuzh&zsW@^T8GgYph3M2=*=3ms=@}5KHqoGu zd9d&1a)8)RHf~chdnbiD*XbxPV+LSRm@?`!1)CY=Dy0J<_K+1`hOJLXqMybHTI#{9ffoPHH{3iU8Wu=@m8q|V2?gEjm=RkjijS8p>sSm zERGk=XH8mHS37EZ?LVJVu{I(bWNKPT8u7V>0( zG3_i^_3TE%>wLMxtk!H46=F{>RI=HI)6WOzZU;Ue-S3VP zW6Lhs;t$o(W*EId=g!@8QLm-bdNdxFMO!!avg2f7_qLe8l=ptpEvfE{*I8{C1Tfch6fRS`*LG)nZ~c7bz_I(~mzN6A%%W?0bGl$(SD z;Mj}~07^C3+=pQsYqBjj(N7-_@;!_bkEGh9a&>9HRcp&3;MaqM(W-Le$W@B==KBYx z%NJ>C3ax7%MHe8xllvmsycLH02NdhUV&hgmHWiR@J53E76sU_bUIy0Igw5Y9P!t}PG+e1vN4kjTOzR))cGpP_yY zFH9a*Wl`ZShT%ncB1k1T$HGK8kljH0CCmAG0W{80bHPku6!X=;-kKvw<9>Fy zVVCvX-yZIvlSW<7?}9k_wO?l~Z2;-gbr@%o*kuEH3BL5QBPnPW^n1W zVbbtssho zL==)Zvau5iyh;pF_Jz~YzkWvr-{B5T9x=V0=QQ>NaDeQU&{Bfg@du|m?=6Q)>j32oXY+uiD)a*ULs;4 zd|w=Cj$SurjJ<~g%1khS_^#9=@Wt-!lk6)xQ@!Y$>@G4@@W3h&aR-}eX2~aSn{hhw zjk>U7_5N$XI%JW>^HP!c;g{>0?Cyg>a9v|v7abD3D#YN*V!!p+=%ATGV^*8^rx=EK z#xU*3Wx$;bxsRIpYr8fHB#qr>*R3)KI?Atc7%`{B{{S*T&A&V~;)Xmo2cyM%K&BM= zEr&@426FCij8_T7_V3m%$G~-0K(QlIQNMv8MdhncoC^#kqI=Kl6@|TgmGJ^g*z~u2 z)5(*_XsA(qDP0+>RJCev{CX>nu(W;OIvW!j)C|OBmtLzNf7t zt?jFL$;}~uPDhC+rX#IFMEFxoXKKkD9dI>>O!8?h1`93S)=2p+8vbcXKpzj%kHc|u zMJoWcubXF=;9Nl=GZe2muc~mh^Nsqi5LC+wLsTzM65m0xBf{-E;wlxN-NJnN+|cp@ z(uSZ}8aRhk*2x3?%paT^($57Hld@`=T|p)3QT~#5f7A<=B<}7crXs7c`H0Slsv$X@ z?NOy1k@&5A?=CLf9Mf>o#!0Z19e5s;PQ}(}WWZDxr|c@~MXRcEQ}tZyWcd{7ClCTX zG(a<+3v1A8TcfbPmzICWUNT2!DE<1lr8w*>#r1Ms{{0X6>FuCuc|V%}hpu-D)}#p* zMQ4_0*|u%lwrzjQwr$L^ZQHhO+qUlf_r%`k={!_aXI6Kmsxl(GkYW-m>w=(0ItH6W zlaWQUlv;Cz@>(BVTZR;w0sJ}LQ15Gz*O&?er?SFZ#+~$_p`H!0tw?fN{bmX)ily^# zlVEHp!L8a9O0UG0!xW9X7%6cGTj`ikF9W>sj+dS)a(NPa(14)Ox~!YUCgf>pFou#n z&KxHavvTC~(-ZZ@=#OB6O8=`q=V*bHfLI@rtwTu;)(R4((lnGrJ-{OJem)l6r5r(2 zdW2LS(LX~$K>toTfGbKyg3O~4Mg{{du=58f%{Dd5kF>MXr#UIRXQJrao>RR8!rC)d zAW}GrY`pt+1`zj=y*@woc#r0dRj7dP^Cvm;;RngZuNvaKnEs_ z)XzH?P$bW$fFw5im7?AkZM*mcbwG!ay4xGU;y#d;Zs1{8%Z~ zu+Z)I;NR;>Gq^!A4pg@kldHV6f8!xaT(NaS+~9df;r8W};0(uhQoZe39lNKNE_fC- z0XgCT?NfP8IWu4)NwH;l@Tobu6sx4yOm7YB_|U~nG)0g~g`_)tu0~pxBVRA1pG0?S zk7-N1KIxx|_1t9k+TfAf%S;DzsESUAHD{~o8mE$S0&zZ;lLZ+X%9_V0Npz(0M4%pW zI?7lz=dut8f&pGo8$z~`*QSs(Mo4mlCv4d*jgyj2GXghq1dlQHkPrRxyPiVxn>?td za(A8c1-HVr)yfWn1dYKf$oY+^ zU=e&#mdcgx6N|-}jM5MNH&Zh(5U!W;77)6B%wruFN#0@pI}L&gKFJ;UfA^_xdSrkF zkaKt5a(xa$0S&>zyF~>ki9`sQ14X!%30meVt}D0kf8201$kK;3HmG(k)KJzD#k~tZp4uaO=ePV-6umixu0cBAZIk=MGKla@RYc3v$IgQ}s~%>}&!Ed> zxxnEh0N_S-5>ZM&a7$rz&=XM&EzpA#~83zrxwUr*M`g7$8@)k}yEa znTOFaDwdkm=Inr#i3t)EbX9P(A&$0B)mB0`oRX|N(j+(K8!G2Rn=aF`p^&CD8H9jN z9=)X?uRO)tKBBD1yNVO!nEtBcg6!gBB5t2f zu&+$${{><*$%#%#)xA&mcIn}SjT`|Gme^aTf@H-WZ<-z1RNJl!HZ#PoD5Pgr3%e;6 z-Au()hz!yC*DMLCGwJ(=U(tsWJULk{Pd(hgPDI-b?Q~R~Q7&r`Rc;XlY3jE#U#!HP zW8m!7dvkh__%95a^&rv9K;RB#Tla>xSJ?Plxpz#T#8D$%?KjtfnAn&gb4LMwywssy?rpmZl!NwWwC0 za{hZY{H`)ewic^W#WhHfOiZ}%CCdCi6tAJ}2C`4Dwq&=Z=O3<59^yNI2ehZ7jQtfVMDP~vlHxTRfrcUb z$kohRs_&&q|DyhNQ)5H%wyUApSwpnAqMKQ5Y@b){y2L?AXa?sRiSt9yP6Knf;PtAW zIQctZhc=Q1wC84D9RCe^M+a34(x-!3!cGG^c(;C4>9!+QJYd3*93*8ZJKzRm4)H+4 zXJ;rrsDqtS{`P}5hIn&G!9QTr8|19+wHr@F>~S}({=jit7qmTdxb+B;tkd<3__wSm^ld7_4r^m zuvEWKkXRh1l0rW^2qKQ>@Xs8&un#YOSTIgFGnh$#PbPF)V2>y~Y~>$#uub5C*RneT zDD;qT`Y`-)aECx`0yxsm7q{IWeAME3Ae4H)W&u`cLO#4neS!2mK4`*LGpte2daw=V zT!>)=CQwQx^*Do5IA9xuWqdgL7M5Op*~nB}D5WL{Q-2KVQO3tm0gxh1e%UybL(pYZ zex!yRxM4pdNGJ#BF9Uc2m^hf!420p_JJ7n@rWOeIe_RZ|Lty&xoKjfznTOj?PWo|p z4?e2Dt~b@j{70R94rm?rJ^(GzQ|c0J5U3KAZWK}Q8#rAb3<~nU9>p~5z-rN_V5;%C z@C9-#m^edR(ucVFGCS#cP`hntMx`GpZ%fBe7C9=x(MX@+8#pZIy+;BTf9QMofvbM| zWY_#h$AwcuI*z1~FsWj5|B3k6T62rWj6*!0-T%7y5&nk*8r=HXFEwig#7 zPKjb0By>(d5|_isPYNl~e{P_%$HQWQ;ocQadm}9w5wH^c!1!putAMq~nKtBUM(j806&!~uASqCzS zp5wGiCM*e8uR01@LuCV7Of^HdjnSx1oEoB>-rBHnW;_@fHNA62^#y zJKhSmF_cWdko2vKt!^yzn+_&DpP;|9453lfec;T9Pq)vglidN7`! zla!xRKb12%?ua*Gb)>`!^0f1@R}+oeSRD9W9gP4yLcdJVu;hkMWy}}O=;djTp;b9> zu6}fv8uv53XBs__RuP4|eOC=V+9ggD$q>W;y${z%63-OqI(M$1DFS0FyLE>ATj`Zv zPa)ixg$78&DF1rcs&NaW{|a_``(Pt`)A+;{Y`uQn$=ht*w0sLVIVx^+ZJrwz`lxm{ zebQV?4{C4UO7`>2FJ=`6$M%z0Nc$&LAlm>uh(+0x8d0U}c>_bCgCIlPzc3+ZxFFp9ES|1ZY zC5!w;a8X57UCtrEXhi0&fGKhlfREM32KeU~WjSu;E6HG2Qch9$WN}vZ-xI_yb7Hkg z5fVQQUG$$Voh0jG<#7+O@Qz*{7rop}>f!jZancHakZiws)~1V;_Rftmv9P88=xlFa zZwC2n&hl4;*s#_rlmpw6y=*a7S(mNOVN@J;k`#ytmNzB8JOu~$UjR9?=T}p~J`L}` z%e7147D5v3Pp%$zy&=)`e0{GbJgvCEa{(y?V#+kHSIu$PoQcK+RAGdnZQjuZ(yCH? zj1#A_5rMWi9eAEwE+7MGiN}ztl!c77_&DI0V^_G3JZzYJZG{?XyK-{EHafn(fs8`Z zGP$f$rfrR*S}nFxcZY{wz#ebt0QG$BcbxL&OS-6U1CLAI!9~lHCkb+H99d@m`k2T< zwVsLx8ZKcof^Vr=z80*y`nIV(Y@6v9;C!Yg_>{bM`D<&V3XpG{>84HRaP0&>-z4A- zy0sZ#`H<)rk{F};8#f74?mCl>wGbr#v_gk<{1nRDLR%SO`xUsrPAJSBGD3i zghEBY(sS;~c76j0rYvB)f6=RQ7EoX%2F05dAhyHEX6lKIj6RHn`m+?xXNk4D(Mnz* z+OwFjL;KjeXFZ22DDT1|lPhnZr5z}c<|ck>C;S+Zr9l{Uh%RI!?5Ou)PXOGf-2nT! zHH*_P#}Tt7^ZA=?(TXfU0yVBqd|oICTg@d|47xk-1g%PXNg9eghN{Wt(8XuDONbseLDaUXQfq{HgB%D)mRrF{y)~fP3 zq2~U52}bMww(vUd^sUV|WArqs#F24EAP@}!>sS7g!uT{L#8Iy4;5a==U0|LRfJzkP zK40#Tj-6V6Y1g4ct&qhv{NNb>z@1;mwju!F47Dq?zZ$X@fF=;^n z$_cTxVBIyEbQhDbE1ZgptGU8I>+h`BIuSLXF?+@iX8T?dRVJSmVuTX}F)fUd%7i^| zgK~j+xFgYDXXb^t)8^X+JBuLFW^oRhsvtQNRK0e^XR@v~@pM}=8mO8K| z@`|(X5Zm&db*nODWv79w?PL|e%qS)Kc68u5GQl>f6NypL!?+G1DYUl=z1a#EN_J(IET z!Q;^^+SIwtVrIQLS=z6J<2p^++epS?U;$7eBcEL^cGnxpplZndg}W2A*sx4_O|Vwc zGOX9SoZjv{?x|$9DH;W|pD600{cYbGrLjIM3Y9wLv?!fjl`p{ubnF-9?+>L*VY+_{ z&jtptA0ni!sjAIS)dmrGy9BZQ{7%*a?t|J(j%0m)qxE@+6iQ*5Na*B_zQEKG3grsA zs(I)+t8u2kpmk90$t3x?eGD8Sg`&^PI>{hf2D~YIK6>e$_&8{3{6v>lr#G20KSb?8 zO>s5IJTHzf(=gb#gHz0J%11JJTh&<5n7b;SR4;tA@h=mlcYm(+4~>hAok8BQF7wT6 z8CRWaV7ai^zp9+PxqeuduZ9&Th@(iPt`=)0y*1 zf7^(*;DMt;G>1}0@;NEic0m)ROIqZhTGAnSGwTUSGZ%Mb575EgV4mpGCeGul zm>3saFM=)BKC{FarCz1p>BGTep3DncavMmF!XjwyKG#5R`!TGE%IWGboKF1X&a2a2x7b%@W75wSbveG?yjr8!1W1hBw^UW8iBYh>*^h8A;G4%F zY8URT)FP}0i1cThxn9q;WUXmw8`fHpH zghsRQQT5=Pwq*tA-dS6Thps0qwm$0}6VAX?N_Z-@u z&vR->w|>u`!`2PMYBQla_b`|heCjLCHTYBNjs>Db>n!;a4?$DM;>hEfE2>1q-FuU0 zxQydG_4EG55vwfNQoY=t{1RDkgIJz4*$PB`D@=OH?^*Yp<0e$urfhdy#AE_&due?N z$BF8sX1--$JZ9Gbv(KhdF+Pr+(kf%K7qr*0tX+b!YzF-6xTFEHMtyhC-MeVU(sZ{G zX!L(S;<@;_(;sA&C_1{zGsHLXHj7(iPl4$ywtv}omn6v)A?UOhA4_Dwg^h$b`WcGg zGAGx21~Q8KL@HL%>90aFkd#EiCjQ0QM3{MuU2WR{sjqAgs!JAkcF>wKMfZ~4Zz=GD z&AU{23caUQ&U`)oxi%I199?}yjc=yQ`M3QnO6B^xvVy`Hj7%x#V!RKeo|DX073AOz)R=a$iJ`^W3cqF)-mw?t=-Jj7ii{K~rv=2YIZr zsfq)?BsP2-edW4c1$o2uA_JZcu`jq#(Qj}Z@vg47s*K--nH;(`h50%iG6DCaC2@r9 zeSj40OyKf4h7F%4FV3Qz(qJFA4WUzr8iH zjU!X(kr_Y0hO6oae3?Om&xV(m#FGVUgW1p_8LB_zJ^kCCBL?h@CeDea_5!NawS@K{ z9S4O^f*Ev|yyim5q@9~z@j10d6t2sHML$* zNX6&nofV_PCZ>2Dg}l+&;10HOxzta#pm3kh`HjS#|p~)~PZk z{8Pi-lEyzSK|pNI=!SI#>ycw-!OgUy!oa&!>zhm`iDmX^008pWRWVrVYvO2P3g)>P z1VF}1aO`L>(P0qpLb2vhKQhqc#2RYDfxMZx$eyy9#FI~boi|ECaa?V4h+yR(<0V$E z133~2f?f_oYnWhuH6-NFvTO!3bpe?dA2w&*1i|iZdVU|b+QD54g;sS5e}GQ3F$J-* zsodJ~2bqdvreX8$x(bB^B*OBH$#IzB(3EMBNOAzU@2=GYa(&hU{|)6$qgrWGVfjqO z%yZp7YF@0+^0K^qMR9gD!+Lf5m?A{k(E2e&)Z=t}=vU*`Qvr3bECpmF!kl^-cpGOU zad2}s3A>h1UeSfry=#6liQFDofs)GV1WR)TMbuN&TiPN{yYF&irECJSp|@*90}C=Y z51Ciwhf+N<=V@ZY)Jd@1Bbg}Qd`DPb(^CU=aLn{aW>sDscT5gIsfn1viGmshA+4*N z!=<Ye&X8{sy!1Uvo^i*mI6qe98XFfy4+Kl?HJY}d8!ZVhADD-u(+L5 zvUGt^H|3WTc_G3b&H1fdc>hqtV=yWpY5Z02`z;u?UZ}mLkw60SQ^`j%q@TlN<|Vp{ zF|N2423)9*d&pn~$(Z7^f1LsYvT6ipQG8|hYA&v*7AEv06HSn(U0JNMOYyrp%6cug zcc)8D@d8vu$)g(i{2x}_%tMaDkftI92GUmDv*^<1%1YNLv!13r5jj{jrr*V#;CJwv zm)Kgtqr|RfSAx?nNjX@>wL!@ec%lHIP8r@p^$(R0A1AmCa>x|OjUESYYp073fH)cn zJXFp1f!2N*Cp0u052QR1FauYB)pPMKaOJjkd&jQ+ZB7^KyxEys*4CCKTDv-oou2W~ zPjeK~5c-gHkWJ(P^q#dnb8v#rSJAmFysBkMbU?~paqbf2rhzl(Jjh%<`y*@Q`JuA& z=`1;-@+s|oQS@C6;rrw`GpL*ReiH}ATNPhEKFCh@+^S)}$M#Lz)@aFzR$igGaD(Q1 zvTm!$pf_Z2$P##JHFq;FG_sWx(V@!4IWeT$)ok_YhM(MJZC$}z9^ol}&KdJ}rekq# zhF~?UsH6~BGifIIlfkAVa)pQ|im!d@W`aoI3@$1#-O&AYh|KkQZ2ILaF$*oHQk}&6 z9_pWSMBD;`q*MAI=h&jdbcMPoRh+f3&Lo)@gnHFrP0yf57|X49RH(@Zm&FCW}D z&zS;*KgvNt$n@$s5Xf)9=a}pyJfKmS(-4mGxPd4rZw>ckBDz|#ds@yZ?N(o(i#z1- zjs3qGfjNJb31Py+Dh52_gF*n8`L`pu@j;9Q5}_gn3*#T|Ai9fVB>=OgtY81Qu0e(_ zU>>TvXQrn|pq4HWF!-@TmQk0GgodmE%J-0!nOP2hE)#?6(G$-xe}+?o4(@tVwKX-` zQx`wgViMDTq7$WPeQ^>Y)lnRz4I5EreV<1R5fJBlOD6_I51V>ehLcH2ziXg!nG3># z4ou68M1O0Nqt|Z%8w1$k-_YSdpfCyJ;EAEHfW+eAobAP-y->k>-qlotOUd_lhuloF zV@yF|rv8XatBWId|1_#XtoJ7IC!RH3HOcfCYOszB&u{g}I58cG*lN#JdN9o^JIA&= zEb@a&b%4zPhsvAV3~>n*Yg~I&)Ug*hcN#TtH)J4X!*!f|hFP#zNqgFa?!YX>-?`zg zIp$x+7>Mj27!BEU2v56lnf!5=k<^&p@7j8C02M{;fvMP6%#PZ%xrZVuURCKnJ;mmp zq?b@*-sq>f5f)@Drf`Tv2HVVdVLqydHDws7#AJ)Z*Pq8Nxsem+Ngej}nta@4XlWe5K}Q>dcn@=bmRWOS;)*YSqL}*luLdhB zv>T&P=;K^Zj$^~?sLJ$bu-*->;1XHhuMsIKn%Q!yD@NN7F_DNxv^7+CT+_pG;=NER zxGQdJ1I#wNodEV>HDd_Vv$=Ir8(3^IqJuT8R(!}~Wp>p+l+TaHf-h?Zb$)L$qFeoY z)soNE2?Q)Ct!S+0Gv`!~YsBa|d>iBgT;E(@<_;#rdrN_4R8qlY#4UuEuw?k@Oxc9G zIt*7v&aTSSBR`q)I9fcJ8M;a1-}GdQ(zPpFR<1|ExgR>+8Z_%wS2gNSK{eQrP!7xR zh#|MC^+@{^#om{6gfs2SRO0s|!;MvKG!^Z7%w9XX$luA6mJ^>P5McRzeTH<7I4vo- z@d!i?cPL<2n_*mDa_1IQFMpQx=qml$k5qggoKKdA3J%01F@rCx@=KVyR(;B=;SqmF zRAYzjxLWaG9TsyjxCnM!uZ~$&)Pm^au^er?c8P-I5wRhPb>rzBVOdp$P%F;BtaRXA zwffu!wda$e-8oyGSLYJwen>kmtEwp&{Lx^wu(3}Uu2B)O_vhH~s#_Z)><^oZ{+?Fd zqlB}-3ThM6mX3i(<^GxG7&b0+X}~jUcF_5tdXDLws=`pQk!h9HP?B8G+frHD zrhZX&9wK#BV;cf==#UJE9NENnM^hMx3F}y`T*lg;Gl^giK!AoK!n##s7+`q6?a}UE zd2tPn!FF$EiA%4*JM5;}Oh^cWMc_T7MkOTV7gf zPFpyrax_J`N*41lKc#svqvA9>1spG)XJ7erWYg6sl2#TQCT>?#5xv%Lm0C2ktvC?5 zXbHDH*`L%6bn?C8;i3ZDr!pE<{jJ@1x{QGGY+l+tJGh=_T7pmO{gAnSsPV9OW3OgA zM*c0+TQCAI;av^jD^3XZ293xP0mP761s_{8$| zHZ)W{JwCCyTdvhh^71I<(y?`FO>7>!CoL+2DYpN%OJ$g!x9s%X$c}a}hBO^g=kwB$ zE@EwXxOD_MV>5^gYw&pGM#RID{xRLvnDrwvW!{_nZ;J2SUWv2Evb@@>3UH)wJaeN0 zF58zGcet&4_N49HyjN`0y?2O)mAJG&2s;|3Y~dplgS{aSGPB+6@ZTMqv#uhJv2FX4 zl?P>=yZc6D4MLebpL4Hg4KuXc*Q?V@{@iops)`x$lq!*xSjOMAknd^kxX4X4R}<@ zcp&S^dgJk);M%DC9VY3hCar2{IYGq=*Z(RgYIOR0KG)LrUchM$lUd-dc8mLF8c$Tl z`399#8k^LCM-?W$@@}!RUNtihEw(Qzn%{UM>0Nn9r`*hIL>$v(+~~T&D-6F(G8h3a z;aT0dg+zQ6wA}SWRecw)pmJ!}A|b;i7MZZWTuZKC8@0V!pkhM2U^!1jqS)XHjfNma)EZ=&v zIBb0o#b9a3QZ(tF&8;sn1 zZPPYKrwzug+fDI}UyZu+KzUDtwGHntkYgn`IVx-zi5?(bJTjqi$JRH#FFl6e_&G{b z$;=I;L0%p=K5$HWfWYocab;Z%?zE8(TbRMq(Sfk!-fdiA*_awX?Q;@!1(4>vvdl`~ zaW9%J>6gM)IaC*?NgA}CA6QP50th_gc<0XRu4R+1yDVJOrjM$n4U#)gX1v!K5x!Z> zgs(&V;x#e+_h^78QPr2O$L+e#9ow+B!MjT`4p>>Tl||D@vx;dtylHbRsy%&mUfQ&4 zs3uVt3hq=(e4ZjY93EVhSQ~n$1}!EWU8&|a95R4tB&aUvWVk6H zFexav`={XXp3g7GiI}pU`8=@?@Oiu(IqK^v+9!|VZL|c4(>b;v&t#CQ>=xY^RcD#c zW?A^wt|<9VHVMNBu2*+fAeDQN%I%mb^8L=@kj+GE4hQEPU3rS&PS~<6=kR>ld_W?p z{@7)i&R4k@-#TC%w>n;Y#c~((W?wSZ^g9#Q59v_5F--*8e9J!yiFTpPabMT#6X=M_ zwhFO$bm`~8!S>!ZAEE*{c5E|k;1O%L-kp6hn07*BNR&)gR5z?D~SNL2S;qQXu@iEJn5@V94YX7zf8 zQhb0|I-cva7Sh$Wp!YPmiyy?81Gr#j7yJXEvRBaE>i1$UWxJIIy5N+-Sh?UnRGF%5 z0{ZGHS@|=~8NI4TNA`=vZKq@5 z`D9rs?HsS|jrn3+u-wtYCc2nys1sXpi3vli1X)Q&o+?egrxF7!I@1lw<>3s!ud|P< zLug=DTx|LpnvS)$D8I`*(>3gJvi|A>;{TmoLw8u<$QV-8=LCAGhIXrWx8W&%L zyYjZB7#Tn?Wz}d){+)$RIZ1!pf6(%hgfkAC7xqh_6dpFKhg+RxE<~G31ccs1wTGJ0qmYfF!f6EY50O$6<)h+; zXZA@C-F;cq7>9CCf*dK63Aea8;Xq#Jk)&af=4OR&2w~dlQObGNq?H6v#(TeV(O!3% zFB9A9jlzB<4Q7d;R1BJjhbFk@k5g4N&ft!%@Xaj@@;2tJaPL-+rU|<8N+?>kHkF+r zC@Qx$i9ZDamwC>t){gw;?9#MT??JgL?93<^)sMBS?feZxF#v#dbZ>W}Y@eY)+&_QG z9w0NBF@r;5vvapOO@g@Max?0CkT*1WeBF~SeLbcfIwS^&)$^`blLs|itsd6~>9>v(E%Xe{JG76@!$ zrPBnQC$J}N{Ygjbj+PCjTE;_p?qwH9%h})9v@(|xtgu@oNUr0gI$3Z6gSK7t^Qqs` zo!Hi_zAd~oeiFm%^a*5CY~VB}OODdBu49E!6xdVRet4%=jZ9paT=B;h9E5%95>#!u zP*M1L-bPaQul?&?eMAg7N96_Sxk4WC01n- z=>c*v3Io(_W1-h|2lf!fn1vG)-E#NS^3R;4nI+F^Z7yoDOYw8svXXwe3H<2-@Rtso ze{?#5=M-mIfa|cKI~v&hSw2~$mjIFBTLqZ=x__C&AJxE+MgHg0&F89H3OlT)`zWAe z8p%G~SB#`?7!zG0P)@!(DCO?Gp3!~$_j>xRe%|grp$`SyB86*Ct(iBRabT$Io4geA zeM6D6Didbb#~602T2Y#qUFU2$(~b3|7co%5)Etivi=Z;zEXz&}mLY_tbpX0hCiw}} zOLD(S&fXbuOca~moCyVDoma&u;^QDK7cBx9viyegy~WK&1BE;2eT4=L`;C=xnp5T} zT&HRddG;?)0UALUDKh)%tC0h=2El|0p*F-Ncs3Gok zK8a9Xs|-a(Gka1Aca?~%*P;h1GYO%9S>Gd}wMbzfm+PCP8dGIv=B33ZdhjOZpG-yk zl%c5c9;zIm20ejLVOnQaP~b7|gfjTzQn*Oe!ap2B!*MjmkTEg4VL^=qWTViF@o|vs zH`3JyeJV)uADaQBwFKZ-z}E4B%)NJx(R5IkZs+p+zD&WfoO=1WV3sy_pZ>wHzdWIE=Yf2dKF?jdg@40o{t*j6G;g~KUDgVmQJ?i8 z%Z&zcy#(668XKw6_(_+K4Imr@zBHh)B;*qYx^xwpH3iJR2lLi?<%_F8p7+97as z^YI7}QO)miPr+jK2?L@v3hkiknWp`Qb$*Is#c<-<021C`Y~URzVN85epXwLLb-f z1V|F~yKGb;4d@vw-ylAK^tOYA15$ry0K2m1eX0mihEi!2?o57Br!ZGY7pM0ifXA(c zs0Kc3^iCftP07A_Hjfe1`c_uLH9i2yoF#kH)Xh7JG!}L^4rSL690%B}Y)HU=9C`Po z?ynQy6~b^F)e_H7n|z0u7ZvEME3cy8K`-Va1U}HN^PR(OE-NTZM0?KkU(-Wx5X4%) z5mB^LDXx(swDak|_r2#YQBdoCzp}Y8Qw6Rkgnyx0Q!2@Wcp6ByM+%`Di$LsSQTHZl|UZS`xDE;t8E@jZPlurWsR5nBt*^(Oxj^zNg<_GTPN`;gT zY&QaSUV*BGagO*W>0bi&2}3!7985tSNX(rilRm*nE{WF$295_)*wt13#YtX8CL}l| zzZ^-0d7Z*vW*WOCN_Jq&;r%Vis-+SF2#s=o^REd(nL+rx8}oB}9s`OQLHBHHZ%5|l zk~6Kfvnwye;tM!I?f;`ie|WMm(N!QE@T`~^09i{Ut?;s-Ui-_a0OySl>Th>b<3AqM z^-~hA@x;Uc_Yi-SKQItY|ayIVZ&|K7Ow znY_WAPw(T9SiuXT)@E0XqveqGjOc%94jBSTvE;^iKv2KoLE6liaLMUC%PZI2Km{#6 z3O;nHsnE|x=m#hDT;e$WZ6KlpNs;e(J|D(?32dnpnMtRZ5_5(k$u1h6aK$?~^T)tf zgemq}^-e-|B(_0@}gOjzM45a0!cCoUw~BPrhA2XWW|W8Sa`w zOFFBep>e8Ul&#c1!A{pp%6;*-mMSL|(X9`m#`3+T1^iDmXbG^kcQFg&QXX2ZMf21m zK*X9*I5~&QpS(K%mRNX_pN7%v9Z;_2&MH_BwQH2r(-|XgSLha2eb(|Ik9XI4B0u`* z7%MBGS9JGfor6ze;R;oc!v;fi<3|^dBivOfuFB|zoi&+{j8kOhH@`&MJGZ9>HW4)- zpWBU6fc&N1ULN5R-V>XPNm2^KGgT$E{0ia0G^JSFi&J73{VJK+hbblxDtFNY&*!OV z%^#@_pvkB2HMiuiKG$noRO_PF(zcQ>Rg+|`pB7bmHnvGNafDRqj>G5L^d4HP6VIbr zZ+Oh`zIHur zYTEW~W_%C^6U}9#%!hm6888u%@k!~*yRT&<}$crM3)d8 z4bc$i6)Zsr!@rjhyu;K7*&cfimRo8(?o%XID!ig|-eq|rS3q6wdd9vTLXvZZIt9x_ zI?ss++(F$nB+jJ2ontJTlxYubn~GvmW{N)WlsNQA3=UrcPL0Q|P%|Pr_}H)aeVi1- zx&{JO4nkq-E?1hYJph!~0v3nt#a`P51b1}4R)h1b7O~~`YY}{;-Zh`r##-00x;Gp5 z;_~lEPy9W{9dfLNGymKsG_5ycm&^aAqX5v{$`@IGikGQcN>NlwUr81@08AAN8A6Pi zqcDa^SYH5%q7D+O)=x4;6V3TJErr%h%A-Yw>cWTDiS}72ZNv(~qAA{Hm#p3EQCDn6 zFG@2%uG@~sJU=JySwA0{54t}1=!1Qh5Ubd$mdw+mqkg}thxE}Q5H)^pL=fgW>Gw)U z+qHugyD?wV$%u%c1+tug2p~n@v3pDDL?KM03JDt3Ua0Jp^sq1^6mcn3=UP8~sNfm! zlK^h9;Sm@^ZsB3)L#YXLAb>Ia0a|vX0_O6Dc~5baARpv*h6Vi60wZ57LVg?;&lbmp zYbTk=^dKpT!>@7-WE^j=9AuzSeMg07WN%r_U!PgX?7W$Y?drfbvW8*poIe{_MlvFx zu?(V)0lDEwQw)8FgM8NfB+a<4ycDOIbHSo81JQut=n&wv*xzk@HR_UXS7CQnLDk_T{zP?ZH5SsXS99O(VO((-?XGvm)-;VB~ z0LxT&?7Iy1f+O5eVQnQxEVNH@0ZFFRBBji%TdTD$n+!81<*)I9_d={)&7x)6SP1qW ztg)pEWwuXf+JcVqrpDb8^zuMzcU!$s3tPy{%fWSPuIvoBkYL+JBG!=D=D!b!dU1d zOb;>3l@EV5kw@Yx6uHwm;XB<;=f~zVFg+zg?rWqB3#JV2n_H5UL_K*uuc+qh8_lk( zZ)5U2dZJe}q7Bxr6q?|Y1{!U*_}|09>zt1Y#0@V}6)M&q8~hn5z$0+oz6+~83RF$) zxSm5EpvP(`7V57Jh{WZ_ahc$R(L}ukZZmH*c-5WM0d37f$V&ixFOye9Dme{ALz{4d zem#`UjdiR>rexGsn2QUaFiWgJZOXNcKy5z6!X}y}j5(sM$a$Akg0yJUsunrdEP^*+ z??6kFzr&CWWU61(KLsp095zd8jme5omWD-0L>Uvc@rD-D4<3ieIo2()OZobEY_n?| zY2X=J%3Yb=*=w|9o=ieB-vSmA0^Q-URWpw#70O-ePcC)8g$znip4*cElC-#gDGI4j zk8>D$lbL-<%CtQeY{?WRZx~yaTCL}<77>I4bG9T+(I(*=bCG>KUefH)cGYnU%njI@ z1@F{*jcOWIZ9`=v*?uFVStl~NMocCSDP;lgH$D_rW%J;wH|LkPx64XNU3+;9t+9}_ zKaCJYT5($ucfp{re!eS7(~#EIk3Y;O=uvlQZpoQgC9?VQ|6#9qWwhMN0}EdkmbC6a zlTy>h$WDG{Mje|i;O;8EmQZABGGn(k0;Vy@(fLJG2W_B*-4{i;pd^W=Mqcd9%zckv z@+q)3SQPc_Ww^H6ek~5m&_*G_Ww^LfvOPQQpN+_&PNMQMdf>1O1AXhD^32WTuQeu9 zR$#D9i6@m;@nXwh(V3ga`*1#9?~mhJ88_}pVT4Yd7|IS;I2p$4LsL61b< zvX{KWSl0DH7@@<&?M1G#6cFwv^x#>;Y^=*l(_;$z(A?@Mkt%oZi!mxfp}_HeL#aPP zm=kg&61hv;n7PtM^3C?T2AbmdeD^=z05fa~Ih7&&3p|zKgKRI;>OEbZCPDK>vnz>O z)G)>n8YQsVab2FBlVqm&t9>1ZWnIt&$K7TlowrWY>w)2ygboa?O%9n69f_OHda*{5qby&<&2B9CE6DeVyHBtO_d zmc#DSbRPx#j!y6{+|X%|PfN%4u&>v`(;0II@-e-QP*o=2oUWRplyEqBbm~|u>cZJz zLQETC?b<2Pn8K}HcS|kjG15X{%$^t6@_n1!Dh9P&(^FuO6O@Ci8RvF4yek_RU$3~P zhJ#{9Ru!|{5W21)JVgs*I|>=|B;Fc|GpdYNSPWl&B&aNv-B0(GVxvD}bk;K$>geiD|Dk%go>T6|z^%{UmGBk+SneSnrD>9j ziDn;fPLB5!w11i=?@?Z>=a9ZR4QohpSy zi~((0Xga1rTv}hju`pi)d^U7x^%xZ;n*Q<;Q~6f>3WA+T42%2J70$wCDM8Z}V~-zj z=)f3MU9FLzb(8NJJmQpOWbYW>WBmq+;o%$F^%4IzaRUUKO8V!7crF3j;`5*y>Q${_ z6{aWWd-%w>Du?8)y>TaqFo&OLSQCb zeNm0pz6W1ol5rGe=&pD3JJ-bWn>xUVH8 zdup4$M4Z&eC#{>aytP6$XkXpCpX>fCjj-u@q8r2X?O>AuEUN@kzI&zJ)lC{04CE!JLid zp$@i-{B}NxzI0B767vEu^?1RRbU>ZEyM3bUDC4t|w{0 zKGFh0Zj`4{3I?C#z7EBPv{5PspA7p-|6qoIk^rnjAdc7x6j)NR;JXosY)Io#ob^9% z(G#d(|ASHbh(`B~+AX7h8ish>@hL7V1N!~9IQMV{7xcGrM?su}j~9d-D37>5Ryd#Q zqqm>`GD94l+Y6Z7J(&HgqdVp4Zy5HSL1*pT7i8qeph_TI#@&gdGJWW)y%@yA z9GHIPzDFVl1GGc>AqRtfO1tA#Zj{##2-IRhHGy!tmoIHU`xDvj#Aj28mkV=9!`qX4 zk)uMX~%xxJHfzdMmWxk2Fe%5s6TAz?7?kM5Ocf4Aww zsjmD(!{88<`}sFJt{{GHhx4h>|Ju~qY#PMn#SIwg5d$rts0RA+9&uGc-x0cnFNP$J zJNg_MucQ2A0!SK^*P;*xByq*irIhrmn$sOZn?nB|I)1xL-wBU_Hc23~->8ZTi z_&swe0Hp+a@TanneYdRk>k8A7O@6=~Q4OhI#ek6WR=GF83~$So`P)}*&-K3}nK|ok zhp7LX7F7qZW`Px!pF*qt1h+a_tb?!8L_lI}zFFHaJL53~+R42klURQ*Aq z^8)SuZXF17m@q#(<8^cpoVyFAh!!Q(e#<1d7ktjXnovlHgn8DHEK+6 zAH&~U5r-&U_TW1Bh?0psmt=S~?w=dTBSP}vU=|B*v9M3>e(1T97WE4u6ta1v$6R*3 z)`|Xh=4_%t1u}V|H_clqgFJ%h6Ns|lw>`{AZdE$XqS{+o%o&4rIxF!54(XTRV&?1t zCp|a1=o9)aG}fX!Y}1c`Xc5#IgJ!zb@uq^YZhfki7}Ae`Ds8UxE2#3Og0=2k&HvZq zB@{s2_zs)&U69*Y;Hk@q)N4<$Ggxj2Yn2x#5akzz9Ffa$hcr7VOsw?B;r|TU=#B$ag`U>A9 z#XIE-ftisPUXP`kHdTKM@3rae)NhW)U=mT5`GFUT_c12k7$>WV9=2lXTg(kqO?9M; z#Etp`yn)t|+h_K^k_+5BY7VULfFI?Kyq6AdLUGxPRMAnGS{D#-`j zE2!uT-kVNSC6&r~Z(8=E5oY@lF{4>g52uYKMPl{$u(qW2;5WOfu{4&ovSL!MCQ=rm z0@9A9MdOy`LetX)<4k3RM0XzT-g&vNn<6ofH09~>s~WYS?A&h=w~GeyRIiP}AG~6J>usZ`Z<~T{2L{f_ z?C_yLRkv)HTKaY!5C3kuWwSt;@*dihaIeE7dzNG11W|63r%|>4znJ&9OFVzZ1K9I% zl&NXUC2i}dx_tl3?Ddygp)31;|AF>cxnzI^u=9$e?Dyt@ z_q&v4NG(E!6NTOX!gdefMV9Mru=~@XMW!tAcMw=YlJOy>>pOKU#|?uU%3At zQ(qa?X3#8Lg+fay5-3h_r?^9L3dIS*0u*<5ZHpBz?(PXB5Fj`dcPF?McPQ@g(f6Kv z-|xqqo!yy?JekZslijo1+>=QeB{Q)|Rmj~!$31S<^ZAvn;Lb=wgibyZ`(?h{gVQqn zo_WDE=$-1)(=(D;VW*v?yfS53NsI4@*)K9OtEJ?L8=#TAYk-ScbDGyX`zkM)6J`r0 zb0=c8LX3rQhT-IchZ4G3Olr@Bc=xBW>Y4r*FD{t1_$tpT0(u)5PWt@hnOfjf&bxz* zCdw7d^r{ogTbCSGvss3#tAk0E)7`HJoWa*xe{k41iJgWy&N1P(L(kSBMzf|y@}`2- zBJAgLB6+f+9bF;2aL`ni*h0F1%l)&8Q@~7#eC3)CubGW{g&lx|nS@lYYsO|^y3i;Z zIz7@=pF;>=v_D}ZP#lVa{>ar+`BaRC9~pT7F{U2*YSGn2Iikv$Us2Rv$hFH~K|s60 zV+Mb)M|0NiaCNqR%}2mzP+L*^QfPqnl{a+A*AHyx#aDYLMLI$yH`h5f!qzu{%N0n+ zkJ^+2M<%IXFUHze&USfE#5_c(-c2dB1<>CO;i9&9I30->YG8hL&!oYirm2ko zS1?J)S9XBJo`S*8rr15flJQu&5L%AEC%4V18%|t&V3Ktqweb<-}}Tl2$Cg zx_nkZROiHi{yg%7x@YVm%p{7e%rH%QI&|sb@kJ?mu6c`=Lf)9yH|nKf&DOlne-YW$i|f2k{TxZTG?o$q*ee)`_)DP^e(ZyOo@ap~Ue z^+``DRQ^a}Z+`gs`T}r_Bh+woGFPh`Zucuqfv;yUk7R9Q9Lvf25q2M~+Z}s^Q7os1 ze3CUcX}%uTY?3vC$FcB74>}(`xqbxLqbIbFE!rcfJ$lIZ*xEggVLgKBBQEm@U5|jj zK*<;PsOC{jnZ%>2LXtJjf=75%>8A8J_7B7#pV}kMR`zX-{XDDt&s(y8>nxBvb^E6O zp2}dANW$~O;U-p{{6`$K>I_N#S$*RW##6-47{jN%2xi~}Y;S@8$Uu8BG7i0mdac!| zr+qEn9u4Eg&!x^-n^EvLG_T-EJ_C1bxgUS`0)I9Gh!LZ^mTyJ74l5-;9(we&-d^#+-mq#3rMG->aqX#b0BhHD?lQ%-{Hwr2^hX|6`u)g(IJXRX z=Bdu~d_IZQ@wNN%;pE!>qTeaxae;Vs@GW9`gfU|(fagdWU;Oj;1%ZWwb&TfYD9Q*E z94E^2f=uF?lu&bK2i*$OmT_4QJcBkQWMvIWCZAZ^ZDWRu1pbnAnmu6LZ^q|3qBZfR z+>Isshcq0fr`BSI`#ZAWzE`giO_m9>n^iJ;@;?mR++?o*GdM`(%rU-V-uiTZZJZ&FeW16 z5DltvFfcD|>?VG0A@KK9*-M$CeBo)HY<(`qIa|i_UTezjl>yqj;KXodLYHq^z6nPQ z;gC%ra>2|EMI>FA3b zoPJtw<&wONz0o)NTmbkz0S#@)iXnW2I=$h~iMK*aQbe3-%tL+mV1NT)@X}^)h?6p~ze#cpDattyj`r^y4PN;W&BG816mV-`E+RFkGE2FhGirqV5V&g9o z4E3M;RRAGv7oP(RF(!-a+^&J(M@J69>9ic8T%#&rPQQb)*Ucxs$_`e+F!@!w(v4Z-O)0pFD_xjrRL zXKiR#FLW|xh!8fm$DEyI0%)pSjF|I{tCW+P_5JmUH)d9DJ2QI@u7o>o%)3902>B<- zugpkVGyE;A-%FzQvAFa zkx`paM#=f>^s@?;wkkCI!+71ToLH&BgtJ*46-dvEQ6auWOY~!BKbt_RfRGTE9xDHw zOnfcm!K!-iDw;F)EmA#2j)u!8YGaCRo!yg~e%d>Hza-Q0tB_Q5iJff=TNK@x>_eyb z9qy7fwg~*&2iS$9PXzR#r!2y;V^X`l`Cu|9~5u- zHfGuFP^g%#zTs$U&yq~@7pE13Ih}93r@TaBNv?2w{dFn_r1R@rQ(k2r=rnDhUkN3` zNke}!o%DGGTRDUkBVe@`Z;gN5M^*k6t*WH3w!nTU>f_|fQfe)KMcTmX$W~SlgS?QRpI zj|FU7UcK>OtrmZQzO{Zrbtj>%8@+&4VM`B&;UyKTjT2IvczOLAWC{ zW^VrKaFif?!*>J>AR$uCFGGkGIGlGSpNsgMz-Bo{$K^yZ8d;Rpe`x54cT=@( zZ&j2uZJoQ2#iXt7%zRKCf9BV~&b-T8-o)fkU{(B3(p_Qj`us-nOTJGH2+W757mT?u zbXKU8blOO$F{t~i`&XwMcoa4k6L?qOyDYln>$zFvK0nM3VE$_0fNg+H!GNm#lxF%T zsn4Xp^tU2ruS`iM`Yg-y77aX8H;~9RzJ3ulcE`_fLDJuJBBW=3`str+TFX~si_SJ$ z0BhA)qbdVDMVA~;r@s3#>e6I!LocFnkUjp0?@Q-?;4<{kwJTc&R1T*Y7+(AX_Lj>W znhhm<3I@KEVcG~#B(sc>LFW-MOP635?7T{?t*&Y~tY`9RJnr0)J%O_AqA^a^`S$Rw zMlR439M!Jtd=!z`6JSPxdDf1j8fm$_hWU(Q|L9Um|n!IdP zm?@1JW$m*0)|hVV-&zt)m`ct6wh%gt*;wOua_`EU-jL^KN>gwv9o=FHt14t^P3c$> z@eag=HQz|eQ?>(L*u zKC|2Z`O=;8s$4{~v=Df*zQN91gGAanL|p=~(KMiClP)L@%z1hnI(0+4=|4 zbu{L2SL?-n#TUEF8%!QC47^ZU1Gb$^LWNrD?TgVR-!pYHQ_kKy& z5v+$jGpjQGns}~AEpdWIE37=8JN(?%ttVG692v-Lc*O>}6gCtOZ~o=v_x(sDuW`l~ z@V=xrc3IEd@I)ybO2l?_1vEyo6AwD>qnWQ{M%}5rsU_9}iyS1pNyiR{o4kS({oHV4 z#nT4c_V08Ds;6nOf4ZEuD~pGbt9P+=Q4|nw3kwrePDYoyO&QPL`;x(99BiNZ>-sR4 z?gNe%qzmf9s!b40@aqnQUrv&FYe<(8PTZ}o)Q;691-joXTP`_B%2`2O%o z3s;ovqEy?GSmp((uISlTu$`q8e7%R2SeI(kGH6 z{OG?oR(sAbEuIAWk`k!~Ev^XEPs4UxXD=Mdk z-X(0GdX}D@S3zJ7<8XsqTUD?Q7c5$F>O1;wVJRw75s?DmsLM1)=XL(VGu=;Kmo6N{ z>S^Tf#?27XV0vb*s$rQKu=>`!Aak{(6a*Q)2?QOly@}GZO&^jbQ^z9}Len zMKPDkc7?5?zVR38D+pu$!ZR7{mjFf-{l$5$`)A1a{jLx$wO8AA;@|zZdR)a{?%PrZ z-Z_i)s3wNWqErNVqiU7QsglBCw?t_EL>I&=@(wHXKLee*q%JwK=}niS3Lc_(z&m0fdgDMe{eh|>93i& z%;<)RzMeOE_^sYp*FNhW7p+~Ay4~r!E4;bnK@e+Xab7$~bnecq*+|mvbmk}7OUa*@ z#<_6S`$Y_=`PBdlRFAxP1$YbK6#aWQbygsfrF{Z{(I>OhNdsGG-P4J|BLmH)G;E!c z#}%JGM#+KR*C2`(okf}Se^jc>sFv`Ot)w}}qai8aJl0hGI3_;IdS4sz#mbjj|wO@t9KG)&;gjjT?43HyWbl@l3Y$}r# zcd3i~J&Q(eWR?EEeHH{`%g|uUgLkBMRf_=>BAsFvM3;TvJs1r*dC&6+SByon*R*9h zAEZ3`ZyG)kN>55lk$(aG-hGt?$LebAD}g6O_&9jMNN22$$0T#iKX15ZM;I zV-ekaH#|bsfV^c22{Xn8#CZ*HYuI=6qieNjNa&xZ6FZA?69Jzn`)|uBPr0XEvX8wk z%G2SkE8ZE2LE9UQyG*wGEL2`kS7mLGo2p|X96Q|K&3O{$>kXV_A-j(A5OG%AS+6$t zp@p7&BhSYkk4Y(AomV)|H@f|H_;oEK_(QWI;qo@lhhFA$458fJMpFppXGWkJ%Y@e- z5B<{#ALi}38D;1`6bpiFy6at+eM{eDcA}J-dR5J)3!H9Ex%?7+Pu^{-4@yhbXO{M3 z)t+(7U+Ko z*71mW%ZgoTNnr0)6@eG>h4-c2DddfYnFeW@`&av>ax_oom}_E9{#VQ!&8J5qM+2ot z<8WbYTF-=tK7wAiogDQ4F&RwnX zF=#uBvZ>sF^({AS1PP1AERTL2oxaEbZ_lxXY#aKZKWvUF^TWx{nQGm7c0mV%_N_Ng zOB*7YBiCz%fB%pw-(XB(|Fvu^3TK*i^n8K_3UL`yuNPx)bIz2X@k-FkU>+RD@?z=h zE%y1l`*gPRFcsPE7|!%=Zf_aJD&Qx;Wxo<1*(dig$~yH$-pNVQA6m^R>LXPa=^MI; zbs#(6Vh1Bhg3bcgNbMnjl@Kt+2$x!|%Pat}kk=Gn+7|OVY#w$aR9WLh(KV0=p|T~@ z-CD~<&E1StQ}=a-2l6s1zyR}+VO+sME<~Olg4u6i=UX#?yCx_VS4C~(^@L7yOGtH= zqBbrn*$mevV2>+&tIupZVU9y?M=3@mfS<{CY0)8cX%^)kx%d8ofcjk^T+W!{gmt$G zEF@XYNpv*sUja00N)@%QFsZ(KL)?aIqp)E6esYOhp)}%TbQ?4fpr>EZ!qb0^!s#eA z?OiPeUft)y_i(xG%OmnbESC&Z{335ZGs{NoQ0~=l1g zxhXV6NPiKUiPWd=M|PirT3Gf85n{1W4s=l?%^RFePp6HKYsu^)e?EB-HqAcwt)yXN z3%LI`eZJf#e|)k;;?kkf%ui_kUsc$*y~Id94^s-*e$l*-CV1x7WQ?AtPpOJ-$L zr(Qbj8`k#3Sx_2eCZ4rHiVekTpa5q@A{*LQD^|OOLhH;#gu#SsTH4 za}~q>`G(U_yKU0pzYYhgnzVn_ES8nMzVFiu#<}4)wRY>I7Oa%MryI7^Zkv(18RsQUc#wnehvN5|D&a!TgDvY=5)Itg9W`Lf7$sGUMKq<-;>xm6~U(4l$|@cxa-@=Jb@@T62_QuvAmzI9a<)O+Dgssb&$QOl$&j#ERM{7SMf` zDm8fezMf%GRdepvia6JK+xfDHQP2!<;!_vEvB`S6n7G)*73yqptJBycds=$^+UvLT z7zd2a6GXXc{IolE>WxYRUwYm)>0Bq-WrhU0=<#Uf?AW4Rgf*^E{@eiG@Y1-IJsJVL zlEkAbbaDPW=mriMFL{_ijNAG6*AlN}J@qA>mADe1@-r z*c*3=LODKi_t&ZoXk{gmV@$sAy^ z?T?YUIhZb3=N6pQnSN8OGFnJkS>HQqq=*NCR$!#K>k{*LF|2Z``==|}YY9y+v)qRT zU_7vA#>Lk?B@pJ5J+b!|LBL^SYG zU;~wR{1-;RE9<+`H^^_;n2&>gk&6vt+vl%+@cqeED=U1v2~H zx2NUVFr%k|QsbBMO{iLM@2#Kjt z@k2n|Iu-Tt5~r){ma9#hC;P5khuP`bi5~~p&#J@bL@pOG=ezJJ0&~Clho4+uOo&$P z*2&D+bCcDmSzmX~envE_-SkREBmTrZsPDvIMh7>ZCbfU-_UE$59v2)FvF>0;34F@z z5L_{-jU}xf*>_HU;`Zy_?}Pp?tGpBU&%IQVm#Owgle$e4qA9zdm6uD{TC8{I^P!*y9+EFfX&UI%^(L28eXs3nvy3 z-%$-W2pJ#y-$sq&m>v@Evfv3^Zh!Jgjk~)%tlBO5K&(A)RpEB2&}b0UiD2RhIg@dP zYw}k^Ump6Nl&=XWM6dO;d90bs7hL=@S!#@S#c8=4tYmBXSk@kPQ4PaBN$9JVxIL)X zN?c7;-as8NiNv6a-!SuxRi}|N4#=J8T$7R0pPP^89j>q5kC^6n`&d@uV=&(ZuMuL- zSaIr_6!+#0POOb;#t~6VDw5k5(nZ!obSL>$=W(rHKQDw>7wac|q3q@NPv(LbO+ zCVI5bpX60h|F`lvWtBLG{QmcROr7G#xa61@B+5U|(tMUkHx|#-raxifOGda%qKU4$ z_NbiZ-rCdaSH4}sl1g`OABbOI{EGh)UaWf{NAg&1tnwqIl^m@g zhYli0Auds@!F`Fqq-d-0+#DYbT>`B2yji3L0|hEdTJow`UyD0FdZ$2I(zBTEa=%wA zWIeioGz^*UCqWNsQlO0x(p{tT7|J}hA8qi3cw;lM=mga zW6z=Sx$OLwH?$93wRk}9R5D_JG(9IW!YtVB{D8+o*Eh`Zr$6CxErBj}y{fH8sMWZF zhOU0@>^UwfDydlCBXp+#RO~YJ2OHwxB1dJU{Q|gn7DvNGA(bN^#UG{s$>>D|+1yAu zC-S;Fh;~iS_s)dC$iEDma6`oHU@TN@8jv!Wj%l`$azk)+_lX{ZwnE;D-%{Rl0eg8j zU?BahiX!1BVEU3Y?SBl674>-9<)E-%T~&6lp)dIBY$2C_!{|m}Zk@3Ea%tp1A!P-_QP09aUYxFcTlV4W&PXKPHoo z${lM=RWsP*!AWZ(j35SHs4nJR4nUb?!l?yu?8ugHXxcvNAecwnx^-=u+;H%Y_QawS)E`% z9ieBT<`-qwu)_K>Xf!>}FH7G0O5~XgpoZ>~=sQux?-x@7ZshGi8ui5jgmv?S(AGMc z;_}>T@E$EjhpZ<#->-;f)&{}g{6&8b0;F`NMW%s^5QPHdG<8Bhr99#Lv>|_uvO%c@ za$;fVFloV!xVnpN& z+Ljfa3mYaz@EReYAB30&<*Ia$m6vTEkzrg_samBGayFO%+@$f1@8`AYqRtad@qPyP zTP1TPW@bPl>^k}h`*eEG%uIjY?lMh#Q?T_LX^z&lX7*fFUxoSS>0tLjU3EQonmE$m zoHo!su#*cFlKy z51XlCe4f%|rVKcG)gZ}(w2rD;h}&lAxcD^gI45-S?NKtZ{fmWH(>|L(Va^vgy68B} z=9VlHD;J7=q_Tx1$mGjmH^qD9LFK|Xk&tb zc0{>fPx;@}L$$-#UP0Gx`n&XVo|b3U1a_OwCVGWiXQMWcKcxxuq7!|ycr(vzscjaX-?KoPWCtga=ao8%C1XV9mb9arnexuQe$ik;B zY$9uHe+iSr>!a_AbAo|RL#I5_WU^aYcwt%-@Z|A(i5WB5rP0xP=+fzS(27E2hR^*s zBSo&8JqEW)fvY4oXg~7e#B+%A@NmR9xc`AeJCof}p7`rG-_v)?zjXF|;j25b_6DQg z7cS}VO*hnRhbN`ZGcXRviD27rptq)A5n??>hDB^qwGEFiV+oAiM34E>u@c1uzM|RQ zc_|Xb7?<2-+G`#-z}9o>_X)mNENE#A0>y9y!wR+VssnkXJ!i|!DCkdpqy|E*3?m)Z zNvx@AO(J_7y|vZF3=jw?wD~{0fIxVUyPS%+9&}toFvTGe>k3>>rd>2QZ>r&!^|L`KER}MUPL|wlhlNNY6Y_ z#|kF8ra$s(EZwjhYvOnUObNz(bC_q%!Ryea$o=yl0b2~Ep$8(-3llXPwbn{bt(y$P-cK{}!N z%vm(dJpNgHMe_B3>d<|5VKg#LM$H{sA1QKkOug}#7Bt%+f0usp^R@nm+^mDK6x!ShX98gO0aM_CB^gL$6E@+THM&c5;V!pJ zs=KSz@6lN|ec8F@(Km-`n0Kw3xysZ08jswRb-=zyp`L)j3B5)2J4O3f^~5==2^mmw zNUfSbd~*m$u|Uca=TePP;_UDXxl3Ie%|tzo6i7C3u5V^?;|YvzJT8L^>eH%u(mqte zq7CoET0;c1%4T<0fiE6Bfcx@=ux5x1niw2DVW4F1ZQyFdp7c+e4MoBJ^()Ohiv}1R z;(MbyMS2>y-}KC2K~QV2PZ^&N&=> z2fh9OzCX@t5~Katx{6;x|7odK9UXL@qf(ZANW~+UqjQ9I|8r?~kGH~+`F-*icb6i` zxxr5ebMuXX%s|6X-BX7kfjijWAJ+4$XwfFLnGSM`7(*O%X*YQzTPLHtb)(Y;)EA(% zm58B+(xLauKWv=I`1(l(kH0uKjo0QMJ+me*vusX}I`|s~Q$1@HM-fUSd=Fs4li+!Q zj*97fBi|`+4kl~opC(A)ee0LyE&re%Z68QPHr!}_+^>gz%8GH+cGI6RGdoKFeB%t& zQZ=Et#SAvM{}}LGtL1u*lzY%H^#j@4V@?Jjs8MTsEn5TawM9h2Q2p2>{EGo$rtk0gcZj2GWjQqlcSe~cWwT` z;67*0Ao?f0m0NP&uT#=AReWfkDK$06;Hv%2F~0?vTNK@sXkrFFwzDq?1)H1y$r;lI zsa1^iijy-jzTGJItESK>yj~k9%PqM+?xQeM*%Xo%ya7Jl1>N)->gdELi8H>U3GVD7TTAxYX!@x>@=LMWJ^3(jm?f$%MV zw0J|5zxehmnx{QUq3huQ)XjU+{N~Sav4?w!;2H2kpgcXgCu*@CCi?HHtY?C3)K69Z zZyvC>gY=(%fgnhx!<*2;;&7{-3*) zM|&w5&TaulKdd7d?Hr!VL2$koqe3^gf*|Ai5pxcTGeD)Ti^$HLT)u08Xyn~2xJ0(a^ zgE%6ftEFxkA|4)1oD`*b$(@DRZ^4W3Kd;g;<*z7}iSm6Moh(L>4nZFSwo#5ML1O^`h*gr+ z4fL)S;p$4Nu@R7SW4Lnc_mazj>3t&h&IGgm%k^5~wr-RNh>_c=Q?lTM9C4L>WeC86 zu;u>qq3}`IucF+IfXM*d;1;e55inBXBArxwMYm0NdNMIcOwFPy(Q? z?B6bWs`OCK=F|Z-(HGpL_?1>&yKkyp2io2Tmi@@6+*dfTk1&7<6#bRn5%6D~!uYCENGhoYQFr%5UXbWi(_Jwf`a7HOR{QAf_=|-sgG5`bllo8~>DDsmwac%!KpXZX2*{ zzz(~NBf;yVJq1rR4#ezYHiRnq6JBd&lWe&JARrucW9Tg(%9JC8;*#j>byG4ZFkDMe zA~KRUIAiooP|ZagKlVyJ3M2uE$lXawb6VqdW-=xv+Y7rkJACts8O2j;Z=oN8O~-b* zLXddegarL$GDx`>X$HKpdpoKRVmFo37ooC!oDF>8YCZD6cpOnllEC&O(=ke9 z)nn6?FRXHUuaV8_Q4S0gq89ugDUMb`^l+Erw!Q#Cjr3}UP2iIusDfsrlL1*Dh^PS0 zPyJp~7TzDAX|p*nB&ea^>p@#d0w94SH_xM*x3}2;8CAcxN9OCU!B_w3yI4y!bK z1*MqCSs57mdL`fO#%$mS6IW{55f5Nuv7KTJnA-n3wI5oV*tZy!tu)tUcNoP~AO)E8 z=JO(4|1)^QJNF*1SCG%b-Oe6hvZ*S(AUd;{O?{I7z#=A?#1$Ek(?N%@S)Fk zUN*%G=A35PX`Jt-@h|UU{Ol`tgQp-g1Ce~StCR;=-tNOg1ERwRRA$LvBbXyb9s{7Z zT}bmX*X{GZK;neX3YGv^WaYWCM|NgS?fD&O&9_TLzgK?8RcY~TTxOyj+$ocFsM%jF zb5BI}P=&#^-JIso{VpVT2Q!E1w>XMGB0=1^)Prb38>GEoeBbOX(SjFk|C14{++=<` z+%UAIi@Q>Hk)&%cG{IY(`jIc}rSy4cH01?wpJmAKZKSh`E*RDNCa6#AGskl{EJ7Mv z7KI}L{1yOV58S~=X)|dS@uL?Q6*#}$S%a#l2MB^VEw?G7;Wm69%v>zYVz9noGpa9R{qckMT*Zm&Vf`HNldv&5CqYaF$~pR+m1;w!b# zy;~{F%b(B(6b2A)7?NCH%A1!uIj9u4P8O-7S91g~4#DeGH2_5vkHQwB2JpM_=@YaZ zRZ>>C4M2@N0gO@U|H$U=9?70X6oveS{0*u{$*n{1)aV4q8^5`1qZ#af>lKL#*?Fb^ z8zzge>T}*msnHvCs^)l<)%SdMt5g6Qk?!KJwTw){} zLEjm}5Q!7C-=ZEVpq^OPJYdY_=sf+lD+(L7{0aRKx%Kj(d6ew>ifNxz;qH9_-$b5n zcC^ks1li?lMZxByNygL;0pmaw9~U#-0J zKvy42cfP?v`}y-1e-x}vAq-HJGpn?=ap>D13#b#h%_&6i(hK#u&lmexltZ{l-rVq& zSGDAa4MPEJUN6*ELR&fHd9%JP-Fh?n91%U%*)CAP^wPf!-e>6z^r}{fi;=rwUpO9A^49&j=Aenv?=5UMpAnvpNO-&(~xK>>=? zU(Z{t?F;zYxjNr{Y2j*=r2=E)E?~rSfDYlx6GSViYl#*L~5L zGh4ogqmh{1LC62O)!FgLWBoMv_1G8`i0``u)wcwGbWyCH%z#I7ofxsmUmh^ zZ#t$%OJQbj=FXIKlCQJeWjSW=GBTgzwQ|iXXLreV&56}3{ z)ucMt$1W*yq7+a%RIXb>AJ*Q{f#~V8k_I-j1|TNgT_s}52*!_Q6DX<C|LLL|ra?dS6=?`uAPU?;QdV1<#j<#D`U^Rq>{2p?zu zI{MYQN+)k0;tP=#XZa;7H|CfKJBVgRI`aDR)~foXB>8NLUkNzo8tF`5R0ilKa*;Xs ziVt3K_VBa!{9?Z?0y~d&zWPvS9g1A$*1?x#dT z4+0a447_>&-{w;O%P068J@idCwVUpuIJv(L1=^eA^~Em9_i~4$x7O92nj5oj z^s42$QAF_@&qnr~zG|}2F+;xfhdpdcCnJgb2E3WGVx|L@ywk>+t5HN$S!aLrcCcyq zbRM2PX60AXw!IsD|6eW8U_1ZG<$A2h??p@q1INxM|y!Cy3TOmW99ijTURJ zU1L-rqf`yPLDeT_y5Y`Nt4T^i=!ygV_sE4@wfoSA2!G?R#q^;vb9HZ(ji+Bl3uLp>8B(BoK(@hS##r( zy_&N!ipfps1Eq#%8CJul3+Qe3!kcE>1UJ?J2S^9ND>20b-eY}*B|+JSStEn!wc zYkA6v#b0zygoCTSz8$iUne|W7pbfGkGs54Ei=Ian;iT0!9pi#ZPhPJX5k&Yco+7jk z(%jC!R)*)enf;NRIZhEm`F%$&m!ud3o7#?=$E_HT)v7X*Jp`b%&Z&!P1OELW~PD?Mhua3*YlfrOe{>`0$p_Q~Lr8Dmra?KI($wUz|IH~U-T z=+i-UtLlzX+R^lhwm(vK-}@{5v9a^u) zQ1?8!x&(@=Iu}PX;)6h+x!JeqTyWP23Ze25@zOn-(Bn>pfl4`TLhB0f)Vkokx7w8> z?iriDXG5$%$)WB>kC{8O^ad&Lu5a?|=v)~$W*r$^Z{VuE?m-zn^^L3mn4Rdbr3m%$ z)?4)DYaEN{8GLc3ZD z-Gqe$QLua{WyOXg;+CN5h_mS@t8P@(rCnV7*5McKJYx$T$<$r>7m=YBuS}F{gESUx z_vJ{V7Ss0Sd=*21+krPQHm1eLO!v|zgD!aU*`#5hpiU9vnM;1*;-8tRv8dtNb~z9K z)ZOBcTDIU)FPf`_Dy=CYn^uOz#O%$V!K$qLZ~vx{ZSWpA%nz0PRoI+;4pG!vH!r!1 z;NQt1Tdc(SpfgVY)e9dL_W`Zt_qhFEPl?h{W6Ls>!6(7v4kPaKW0gM6?4J!HmOz6s zJNkp@hT`M4cXquvI}Pz*cW|6c&T!!d@wOK9B4=S%t;U)QL^zA7C_bz_^XjnDZBEWp z(bT2*FoDe(hFyB(vg#x zOCH<)m$oWdRqh|YSsr(_^zNJ(&U%%|ej21!-pbFBAHoF;!;UGPzL|G;Hwb5K^{s@? zx`+v^*49imMPDTuz^1q4NA6LzbFJ14E%%feyGFLk&)te?)fxKK9SXFSj3Q;Ml`u%h zp|;ceWzWDBzOZ^i{Wmh(>P|cpZfYr^X$%eM`UvbHe*3pmYjHUgvJ;~6UAtkb+egWr z(x&RNc{=T=;OtZsvfoBLQ}?e><+CGyy6HSvTky-7hLOr&!k%CAg@zS*X@iz13Af0$ z1(ZRJ=HG3ClDOTJ!h0`BC)~gshf4f+--g$qDMIVA++*>2T+|+$vi3L&2Rf zCR)`+Ky|J!9Ezzuv7i-qv#X-8YX2%l)~X#H2WR*n zz;H#j!VSfbUL#dY3Zwf6ZpdKx*8u7DbEy-9LV2UZflt<6?gub#b5+(j3k|R4VJH%K zWDe!tdmxyJOVS4U05S$;Kp%Kp$SQn@JmVvj8GirBy^Y1gNbVrT0ozhK)@ekppo;LF1$8EONs z)(h)#qJ?p+sgG-i7~oL>McH)&gM{**knW3J2W!Xf@zWk|jf1n6jU9&Ak0?l|T2sN) z{K3>|Yy?b(+l)ldp?}V$mlkw;H&EwAJUG*kFvnrm3Ri{j>aHf1jpebR+(SMsffHv~ zv`V3PY($(GK78JHMpeMIeQn%JyO5<}XY(PM^~E{!QY-N!hf&_gX5v|kPT9+o`aU&Q zb1D^U0sci(nBEa%gtsSK?N4qB9?iU8d#BiDf}UA&<+StegX*tXX|qOrM*q zI^cY`M4wz)$?Z$()unrw)J$3cFF?@0?TCj_!;Vq3SI8$=+8Db#N?uxvaR`mi`!w2& zh(AQuj9(Sg3sQBkAx}S~HPXZZHA9uWHX8j13U#Ujo0?eCbV~1x>if*pL2)s|YFN`| zNlqplE?=2C0_Q#pe~d)|1Mbb54o2y(nzgyW$yNhrQM5nI6pWiiV;5&PnP*d&H<#b2 z`>wzDYn=^KW##-K(WWuuI1=RxE!@HQEQVL9VpVc_$(qDIKF12^GE%R%V#4bOmk`fv z(qpMd(%KJKmZ1Z3C#4Ik(&gc`39sf7{e0T*^0|1-1pph2Ab|PX{(Si{hOEeaSMw}b zV2LJcB2zk-q07Nv_W=gPY+H)G2WiLV^OTGz%W&kjC#z1C#$idX>mJ7fwcyI^Mcw4{ zdq0}=7WB^sM=>JJ2kbfRMVi4}^GK$NT|04OGSnc+{i*n@9cy6vr@Z?6EEbjv=COpV z8&>8+=3LH7ja9ti7@9l<@ z7V8VokdH;3DZonm8dKdxoeoj)rN@p1a5 zNn}1xDNr2d-_3+6dViliDT9pBNoBC5B-|#OR5n~{e|7Y=k6XP^_mjmRt~vQ7Xqg^D zH=q3T{w&tpPn+E!QVUWTVayi~Zm@DHweOLeGEwA}rU=g{fz;MJrQB0;ozI8v4{I-B zw6JIPt66rTN3u$ibQ;}+9SrXHl@M_Zu&GD8pxgAMD$pE9X~n@i{1+Ta%a!!4>z;XY}2?ergNq^7i-2Y8kPSaQ*Rm7*7t;s)}TcSEn2*I z@dCxIEe@p=NrF?{-3d}kf#MpR;FbgpgyL>Ng1Z!VcfbAp*M0AMKb$%1>@|DNUhA1N zd-ho)n#IN5O+O{?BbDWE>ppEi)IHG5`j01nOV9Wt*~o2N{A!e-_Kv14Ok1$7x(A`z zvJD%!8>`9kjoj!tmG*L=_@n@Ic;KD&OGo-mOL|n0YpGx+RL^#GOJ8D~T9gQj6+*^4 z&Xk7yO!uWj&u1_odOyP>kU|*NQ6bs|XZxb7oeH77ic=tX0d;~oUE^nhn|QKjzSBv@ zeVIu3`S&ibYo)i5w!lJAI|kH{Ei)sv%I^o&+tZ+Tq0MiK#Gk#?Y?A+@X~-vYg6Bms z7xMx2SGx%OnJjFg!);xo*87^%$vpj>Y8B$$ERQGz`w1+%oi);vb=R2BOa|vD_v=RC zz+W^qo-Er?o+KK;rbkD1RMJo)Npq`+T3X+F&3oZS%A-Ap3EP=GxL^fGWCz&MuTcSO z!HM%ea^&$AznxCf%tVAf%A+2$GzAXo9RFavM$qh+pjFJlBn#qE@+qq_nW>f`>MzcY zG%8)B3MdeIx^|-Q8WQ=;Oj9@D*sG(kj=|TDq-i=M0>|m`czm2o0cj>W;(Umtav*kd zAWG1S=lM9wWAUn^@U!?hD-ThH!F17cSmAIkQnCMM&*rP8vQf1qNl$@inwT7U3*t;% z)#G%$S$(UAz#rRQt5b+&jf}jz!7k&-(4^z}=BGsl&(IsMGq*V-pIP_G zJ2P`P!qRLOVLl00U9Lc3yddrE2D3b_4NAE%n{YiwjaLH@yT02+tq z3)`-<2D9YyuG&eNp+eefFz?)Y)%?2JM9-j$$JJ*0PHd^iD~bP2lh(ws*-GEtmfO`K z&4&rqb-M~AikJUegS&uC@pk0CBqa0+V@hNi%}>ec+Q_KIb)WyZZZuIfR_SPsRoVaX zkWPGb7g3f(B-8xw?dm}wDiC9$5@q6-t4C44tNe%z^U1Z|QQeNG);%D(f}pv}A6woOvjz?`0>q7 zW@S`(weH<~`h2ZHRpf&MnXTim_s#WGvSo%5Bx*)ch}z=yKKITF*4kg%zLen&)k)Lk@9r1<&%OD!FV=cr=~B7B*iGKphW*C(pvhZ26v=BB*OoU=N-cYd z(>zc#p=w#Fu9dPa^r~k)wX!eEMS?9fIyVF43J^_K!S&P;}0@+{u_N3K$ zwR1X3`6R$nL7nMwG~qqIe~MI3A=o`RCBxTWae}>!!<4Un_QX}y1LJx?&1DrrU@5Cn zS3u>Rg%dg4lpV8g#p3(ek}lJNa@qPfRBE^`_WWn!DGpbY|F4_E%SJ*!>D#Z%wJ{SV z;zx4A8?W#0h@Z`+{%96k_WiJ&(UaA^ah`zv2UgCiM(Xte^NMI-h%&1%8Q%%UGWz7* zzN2cY9>BEHtMV6rN+G*CAl`~elxC$#HB=AYV|s!R0$pBsc%_sML0gVT|5Sc?Iwz1N za>*Is2vFJ>|5mXfQK&^goI8_S#-URczRgPtc(G{sSh3Ds&sft-eIdue%4wmCzl=cy zABH*H`ZOstbfbRSa&r1gw&>9w$2H9!eW|$#Ocfgt&As`Hpg6ku@tuPFsf3Qi?S%8} zJ82)n!#nvkZFJ5bedcHc*PI?jSfdMuK(gkKPQSx|%Zy9eA^1lk7hUJFlA5MD6Qj{< zO+oU&zV&{0p;GFb6kE8f-H6=XFEvlZpL~?;(Ut0`5-nY31UXg7NyN*RqtwsZF3|MX zk%Z*3q%}WeKeRntJ-;bJ-)POTBfs$m^WGY>!x2&49?s<5rlftB+>z`UIp3%m_4q%* zBQD`KeTin?2|LPq6iq!Eh6Tc)^A?JUL56#aJ`zL7oHkDlcYetiCke9>6+o}24Dj^u zjNno+4H_L}dm=5{Qxm`y5jr&wQVkBCCEfl-pQ z_UZMjY5D`fLB+M&a1sK$m`~&F_LtAUeOw&Dw6uYj_;({P!$_?3x$RMpWVp-R)#Lg# zb>pl^i7GgEQn2@Sh=2avm8KAc1xd{aD`ilM8s-xDo8+PA0Zd=#ZF z?RhJ6-Ic=@WiDrdw=9t1yNcs4V*YCcs+~?o#D$K5!-=nh{C?^i{?5;APeelPqHigv z#jYvofzDjA)8lhnR?)}bjwo}l1=vSNX_<4E5#O{^!qH{tOh*V+ZWzBzxBUz$ChdrK z^q>naoN3;h1*;zvQfw-%`-lyQwJhhhbJqvaRVa(Z-#xJ~;P;|y1DAO4iW!D9>FH+} zIjk8Q%NQc&32!N?F7otnRsmPBn)YB;jzdv6GF9`w1ui)mWXoh#TRg~WOA#kbg5lTG zWG#m)-_E&h3q~##TTO$L6Ylu{L*?V ze2-BCJ@&M?C6^S6b0IXF|J$Gspg^CDxCIN#`vb+`R(Pb!)l2}mNo2BRg8_$|nuOBV zs_i#0sOeqza&J;4lya|x7(~mS+c=PoKK?7asxJqo*0xi&wdc{JCB3=TvW?tvoNHq7 zb(UG1Vu_{%A|s&hvto=IE&JeF%+?G7C;x?*Iq$C=Yz5 zP$}$9FpL(gsGph+V)=GOYDV{3Lqc;~;uKfx*s6mAuVi6*TD8K?emHxK4(|DlmVH(k z+QB32@GbYa^v-TA7FndCPh%$os<#<|pv$JnYAbsR|B`8TDWx$u=g?>fNNHAl@`4s8 z03*G6=WO*~<`yL%v?{UqnRGC2*UWhzET5CnWaH*%j|jwmYs&0-8*XUzRG$dOeuCN9 zxHQEiYu=@Ktfw;eA+gH50~I=&AknonnhpLGv84pASP&7fR_gknVXADLX0!*zlCaWA zhEyHo0!T+BEDNoJJlD}i&Q!pwdJa`s8QVcw`?A3`RI(5+&x}~AKnfs z%vPUQ!d*@_^)w$qY{(wjP6r%gcAr#9)itjyMRde%T)pf<5^$AgiKA+_;`r5oXE>X<>o}>Xyc)s<~ zPu0-cXFtkQXt@jg_YdIN^2@T&hh}yCa4uuWnVFG8M*GQgwMGd=n{(@!Nc6btG3mtD zQB+Jw7>DTk-9nw~dahD<>pf+KY^Jg~q)P5U&c^lVkBvrZsjbw69TYCeSVm6=a39P% z4g#mp4~Ewe*G@3gk&YIq%Ch7dQ}#i7QNY3CKZ#c{n~+=l11<3Kb7HF$i>CJ^K%H|%b)a?b2H^wNe*yoE z<{AZ6xoDJ9|c~%ws0cKlM}kdNQwh53j|-#++n)MGG=FV-|)z^7>|e^jRwj zk&H@6Zk(o&xhfKWSFAt9ZoYh1@Vcq6C4NqDr`@b`bM)X8FJp-9C4IGt=nI1y?MuWP zkSm9JZNQhNp@>qD0N9g9HU}n{<8Zj3y4Ed!FEFmwVI3tlXJMTTG2G`9d#ML{DT~;D z7rOz~66iqbG+u{4pe>71(jY{Tj*$C@OA%nM?omH7d zXT44Y%zi^O>EEGlK=>-<1_=xIpV^XBHZfxs#V6*)_ve2{<(yqZX1um%zeM|_pt}6_ z^}PH0w|iBO{DLoRhJml)1ykjFi*4&fMkIdrlkSy>x&Tf%AFl-qUv0}qLC#kN;9hsS z_{(cvd9NZFPI>Kg2W01w#dm$f2zCU^<=Db-bO^32;(Fq&^PM?q*e~2A&nZnA&USXP z;y-86eK0Cs`3fEXg_Sn5&f|kthG~}Wp>I#FkQa?_M^_jUaUJb@$iaI~cxHjsB;IKbh}64XJk)U4s27x8r%41TjF6C)kH zF!I_@zK!Fxp}ot>eR&6~d<)j#^-ER0ybIxL3XpGGO@^EP3huc4t-3CO&beFOl2WR? zt=FE@-VZ%&U-1W)y!{JOF|c{>FOhwn=G2Wfr24V3p@%Z{QWD1ivup50iDz@|;X;Dj zHR8=oeJb^$%oqKd@C*3Mqhsx}VQK73+fnk#`0+mZ1i;M+tJj2IM7op0mBb-lQ(<0X zXZ9uA;Ct|p|6L({_j8*f&Kn|=Dc#hbI}vN&g4^Lx|5D1_B4HHC!@vg5TDr}VZZ0jY%-TE0f@yxdvQxIqq8hlK7t#&Og-f?#vSQcJ?yX zjf<1I7f5UH>R;rxJ<0qv{1sa3X2Osy!DyV+e_R$b)S0g4g(cKJctK2FocV17nKT5N zi1py*n3XDy(-PJX7+@}@IHp;>PrsAuR@12CL7k)iBA5MK-_fqW@cq5PAu_4L^aM^3 zRzb}rYb|GD!7vIQ-meDGK}kbLPy=2&+L5DQd;?5Sxm2eI#Z^u$Tza{tY;NKYo+;L2 zcC`dPKy%6Ob#deFl0ROXR}WBp?y=~cTE`bem!tbA+(&9!AGj>OSJ7loBH78a4TUH( z+YxB*VRA0d;fE&d=EZXC`V@MP$EyRdea3T|6=cZeWYSqpHo~E}I!dPU!|3xdN<&W3 z^_klA)`=u3Ran__?Rd(iRuoctZc<-%)B_IVHylATAa_y=nv<`LP#}W=YT~kbl@5dX zohf5FAN6MBH6pi6uw36PJzXXLu5nGTm^n=1)7s1BcMp@2IY*|w>3Qa;F%=J zRW|;$XEEQ64Vb^q>6H=S2L0_up$zgq+iObi_W{}}uT)_Xm)Vw4y*`M26FNxb1E-zM zb3oYd?c#L3Q{@yBGILj6PpOPEe2!a650OtKjouoIsDitJ8+(0?t0ze884IKiebste z?iJxS+I~R>FlXAcJ(-5wb|n+mT1o2c>^|GzyHz{>)}rNON-|7 z{(J%{hL@Yk+PZlDBPBK9w6p?&5N;D%QzhZJ>uZ#UMhPDDg=tCT(*3P5Bs#DMiEO!; z_KDeORd{$k2d9T47-K6M`O7wSUM7(qP_Ft0mN9`qj8K@UG4N?DTl809gQG#nyFH-qLcYWwxAmQ1M0=0fL-O{X=LlKH1!OZM_s|E3SO~tqoTLgRN z!Ii(V@?puH1!~GEfx7pf3)7A?-S4@(&`%!!J$C69k2sGNJMUnuO6mP&?fGFhy15F` zmW%u*Mi_vB?LjDm`(SuCO>deIu&z&FJG}$OA}XqO_v*+%`UEooAHhA||7z%!@wo>6 ze_=jN)oUm_nc>+?KeyL`eoRripsgDE>`ZBI7D z>}sX|2{c>=1K~9VFC=0S-iknoPMtGBwaq%oLwgYmBNTT5dq0Aw&Wn`Qbb~4+GXm!YN)L?pM!}Rz z_cav7gTcKB(V`^bLUAAsg2zdZg(IGzH_Jryt?q=jM`EatuG_bD-QuK0BM4#nXL8gF zTQ`Uc>P?=uMD_t+nI6+Jf^!V?v>MfHYVHJ_86aVB36Qz^2_ks+(oUKpN8E=s}~*;lF_IUpP4RG>_zwne_D`%Z)88tfSOz> zfQ!y(XV4iP?!zpln<5pebp@)zwAp2?5`;klH96d+fK#H2b0&j}c;V9M6U3P)s?q7z z%zR%lK|{{Qnqq}(A|hc6--6_tL@$SM%B7;a$&ASZ-`P3+7w4VHe9N_5N_S6d0Kh*l z_3v{|?c%YnDJ*esB|C&Zr^@LB%XG8}^=|beJiM8OMYN{^uJ*2Z0JoKRl#4{`@>>h? z+43gUSQDD?a8aMY6D~wN+gG{tVu;rOLj`N~zr!5sP49};h3e5+ zO9F)@gkH=>vV_Y9r214t|6RkTt?$0Yv+fl4#z(T?$vLIEHoA>5?KtK38mpzV=-OQYH*3$s{O+W&!?eaM2EH+?&n+mC4iMWzoppVb4VF zi;$O!_t+h|XwmSN+ZyiKtQ9`+ne+JNeim@Ziub)X>u9n^zDk3_R$hx&K8<@VZB?O( z&@9R1HEj(Vl{)BGp@pR%^gg?kpRz}&PD3r6XU0mJCjfexu^1~%#V+<0;_0V33sgke zU9C57Ug11`0vuH?7k-AqZH&lKUC}04y3HcU=$#9TwT!e#*XvEPKi9qC^BBB0)a~rg z9YT0wg4}n$TS#{*HDqZ!8Xy@>J73tLo*vi*jMHlgIQB2j+!!<7r%Jws2DYC#+ZS^z z&iYO_hfR6L#IJDvMpm|VViBq$sv@)_DV=~3-+|W7+&XD~v9t#78SR)V*1l76NDxO= z_yEaQnxqBc9wTIn-6L#dPC&Bj+VL^cN!_WLw#y+Pc|I6-K<3c+C zmSze-Aak%6`sLJ0qWm4A7c${Am3A+Z{`6Y zY6!J?UB&qGqLX%oOwTCL-p8v*SYW_?u57E{4T;&xXynxKYy?U8$8-Qub7X}qW)nwt z4?xS1!-+9s5BLzcTH4k#`#`Z2!N@?LwIOxXTCp46MXYF6W~WR zma20hnCwHo`Y>m$eA#SEYTN1Gd~7+RyxdHZ`mH9eIrq5B%65x2IM??!F*{FR9N$Wp z!UVE`9JwnImy;d4U?2NFLW?-B%0Ppp+WyN6!3yr__%-$a3+7H675sU4PttYwz1vQ- zfSbwsbU?cQ z7$>MY@9Nr0k#({4!ss2=@|6&OILtrk00AGtz;N6mo7N?Fhkg{LE%oXruA-X4UuVNqG7P)c4U56e0^fVi5wT3toi7xoVoz zGlbc9+kYLq*ayeAD_IN+)Ml;`+}^&s2NfGr)jDqS(NX1PpVD5+lxSG4kLBiGO|fW0 zBH8<3Z^XQVP(c%(MJ^KeaFC?h8{qC94yd_BRE=i@7(LV0lLI-HNeAHB&Ky&DpSm4X zWMn^3it8TwSa@T?Z=Gp>S6*X-nqMjH(o!Uh171dW4{cU=)yQ(JKPHDKcFj|14N^>r zf8W7lCi}7T$X92yr{0*h9DyDfTPa5@eEQ1sHbcYHUB~OGo#k1Yxvlo=VetYkDX;}; zq%cR@dJf~jp7*9|`GJb>*t6~up_+F@6U4=>|I~5=i z5bItQ7V;i374AK>)(C7`SgeE*EhGBV) z4>*$eGmKHJd+66H%~hy z87N!tJRXOGMhifNmJyW`p5ei|Kr_Zcw3f#ss-~do=xR*O1?{dkqKW^yKJc6_U0JF= zJxT9broO~7n{s9bHW$}*zLDx1l`XL+r>UL>QYO`Y6Al^n+s073KTc z?SZYX8J&)^{(|;yC3pDwg~$}}x9wAb%NwBq>qn73N)ff6fHzuFv|IysA@?Yj^_^)M zlU6R^LgoOg|3tPW`QxZ$q;>`jUVV5$lk;LtZ0xFidd}?iWXpap^m(6kqXV!HWW3&5 zKI5ulrbhGczL1KBly57kc3RlXA4r}2zi5nGyKAO*3m~T8_KkDsU9aNm6JfaIt^Onb z9-)L*PHYESC!mbmq8c|nys4}F5npbDEg*>3q)4Q{umf=$V?M49UKSdz;n$W>NM57) zp{Ch<>rdHt$=l_1Wv%sFm}6$FTiYie@x}#&SpaqlPD9EHmP_BRM{^>`#syA7G6C&HHfAci&u4&5YbT-otOuWsnNLX?Br1=qQ5qQ9*OzLxJ5d13fVAf!pz-PQ%+VFgz8eGId&b-F+Fh#Aj{4R#rIozITp8v(O)~xsHUdP(`J+Ra0kd!BjdY zyVT?@LIJt#zj)ZJkB(1J1vXrCPc@d&jsicWLwE?>e;uUV3XGVb)HU%(DrY)B(N&iJ zqk)_Vcc-Bij5Yc5c*nkfRNt`=mg@9AhSAIohik5wXMR`ANC!9`6)3g{l}Q~RG`xy2 zuRZ}uc4*fgpF`L8)^ElmJu-Y^6UW_G_ih`D`-OjH0>Pt*+( zz1Lp`I$H&}>e}giKEpk)Q7Bv26oeP|{VWWI9TNIyAP;rZ>u#|Ii+h7xZ+65Gd=;`z?iN!Ojps!Pkxe6o3=^0@1AUcOFuPSDiJ z%#1Y+)_byiDu(%3>ug@J3P5fik=ykWB~n*v=O6wCeA#Jq0e~ey+3E(dxmx!NkHDnG&7u z)KwY6apiitfWL+axbmOnME}PJ<2%O?gFrhUrK5M&A-!A&&qfT13q4^t;x5$VrTF1R z?n@DN^=Xd#49>+&VGb@Yl_KY|2Sf)UMzJNk3YDpPFd|d~!>px7;_>u0wnXBx`>V!k zj&>s5pqroLtLkc|@0K>Yy}o|aDC^fa@*8j26f#w{a!k+L6mdqs(xqX)Ndgd!zmQ_i zRm>4pKj-1d*nWKQRr2$~xRRwmQ;v6r<5$Wp%};c4iPkIU$$RF;J1@NG937~bG?-y4 z3KVdK!W{S0-yQ|x+rhfVJ`t?2#RmCNj#BJ2OXjf5Rb_paQKh%9#}5{AxAHYqVt1g^ zP@-A7(4zZ8YF#Q zuj#;GhG57Do0)sXCTE-Wi6Kp9I8cGD&*ru6YjQ8Cif`CUi42<4vKO5Vci3Fy8z-M3 z`mU43sc(kO^xm7ZY~$2N2~pqx+=ulGiDvPI4Te3aq}a$0koj|enEy@lpaYPXxME%# zp%+T@ZJ7QOB&@5F)kj8@W(9gq1l!H2|4J$oz#GjQqUS(-&Vgov(!Z&|-oX2xM7|Q0 zWz7Tz_G~nF-Hv9Gcxu_-P58QAwqntOsUVNB24IQio2h@WZ)u}V6%g;DAxPs^Tx+%= z)rKSWBCEECA*#;Oya;_l_j#uKKy0vfmx9aX%W($Y<*&8$it4?URYFNJ#zt&?-z7*i z;rGRrSTF?`6N}uaMs5hVZVN&X8{Z^KJp|ZbvUb%5)0*bMJsR&Wtb0ND+xkr#=F>#V zE}Rr!wwy_yPD3~G+yIkVN_+i*^~dhx^<3){jOo+Y|0Ic4`XIw>ATen@&4*A+Ap7Mn5O#<`O}+ zw6Fz*vhR58E1r45?%Bhm%=e`gXA7cNY>`BmqtxbUzYTGujBXsHZhALo!W#z_cFy;~ z?;!a6nFHmy3oT$u^FBT7(ud*`o#p)D8g}|XkJz&hi?-3dmOfmK0q3V%rW(~TH=zgK(K0kmea|Ew zNV*!#j_V{GLbZF&&h4Pnv~oTS!bF$NJH!mf0VDm;s(iD5K5*_xB~}tzvag^{T}eyE zNmFM*UbEhFk>|4Z`ST)aTai|^v@I9og-s1=QnO^tkV{dWo`WiszcNOJv?E+axn{h; zOd}}QGUaBX!W*zqS-d>?ob4v(?4u4vg2+5JW^;nyOI3`s2D`?CMm}vrOzmQ0RMg;S zO=d2kzA=y1-&_5flv@m(-FvLFA#<#9YW3DbyOJ{cD0 z`g@Q0H|EWYarR%HB!^0Tk zB3abog$H~skxhRzfiHFRXVXXw_5{?>%t6jqN6vZXse< z%k@YsS)F@a%v+IWYWvl!^fi82Z5HiquC(m8vBN`r2j;saM8E_WiT9gvv=83{ z*9P7JPSdji1I#}O{-)F)?$p|vaWvC~Jxt`5m!!^#sk-dx9V`iEt%QsaR7kPo9Vhzt z4`|9kqE9&socr`)qb}L)TWG!DS@<(TkIkP`f#7AT z-KS`}g_7UW8*n)z_Ka3N#k5r1mlj+S^aCAIb|bcSv)0SLb7ksX7sd`X-3RVojVq-p zMS|h`# zkl7t%pJLpQ7Z|?LwC+j-x3dgPtmm4%GoG+wO;pa`HC?yW(C*7u%HXi9)hu?wDv7Bn zq`|B7VF$wWK5=}7Fo1@_H1c~$tClsbp!n=pnr#1g%1hMOaCNu=#9afNN$AKueyvZ{ z{`XD4$PYxPC0KPQuzWiV>!N|J`31cn2GTRzx%KY@l^evx&1 z(JZPgY;SI74VQPmpmpfgq1P2~`Dz|#qbMu!QtGOa>27tB+C*p0&O1V-XxCzJec{+` zPfXv;VND~*JL8+?Lm9?!Iycl&Ql|!z@LALTfVvP|m+v>UpK*2uDBC@@p9FH+pG;cr zfou%@e>R!d)2?e2_k0IydF82BivTxQ_Q_boigy+A53=o)*B$M2RmP5sZ8_{})+lN< z2f{&Nn*x$v%ueL9Y5aT7Hk!OjvWgvkE}$U zp4_f-)>!?RfD-`Y;%s$kOf9@NC;QuBJdw0V*aaiomb&NI5?ym`9{8{ef4tk+E)O&t5kse0igwbfZEj=R@mx7$|~L`YE%mcgW{{Z?D8j> zyUmJ9IR>*=G_!m5VNKLhUm=Eldwt)ym~jvN&jF*fD}JQgX(xPoi#@)u>}#2MkHs-R zC*96W0Sbu5^z_iWtrJW*T#ZZff5~vzNW~!+z5laI)cC@6tyhBE3WXZCrFU0zVqS?p zo6$4P;t$_rf?kGH%o91UWCuTzei89fxHs?==jQF*V60gQaOP~rv#}5Vz6-@!lBX&! zDlacp@Z<1W=*1If-YlEz<Au**nFj-8mn8XO@QCZwYePEVTRo=7KcQd z{FS*T%>ntZ1cFYnmw4V`xW@D_fW|W&)X&>`&8?NZx7awsOtsm7(mqiV#keQs z>dg6l3XCa$*mCX0e9@V?kE-_SfyRSeV3a@8-i#Wl9=hTYml9NGShy;Kr~v2;gc-otMTTYLO_>jezxOONLJp; zFX(x-n*$yfVz)5v@U)RJTCX?xk{q0mZCUNpquYq z)hughs{7%6>u5@oaGP)4D;!mu4y2ZGl!!ccO@fxFg_Vz&1x%%kl5%cNWD=)V(sZ#5rlSgar zztr%q5Bk#R;^gZoKJEH;Xw2WAK`P$eBDNXs_|Rc)w)iwuEgs@QL3Kf220MT+6??5C zE;Z`XH@o=+TFg3KvQwW17FXk&d;0eU_puu^qts_~lQD2Td~S|4!;98mV3i8Kh~;7` zQ%>rTnxr6AS75kqjrL8uE3!5K5UntQ0ENrx%VnM>RGZXD*5=^7@feqX*cq?-j z0{xo^mH@8Vxd&PKIvRHdrwxwUyaZ}^vzs5qj~Q`gs2o5!{`g7bjS6>BRUx}JcPy84 z0ZWAM^#^vvlc$R5t!YC`L}lmG{_@4eXj7DdmG!W1CA8MP4p|D+M1yX|7lOX`>82>e zNL$rE(taNf!4&Xwh%K0pAFZYkBDG|@o3N42D|Y7o;A69HP9S5%!NEJJ!R^o99_fc2 z(o2=-#fOYYQ*Bb5B*0j_cFBYB-%9j$?>oAs@i1GkPgk!+fpSP6jA5sceHV;J`}hVg zcmwuFB60ZsgBUA)?ek3Y4Po;NZyzM`Jbm6G*$4#Wvmk25X=)gxSeA&<$2ou4QIKlY zc)FYsW)rI6s10#(Uw4lh{z-f&b+M|2r3Y+6a_74#y6@UrcYmQpvgpfPYir4J6~!`4 z*2{?%9aZnHaUnP2<-xI@oCqJ*FGqiF#W}Fj04hFjkUItmk>%PIfFTQm20CKnsD-XC z0~?8Sp%-;!Ti(`KCxHV>82c@QBWL%)k?%ybAWN|ESV& z$pni-kl8ihpKkJb^5UmKeDRpm3bUZ*8Dm$p3n){d8aT`Nx^4T3&){pgPq0+WcMgk8 z`ZUsc?F!Oyi`N@`-VUbbOD7>FDM6R_V}icKDD(B+cIXV^jTtJZY2id0?h_LPsaV_h zMDE>I{;h??W%R$eBhZvm@hhPq*Y!6!F1v_ zEg__H4m=0mLkp8p3#03r`y1P*HRqb$$w8O5VHT&lDXh8P{rrW;`d+TLjK%0}d?p~o zov(P&3~<`06Kn`9hy=$P%FSx&nD5$HQFxWAE|)T`zjOsHz4EjlUkw>x_iO)rGM%*u zaz*O5ny=}6T?d|Wg)?beC3cpxx7(2f4{UGQGQ8yGkh`Al==`A4U76qWurL4bAt>G) zx$Sv85b^=oId}8@pKjD&#CH3Bd71{eav!Hf9j7*4C+mj=80WtMnC^95+-xkZh=~kA zpO@jMjVwStBW42Au^Rkv3^Zp3%o{@vF>e*5?kF1w!Ap{+Z%#$Wy$i{i8c-Zfe0 z8r2iF7aT^p6R_Y6zx>zk_0^?mD?wCe?+h)E{XZQlu7A4sPjm3K_ZHcalCg2dSieOr z%ebDm3f%s$s)o{W=%LsDt?5_NXQ%PW^Qyf}vV-C~uBk$|)6D0T0191oB2qD;I2Zc% z2;Sm&Z|miVJtjN4AM$_6F`ey);SL~mv)*HU6d(_oJ3Cy9IKOenbh60y;f^p?=W3tT zO}E??qGOOzCk{$tENRxK#En^TJucLWB?&&$xqKp3sxQ;+sL5zXu(nLU(OjtLVHDeI zgV&|5PqQMf7Ce8+dES1CcpX{2QMk{@TM+==I3(KxfjH+_RDJn|Z zj>a;5&UF4zfPdU|*9&h9q zBX^*j;rn%dw?9u=iNDwXJSAV|kSLh%?-~3Jq}G^qRhHNu{q|wOz?Np5T`bP`8Ilp} z=ZVsfzqWfq98lnbc;9DR%eMy-jh`bfpYrB}?&#Ka)GDi*S0xmfP6I^&-}7;Oqtm(P z+vNy}R2EyTY4p7E9%Rj*hhhJ&@LgRP67c2EUjvxV0ii&T-^ZZMdc0F%A#J!@cBguq;a2ui*h*C3Ocmg7X7mR*6!oJ+qBAqlCMa%TmYj`8w=$`W>>LcNsY zH^~(rdSp&T<Im53#G0D$*-nEwO zn9Pu^=5BuJTHlF`dYFX_rR7$5#JLHs4NOON_rKRLek8A>agRmTv1)f{UftsnS)bit z^Y|{yp2Q`}Z-sV!Tp{c}2!us+EF3n#JmmH2#*qGj0Oi94T!@Io&CE0uFVWM+I_hc0 zlah+51^Gw<5fsuTU#8v-a%# zhMq%d!fh(>B`1p?kT!0#>+Q7pyr2E6?5r+s{_i5KThGkY|YmnjC}p}+v+Tg zjiAL+txC<|aSm$eaGIB=aaB9S)!q|cyT<<{*U7Xgf@8p*E-cJZj+5Qq2^XTCvfk3P zH#$8wp}t z&yhP-4!rN9b6i_wY;@ST%Zz!7j_&FIX=+oz5pJYWaBH-ZbLO#Z6BxT7L?3R1RK031 z2vpaTTiWc=+T8PGo#j{2#!o9ukh0yr4C6kc%_bU{?Kp`IxRq=3H4JZh+Pn5TQnw+t zh&*vUPJFVK8M^4Gd*ZodJSCocYm}>oxgbNaEg}<@+;MN-bv6=CE-Qx{ounU!3!StV2cg>z$(eJMM)0M-b+` z5v88hPtItUHJszOS9KQhxsV~u3*allZDS92ltp1-GZYG42qNKq?R!$AuE#zsKT{}9 zqfP8hawFZ&X^OsiT9s!1 zdIVCHV(S#(g6FYfmoT@pY(TfCDRWS;&F}g}Bt4uYYfU~qdW%)hVd$c$Hz%Q!AHynV z?X7B(Fn2*dww6=z5Oypnz>5-9@?EkEb(J35HsJYYJpW!^#dL|+b<>$?3-)W#kTUIM zYGe=Dz5spA&jgy&K}HxJkFsWGNzN{>C_mQ;RqHTnTUAcw z-z$HrZd{jbyRD7~qL9Kh@1xv*ITF`dMdT^O=~Ya#ESC3%-x-E|(ZMT;#qW*d5ENUb z5~LUt3>Xlwrd&=j-#X5=5_xD=7RTN>;$Wb+`Bgpj`)WVrEhyYexk>xW*NNh6gw93u z6TKeNw9H;1+bGA1{ceRHSOunaDGRYC;6{vnFEiKU;PC@D%+>e0=S%cp`t~ z7B}0V*k>?a=9TNAzdJzUUaWHD@Um7ZRj=a6LEa~`e~_iK(eU?*-RZB+)vy7)!ujWEG~Qk2 zWP)x9+#h$3`WI5FdvZrGe{B*IGo3%}vd%h7grcpdcGaEzGUQE}gaj?U+|2m`SzS8` zsvq7{^u<}O2A?V&KJgICA@mE567(dYM&jo^FP#(_f{7Qh%$R9=&Z#nS0bTv181e%-cbAH9BC#nsDDf zxv=V6I{D!IbSE53n6ZTxw2_*UY4YT}uGidYZhZh1;!w)}ci{VEZ;AHvU5slLfPUd* zE~mr*;c>7vg`15dYf!haMd+@m>0*1=B4#i;+Y2zlJSxe= z|5LW=OFHUhZRSeVS^Q4JKW$l8N$JOJZ}28?f(Bp2^>$(XgZMv0i&VYOCvrG4UgNEK zf$}V_Iqw!i{;fOT!j@C;KiKbmdA<*SYb)fJTUi{MzNNI_6VWwg#6os$^XzcvZdlrJ zUx)pcGfd_TQ4!~9siXK?bmtHlF{q=}Sa`sxI$@m1y2x1&S~=L{Y+B0587Wj2a(+XX zk#G6|Y--2c6z|8S4(bqd5sT`>E@w(y+$aA~JGd@!Oi0COBfspPQER4ul7_Pv=tic+ z2uRX7ss5%wjm7b)jCF-F!W<=A&2&>Y8B-*;PSd4qVS9TM7LfbuuG2|)8!WLJJP;K! zjjOSKvAV88qilIns%W$x7U@47CLQqw%w!xsU zMK>EYvEgN5^*7r}P_O~pC z0CH-&fj7yakt7KwEO;*T(L!7uWuvLPTq()+$@%w6iI#wFTlLtn1aVo(F{z&(%x}y_ zwux?Ke&L6!kL9u-YA|&dcaNG%&LHjT)ZZ0g%2`^eiN{KMUQO&Dh5NBsCEy;`e>s;V~S4k{a%3XoHMFGnBS@w8#^)( ziu7S!wRt(FzKklE?(!=ufZr!c;a?f%4}SM}%n5t6gS$!MPBt{G=Zh))PTwuM#XZ}? z8)5=5i>@FR&RMKbRl#Y5=nsF$XIOrq=3Fj|Si!l+Jq_5OSR?~S_-mSL@7H_lLr#m9 z-R5>!x8OhOALsFU4E8j1sz^f_J(EX6QQ<`-_1-?Wqd!SZQWK9?&vMRB-tBAuTnTKu zcOV|MK2^>?4x*l=${@j`>uTtm_;4_J)*d4?{=X0`XK~ufpZ{minP@uOXK{Xd)SKkD z-7WcJoUoQepf)HE;ynUj=wn&J)qcj51ZB_W$nM_y!-V^5?(Dzj4pow$GIKJosi?}0 zJdWD9${&ljA@+_u#ZP7{E;5V0L3~8>g*4wrqlNANK7{G5GNXw`CK*<)*PJV&R?2?K zS0OnDkI!x^J{}KZZdX7I3?g5rc|17)J3z$0^R@xj4!8!>4xXS=5E|QSlEVmH|5?+h z6L)+aW&d)WBk^`raf@B#Yb!^iIXwjCPdQl!Kb2w85&->#l>RC=0`)5jmQ6E@tDrmD zO-i<-z$VEbXy=#B>Hj&`Dld}4sya<86W+4$2olGW>waPRf@6H_%+Kpp+iBXCK+VE2 zuF}D@;uPL%$|mwoeDfMUXickLb8s5if!!*~PcOnEcSa{QU_5XR-4_}|n z9>!wk}BR+*IB!Y11w;7ZG`*>tsI2`Z z5`mjD=Dg-NkKq64YeTD~a}8+^xVEFhC^*$75g{ZroK_UF;^CG z3+Kr#P_2s^c!yYfh4`ic=PPpZ!sO08KdU4G811}v^-(i|{!EoRw9K%uou~!JKBg?`YJEWzVQu5iZ3jd6L|0VTgP{gInszB(C zN3z4yKc33I{mq~JTZn1ATm$Q(h51S*v7Gnw%NDX-aTJ;BVz@A?(E3jnBVoJYlSD2w z9i30LY66=wTk^SJRqUV1K}u{2B1=wH0mo0fn&Pjx?!iSS5>x()T~i;xLxVMX>N;#P zN9=zHe`UNa>zyxu-aJwKPOYW^FjO^Ob6MN+9ZzAO{vhX;?Dy7V5#P|=qu+H3BRaKw z*hlDg&x@^OgO|3XdO>7%HC4G85}u-m7?`*aQwiV{cI!L_^ZlbL#i)Za?cm#Z#bQKw z*PPb7qXdr-j~WRV*d+MycNomqcA|CgT5&*BAkacMFvJ)6ZU9DXQ++bvs+%IpCgz48 z*#&aSAFUXZsb0*za~g`H8b3EO+|S?01~Kvu1x)68nV+szeMzH^vSzg#>4e(Q3I6@v zQwcP}Q3)>(6)RMsEx)kr<)_yd#F@1~P8_+9@fbB1RA95;Lsx5K-7O7Y00=BAaR>kJ0UZnQF%M5+MzXNA>(s&bf_r7nUnY=bp|VU@yCfL4&nyzC($E zt0-s$k8hRh^GlpT=#|5o-!%bO1MTK;t~m9cKPuB8dPGJCUcSRC0e2)Mm{k0KsQSvN zIJ#!tH$q4tK!D(ugrI{2cL+g)2Acr}3GS|gCb+x1+n@u3OK^90x4~i1L2lmf+;h&o zziM}_>R#1*bv<2Mo?X=-a@K`YPI&-6UnKE9sg#w0s&-+|&;Y9WyLeEI`xp5*<1+Rx zPOq|$ea-rCS(zBQ8YoxClt1WYb+c5v(7`9*S6DOKj|#$&>Bb=GYLRq#MEI5(o!qVN z#~81TE&p;QH05iZn~|snmzit(!(g#~~S*h?(`=>$y zitM&;BeXB*3N|ymPL=PN%#-k9-g;T@Fz#uh4;BcRSnZuA5IIw#}g$%Gn?m5I43+76n&Ixbef9 z!FDgM`=s{%;Pmsiy4xuB+H!-cV*bP7U(5UF&zYDM+tziWcJnT^?Agk}8Q~NbjkjraT;h=Zv41n$7F2;uspSv@Qx@|UT)A_u@3vyuC*-yXs5w_AEpFDL zgNz{5QLl6P3x9{5$VtvgXn<;5ao5%mi19)q5h9UD-XQv{u@m>c%?5mnzN#@T`*Yx_63$OBa4R=T8W?C(m(v z4|3WKTEFB@9j@YEX{K6KI z?RWSnEXtuTp3$xQ?0CN{be-Gd_}hw$hr#R3Q|g7MIE+iz;(G6N9;dt$T)T*NA*)Xb zNgE_$0+Y&HJASEgK*B_rIVdgkOhvu5G5wRbQ_z`0<2QG7a<|_)0yXI2IHI$EMl}1I znG`C7h8SJw`$N%$KRh86w|LTZ(sh=E`R%D>ENU;*Cd+2)Hj!?0kM3l-8Z!s9GZ@ud zPv6H`O2-u>{)#;DrZ4y_-^W)pa??X%a#~{Xj+XtiTACyU2xuhSd1w~em|h;Wa4i(m zGc33>j6Ys#jPDS<*v;zyte^7g=qGC!>PH5U?fNn&oyI{^Fn@{7#v&8isPF!`R} z_)!>IpCB-6%U7v-%ZF+Ns3r8p5AcBu%l18!T1`iqhz3utjdsEP3cT(Idlhr*L+Y{7e8*QJs}dIDw88MsZ>Y5mgCkIY+CbK59C#*DOJn6(K*lT47L{4mDXhn`~(?y zu~VVlW5N||tIV-{UDFQ@j#6IpFFGEaUR+F?OjQN-4mV-E81In=$_;FKVpz}!o3Z!b z1_T{c-dkJ6-k@3(yP8-BcH9)wx^=$~NB0d1?LWrFEp0v~Xtfaa-H!CF>xC2^kn(5h zt%ABtE`-J@WH0xkvv&`=Srcij&^yKf=@LrRZw3Yzh^3F{Tlmuga)chx+DXDKqL~j= zH{$Rtex8i6Umn_d)p}D{?8WSh?U6fO4jq;{!z~kiG!zGFGH$l6)`Qz99qxl3wnKCK z?J7U5R_;}N0E%D}wnp>rNmPEk)i!It5hC)bK9)8lXfNG$O%N}XSQr(gr&;)~g4m|| zMz*H^{cnPLLKm$T|6P7=S`d5JV%qqV;n0zyHk&zWZeUbjDxfS+gYA#40S^bFOY)G( zjOu4(W$)hR;hU@XO$#pA%%OLQ}g0=$^6su>=?QC%0!6o+P?WY(du_7ncN`f;vQdwc9+ijVRr~K{53-fTw8TP zR%g@oJJru%ku2}ps{r+4*2jq&N>qRA4JIoK;?2Sf#n0M`OyuzctaX!WBJp)BB}m7D zCBkXHn0xlZGspNimNFMcpClba>Be3PX>jX@YEZ;Z>LOiggJ7%wpr)^)E;WcF(yq{# zJvmZ)oFWrKy4|YqrZ72lwyVVphkgQ~`tnUJNQJ1BZ+Pvh28eGuJ()^W2nQDIzBioo zP*%kzB%0>0q7Msa(PK-@6;ro=4%Sv8WNnaUgXE(u@iDKbb}m)yZ+9;bL-k^G-?ge8 z5H#tmy4XI3!`46!G7G$RJlcmQz6a@G(`32Ka-&TNSjmxzPjKDH2jQooZH(o^O z+oJO}nHGOgO;JR&HQ5v0T8e+PO|ncdey__P_GykOK-iV-dzP{3?yEj-TUPwX{F&6R_tWPXcWel zdK!owfpu@Wkk9)Ne-m6~G`lS??c*GbldmEGJE@HL&YIoEcAbDrJB8d)vtK(?{FRHXLCJPgrVC94-VA~G z-fGX(yh>CPxML2Rsu4uO%}!6qML$Y1Q_qWoIyAK7*~8_ZxBPK3YS1fMR&S75sKn*) z-SAeqhjZid#NZ8{kq{XbcsOL0)cW*BeZEaM%rC(URPqhw!X4qdwpGRlaTMW$Api8E z4L;|Cc>HbO|J&Z+oi|;PQs6$e#a{azTeod^pmWzhEl z9b)&It#r?abF_6<+CS$01s2wdrnz5W)>-e$9wv>8<)3Doy&M?%NMUyz33F`a6}D6E0M(KB;0vWUL&$f`rh264fPp(af=73M3Www=Xm_w;LN_xge%3x8*V0wA2>5dfR%TB`Gs#{ab|0&fFeZd zR>3)>!7X*wC(O_X#%kmdg%&(g)$k{QbY}XiB$W_JsB6-l>?JnoH1^S8P&r2A^z#`0 znhi)nQtDk)sseM`m&- z+jr7F1j}JFmgwFzc4@v39y+u4Qq|FzXC^+9xVVu|zu+#T4hxZ`AYNEYZ)+BDlDmME z+CuhSxk_rdi32$sw!3Fpu|Uq+Xt&YJwH`}vw-vu7pvPzOh>E067qIl$no%nFjb4Di zs9$*y%1aW@=uM@o$;`nT1NUAuWND@y7EXdJHio zX8|~{4$V`Jir|GJD_Kj2pxl{p63dROy|K)$)!I`Q@IyT2NzZl#RIVwao2cG_qnEx| zQp(;$euWJ}IFO2I9xDW|%D6Q{H}=XHzCy3KU1W0XODLA!S7Q*lYnf?#@(A+wV%!u+ z_f`3>tUgFcsP^K}bORLlKt8eB%Dy@BqIILiRelG*uslb8!L(aSdi}Kl!O;K)!3nz( z$4;K!YuRY0X*^cr-)9k1Pe1N8Bxc5tL|uzFs|4QLZh)%_?g{d!N9BF2<8x3?bKA;v zQ_OiqI{Vdl+XoZc@3iZfyA2Jesyc7LU^aYdvS(0s-&<1(Ea zYr5E#UMS#>o{h4keTp?99I2;D9*Z8CV5oY3)Eyos@oF+D3+;iyrwB>RabPlW6ztpNK@Z7;~H_W(UKd}Lr&lkh$C*>S!vh{9ze!Cg3@22p=N`v0kXjzw>J~7(S&q_ozVIH+gwl$+u zOES4uS>{Qfz~vXFPRhif;?^zO6)6q08Xu;XKl4%`x3E5Q^SLb5;~1?>dpMimx}mUh zO#6-HK-SsG8!%(`tk!bgp;77}WG+SL)GOElaOP@sU_c%TKf4e$;cCBeh{oa|)$2)i zo%d_~3T^C__v?IX=k?oWD4NFds-I3bonX+E(asc2&ey$eo>~0ckh{+&gGXisu(X4F z8YTi1Ty^*`nK-9DBx5sZ5zG%olSF-j>1t?E+TE*-2)Xv?1J87BTd0Mge43XI)Q0aY zRb(O^q5-?F7298XDA+B>Q74UQP+&L$ow_El{~SDWeKL73Hf;{>W}FMKG>;Kcv+Ej9 z*tDUT?+6+h1DMs;R2ohD)wuthAd&?2>3Yl_V_Rb(>;Om!YrZ;7Cvde%-wPgqi{Dy; zgN;S>;ZkX1j9ST|qKzKVOOdO$A2XG}1c$4iNKO*v3kIH{Kq+nsTI&4+tD5hZN?psj zb~I(k!#0;pm*t%|jn%jvfxaIUXv~TOLOO=jLlTlkN^rNj#flB;xgQBmoQi1zCPvs= zeD?;Rf4-asC8!Q2#yPS&?PoJKf8j=*FzI)DxIX+ywpSlaj0GIPCO8b^(XRceqz2sk zp97;hTc+}xe9b^gM!AgRT;{8pr+14{*9=tw8s5hFr28CREt$VDZ&09X(V4sWu1k#4 z60$>PKaRA%x7r73{hIq;7oNonAgb?2xI;c{5&FqNES*uzC$AU=k7Tulq7FA?oWtVK z>TJ8tt%Jzb@+ry)7bSnDPRm!a2QUcT;@ao2;~L$gL|U2L5qNmp^1&Cxr4BBIGLC;5;^&jy9+1rH7V7nBwmeI$WaM^A}z z1vg3N)%;8JDNIoRsaqu*8o*+2gs-5nU-cP=HOF~nqu4=9<&Q(|YK)3L&?focKuN4D zTwU|;4R!}vYT+MrqX-pec_`2jndVeNrh_bKvXrJ*DtKqM6eDvsn z@3z>7f!@Y&)+1r_a6);Y2FTisw^ z_gtss=uzlyjE?h=eYJjGF}>>2`C<%7*$DYX{hG0wv&4F0yujuZ z>gHNZo4P;>2)wHHNJSY%mT*HkqeX?D!J7)PEP?Z%#B@K2fj)^2w9wKzSJ3@BAv zpJEHd`94Fbt9Hm`1gZ*IH@t#XPU$<#SawD%IG-QPR4|4nUjOy}cEbb+~X1rUS9F2M}Leqk06P9811teMvD}4&z>;+c= zE~gy1J>fJyU6(6s{HZ1~?b@nF z%RhZyjIpHStTG1WFtQzyPwN`UH2r>zlP6i&ZJ-c+vAyPt9=Ia&aO_Ffc#V9`|_&#}# z8|fI0TT=&|0aR4q9M~upr;|JTY)t!^1YkU)%E(N0Lkcd7BDnnNVYsUwS*zBHD68I^ zN(6Nj>Bue>&8#-~m_jp3h5n>;LA_X7 z6wk)LeY4RybGLQAWn|IIkan0+mhmMNDM7G{%>ifWDKz2nWfS9CofY6O#+WWAd-yfR zRjAKJoE#R8^F@xKOx&2cZp?PMcLQ%(l0TQnz(d(P?f>%t)=Uz9efY-(hbB>4DLEfT z5so}1f4)y)2zXbxIn^1G&R7pC?N79m->Q5t`^w@T{lU*I%irL+JSn%fLgMQ17=Rlr zN9V--{LqM2bbGOQ=VY0V)doNzAaP_c__^r5A)L&{E3Eqc5!FwMmEzfb7p;e{5-tv_ zM3z-)wbQ#ys@*%9See|!Fic0AvDHXqdKNiokiCW}IHCK^*uuC@E+(=A)VZruAL$~R zXNP5J1#(|(ga{rRho$W8G--QO6L4|sK14b)TgZZdMHa;e34+y~vx8Wi9I%X`35z%; zG$p5>yB~#wBma!jn5kakf-M!3x)nd!sbY*%suw-uhGLYI1c|B<2vn&q1HpY(5odZV zYnP?|e8`F~KUl|f`q|P4k`+G#4!QRU&fgrlv&nmLS9V(g{1Ku_cT^f0?*R>*m0MEV z6Dg9U-?-j6@4q=ne?uiyumE8288BrY$ibLS4nw55wwS&lJ15rG>=7e4Y40Ka*6pzz zyOf_vuPB47S_{mCe=Fi8a+ikNe#cdnu}Fd}73qNAmhf^cx#y(!dMY;Svhih27#?26 zof3QRhC9#*7}M>wxXlVZM$@VuY)u-)Vd zON)nQ0{Ep9y$X_H7|Mk)DnTVyf2iRE_LRLh^atrseh2Xuhug6=ow9t)Ieb9L28+TO z1h|dSufD!`M7?Oc30CCaWe@_@=tYHFb?L*V=-8BzQ`0~Ki#yxqWpd|=*2w{qT&Ad<0Z6`e01 zCEc$+ne4xavne|PysdW4tlW-~>!=0p#&~>M=%zo)SjqA~shNokaXNP!C);oPO5U(B zki|%;9ho=d9FMjoVdQT8g;c;Icr|j-{GQJumoX!`u`BC5{4~aOn!WKGB{|)~Ey+vj z8V=Br1rCuM$df!z=r`Aow$q-mMk$so|LJLt8Yg}TB;4cSVQIa zgR8>?7c79qUU(upQ*<;(?KsGcn||6+Aup&=;Ks=(mbjRsu5Jp@EmMBRvTihlF2p|< zV)kt-Hf!Uu9LJJKS**@TRd915ciu&y=M8Ai_uhEonf_DMlzZOfxe*_wT8$c*nFD!uy?BHEH5azmeue8H$xS zdw-mGXU>fFlGY6M!81(Qpv~bG2glXiPfM}qBhk5MUpO8;S{=w1RkOFzymbNbwkIE# zCzCX9PLu-O90RZ1&0`~TrCuN=WEaFvOc0ara$Uv0T)&n|wYGc9Hdu%&U)fWU4frhk zej3c5ORAj(7b{dPv@oB*8i7uIeNq^>OpIk}B+cRKc}>;(kEV))1_*@&(;`Qs+Z|48 z-5x^>Y`qVN1@n1KDSSKmwR7N%w4wT^KmV#k4=_r#eLDk?O+VO^$uNt(koXUNqF*mXh3C91#Ca zAzrDMQYVx%`oP|IudRZ6)@bgJ_#akn6$8Ms*X+(|nu<)^j5FhJoHd&b%FEP6 z3QYfkC!cFm7q-4X=mUTT2arH4zKT!4Px5jNW;3jA>EIqSky-qenz1dc$xv$taO&d7v&o@=aMp&1D$% z%@K1AVqLDR7-T9sOL0?0rx{scklEUTWy>0QBa-uE=S^h`D(w_%aB1BYkfm!%+LYgP z8{2K{h%Oxl+R_2X5&`gVCfs<-#`7Ibv0vtoyehC9eTpuVSCqL<@tns}gFT!jAIgDi zXFS#MIhwm3W8%XXq~rAwn_PA~7?JMD2F$oOBCD&!UihxL=r+)?QC^sk1X$Hl)k*bK z6!p#gO&#S`7hU6+k*>!*;ZT^Nm&#)`;jNi5!Q1+ZR3@dS5}AxJu}-#D94u_KUe}LW z8WwL7sBAfZ`D}`HSN^z)eKyiSX&?mu-76+;6n{un&O zuf4f*ubO&=W6}^g&KjxviV=~n2ShS{Yg~us3b;dLPkPOB*YVnum|sn=?1?n(kH_W9g&a=vD1v3O7N{lF-S!AyT+BT7h#d_dOA+B zrmIuYH|V$?k=H-FUl?>Rk4+y28Roi0LGY_4ySehcu{@}Cwe$PG-N`$~UAv~U(sGy7 z;3bA%8T7C+LbBK)prXSJWDI(VV{!v^>z^TKvrkGqDehb)g{gKU#w4BbARrxS{CV3y z?c=4rN72j0QYB}Hk(TQaHBoC-b|zz32`K4 z-z})CE3^jn*VdTkNo)E)xUeZs7s-K@Nt`{;v~xEQNo~v~gKW5z7(JgUwjwi1h2Vn& zp+(UW^1aNAiBAt zj*Oof7m3aRCLZYjp~+9mJ6imI)d0yv9hU-yFR2MVgD9w3KJ&3eJ%95-wkE%e8%@bs zEBDtr=H_cPCb2jQ9;z|Ly~0b(I|5HcvPQ6rOq?7-8G^1E?Vc{=;OzXpOj^my=QL5- z!)OdwZJ&C&NCCYbWoFpo(LHG%Ep7q-&J@BpMV-o06sfM1cx>lHcXpEidyfOf)?Rm@ z9NT7Y!CbPDZeWp_M+Tj9AHQ!IT3UE5QZyU_aaFfjzjHTwSJv_aZVzq7v{Hj=l<|NW zKfcG1&;1ylrWP)CvBXf2SPhUX^ z6rgzgD_AIQTa^xouDDVEyFTPbQ!Qd_=9y;}kLtTylFWJ_#tViV@z~m8|N7sN-%)XX zx^J{gAIb*y2YW9C)A#JqChKSM_XowxpIHU)nWz?MdytN;zrQ8iuno=a##kb$GBReM zsUiTwKhLhC>@KCgkJS-NaXDOjn(8-X|KR0>4)L0E4tutFGe}@QRXh)9&Q?v~V_$G7 z>?RUk(iHMY{ZsXOo=2#a@SjquB-Hwq6aD*=p7!4Fw*rb_Lpb+~{7KGxiWAli!{+6l zx~ec(azrGs8m~4Go01A}Ij#Ts$DMpJMn+-=UvimYU;pOx*47yZ9Y?}jJ_sx&O%SqU z*b_rRM>edsWk}uY^3Q0R2P0isJTi8sI&(-%($>Ci$&_@Pan3+fDfaERd(@r=yQR)E z`iG`M;?BJ5$nK{znC`GvH6G}ZwCLevpP&Nnej4dj>V~Bys;^{>ZVC9^*grBc->ErcxUn|TG0?L0+#ULYuGQp@ zIPtn=EH2eN?oYPHOloYHiUA6B=^9wb z6~tScOlZIaExrE`iztzSoU=*;$EjT>(6O!NwvEjd=w#E-G@!C~VhY@BtjF7Vfx1v< z?35cC1!yY{)PWCT&%l=fjIgc88Vb0bzneAMoE9o~C0xeMT)QPN+LmI*@uE31-+L$@ zH(*t^(9wi6+xHPRyZLB<9FaAR14i9Csybz!y*5Yk{GVj&o&4tT0+#;?cHkqq`cMS9 zS^jhs>RRmzW)wV0JQH+e;yZw0@)wfYLm~~=QDm+1e9*aQe(sq!I%womo7E-+t1{bv zC_67K4dhPC2BmezUQs>kLMqvH7-m_K|%a9#U^(6T;o?vvLY z*RP+Uh>m=X41kVd=?y{(BZJyGNKySfc%XKOiJ)n5NJ_Ab5yr83>33^A!O}vd{-sfD zbTMV{XZyo%&mE(NY*$Shk*a1V2O%=+aRFCjuwa7sTRY~{+p~U!(8$>kl*_9JhgDAv z+4@4Kn@GLlPscEU;&KpAt4wZuPcbz=e0{NVR67j8zti8CD&p~cBP}NN?jMhagrk{a zEY0H$g@du^i)kyfIze^$fP)+iB#Kk;{A*UsuRpb^{0z^D-jj1AuDAHCjPkRv2&g6z zM+&|xqWy5XATJ;J=M{3T>fFoM{q*{pJ$60{{kgl!kk6VItEJu5E1bMlbb0IT@fh^y zsD@8bWmH4xzctHW$0hvp`|kZ~b<_243nR`RoBo6ziE!x{bnw6%ONPec$qLfO7Rwn- zX2^%1pFdP?7ARCZ5Z89O!K->7GXbQM?fupC^NC%GW8tC!Nl#;d| zA)L>5{;X)<`PH*NT<}=rnY`G&rXPA27(hRFexmrWs?f6*A9q>NY4>{gilk(%Knk~r zE`qJz;V00q_wIcgFaFE_FlEr5yj8g^{x@+)IOFr=oX+bYOK{i_-Lw+&MnkmAKpC3n zD}LOixRvvqC4SN$-e{iZevMgf*)yWbj+~*}Q$d!jCb!?X{CQ`PhUVQ-)qCNvBe0rG z5-H~6{5|S>h3)Y;Gkov&!c?I(~w$b5-N-qmq* zIoc$z`(mE#&$_mnHVMK%Q>aTQE}f)ly^3 z&kv~sj-?wq@rHS9sY|{AhNkqn7vHX!m~YA$2hKKMfnLm=CpRwGhx%K@Pn;%4mMz=4 z)zq>|x?LnJd^UNBH4A?hzTey63bbqTRcboI4J~5}wLVxk83^F+`Bgi_CLTF;BRov$ zU(-@k-G)dKAStaJe{AO0B6Ff@(Pe|(PVI(L7fVtL7M5szH||W?Cw5BG z=s`GBv6{m9t&01P$gF|U{BP(Sds^)kR~V%Y@t3;mE?DjhT^tc9V(#aHah7&Wryhcz z;U%gLM_l&jLkC}=JB+{Q8)VJV*1rCTwftg&uIvlU-)!dzb{lK!u#Rr(a4s9$RpKUz zo38Q{anRakfND_~MgU@scNt}0+jrYwM!sKlVQd>rtn=`oK*P0~K9_Xzm#~M+hi=N` z*W}5Mkm-(LJgG=6z7kq4VG`Ad?^H{^S)Q4%HXCH4t&h!3T8HrB(AL_nWS=mY_x3;l zlM|9l)FYr-2lFuLI?WA3 z=TXi**z|1SDE5Hw4qU!9;w#MP{t!;jy`9F7IT56uCsV~V_gS7g~fdF|eZ)T>U4%TkbDvc#yc#Z}u z2qB-%_cqsh+K`6M2x?wex*6k?#M4RAE5(wAWWsU0)%~bYIaBkFfcxHXoUO)q{NoD3 z#M9ULXE=zCwt3{Fp6Yv^(6BZ%G zNIXi$i*At?7H~2WG89WIw-2}~VW{xEo*Yp0@wTj5p`3GXdqq9?*MIXw4LeonB5LI< z|J}&F1jXKY!8<#B!}B?cMBT9U@afGuY)Xru*4taFUw;O&Tc}EPDFT#gu~$b+R*mjH z6*rJDQS^?VAkRKwOg?b8MC=A>2?}u|^0P#y))7^z8q5+t`67PwN=AAIL2%m4(ta0c zalea&JZ;!ZE=WyEilC+iyWZ!*eoapTE)DP+2#Ss z38IQjFEK1)?_rOVptke{)5Epom%zq{UJvmUYh8}|T_T=L%sTka-bzdYn(USt8T}Xl zK)88txr?jbJl#2IJ{}~ez=iSbg{lM%H=kM{Y|BzOiOn){p{5Sj;Y6F(77GHNv z676xkdr%S(rI?aesX^2FkYL0kN=j5qTJu2N*LWzI@HRT;NKiV1XLaa&E@yt#y4$I z(7PX9)1p>;4Zqc5DT~DFqBdT`9QQ&f_d#j8xq?!I?-)CpfYp?>l3iVSiGu=qEVEauQ`G6zim!+e zg6utmKI-JaeXVV=V)Al1Rkw|K5oINXp|c6*TLzF*7Qe&vulFmH`L2Q2ygDI~#NP;+ z0q`Coon10Z2EAr3DiKM$Oz$QV-QAfHjUC6f-?1R3Boq`+PfoqI%G zytqSyscE%5W5pub?yCEo>SB{C*tz6lpSE_G9dY|JopJJHR>McenH&x0!=MT|D-D_T z^LD}(+*=^Qi)2I?fi73q3p+u>VScHe+nHX3nWYw&wNr0M^(lw4UHuC=LG@X!QW2qV ziSoFhvxW|(Inw^qUtaj5ovotYuNGgU>Yp@NiVGdOFPa|j1?%WC;!GAM-6(S6T#j8! znso9PvxFkm{e@U$#)LU!$1V3K#E+A5!VMM)7#?H?O>QBWMzw7_y{ z&qeBfkJ@caDWaJ5Z8<_bRNbgQY*P^JgxmIn&HOmL>ijO?UhC}sMO<&|>}xj$YXN$f zsLe|8fJ$Do#508zwu4fB52nz2pFD53Hp%wekaSQo12uC(P z!^Qv{$73ZIZlb-O?@>JfvlxMkjSBTip^3}yGRMEQ9HYxsBof*=mY<*CidP%Er+n~! zBN=odfeUiVk?>R)iT3ft^XefxV^l%5(fKdn=#{~iNNOAo>yAF=&S5U@ezLoY6}7;e z4Rc9O26`=APrJW*YOhs;Cfv|8u12}r}mIcEZYDNJYE!NkPGa{qqZVw;YE z0RcVp3E5``>Zu|H&5{r4f=B#z#n|Cip$z?|mSDN>k_LHIf z5KR%8PQfe{9VRDmE-s1v#gJJayk?QmtL4!Oiw0Er;&j>I2u7FRy{f@sfL_Z*Or<&# z?+Go&BRT~}OC)BIh~oN(1p-3HH%@ByOl*~^9EjZR$PPv*!npd1*JbiTYposXqo<;g=JnI8S3LG9(XxR^ox=y;WG#^m5xR&(9`*uX&4|($ z`-LmG%nMd|Z&=VgfMP~HtDX7It(%tIBvSYdr4zxS`rA2Y?4_(Rk)==C^2zz8DfZ))70s~hDwdayCCWT8E-{G8T}>L&%hm5CP@d|Ffy+a0s?j4K;&BtU%{bZZ zohrM=YB^fy$r-d^NbZUto``2QFyPoOc5DnaKlZb&_11KclIIQ9c4$d|3ilwiNT>mO zUju$@29&+!q+4^+J%*bp)Ckw^-?Qo+Fak#hd#hfD-{-l~!vd67FA*uW0M`qizY24- z%ciA40qU>`wzG&6RpZw?Gw_`tOWoa_VKwf>2wGtvjpiiLztElD(pmBF|8U$F<(Gmw zOl;iLE=fvtm>A4~Uu)IC4Do+>HEQ2c%T4^v++mp6HD5n{^Kz!jiX4+Vz(+RXj6uCj zdV0JK4Cr18U|s|Vn+OU&dhA?~mYC^XTj*$R0KJBM&b`<10D3eopjT{TGhE5_btU&>Y2=S@cd~BOLZ1V{TIdc= zyzh%bk1XtrBCeCpKuE?3<#&;KmyUBVnFzsZMm#aCv(3L9#vE99TD5og5Z<$S}*r;YanXY=LMPk#TQfE z0_9?BPHzS1Dicay&48oXF-5#>aMK@S5M|X6z8j>^E~H5zG)KkW;5J2;nlJ6T50alO zJ~JG}1*I>hhXoBy?p~ zXU4 z`P#UhdH{)4i7pXnLfV4rSelj=K;7N{M$%z^07pHH9MK%@ypq5HL=?Yh#Ixz$PHj8X zhbF3dMLkgt;nWHxy;s0tF=^A02A=Z`id*jG9OtU@aJ*@D+6}5i)Ez7JRaYQX{S!+z zm>pe>z6mxWLtU+-6l>9QdOly(YrR?5yyNc)q0-ZpC_{$8qSE3AN>a?;15V7DYxxKc zl#DSj&D0x!n-2+o(_xaFUDL%6@dSVo)=#J}0HD~o?~->jBa7)r0I>PWMxmL-E~hez z02-|RdycNbi!G>By(+OhPKpDje<`pWbpAT!=^ZS}2xr9rT2T`v1c(^ns4^e0%G7?p z?f#>j`z;Cp01BGhd1UIp#02++OiP!#CK%|=bu_A@%__S~nYf_ACs&Lv$9um%%6E24 z-~o^K$amr>{&k1fsCPhwAHBh-dq9AHR|>Q;&L>j3wO0yMb1uElbZ|X3<)wGY+G?IsE1WTYfdX0@&!>cy#!Rz zH1|$^OL#hD8;u$SyFW+|4xYQk$fV|2`!H8rs|%fH5a&2PmzC!ybjQ$_EDua!JL4Ev zB_Cw;lo;W`N6Q4!Kws7Gb;vBwl$qC#KB-|xese(StUZFa1%GC^+d`TyzrkWcHX0VR z=@0*DkhmY|`P$}O{86>8JXuq6#r+2nThJ!q!EzpH3*2+N>kH^w@u;pDg^<0+{ysvO z*-3XF=K|25IEQShbs7-}<+ilV9bA3%9vA$)8)|$_s!Di+>TuM>XEE7+$VnL$B05VS zRXwd?EPPbp#lD@5SFo#oI1sNyZ&7qV@np)Ka$VXtnt&=Yqmh^CsI&DbMVe)>t62-6^I(n(PnTf|O{j5jflu zec}$!Te>ZGHR@imHJd}sj&JKYrfEZm-u;7n%f@!v`uZsb&N>mVudI3p`SIxq+SV6; zG{e*9A}+Rmqxebf%)-Mr5Pt^Y^~txH4BO-iY_oiiiV)qO5UCq^wPbu2-^bK-7ZLs2 zBP{R7VRkpoKX6~k1YuECkoprFJuPOJQf5lCZHQt+-!;X~UF$~~Uvu=Ud1@1NAU$Z6 z)^i)CixJl&Qjp$Ht%B@eYi;?%!vlQeZneYmZVgZ>zSDNXf&zVwISLGgTT;$D&EZ1$ zxoYgivvuk-Z^9~oZ8}6~1A5blS*T>Zk0w{bFkEJ55?cPT6u6(LUKaDcrPbKx#}u%Y zeAL5D$ms`mp=PFzl`2EgjARY&qGrp2QJ@<5YNTKx-fg+t&Avt!DNV22wljHl zd@ur?sVCE!qFNp~0V>phZU20Kw&z zogO&6{WaRZ{Kw*MPhKeQ7MW6^ge~NLd7zd}s#1(0nkJcli!4E40H$5@LmL3e zQwJyNGa;U~K3oCzS7yR3kDFO?29M^sq$+jXF-0pHP*77urS;%SaAsS9A&jV{_wr>K zEz6oOkK)tLfdl|^`%iV8WDx=tB`1M<_A>MGaqzuKrbf7xdS7!MR;ehHCi_$c-CG5crS=v?Ttf8xZ#1e=qb9P6&do9vd z-Y`ioXdp7a*rwO7)Te77cIzl{kPMdO5T&sAELKGM9Pooktpx$SzU|xCk=4$4bn2}Y z1WYB2+%=VLAm$P8`8Z-WB~iFqIVB5dwn|)!SVbEXv@jA?hGbE=XSC&HT$EDOjXaabp?h zrb=Zx^-y=aNi@caS0F|n{6cN=S#$gRo@`hBzAL4LGbSUNg(8XkYGtADKSw9SbD7G6 zj6w_$w3^PcYYFR*Ub{hZIXP}1U<-baIBwwaIxfbv4qKtawDFG?KanbeVv1gK9)sEn zWwyV;;pJOm*CMFkHxR~SD+x2#w(u;rb7@aWxwzA~3Zv^@r1og~ zvEznzr_kjaa=G)Y=xlt8eKY7dSl$L`vF*}-Wp-98wD^$YvLG1GWz@tZQ@pXjylB$B zcxAcj(~1w?Sx7s2K2XPRBz_Qcbg^OOUR&{-QyN3HWnpJ2&gvokYxlf(?BCv3zIY2M zxnVZ^nW^*ENSm>fYEuUipB*3dTaX~nbe6VfI$Z>tYBL2EU$&B9wR{`TYPb;AOd#p^>(N|uQhD5eBgK|0`|OynLmyP zSlt@0@cw&!y^}H6$gp_luHD5yZ>lV=nf0i_Rez`EmyufEDSz%Sy znwh@t0#FcbE4&#mENH|!hm&&bm{r{F3{jg@7y>QL28vg>XDw3Iixfjk6q2Ah^= zKC>T~T_z-bn1@BT>x_XCq$W&}@-B*zoReZwhU1YnVV>lb4`v!?vy?c(P^wdb0*A&t zF?0Ocd|3*9v4xyS-o*k!PZ@d|i<{B`)vQ-uBKQ}#a`N|@(%P66uO1|wV9|(40$%pj zSaGZ+qPa&kAWg|Q_SMj^q|6iZ!1~jBraS3_R{vF^FBaoyS@ta*Pgqw8(syzZtmw1# zuhKSE5wo3VxMST)3g<2#e-k3xx4G;*LZ)bxXX^{8NjIOkGadp~Hu!Z9zE$KR2qngJ z99&0|zig3SZtZDuj_13|Y7q7iNEbdclYsLiCwKt0=gje8MxhUWcd)L7q6a+0a-yor z*5F&BAeuqEChN+LvUzZx}nkF?%L?VEi?|nUAuAj z1b26LcX#e{?sM<=-tqmZv8wjkRki=DS-Zwub7|S(o}6mKU4LVlD2!UAs(>Q9*Kf-} z-ZZYF$+NECo+fBaQKuH`PSSK6gVXxZx9iYu*{q)OYS~dMee7A1tY)kV{IA`U6t6c6 zZpz2$zxG@HUadM(>la%npH02>9az-|N1L@S;pY|YI!PqHRlyOjEqQ<& zxM}xmp=ArT7|OLG8oL9PXODqEi?+yHh{Upe{e-|+!5Z`Dr#)PcdU8uY&gN-3Y;%(N zfZ%>v!-1x!BIK{~eNSQ>#ZM%DGHnU0&2=Rdj-_1c2itXQw%2O3gR4Ga2!};m zz}|g{*Cjl)HIL6-6Ei!O(%03(hGI_dxQhlel!UL^_)3Txgwi}nRmb?Weo_1s`fXq5 zIK#be^T}c8vfjI0o2jNpb*02M<<*ob^&xFhWd~^pFeM%GbXt2EjOCt{=}p#O1)b$> z^49xUS*^E(mRzADVo={8`pdc_x+D_*XeMhZ8ubFbC2%AxYnU({rox|E$U92td>kKX z=u_LV1XJfN<&OoU^ zyr*d%z5Y)%qbWj}_T1nROf!SPL)=TgiYM-4gN^5;;q%NeJC?_6n|=!&}xuXZV&;C<98Kcgc91&&&|7&P#w1v4(&yx-wK>L*4=U_FEvX zA?uG-EuP31A#3HhZDTR;fuJRZZ>_&`LvEiwy|{ndUM*#P=WkOmq{>E~vWobk^?L)o zz1v%k$+jW6$&S*DaZxB6j8e;1ZaNK#%ns)%&n$PP1HjCV{(;-Vv+cfd;Gp_qy=Jq2 zfTJLG>e|-Ntn9^}TyMuhU32p%f2vy9YP82TeLwU%idig5+Zxjd;^j2_qSZRe;+==L zZtb=Mz7Im;dV7U8IsVj4B| zxHnLKKluHrX`tUX?sFm#>m=T%v#WOog`JIf+QQ;Y{_pUS{F&L{i?s%5@Q|uKs8Nby z&^^i*@ewY7^|<sDErTa~%D58E6Iq{q0$(Y)Q(h+B8x*R30lP9fnYa-&d%d>TbY$|M zJmh0!((iJm+_{#U!%l$(dV?AekXNnpe!j}F*m5!1v&45^pB-P!6>aY1!2_yMjfKES z9nzrF95EK4CKJY0mZjE3L<_6-_h^RIJB)>CEkacc+8qrO8ra6su=LPihv<+!DOuMp zyKbh>1h?60L&3nIMZ{TwDyZh2sj24#_=g7QZ$rB;eMf~@xfFKN@BzFpAYq0U7-oJr zSS!hzsnc`yj6G{GPOF1ZXg{!>{L(+oyaXg$bU26Qo?>i5yb^ILK1TU1p+6!ic{vvf z7;&vOiW7F3_P|HaxqL*q!7KfIz+?}%P;*;e)grz9baTpQyy;~@g=%8{kePqM4&^gz z*!9`}fSq>o6wkk`OU1XC`fpLVcN{6*oFA6h$<~b0n-3_E5$jWo&Iw8Td}2g&vkKSv zhpM%!v{B_{e}|8~n>?L3T&mftCs6-kiu?MC5n$48B$rbYwYbzDZQQH_WbN+@o*lgit;}_sz+)14<p&!|82avyuCP0{Ab!Y`o+kXb*P z5?vQf8?+_qAox1loVk6_GUeUIzoRfK5@?kuo3nWXO&y+w5oYOunZnDnw(+(m#~Ftr zDu`oLU6dyN8O}{L2pYBlmkkQ_Wvhw!(}41ko5Gz^{H*PB8?_c2C@)lxpO@|=JrbV1 z+xf3bb%sT}`>`oMcs;6XyL~v1pLk!`?9tG?Zlnk7P?ZO8iVRGIJQYx8Ghj5Nx?*^M zg|}Ld%%_1CRr=6;>S*7^#}THRzVQ-b&pzQ&tqILf?xaUpp}%H_sXUcClxv{>*hx_ReYs~QGW*9{9&$$B8{Ece5DL+` zMsqGrzP66gZ&6K2N_59;&<}3EDpk|j44P%UeezB7T?V`{#*!os1c$^#RP#e0DK18i zsBKGHvg@_f*xVI=B`1zTh81L^3W-*%=t~<+&kC{Z`}26-j*Vcm7sci0P5G6k1Z^GMbLN)6!l2RnKu%wC?&O(@_K z`SfX?XV5WkH2Y<|0m#s#e$06b{mMj)$eulQI!*ghUzoyqhj7>(V>5+v3`NkX=VH?h z^MWbdop)bZr!{+J%iB#f-gWA%2H1fdz$OYXXD^@nHk9vD{QEJkVpwLUIB8ofGB-7P z&`nMx0TURA33B=1MG0dw@^{CH1gmX4J<}5b+3Cn^0Me#?8dPbfMvBsS=B~}#GTuB+ zz56l+AU4HgMl0r*;=#eN=i*%%wzDdyc#6c^7(@G}Pr?yuLZ#I%5e(#sseN=6r&Xj^ zt2)=wKZ(Gf;wkXdC%~W7IT#BYnG40a!QV#G@Wt@z`xV*zKmci=3w~FE5=hF7UBOqw z)a2i`oICoYgrM5gRmS+jD7g{piCF`U<-wvnOP|anD4kkgwnsBe z(s8vZZF(lmSay@Q(Qkix@{)XBt|;JhXYB>vmcAiF!q!3W#{J;Jn(6OuLqR#VE$8Uj zv!{FiYmU_?ZpF+;Ka3^oZR_ye8q2nvckjLlv9V6~Qx}Vcp~P(gB(xgGlAo;SKcC-} zLffIA(M5MOWilaPick;Smbxe&><{32Ff~2ffRQE1M`YRwgznae?tgrXnI33o{t_Lb zJlK{D(V0?h(FII0ZK3eVudit86`63O9whGelNWp`r7*iYE>SWS_WQ-Oim`P;EN7NI zI3J18ty4!MZz%ao>flM%jEOszZK#=cFQoqb0m*_F+h8*$D4be`vv|2}4yJ%Ok&8KA zqA=_M9_?ut;H+f7I4+IWP7JJ~T}(%4ViC~cAxm^`#W-)_rZg2CGkb>QOl;4MRQE?k zaMv<4_q}BGHwW++>{-znQ0_f%IGW?&xhH!ljerW23eWjkD6=oIH*UyWefin!4^P3^ z`CcY&>)eiGabp2Ast>|jZxhWqtN$Ah3Dv}FO8@_q*XPM1-w&~&eB7xTZbn5cG4Hvg zmH?*miQDq;5rbIU>62{#svXzy*Hi3;-65*2&9iR_NE-P#RQMKiZFHj}e>bd*WP zlkbGcyv}_W5s&6M5s$`vjb5j+*>_Ex#Wf|z(h>3^TQ$P4Z3qNiA(cRCx8*%P*(u_Y z&Rw+gVZX71_iYfLgl<{776VW44>TXcodPhPUFx=V;TxJcbCWnj_lf7bk@0KDc2(C6 zhL{HW?t7tP!kTc_jccUGw(M9pm5h>62eN(4q@ND*(099MM_@cY zZ#h5TF0Tzg#p{aIX%ovZa>aVprK_i+y+c9*!A^N!ab86<#r&%Y;%^q&cDu51XHR}! zE!0Y*tU&|AhZbuC!m-f?Wbg>qu0h~cARPuKx^m#baS?hCpa)EIA3}Vw3{83};O6TH z6z;S!V;x5S0u#DmCRA@1cSkl!07*oN$S!A7F0sgMJa7o572=j2JOycYh7AI$nsF)o z#DoQ8qUg#S<_tYR&Du8#TUvDvu4Hw!2LQ98f>vZ1TDdwo?)~eou!H|%!%<11U z7WuMK7;>`y#eFKOy)h+meGcyF8UvY|lnBP-hw$2ErT_u!Z+GI)M|(2(#y7#Cm;EH{%$;sjT^zq7TLBWjZEDA>|P(nY_=F?8ms{U6U(ZZ>A$&q zg$Ma~%(#iOtbi|-yp|*o%yNAt2vcE|8u9VgL(AmhW*cGh#xp(4DL=8mQ2)fo7tDY) zShX+jG0k!e>-JG2Da%Gq`^hFavXFaKE_VA7f01)6>^RckyTkOCGY6)mOmajsq^v|5 z$211t>3>Ff4%%RUEtXsRRS_wK16>W&^`2dna|59JWh}lg!#AKQ|1n0=Cr6=ihc#BQ z4oFlh&xQ88I&$Ot%pv-5>q^8YH%X8o=mfQjP!b1L*qZXx8MTx#b}COlIFxBg$^>0y z`xClmE0QMY-*72?;DB?YI%YL{4hG{`U;Q%2dpY@IzT;TvnPwi=xY#}Mr1+zPWwSqX zFMEx$fua2_11_vuAWAj4zua)Vft`dGJ?NRoxe6!&|LE!e`=x?y>&_%DXSRrYLlt@< z$vnV$FrrK8GgJl(ZDqVrxHQg(Ox8;+>OTo|5tU@?4C zQ}J-4qTqUUZ;NVp@CmBX9z6%E(p18^aO-(_DA$UhdQE#7jw(b>nkl9AA*HTTQ}wp~ z2(nJScKmGWN~7v20f(hbz7h@}x&l&Eu}yc{biiswe5a}o8f9$u@AdUO0amtzHJ-R7 z?n07aN5STv41Rn&IeCTKi(xBao;$;^sh@hi*P}g2i`!AQ`+wloucsuYH$<(hK}&j8 zPsZP24eSsssRUq`t$RB!5Ejq2BczR3^Qamxf|&~+9WdD24;y~Woq%>Hy35+X{F|MJ z64~~tEAW4)0!MmQOCLAW*j}bX$FC)F6w;~`iQ^RFi7N3n@s0aY`f`%FGj$M6BVWyq`iK$d>fZch>27adhhq}kEB`Efm%fK!^QM*5U?QtW z93#!VEQ;~$KuiQSca;TlG@zx&)w0dQ9K+(7o0&QQq8dcUs7xRfkb z1du(SRyY7IVsyD}y->~X0?(fCgk&I>BOmJ>V}i!#;%wn>3` z+NHWLzArs!jPhveYk#Sdt)~PJcL|I5x7KbYyG`p_iJr|6_#uBUY zYZ+pH*{2L3JJp?PHL^TY7fAaYSCD>1W{H*=7Rcjz9IY}XjXHOn>$+U*_}$br?+v-v z5{-)7aJDW|LM2dmIN`5}?WuhCALpaE1oOi#?Ul=7k(w?OU~m#h9aI!E#XpWA>7flW z$4P-o8r965x_k%M8TJTPdI)Y<)zAkGM6e9SevGCfMxiN{9v699DSqwAc)4qXu?OhG>Cqh@Gg0KShU72h zkxUc>3Rk>OpW9fDml)tSu2xGjg^~#)^1Ba0QnBcXP|DN%R#SeD3|b%ghFhe$7yQ(| zGwTkMiy0|@hEJz+nHv+Qlr`7gh1c|IjuTW|G#H67I;pzr2WoN!`iJMm1qBK|XeTYlP;QT2GbDIF~iYEgstQUYJL$G|(xkR5NW zi_(Qa8@7Qcj(Td8tXXqY(>g*6Q0pci*B52Tx1*4?v8&Rb;h7%7Xpuda0c(q0#zgKu zsO3x>M;f!mo4yt*ZS02pj)nbfh;66NUw)dA13#^Yg>o)s#1CS3J5FesaXs2-r*aW< zpIMUSwPoYpJC%2Q4tIpj#p6p%GZ^>nUHb}R<@nic9$;=GBb6=7;TkiT+ z0-wTwpMQD55~?a+TkW|0$TUQNv|zTeNd@0Ns!59D<+u|+5caXt9P4~oH}6rdGEmta zg?0Qbve(LcgBol?$0#576^=!rJ=L+Z)t!02&G~&+VxoZGBR2L+e}FZ+Y-$`-&&N7L z8^00jgD>LWdD&etg#N|va?2kgc>01r8qpRNp$KG3PGs#s2LWgc%}MV81OxIlYWDP8 zysVbkd$$jY5i}Qiz*XT3okP=sh$=?*k|rEh5n7hfUjXa;_Ueey(9FTuj=U{im*+&n zr?ZC1AqQe}FwV-Quok7F{NaCqWe98)nt$nqcin%sWZxr#>9~sA(BSe;j^gREybx29 zhBnGPk%pF~@E1T4WLX*Z+eHKn$*VmIx3z*WL~jO9w%zi`#p;26oqI%fI4UM{55@zv zT5qU#Jio9Rf;e)^!JI}sJY+8P@OC%3x!&^&im|< z^0pg-zmdOK+tS%n@Hhz+KXD9sOpBVro4x5~(`QL>{dNY3PI2y!Hx`cj-EB#=dsE03 z%~I&aG^Hl2<Gg56pVKsHDRqm^UkIImt1tL;z!{SL{bE+K(^fHeBZ}H*~bI5At z|NNqI57{pL@Nhn0!1BNN=EUtPT^~Pxq97olUc05i!JWU^m@;Z%q61wSOp?A-K9qp^ z1c_*8Wh+mpcOc!fspXphjBE@;sXxAt>=1w0?tB9?eA*6d~GMbR3 z!~-uXj)zCfXACD_PRTvVEy{UW(m5Bg3pC|%GfTk4y%fA^<)?EoXcpkRV_xzV>N91F)8jcKH@|74pk`WG~)8XR3)e-(&*k=$g1zuHrMv zosGt=2f*rOizcW;3jtsLqhDA1B)T@!r$j`xD#a6(EKja%Yle$W8*7!)O_d9;O1|3T zzwqtbpUu}-G&G5qH45_~w3DX?UwAfgcyfb}2n7B%F|l+GeX)b6##WWaAt!J>qB5*} zls*ue$GQhTVh*;fBr?#lAJVOV-oEW3WEF`rD#&k+=Xu2=YXh$5KbMe0i1`ScGJ*3AwM#dlV1ZuE6D)5G74RW+=+pmzP8wM9J`g>Pxn$wwON`>pLYgY^qh zt48tg1U+!#naR&Y&#sX;BZEt~b%3`(E^v^;aqK16 z67;4ckyDO`f=l_b0B{?!=BfN5qMMh+-shUHhgJU#+Qm5NC#qV(^fXXKUDEjKH4VW} zaepSgAU~Xwwd$+tT<*2JZwn@+qZ<2tbX*oFUc$Up^M^s;=sUX-&1PK&vY+$_0~39h zr<4Ekd-h#shjW{?_*aDF+Xr~iZUJ6}a81s_p&E{~BMen~OYIQ=u>T^C=yBsy1pUrS z&MRhMSk2BwG=fv$0lOW?Ca4v-TCz_e0|*Ngu4UBbXl~&Y6tg<&>w96Cq>3LdNiytX z9p~O6Z11pln!E4)qpAEJR?HN>gQ{YZCC0}xTp!Pa`k-dI5(>D)T&x5absueGa((ST z*m(Vss-f$r)*P9aniyx}s*Q1R)$Tcqb~ESgjZpY=O|e;L@6HI{MsIA4MYLR|%d^}c z(RtgEKfAJg?c2?J?u_`$AP80tQ-Qjv*45Y#0P)(?$7tx+J`=#~)q{nL5RH7#4Xmxm zj^3B04Mp>iOVLffY4K>)xtzS5psHCQT%*-sHvR!wmT3J|>r%yci&YlIR^U2DINZcG zdTv+l#!X<5=MIC6UzcgrNmte&x^IcB1mDK91Z|4s9$MbRg3uFp_l(~>Ft$>kTzR@% z)m@V(s$Tq5`GUSy_cyCzZxZ)LhHz+zqqxYtS~0o5i^u;?z(-En>)RslFZWFPwoA1u zNd~LGH4WcaX3b_Ag;YIH3PzQZ6Gm$@NXt*}XEU=d^&Jh2cAU4GiztF2x!1k&dWUKp z03H29oC1@C`nKsl-pz=%4sB{}Kw?IMhN;meFIubUd{SPj>to3BUHC!zB{c<%mElZ) z9^Gs5?-S6;HuNlT%xDj)*4|^UJ>vso!0Fsx6W+U`dEP`!eXjTn@f))Ip&adaZ5g=C zd;cr~Y9rcnZ?ESK44dbDJ8(5A;#>LC6meBDj-}!k6%QyZv-}h2}Ra+58Au!HV9bC5v1Z76JmJe_P!P= zd*(x1!rxlYXu1*+s9shnnI2)ZCY5@-Tp%BLE`FcdTKXz1PeQe2>kjhH^OF|F@Sb{g z1@vjY7J)eLa-V@8Uj$b1b6DE zfiphP(49h3>Y?k9-CNLAzfDu7^Z97CpwgHK`^oL?k;#qRrOn)!wx)Y2O-*LZ&jJHN z&JrnB$o4ow8&#yu;m?lHH(ZV?+bNzl+FNQ5zBL+ymgU?$=|w(>hLRFFFn#({RJsr= z9bGh&l2wR^QnNl0|G+BqC&__1SZKfLj zV77IxwpQn#9{hH_86%MOb9xWQm-YMhA2eEI{$%y7%tL`}97Au4Wd%J-lR&3S8xN)D z?x&*)|fX=dL zC)F@BcTW~`e4!L5d->H!t-f7_E^M|vM!To2R!;P*o!(bBY2(?aulR*`(SF@dC}PSC zRWiq@9Cz7rqN=?#M?d3y(H;1G64of+5SrY@Q0=$gz(1M6b9M5}qwlND$-=8+D`gg# z&t+RhMY|@b;NNtZ3XvknIL$>lj}-xV`ho;IZL&d%@s<8p2D{ZJ=`3<7tuHOvJ|z<> zway4*w?Xz4a#pWaaZ56%pWO!v!oIZHkiG0Z=0787b`JI3jSD=^V!3?N;Z9ua zcxA#EycT;2F|lcCRTgHW%hOHFNQwf$j_IpG+?(shfK}skG*%8YQKk}_gYIdNM4UZI zXY+X@smN+}?H%g_r2>A85vcJ9%u+FAmjBG@;JIs}ndLC>_Px*x^cPuqZOdH(gSZ20 z{mSjKB&#FdBJOwvY!w7-h(WPj{xjQo`zs}MdsEx*3#SL^+D0<1sgTTkHkr`MNp^>7 z#p%2huC*U0mDfvcQWi2qZ=w~IVL?3eGq5j`tN5ib>4IN;3$WKs@NFzD_6ytv1 z$U%YsASKJsSMo}kziA@Ed>I+zw^D8#6Na?WI&{=@&4~SS5p1v z4L;={nO+gI4S zj7q#DHJP+7=Rhu}4X{)lu>}leb~l!+@|y5Yi!JAwMl$pE;45dsTt3bpo8;32=p)z9@HO^Q>mM$WRbVr3`RAS+ zSJlaaK}^%NfQ6h4qc%jVMDK`p3HOPn>TF;d~dCnj|T_ zb~U>2ae0UFCLhi~dD-}8H8r1Y?|T&C@w4^W8_q2*04wmzo}9PILcqlhNFGqiaqaWI zBYs}suRdhme%up1)ou#KqFGAQ1%sqNPe-@qZ>(Jl%6x7#af64_PYwG&@yZWMP-8uG z-Ga7H4rJMx+Xq%4?+<4v$Ig5pwS}01VO@n?TrwFQK0hqXyVj1bvv+g(q&UKs($UO1 zl?ZJD^H$>teVh!YU0(IG85LA3`q7m|(*~i_-emzr$~m?vRRQx$MrrLbZIGMarg}Yd zIxPP=tKJP@cOkS^1+)!uqM(bc$BvLU59(TH^`TXSx=WCdk4N`2>p@R#SwbZpJ^c4NGKUT?)CO)To^MT; z5J!Wn3(^ahNJo|~nZ+Ljn=}B*!bu0IdF~W9qH&XZ8|Q~K<+q<_>|={#HXn>a+SD?_LOmHNedlO3B+(;e5;w1M(!`@g2WlS+A%N?%_{TXzj-R z?D3D<-?lQ2WF&<*QCT*78e-FPEB)KTUxMkgerkXUvOI(n^3STI98p2Kcn36;&)Af$ zfpld1#~y>k$&|$NPcnpZ)-rXE8ftCCZ9KNFDY|*aDyTY$YFrPI&d$dRd`>c>@O}YU z{sp())}G_oSnfo>QATS?@+$NRsDc)(y^`RO7osjYn=9{FeR{>Xf7$+wNwD{=X3I_O zgwnTVsYtJ`yw|7NO|N*Yd^WnT38qH>8+7BXe_TF=V`*w?Q9=~GaxaUm=m?73t4v8y z4w0E-h+dLN{2XoS)$$pY<%LnRU|ya?;`n>hcUt8J-1s6vg+c`eqe~k>c1V4f$zTFG zEy*a4QFT@K!y9INq|xNcAm731rpX}}VmwXWhE@pb_4JBd{5{R3;xz!fzFfS;Z(Q}17BRLrL*4W<3zj$!Npo)g?e{Ips9kg>`g5fDJf^$-^C+66>td)aC!3N@Uuuw<0u+cLf zMbkSY?|?j@;+jY8zL7JH%85gZzu(uu=we6YCTA`=KE`Aa?<9u?5wx-Eh3GW;LN=m( zm)HO+ar$tN<--g<==hDqyQBLhrEo)~csGn@$A`cmRGiz){8am3Qf=aNd43A4hb(M+>weC#hy^3adyA%%r~$?SA* z%eD?Z{N#Ipq$#N31JUFwCHY+?%5uSsnni`&!J(RQ6UIb3L)u{7xOo+WGy<-Y*WD;C z^tkLe@8JQV;3KDLyJqMnHX^g##lJT zQrv={gSQJf7;4rDA%*)z{E(rPY=uC{I-6igJc3f)jR>o;59~=%nyRKhj(TaFK)z*eg?v&8J>rZ2wp$^en0^vJ|e{juR(`oc#P zaE<(1#6rN#+EPXLFTg$j3Ym~thhOlL{B=dcy=b>_1wa0+yZgBx`Yd+%;kQ>Tf6q)* zO%PGL^7ma!B#*A9l1F_*O-fY^h*C~UD90?)GqU~ZOX=@mlikCmKIljQVwtNp%v$cC;{zFRcn3r z)L*LuJvujavS+IHL)AL$vo{Vw3gyEvCcoXhm@7788u@OU0IGv_EZ2Sa)ZGe)?m2z? zPhwJgzXSJ436c^lQ1QxEapAuQ&`97}<}6g%sEjMns_Zx>(zwscY|;e!`WA$aBD$B{ zrE?P>fFY?Rh1mV6*=pRMd%3*~AZ8!Mb_O*Ro$-2}r>h$x29HDWi>F76SU8Y}$}JEy z7yvA;M&pSUphj0=A8sV=3aHq2>FE{zpFmzy{A*DRd`h3~YONjube?!K4GqT?uBn+C zd+t(fca6fk`_%0($x1Ur#&te|v^PYZNp8-)$ou8rOk<71(%lpeYf@Q!hMlVbg0y?b zqVmtrqa|&q@uj22m-2~nHD(_ngX3(co}IQikBL&clzU<=qZ3)%AXtjvEz73G-t;2K zyQb#t!AZRtZYi!BZh?0;8*lTcM_Nol1sV5=uSkDli2$B^gbMLW;Jty)*vA@bE{;?fvLgZm3X|8oD=ub z`(5`$CETl9O^2fRm|W^+YOlGmCJ^E}vmlo1X|at|qB(|URlhI)jBgW|t(f#tYUh^e z@T{QMkp%eSVG}y&t)w!uj0uEDsZt~^27WAIbcx#g%80JRk#QuL3%&l=?#ABrVl?zj4CD^f<}c&j#vSe{t3J7{ogiVQ`YfW@vdjGNQ`#tmxR|qXSud=Aml(@dmqKJ8trvb7*cw>W>lh~)+kT+WXwFIcmGas6VY_V>;IJoAH*mK625P|U-tKn=9iIbz%SppNv z3RFY?*?Ls6skxH~U#jKR(l2VTbW(5x^O3x7!9Ez|lIxZlqxS3l>v;7H777<$jD zoVI30EvJRUqd{$BaLFX4Jg<0mDLdbh_+K9s!?o^bHqpM!CcP<%GHqMmv{-6Gxp|e? zN}qv>1h>vvLF_e_*MRnalX5>~ko6~O|Bu!gz-=kSfB#xJNOze$mB%_Z`{3IF=JjN* zd6)cVqa*WNbzCjQ4JaouTgg76Dllz;UtI3yXNowsx6oI%tjEQyN+8`#nKKb&dA*rxyj!nya;f^Ad?(x zU)1XHylDgPu5w<>>f8{_DyX^PS&IY~`a7-_V2|{?vOg-a=gPa&kEjyonPd4V94%4T zAEn7S1*JT2SV2?yPoHupkOxfidoMG~bA0?~S1{m*b2dPVJ42JHX8pZLItK_ERwK>S zQtdn>V=~`%a07KeyTdrRiBdDISn!XwA@Cwg91qbB6Ow)AwPEVj9j1ll^siYeI1& zPGCVoo}nkG;SqLUrE545L(eCjgzzLsxbgf+gl)M_0bOj--%5!APpWXsRetixSYxfe zN+QQkM}%&i>{JE64I?>XjpuK}{*UWWPz`T%H)S-tIX#`5}l9L ze`@uara3H-lht0fTC}u7sL7J~Sz(OOp+g)_wc|zwQ_4P5=n&6V^=-zm%^YuZ{uW1{ zDX_;8tY;)WD4+}Se!^2t;A059n3Rz(}p zTY0A?^j6QZNhXKiryKG9`(r%82aYd)WA!R0P@alTA)&5gn1z0mu zRnzfX8Q^fCR^1iEDW6iV#kCpyza z31f-v7NSVV;btV%@e|Rw1J(N?;r~uZ<(tQm6sCclDbfHt!|Ht^dFeGHvzg;(gGcff z+*S$bI2JbJM{>CxQ>jDVcVMUHgsdq%#Pv;`)gOM2y!qc8EoAUyyQIVa4Nj}=b*Hp; zk{dOCk1#BDs{%XX@PwEl9wu8F@zxd_XWSehk00|#YO$T_PLueP!0U;}4?Z!zd%xI> zzq1nB)Rgjfda!0XKkW_^8Beiot0dE!OtJVrWwWSF=P9dkia*36b4jj{cpFTzx9dL< zo+#T5T1J7QBDLYLFlof`m=zYY{qI}g7pI+h257^#jp778( zrwiWO~HIY^||gB+h1%WhQB6S_-?T&6yQ>Ogrq1QW*;2C z68G3=FO;dylIjpP(G|}Uhc=D%xvv}8%Bf%REv>fH&%7WGjcT(F3`ZmlUYC?tNfnak zZxD*GNHqe7YLm4JT~svFBAfL#n$Qku6X*`-Hy^U0ESlM@U^wjK*mg0=9`R8xf3HBj zu79&hm7TIjc|fy}@yhSZNLQPt_pSp*EA8jHn66lqs#sdYs5pd%GUI$Y*CX+im0r!o zOT2t65>oJ`0>q6bfkVb?D=LSgo$-2Q0#_7`Y*tIS;FnBT9_!IDt9D4`$duH|#+L@E zk}%hnuup^b;4iLO;m(XcZ?!wQl!C2_&SOj!#zT0;^7u!-_?fVra`CkA78ljNBqo() z=2K}_KmgdQD6%>4BQ#P4`-n08HSOnHgTp8h9+fpkifesw zWZYMsX&{bQW0))6FnFf{9?%ST$DQCXX-FIY@0>Ib_C||a-hEtW7DcB0IIcZ@xC6#3 znE*LJ#=qyfD2JC&x6Cj8EC1PY=3h&qMU82Qnk^2V8jF&4sV#qnY9Mo|8m^2KftIVt zIy|I0RKOWo1bZ#;+D%6BQ8w90Z`y|YX)(?`=>Yg?Q=!B~Xu??_jNNha9R6|eZ=DXd zCTpO#dg;hFbw*#O8rrIn7WYlzj>QlRzRjqEp>)Stc|%>`fkvjjk9@~O)7Mf=?+n}u z4o&*34T~vmsN&B`Xp%cU??fLmT9dBSiwrm#lw*l?8DE#YKKVKPxApRjrRtaRMXk5f zAD(W(3|gjv;40tLq*6>a+rl#GN<2~6GyT!mrNFF>y}e*XojQMSC`!YmAHB1&9v2G` z*FzY2ljW)7Q*aZ&0G`*f%AMYty3)a*fZzT;|-{OAz;V{Cz? z}_O%&P9XbCg?~#MSAqBd<+~VO1SB3giCec<;ej zqV=28{>(u0voH^W-q$E?M^^>3*3-{#4P>jzg+y&rR8w)_7;`b`dEjTO;r>fmPxs-o zqkW*$6$6|6rCx|KXOj1USpjS}52DhX1fTGN{}rleTUfzPsIw4Q3LD~WhXR#l&fZRw zS&-CjR`zXo`$)4!E=#>OrBJi%XWULUkKwD`54?l#G5u7|U?Yd@`M{B0xwZ)nXOSJJ zuI24!cHg~Mwa9!K z{CTly57cY*`?6<}e}gv1KDQP;7rd-!eb2)CdRq7%qO_59RAMc0&GzrLTjvGQVE+G8 ziFieEIV`u~UtlpTP)o}-ld3M823gUFe9A#*f8S}=Q1v@0XGl?kHyu8nbf5%Aqa_!w7|9Mc{3aWNd5Z%0z9DMarf0Fw8c+7Of zH8;4!VspDt68|=Xwotv0s$M%0bcj*(+-xzI4)sy3gwZYhSShO8NWx-)DPcGjD^!$x z1Wv1*u0I8!-NPg3Dt!!1(Ui(SmO0N&rflYGA$sJ;%>kw^9=KYW-hR-JN2L-|tan$BKWU@Im3B&n^SY_V!~5E3$*Q z&sMJ;{yj?g7Zs#@ ziw207v2WdIT(FZB0FCXa$LXW(fL5-bRABn>IIfJHJ~AjsOBZnr&*Pm{%As^`#8Q(f$@e3 zt2)pb;wV`I%Jfy+t7f9LyL!6`9EwO71TM;CI)V%1lOheG3Da8V`v}%%bBGOrSg`hd zHwEm6wF;bKYu{sU$>IToJ9}>0slV%Y-9g;&2RGfa+hdqc_B-dH+_PUgta+~a+u1&N zjw>OyKg_@@JQ?|OUuBuPnVoroBNW3lqYYfH$gc#Dj2oXq(Mu?3R}Z!e?%{s^Ml@8-;Y1M_OOFcx79Vnsy}Q z@vCvSwR4SF#>FmW{JBswho|loLm;LXn{|8YjTohr-c=wQ+QU+Qq2kRWB2C z!)r^#$W=JW$A=CwkS)Ii-dq)dV%j!qws=o3({o+N1c|I zKr{dJsw&w`kpcRucIX~{GwWMNK%&xs`7Q0G2!JOyP1q!KyeMJw z8E8%JqMK2m`u`qRM5Og(x8b~T^=^U5AGTwCFD*0Lwr8+IOKJCDKncPH$?&gbf zF&v%25d5#180t1}y}$7PG@~#fD7l0O75#p~1WhO4&bO!mYqtJ zBl-O=CGN2TMsm5yt=oKZ_u;_QZQT{7vv*0ZuDB;_@%Y7hUtkjdw4}m1)=<SXm2DFr~@5USsvwsG- zjJ#W8-MHGHt1STQ!lCWzvgPA zxp?ptY`5bSIGyXALMw$d&Y9*UwwHlvK4}#{@`5TV^i0NIb)esJpaxCNef)dY z4lST_JVv+H{~Y(*klgXiQKrs5Z+c_-KH+(sB-Ug@GA&S^+XgC5^rsbZMR$`Jr$ zGn}fkUfTLOxLbg7(CI7@Kur0nAYOfSB`E|J(4YbH2^|%K>W>F!1^Duu#mN+RFxh}LinXG zB1UiJ(QA0_W%ifESi@McfVf^@dY$WoCD~v)FGX@=K7VHoWD9Kyht3wvnNv|ZtjOVY z2d&B@(hZ5t5IU#f-Ei8l+^0K{ySJ~tb|2-OyED@Y#0Kk09_&KzUo>0H%08QaG}R%M z`Mo_+cP}%Otj|=78k13EI)B}|y9D_y+J-k6!2&|CsCnobb}4disECPXj0G}wW$cB3 z+}xc)K{NHIY3(`8KPW=bCh@+j&+3fWtaaScu~!&oEMvz0Vf%-8oz2jFO{83^%m1Fbd-T0lg|mw?ahFii!D09-uooU)u*kHCTHXxg%U zoq$lHLv#oI{v

m)qkmDENDE8R$BKc5EUWQRfq!Jh8T!l8=I{ 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

ViHFE26i9*SC7UYs^;4;kjtdy?}qX) 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 Ew7 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 z ze!MsqkmYK&>gMK>gMw|D->TXI^h(8c%-jYPFMjc@@A zodIj1agfnnW>UfO<^k}prXM_ewnfsn=^{U-8kR~NI)loiO0=lG>0y^SiLgt@Ek3f!!8D&y0fd6J}&nX$B`IbMx!;H}zM5~{O#YW%O=7z*(W zzF^8;W{xB(ycQOr@Rv^Ygd+MHP5DIBN>;t$FMRJcr~&I_p)vPeQ-QOS z=!X2dNvll-5PkQHz@#~dvM*d?!npB>@kLZGX&$7(bUO=T+E~<6cx0#2rDl*+KDbMm zoI#XC+mRecm0b=vR+ic}`9>^urs25*-D* zer`@Tzr{Pzr7sJ-Fxa;LV(r(H*jE~cdB+}sxOH9@a*8GG^=*yi5xT+XutIrYYByU7 zu&ir@Em zr8D72`h9!cdnJ0XwxTp^kJit>XKn+Z{c{3_B4=M-K

PcZD3%bTVGPwhZ>kdl+;qC?hs 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ʳ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 z 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

?GFMW8=h&-uWu0eKDunF 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%0AkAlGF+Bl=TP&ewcdqkt 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 z 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

Y1^EW2S`kmR4t3j9RrB>hU1Y@WjLqd^cG>99M4d zdJM&(7Eg0ldV_M6O<7U-3GvN5k@;EeMMo~PfD8kJ{myiKmo0pueIKz-4eK`(6Z^(D zS6`EwSM|a!SV|jXV|p(vkZM zVh3ZFCjwR@mClUCEl+KmNL*WKrd5yddt`UzHV~5iq(9sy$IoK$rfM{+x)!TijL2~Vba={pqbZq@}G4qS~ZQrUb}q_T+?f{%4@%$bvnO)JzCcbyDaP| z=(sCg6^YArcD}E4>168knSbVN^-+0RsPVDNNLyXo?OVi5o0L5#f*c9pUz9){5 z>l|;Y1ljSzP7c6nd{tGZ&;L!oMykwCHw%_2xmY{5-_kq<#_$Vi^juh&NC z&(__Je0CQO+Mb~p_Vr0bpI3>A53YNHr8J*ugdqpy&+oUTtcQiGS3zuh0C_EKFjXJI z(A>?mMY91OdJZPonF2mU^sK_^0hz>lS*n zDOel{7lHdc!@#1pBpd4_6Z!O)n(T?foNS0KN;`pOrbmy-U_QVMyH}m4(83T`O@HOB zCi-NdiaQ7M+`TdzhW=ALKpqzV%z8f`h?+zGX6fVB&;%tQeDPs4k_QkP_$C~{a#_3< zMTP1tfQbylC3q{TRLeuq+k3(PDP~W?Snqm{qefQSvU#<^beb?GIA?#3O@mY-l{4-+AbC0EcLvs6p$!=NM^Wg7y{sK!!)pj!>4REN51BKqgVL|soJ;C9L#DY@?Rp_ph z6Y%pzi_0}xWMkLkHxcI+ym@rRPKo{tQ}>Ciqk(Wd0O#z!6MO4&1){Hp`;j0*LuR4S!Y=3w;*)+NbFclPayw9*|nE7 zY#CKs;=Y!0E{r@HqV*Q{ODp}ULLz760Z^b6B0kC*A|5H8GXTGryDh+~54|Y>sgK*I zF(!wXARwQjOaxu<9!s)o6Gyj_WL>Uv0wZz8GoHu*Fj0LwxM;UK48NAESE$a@eTnmS zgMg5fkD?yA7_Se%+4bQT51Lr;w-iPgWvz)NDUa zX!%T|qQ6b*R#&&A3=I^?t1W`jZhvIRXK_vL?#zn80s_B|KKdj{iiuh33LqPK@rcn< zerKMrEXU@X@CNKgd`(}=kstJW!en2*f0r1Vc`F)aa+zt(fI1-~GS}WWS?FfMOaLQp zn2xG2Hb^;L>#%p><>>alu|sczt2&j`Ey7vur@duB0bYoJ=d?OZxvm5k0H#M#!BO-* z6cPbih}}$PE?%UBA({6c#e?|bTXV+Ryz^Z}X;zhmh(m z=+@Fb%{+h3-`5f32!j;5Ny&PVP*Z0)YdHFFC6pvEZMpW|?Wm~Xa5(7;yWMb`MS&Nj z%4K3#+CpP7J!M4=ZN_hyZRk*<4)E3AE8gY27SIZJSMt8s#1yhhT6hOJ^F_t7i6;4E zqvTZ_`$U^Cr3k@j>{D?2q*oRX5Z(a-(!STcP+JUTWdUL7n!BStD|=~BLg*A!dVEl!)7q4khM+9hxO$- z^paX`I`j7ij_PR25P8^^AnI)g4Wj$K5ps_kO>a3*Q2ZyU!sq84E!A7fQJQA4{y2Ot z-T88^3bpH%@RMV;u!g;dj^&fa6~SW!GHX!U7~zFSne0wBPnEaUQPwdQ{v<=v^Tx!{^*e+fvXw<1 z{aD?C(C4_T68Y+Odv$NVTqrOoY<^EE2w|X|Xzz1;<5GC0&UvP>koVxVl10h;srd&! zI9C$;c8p&j+6Sg=;wm+%P8R$fR+Yco17Ulj`xLRX@hm+@{?p?ctjGM65zM1Gv7SUH z=@oC^tnfXwcjPp1s=b0a*4r8Cgii#W*4`VB-8o*1N-ul&-InH0#aWim`V&a>l?{o) zKQFb+dFOJMh!3Pbb%oj`9G7355r!r{JfRyQ)LX}Gu$HrvK8BmsJI3Z zRVd@wW1yA%Fur7B!Bi&3U6wvYI=N&rY*`AY(UE~u4vF^-Uv>Ab6NDu26rL|b!*Tc5 z1@|6t;se|?a88D6U5w5h)NzI`PFOl+Kj@i+#Hu8x;H$FOc?Tx&A&<1`{jjkTC?nf2 z&=|fvVF9ZJCX~&BhC;w#2X$sVcNddwGO!Oh_%W;6NyEjYBYPwkvzDcC`@Smn*X2_t ziS~AW-H<9BqkGwy9kPSE&DF;f{FNrp?J7i1MeefX>BPi%QH|l6n|i|CL83Kl7d$q+?U2P>un~){b>>u)!g2~=uJ`-mI^&*#I?CCNB52lJQxC_=9DJyIQHt@F=y25pvIS+;FAuzY z7j*Y;YaR2eueqBjWHJg;J@d#VC683Nj1fS43>iMj)ze#N^27_bbgd@mRS(H!oe0^I z{1r~}A{IFN8UyH(*AExt9BsNcykT26TYI&>A_EWCSlwJ}dAR-SO?@?Ib2GZFrZ<#6 zlV*1JHZqw$+)nIK&g)i_qR2N^g z{9V#>=u;suB!{g(D}6jrV<;=3DuUqUpyLkq&-9>rKzcOtIOME-PZgU(mgbS1Xe#8< z+*(`9TKjl1g%ML>fjyTG`7E4t70G59D~r}|94pUI@$J)+Fh48&bMst2?bU(MF8%`h zwZbjpg4?)U$tzsAK!pX{E|-7DjAa4XT`u4vDOL8WAN{1O2(P@0qpZvJK3i3^<d!%E?=hu>*o;rc^V7>Bei+f~z3`i&pk*#ur)k zo{221W7r)i?A zF%WNkA}3`_sEsq*NaE$5f~^N3JD4;TX*lcp{E@y6VresMlfI)YNSLVh?)~mXyan&8 zKv|u`FbP!4+XtK-#|QXw{_YG0?@zL#W;M3#bBO?v9Or~|bCu60J-gtIE!K~2I(+z{ z*PU-q= z4yTs%njKdKD4GT!(P2@2N)I*=}X`}d(_OLd)6~AXKo(2 zTLME=wY++;7;(`r(i@yr(j$(x>$44)N83tQ*C{QuD9x;F%E}td@r4$UHAe~C9V#IsU;I?a&+((m~>b__0KifaOn13eW^L` zWGfffQ$m*KbO^Na!{#5>dFYD38)j(Aln=Tzkj&Vy(H|@Syz-{HdFQ=NYWfkum5sD5 z)3+6JkBi{Rz-w>!k%@0RYtp7ucySMr$_-u3{p?H2EPxL4RyhmCnMZt^M#Hecz09wxG>kn)=ui8^7*W`=q z^nKSkN*`0?{cdNU6}%AX)8_e1Z?!mPL%*)Fj|U~^lhJ8D1^l8|`vz&Au!R<`qlR#wcXR=aTG zB$I%^*yMfcNn_jCR#wk77S3iPRaN@O5vhpJPrDPfYvN{?MjEcA7t8xP&PSXD_s<*; zL?=c!c&AwBzBXeb#$OrQWB9`E;k4uAk`xFVqqOOSV6irAKgD*UbR;OsJnc-zw=s#E zs!N11>S2&-Gqdjpqf8UdA{Zm@i#@%}hl@pUSOCS!%H$R>P3mz?`_{!Z1_^ij)&byD zwE{;KPeXu;14rY8z+^07;6TTMi16-Ouhz=p*V4bos+3^SA(e3{&_ngMmg2R=CrCY) z)UR{M!K6%nn@rv5UtnZ7)Oq3bY^vHy(%l!=>ha3_lSJmFyzMs3MaZV3Dd4-5wF4U# zwplF+RNT6~c6xpWEK>ORwCTWZ5n?s>+Snq#+DDFZeRQK)O~b&}ro{lfX1kv2<1|m- z-XRGXaJigr!;Ifspc z!Z{Y^LT^^;r+#VSzQ~n(HTp2|0d7~f4d16yDZG~6*WdF>P!vkzCx1~_SPW`<%)7bi&S9TLMCrC|++&_hYahowPCMr-261la5f z>g0pB?tEM|X&tH8KwZ>5v1+*J$TvCT0!ABDRw$nSG004_DQ{zPUUG8v}s?g3zIYcj=Ecv{t_2jG{npP2gGlnoL<{Lz<0I zT4X=Zu0UJ7GjT1pp}gU9_Gjti&1$1*o@$$qH@C*tWNQa|H)AKy>htOPj&hK((@v?{r?b!x60 z7&2@vJA-o&E8&{4cW&erYDz8NwovXmKlW<`fgFt)3BZ*{n4PCfKx8iVo<|2JT^ z`cDIORqKB7y>}572A%baC^}EOnnysHM*7o6rk$xFJLj!N7M1(*6PV<;P>tN4PM?0`-kJO2o2t6+**z@)fn z=@HdcOCCBxM0eLQAgQGNuTMV3p8u&uwnwARSp8L`dA0=E;0EV3;;GWz1+*HXec#SQ zT{^{oEMS+h9?i_l#w*<*C!152z5nimv);AvQB_-BksPNm5~)7}FN z{3{%!i;v4!Z{Cdtg>=`1&9+jEJ)L|mFipR^8udi0l>M4Y=w*fCzjBIvi+A(EB~4^N z$r@U+5zm4_Pq!1tc#2w_cxRx8<8S{GzR( zD#$AswJKeXB4y7kc_pAcPs#Zh$@1}?D^ypm`0X9JwtV??2heYwkg>n^KXs7@L@}`p zqP;a3dt}u1?bUMMq1Eo;6?h!GPC9cXT^LF#N-GJEC#Zh!04NXEN~&YDul+)5>t0DP zga>-Vc)z^G4`A7^wFQcxqW~>W)jP)di;g@OtFdf<)_`}`7fl~*tNi0gk3u|Y_cG7M zf*&*Mtn6LbHiB>Il{zW~CpRmmpFt}e-|<^~QXo1d@Q#*RMNwtEEct`BI}OpCw4uM~GmiKqJR-PS4ocL&as8 zZqJ`IptfzBExHM|HGj~J7#Nfl@cqsO-}c^9L0x4`-$KiA$#hhDsgin1Wga@w#kEAm zbS3d(D^6F1?MMEqRlGQo1r_UjF)uc^#_DWd^YAUbSvn zKz;XVISu@KatSuY*s>eerI(-nI7h-?O38;$i7YG#gp)&euPWap0}h@ z_*kqyAy$RikG82EXg)Ypyr19r@*~sZSdZG{L~p40Hj{^SH0ka=!7zu76|C+r0|VW= zxJXWx+*rOE+r7FS@_WNWtkaHkDNEuO0H3QXw-JEPQpG)9fvYF^?_$WR@B|u0 z7Y75cpMF$jG|bDADlN)}sCcyoJ8O?)Qh$(s^GFrx{dqCb#8r`s8sT`0tD$4q#dX}l z1<+R=K><49?UCzNuR2{|w${mTOdhfX^5(8OHYvbt200|$qM=QBnn>@5%Hxu!pVeLzKIUwM) zKtb{SqE(xmly$p7Lo2tiOl;Rgd7R~}9%a3C%lpMU9u2$qKumwWoNj;+7j}b@W44Yd z!~U-HD*mQ6`tH<{1D#Tn;o_m|^+sg*wPIJm+)N`4!~O;MGi~zO`yzb5Z;+V?0*(4e z_;j*uF6Vae^!p;%08|4w>!~cbkyx59DnK4hRqxe4pu13wxPvEutc7qQp_&<)O&td` z6#b#OS+Lr&TL*e6f$!&>Y^50MLZems)=;!%r{ezTJNmwmrH?%HTl^la0O>51L{ZY={;!S zKcOky!0_PX?r^}d5%;DCdYf;TGwS&Pm83T#TbHbDuEA1ftZkle`-0ozj1vw4`m}xU^F$(j zm(&8t9}>qb_8ITzgivIzyxs|bwqBIe=uy2_j3y=At|N0dk!ys|90Sda*6j>8GA9?P z2mQB$BPG-`@2f8}qjWz2(4vHu-Gh@9BpceRk`zlvfv9)Zlmk6ld_<1;Fnm*GBx^IZ zP8b8J=|4QZqD*O-efpkcK6Mn8-^Vne+EYxP-9Z*r&PSH>U+qJ&zAIy8Sqcu(M}a9_ zM1y`B=DK(%SwA=gT}{lNd43(AOSfs6DH#QjX;$He1q)Z$%$w4l?IyQ-O;$S|RvKZz zKpG|GtGxPEHB)Nd!E9&`Cy8Xuzxb(#cW9S;SS#4E?Pn1j_NokE9`H0w?57o-ecn>}w4I-7$8g^9!^x&4<9mF)EjVYwIc;`c1LRh+V7 z7@F~IaeC!#s;gjj%#D=ia6cj2rvO+okJ@*Hgdt&W-l!b zi6~PTs&xx*J9TvN+$J?4G9R?KM~la;Zdt148_yV*Br@9{M0gY@Kanq6nhm?K_dp@a z_4W_L8U7{LbV)3cyJM!|DL+oYj7JR(j?UcM=XvL%4IY)K&3?}BSE($m*%Ldm1h$fP zY|2(e7-c;_>YLGpu9T^UT^V}C^Opfzjo88AB&VdldxOj!Tb_0s@E*l4Nz=je+v)@5 z5}jA-y1y^OEjFetxs728t-Wl%ToFsU!}8_))!I%**mpTBm+J#EDQlcZnuPxa>u7l3N}BmuwY30+ z6#ja#T!iasG)Zk5RvI{9y5wHKl^B+X@Md10_0L{=0> z)*@-|)a<9p7!zpA>(xddkRIR>ve@Oq z?H{En=OI5pF3WNgHfZN*RjY<7N@Ww7(sS(7*L}7#Zw2%F_2DaH{fA*eoE(KM3lg7Fnd1wBu^qw&1#B>XSXQ%m;7NZacE5 z+B^iWh-s{JaVgjN%M+OEL9Ge??B#Cn0qHcZpgaeAv)=m1R%DDED-^Dydz0!O#?{@@ zYkK~GCug-VEI_PU#nuxbKgKPpjBqdJ|Is9_3rZF%=N{hUyM1`$El8;e-~KSBd;YZ8 zcLT}4hw`X&kRWx344~%jjL%$(;cawcXjjc%sQ>x{G|3)mo1YkX+}t-fIMcQl)64Eu z^hzZ)AoD$>f4L*knJ2{}2d_aQZ zv=Cl6>{u{ct?X`9TooXE!ln{DV42Bwib>jrq!L9N4?#ND8(-qtbJHJ1#lDPR)N*R;^ymBQTP64m2^# zwkd^un;#2Ft20~UTDyxxciAwr8eGq^B6VxC?s=48n>o`~=Jcw+{j9k=!-YP}S3>%> z2H7+hXYL0R%Djotm~ln--Qp%>nVh4HX{H$$@VH9W!+GxgL_rm7Xzf59ob>|6gdHw{Tk(C zKVv4j7$^Fse8Zc$wZ~WR89v!YsUFF&o?J1Ge24kuEp*ou+P;*$+8O9Z@wI$!>kYT%v}#>sv0Moh6=VD*)rgCg zTPdeUd_u&<)ba~<23=ID4n%~DM4qkKU16)Jx&*xb-Wo$EqQ}KT{)Hx|^EZgzIBAAq zk$1Ln5CYKgOJw`ma4C6)6tUF7PN{c>RIxfp!5LkGl5ek8B=(iALw*HeVGu|w40cLSz51=$n zodVXAuF$TzCp0W+Y?hiJt`4tw+H63t*1UHidy&sSky%XHF->eH(p;8f!hb-U0BaFWw+{ks z?Fu<@J^5XaBmAalXd5DYaJIW}@ICAZ?7nj0!janH-|OBz=5Rf_uP*C!&G>pt+kc3a z7Tim|Hj&NSFwAd@VaKQ>oL?hP;OoWBNcs_|po zvwZU=7AG>Kz~;CnuWYUp0h`D1&z9y>F&qoecuW9Ah8NHtf`&GrEJ^S%G!jf)o?S5e zGt45H(j;~iu^zotQFSm;#ndKv0~+S9YF{a+TZvjT5bL4eTyq*QNm6*ihZ#?={Uf zb*(dt*Jiz{WVQ&F^-XR*f6#CHBEFiWgGC=9pW?NI?MYxyJ>)h97BW?yBpa>K)#W(p zEvbPX^hU+`c1dT()Nxwuom5vL?=^Yuz`RSNFgDMyyTuE2OHpuCLm?ic(yA_fD5+Sx z8=UW1Md1mU3P=$16g^qzG*nY}Y&6TCwJP<0d*gJjn_t|XgR@3vUMd%|9+~-Zd3^iC zk5v0yXZ?d`fA*a~OEY_s@cMn^%rz{_(1mOK%f5o{y=oHsdBZyHTFx5Et%T76k%UHh z6TF?j<=PeR`AOabJ%iPz4YS`ygtX0?pL*}vKt6|^PuVoqns%#I(u^vgQK4*_WQ`}V z(W`iq{_2fW5w^NVXc-^iNnoUp_pL!=_1`r&8BeH_i% z8s|>6!g{t?y&B9BvQ8M6e9^cfAJ6y&$rsmdoq*7aw! zM9@<4%XVEuhG%PP)Ye?dI+;)BM%$K&s_4~TPv}@<;O}R!5I)C}gIoX5?-~IS@EszM zKg~GxSP&JHbm}WcwOl#xWGdsh_N^|MpwRw*r{h)d_4k)UqL~{W`~?SArv*n1|49KO zP`=mYJTdE&XfIRPM=H9U^t!#o*`j67;LoXFpbxoyexkP~o@qhD9YE<{sJEVSlJ;_+9Jz%T-nm%DHHp37zpnN{`Ii+3p0i8mgB5wd$t920dR&jQu+ zc1qZ)W6ZU+*PsON0noaZyV{1A-%y3#qQLp!bt%nsTEnoNXa>4B>y2LZ7cOxH&k|pE z&7g`U-JQ{`iqePTr@4`y04>2wqvi~}HK|1#S`eeZR?D`_e_sr|V49^n-VA-l)z z8E$*Kf5kL`FX_^IEh3Af((!KHh?oM_%J=7Q?cC}$H9EU$uP=d=@rkMGwgJ=vTIho~ zcbe*8t@R&-s2`SAOEjI?oHQ4VV2V?i5DbW|mdU5euJ5G?F zHjxBXYx~kYUqfMfq3G~h9|T+LkLGOb1R|AcZR6a0dL;*j%YyeOfBZ|lf;qdczjcKI zWwZX*+Wt*PCj1UI_v~Eu23|UNf9b7X5mVUyZ7LsNENzqrW6jYlZ;wahzM_~}$zd)yx-ECs37~G>>d<%e7H%`%85^3* zJkw$!KZ=HiG_;R#Zp~E~%(Qi$%ML7*ng1hp=##+n1$`g!$8@@$#N!We&CsA`!9IlT$*hRw9P@kt!sbUGq~C{h%c`HJ+}t4ejIm2Qg0QbADp z>qPGAxS9KE**Y0-=LT7BjjHj#xPJd8;#&T}ZiN(9`R?NM4?_>CxUfAR`7*sC+TCTL zNHVPg{L~fD4#a4r&_tzF_8lL%GSiQ1;-{8i#F#QbQO7UVrg71BP{Q9pC{?%axFg)P zR{!(y6l)^lc*kerlO2RWu3iG%l^RP!@9)y#AWr;B=1sTyb41GXvFKv7SsRD&%ZOoT z*y>8|fd-uFsJwM zVk$e%Yje>*|K8((d&WN#D_4RLqkp+Uex3%%cd&0h+*!w3)V%U3hkx7u;?)AoFhkb+ z-;ChCKmVjxxQY($J%2eJc}`mRHwM4r_alR$i;Zlsc?RsKFIN)H2brzus@~%tNi?Cv zVluX%A{WgND|h zuH1O0(OW;vaf3K+9_Lg$k#*FW`}-z1%vf7{y9Kqbl{dUX`zin+f$PEXQcKCv++j7c z=@5Bb(6hvJalsb>fd#efvkxX)NtKaCYR?6SkH~r~nG;ew>z(fIqW?R9 zqWKqku7Ai6KbjNHef`IIEA+r_Dz6(@&j7wpS|2v^7kPqAP&fy!Ou@%n$0N1I`9pKx zKF(#vp~eEfzJH^q82XJEg71m$lYrU4e>#WO(|}40XeFA_Su=>lS~oxIFA2HE<4~`) zSZh&il(~ zzkGd;_r^ThQsM6xoFK2v9-;^wSp3a*8vL?r0_$i6<`tkRq3*?B;|We9Zo zpU`I7js3A4G_igF%YW#nbG1c7_#J#Mlh=|njw1q%Xq}ut6&2ls{U3hUhg4zF5!jL+ zE|I8Qh5+(5tnO^Uw`rS=O~(tn|Nei~ppy|ci7erkNIOby5F)}<@%LxD8QHkT31mMdqTJhQpPgHO!WU5B+FJa@FpG! zdUQGrL*8?4H!V`#Ztmp$8V3uYQCzXp@1Q32Z7ED&`|$fO6yj~^OjfQl^t4+#jU_M*rSL5 zHLgv4M}z8tiOpiypqUZ}&yH($cf0X-#Q@eYpD~?abwh*F)uj~|!9Th>!g+tB2TH$h zTb_^gVp6_GlB_ed{+)}zEqpmme7OOtYpH^eL$BrHT-wGs-OH@f*}!&gap(1_Z2$iW z5akH^pLE&cDmCx#kpV^V9dr*>WGBiLf$0J;AUIJ0R``ptXw$(2L7|EsYw+6?D6!~{ zJ=AnzQ>i;E=pfs!{SNzL6&Ak#B@k?0+ll;z>)-yctg06ihJl0j>FFEkjSGV{pMjMT z=m8=BM13i;XP_$AMy0h_aF64`=(s1C+th_!x3$5J>(R3mOrt#+1A6(9;V2m8%3gyF zR`nr~uDHt&k*o|wepaKy$jk}NJhaOMc34H4-Fsv%T>}npIopQ!wQ1R(9dQES{*2J8 zupUqT!}f*a_Xs@{;6Fy_-w}k$FSJ~i-CORq+E8%9&~eJeR{x%Z zMk@Xx+yJOfVVV94Mpqw-F`>o8L>W(-cdq7a0)@$}vVv+R&Y>`ym3k`C@VAw|b=SKb zaNl$O1F-mVfAiG}7=H2sfwkbHSl@~96dSFB4ans;TWb1_dqQUp#ab>FUC7`RU z^XPL&RqlEq13vS>P(_28^kd+!K;x#i;qiS8C~vKIcX?AHe)AKw&0DiAy8iT7sZN!i z+dyd=>TZ}ST)R3tcsW<%6Z*#r9aKr49S#2H7U5m}^k-fiE#rJg@&8?!i39$r%*>8u z!H1T?Q~uHj+u;o%Nh}41vPUG*U0((H6IQpd58Q{<#0pQjz<&t{`!}-xt+sD~S+h_m zGQ-f`N|h^X5#1__AL8N7Y8qUGuSGiSSR==0)lL8F}5fEj=Oj zrMc?AP*G`RLg$}^j%<$MyYt@_GC%|0`vs#N%D6ux}KOj96Bt zcK3q8DpST#rlW6s@^nC8>xeW;l{o>7yXR>HCN&_@x9l&Pv%Bcat3T8ylp=0%D~^IS zG9G={kK`V@N{3uO=c28Xbz||iqTImBEpC}RzaO@EP^0@WQB`q#DDQIA>Bz`=X(E_- zofiKa|6*<+^!;CG|9ULGFn_ipaH>6Xzi$Vi|v15 z4evaa{%IoMNC+Sa{VSpTJwN+5ipYDkuq<;3C}i_o)a_^}u?iz#yyO?-l5In-n%E*0 zI*}-h=9?*^MLngfxfGq@yrP}nm4r8vE2uFT;J2BK!&OF4P^3R`J4LM(e{i20;$x$)F~)JSjkbJ8PLh&VeWkt(Vf z#hamDv61wO$T;m0&BW<~tK`LdRHQI^<55+y=Jq=LaFDd8MO@sdp4m-v!xT|&?4M); z2<%V7*^IhjA}RCDRa*R{H)4>OIdz5IZIi2izV}?~vLiuSd6PntT-_znz=qvQb&|8v z9PON~M2b~Fr+zPhmh#zUsJS>+HwXvmVnu~TjL8UcCnExv4LdJTN(xyC>&u#iUuSv> z4K=%rMzlWgna1lKEqSQHfS-DqFb0f@9d{zuoJYg<^V2LQ`=~=RcvdX(3{;c2zWJt; z;GFfo(*vjSQbul)@iv$_TpxmyX%LLCqH=i9ivc#}{cgAhFo0J|wi!o#Xmh?Hs$)Q3 zCiW8YQMywsHbA6s<6OUf2S)Jf30~J%b{$;802g@DSLByNp|_=h&w_6;YPEMC=wD1Y zOH(!0qN0=&Imf}4$VyXt<+W+~Z*ewD_=P4&({~=7h-N_|=wO7JQ{qQRI_SrHIUuL^ z8V|2)q=O#Qgi~dK=N-Y*_i3|z|0u&BuT|;SyV;Xkg}Pk|p21_U7`2b8U)PYY+>ey0 zxh!R)!SHKaf;h{rp0Rs8^=P=%2TJxBxp8$<=V&a%!Z;eUkLm?;G zrKs>2*41H3lFim{2y5e|@=mgv&4r`t>!GbnZvcxyAFkbhG@!_w+3H^ASTTGhf7Ds& zY#e4q^>L7jwL;eYxLV{q_$n#24msD4DCClzBKv)vpA)w+#jKtiHX0)d#8+HM31Rz@61Wyj z#V)UQL>zmN=lShQZ^s{nc#W|;{Ga5G6{{=rSRr_(uZdi;F2H8`-PCPeldR{h722V- zV^oRJu?;)yavPKZFoHddLJWL`V(mlyii+O% z;W1NfALx(20iD@{Fg4t3NtTFn@O**6u&mX&OCnL!kjD+=4i}q05my(`%dGrDZ%b8D z<(gwiIyrAjzMvh1|GjP)4#~d$LBOrJ3xe3jBNHck1cd-YqQ!?!MVAhDLw62(rSUNS7?vvpW6)!_HT z-9~9EYPI6q;%qNjZfm3?`?~;qSQ3DfS}ukI^z2b=9a}3yF%Wo+$nxHfT!FyL8L03| z-*)mf8tcTx#-^bl@t&c5uyXJ_+1?r2zSFse3A8ERO-Zx|HBs2Hd2P6C)DL`NSGgqS zRmnVQ*DU*O4}~#AP4|A0`Z&ubxM!l@UekhFD81+(dxA+R{l3z}$!Ry|V10tmQQ0;o z;>+Xba-n2iG#YgYlw>eqW1WtSPvSsOB+Hw35Ym3<>qjd1z4Kci!a4R0w4`|bH*1cZ|1`%U?0QNZ&fEsW9Iag8lE}dSW|Htye z&$C{qI8(W#y#l)g{>y`zV2>44dVzvkG)lDqrfm)*3FBzl!Mc@`9nC)c8WQmrQsSavDRw3sc9a?c*d?4l*%lm9MvIpC} zdf8p1m&fbqEjVW}Oljd4R04*8bGA25=N{6Bhg9Xvt~*QkSY_i@ZDtRSJVamncCqJj z@py6}GiKQ@7!EKm7|x#%Cq-5&9h?idJ^{e{nUl`w0?uJ;JR6RK=eMC=FPo8XC1x9H z4q3A~KP~*X#tx@8PYI1i}v_h5AVqeBptFlq&yC7Rc&>ur* zZoFW4`qi*7=R7s1ZeK6YfA_&c|7n1;%}g=1nX3DS@?nUTNlWugGx*-&Tj9G&0UOo1 zJoR}sdbOmj2bnT@Vjn$HZz(|tOqkRRNxs$s2E`;Qgo7^=PKin$q0D2IzMkgnWEAJ1 z7=CzTUxKTk=?YOByj-f&XVaVx!ZVL=u~yoTxj~c!$*6Q<= zz!HIo$sUhd`cbwW9%Zc8h;os@VMjq`273A>o;r4*RJ-%OyM;zA3MMoC2+tL|p~piq z$C(opKJL3XbEf$7L(DH5u)&LQ_iuXTB#M!?S@eP2t5OkKI7ckofS*eeEpQ-)yq5Pn z3?Hd2pRD73*+YZk_}_WtBse}9mJd?lj5KMA&QeaD#)KBCFm3|FmY(rV8Xf4~PWq$0 zFI6D(oD#|G+CZYFTx!FuuQ(>rM5}&&cUP{8Kv52CwJIOk)llUxN=ze~<=<%Bal<(= zDS++7l~Gjr}E*qJ2zCiKX%7Uh~^zGOr)xFnne zmWCWjo7TPS23?hh*Fp;pGTJ$ZY&I3@12Tt{GWWLyz{em7N$E`6F6mb$Z*2PX#e{4Lo|B(@#7oCne92rMGU9o)xc#k;JbrS5Y6nU77pq(4-mZITS7TwHXYm&> z(7*Q)ac$mCE@*l3(RO?aAQm(&JM~mNf5rYVU9;NmgcnNI;muhbp$56dv<*I5YVy!6 zbkEJyd!q+Kje~m`RDe>ZTsFwMD!zqJUu zr%)fgrEp8W-OZRJ%~RVvDO~c`)L7jq5aW$nB(%z3bMH&aHyL*qMVrk@m$(a0cm8+wW1anDa3 zwG($iVn7V)%52Aha3)&K)CYe$x^ddP>9H%PBiSQj;sA9E;v7J~OL=?e`jx_~B$w!< zZb;O8d&v>^e9K_cK*R^Q^U=C7-Fl{zM&xCBe^;{XmEH)820u7Zf|_^brgHOLUX> zh4w^L&@SGLTrYokwwKi$^2%V$1xLQ+ek~OY39eI=>YnkpsaKhBQIpNb1cN&EW3K@} zhKhzkhVz7#p2`KV7C)&E^WJ#+wQTdeb|W~IQL2CAcJ$g?%v$D*o@rW8yz7vsZ^^b; z($}K@TPB+cBqnI^RslG{s4>@EyE!1Y<$`;KjgN~k8aDW7Xwmo9!%>dwtxC}AgTZ8M zJKnkPOyyFF$gNEl)NT(H*B9Au6y%3^#cM6`V)+yvr|sN&jJL;xOCbqvPt)KQM$b7{vI;$H1Y9@Y|h z^2uqY8kYkxC%8+%1;LU7YNJn4Ju8C`9A6zazke6b1O0VIEn%-Vs_90sq3Q#D#ZSj- zro{>olAdS~okq|2jHd5aJEgvYvY^4~QZ&Naqv$D1iTBvMTjnJ(l>nv`t^2PNl$?$a zG>`&h#xjg!dv!vUG)r?fV_d*~a;*vykxF`_P$#QZY@=nP6<}@K70)|buSXcT)n0+6 zUs+oPrDQTMPkoJ@a0_qwWS#OjXOM7p5@Tv4{`8u6b0%xhb=Es?blMRV;B#BS$B=1s z%G4!$Z9MOmCoR=Zv=hYD)k<~mUA2Dk;9i!^Y+GTpevuYrJ?9nht9xzo%L!#Thb^=_ z_opn5<$9{0n66t{5^aI{%Ava>Y&hYmDx+I?;)iu!If4wEwkQ2{MI0YTy|#d+7JKOw4m(d$>KKJD#;L> z3lYd;SOkta9%rAS=xmQ7Tz)9Cdf)5=NRUAu!a+QlueyC{Ppv9g^?&*ro*Df^<9zWG z^FiY8YLa<6zj2wcTgx7hdHuzMw=ESZE(*0*n9=_ocu zXmx??0>Qo_?rQO_V*e`#>>;*-y_Suc=cMBmv#MZ=H3Kz>cUc3P1!(b_$_WdSZ0j^5 z2k5_8;?EjWKUc{20Vswy^JZ3n1Qs8xB{B@GgAWQ!?4M~Tjo06t+x~vO{5|y=>c974 z@82nkpd3;Q&Jo0v-{8R~>M(RtyN_7STO4nN03!;ZV%>CH+j%FJ)DZI&>CXF7)n-b% z*hk>#_46Sh`R=h%I%=q*wQHmONIi4(OgXWrmOlYpLN9OZPCKTg@n3C1X!t{@K#W=Z z`nT^|)mp3cU)We~<8zvv{H1$r;H_$#$+uxM8orJfq9ie z)W_*^8iH5o(kReY%a^p-2DPs?Jmt^o0bV)+P4(A0OE)*XQXhik1z!VMq zBFc31Co3x>DusX~#W(cEDb^CPOWf{;^Q)6i%SrkJ!GAG7{u`9eB#1iG5H$2dMWVN_ z1AxcygL3IFdg;`-Rb1l10(#S*K26Gq!1avdDhBlh1fVe}#elKRNSip*z|hN51_V zXK>PQo8J#DtGcTvsecWR^xp66>!FO|)LZuQQ*wA(`*6s{7i4`1!eEnuT6ww{yH@tP z0`+Z&&YXXH{z86x{(7tQ`QC8eB4?%VrsX_`|K<7n$HRQT)TcCS2&z`#vED3JVZ@U+${`4JuI*B-q(qT`Q*ftptys*EVfZU1YFR?u4%y_-SiQ24b) zcMO=qRY^^LTzWBM4e51c<@z6Ec%zMFj+-reW|d$hg6-m%O@p%WD&%teUlRz`_mjCJ z&ty-FEoN6Vbhl}kLxR3W_>Qx!!It{bmJeh!1iJOvpVC_vygXQ}<2?=T9MS9V39U)F zS1PAT&)#n-J?N@jrP*(kxOE}owM<{RZ)%BS;ihBw122gl{mJ)dNs&eU{fA0`m-6L1 z_?Pdl^fB4N(Ns!9L7(IWt#t)F1=$Yx?-^N~bOG)v5S0uy=l{ux5dR<6AuM0atIogq zb>@o}F6lvjCvRU-5%*HP@;qb2#2m8Phl)!9sb$+#m;h4oB<8pu)PFRe8S%r)2XLP* zOPYs%&Y)BUS@CDhb3@17eE6S~LSsa{(NTT$m<6)>yaUF(^fp;H)SAbyv9q%x_HJ8Y zr?Ff>@=SuAQPcw>Ci02I4@Av6 z{l0WWnML^o;~)9jTg>~z-H52?Y;6S7AV*z$BeQ96$D0z3t22+)R&Oz7VX$c|X-=we5+5LaA8NxfZdc&Y9pZQ>(jt>kNnwsH!44o=^|6t@@67O zrz^nor)xrrP113dlPuSXcU}y0pv&VrxGmgAZDTn^V2|q}MsU+z;yC_VNj>K4BCQ(K z_5yFib{EHXD&AO4Jz8(}{AGtn{ekPWe%HYvIh;pJ;hPIpcixZpjX5#vl^Y*}A1muj zael}_8oZy=lDAea`F5)}oaLxrc3A)1LX{Mdtu%t(5!LTC9cg1le-5(KiN!Z;=q(OFzbB#QX2S(B#0aq9bVv>$mw%4$HPiHuAILmt0 zLgdh_8H#*G2C!=%=W>=Xr>drx^JHpYaH#l#+`ZwFZ$Uy__1II1MM89E##K`EQ|4pA z!o=o)%fM2RU{%_g5c--n7dEQ;-S_tHrMSj1mJha{6g$}>qLe%Wr`Q0DvqO$ZmE4lf9U`S)(_U&*lw7VekadZ*{YjIjcp1OP20)i9NrG68WB@@pOz$J#k& z-L>PXl~gp~eVXWhy~MHd&n2P)P_5Q`dA%6%w$1$!cJ7gzr7!Y;Bb~PbMj9q*#YGo* zJBQkIQ{?lhYQ<}U%^s|%zpi%y%&}a53nQ+kubWtyW8pG!=>^1@+r^&NY(msQ;vYCo~LS=!RRdO{mAmL$!#@CsZw+3L1z z7qhO1;9hEIA}}t7a{Ir2+j>)z182?OYS<<_J$=RUw6+Z?b<>nNC`Nc!f&d>4Bq3Q& z32)$68*D{Es$QV@0Awt!HCnEUwdg)=k>rd>+)@|J+#r2x-zk0Nq_-hfA1a}xYr1GQ zLoA6d%T{7tM~V=%RwNLx;;m-OS!~oq=H2xWi_4|wmnIDyv;Z|WiVefCVi^`NtF>f{ zVBy~|bS$zWlRyckVURW0*LX|crnqp*$EGYk)bo$Gn%QmvYVZtZ~RY=!nQ6*v{@zx<8=(Z;g2Yp@J>%=y}8b6DUq#M_Kp!a1e zV@~_ZIe}u8l1ve8DGLN`X$IeUo+UH>x?$}hqmQ#g4Qler&4D|xj2wGP%krN&q7^|4 zXKOw~N>14?xPT74;%#+pv^U^^3UWS&61(ut#yPVpvE0nS@i-+KgjugDH!Q(-U7944_Kel%DhY1S$ax^h(cHA$kh@ z&&^k?43(+5Uiw5|Tf)x#f4~s-NOOyHyrHs-@c7;ZVD+j~5#9Laywq*`k>P{#m?eLv zRM!rHR@kojCGL#bkwh~1#knC~Rv*>4Z-{B|%{52FPXV9FQ^yEXQyLan?3om*wj*R> znuAtXMdxp{XC(}8Q_NQwURPc0QiV*=mFs`MMD$hIpz$db(Kh=g)3T&@(k3?f`1YI+ z!c*53{N)g7C*i*4{WXTyPaZiB4~%U{!aa5TJvuo_&>i``amRN-ylufZk)S6uN0JjC zrSCc~v1i71@M6HLmVWcuqozkG{`@NO=wQ&+uJ7R`d{P8>-(+5+a6bBlpENJ|UIZ08j1g%PtlFqs{&CT{knPhoQzKK-{3_)zmsNIMtO2Jr{Ek#P9A3;-fkdsXSSs+@ z7*~b-Lpv|NZN?)5lu((lQ`XOMA02KSe#L1WY}e7*^!(YMqgRQ-Rh-P8BB(&jNfhGO= zAT$RkITNG|G4`xZe}>FpISg&EFi>5{xk5E=C6@N@AKg`)q9KyHs7Oi#t>X zYY~EIp9IdP0Rw^U+WCqbN7EQd6=4B?Au^}Th`45;;*AK)L$8fXpS zT|?+RMX<;ovuyfMJ^VEm;R^(ktRyBE{VKSNCb>NFZMyFV59X5N)wD2M+(fyi6WJ%4 zK6U)e8Kew^P@HE5yh6E?u}-uElmdirl#DUG&kA^%T_Rfz@v(=>7qt__3NU92Vw;Tb z=lN;Uu1X9EkJ74gl^NB>JB&^#DAo6b>OWiUj!Kc*EZTb7m*{2Rq;*>3FkL~WZ$V6U*6+uO z!)ne@N*GS1w72H;AB2xU_;xMGr-~I{XmpY7Ryh>!KQH?Dkj~y=>}fb;kwN8Fa_y!% z+iz>I6;SJOJ7OI&hY3*%EZeH%=}z;T-uoRRyayyDnx22KL_Isl9%83@Xe_-H-7_xa z@Uhh0y6$7%tuj9WO4PHj0(K|4moY`RV>8Go;g?D=gi0j{?Ay=G$j2|6;4(CHzdhTF4!RXeb0xRub1*k?FZA2)6|StC&p}^G@Y%v3QwUsU3ogj zZJU}smmRbu2JohHZ&;@co^ZO@k3mygx?jB#;cu z6ixB-7ehNkqXn|03M?vmx1vTHHwQDj4<$#C&{NwB=5ORj%_1E2#m6e4Lj`7-5%>0r zbX6}Wb4G-sZNU#UMBs_jy8-75QHqZ_J~hN@Q`sZ3N4RCo^I7^EgaVVDJeonBJU;2( zj_t3!m0XDpH|CMkM{$fA6Q2_n|JDrDVb|}ZWX6)rNj2#~*Sx?nSz0T$- zJ>6_ac$5pKEackqNK1D}GcxGgR@p1o1~1SXjF!QL4Z+jxSLkp0`fd9ML@xUI(#I0y z58wWzSV!=jx6g|A2~s+i48G0{xCW4KPzQbB7(j3;@b<8M(3acb60@;w-dZavC-O)v zb#%KB<(@5c&(_^Ro2s47%~^N(Jc@rAW~A9&$18igP()s23%bcR{o&oypGL;oj`jWQ zJ=NPwjSRY3y&E@0Y0D7eE_C1Hb3gvj=+P(xt@Ty`?lpH=0!8sGw*4($v`-SoddTY; z$gO*tc-C365@6rFO#M*kz+VM(<;RgRw zT>ux}0WprZ8nAmdOQ-xDjK)Q>C>q-Sxiil41&nmG_F46n?LME;mo(k2Ci1blM(LCH z&TmB;G3UGb@??SEJ~An&HAGJpzw^a-T){bjUt*H`_Kdt_O9t;GN96>E$eYV}27b3Z zD>0I2oF&7XEnroXSj3*sOL|>C z+={)3JF(kdg1h#Id%r}+u)+r;C|CR-wVuAE|E%!QW;&llsA0G!in&s*pg()AS#7#@ zPE`+dNk@5-Ig!P-*$GBmJru)9e^6Gtr5tIB@&|b5kkWEUu}Jz(bAJ&fOv)Oh+dme8 ze*m}lDAr15a57BM)$1ON7YrifMGk_~U|nOX8d zb#LA4aw#0X>5{(DKP3`)`^Jg4D8l6OYGzAC&~uFm-q)D0 zNH1dysGYlSxQoqvm`XJSnKtjbTOdxDxP#bPVAEKioQS>S*`S{3b6WE!4NTOb6eJUv z{FZ`mD=OQ%j=xh+J>V?Wde+A6H+4r{=kK=9Hj=KRC2TUVySn-AYDJOkbQr|7U+%k0 zck~;D)!}wWF0bAX}9CTaj39XrZH)JbZ zK7qxR3D4S*s++Yox3NYo+(yjsPS6GfdDgp=s~&8NU};Y9UUQCaMcld(TK|kV>_PGQ zS&j6Q#+a|40?=Uj$J6s5?|a3iV)Ft_OhfRNL&l=Rd*ZH{&xNCn_$&+F8fb! z&q_c2U%w&u{&r1=d3D!p=Kb%e@j*GHDAAc8BtqaYeywr>g%Z-gwECTt-xcTKU*)(I zlGH2cmYX-6$%=72>M z15BRjQT`!>hfrH7H#Yx(2yA9|D{T+C!M}h8;L&8k?;tYj#TW(?AZZ_#BSNrMmkce{ zhSpt&6;@U;8Y;M#Rje0Pj>8t{|DA(oQN3RI<&N4^5TaOXBsp4G#&Am{(j!tg)WxIQZMN1^tj zu9tBApYn2E^^fQwxy)Yv#74yWnC~^kHPVW!L(Jy*uDL5(C)q>3|68J4vnLCa@H+yt zyS0wbzs2JJ2TJkeP0G3_Ic@S9!uRC=0x~IMEvGBD>z>rj@Z8ABY`&0lN(=PXAF7ts z;r}(!GOVX;4jn5u+lcII4KI20x`CI{K-@oAT$hvVQ?DsikjbHZjrx*lVKTdxj$nnO z8mdyO?^Z^{x`yP%RN#Lm2u0_Agt^G2lf5|qP65#O1wCje@Ol`-;A4M*8TQ9=GmKwv zSOQUWdRU)m3}7oQOz%DtfD4ei!tBgm#4RoiG%){{+%Ny%jYRU0GskCgpTuMJt#1fY zt5zyOmw0r9HFXk6>wN534HL&u?I0Zv+O{jGq{*iC5(l9YZk761n<*DlE|+UdH(PAE z%>>XnTsu^6r3LZes50^S#QF?ZkdKAk@EJQi(Ay+T(vuxL$J=C?JbTUM6F0+07y7S~ zfQR7@m_K>$-W-~ze-WoBzv%t)0#-<_wD9SYS^veW>D4wCLz9U=OR~&?@qfYG(V=sn z3i1bNKq=ON+4=vvkXpA!wfu#*U|dLuDgU)5At>*0c+eTf9leC9(j+%05Yf)GgpXNV z_uOYW8rL$Ur+!VeHm`xVbgMtMtn&CHu9Lq81a|PU`}EGPGpSbA^kF0owp79EXDzc> zdE-XE(>F6ca5Qy^RBCRj(4lF%4~MY1X$duY;|yM^U_bB7joaRAM>Ou;{aKB5$;w&^ zorFcI4NA8UgH(8tjs^Mu^VRsL(Zcwa>W|D0#{{wGpPKrA1IAZJ=zAhU7{`35b93M4 zrd_Q%wC-Dq$M{hBcmLX+oG8VSbrXJ)cENvu)Pz^X75>L_asz zLNyXDddd zD~JlucJaShLs4_5z9l6_385L; z4v*kZnKPQ-z+}GXZ#~%_4<7!1=Yy%;`U{?$I)jrwv>U)T1y=NRcE3chf&xk|UkAz_ z#^lvESRchna+@{=86JYd@CscTc-m?qNt+#D?iJ1UO4AdU=haD#C9dPrTdoaC-_1BI z@87Z=^(Cspg1)v{y%7&oOS=WC%&kv<1#${+b58bXp0oFPyg+6 zyJXcT6im#m7vcJwlZ3&c;%bI!7adQDoR39gmQqgeBgS0`SLsiY|9#fRziV=~E~tn2 z4Bay^wd`bacxO5g>@KI?sA} z-PAV1!dJH5wc##X^FLv&{G(~g;}0%pTDrkn_%FCzVp@>jNg^y2@h2)Yfn{i@VQR5h zgpw&Hmy*XwJZ2%DS#P~@^5$>=3qP!UpB+exhduH@h~AmKvfS1{>q=_HR&7?w<@2-> z+{|Q_hyugnW=YO@d(|%gF&*#Jec0rAXYRlM@#S6;I=}%6GmBgUj1Cq__<7gzV|R^d z;6Qhl?}ZXe3=46TK}?$eS9%HW%I$KJiEVQ|@jCnCo6mBMV3(#kc~ZYKSF*`sd5nqA zvow|Yoy1DfQG19jk|khI_7|fc!Y~wtckt~bUoYF2C<|Jdql?&ldM%YsnnbFnmiFU{ z-mDu_vP6{SaETP~RUAp8L>kcKPlWn5({Y3>a{3CWxJ-X&_C<~HjUNSSvagI%`q=i_ z*CBYUo6Yi%2N4bM4JHomsTpJ3a6Q7}7;2zR8Qn1(NxwDzsBc|sV!}~c$9@FbS#ydT zx1x@%y|$7~!yB_wBuw_f5>!kzjvI_*5<4Mz5Jm~>b{+)hU zT0Meu*3IAw&55?#eL4IDPQO3H<`S$@L|HyaP0je)?ruh0HQSA8HDtQhWgw5S9Wyzh zHl~>kvaJzbPdXE}F;?W^t)8he>{!>zZ{I#B4i!hIUaDnC8@{W{u)TboXI$(*g?^H# z*V@MAo~pSjv4INyV>nf!`exy3v!3mpyGzvli$=O_XocxteP{6g2T$eBdf$Ks6W*cj zM`7yF=C_;LmxRn>;p19Jw+{s@>%yNO^9rh_ah ztUdN8hp*@iZ`B1FX_eELp#zbW3#5+q4lrFkaCXB;Q)G{a{l)#i6uivBv9CGRYd*~ z6|RQ*4zU_0;V{?CkAYNLMzz8SFP88F5Bt)}dZphX<>y*BkNt|Kr*PtXtUFwfdzyER*Q{00qbnryIUgLU#4%bzia!$3TndyIPx2U_+Juu*oCRFprba6 z``-~CrBq9i_UBESzz3y{X<$|he-0idZ%!UeIT85Y`B{FS2u5s;$I^{DJeStHL zMTH+fo}9z**!7a0VDkHBF>l`*o~_CqGSUxaL!Dkwyk3wV{p%-fJ}Q59rhQM)6@?OLGMZ8+wTuJ|XP_LoIZURIQQiB|VH@xe2#QPTa?^ zN?LiktRHC2VYH8Mf{1oPI}vE);2t{E);s56D4o)}9srKHe#Gw}%=KN}Lb$t+~@3$(qf+IJA zgYgn6cf(oy7TI!zomDU0*Y)y_MHFmhJd)nBUKZZt?Sad)Xb#BhI(lDS+MaquNa%{c zNx`r8*(l&T*dxb1AaLdfcMS~ivWa)76?6H^)8bWCexzX&JF4SZ!}TgfPPwbKZYX7} zXjg8i>-*r)K~09FAVIENm#&jSqI!x`H+>3KXZg4a!It7?3$IsnJ8tUBVtl$eS!3$z z^t@c$cySch!P*P6zJ6_a-rJ#tu@7+ktvU*WpWKMkq9@mo4ZLf z-j(agX^*8@G^{xDSch%4ns886HN~~xnrvNWRyQb=iLYUA>|9k%w*RDiwo!%mqJMh1 z-hIuCGlNM?)`7zktY6U#IQx?5KA|#C8X`9~+K#S=NZqhAL4fY9Q>Vk_o5zw;k?Rm& zmFq!a+}Wx!za_)?cE3DV5nAVhtpaz`Ri5i3`I(cK_nxbrR-BgMc3G!z${j^-6M%S1 zbCL{UxYFHoe3>;279&$trQagBsGAWbb7najS(YY0Px~N3kZ7AEQ{%Nj%uhjuGY+qJbdN&qxPs!i$)-V z`8m>uJuclcP4A(GXqCma79>?L5Y(a2uR3AGZ{r*;Yi#pTL zaLcd+&wJ}L4_Qkd0_-QA3GG8X@wuF)&!;g1JXhuUSq770Ru-T&{gw8YBM==m*DbgN z$v(ak)ML)PA40M12L=VrDQX_hwBG0Qh?yOTE$_TVs%VJfBKKZG3opnYBWl?qmiv6d zK3jtzL&G{VS-mEV@0(b3@&M{TtVFwJ-Y06^=qA{!&;SNUA-^6V|3^aR=6<81yWLW? zqD9~61od_mxcs8}OuNP;UfD^#U=-sd{=?2Ya=h14lQCHeDyuTrgzoUV5!p62QUxo! zx9_cW{kG@k?D*FRn~%2&REDqS9GRLbb4(LwMRFkYlJcD({&E~F%fW(cY%Eca?GhI5 z-JWv_gC3r>+ztbTgHITA|fTIs9bqJY~$GL z;a)S;IE0yzLEUL3Yf^sB#`_FxoZNEVSwZ7Qo4QC!iaC$krP9<$Z&&Rj;u^jL*97q? z5*%5Hlaa)(+E?$$seYZ*QNG(OiTOE&%6-w6E#ERsw@Za-&+t&r2Fi_X7wOo||K?g+ z*d>`}Tf@)34i#%J?`;!_2Lm|T#}qw;j}J93@EU&H!#(^&0e$~DWrqTMTfoK~l%$vK z1S;CTXP+$5(zi#BI!&e7PrlK6`TS{n-dBS1w%^n1Fli%1+u_w}lxIt>eg8fUivs0F zi%$2QOm)m{9%6^-t+#)xmOVYnEyjhH{o7LvyUH`jLW$Xs_xjB`xZRFvu^OM;pC6mt zz+mAM67Gb%rupfDostyCDUca~=D<2JXhV^}$5x!|IeybsxZZd*!3mO1i2UAROgbx+ zOpD@lYb!bX5XGAE^Z65%|KzIP@RI`NV%^cpO}9_$kSU2P9kVssA%#_&H7O4JHRbvG zTO8>==MvOKuDlPOT{I*~dPs$nUs7cOM%skeMA2U7$FCOs>m89YU%o7J>(}#I6{}dt zQ;tnYU9WSa5-YbVh-}iV-H|=OBht0qKT?>bj6ZajZdzj)(YCF8zcbOm(dQDU>KEdE zP*J`eutuVkubXlr|Aze=XL zzX46f?9%7C7 zoP*W~!~aI%c$FtMLZawymebjSHC1jW{P3LJhiLziyzHE_1qs%?NmhD`?#Fy4NVHN+ zl)4oPtvZm7pFl>t#WuWdF*$32eEk%e36Q;ud*6Khr~~oDT?!U?+7vw3XsKJmV2!8eF;2+ic-^;+~qYPjNgK`n83^D~_R&1OEB$XgwB6@Ui|p zw#e)If+QF;O1V^GL{~BzfMNg*vqJpJbbyNu-(H9VJ20@m4SV+bw%SWB)1ei?{X=AP zGB##d1><*iwp5-u$HF4d54C1BhgeZl<&Os7i;H}}19^tv-8iNS!!~^q4etG-gjvZB z)p~>IPdVGow#~61v6+U0B(X)uRI#B;izpoji*@~+lTokn6|Oi3m+Ud3G1^%;>=BBz zeJ2_cE>6IT5@8yxQ|G;*l5gyJVdg|TPi1ara z6LACV9UeraMYkzEu}_!|j>g!Jd60C9rs-# zM=s0dZj>f_0iz-nca!~E9vSLx8@6*fU11yJlLVm~Y01&Gg1u}m(; zvi2`$Xo;yz25@Wx4&S-*2bTwW3>WG(bqf{{kRE?+rzcgxY4`3$xHd@wM3NRo^vShnxP0fhw5Y~5N(m~^+|d|0U}=gE3#ZAXLX)Oa-R z&Y4b?;?#e?zZ}1n?LSw&w2&`%Am+O4??w+G)vq1?^dEdX9s%9Njh9}MU;}WYzzO;08!KrFztm*vAo@=Mcy87&AE}V z9%&I@?%Z8YP1>DBjsYNoK8%-$GYMeOZI3mvE=J}_uXKgH);m;Q{jq5{r& zJ;kG;r(3k*MmW)-v^yim4^F;(tNa!4{>Y>75A6Wxs7qAAVB@ba|sWW!8UCyx+5-{TgFj(iSbPcwVz&;d1>! z4{Q`3W~$BwuaQ_hctS4j6v$Rb)0}A%S}LH2EMsCEI9jiEdT!gcKpR49du4InV5h|5 zjty37%?!fCQgJfgKvh;a_E2-;pm-MGlfEjJ8AHGDnFV4@7oVBndD-3~J&QazI%RTJ z;Z$+!FH>&FC`at#hnT3F7v_VWfyo?H0?L%YEpglX_9-S{gY%N$R6=>*)dh5yRyXi6 zK9ORAsp%`_Zpzv^KV3#fa#WOvw#bSUize{Z_!`c6dr%X*y_|f$FO5;K z0pRXcoQZRuV2)LjkLoFCDtE(fY6CfSD+yOX zFVuC`J=qpG?^s{)p+18|u#T#9J*CDfX{xlMXc&@BJl|9VGG>bMKL&G(D5R!YXu*(EY zX?!!C;sOtopwRu^=SiPX%=n=gR^5`MAK^UI<46{C6uVYU+9OMq$wGo&O9jdFbme-j zGW_Z(lMZ`5bsB4J?%Uvn^?ot{)|Ux`Zt(jZ`^!3l@~IkUsc80mzSdWZNSC|GE+u{y z0#<4zvd;8v>Z(S*87|vEG;5>GvQNSD{Y;J3fWaB-yHEG(oO@IYUO~Kx1l(JKlS_S1 zoLA8`Pg1XyxcmXP8hh%iE?JkEmL9Ml^^NA5=t0;Dp!ZUIUc>zX}~ewk^13t9WQJd zLH{mJCHRq9J#wbClLWqOc-i7vz$1vAj&17G*MtjIl&sO}RY9qbHAwC#527PWfXYbU zXLf0@hCr+?SDc0MLa;`M%I7cTllG5TBas3#)pST##=0{J#8z0qQ3~v>w9gP@_xZ^% z!|@n)jSGXQ8P~_=Ymi}L1{0?$gSn7JUGy_rqZX?~X_%!`<`7$yPDE9jN=8&ZMUn&6 z&31@|`q58nr6GYsfD!R9v6Rbyj2ks1e;Aj+kNe9fv#@np?}1Tth7RelT0p{>!<2pu_H4QiJI?p*TKTX&df zf|en{1RnG$iv{$1jyw*%x`yi(c85VZBZcc_twV^!60kuL;+tIW;> z3&kX1eAZoe(lEKcZQQ+{cim<6p#`*cb?C|Np8eSdqA*%18hyM~QL7jAwU*Y>6X#*I za-&BRPO9m?Z$j!i!B^I`fsI5))fmm>W6dbO-trM8

+wc`otFyUc5kJ(4fGSFp! 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 z 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
X~k7-5RFJLN*UD`Tp| zV`{#KKbRLc4t_TlY+|RLW-G7VGJ>YNN6PB->Em%4#D*Gm;vb|fA zF(P~nQa}3vOJGO1Y*jWT!f^+zl{V)R2eU}&cDytmp$nkLmY8duvJPlr!;6v865|6# zC^)0#I*0F>PQj9Y$a&c>Huir*j*Z6|%HF~lFS2clZGKftNzYJ7nD}I)c-0K4!2qEoK`IP0{NK3SwSHZ`7`i)->KyR{#}AOX zU9~;FALWMq-bWMRO7Fp<$2P z$a`%=I0m14IVD8uu#;b6y83dz+$b6OzC~2K84?qfNZD2^_)J`+k+jjG$iroB;uRky;&Id~$K3nXR&qY13rCg7>0BP`pelc>w=8b)ojIql{3|73 zvi6%%Rs3L)c;t3YPN*l;{m_&c{ROG1pIh4@@D270#WKNfs+E;3S#KVb4_ zU7M&vMba*7w$Kk;WSYGHxgi>kB_O#0Iy}97FjnKWJ#2C3}}q_Xkas zphkpOX!#zg`W@^uOr5j3AVT3)%d3B?mzjGQszE8x^UwfrC)+<`#Ny8^7APuRnQ!g+ zZ*Dn468^!Yx@Kk;Ua^~z=;&;Z+bMB!Ctxl@9$O)I$wE{fFE`^3&92}{s)Vn{z2scQ zlegit*|*BUrf>IulE2pW2wGZ=ED@!zfYVBv?91jzz$USlBm?C*$s^ts_SwRj8*Iej_}aPt;rF5CU&x0Cyeo2!5vzWz zTb_c z`=)>AihVmDYW;d_XCjiIRzep6Z8v*m8O$e|bCl#lc$Q+s^C0M4ozzRaB(h2B6`m+E zpF6g>`09;ufp%p_u_Z5I0ZFB<5CzNGzdgJ{w6Dm}iA3VgZOvKFd~;=z@49K$I+=sp zcjW8dcs&pBc+NQescg@X_W{aMY3h}iN;5Ci+98@5HsvX5Z~3TbA@)UN%lT0GpCw0V z|I}|ko++yQFZfCUrxAa)GH11*)W>cT7q(_xW(js=54T(|5=Sz}Ufx%JJzACnKaH_W zS_GK3y?({Wdftg0V&VjOC@pu`4Febu8e+14x#>J*;{7hb{ruNOcsoBiJml%Fu6S>w zybg!lV`9$BJ3IrJ-?p}4>1}L2jA$?MVb2ZNeYKBv819?Cx}qK0gc-wkxoRj}p6SSj zf5dkk4jAceuy|`Tiez)2hzs1hTWBMa-%krantanWedLKcAf+C~(I=Rt3{5PftjaM4 zwrV6jnAa@L%5FKlkdtz_WEBGC0IqV z@iFN?MgTWx5t1Q_+eX-Sve#Gqvskgt-*&g|=#3NKcaa(56P|lz?wi;z$P~sBS=qQ@9C(OK{uB-(%6!vy*musPttLdK zdN8HQcHDd@NbWL9Jo`8G*%)M;ngW5N=VdC>og{Lbg0*csjdf_N*Ulz@(S&lGHAzj4 zmpd4*&eod&rCS|M`&7ptS8^WlKwf&g8Di(FlViiM%xc=7KD z+C^OmWvtil=-%^%fO}8{!FdT{rp?33FtLd0?|~sM7qnRL5mHlaBX@iYq_nkRKcI%p zZLch{6$3susiZK_-@-b}ri{D*?tTL}sDcX1`q$&(`8gCjIqeO*73QY)T#eoldV1I& z`0Jj*iy>~cdnpYJe9V*1&5XD^eKebj^4Q@7QFBh#W_^UTd+PZE@LGJDj4YwgIjN#q zKOI`Z7sxiiwlpyzTxkhY1Re~0q=&y9$}BbR8>TnERaw0}d9`X9;vUsQ=+hI6Fj;bz z)SI*FzVILHXx@b7on_O>~MZ*n$|LY4v(ha z#9rgf-Xxt!1nQwV3<+-!wzeJlfHPgeOr|(&e^I#z@8z8vQ1Ym0tSJAKiHL`ILA9e- z>J|BFmIxO~x+!r!R1KVq2l7N+)ISVfvc~pYqOKDxfEN~TBscv0X1m6m|NPuJE{qGf zb!_K;B#+W^qii`i?u{vZ*503dK6E+l4TTxSv`9tHaLe-$`LG=;kxD>LENC`~EYQUz z?TH&oV(cfm<8K;5=!aI$a}|-dCG9~TRZBnJPIG^+d+d0}*QkQ{Vs}MCWcd&BD~o2y z1ZL~`r${SqQ~zva{G(;qfoQ!j5U4Kn{9U0{oaP*jnTu#y^-+-@JA7}77@?gqy4ZIp zlLb#3MU)O4+P63*YeM}dWU8$lCW6b07l!ul#EG?W4IG>3iE!C-^!t`HRJ^x#N;&&- zoWK+S<9%KWgQAMGZ#sA+Q}eW)_F|j;Z?hF`#u zre40ntW-l#NFEpV<;LH7DO|Y#`h4u`o7Xp9w}TN$hHHj%PjMR=J)S!5gFQsg1`qd3 zr08~1nTf}otz(4j#|Vr@w(*dp%~{Cf2lt;aKmF2G*G8E{^h=rvri>L!W$p{Be?}sI z@ejFea_5XZ^v&+#dpZA-iG3Cc~H~fu>kR8Q{+(B`xBdwlHaX&P4ljs;l@M{Ut z_JdlwVdSfWJVKi~M{#Oz;znkCx9Uzw#pKw;Z==gCddi(8z-LeF?GVcWukMMONog954hoz4S+^xMfRjwl zYO+V1B6iTQ#Rr4xN^F_!eTl))DNFY$EmLYW<*?D~PuDn$4rA@sm!y#ASK<0+mLeoZ zH}?@}MK7Ctk>Zh6uZ4I11nfGS(`=Zt{0v~qFhyeox7-VPsp&uGGK_fW!jQXjPG-eUGjiCH_(FQ$$ z4$Xry&weDlQX$B=axcX^HO`ofei1wJ(Rj6T=Bl>BtriRU}ya+c-g-o1Ac}4hHvV*@z9#eLKi`D|hEaJI{BQpfybAQl@dw zo@caXK_m`4VQ;U0eAcuOmw*=PCXR~Ghdd9}B013Q=^!|Ro>s6B za#w!qw8i!Im&H|^bir#FopR&7KF%~%K79blkUnSWi>t(Y!%%!k4B(W@BB3XbBSli0 zpdO(c^~8t*o9$_T-)04fx~(bU46hNZsqZgslvPf42D&5E;b(Y`RYBS&K|z6Z&Yrg zTn}59Ud&xM#umq5=w8a1#|6{VivrxY>;*P%l%7r7Xn4-|)n zrl`f41`p)prX6U*K-}LDCBff>bRzUMIx_~fUKc3=44bj!COUd;a2B?cO6zW4V`nVR z@V43M{?}%&ClSnZ{TtU+W>nu26LdDnJx1J9YLbXOHyQ86(%KvlWoH5E?ycpjIuBdS z#P}E9Q7}LTi82@f@mVkaZM6*S;d}@G&a(^X(RwzKzK z)R{*l#h_%XrGH|qK|E}Q1_ z-ye5zg@SdA}22}R}Dx!`c}m<3?V`}@srdg z^z73i`>{wa{e?O_Gouem=l1Un^^{{&?CYjJK7+B3-cIkC$dpR+_WIcYcEcL4r~B-l z79AM$1E?4bup8Dt_vkY-G_{Twm(vH-b^>OXtr?{GJDlB2>~KW6V^6skDU?KK+*GZxL{jg`ksa_aSJ|N@MFZbHuSWRsu}=L z8pKNsp~uMO`cq6~0nbJ5=}B9t4O8~NYm`*W6@|wf5a>r(Qdj0eq6}W>Hx!vYNgGgEvGBSI&2$M|4;i~XG-`FR0gP@|e zb8pjU9(8*aV{1%u1>!e2MVb^qw`5PUUP>ln2 zU~!Ztgv|7yyF8#{BcxugRy35uWjt*pI%Z3PxKUKDPe^yV%L9KT zPc9gK(L?mIbHAK{H7eSIkhh{{fx#q7M`=ot4|{FbNIG?GJ#?e7bFf3Oi_9zG@0R!nV%FZFZ`TO&9ZOAhX`P} znH{RQ@kw_-vpNFJQ6Kgx-lvJkBw|xWU~)m-2AVL#(0f)ysa>MNhohrFtG#84OKK_+ z3w2Nh?&ZK`fxE1dUeleoFL4e^RZgwNw9(tUn&iV?tgf`?&JB8G0KSHX4@S{A#rmL0 z{p*cdypZOJ0u49EKL4<-CCFE^X`*b_o}>zmV(+lor4>MXZCJJC2Q|P-#axl{5m)GO z5^)5pzzpdl*MXr3FkwF>5{|bz+z)?9rj^3qnobTDV`Y0yHcbv$by*NE$eM0Hsrvk2&YRJa<@1aHFt?nJ`tkvGP+%nt=@^KGzO*-3&78Xk|W;sUoeBh z%9~%nEf2wF(i%0`kY**{-){MW(*q?(PaM^po>xSLmBj1UK$1S#0)ZATK?J?{sID|R*3|xxFc3*l6 z!Eji)YID??TJv;FKWtNyC$B}gQKEclQEa974%OI+>rJ{gsljg+WX}6v1}n{{7d$D? zay1E#SbYHglhKNgI=pYG&WiUPTJMW=$L$j7Y|;(o_o89?zS?P3AbV|nwp~I2)>aa< z^CWmyMeD91HTQya2O|q(8jU$zozbT%q$BaWpG{OgqwqBjq}U^GOV?i9cr(SHTI%@# z=$UA19rrc^?h9(HIW zq^JNi4~z6*v~52d-sg|-t_8-;_AQ#bS-VCmWJ@?d4uAiD4|XD0n3IxwRYGqGq! zb7{U1ezpEU$rxS-(QFzxTJ6)FH8rk=xAs82NUTJf@#{pKcu$T0t2@m1KeoR9|JBwl z)f}~UIAaH}A9p#6@hR)gJAxGpo&_pmH4~SS9owePyK^(BjLqzk``^9}BZsg4mHhpl zsf|D`%I%{j<5TK=&SB1fQZ3>q-Y$&uiL(ff6m?!lJ!Cr@L^@_nyinuX&g9&ArRJ2X zc&*gGjY|zXzWdjW<(vRWR8QM?rsQpuJ!o_7D}#SVdPixj@oSH&3OG7lbo6cZhtiu9 z&}#aa!1=$h`*(NuN#Mf_pPN9{V-I;;;=>*q&qsk4wc|U!s3(ke(Yr;uhoigdE`p>Y z#T&Ele1q4(gx)6FJ)>yOgOy$4ErHQRaWLL*5pR(^H}@MV?%BPtq>gjVsN*a?)(IBf?s}NO#W5-W$=RKy_&d6d6VHU2%1^ zH90fw^LL})U@L`=Anl|5^Me@P6_sI#Ei)gH#UORiouS}~hIMnI{8Ui?=PKD;LUs?3 z$wIJ4Mt%8afHEHNUM6|0@GRMy_b>I*>-2>Dq3S827w2HfxxpdUDZCOcsx*6o4q3vv zlFJ#gD+L9*V;5O!98g?(4>kRsknCYc%8**8xXap%-M@B~kiZhMTC9G=zG3miq-boa zVFWhTxDI66Jlvu`9;GQjhs2tF#JUs1LYcZhg8JpB?#=?fG>Q`I@Bb#^tx(p#H7Vwq zwJw_EWVjojnRnL|ul=Bp6zLxcW=%S+RLxx5N*5V@h-cTD>cNX9=x*~a_TYsiF|dLe zS-EU3OF#uCR{jTGJfaWs!cGa%2`ehmyvUJ}uii(x3j(in;qS`0DUE|A*jagx4sodR zr_u4RiXk+1^$ojn_QR$cU7InkvPF~wIKq{CvIDyfv>o2BFJ*3`tZ`!;+4p4)hg3^++9U#ObVH`oV&Tr;YN%W73tZU=l zeb_Ry2!zc2|5OK|QU@_s^w7z@u+q{l4fLGz*(RMoIij@DsGa(Z0B9HDt?jzm%>Hc% zu=M`Oi;KOrMGmCRZnedW2#>ZF+Yv{E?TORCZ|-bq6p9g?XPpg+vu69OBJ!fEWqBFE z^)jzY{LR(qXeBQr_sHAgymL>2=@s>J(a5P`kb{3DCq5G`RaDO>*iTMCCK+M1T&Q)Cp-@|nVZ)l@dfgcjw0O>jS-tVx5_mi&r zhNt#e0}6sv$WK5HWxcf#p%#aq%+|HC^|(y)r1IB3pL=^eC`Yog7>2unJ@_k%TJ}wA zLuIO^Zp1a{Z>mbZFY=F*G_qfHtLn22C?*-&l98A>rF`kkMI2Z(-cIAHhRfAaj@BHR z=^uS=EJWx^0rM8=ebY6eWKfcW>-ynM?6jGWu^X&e&kZIz45>PP@FaPBC)Sd*SZPW9Qw@o%285nHHwnibpe^sql^zM|?6AKxq`&br)cohv0j>o!$hk z&(HYh9rrvD(fzvIK^zy}f{f7D-9R5Z#_5PhTK6G$`|+cHVtnfBQ={R2DLxXFXm=ya z0}>=xee{=KUna1tSj-#?T_xIA@_Ui3uP@nwenx;wdVS|SeDe@_E{>JWC1|6i5B z%b}3&{(mr!u5)$2w$If_5Bw)SC=%t$kNu;t((7dUHvwl(A-sj%TptyvM<$O-Sbu%< z>^|_pV)%_r%>0HCV`*MO$r~LIr$aDrhm@16$`h-$*2mv}^T=Y@cD3ZCD93&t#!#-f zNvf9K90~JP2p_p~Q*2@D@HCLmBQVGUyST~D!e<|Je$ zy>!5i(+)K&8Cew!5;ZbHQ9QAHXN2_;KR!;CuADzSsT+Q(ma#~H?Du)y9M*9q#yT>C zIHz4(PlVojm})CHH6;3|zaH_b+u}wTs;82o_y8$2bHoQIl7-7!tIb3x zxT2Xs+-qhNzmuTbOP4XcwGyH)E)Fz0PEMY`h+?EwtC2mq8zRJl_;M3`+Iwv+*f~t_ z{ki+pVrAPO+E`p_NiJWR`H%swFCV~!fxCq>XFmUjs;`WSL)p5F0zm@=x8Uw>O>hhD z9^4_gLju9w9fCvCI5Z9+NaOB}J2cQV?##V!=6y5sr&g^~@~dj^s@mtA+PXM;5x4_h z`f+jJ?4u+Tuvb@mtN6X15beAA3Mv=*lAFC0?(MNL=iQ3WR{5U5q&qyhj8Ck+;pW4k zQEDF4Q*W+WZz_4jq2_j5ZRFzuCZd(FxfiGs2usm|_H-}o`kROEa6y@24U)6a08fUC zNRTcg4A>O?YY&e**_+;7`B7=;%e5Hm68FVJQ19r<&fG_ zo8Fat!%K+wp612P7_XH+;qCorxGyGSf}7r#AZqwKw+L!>Ek=sMePRXI5o@`V8Mncj z8El7eLijgfLZb_VUN&A_7^_ZF5r|l4zGCGVjUu93pV)x+JO^^s`J5$l(|%&@suSaN ztFjNUFW0y;$P6D1?uP+M)wI_a_oIP)WzL#PmDwAXr^A0AU1AXE^qdJ4rRZJykws?O zFv)g|Dc8>(&&nW*!F0fpFa?-z{p#0C<4wlJZECS_aaU?b(sfw)J{x6 z8eI%>1Pj92l#okV`OYFD1m=^W4_38d;RvQNB5( z+EkkzENL|V&G?SkEVf#AD~XTU>|=m)%4xKMMl{z`*Rh7|--El37tYQHYe5L$f>rkz zUAP9=@xk{e4CPSc`wH{$JXAx4qG1F?n#UU+RaY3TaI%$Z@c<_=oXDMzN@}Ub+yNzo z>wN-R-g=X2EoXQ}Cxt6-NgaqdWjWh$IKB zR(uNE4dsCF={ym&Aeil~bD(_O@ljW@?{)viqhU#RiD?|Cnn)b8;WWXcD?5J*Ieg9r z;4^tVwFj?{^^)=cJ_nkA-nKls=goJjipsG=+R~vmeYB}OT~JyopT2LPu6_M<+D~$_ zevNCK447efog90lVyd{;C;bs0my*9+H!3!Gf?axm=^V0k0Ru>O{i|WTr_O_&5&wU& zLeMYn5A-=Z1!EzixE`eeu0qwY`7D>Cug71r=rQaS>q>D-RNXE1(azuBt>qY@Ajzvz zc~?lQUB=O#1@E38>%BtzvZE&aE@)kZ{iRDpuz*{rwEK|#Xv8`&R!Kcwi)DeQ>@_Px zVZ!P6Pn+Dul+~o0LBY&#+bAja1MXv9KE&!k%(K*f_!&Ob1cTDIwJ<}I&sC^S4f`iMg8g=vQ308jGL9aCkB{?Ez;mzanPS;xV}#FUBKw<88i z4th6yqw(s7jmWb$R_12K!9ca!~IMu=6|mhf&Y9mFgCnzm~@(Ous8<7Pk` z75^yyrThQ}^-2&+6F#BdEuq@?PiN)(sB2eeKImd@&>r8Sm2xzfPbhhgQE5s^77#(z z_8;s#zlag{368Fn!%)&veoU=NkHWm>vrvp*f^Si}`= zTI)oNHP#8P-{r;@vJ7V-vISB0fM)f|d=~n^?qY$zaH3!OCA*6g;h%?H(C~C4yH5gs zHkq$y4=r;i-laF#D(+c0NiXw#U(jego4lob0Fe?o^|q_{A~>o)mGaJ$Q_|miHT~`` z@j#E}Hj@^tRpyQAKXKjXvYy4us;$R|zRiiS9+Q%GAZ>;7Lt!sU2%)hm8 z>VgYlpnE?eKOLf!NTZFE44petW$=DipOs!#3EM6y-u=P8}&$4C`)E6iuY<|6D zpC9s-MKEumLZA^gke`aznr+{xb+o4R`*9;`S8bEnG4=lGW8$(=#eLBi{q5u1DTHdV zjKK{q&C_?P2dldq9XrU;6DlPy*!*2f3A`vA>sNP9d0=4|;3ay`m>59{io#Y!Qb|vo_^K0qJ!> zc{7lmHdg+C!p)h8@7M89qZXFN{UaPxMGG^@8S}tsxRo5i`l%U6-NAx<^#gz2%*0@~ zz+3aUigiT}G>@)+(UzMQoPHnO%fS}lKT}B>7u0cgkD4{MjTVA52`2*obwz%^BSk>4 z|6hn~HnKNThDQ9Q54x|!DzFvyII`s;RH2_y&c)os;ojSNQ<3{T^(}^MAjA7dp9lHx z8Tx~wJJb8hbwTC=JpIVst>1+1NOhH+2T(T?`JIGF-^)D1wtgQu9iBq3+4r%r0c1jQ zq=>ho@kBR^5eGwJaoY>$DMk3>;S52Am{0GY-Ca&MRtWO^LrgN+Y(E>q3O(h#+(V{6 ziu$$$hT5-8m%3G$6pmL(5^+kL5C!tvP{>y)Qj|Pl<^=H*xiGt}E1;z>yNBJi@(hTu zw7bnBm0umaF;AYqrTrKelu8<Ob?8>a}iMGDPnZGo4nB948L=DeNf^++weOSmaP3yK~hvwV& znU|E4rWH9h8pNcJGMIUyAXlZhUKU()cH6uv=hj_Y_$n9uQ6oiB82s5o9Rg?Z{=CVI zvf(uw9BW?F`W5@Ar}CXHvmz|`22NeZ%q=CpMOpT?8Z7QV6kk$F`+Mn%Z;gI6SQ_Sc zY5!Px`BU>|h+?~Y(`Z6H?E1hur$HTjLNM9onI3cLdN9jj79aS=@(iltu#G2;kUey_ ziigMuJX^ijWoL9Qe85f>9I!4YGbE9Ng*F-&!M*#}!qv&KP?NfM4hW+5maLv*EW+^3 zSfK@P6)jA1}5N0Ige)(2){iv|9p+T3t&(2|wh_z)zp1Y>iqB}$|A+cdy`php*@yIu4&P_ROiAVqz1!<$vxgD!|OzUN@ z6h0w5j}}&>5zm%1YqvNHzgM#7t%8PhU1Xd21pb>epkOT}t64 zZoXd>qKj_$HSDgYB|U;ki;s61!TuU5Ba0dxi8+_OVi&f%B($2Ksv{2)7;Li>{+dr zdF(f_`THJNo|ScXS-~PJ==P?Vj#d3%v#nS~YaD5W8e&=1>^Dh0{!ibuE*l8SF4%B& z0Do0q$iP0bM5zHk5bQ7Mm!kK>E!&jUd~>}1y8d_5NAVN5hqVOwk8^Kzm%zCd z#;LuZuRHn==b4=}RSpu~2uU2MeE*I~hjfWw@bi}u`pHbdFG=E=IhIlt`iS(%bV{ zhF=<*$;t`iY2T}x{PIPKll}X>j|xIG<__7u+vmFk#uW7*SZ4d;oT}b*!iL%9HDgMZ zdCz}R>r&$wOkcSsCrQoyemgv$jih^dKFmz{VF5rwqj5O|BPcR0e+$}fnv+SW(1OL+nL)dsf%YBtbL{8Y#0#C9gN0&d zYZe6P>#PgS?~H}zLSefLe?N4l5$DlgPQ(HgA+x{UAFAOLushRF9(RqJEl!he8j%!` zn^90%f4(c#?ix}Tg3D;hwiFS=5Zg&i4o+g7aOT}tbmaw`O^RF%FIcP zKsT7p=pskXaQEv8qmN~pYzt;HQ|$3a??r=a(_qKxl0p-fd_G`5%C;_Mm;Ffu_8Lbz zsow|T-YoJ-jY}yKp-J3%3har_+;b?15 zf1x6A-Q-26Nf(1bA*not-nhcaighAMDz)jweB|vuYQh3r+rvPc;DCQ$Ug!nO1*?Rf zunCKc<}mJrF$q`q>L&w=DC1P|t@87#h4Z6XCgKux&+6gALl(Dw=?ECP_vkyCOcaduEs{L!X(`^>pt0og1o z3#Q0!ZM5+tQxE7=t}paPFfh3jGtcBKF05<4gz02b<#sLg`};d~#M`Y1qK*o1i)X)1QNY9udHMNESyUo52A zPZ@!?uKKZ#Vux(Nx)9bObIVrpIM?^PemBcKUdRBQX+V^2wU;fJogb(aE$;COZ2-SK zPEV15rE#aPB9i0gQ1m;$%k@#fxkdP0UG02I04rwGuA#k@?*JFhs^Xp}oGv}H@;q-P zqy2qejJMnQxs2Hf6e)W7zDwPzTEGJIdSZLViFijWopa@ZGmp8^8|Y@*gi zK6AsP3C@FWK+uDzy=qt<373ddfgXBONHgb{`|2M%z7kujR_MK zdL%UkO%9uvbXoNF*O9udUB#_^S={wsbqaYMZan2x+5~r(K%{Hoi`l6l_#LZ34^}iY zW&m-QqF)8uQwqdn$;_>UKb3zXB{r&mzMDL<$jmm{>O^R|T7_Y+UH8*m9xv=* zD6iZX?V0?`LZNUKeM7U(8K9P)gNZ#4oo&IUn zi%ec#dekZjM6j8EH6LDASTGZHe(N5O6aqxQd8C$i)k0F!+`TI2ojSd2hu&*LMwl0W z0~=EN6WjV%)_pAS6)rPy0Gs{BL z=5V2d0ipL3#ZO3ctEkqA3_z6|?SXBJ>o<9+&X%*p+KeM&Ud>#Zr%sj*GP7BqT$r~% z&37=6Nb#pND?k4mc>nHx(su0Xe^Or>F)unoQ3_`iRi04Dql6fbex!Z;gmLt#UJ5GF zH<^&Kco>>MTY_h&7;4czgmsB~&nhj(TGq9M*VIlUtq!(Ps={N=5k9cJbcgAgM0cw2P*hmVcSbcc1;NBcPjd%~>hKC9m5g!p9J7XquT zZM#>gC;nhEE!xh$HS`Ujjpw#FQ#~0N#*BNP{Fih4JEhWCFXJj|1q+OyRL^Z?A4x~X zJ+hKt;+{}Fzu?7K>YRKWu)tG!nd#_M9i85xf(zlG*2pJKw>uMwL*>0SQuJ1BgX`L? zzRq%gQ)50MT)<-@D%;MMTR1@e@LG0BIZiM-(AehQ0hK+!U=9%IToB3#VzXRg?hg;| z&EdVdnA#BI7CN^{YHY&_Y6<-%J{p0?jC^g25-VD5y!Gt}$e;>Js{d`mHKBYFIX>V1 zYs`Pv&!$)1Zwr`HMIn9Mg750P9Ah-jl=Yr$pizA#(}3b6tWehQ`NF|vfrrH$?|?qG zvbu~D(b1*1c{=i2Hf51|RPQ9^ z(Vw=nXgSq0K&8|19!{`5<}>bEcp;rn=4Im%I^R3^xQNtk#(<{nIT?)StAKwgb-nl5 z`q)8)i-WZ7BatQNqr#r9ILoSGUK2*3R!WC>UDCWpX7Ao{GZ{V$Dh;!(D1qlT%C4w{ zaXNa6GYAgLgYmVO2Vn$X&Uww-o|Jped)mc<-S#{{mi=I(=77HvfmO}^`-P{C{-?W* zPf?C9-h?S__RuPu8{U+~2exW(hkmcv&9bvlS=`JOYz-O~blkK`d^94PTJlBFB#yPB z7ZY^rDAm9f#6R_8bsZP}+sDkLK~&6ylEi0Q<+duqcit0K>x2z#W4W1$d*bqi{WVF@ zT%Wy2A;Sv;o4Ua+?G|r2`fv)B*Wa-Tb^UETFCXRk)IpHX5X1nI~%84p-PEVDSM{ z{l?}F5ZH>Fj@}PkiBt?3`nP;D+^vRYwGPQdp~xw8%=f(zz#hGMi;WG4ZuVi}_0gff zTQ&GhA3^DJq3!n-Ynyeqe6SgVJ4`J>bYR87a7ld~l+smkXXQa3(4c?6hk0w&+Ti@x zLhJOHzQ;l<#UsM(pK6(S9V+zDMSDd&M;n_bQ>%3gQ?iapXT_F7FO~U}MwN|7_q%6Q z=6A-m3K5oI*dHX;%aK8?RHec-K=AWJ@c2D0WHdl3TTU=eCEHyDrho5QAs9D z+Pex&7)f(8PsBs9o+gs5Hw$vH)JnrgC6C1NTU1T`)jvIt?TcTZ13mgb>r1W8b;+P6 zOz6l*rN%XumDpweQ`OUz_G8?+&{B{1-zi5-hi#`)|F1H7l!n_}aCWFvbN{jHfCsAF zu>HqV=)}EQ@{fE*sK8tIN}3TKF<}Au2KIlh0U?+5Sd-yLTHVy97Ul-{uOVUj z>#w3}ci@i)azb<#YD7QI%Pd_^qMU|`I7O#afV~Gk~163_luJO#UrDq+W zKfb}3cNRMGE7MgRi_l{&=@2yVmw@iC*kX3lBg1HJD~8Le+$AAx%$eEg+M(RP@DOdU ztHOWlFE#dfYO4y0JABo(_H%)NLU{P}B!-UnH{N_27R74bfCqTwLMFPUdNGN#on@Jk z#Z`^w6xrMNF`YX=wl7%a5?cr1Jpy{uBOrb`7>{_nT>a-;BaOLWT$Cq_Ly>Tp!k%O= zzNzT~qQ4tY8RTyJ`AAgiys(I`w*VK^6hdV!ACbE9f&?>k@!Rk?tE@jh{PYh-G*vQ> z2f|Ey>c7+{&BOjWkru323)hsr-bI6DmqJg#$mKzp!Iw)q^Wx^sF0*dLRe5eZ*Hw*X z&{ZereB`^PB}7hg=?tPJedfXr{PYC-&C?DJAcS`XCwZ?gHIp?@oyV=NL7#taqj!}0 zEuLSm7&mi%DVt=7Ca^hN7gao}#bOR5ngNLzNKXZ?u5Zr$+>P(Mr-9mAn9JV1U9&HA z^39bHbtf<|v@{)yyjd)Ozapt=yB1Dk7#E969%bgkU931awL)2+;NW^c z(cPD;js%)jm(lpCCxVD{e=Y|J_z&CtTowkQO3P6Tk?xM^3nYBZ(Ars<&jSc<`BLi+kou8aD3TB zX=R5Whsu0U&G4IC6D^-dhC&cfqzh9`TZ`Nz+@toJ-e(3s()n9)S6NSjb54O*>Am|XGAnG_}w8tdc21ZuSpj^QtM^rSrw5so97V8 zx3BRqj$JH?cXze;MyEK8DE8FB@e@^FU|=md?3KgSW96ST3aCctUjZ5!XZkD@nb!}u zEX5B#sWmy_W?H+<4IeH4DLsDc(R|phs6z+_iczFfsxY44W4PhWoAPlgoC`mYvgGZ< zkGHvY7^Qccg}SSpGuG$%|2o4`*OS(qO&l}UyO_$>pZ}B819z-U9q|8%jqQ=7;*ES* zKFjfhRfP$ldHb(hQjuG+9N$PX4Sry(b;LNZ@o{~7w+MUu0-(%Ki67Qb*5V$mGHpR0 zT|}gyk6l`hYijA}Xf;>Jd-43nKbb;4Dq1Pz%bcb42#PVmo#m~N#A>+^Jt99y@^z0V z4v9Nk=nXhUL_CWU?d$ty+VH=QRrLzJ#wE&xJR)`C%(&n%1S!H171V}7Bw<}_Lgz(x zlSI4azos`=yq5Sj?;#VF)pFM8r!OCz8s2Fq-%=j6z*ToTGyAGs@Q3{UoDqf1(U;(_ z9*jB_U~`Q53np2D6y#DA>*Tk17YvF-3L(O+gB+q5ovstiA%SzFd~Apg;vvKK-e$LF zjI*Z*oQdW;HN%!f&esoPso6;XkLS;xvyL`qxsZq9z&vDA=d55^Gm;m75X z{WeQLPPL}np#!fD<3fy&4woK_wu(=J7}tAluf!p|ucxV%Srr!N5Ng=)r{tli8ZW~1 z>(+*43Bg=mlHDVp6PEPK>`Yfi`@EFOe)m-n1AQklfUgF~0)c6LUm7BE@ ziPP@wnpZ5Dx;roW*g2P^w0+nxl#^xdA>B`LzgD&%c6ZVeHhX7M>%29=HAwoNBBIBGUdIWl##Uy8 zq^1BG)pV2|9cxsqnSP{k{0iyP3UMeW#65$rLFQEOI_EesPA6NBn!jet zDt>J%cU#=qs2qLx3!mr~D3=>Ed+@j`Z z&^qwbr*ew>9#6a8`nAJS&Z#|&KF6%(ZLRCFSPBIxx4X8)r1%aa7Jg z!cLlKyVdWu1KDH=rgrdmn2AM^kEzrHWZ@>npZhf1&XP1uehDL=u(w@bkh$7wdY>q9 z^)iRVxYu-UZNp;(^QjA+FF=S>cdkEk~f)uCaJp#vq7s_rPH40a^EAx z*%9>t^U|H_s6jKT$DnmWpUg)_XqmBU>L(x!xu{~Gj{0TAZ{3jr@s#rqUTy;`IV&B+ ze}Z5mQ4Vmtn6hWmhjD1{CLKSp`ar8OB4ed|mRQKds$E|#KLl*jGXV>>ho+Tg>nKeX zD@Ljp&a(3Z`K&hZ07dh6pB!yBfLJMqhm$IX14!HX#8iS$z(TeVQu4-gv(hc9mD! z6O{EaQ~CMhbPuAx8OPGRY|PeswfUa^L9XEelS|puJ&VFmu<9;%e zRM!9cfmN4e3lN=a?Wx~aMhuv^6^?iC`L2B_b(#`+;uD^;w3rqiBF<+t!3?mTO3`(C z_k48EsEDrn$Z3p8~AE@a~5JpW*Qh^1u@rUL4 zn84J{TY|M1i=WcTwa|*<_ddH!JNe-89;&rASp!bebnt;GHJ#ZxY2r^1Wd+aA;3A#0 z`K$)(!+YPR+yMVIu~iYOxOU@CN^t1>U1iuUTC*#74|5%;Oo8@J)ZC+9&64Jt@nb&C zOGF0O+q)gw;T_#_OiiCi9;Lo4JVE+#OMu5XJ;B#VNgvr_s^^!?oIu_56`Y+H4$vS# zF~D<;67?LWC953HfHiF|J!hL#;Jo`Gd!_tbGlsDSzv`##>nqbl<>0icbHzxt)`dYw z_-+MAS;p$4HO5@?@7wMtHu1<_;UEHKT+iPvXKv{FR>p!b{^d!ILQ4TB{?=4Z#4$LO-%6b=Lou45%v;> zegD8e`4(AWqlZxAZN{IQ+p(S(jgFac11YSwTak>1T^9b`F{F-XSJJB!6y*){tPFKt zpT%K9=xsz5<|c9X`c^Yz2V_3!$Ot`4O9%_u^T{8V&~(l3>tWft1!xZrYbZwn ztqouI(`^r*AU|7srJFAdKq1vH*E?yFOcAo0C_9Xw5^X9(V_>& zI%@cM<24E%Et<7Y!t>c+yKKz*rAiEacIn_D1z)nJWx$$zTJ+A)NLpS92xt>Zf2$|1 z=*~&|LY5*y5$q=4(N}sL(x>y@`p4a4#}HGybKb<;2{gA3$dXn#Ef?>A!(zBKVr8?d z;}7xiVsDwXq34^p7oX6pc!U_DrKe5GptxPwKXB-4(!CwTt=5#bne5|I4b|V;9*e7p zWwKh?pg$?P%HfV1VJDUZO#-H(R{>~;4RDn_3Qe|#GGS~s7Z83AHV+lZ_dD!H?Ko)b z0eQ1*5lGsn;Q+P3_QyaV1K9cxm%niPQ8>p?Tj(hz|G7XL*mwXx9 z;fFj05r*C_$S4vQG!uTmdtJ&d=rN|>YB@oZXp@3B_SrE{Fv%)Pe#6_JI$>s)T_- zl^4HWYsa1{U-yxZOs_@i4pCC#?7(9!bgm6Ss;l)qQ1q&b*@;GI08{bykcPnCAG016 zu3Zin7vp&s`EhWB#XR84BuL8Hx7#cru;7+>G-zG%RLoLT*Fw+H)UMC7K2TXur}^L$-MPB{6hp%(Zer=^t~?p6GnCaqt_?oh9Rw9d4MZ+>~Ke@OBB21ucwsH>?8rJ`DTA^F~29WYWfuXOm17JD>1-((tePg)e~LmCmV zc<1holqmX!U7d--DoZPNA0!Z&i&&mEQqwHc!wycG@&sC?)*7bqw`YK&-X!BmcX<5j zT`tt^7)p#fU$Gk_d^+j5)QzTMVur>I0ZkV^R|Stf%X-~?*i<8K?3YgHJECsB{JC%- zdN9^vGe|g?=0)CDSLjmW_0bpKAnVI_EV1?5g>k#pNf6Cn8k4s1MRipRJ+&2X%jf|8 z+2VvXV?GeIUDC62VJVG`c6K=|vVl{{ysJvKBmF5;I!Ww2 z32-OgZq;p~(rL9w-Dw2Mm>#sErPHLw)?C={)&e>i&zsLq&AI_E2{}=;oo0G@yBvX! zWa%LY(P7_$lxM;3Qelpb4>eRtsWWbLb^^+QkZz$k+j^mu{G3FGNkFySB*^ZIHJs^;JEAeTJ7{r767ljr{tGhXHyZNqK%(Q`R5kr4F1r1A zBvOhgc{Ra&gb`Kc=V?8)Y7l7DW_*Au#sO5wEco}a9(4g1!Vxzos``~r!ml|M$3{E; zTOMw*Ry&X~+Wjj{9S(C#FF6+VF3KS&m{&CgurVW^ULlgqW7A9*D}b>)z9bD(FiWGU z^gCT8>&wmknx0y13W&F|ZgR5G77uEQ$4THmbe9Qtr-oyUmW7v58*4YNwQ`->#8xz$ z+PrT>H%5RC+?#TqI(9UC`@czV*S@{qG3L}wyrFfL1UcO)W9!EHgdHHAg0fSEcvD24 z)0(rQ)8~YKF0B7Odi8``rEgaoTN#dKa|V_4_?nFT(4U?mG{gc2Ebb?Xj+#K0c~{lC==1j!dF($@gK{Y z93uwG!F4vw6|&T^s*yso*`+)ZyN)wS>wh&m420^hxri_JRuvmU{r$3=(x(W8;KpGF z9QSws`Gc$SRfnCy|Ae!3Hl3C_z1uv@e?F4b)zVsK5Decb2kPe*Q*9XjLyePkWkDZ5 zx=LWBM<`BTzP?8Z$O9-*6m|;{q+KoBo5#F$BJ9t&^1Xp(E@dt)VF=V>Zthb+)Vl9E ze$uVOje+GpOgnpeAmS?sO;gZ0E0g!e0@ zjo5L0isEb0^Y1u6$Uc8LO=csfJlcS>*=wak%(fiZj*`-@HWC$OZndMW zr&015SuwZOY6CNJzOJcC!v5xO5M=k&XXHk z+c*y}$l7w|XPv~9euhUH%iM$*VjVrl7$gL0C*$9>;HO29@$Y|0xM8!CilnV20ze1F zNSfm#2Bk`l-7)|XT7WR7$I;s+X(w}~dIjzj%DY7Dl}!&M$@wefVr;OKYl+@YdL5V& z7Yztf{g~?L<*ElvFx7xTesqO5SP7@S%KNmpp#fnI=Pn1RlAJb&`5%O+BF!Zz=9 zh}n{VIrx+8C8$WxiMky`QaRV`6KyB4}_RP6s%e8#U&`Df6e8n(U29pAD z4U=^+*PBp@{zEVELM&4#MneFMI+c6rw8{xX{7M;ns&Mne4-592`D0Ol9)oJZTxgHc z_q|FiBN=D#Ue%@e;}I)0r6P293OKDbz;Y2Gqi2oYUDsdwJP@OAgBIK zO~a6XJI7_;E>zNA$#!v+xW9$o;q!Wo89rkp+?WMcVOh=tD`QtpRDO?DI8C3HuuL|} zxJ=W~FLziIFF=j%>Gc?qN*%+K(H@j)60tt`qe9+#kR_Vn@in^hW${d9hj}P{CMK33 z(;`==P-EeHn6H*GcX}h+6U8MHGflaaFJ20XWh*fH>H&-*W+EWmZ&%{F_UB;&`?LRb zlbf~xo8jDwM8%%57EF1OKEFoOu55O&rr&j@ld)}=u5))j3;FKxCj3YPv~#gp1-hua zZui!&##b1F*_{*y?zP44X>HDm4)_wl%*ENB{I*cAU<~~=Z*o#aV&!R59@xL=Z7|8` zvB~JE2fp%I45v8r{d402v-RCSq@8FYjTs1WKJN9B^Lg|mxQmhb)JIXAUBYWjvbnFK z{^KM`7q^BCyIYP~*5DI#hnLf*|JpxPUS$R>n&1+o8vF*%{D{I7^;_icNm4|^YYK1t zVYZ6$;cAi~s`1x@1VUKb43btF?%iMcw@i!xLmHKUqiE#5qA^6JR$I*-teS>Vj_Hdp8bemKg?mX&U;v364WF5ktB9?rV%Y;Q_LRmh=f zw+q;=TUz@xP3XtCtS$_6)UZ-}a%?y;C7)n!5L)Qo;kW4t6dufXn2h^5{8J+#8U5|=7!9m$OKbl@BE#jM1?3Xg zb6RW}dpo!j>`4*JKMMtNIx+$>zIu&UiAGZ5>JhBn`<2CtpnrEIT z%j8DIM5$W1`x*;yu0suUb+q_kvGwsGC|XKde1DWN{RS=MZcfXbCY4>D%OLXaGuDo% zUzO4meFO#G)b*C~*vx0306ermcgSr1_q(r}L_&JInFN*RL)q0bQZ-9;-_JJP z^eiHiKz~G5eeDSCNjIFvGUPNY?{rnzzFNcC_FELX7QOXX6GSEdQ&H&!);{aChv^(>Ej)_QSDR7 znSo|m08s7i^w&AhfUP2?q)$YtN1`O1i=~p68-dTFx2bh{PK%yRvFj#pJ_jITU2IM> zl^|RFN7A#m>7z(M$KmVIt&Rn|xq3uKioHEK)@=q*@p5)VI%g zIJNB+v?J5khB{^;r#T8C&)xf{syo$A2jNLB)rJ~B3Rx^MjZfr3WxMk?G?H8G6S)Pu zm1unx#mu`|yJyz+N80}wD7dDJTVu1XO~)tT0N`ddbu$0{Z=%?-UGf1e=JRTYIZ7#5 z#OzPy%HMUvzs(|B3m@~WrQn;+zC4(>B_#e>2>Vyvg2NdB(NBlWKvcfLCq(KK244UaP<@% zyBIERe7J7OgP9u+`S@}-%=C0oSrhl^X_@#XEfj{+$C%#(hP8dkOU)w#qvDye^Voc` z@a1ctid0zvSpsnK(MD7Vz+kZBVLHpa2!PSA(IRjTLUdPXs!ZFM|><;`GIzt~E zw^uqJ+xxIjvfq(4TXED5EWs*dpYIMT%yr}QeAyD?^Mt~#4k{qv|C+4+Yufkt*OYM} zh*z$yq&in zZPG);V#wHc?c7*ZO-p zf4@__ENO`%Y4{p;b_+>5c?omw%Gaw1zJ}OLH2t6^&1WyV$>A(4jNiSgeho|fTqPd| zgArP*g^FQneUI^;%Pto#vP^Ar#bJt@%o{A(7~G`}loc7klXYSNVpfoLQM>F@EzUZS4Eoacu<5tSXx@$4V=OOFeC;eS!`ZF{7la(n%sj@!K z{)Y*$FEL9WE#92N%BZ@7F;0m;WR3|zF7wS`%__R4IgiqQ(oeF#Ag2E!pS8XZZFCzF zHEWrQq;!j3<2$;1#_w0`rmsm&mI}0u|F+M14BuUMCg^*Kg3`u?UC6iy$*PKRRii+%Qvr-PwmI(nJ9yQLHmQb6SAT8bqMZpTl+Px`9z)YA$0Nk-@xg zt8vf~vp=OG3<);ux8-?18;9>|Gq`I?SCAZ(D|1R#CNnUKw6(zVtQ|uAYEdK#22*vk zluZ9L9{)k#xJwlnZ$yB&R~$pc9rWWQmCig!PJH^A?myU4rG0A}!Nnad_2$fc5_Q~{ zEgXq0=K!{VtmrrIy=GvC4oT!%*iy13_hb1mAI^k0Ad6Oh+IN+C+x14p&YK z4axqxSh0rKKgat^f1mxOj>PoCG*?C8FFyb+K+?ao(~BPiWKRW?S5_&VtHA8!8Qp?h zs(C>IjuTxuq74K@pVqa>2kL9NE?lL77^AaV6@c&leTm@M&dUCn>hBf8=0&j;Ya?>r zjn)tA!MijuQK5c!nA_h(dPjzi^J0Ig)djJYR^7f(1w>@Aikli>$eV~66fdVJ|1Ez+ zHDs>ucN-KjcwdAAmh^I!j;#byr|Tiq@N83K@*G2tX;wr+SWi&(s?_-Gol5i@-o)xG z8tV+EbW|to{<9g9bOx(w1J(87_IVc|d;mz@yM;pSo0Sor2~Hia{j0?hLKH6(Q)#J3EOBIu#82$el{+2 zG$>C01pR53j8ENzLy68^M?8@Q|5IKbxh&JFsx5$Qjg7r=li_u7cJ z`a9EU^QXC|QMIN_Me8kWHmP>&W*yCJw9UDQx}TE64SFYdb0INmMC=?Xb}}YAd^nvF zbUz(*x0`Ki%E_%_hV`@WD_lNp7nhT(fiI#_ts#Cnv9bbo<6oIi3p}~u24si#fptCl!RVO&6A02d(*T+1Qj07j0Dyqq zSN!d|o3R4=QDRkShTVu<_2O4CS!R(vkr53`BH61%xIb-6b)SY8N|S`t3ON5FZf9A} zE>zyUC38SZtyLr*iY>TSeQgP2c2bBss-7K6`*|v(D%eN{lwVv%61lFhfhUj-WhQ)( zG}l~MAMuxIYNvFJTQrzkvd*-NwHk`+8~9nXAM(3t*rp#amz;+30*W*bpl0MCQ3 zHR)X0KgSs9WS=<;KvOW2bjF`b@xBXdHOZJFU<1B$!$A8&`TSURDT2vR1w+SNtEP0p za38mVuBgqizMO|E{f>ahGW5ooUE*S&dEco*oejR=^P&jZWw{r&u4yp>&9D4(Hm}mg z%(cz;?=q|w?Nth7A@e>}8xlR69I5(WtbJu%T;G;u2oQpY;2tEn1b0Y+y9F)Wo!|}$ z?h-6`a4Fo~U8-<*cejF~nB=|g|LfmOzv-TS^KDh#5BJnMd#}CrxpmI<2=az)Bta5} zAyA}loZE}%N^R7*iXopOMM}ewdpadJhpH&}lcIC~x5E9E$zMc;^)bi} zEn_K^r@2>H0A*K;3>SOm>X}u3B*M#z2?LI;aW{5ztdFMd%JF^Q6K8(pPf+)d$geFbVV|;) z8tdJ+P;kE{*1ccmr^tw*6H%*PTwUbhti{#oBUvo1pGYkfW@cvKI8u+Yc$fi*mo%@f zpH=PG)HTQL|6E)fOn#2-R>_omrB>|+K$B0kXGLY^sHnu`>j8e0Y&Qf~c0m#;_1{|v ztRh__-(rw5hqc8#ZhI&b*&>yQPE6x%j0r|proK3Ht{g_o^!T_Y`A~{bwXJaMYdA?# z(+TeM5?m>etiuZ@Ux*iXVNzd?A1>WRpP)mH8Bca9YR`yBR?#;&8X7a`TlwA6pnlsorJH`nPq(kvUZM>w?@@;K(S%GhVY)>wNo8;f%sN=~IXNoWC~cIJ zcIC~M6&*9^T*0`7U#3qmY!n;Jgxc@eDL2`Kp|EOvBYZ0|9 zxKzpBcElsMCnD_E2vb*OGBB=Oy{cYdiM*H@oSc-QF`V!0F`{^l`uHsiLUwc=>~az% zGM9<3{HCy66mO;$kKj(#|M^Th{qVw~M;FBnlbR#7QoPJ?fghBZ{$6Gn>@SEvh%c4S3=i&fCWZz2*$Brxw07 z!AUhGVk(UL$#VdSw@k4`@G5FmKlm129jzCW6~{Ppv5W&8jH5c^rS&@1@J6o#g!q~^ zN6*z4C50uC&J^!kHy+;lxzoDgoC$|0HoG};xy_X|fn`sl8vw9G;1%q^mZ~aHKXc={{p(J z+RyD*&7Lkk*cZPjM>SIBdRSE`$`zZA$2e3uCvQQTf2?e28h`NTTscH;^vQIpzjg%p z0Bx-(Uv(deG{uCj(>;hI{VYaIP>y(saT!)zDAf@25^)Ha+uX?dmcw zaFdKba#G|@8#_ft{_600;2gRB!Uloydp*kinc|N??Tl_*olfNRE(9Rw9oLClP{XyJ{AE`s*bc&Wk$NtWeH z@Ww)SX?->lzs8)OLspp5@xcTfOY>`HxEoP8VwQ0!wfe!@OXOqX z?S&^mlObx9_=^&7pk@&vTIojAJ;Yq-ctNzUV||asyPs+$s(+WjVm8aTf?_opBpLhK z?{Vs~^^kS)s3~*dI-HTIu3LNO23*g4%G+zKOHyZtcvpRtU0=3#4|Q|GttC2K2`JacY`ISKg+O#~425UwhN*6F7>r0#P= zpoxN`CFs4N@P;JX$}T&A@M^dg(A4{qx6-CcW}SJkZmq$HW;_GTS7+4T}aM~8xm`|u#E}SBB z>*&h|2)rhwWMc{hp+tGPdJjpiL9!n`5-av`ciI!ZR{+0Ak{3kAXl#gwpJ$@ZqjRi| zyCo&dHoQ4&yKxln`grN;@RktO19oRFyVN3}lLoLdpn8gpEpDhJb7B`;nGB^6c1>Gr z8h#1hMX{-NqL@Qn!iiA1yXiTwZ)?{R%d?!FF^~^+uJ_cBK|PSkUabyA=Sz0dE#*zg zd%r^F{MYBPsD?e@l6{b5pTGlaL{xj0+7gykdkAac)Z5n1CY71=>4oKd94emATwb$m z`d24y>Dr1)%!gxP9hOgyS@cG$Fs%^%li6wym0T z-b&m$m@i1SIdy?$)U%h;A|O=rc+gVUJ=a>+OIs2EdyTExO#*(td!?y{e)7{4nQ{|`^0aZ zTP}+A6EMT3)ff2KIlSsLM0$hfZU2Uo@TN}}ckp-6t^k788}7X8@Ya3<^PMH9oeQSs z29z$-n>SSET_XOrJ-6rwGqKNhKtG|;)#8++oQhSlOlcT{Pn$)J!UP=TRm+*si)iik z2BbrAG^?gWpi6x+#zYxkUP|TX66ptLPfkxnd1sY#Fy1Xh;xRz$mysyOtw?d( z+I;mS{Oxi#qu^)6KYbw^Y`gpLuPw#xbtm<<2opoHSr1r&s=Z;#fa*wY+gMZ_T_fD~ zF7>wquiw$JV*_XVe(mtm`wQN}KaA@SlHX=43UP>9X>9gYi%ZL4Vc3+pCT}lr)YR07 zhLfaLtluv=^jph*$>WFF=RlF__Tjk(`=0S&ZWgwsZVzuI)Urt#;HQM!QhT0q-=oY> z%zU#_4%N)zYP28}&tF{1(H&fUxiHMHp|ug#_sg+Za$ve|@0&tV%;jgU`?eaD#g*0a z8D$u#_{~c5mJMDO-rX%@-=(jq{at66z$N75?hU>m`*f%#8yyk~P zl7He2Q@g*$i5`4Roz-^9yKyRRr0SEXt5>UHaXNu#dIGp4^uW*0V^Ww|7m-&m_E74t z+shtTy*vZnAP!IQKZQRd(km{42ZLRbTdy70WqZs^rxaraVcc(*+{ON^f3{W+Jj;KD z4!x?>?7B$aniuZPrkdBmjYF)+d0&KoVzYX6y|lqWM{z{rWYwtA-yu`qzl zUTKm;L3!yrg7JhyMm)z`La`N&C8si!WwPROmau{4E^};-h=E&@n?hdztC{mbDCOo4 zB$2)EQ#AJ`=+3>L$>I)k!&271DR>(3*^85(${Dc-&@p1Y8)JSDK*`GNb{N~Yw{Fm^ z2em^km>*Ojcu&j{Qnx>rDx>&qyJd!ZJ@UC*lQT5f^J!9@on4O$Q)@x*+!A&H%D zK;fTJhHM_1hzsIZzKO9~XNZ1JPr>ueyyOB_Utv~r5{`yDvNw~zpMlMCA?2xz&dkRE6c^x^9_ja zf^Dc}>$wJXaPxNazjhL$kI52Zq{8m753sy14|5@L?>*7k$R4WAvFLOEXce!9-yb5|e9_ZCS^ z2asnu=pg2}oep|t&$`HQv$yXe5iTK3KFt!^MA!H-cRgj=Z3albk7PjottFTj4mdqX zdtXyDqM5vM6f>;TEqT=ElKDX>udo)?@Xp@_14FjM+L5ja)`X+#KzcM2>$Dg4G5Lb> zXq-(t_=ytoQ5!5y-23Gb;bpeB{22&pnr3BF2g(OFM+NKok#aE%=aYN>(Q~^8TB=_( z?$Rm<%G>V=mr$5I-;u>VrCxXo?lqfKgnTa)j88lWJk?~ZYm4r$@Rq--*JIoNvE*OtGczX7t0XG*$HedEX;ddq1qL_@CmDDNg+`o#~z?6bK`06P|6 z9&s9gZr-gr19SRc+Rf-WQ~RVyLcaGp4Jk{i5*VNwvA86%TYrh>1q`<^@7PO&Aav;k zeLh4UWE#6|!id`*1R1Qx*Ic#ij*2qGbUVKW790soF3g5Dz1gD;U!e*I94t}{yl;vH zk2T}c=u(X?Kg9A;UFh*AuVa~?guMJRp%nxf2@g7CIKE0^%6&)*OBJiOJK-8)Y}ld4 zc)tB~HMC3UBHN14@qQ+k=HOIpEwgAM8cOs_0$OUuY;-)AsBFy&Ir}vG-m67c@qi~m z=Dz$4ZR`l2=oRh~2rmDEd-vK=wfs2pe#QFWX%%6szG>6#aiJLxJWHpcg%u#)B<{hQ!YKR05MzU;f43icNNNKxJ0#tEQ~H zlqMTpTFKqwQFcCTh!U|{67}P3I|bMK`_3f$z4R-iDBX|Av@o}F#Z`fJY}E1N_^n4e zr}EvL#*qG~-Gi06F5Kk)H92?6TVZ}AUii{80C|k2?;FgbvH>>2`rG%-%xqx+g9aLu ziK1bOXeG(D2hXeTBbAIng}hfyVt6&t3}_`xLv#!`d&kK(XSPS-H#ui&2dotHc3SqM zPh^eD$@e};jAE0z6+bweR4NXCJV`{<6QE`sN2S&(U7U4CbWdE%<&UVzHim2eb}idH z=Enp&6lMPifJG9=K8#Ejk%<5zWT{~ zFl>2|G>Z*?;=eDa<8Q?(oeau5a&Av_2rm>}$Gs~0b^-n_0E&hf$CIl`aw_BBSx-!h z$Z^$Wq-CEKYNuRjK1Q0n51kSMDlJMXNyeDA1wvZD7XoOOim3Dqq-`kuQCwee4}7At zemzW+>;MyG4qhH8zKA9BHq_hB+_7?@)hH6EJ8TMTsa}xDhouX6WU%t2kF=`VePt|M z;W_XYhNdPu|&edcPP{(J~U7zd_&lMCLpz|f$v_Xb+ zwZ80sN-S+rE1hZ;wuB*@R#p2&Jci}rm+ehpA2Dkcn^yLR07#~Ielfu^N13-+QMNFr zOpT&qqP{+Ly{yz%u{Aov67A?&Y`M|eIo#qjJs}xK8p(1L${n*Jmw|XHeH(N7-f9Vw;#yLL!glq2Ik@`8NK5; zPWItcjc%-U^GjHG@AAe1NO*%(<(TXCJ*ur_^pNS+8ZNRQuJ-b_joIBHF`Y7mK95Bwn^w7KWa z>ES*{+b@83U=fNzIK<J;Ua+R0U0yK*qetSO=r zelt3Nr~0wU`Ntd8LHu;1MhKj~Wdwb?ro9$Z!B@eCW8s1~k_kyayR%x~iX?C;-SC}} zT$Jy}x(l6AxV>whyzQ_HyBnGh*dJ~d>270v-%3;>K^ofzwyI?DOm%gTTV5;E#IXf7 z3~VnlwjM6$Xh;k`F|gR5ILD!9PoYmjg@WB_H_Q%Itx#tlp({c|88O9Ci#{8HEl7Jl z#Sy<)UB?5Rg|6?OcM=+GHKm)4qAel1etii#_Q~6q^i8{`Qfv#=b1B+zR=J#F>Hx~C z_!KlGQ-wCuI(x0fS%I0&C|z=6KSWM%*Zx7M_1J3Dm5-ckrj3VbW>dZ0Pt2OjDXBFA|2cQ^lv#M@Ae-ImbpoVdkpRSzXmB3}cB z-muWzQ<&5Akpiq-ii&$#l-!nmQZ;y08uj#|MoP}R*@E{do_Xy~c*JdKGXLkjR|WIf z^K+%DY@&A24Tb)lYsq9=Ml*SiWv|o;E9NnN40(=r`qF2{klC9yQV{jdGF*$&SpZ(lq-vuBRJL* zt*t_ajG>?&e0%4La5CdD^*U!TX1E6X=VZXJFl!p#7b1Ls*pGVakbC9)ARM*kR*p1{ z)}u~Z9PrT9M61v+uYFWmNRCD9+wIE0Dv=1ExlJ6hPrd<}A7<{-KiLzuHbwKO(=7m( z5rUL=E__4oBjLgAslU9qp4u1zOED!9tl2XoopH2O0;Q0J#^cF{n9W2+eM0@?^qn&C z!;NTeZuJQqiM}r{Gl?pvnTL!jxFOy$(*j9_7GGR8CS(P{W<~zKWikSfHDuk*qf(&a zN&YKJ3^j#Tbo_~Op`{NcznDC#-tLMe_$~^57GdZhn_pu>yBZdb!JR(2V8?00D}5jx zqMA=#MDb(^&egH1vUkdqkbR`A9V6Vxc6<)$oXL*3gM8frLJnIOY3NHtYbrKxPaCW) zA(9`^>v4aJB#{l{?-}rVv?2>qX3L*y56^M!POsfktDp0sav&3Cw0zz>@(!19vA+>l zCYV7{U-SF3hDe*a%$xX+1Gef;xX}?NHWW)Q$NdrfFN0qc%L86pNl#0>b`P5*MtE7g z`638&!;6pObT+w--{GXzG3Ic7$kRtqz{}Oul|IMndxxKLUipKwl&+^Dfb*BG4*AA> zmq)Vabu<~^u!zhwhK;DXxf3rGa z?adRMq0nbUHLQJj8Gb>qEP{Wig=3~p^MTPT0>iKmxjo`L(;k6o!6ks{&U>KlS<6g4 z1(pnN_`r7(ja6=<|X9Wp`G~t0Wur24>0o+rakq!{m8u z$%oe+Zg*=2E9%;G zzDA^2P4%jpL|wJ-KI@tP(vtj^BdKpig8}!Clup@@oEZ+o-duthXR62^o0wzw*qUMm>cfqR+~~YKl0n`0b|k z*fooJ44k6oGl@;Qa(?5Fnk~_$%Q5?i4@P2&M3b(;ic<>=N7u;q;{#fYIm)}4F8hPn z22OBGDO$yR7)M2?dkb+ASx-MRRq$Lptl0Y;POr zf zIn7d>fw&x->X2yQLZV(&e&Y4L`;-!xva;r~uSfg?&>S}ko*%eGMscP~k8Qp5GJZXPnv?MB4zOu%s7R&M9#=k>pg4^;i@(^2HVm4--f}2#^ zuV&Y^RKJVcj`F+GYqTSt?WSrpny!5Kox2qtL8mxMS83yy!i`!%yX8Q=!jT#)jZK|# zK&5V2%_s96y)e{;m^$Sgk>LIl_{xWQgWiF0E&BN@O>W|^5%vbK>X;t@x)u!CpH{a$ zpzw)={uV8^gthsv*uWrP09RZZa-A9}(4QV!+O3WVJgG5LC!GLd%%3;*aJYhkE6<>D zXcJ-AV$sF@mmaUg$%nXr&m<1h&c%X46Kz~IW!>!WkO=W6>S)C1gbJvq5|8KP94W-r zl-Ue6-xt@Hj}Vtl_)MI=hAm^OJ-^ci5lA5r%8pe{lT6reK;#9P$GXq=bV~7ea_BR$ z(7IfSpMBDcXFz$vAU=KnrQ)8n)Y1O?8w0MonlPJ45JTAKG}4r(daIZGKv(<#bTf6^ z=vjn@2A*sbv<$Vh+&T(y$x7e4|EfQbFQxkal>)MgGbsYDF@h`>;c%zID@Z@ZigZB&Nr5?{4YI|-O)k9!~mnJ__& zjvSrJ*G1}VFjqM0BmO){spF-~0S;HdZKY5?Jkh$eu*iVw9B+Hq#Vd26X(V2vYq$Yf zPdE@(#yB9o4Sqn?Q{w$Ni%_Axku7bmW04$}ReVsh_<)Jg8YTW*>U1YpvTq;X+S9lC zRawl{+*u@OI{dE{(L7$?_ zMr9AGwQG@_HoQqM?N=7LvXvZzcn~zO}Q{>?of(EIHVRNs>0?c1O6L)Vm&+A95 zWaNUl>`91QHEli^P`S9rN4XwN)NU31i7Lo<`PLQkOEuB*Bey?C99uI~4t6s2KcF*BJ`x)3PY)593qim*LEV?Fvqj+H`c&+*uop&m{u@3 zW`DEuaJkJ_Z*7BLbkSnBqnn<1{i#iJiGg(^>Cw?On4s78Ldre*Xl1AcZFyt9H)RY_ z8>NxAz{PYqy=+ZO5m&U2zH)Np7M`E0O{L0U2Fi^mao@oI(up%D2B&Ad~fFBiV4OU?wL1J z#C_)%y_BmjlkZv69sIFC*Unl`>x4vm_0w3rGf19wpMAUL=Uv`FH@6s|CN1P5Ni9zE zex&tB2j;~aU6?J~P@&fItc|Co07LeKj1+5KNIs!+(|~6&F8AB*qBKy?w7faCv(xnl z7pGddW=lRyWuCH^HA_(EDc@M%DZQvQCVn@ziQk>rtn=y^%MrI*6}FXWeN)8Bv{#H1 zzO>j8yW7RY2Np|ejs&aQ$ymb3_#vIH%e`95vAybwgCv$P4SeX&;VQK7;X}7y{G?!b z$Q3_Xu?wYWvF@N;Y%1o1=OOXcJKX@Gs`67Y*Y7wU^0Jkw?;~gTE@;3k!J3kN+#-3z zpR(zQ)jH#2pw3^c%+Aql&vi)jha_-!v`A8-4`q~!nqJBz40xrEs2AZ)F% z$T&Nh!o9YboIJ7bx`S;jfMtE4?93@QYonoVilA}27~`!JlxzKssga+xnYu-${&CY* zNM0S7_hQC?=>jWn3U`R0`t3~oLQAvv5|2sQd%qq`3h}z&>eoZrP@odM?D|9pds{w|AWF6XY$aR45Fp##At@q%sAnPX%o`!Q#ie{_GL!$HoBKV0^s1uKIBtm!)xpBhD2|Fsh}f35E|pJVmr+d8?dwD(#k*XJ-anQ1A)1;ImN>%~r-*aHZ~lb}}63rzC_I2sMmz`ZKj zK-CnGZI!QhmzX3~nsOOTNyorgcM17C%j2}oFTc&0%&{vUes`#hpp%GWv-4}K3xfxV3Y>9Ld8q2xzxt}>|%aRjcg&%%}Ko_ zvI0vSuA~vOWPyJ+Jaw)HF&jS8B^A$hiT<}(Dr=QBV3w!V)!;!yDEF*sfCjx@G_!B# zXPi(*M$uQKJs)-HS%3qBv2t)F?k49aNw!VlL|MQZgM=XtqCk3vKbIsNtk)t3*UjeD zIJE=ME<_CO4(!PMFGc>G132a4i!%T3rKrWndck%nG^ZiLbtdK~o;6#UsP8_cXOij*n*7 z%3PTGY*eF$hqAKS2@V=Wi509eG1m8UOpTmmMVLV`l3GK!-xm`tgJvgsNM?lilkTJEwDIgJsyRei z`qu>sDwgf{Zu;ejdYgt}OHK6Q&SFbzk5Up|!mFTq$G)}Uv`LmUU@1e-!WY6wN;^fY z&+mLHZcC!JwmgyM*63sQ)3RoicYaOUcqD3%SaUB9C(7if?#WV_tBIU@s(~>ZljcyO zn=4w^D^I;x<4Sz1?b@eGS}8=(?W0UqylE@150nn(t&N?Z6GEj{cdE~-P|}BATYe0R zqC8d&8@?8Zess*JPw(>Wm64XA*Ya858onl>+c;ZT7WB=@dzQY&OS)hDcKscG-QoLn zp~{>)qs~SfN6vSWkin)5Um_~=&1pkjKUY1XpAWZkk;dv3!OLDnwj;2pdyxG^)hNQ} zvz4gv|9JzU7|6^z$o8K*MG|WZ^!A#e&mz!+UX6=)DFv6`x`O ziB9O;!-B*m6uyZE%QZM@rTE0w!jwmgXN}%k8^UCiKRzt)U!9ZqOjp;eFqW!yP`@zD zm9UR)6PZmFAt-}1#l6(}=4mqN1~k+(n#xK)cD0XnZX~e;uiV!@+Hz8;X?NFC+vdAp zzol0Ipl5nzYkHQy>iwfM{iyc+YO_EOpwO`slA&I<>R6s0$m7RmZzf!YUzWM``)Yfw z(s@5Um%aY26zVE({%#rB>^$zORsPctFJn3``?1P?j0<%Zci95**1EP=>}gSp*}C!Z zrC{Kd$Cjf$DuCwT2I6Q<8O3mV;dbF^4*lpmW#_n;%Ot6%Ec>8-z%k1JuCfYCmT#Gj znPU$EkM?o2fDD%7pe(^RrPdt?v`5| z!LzIHZZ--4hjBfR)c{PjhCPDBI3)`5mYgDw`=62sTrvajj+A_y^@PojmR+&E_ zPBwKBCXH^@+-f@7F5ED6u9HQxTjtb?%>uPK>6@nlRzg}Q@gP`JCFND=@6ob@!$)iW z1qkh^{_~#-I8o%Yk;uO$&~BlO1`R>^ewubca{ObQo+cfU-!IskG7I}lkWacEpTN== zIks$OsVS#hs+Rb%W17+Ak8j3tzqQ<1T7a>i(NoODceUa?)J-yR{}Wi+7BrqYM>^R8 z4QI<#rX1+XS>EdIr+3Gx%Myt6(M{J{tm+1V=H}g(o%aSiAKRl= zJt?9HHp#S@d4z{n&k|f&g?BmhpACF=FLp{eo>+B8pvX6cZOo`ODn{0~NvC$ET;VrF z8xzn{A2W@sgi*f%^#-Y6q^P>$&B+p{YlhmBMN`lpdh6Bv;twC?_1TI3(5s{QPe=cM zLccELzXc-l0iVxb2hKD^y1sqoPv;4Ve?qV@io{GMVEXJ|2FE!#0;|c|!k$_v7egz( z=u$dci9g0T8Ldv4q7m=>3MWBcqXhad8T`M%zJ9OQJFOeBnLDHfnv^;HvpI`fiDh^0 zl^&)YyY5}NeOMe!$G%TZJ<~@-Bas#-cD+Pt?GFdr&onf`F}62sD3*O(nkIw z9-blZ_~b#z+4}z9tV>BhH)arXclNMhuKhF)cuOeEJS@1ncpn*b19;TlfR~Ms-PT<4 zbX_pCbE=>dtm$2~;!XloxUt;|S4}L@^AJ3j_5LcmJ9E5KkQf`U|8q~Ok zFc;bVM6YW7MixsG+vVT2ZZCF-+gOEeld?dSz zEf=~!G0dWbV}{js4fat`BsH%@jho7Cx?}pucPPxjgu5}0Hr_I(%k;iE zv=^kLZS?GT^F0e2@U-7jX%t8?nXDu3LM!PP#Ow+y?}km^#n>wNJgwePLw*T6J}h1d zNOMkbH^XpIgX5*b!}f|s=UhsG8PjL>?(q{pak(Cx4F6xV5~A?+&jF2a_#6~x*Z;9f zeR>nzeNKM;&I`R1woV{hj^`N;GkqHSXw-~c^KwLZZqH!P3)}@*i-l-*ZOqR zV{_`IM*(*u$de_e-AJX+RN`lYZ}Wh+nqNwgCMIi9k(`$WUrRl_*rwM zxb3u;FzFkZ?q#hBpYv7i=aQ#}Vg*a-TOFkxKiOH^K-I^551)+FRKZy-WYqS{3K-;G z?X+R)wNd5IeMCLdc_lMCe-Cz$Uo}@@%{2c`mBMDbne@U>rcXP4aY~IkyBj~Nu z604nCkw!y(dzE|ZlJwLSTg^gDIV#7ieJa1AGR5jUbAZu~BJQlynn>->M`$~c!i(~h zMDNyHA*s}Y`1wyB*NEX_j}?s#2+qtXY(5gNnzWYTV*RtA{IB8V`zwtPw*U*C zk7qxczh>?e{lAQ076b~qf`uIF3LA#wqEHVq%Xp_R@OF(pjF#i^8rV5}$B_jn+6g4o zc%`jrojjCPAFN`)uSs%0%(~6|j>k}a$C0OK*aG*w@GhxS;u4grOOiY4i~j!Dp>2LGJCfmdD(O+OHHTBBql-U{$`oDMhz`B4>f@hPx__It zx=p=&@*-p-omc-ggt!znTO|EP8b;h99{pLE!)W>Etp*d3-dL!LzbPDFYnpjYsE3JJ z6fOChJ@m%}F!wv&V&m>IdTJ?P|MGoF?tpSU(2c~!A%@nOSG$|U?6D=^LnGbCL?o)w zR3t)C1~BwL zD&iRc_0ISYDkApcw~F)#%lQ{TFH9H$LB%fGZ63E@J5pRSpH?n-{`F2wA6M}CZ`1z{ z@lyxNUpsbxcMPmE@8{?y zU9g>-=2GG$D5SllrgwOA)#y7S_iP&BPTGu@Fb((Pgo|PS3!gm2x|#T6C=nx|#J$y963Utv$iH`1it(i+!h@QgNlJ!BKo?KR#Gk9M~{yRT4E0=&zZ(ilzhv}Kb7R?+_S#YEhB>kmCQO@$$TX5uJP_hko_{~P|I+4Guw}*dep$3W*n0;gNwp+ z?Csm~IUcB_&2V+~VM(j4b9gq9{8aed$0*m{2VWxcgV;ktnVaLe7r=PS4L7>b_i6rN zdM*a|hcp@3=eP2|E0|xO{|5Ds-;!ZNQAoYxX&t&x#YO+`xTSpK-HJcNkW(Zb zng0hp{p|y?={z%+eYvDQ&Yz%GGz?EL7=zw zEfP~1&p>}QsYRN6jnhN(9t93{Vc5F~@S(k_IgM;e(xn%#;o;D{xraCx{Kyz2KIVK1SDb6UD%}949IYO;ZE^m8$mtzu4B6kD zYsyy1+&}6+3*(>q-v*Nw{^QWXXOU16A3iSMgMEKHG~~MbNXD`@9;6?Z98(Aiswg3A zaLyoXd@#1{-yK?MMta2F6Xu4lutDJa=)uYcx+@36tvAL;s4c065ygFyavvHX#}9#A zc&_HA9K_qKa~=wFe|)Hm4#9*Z=7FwVQ+&o6zz&$$f^w&-FH$Ldb789{fBBKC#!u^t zPnt8=vi6A)4~;gCiRMuKcUP~e#!(Ei=N)oSV`TVOllb4DU)0~0o!m3t*i-&P>Ih3Y z(ZrOm!^;sqy}5(D4Euz&5>~)~lb|BLj8mqDVA*%r?RS0zCDB-w)6VUG^CoD~Yp-*3 zd#5dho)%d=Q2OOh4_mPt53|Ke4>cP-+%%28UA3zJ6dHPkc6O zI7a~_4OJuUeLx=)(TEi?+ zk|5Qc3+ie6YQ=7-liDYp9EK~}-a5kg{#w62#~y1gEtyJYBMho5lBCMW#gZWtC~ViB zJ(G33hs$o<+~ynOEhd!3g|O{Cqh=?x;m8D6*GzEpN0ZhJ_Nhcoj&K_Kpim8Ey76Fp zC=_())9;!6+$f60>`GX{-iudJ-Lg3TjGt?B)TY7CM_G-RAi1Sl^i&3vy0hK! zl%Y{C)~R$F9IOK3U)OqJ;ak0>6j$nT9>Bp?HIr2ac6;2EhVW5<_-+~HfAedUm^nIz z=tq&jwM*oBC2?%zXg(QeBghwf$>vCKsSnGQ*Dl9jsGK$cB_th{Pfeu6Fv}^-zN5L? zxUYfD%P%2k+?dpwE~c+JgA?jv#e3d@a%Gy;(N%vukgG-L5DljE`>aF2W;^--U?R|C z4y{Ir;hW?D+mXrAjixF*fbHFXT(}0K>TII$q#ykns~>5Y;4@d+)AIbPl@Ldo13cddqth7L{n zx>`p@HQMhIC+$x-M+nRIP90I>e-f+(-4kDD&HM*G{DLt5CR2hzg986B9wF*4x|LqQ zi=;WHo{C_iM17uG79dX6y5ixOYnyW$u>99nZT=0E%t8LvVEfPtqo4g%S~IG(eml>e zb3iSF)xv|$$B1~G33eIAH)zG7+$xqL2J}YPPH?&g$x|hBgv>EUwAz+u0+^%TpwYXr z!5$Lo4-A!Uw9>Hl1-PG&bno}(#R<7^9Qun0HW>y;kE<#!=in47!HvOhF`D$CC0|FI zeyU<92YpGon<|E%70q%)vlR}bs;>;|9$a0OSLorxB?$ubK|T+znd!fF;66%oj+7R7 z{+!xkycoKBbvMQ^aV`O3c|V_2`K{dpgHco5Zq}LIz2oBj*2!D+<#i0qbnA^&pJe@9 zMi93&t5qDvp=J*|9!DL&j>qt*^MyaR6LxF006{>$zu)N`VL852zx55saue%rgQf$> zm9E-@xW#S9X9nbH)RtWBAZ}AkdWP+eQUBNJ_TPkv5QINZG)v-K5dU(VmS8Ja93KC# zC+`adMW=@;M1Uj)j-iy|aRe4-r9a^e!GWWFsigBviy4NTA6kaU?uIVWJW}Zjz15=d z;p?j$s9LL@kf-c4nmQg1PP=0%#l^s|69&7PBD}*v4P2LPU^xG!nm8$>Bq!QiO)e{PvJCRm~E?m4UHO`h8?k z{YsdN(AcAT;(cX6OP5juzb8Sue&)fiqsG*oOnV03OC&kiuW7Ejq5N;0QR9=7WScGG zr0F4z{Drdoq5{8I_!=ujJlmt%@gSXV+!QGGBu@)+;pPp0EqyLs+4)EU zgwgXdxcPf%0#Kzc2X)hh!d_e7y&d4L99Vy8?6!T1>#Q?qHi964Hp*p9Ag^H(ygr@V zNOD7oma0zhwPL9KE0kN}OcaPs$Vlc&=pJhsrXJF*^Yu+uP4C4C$N51+oj{9WTG#8i zwP`uxH8Ob2wsdpdPAT)7kc_4eu_Q5OIWdB0`x-<2`qUzvRay0f^B14!l9M7P2;HS# zEvX~z@8M>iQi!yx1nC(@)uM9d45?-2IvvHJmCnJbT9e4xk3HYBRk z?R;&Y$(MMN7_pnY9!ND%mpv#Zyj3$;`O# zk3@^Qq^Lero?g7sufDXi?McU3FCu>KZA&_|Xe8Rev^^8|TK$9K7NfVzN)3p3jkb&6M$D@!%AQdNxXyVg*so*M zwWyym#WX7@TmTdw%fvd=8WenQ#j8B(0e51n1JF0|C-UF&%f-O0C+K&2vsRNayjfBL zz-8%C-i3)+4)Wbr4q)rZlU_V^^GyiS{D{D>z*_y7!_!Emv$pWujjJBg*VwM7xwn8SWV zCc$e?B)Lghp70zGX}{(3sn4$#FVx)Lc-Zt4is10)79N2Ps{ zXawQx+M7H>DD=8HrE}7gI#7|J>cpu*+#!JLFTCIpRCg7JgvamZaOF zjPH^$>)So2iEzP@t@pCz2em6Fz{-$zbSr8?ZX*-rB?#p#!u+@#wId9qg|BN zSbXQIm!dFBe6SxXQV*1G5+?QBC(eP3BEA!kK<(2*Ok$=4eb_m)0K*hEDA4J{3CMcl z_}+O@Ra|H|z&0bOY&Kh)IdA=mLuU%@4ktMeH?cf(_xn`5f)^lFSFQgftxyKKC|uN|BJG>jEb{q)`df`0KtNLaEIVJ zkPzJ62X}XOg1h_R0R|b|B?NbOcXtMt^E`Whd%xfLdH(g?eXr`SS}j$*s;>)z^%MeK zFXYIfkyrTrWAkBgHc9A$tcX@2IfJBd{YL8I>9Do7L)p_qUNBb3xD_0S~KlYvT zzW?t&CKLf@n;)Rhlul}W4Y|se6JMX|O^NAX)>uB+%3UkG;t{i6Rh{5{dtP40;Nd&_@xImrDV#mE7#|2kf< z1=cm3iT`esSO~#lRr5Y{gTBwpuYlg>NP9 zXUzpxz6X34QBLK$5fw?zU=y5pfc2&?oWNET&87QIjr27?nmBXITfE{63lsa|Ckx(( zXscVWK|&(Z%*L=^Oi%E{w*zZw;#RUtKD7haHxDFS;0_vIb5A<=ZqH5G{S!XS@q9Gb z2~G{G+!IY;(ysZndH4CC`V<8QPh;ee(XPp0e6pP*h`du*7w^4Y@Gu9YVA^JNM!^Kk zpIB@(V@*;}8_jm>ibFLP$|1_8687Cs3Y+Gh)b3_i>V!?M3sP(FBTcQEL|U0YeY}Yv znn!{s~$}Z z)F^k%BJVx5d;uFCA?H-vj_Fb4G6@1dDzKa%HO@Pwp7Fjroa}C|g(<9HAr2_8ue$ z$VZ8mZ`tm`cRQk$#+Ol+?MguVIfLVIq3BO~3~ieITxRYIInT=Rfgyvrm!CO{`L*1c ztQOy~MpjFaVs@qBLHD~OQ~Gd5EQdyeLG7v67`yD==&jKA+S_7>Vgi01_f&%R;!9yC z^*A=3xC5Kfv7H6hU->ryEZIk^pQXleQ&C%=zopc*+1i~C11fR{;`vbMi?;>8<~O#v zww|7_rEzdKZRXL-3Tifvl;@}eTHS!|jy zy7lrJcvT#0RB5O?^cAbup>k)<;b$kEf{#yQ|KL`AcqQ61^N^dfmB&v=xIFtcqL#Dj zNXgB+O>jZs>|0LObYtTl^BRvT`?dPEtq{syQehn0cI}e7Dp}RX77!#3Lx3p*P1mJ- zOtNaN&jO&oSF5?BB1XorvcvrxwsL&-ZR}s1^3En-l&EzW;(@V1>xJWpA`rZ=997s5c8S^2S<>({+<{@@h z&)`~#DrJ^n?coQBRDQQh9cru%v~f4fTsMbPr5wU$`;L;!%;3ULfOC<86OU%?0fETf$$DXBzi4Y+Jd6=9BuqliDJzIptSI6qSg z6iFM%TSNp}(%*(XFqyFh&YN^Lwno$@zDSrqjIx+RFahO_ivHVskbi& zfS1~s0T^_-L~_)=L7G)xP2&&uN0^;GUZd!J7T0tf3?cwUR=KXZN zym6#TS?FulimElcRomA+r2-r~wER?a)$wWZBfaa48f|N?EL6OKTteKb4%V18u+AC+ zUg$|W>HwFrbg_|k;~2W9b{*g(&uj@~tR^>d<#zAR1X-`HWKPyzv9BStc=czQxt*`k z=4x9$5?zrhQzb43j?5D+JZsh$qlo$$;om?Be}o7<`ko#1_zU^ppV(i#>As#6u&qV; zTBk$lgmuqrxz1m8^alw~swG0WXIU5g3YMEnE48I_P*-(IE>rgLNuziOZ> zpRi&g4(qsmm|7`leNN>ztT|M(&0=@>kYE-EH~*uEv6OwpqaP|X+$<<(?^LLjsz8Vj$coo(t|6zTLd_d_#WEJ9>H;FruFcN^cy8*}E%!xcNKXVOp4fBNUI zelO?BALwC&mhnLal#>*`R8^HZ1653?!Z@@pVnfa=+cS<=PVVS((L=@iAx)|Qw0&(+kSJQkzhaTo+y}pQD#II0o$Gi1` zane}QY4q?CyyH>ISA?FHr}OR1ieT?j=SchYoP;~`GHs-h9Pzp^IzT^(9uiqOaLu?? zS>QYRyw*XLc%Ohy2$ z@GW&unW<6M(SwQ|_Oi9PwDvF#F`iH9ai!}L(mP-7HFvVfV`(vEtDLhl#v!qymUk?L z5YrX!2bc%GuC5;Y+pAARvrYOvD6{Fn8^h%{P=#oEfpOMvW*4ZWwwoX;o`{YKnwdOx z3^nyw9ryN_Gu_fn1<6Q?rF!L@)2PLY*sv3bT64V44v{YSP%vu2K^J+v*6K1Bw|zjD zF7;F85%fCXHj|)wb2j4n% z(Xp(5lV_wtn!YAlQqRf$OrLMB+gZX$E9d=G>EwjUz})14Z4dgH0n%}CD~~nxB3ZCJ zJrm8E0H(Ht7-Z(d~m4-b8g0!h0PbFFaJ>+58+! zS(n2eN5C3u&!cpWTj&b*B21{zjfr@lm{wU0TWGGQQi>=UDr!l@X~1OaE7yAQZy>)$ z^iOG39`;#9941?aP)(dAzM!1=Tw6~fKW(*4&se*rnrL+%L*B0Zze8pLQv`9W+6O+r zUG4JhpBuF@X7OGnI=q>uQ66#)eG|DXg}u9|UKNPf@DQ5skte>qwPW~4QI6siE)x55 z_qG_p8N=UCHpeD`Qph+p_RdXBem1w}q|~@5T6&)Cc-#;VfA*~OrlW01HPvGrWQM%{ zd((&z96z;L{Xa(<1XyS-zw*gW|7n&iKTLkQ-W8!lZpEcPCtth<5V(oyv~wqxk8eX0 zKyQ%sfOt!Li+F2(SJu|VpIg)hYls%%)=Wa>sQ+BHHn$dt_>TJLy5xZQqDkw|b=m=H zJ_<*3kahE)R?18AU!Sx+UU7~eE*=xLbYWE*+VyMlN?QZChs#lgw{Je!DXHIHxF7Zq zTbo^C_R}e$zx&%}jF6<8a(xGif5WN&496S^M$+>x*e8VCPj-`H&W~M{F@olr2d3={ zkJSw_zv}L=O5to}=kTlWm2ftCs;b=MOJTU!^W(E#fA%pT_nSuVaiOJ@Cx*=hlY88F- zMoT>>sN+1{JTk{%<#e9DYxm`40lGj;y&-SctB4CyK`}DnFBcmUR})2AV3Mr|f^~0? zE=*gdpXkORiB=DJQ6-LT$^K7g{-6Y+Zn%LvB`eOjTS;T$4ZLL9*S-%c`@Cc`*u@sw z=q}(-;h8mg-Uz3~vc^1!X5deWZ^`S@!13Qoc3a z@j2?oTjMCRvEP72(wASpt$*K4H(0AT>TnLntm1iT(ABHZaMV^rFaxW)Z3Bub>{RaZ zD}v5wAsx2;%S|xp42@;G8VX1AZyEP{hILcCNLP<46NnGH5$?LLEnb8VbK0A^+&Z92 zRfZUG2hpS#H_f=0o1a~zQ*^@Nu@kW`hft|C;Xh7`rK)JHK_?V?` zYwYA{VF)1A5XI`Ug=Pt>Vq$*o+sY%nzpKSx`t{)EH~4+C=SyS=Yp?UVA9AOZL0PyS zX*QAgX^+e=>!!dX62Xf@^>U_CQSl;6{HyUS7c z;B#g^wl!++yCC>s=y`+wMi}v5Y;C25?+bM#<}>?&`1FFYa~dztF;jC$hGaS=vXwHeO@w4ZZU*AE+615 zJT38BGLzNLgPVy4=lW23il=#gz{cIuKk6Y#?!yEfyFIJ5eY*H!phNNUm1yhc45s3o z5r5&@kLCMT;+ranO0xgMp78?Ti4vN=`}YGbleYw*Twc2&)$PzmMWTXG%LdHTUlOEB zy#YqwI**rc1k_)AmK-h@9Bu<*I-@lB8b;##=3oW-8^g7dp)Y|8_u;Rv(hn}aO6vWz z&>I+ryOh-%?I0UaGIs0zo0zcBu-~;9?qI^-N^{xTa}UeabERm2l$^=;U1CTr|Vx5 zHGsk<2jYLw>F1cZ?BKS>sY?WZMHc;KX=pQD+>OW1V)$c}|ED`dPUMavnk_2meZDqu z40adu8k_H+=K2F)u|E|jWek-um5fbgt4W*$$289x0I)X0t{E@y@nWh4d)SR#WdMh# z>HeA9<_8J!15WJa0!+OD`iYH&F^~k(aOIQYcrXy3H*D9Wi>w6vj`%niNLI6oh~6?S zhIW@ww1+M97vH)RTaPi+SZ#lfFjd_CEI60s&9s|HaN_gf#LGIR4WOHmWHyd8wJ5CYt>rh0 zTABfDLfatXG!%0>9l9=V=UQ#nuZscf+P;vReP|X1R2&&ZFh!rdpBtg$=>Wg^hhoAF zm6p1k+!xdKd%k?Z{JaE$YW8>g5MP_8?a68q+c-z$k~Sv11;g)`v2;^$0-A5Qq#Y9G zk22#~k4js^`@J!mQcWRtTK1Ap6nMUGG590ZlhFQOk%MAulKUD4cwUzqj<#x zI7%*aPioZP=?(l0%>-8U-=RfRngY|E>RcC-T4oDixPI!l?}aP14G_I zdTXkY8b(b8#3=3a4qTs^($cV=TvSDsWb)AqAtf%t2 z0hbh}cOPO-vFp7hlt?ssma2Y!Rc3D`?#uuY)gZdnU^;Y_RJ|0jAnAvqbJnyWdU0q< zL!=r8VLDjm?^w(z(W+HD}($Tp0}=#Amq@U+lBwoI||AHPEr*Spc1QY7%L#wYXJAL9Dy4=gNZrA4sF@ z7gaBiv|FlO;2oLd1eHCMlunqcvyimX1hBJ(eQgC|lBh-p-0BpY*NEOl#cKsc?de^w z>?|m$aoi_@B*L8|DYDz0RYg5s3T3LJ?n!IS0edCzE$wQ$M}*C!IvCoYYbjib``{aO z#3;tPOv)W$uJ~#qm}?sxarnNTg}w=Otg9A>L38=%Z5TnRH(QSe@xhrqD83dBcJf?6A>_nR&cWA4C$B?=sU ztP;g`#lJyC*}uBPA93$DEHP&^in>RC)0YlWf%wLSMRuuep^BP4DK_*p9 z7VYf$)e*C4i$XsHewymC>&CU&S=w#;+->R~{=yI^lf06bBO7PE{}bm9GgsVgF<2n+ zoeq>b%2M^hJr$eyr+ zpW#PJbSp9PEkoNLyQO0X@-4su@2Q2+!!IV&|Klw#+gPS``v!Sqn_*0~0XiL+wEA|h zj7HT8b?r5hYfue@)4pKxm@aV7G1ii+gQYK^s_F{LCo$z@z9XQC#~sknf|PQaov(h! z=$JZeyEoRY;wie3UJGPM+Wtc9*smOeLtAmy?KeSjcM2cg7_&+2cW?UDI^b4G1BL^9 zX^H;hPNb!0hdy>V+1&Tj#`Y^&RT4kL+{(T5Y!xp=P@Mbc`YvNim?E)So_jqO`_J>7 z;KRbDRJ>q8RJH48Juze5&ndxzMbI(EPo{(ntI13u%Ij)!jH?}cQqOz6w zt_Px)RQCwf#J8FcXvcLskv(SY}hk>)g-AhUZIEbMm2`&#{{y5j?2M6fFb0oGUgq z9Y5$_9%Jdxct)FV9QzB`Ds@ z$KSI6j1U%8t`)8(^g%Slf1~yO#9}9$K^So+_77hmf9Ydn7!VZCW$plOIR%?+nl`V`pb7h+Iz}mf&x!c(UmoE&$@_j!o+HF zOcHlfMMI~pgutyOWih}!(_pfbT|e?F(5WKycvnlwmE(9oeAb>}-#q`g(9gY~ldos_ zryBL~0EFeZtLTBh*PCMAbM0!ro>Ajp0@7#3S-ks=5|C!dwJCL}h>x-mq4rV>tTwu4 zZDYx)l;!+su$T%a7jKWgYmql5Wn?b?}^WYUn>$Jn! zGpisiv&%HjEpm{emtJcU{qFm)Led7gefxJy3|1q1O6yb5R+wxYy(`rK-@;gY7tD1z z%)B>K7+2g(*l)8K0D6A~gpGnRl8ZF%hZq%3!?8$uWv~nJbm~vyTG2g6HKOU%!I+nI zz9d9p$6xnfDZ}|d(Lc7Aab$9@8HN)+o+~ULX-_|YD*m>!3`JXeGdccVuyQluyTY#f zHRd>;C!|$M(e*+ukjZ;|;9CkM7p=@p)swxnm`MQz!|)-<>W1e;nO!ha!bSelBam60 zIDu|Prja1mN{RWtP6=8rv!(@{#@!6IE|+P9e|F#%j{#TB75j8)t;bP#)i#y(@8 zx{)Pz$K(_Ur*==Vlx)7r1wn@QrMgiq%SwhE=JzSZ(!vBYBvddyzsMq`{r}_;yq0uF+FFO}v50oWt8tyAWY29DT3jY}pg%Il zX{_yzBn&VjZK?aI#y&Eg%`SYUmb0fFyKRae&`+|}4%sd@PaqaU}NomwlZMuT5paYbmr=NGLH*)6qKG;{C&2t3|J0yF5NMRwt- z{shJzb4sYcqT%p-(sLBQK+Y%yL(;|C{e#?+SA!%Ss&`@yhaP_o&2>n{h!)upEQB4K z47eiA9mVS4s3k^?xVAaj+lzVrv-}lZ9qoBd8|&9sK;m+!LSyZ@Nj7cZ6ToJ?@1kdE z{d#y>;4#_10Bh1t#u?@RNg3c8k?Z;HLDn||`;*{J;qy-pSXq0AeBuBZo5XsqUsP0f zmYx`-N#+Lr1=6)9ZBoga^yl(eBZ+$oZRM{C*y$o4y9_@VANG8zy0q$DK%v_tgos~a z=u}8N+|x>p3K%!{c1~=5biy~vSZC{Tr@DlX-NI_`n{Zzg={!1y6Z&i3&L27;|9+AX zW%a?iH=dkOggpdui3&l`r0G?OBFa}x9ui9-HxK8*+E*n&yoxp95!1uH{NyFRW)#)V zAanUi*XGy$=Ps1OJzpDl{7-373<$MKND88m&<8%mt(5I3E$59DeS9a+l)sF#XK)+d zaEOB4E1mkYyJYCoZ1JP+tE$dPxzM%m1}*KPrFF;N!A+v{BE?Wl6?aSv;| zK-k4#rE@!NB602Bpk}0J$gJ=3SKBqxJ*17-YQg0&t>mo-yiv&C+Hbq%eg!`4Ow8#w zrfs+WSJLgh=<`X=v)Nn7g~A`My`#Q_W#yI^q+ZRBYhLOPHg-By2O2CtE;OcS4wT9P!7w(xnCxEQ7%S0>xj1EURB z_m`t}`seSpOj!m~yFbO$+YEGfw>a6SpC9MBaxBQ|JECY#2E}lsI0-uRrij~OS+3Px zG$3u%bj#7#XZmAKN77y_2<3I5#HE22Ey6tppiIpfE`ZI>rLz z9A&Xp6!OOBY4hd-%`}s4R+KgUPtOJMtJ@L6%Sa{0cfL#%wQKxIL5=%7{3dCQw#K%= zrAp)s3}(`gqYu32?YE9+V_Ga3@>1?zrn(~Sb0WB>J9A;SJk;3jAy^pyv89t{Lm=5W z`L^oLMTsz7+FAjQfSY?WRa?%D&lznN)RmSN%h^&_3b8@Te2mgehY^ItjGM*?{cQWr z*fR@a;#gw5O7d-7Di=SV^P+CN9NvzI7_UM~BBulYoYQkt3j-T0(GgvY7$K(uHH9#_ z@+pM5g1uC?I=*v(xrf9}Cj_pcO#8V$7W9~cfUK031w{h1{J&h)(4Mgx+>ig3l`MtC0XJ}b#}Fz2qe^EHUK z5}!$DChVLt$E6w-&Y1dC6maG?w05ZaWNw*Z7LY9$q}$i6JiC~3hL`b9G(`=T%47E8FA7qRFCBk=h_yjo25VmnMV6_Lg(vhTC@yuk9^bKkq(jH z%h?*?)&%QDayYs2t(e`Nt^+4)N?B*}=Q-kWq&)ja1)nMiw%pTn307I0rE2y73jT(r z$a7~-#n_F(l}K|ed_`p$8YkvaCrMGq7|R<3^-8V;K$4cy?a@Q!^3D+st`w!dAKYM; zi3&<0wKVg2rPD8`*P}F%1am@WT^m#4A%zkv-AosdNyoaw68G z8t?w=);=7Kn84vbJE?1143^S^Lk|wRq1dN0b*3!l?T@qS43%jyv(w}NTTXFK=j1R$CQ3~YcjbnP23 z)CEGI>L|?R0*5`H?F>FHc-(R1!eeZ2u;?8bAE8JHK>yBfa0#zmte?>qh11|`FV$~izEP&p_D`6oH6-a>F(8z>3qiCuM1RixYUU8I_vs8W zk?Kx-^76Inid4q_D#B3kx4^s*;Qgh?m%+U0a`jM5n_z&y=Ip43z1r14r$;Dx?nS8f zq>m$Z_XaN4r!_$DS_`lP`UN|7N^n0nAfVDNeK4#&yPCv(M-G53r`XV|V-p3^Y5@%| zVBs8jw5V-6+HY;teN$78o@D{zHLvjM_HM6CK=p%Ct*MHZMjsc?HVad)o9%<^uN95d ziLOfPN;Z2iR(Vlg={ueQx$c?;Hx`yPmEZ;l0ypCo9Oi`cb(9jZr8g60rY|;!jrBxS zJBZvcvkf!6iRAk9jNkW^d(bMN@NkE&YAQ^eE>PfB46E^L;u2|EZ&uvmPr7%{55If; zV6PjL83#T8<{+vj%;}wa)|=UILrq~;@_y{W0#dJWq<@)Qf+$Cs4_^X}iiA|ybgt6~ z=(^ZNGh&1nJ9XY!)JdK5w47kM>vUfHK1^7sT$4mdCZd-yw#vsp}cHChcrYn>ei zml&7$w4RCiLKZ)Y6}msH=`BTmWoA@)vTG6MsLJe=y6&oIxmwH)}5Kq-3jbU}RJfSus7uw`30FUvoj7C&&R}f}6SetOPc| zQ^?yegU(#`bF*4lIlyWyuBn!Yap)iFa{hw4I~NvQDb)lue*P?9ZtDZ+cTHP!7xmPN zg5g@@+utiV`4QtRixruNtD*;9n~8Hfg>?*w{i78@47Jh{2Sx6cGUZuS-TVvV=bzM8 zL1v}{-Qg4ai~IcSh&sXhc3;sSf!(Z{Ux?Cx2IX6tpp;nK5p#8r8vl9oGVn7uqsTmI ziyGxvUm7K_wdTYZ_cPvB$UI zd|pm^?k^G0u4V!`nDCk;|LkDd9~_?E*54qEka-LJk;wIgpmhNRyDrh=SYK}H7WCGq z>~?(Zc1sGA{&WdmD}3}C?)s$ndYMDkewzL8>_JRI^2|CDXMYu_{Dddb%kG0ZaA_%B zOVSQ%cZ=43!W5=0&3AtB#?;>k;cgFrTzRLBn4Vak5_Z(Lq#~vfDEw20Vf*59)Gk3O zeWS2bTiyST>hU6lP_4Ilh1daaarHiVa9S>S=Ttkxwk=6oJCMS)PsgIvo0si2%7~T2 zDDM%5b2f-`f$cO)6m&Xx`weSek1+}s!1tk}M;TPu5!~Z(hO_<3!V%frHF+!yIVkbC z2$a~_;_F+oHYVmq)FvMywFT1)NEZ7iph7u9;%`iGW+>x5SYBI-L8x1by7n20PG9Y* zPL^3D^r%a4#eX3UM8k|E7AP_{H4OaVO;;DeJRzl=Pk%;>?yNf#b8+oyq|l&-5PToZ zgl^x_Jw?RadN8~7@VEC_fL+=4=FY-Ts2bW=Kle5wHWXZXs2UERpRC+i{oOY(`(A|C zF~KiNpP>6ot)rR`qt@?-5>rb1-N@H5a+F=9^Ngf+ooObT(VrbZC}c7>0j3h{1Cffc zu#d$;PsQXDnA3^-2`^CGF&L;o0cRl-qtgoPng8bphOrfvNeHJOB2)*Jnq(`1%YJ03 z(!s+AK^M_L?9uMvRuFp2O(xgLXmPy;{SeoMJLIl*mzLw|^26y%gu*S=qsTCsD-8od z?O3qi&|*~KhX!FIf4Nu7cX1&u0hIBP46fXlra|twmkQq{4AMSmDk^oH$=k}uA%OL` z_kSe;!*4gb#IXH`58&7jizn#ewpihn@(%1LZY7pz?d>Z`jhNkwhZQg9bf`y%I8HJR zk3qf=r3$S%)?XCP^SoZ~XDzj+Iob8+L&PU$vDAx6yKrtYF)XGVse<2eZlt~#a)9tuh5mWJ zcS{o`K22IC7#Vhqs@AYgKGqmGCl7YSzw<-mHzU|YAkNm7ZjT zJkOuhH9>9#ZUmn;5Zf_-YNv>CvW&1S-KMPvr~Vwl@JP_2O5e3-Vo*u3VRz&?inKD> ztSt?4swew{cbun5pH@jYoXePWSZ6;Q;%KExGDF8_*02rcq{F`KaJg=^;2HIrswa{) z<&TLvajtVTTiQp;(_|v*qk2Sut-syKnC5pW6V>m#9p-kxa;4VXK}bWDQFU||hf1jC z{d~g7l~5jEX8F^Df%o1b6uKSn_Yv2DMByb?A~{(&0$Rr0hzjF>1LvU)_fj?s^YRA< zfZt#Ju8`@OrE6i{NEkshdl5A(-oC*a%f(|Z=O!3mlavb#Irqli= zA=(UhID3yR6%Hk!L0081jk*?LO9B{(B}@tK>(w8>G9NO^{045x|9%_}rn(aUnYk|A z=sLWSHnuF5O%uT6C8KN$TQuI3N$yq7M?F&3SLTD!v81)1)x~W;(yo)TUg4xhcjsk1 zSk;v1NrUa(!Dh0M|1h&JXUk=2*0+FBr8^4LYga z@hdiXj6CmMqAR)=ziq2{y19AUEVHsutL5gF#8yI~Pe1tiE>maYXRX#JWdE{e!2W&BDY*tsr;lZaN*;#yLvB~bd@+ELk-eV&fB zTE&|iXUQwa>oUY~N+{JquU3)wwX^t^?v$+e97b2;Zkx-#u6cFy0^(2rec4|7Y{2xj z#i&lxB8ntlqw;Hu?@+`#z8W2UN!!Jte@E&}Pxmw?> zCISyRJdLa}%5QCUTrgcT{yY{+#wc)(t5uXYP@S3ev{sgfk+VFzaw!yX35G3)3U|R? z4^1~8EC{fj$&rc+y;oLz2c1GbcKtnjE}H1~o|Xx_ZM_ut*(BSQ@=drO(X`z0S{F$`a7l3Jc!NM&#Mm0?Hv* ziB;4K`5s;8rL@rIy$;sml$Qc4wJ!ND_M8=x_6q`qO=1c;C8B`>p4#vKg5tx3e=dwt z{|}f`e=F+W@A#ceIZqfMeiNs7F!(2;5iwUvLP9V_a>%`Zh&&*gSXmj_IPv)+=@Nc} zeqTtdOvwVMc@Vy1qH9fL3?#DATb$%RSM)3T=6bBD-?-s;Nh@65aAn#8;qzBcwSX1~ z-SBU?J-gD~ZN1FxXbSS=@_%b$!JV+pz1k&s5AZi^NArN zmde`?^jPU@cs4kxTOZAbkrTGkJo_vDwtVp{Qg9*~(pF7~Z}?)!qzW9OcrADLoY)tH zD|rd7(Fy-9g8Gqx7>Psuflwq`BIJVMr6OQ<+Y>2cs@xD2g?O(tw_Bh-DzE-yPp0LqfdYW@46<(!>8OW6u&#v&Wi?;{^lF` z{_Li5`9#h%=|MA)&9A2s(yroy&jPRe_Wl_i`0D0%D|}U1#Cke5u%gzLF~CqRFf;dt zW%-BoO-H+aU+8}7$!%CxVd~gahFTw#qQF;M#$i}^;B?({2mIWS1xKTyu=VC#&tSMW zY3q!94}s{A;0OLub>3)=N{gvqiCkEFvE!R+<+%Q3tLN?hTy=AW2zNPMtM0m_fExXx zP5Y;73OB7&!C~@^pbLZsM2sF?E)olBwcsYmd65@829{mHXrpOY-D9) zH(nVe?E*cJo*n&!y4djIzuzv?&dePCzJ(G2V(gH;j^;T17f?$2jUADN1Z>cc$|pik zvHEW_I!gN3*#OKqdtl&%z?Pu0<>|TQ0WDzuBejvC@3iPdX8-enfyNdOud+jkD~MbJ z*LFKSPjCULnlfN!B=qBgKwxt#fbFw4H?NnKI{2ye;a|TGVOuNGBI18$V~KCMmR}vg0RKXN^r`j+iAd`4^Ju#O}xm0vr1?3FIag0BZn_+A?~TGL!UFF-i5}R>;C#6X+<_ zn%i~8iKNaZJ$9x3c+T;);rq&hfZ?FMwRJ17Qk`(Ht2jf{zP;ounP`uh1+s!Vum;I` zo(iR4c8uC;RI9ogB&jo7*clTqQx)M84o>#4^^$`0Wp?f((Y-ds$Ru%slYU%m6aEIS z#;tP<7Qy;3)s}^pbF_B-pw=##xauIk_B?s4$2=^ivXWXaV4gohDy8a78WF;zjJzQ$ zF*A#K7MB#R`MAnV-oRBUcHkllJ4tywg>y)38ppA`PrWoiSUE}P_vmXG*eUODCLx`h zfHvlu-z2vyo8a!ijMCwDSsvl-3XXjq+%NtVGT?|7tFxKXLN@J=FN4^^-KkJ2llJiW zszt;u{(6*dNT?Y=>BtP?LHd%#W)(=K0TMijo2yq=%g>mVK(_!$2m^0vbcXewA7m+! zq=eM#Qifa&+{6Z^5FtOih5ef>aSK~29d(Oi3uSnM^zF^C(*|v03W9-)t1Z$rn=L2AlWsy**Qk-WP~D-tw3Y`vDo{i35@@bH4TWKrAq(CZ zs2Cvk%V+} z>s6eDf7i|N!G_*z&0Ps_Xx>PHu-`42Odef}usv8&l<=f5MOgpl9KSc0U8`dg^wUxm zB86^`m-mVMwFmjDyF#SVea7NY#5&Z3gOy^~9%%KGw4jce0)YUPf5K+T0^CPq-z8;@4;58vc@{*+SRIfNAgfvBbuMpc&8y|AlCQENwd9DTM^Y|4~% zQcmV?n7&AY9%1XnSou15gTCn5Ud`7_`Y3u)6Yv7JLY9Tk0De->I&>$)mP7m@CD;D9 zOeMq5@*?iQ(eHlmTQ-73YlA*7FxoUVs$=T?3e2eDjtOk+m`a4$^|DR2p0lFPQ8wJ$ zW9IQrqTFGPb#10AZGq~2Gwihq_0cxxq49om^_x=FH1#11N-QK42a_zeTUI;#tSdpc zkY2Oz3){Zcoz*XXqtL_$=BB!uHFK14>+a0W=0L4F2?Z&vH#WU2z%dudjl~J*xa|`` z%Yilxt1x57e?6d`{E#hph*PKIVI0#qf+rv=ue?%wGM46pbT|nDEHcLG-d_SsSi>oU z)s1w!D_=CZ@rSIc+f7G{eU)k>m$=}dm%VY{VKF;gdqJ>W^o~E)rq+8tTzufLlVZFurW-r%0=+?mV5k2P@u&X-H_0K%>`K$s* zyPNl-=5JcIQ}mU~hgwvf_oRX}c6|i_M=?X+G>+A0zNRUxEcusdhqWj-WU|mGI=cW$ zK()Uv>^c{tu-cM0q3Vwva1aBWi2vxd1-9s8)&xXZMA7JijFF5$7fdgitQ@3>UhJl4y+$)FfJeORSCFDmJAn=t0^bNswP$_6@6q zL}YlzvEPi#alCfi{LJe?m*nq+%)9XZ<-dL}f}Om_Hr;<%PRf^Ti$48rz>^mgMIld( z`Q*fn@nF#}0FRHP!2?_L|DJ4WIr0i^=7Mf7 zJQ1tZaptXUt=8c3E^t|mlu|@ykwuu*Es0v0WbTgD)vs%a@;+DrxLjm^_{+-$!D=Rc zeI}r)H28x17||tA&zAo$SJUkwv-U=?y=1P@uW+=oSZ@nO6nE8Pjnb1TYTj0S2qQ;! zVOK%gL$-0f@hly(W!%Rj`)2;XIJxi0=4(3RfzboXx8M5to^pl-BSFPhXnU;Q5KnRq zFow2;NYs&gb3`VQk2{_fd1n<`wFu_C_zy6e`aU6}|E~*~ng}v-bjXxZCATNM@ZXZa z$2bF-$h(@bk7fQSzBz?%AABE;$Kn!;k!w)EwIJrHtT*-e8pH_As!q+DW>>Q%|L+19 zcQk~de?k#$ZJNq zW`A|r1zWPfab7QY{;@sKw}n`idsiAKLgU**wXW1Q=Ls@PsBT$>{^R@=hs~pxaD&po zU4gAHzja1-g{l{H5iG5$cl5O94-XU+{0j-fK zxTGKKRbAF8D$lL{w1?Y(KPC`#zHnH{c1H*;q~y4mvwbP1tg#!_uddWC6K7sao9T5v z2)a{e;Gh_}y0ruO`XF5XSjGbsTi%7HfJNJ|(`>nFDu1`@2+Xi=+tTpt%O^A3aXR>4 z7d}>atS@df82gVldDx6&wJ?4oT)5OTWH<{He)}Kw*Y18x`&>_QbN=(=!qxDz)Bi@WbT zRRR=5W$uhyX(678Rk$Z3r^pqrnz&kJtwAlmS`#W-IVt;`LaIcDmCE!D4sU^x;UJ%a zyP%xB_3$7gO7KD^LnStHiu4W+`ZWzxQ(@0HhNcWgt9ta2v0)jNztZ{DXLS?#RO8+Y z+Ews31VHkAOCE7?}?NSKK0FV;pzjPy1YfoD!2iiKsHikmC zo3Lo=Yz1M=XWN1}Mt*aqAaX!_P#XgCi>QeiXgFsTNM|0s@O4 z@9G7E&)8&slj~sl`O&Zvd}LI6bHddw@KEh?0*)nq2G;zp z-ZMA>ps)B?n z`sGOIuH(t>Rmky!WBdEgSM7EM*0FSvr=5fpgyHd7c(x}xFDmq+$TKk+qm)|ugG~(g zLMLAGWHQ$y_omUBGz#X|>Ef6Pylx0c<)j*#)W3RJb43=5TPKfTPw9Am@#g4!tXW*E zy)^@=EqLv)xBMU0zA_-LE=fBOBtY;$AUFx`!9BP`aEIUy0fJj_3+~zkg1ft0(8k?e z8keTg5Ax3Bo!Qy_W@cx9(A+*P_uM)qPu;HP)RJ`gCDT4~FKKu$brGo#&A3HyWnxPg zMPFkg$04jMn`w#$N5IO)19eMOCELkO#mBV{HVum}U#Ze>vwZq)D2Ckm$H1FY+1`m0r>qn=2H@{fW94?iBE^m5g^VWzHDMq{QPltFZ39N-}2 zg1whHGLv*S@g-L#z?L`O^|sdfmYVc>P1C{L)mZzx+IFtvooe+DoSvk`Dn`FIR^uLv zrn;Jo0h29V0A=rfV66Ga6luF%R@;MQ+PzF;iDn@-?Q*jgh3Wtg$Enkg4+`q? zHw}!R3atQL+u%?=mg39FhRb5I6l&Fs(<60IVZ=5|fzes$yjfRQazdo8#?2;f-hxSM zRUULp{fykQmQp)=!p&~V0OD28E-1?eU#<1F#TI;8Z|iinFd>s`kTev&Ib*F*<-+uG z!Gx3Q5v;6bk4lCYJ9@|6yJfr6G)(-k!KktN&bu__2c++|VdK0y9GqW2VpP9@{er)y zFV5hPBN5J#NhAQr$6wsk`-W^&PC<2k-TrN?7w0oaDN3SP*9-*YUAczuRLCRODAR;{ zLT|={(k-@r0^IY@??SRa6tt-A!LbstmY&3>4~+NN@??Y0i5)joB6Koqc=1Z2_g-OC z@4ze*`fs|D1$~m-cYG%mv!_s2B;xS7mXcPEU~Fd0yhDG!61%^*PKnLV1GQ;Z729&^ z-Y;o4eIs`x+<449=!e{{#koy}WB4pjuuogXzBZuWDf!}!K8a2%f!e5G6_!;yOMXL8 zwzg=ic(weNchN`kQA5ImjT!R6uH1}R_wwRg#)h&o^$*mFPh-YQ=h^eCQ2VNdL zPjZs9kxxOhU>CiC0YirAu9v>|G~E(DcO@0>UP(^C*E~>Q)8a<7C{@_*L14 zxEoD83oq_9?1D#{GrK4|IX_|@7{=|ji|qu){M^xtx+5R=!}b&bwe_K8q^b4v2R9+? zL;1AOc{0@7mY>f&(KI7SkSz2Sv@c<6YmREq^48~gk-JI_oRg}z2uAIT6bVU#9!ghN z!TQC6p_vV++f01urS>}2=Af&2cOm$BMP>%}}RUmMSSc{+=D!@MBl(O+NH}=72EAA8wzwPF_~z zLhju9_gMsq913ME*|LQu=r|G>_Tq1N-*`lDI*o~GUniOKDLD@0?h;l**5zU=HTjyh zHbs=n-7{{s%3Fw=H`ggHT@;kS&&T4a_A)(zHdZE&pE~7-g~-p+5l!>9=6b|!F4k{? z=>SggJE`CY^Yi%S+SIAhomA|zi0_n6d<1Vg4n=l`Vkgp6zgZi0Q|i}#R-eF17>}pe z`|=RB;c)blm%Yy!MZT9+d%}tzP&(|XO}I3o>A8IBLLsugEKEh+_>)(ZgN+{VV8f~5eE!c$SizcJ=&8x)o zvs}w!Lncf0PXYfV2$>NVcjbK3GPKEqS zU_ZfLM4qfEXv%sA8eC&1OVZ6kEaYL>vx!SKLBm<^d`;%4%+b#0ooQj{_+T<2_CxCe zarXJC*aGicyoNX?SDVP$+@IW{RhyLjkh^mkWu%yx7!`O(z zuYbeR>`?d zB<_Zlfs@>7U?^~Tbaia%AkVe%=pVRPMP5_xYr$yGo-F@ND?QXyu?yUv=(^Eg{^-ko zUZrnbofP1(w5_c8fcbE@rTgAvp2k__F6DJU+IBtZu)Rp?b_fR$%Ql^6jYqZ1r6lM~ z3;o}C;l2&R{`8{*JkJO3$Uk>VWuSV|`SDeNoKrMemrsyE@!N8R{pS>ivzr{J$!L=3 z$S?E{IPcnW?0o%~Lq10?KM$Gj-`qB|R7#KQuT*eRp$1BBs^|02#F=ED7X8;j?vmln z?R&9XdO&&Go7YMlvjvFzaIE38cf(s2mSsW~+?S4%a}F_!STY?JX4{`%(Wf(YPAnY& z=?_{^R+r2z4^sKE{A%y)-RL?SS_{_!P06=@K-rf=GhW^LdVnPTF@lIwv$T0u>0L;e z-20_r$xJW$f0)F7nc3d{=FyWFUb+VmlKF>mXV9^uCRM`DPLPGGK zHjIZzzsL@P>k>JT<}dr+WV%{QifHzRA;!3+EL)e$b zJk?4$@B)QScJ>YhFNJ@`-Rvw(T`#m*yRd?rz<9N~%$_5MKE1qcq2$tp#tmptS3AY` zz2+u#8p(OSwQ8EQ=%$hDzPqu{<_gp`^6gHQ7W*=ZihS{e7BE$>-5Hy{eD!X9z3AQb zcE_)&6cQyorQ^?@xl$Ry*Zk8RF+2GOwZJ;d1iAkw?M!rkZQF~eMaKyIbAQ_AAH*+( zh?J1ZN2vK=PI7Ii)J zC5d|GPVhUKr1fz2FN4%A?;vEg(*n_> zg0Uo1V{Qm)*u30_rYS)e!zxIcG6!k?_QunnrL~*%z3YoFO{Onfa*t;v@j)8A)67r0 zW{-XNq-#UDeY#g0f7P|%M_n6@wK-C349NHJT#xxyS~)hx|N38&36}gH8>GT@f5!d2 z_xO@EK@sr_;YWp_bB%EElL#`^#uhXbSE@Qmb4yjxHhCYF=dH5E>6ziX5VZn)fiea~ z4i1w7_RZw|CkFW!Eze@zG()KpfNNSfvkc@RkkT z)8gXq>&yO}O5tey9|q~x(oe7VdoQGj@UUlo-p>MfQw)2(Tio{5+OMM?2V?f{S^kvcr(lATpSCs1gi~aQsnItCY;0at5JXLUP<7d&i=8S9 z!jmL%8lAgeDmKoiY0oyQtX5*p%vZZF0avUZ7KYW;oSdp}L!DxlkNbjKaIZ_%XhE2Y z(sNn#%SDQf*ZD3_nif$xHu5iO+CLq1XW)7EOA=nvkl{ZqlKs&l^&Ty<(At1r4}(-A zK@<%agUqU7n?6?=z#J?-@gdZcrx*T9q|G~LW}nVns4R=sCrSLzXPULOrRN3nuQ@^d zVA(j{idhx%6w$Lj%ga~f>zhSY z=Rp5|M<`zHPpulDP)ObQ(*KN=hYDyg9h5Ht8UBM9N+CN9FMWQZ-F(LbFW5EgSq%R8 z0SBG`B#0oJCKqL&PB4`3S%?4j51aqZdi00K*ss<<$ny?}4VDQ8zk=7y_Dp-*$yc{L zJAv(gpr&udEv1<~199^M_uS*pP7(>JYBROt^o@gVJ(pkNHEz`|W43ykZ+DdvIk9HO ztHuC=d@!{`d@!v%9zvA;4IZ?xabRhy)nO*%9y&R9X6^~Q_jL}cP0s9);LO&=Urwm- zXCmsKEek!kdc4tKvWRal$?@BHeZt~`!@&GOac>NYUMw2h29$nX%O%EC7z^B}l*#6u zE?oV1Iuy$()l(D(0lQ79-}BX4-{lq_R--PqtW7W7Zz~(PP!A}or}v*K#phP=#BJu& z${GFJLj|$RPaTP%U|1A=nE%{v9pzVVua`v2hJ*syK~qL(!U4h}Pi?ErCY^f)sLeCt zT*8TV(45{~vHJK*<3%pA)ALd&X8of!di~+Wj%gp`B?=w2)@?zBgYTQ|4bN#{^^AT* z^&&|#1vM!3rjQ^BNtKpS4Dx<{@y2kuxTjq=<^F8!lHsnt>f)?K;C^d-gW+_eYexDp zP`;uE)${1bCmJ*2YeVW}58mWn-3PGa>Y9-KtHJW`2WcLDxhr_|Qm5L#0knU}0N}{m z3=xycKQA7%za@sRSL^^p;rbynx>?fk|F=T;pJ#Ggm-2+~ zujzH=Gux3_>01icT_do!L7tuM+Yx-a*Y4|VGu;--j=6g1x=8%J2G+aZu;M)(I5Z({ z>1)l^_XyR?x(zzSSNGMe*tWb2lSnpvGWVp06g|d!t@`<&e@Zj$MyNup9}&Ln;#o@i zQ@{-WyMXz3b0d}eh3n;@>n?vIO4-E?;upRGID`pHnPML>476y-$%S9uqq8r}uGgJb zVnyK;Nqq^R_%35L+eD17(YDiIS4z_%@Sg{fzYKyJI9@MTeWNee@7^{v z{fB_b2j)*cI>ki-eS9lqR5)0Qw80?)=Ek>daUY(ZnOUcsa-_?0qqt9olOg)?Owo zbNwVhxc|0741jt`kMxM{z5Z3(F(fT zdKA#!=@3_SAs`vd-qPpHNrU{~#mc{(+O_$w{xDDocgY~ke@t<12=xgc0o9xeoZu%l zwW{4GF)SKm{1QX@pJHf*{#Ih~D2DIZ@ zT5BP1{ELxjEuGRAuw*(oD=j#B=ye|T=+Mzb^>TvCy#_d&xy2uSQ77b zYJQ5z$2rRW8+W-a46yG{lz5siJ>jl{B9=dJ*R?(b?-#shn2(G7y{`Zv0Up#-qa3%t zHp=-L9qM4d=rVOo^wfgF?f<9+1@KqGjWFsTI`(JlGcHL1w4h8zca0BjiDZv?CNTRk zR*Fb49Mo@~PdJdHBjD}y@${lT!h4KIc&{hJE@#r4zlxIpb$iVI;jL$a&CI6= zZo7$^{>}!$U<ryp6GpC!%Aw`DO$~ca> zYS-l_m_PRj^TAFIw}Ib(C6vG7QDX#Z;V-ih0%*8!*o#%$@#9bEUTxxoD(m)DB+7{lOsVK+aXiL`Vr_R> zg@106{o#f7C-o2LhnvjtGiyE=6q<3K+F2b;4a?u#;o#lqELCyS2>b6iD+~F1=(U)- zVY=9Y=uK`s4l85}nJn#SQj~ovu=eClE1w&{8DrW;0wK3X;(D zs@iOHu$;EpOJ6>Iy2bP5U&Q&~!(TafM!ovWe?U(FHr`$yA4&9LDUzUSYY84d0twf6Ikit=%#!%)1yzqY3*N~q zh`WHJxdTpW{^)3D({XrhGTc^Nb&yfygk^ro!{!lavFW7TZ2KPodhPZ0d$pTEPj|lz z54%dA@r>P2`Nj6w*wL0AZ;o zzSA4-2V;1xK6AvuU!CQ97cPG$55~xbjx_^9`=ag~W%2i78_}=@;Z*5C5k=5?>IhLKksk&?}~&^rYRmJf6ZKIEJsINa1Eh-i05c zgPh-rfnSjL##Ly}hHg6*aL8&ml)N!Ss+^AlZ84P3V*?O9lZu^V6utd&QM~aQGN2Zt zPgkJAb`YoS7pZr!I0%SKzL|zx<5ht&mp(+`y$Ph#ZV4z@wcdT>CDhP+aS=_C zvTtRF5&6jx%2V<+)S>siLGe*q3*P!6A=kHzfy9=T6r|(~D<3ui-O+6gaC(4(P(v5% z8;77v1kvU(IzcZTa|t(Bd&isH40e-hKT=_A{Nc*FX`I}_D!_LoZc80uDgzf znbZ}$+Rl8KDJHv<)T>ofZ?|4tH!r@5qf*H@MLj!v2WC$vzqGWrRBT1%G#p;u(3Qer!BUW_eP<& zoVGk={5J4qR$eHfGF4v5;`;IY^VR$|4||Mc2WQ(|Ctn|5bzW&5tFK-{L+WP(Xij>G zrwqC|ZmVcZl3q=`g}D*N%j$U5A>X21g`3E_TRaCdD~qHg`VD?0%#9_Va~ zK~@8gLUogPt>}0p|Ai{}v+?w*+)dTb_dG2raNPH?6JDAbm(YQ+9u?;lm0;Hf9?aFj zxyxJ+I@NB|5CBYTR(6Gp@Ty$RYGg$OotNt^c(5T>n4_}$J{HBFf7b8rZui6sJYqC- zqiE}yEYkGuVws%d2Z(uH?$^CQ=mVDK1^++k=&%D;9Us2ze$VyvljYrb7p>)5Rj%L` z@)orRB?jr?0g2Z^l{B3RLAmND+6PwygGBAFrpa+ci2%g+A0vg3VNIQ(R=aGf7#J>D zEl=D7RcoCmH#HgWUQi`Qzi{(Iz6K0E0-lv}Q_!J6<^jWP3wvwhA%&(hqo>@KXQ3S5 zc1cRKPSKS*HjE~@HEajFhBcTrZ42FuhXd^43;K0`F%=ROplegL>h z7g=78L_qxm^a*oLI${nHNj20R`Qx{d^B133&+*J6GAkz>y+Xfu^#&sd@X@v4Si93{ zLgn!?{y1yTNjgzxx}XsB$+)Uquc%zoZm&J47jcGaA}@F3*B4-#5cF+PEFmhHKTi%Kuc+;lV^OT=y@3qHNkjc{;kb%&O#ESi zfBC>v3{X04NbcU=&2IvZ1zpB){U+uwQ^u5(Yr0r?KF&ORbRjaKXev(ZDYzS48E$yd zrRgpC$Jw_i_=S1>17JFVsJ02acb=+iM@NDrK>lt=<&vqNH5}9)JjKk#)F%Q_c3G#X z)~Csv)dlb4ru{u#Oq{@n{SyNwE;QWEG!rD6*IP59Ky zfDg1=ZL=e8yN~Y$+>P0hHBBjfJuPi3cVw8CpQL*>1|3-On)3e$wInrAVE!pe}CBN0r379o>G z!P3%{^rMc_>l_{uGGI$qn8MdPMw*9$|rMjbaK?; zZj|yyg8$_EJdoJVRHf)P%XG93_^;b!C25yHXZ4+NQxCK*Q zb|NOTv7U~cHVl8?bY5(0EhW{d|FNEen><)svko7A05aO|GsLM`ciD8GS6XU1%8#}2 z#QDN)MWHE|lW3DZ4^k^0K6F^sRc>*pz~U^1BAz6`+;hOec^sHdm`E+mPEDCr#Wc^7~8HsO8rH*y4I4c>$3 zCY96QAylC|u>NX!mKSx?MPGAYUDqrnK^1ZO2Tv zK0vN@E1B#DsyU(q(i#gL)3OCDF1W^K(o4#BYxm}~rd5=iHujbh*9devFB}Ql&O=^( zI8>b2T(qi-n=^?*>oZn<_HhxDBM?_{rD{o=VP#%tg$v&C@LSE6Ce(7W@xaS7p*+^* z5Qwo01ZpDL2G$*ks47*3Z@t7}0aBo|VAeseQ>@U$qbB?%Hq7;9xXYJow6u=kVZkK?`FPN-?t@5ONfY+El_nR;1k`dat<+5~91EFic&$2hJ{32)0TU!;F; zM$WmRUPt7%uk=yb!jcP28TzCfRo`GU#`4Xo`WjlHyhQz8fcqtv$_~7wdh@F^6wD0( zN+S&~!9CY#D3pU-piQYi)>#x5a$=EX;{s4`x9DqAoEKCpytvc-Nw&BeB<(+}CmR77?V@sakgJ zK#R+=4|U@p(scrLF4!@r%v`4uYe05ik(+zR!a;{q2x`TFT z>u&AqExP^>3d-TN8bSFLQ4}OP%f6o&mOSu~f0!uZ0{xD^7R$9s@nIfS=<){;ZUd+a zYv6{V<-WEEWz~D6j+;*`t5Ow2Gj?${4J<>>IYKh9*IdmC;1-7UzXuiEv%DdeG!>4( z_(GPi(NxpC@9Gec`ZF|+5_+UpVW7OP7JvL&wV2M6hgeE`&(Tgq8 zE(1Nnxl4W^VkRqneTH&*-Q^wqfjv;TPZWiS&F(r0S)ay15A}Rb@*YGMf5~jG|BYn3 z3_bNd&}{pw<BW&dZ%98sHfa^3ghGckQ_s9{k&HrdV?CGZ!#(en2U|6PprPK1ipEr=ep6 zZvPN-=lsaWzjqmB+O@$M?%d>hl;o#&CXQI;sx~?I{l#N$O!PKkb_bibLv;Bq&E3=9 zZg4gpT2jBOB*vchp|pZo-ObJ=ym=OykvIR0ZR1CNN+w$d(Hyz7M8LawI|iTik!p-S zwsXvRkFR`!qrE$o7c+{jNmxP(QXvH*5|*8~K?`2P!zd=kCR7EHnb=tQ!YJzEU{hg& zHzRb5>z+~u8*UTXcy?x#R(Ph`S>yzY1iRR?KM68&0-7>CHt4=73m}P@{H)$V%YPf2 zzJ3_S)1fW%SvCCzD%&Z~DQd4jCXk3~RR#EC5>`?ydW?l?LU+~GJ2g2|6@7&vyJ@=! zods}Tcg2Hs2xW$ivkLuv+%TOH}fIlLzXBK>53Dt0TPV@)B`xo zRyBf8*+|^ie;<8J$n}SeR_{vJGv;x3D(Rig+2t`eE%uYfgo~zVtd=NsCx4pI47tf? zg~#U(lCM1qD*V)QB&A%j?7ACr!p~jF2#@_;bxKqV9g%i{0>mDd)m*gkA-%|jYG!J^ z7daumg5Nc)@Q;c46Vk#b={03@<@x8+0_>_kI-5DlK?wp`%~6X~ay`fFK*^J~MT!GV z8a!BS*{$HXEj`S_tGIS`%_2!08a1$DIj6(SJ0v!Vgx0U*vpLgsEs^I<2k!2;&XNKe zROVvmGdZel(4O4P`_7`|cjPsgnzzen$9PC>uJRT!8HDo3mK@UphcHfJO$10T+gU7h zn$sV94g_HDiQOXk$9R_3>zmv{JpG#wzK2Pniq}WCh($or-lOqFAmO*)AIcMf#mZYc zgP59gca@LxPwz%#n(VjBP{@kD`?8EfFh!4VWFr~^v75%k1oLaR5bwa4+c;#%>N@S) zUFomfMuY~lBRCgi-AyjJ0~HQKa#^F5nLI#*<-Nl+d4{Y$Aw;Wq=MRpuOVIZd zO69tJ>Dd@=iPA>s7PDO;gh4H1OtFTIU&!so(A+kv8={qTui+gcRDsRQ82ekq&4rzr zKh2duCJf$7#e)N+2I!UR5GzbK4t&@YE0XwZ_70NoXrPA8Nuv%xY3s$==TQlSDGB`WvCY zqVHFej(ero=@Zpg+43qpGx{`)Av9CG;*+;?VJbPnI!TL)Um+|}+J$OXS&ryGS)+Qi zFpJ@#vfs%VhE5ykh3V^?lJQ1lU?Uz{Zp}zYi#iv;WyYBSj)o4YK2%(CR;M`jm49pK zCZ6VdV}DRd_-Cxbp zXqJFF;oS4{5k(u;DHpz$ECgljB%KpwEq^GgbLwE>?a3LGBjJy~L+IUaPHcUhyY0|S z!Q4-Dj&v28p$XEv!UdbQFTBAX{@xr_FA~$kPzvl4;PVz}_ z^+!#8|HgRZCs=F9*POs6v|1rmX%fk2e3#ZgHS0^kug>9?xP7h%**PNY}tlvuGZ;qC9DRF?Y^PuUuv(CC_F># zRFVPgFpJ%mGV{!LrrH|C8wA(5G^7r=(+z8#m`q~vg>BU+Lh8qw5{+~`8nz|5jlr*o zIn&3MbOjkzH&0%Lx$qeAzL*IO-Kr^1NGBMWZ078azl0(*bjNpUaHJWzp_13qNa}&K zgVLb~r#NIxQ|%UQLwaQj^(W||>w88MEmALtGu{{5CS!&v#$N%RAKj_-uQk2lh0EnR zz^G;4?JwynT15PIa;|8pk%Z!E^`uh{AMcMcwBWOYW4|l@FeQlf_k!PjkYY5y!+N-* z65CTVUKi7TV9WG={gMnTwk$Nl{%5$UKBu&XS)G%Tg`gKx z&cREn3>HDur&bsOI3hTO##b zqdYHvO)4WuCwq!XTYae{amuV)x!^Ui^KNU!vHQ-aEw2*iDM6Q}!8ZG`E|qL9*3VVB zo4wA55j%LG2#EWVBUI}PGb%e8fnrc=*1;-wm=}|Q z`MkWKMto$s8G8aX<}D7+)dmD!k$s9UD2-fYlA?0nW9SIsd6+e4Z!{yCQ$c!3P+{e$ zV7VdRrf&w^Tk4-C^?EL&sas%@8EQ050%jG=Uw`MRaZByJ9Aey=FPgDtx=zB$qHJ-l zIHe_Ahx;atk>80e+ zLv^K&TP73Y4_{yNO*L(&e*O%&gXO?1p2aF+QaT~~$Tn5gPa|$29L`F(tyYN(=K=6z zrK8R@WYu$V*;<#;qW;FQNAMgH;U<*@YYTtj9`kZx6uGh}nU#knUpn~p4=d>bJGc#af^`dYU#jZy{1NUL5 z7Wck4!;u?$^@kE_omK0%))WrmxpTa&;&gV|)?b^7JFyWiHNZNW@j&HE+Mm|7Tsf?( zwaONhV~x_Bo^Gk@U}K!~Y0|5Mw{x@$$evbApM+zhRTZUQmQ4!X<`D?RI*f|m2Ygua z`nf}U0XwrS)phZM5^V-^#iM~gI%}k0w(@P`VnNcB-#)91YPVCOofep*_u_Gxz(yOJ zs^9WYxy9ZW^qj5b9hz>X5F(V|nr*6@AJMfXgc#q>-VK{qzsZ3uA7dMw}nwGA`NI;-$w=wT*&gz0}nSHhp5L^L03+L#cj1RC-?etJ(KKASqz<-Oy0*6tkCEh)pt^OMSVdc$ zaBchFm*V16x}2Ae5Rx)U-Sn1CSDLCTY*BxT5+$=l-bkjK;6@!L$cj&4o-c}7huGh8 zN%4hc$)&rfla)9

vNwkMU-wd1OI?MMGyc*{+4tbE8Dso4CErKJ6B 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

BfSWEhlZg?&=K@aHp+G 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�JB^rwgn5{ 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%0DW($tP508L_=Gi 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 z zHEk>K^gF&nyuZ& zJYH&4Or_ykQ--~%u3_aKn|B-S9-;LH%WD_$avIt&Q233MOb&zWy02&~X7!JComWuU zP;YLCV2EEuzM%B;YOZy@qPaW^J3qi#6Mfb9uJiq~==)B3EvB)%+Sfd{vPxau>{AH^ zBVUXMw>aQA{AB||*ymIFXd9M;nZ^|JZHxrdPX(VrxAk*;TdE!<&WGkl*48H$Ty?J$38=w5|nEQ9wW~>7KOG6GgdFP5M6P}%_%IH>Le$<#C!Pvl z=TPCqv)U z%sj&}TcGP~j;QP-sl{v_xg0m^3KYY>v6E;YM=C*I@?x-}EW{g!;7X1xki9z^_Q!Zm zI>9MaG``>kKWHveIfE)Z27Vto&wd|W$M|^T$0ls&emZkRO9U_6Nizf)L1&Gy4P@s5 zvcG%C4g=m=PX&}^#dyi*Y>q^K`M{j7CHS7zzGCC5%&xMQ{xNZ@JXvj1`GTuYr|%GE zy3R3juN0Q94TiGB_x>S#!;vaUFUAu0UcH zW9h`#q7W(pf49+E?8;amN=&cuK^)-K;7Qr*G8~#pIJ{2Emap*Zth!xT>*(1>IJ-#! zG)Abzoy03Wl(Aycm1n?sPi_DUlp;SJWF z4TMT6UeCh!GKPy00Sy8T=Y#_Bh9U2`j;Lj5YD8hJ6_alYBE;3;=lZAU8O$Qg;N_LJ zk%_~-MM%wywGCRHrqgR&8$a+DExBFuzj;b4D?!oVb;a#sUYgZX9KY%=*=HG@{`tn4 zWLbM?k=5AMs^ny0#x^T|baq8~DM_UGj& z5x3A=OvKQ*C|pEq07#@8H|tlKU=~4SR&-nM?&0S+ÐL#rcK$$3^CbT7p_Z^LL8 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�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

    %ihx1&RB6~ z-QS2$nQmBvA|_taNYCy&sQPK`%2f|yxF!Cn%4bSyZ%WvGrAOgpfqxNIvfl4#TdHhZ ztte@-yW^GQL)z();|Ed`x&`b78nPrpb%P#ac&Zmem%?<{**K~xUMJt{hwdJyxQ^O< z$_&;KijFRf+h{qns%^z;2~l|b2C}obYwENYZRR=nnfwN&`CZHqSHp%vT}0)F%d9** zLy<2FE%PrHGDgM$|MF^}xp!-clm2JE$NC?y#>vKnI+gMIV?N>7XJ@h(QnAl@F;P1! zOHL7W<};*f&<6T6t?5VDHc5_d-J^MJsC+k~^h+&9(8b0oSO&Ba&{zApZ@uXEr?$6YOs`t$SHuHKR)m#-BADI!|v(cuU_} z{59Wa{rTDbU9ZDYp2Pi;Fdt*^{#@|poc+=akW95Pa$ik3Z8LEOpNqnvZuUjOBjim` zt}>Bt*|+^{pQhn}!|uLH%|U&I?3f)qLeT5-G5Go3 zxXlEOfqy2ax{WaJ%LjU)-}WTuF>kMUvN?S7Z9v)B@?!6?Vvp6bK<6fdBGYhr$T?_X zQx*cCb&Jv`5J!_2ofKK;`vmHu_ss{@5ZZJToWmwq^7VGkQSK!aB_i}(cWm*N*3;5l z!*M&vM0Tst7bkwfTC$Chu^`HEtzX=+LNes9XQRLO0@#u$mHf=sdG>90Or3qsN>GGs z2d$S>si6?%3uvWOnJP4TAs>_~&UoD*92~O`_!`^Q`pIwM_a5&<@cyZ8R4G{}HOSCh z&*O)?@Ga_mMlLT|S?yTe4{+M~8X^5Q^Q4;JXAZ0KY&Y zYFUV|Q$B)%%`f{Z)WU9+zTtSbLg4Fg{g52=C3NoXib$lE2#8P1z8dQN0R(7AmA5y3 zaSdJ**~NRHTfMmwc=!_0^Q%uF9i2Gy7&h2*ksY>uoAEJz7tkWhS`Mw)+f2`gLam!@ zE3JTwT;;O+f2G|D8laDM>`}0|NG;7_yna-0Mx7NmL=B<)ntK}0PYD(%QR5n-HfM;Q zg-$7O*HRZ@9#gI9S$#DbS61ugHfth;7UM%51F*AihUdAVlgbU<35y2%Y`%1Jh>d55 zkWzp~p>uUnuiouc^%S;9{g#I&O1xO4Q#Yhp%|bGLl*DZ6VpEU7wf49AjdbD<$3Es) z8z^=Z2}=yvUpY$z6j7HKzdB9YIJm=C(*fIhr@mu+Kfdm{)Z=SZaq!FJ>Y3FbDgX2( zYG2DQ+Ki_3$fncfEV&gMb=3;K&Q%ecGTZ%%2kPXDcbRq5T=lI{+H+%O5lUVWiDEsv z0^Ng3T$}WokL=yfPNgHU61`LQY-;6$^0cYVGWQ^ik)}{lE4B0uSz5EQ#Yx%tIW`&6 zAoBXYvqL)L{RK3IZP~n*iU}s&)b3cFt0p=FvH`g$Kr3jVQ$CLl&@9qCY$F!e$Zte}KR1f&VP@81_{w5+~YaEZyItlU^F16kYXeO{Z{PvOz96 zg?RL(n?6f@`9ba|k`ew5(cq0WpchTCm+yu2t4oPsi%;;vf|86kQa$0gZ>v4Rc;W=8&reD$mugAeZuEk662 zJe=UMhM6uwE$Zb;Lf4C$!nYCn!9yjyr@hGd%cB0luFVA9yKY=Lc+8oVn!@QnA^Fcj zZ|a6${5$6s8wT@1{>9Ut=AsuLSk{wAO6 zJD4vw3i4i9e|yBzmKAiCTnF#GeSii#+yHJcvNGPKRX&CHbc%lL$)7Xa+;`i9ek;vd zxu(nW(6qkY?)+PEi7;!TMZy0~oB#S?+ve+ka3IFt`tJ4b_ONe-zJDd9`p)oz&SF|4 zDAba`K$huEL^wmMOUz{P5-w*VJx`_nP|W$O1@e2+jvpvvjiUw+88uP=tF?j??TEMc zwjX6~*|I)#;8_ei)*yyqII?d|EG)t@l`4ALPRR=WM0;7X%F{}TZhgPXw7VIAx}W(< zDpz0K9Xzy7&n6t<-|UCf#oXT_OFy5iEp701`XGK%N?(>_vD)0hv~~Gw7(ISeim;1! zMWt!kUY*W09hI&mw6^c2N5)jgjf)Zg7mAK2xBv5UfI|M`eagR`LDTk22X8Tds=gCl zlV$+a+2P|V?cz7q)P75KGE1;5t3WU1CdWvgUv`5d0QB2ph#J5m^=-ec?^ zeK1F*L<}C6LLZns7%Oi*yh z;X$31OX()(hxTDC_8P4VPRv=bA@_&E`#Z9>fopzNfd`jwQksvL|4`Vw7w-P=sKj~^ z!NTWngP*^N1XvjwFHbdeG>l)^;^4FMYdi5^F+fUrPe8V7di(>==Y>RF}Rj!L6=)#hdC zJfD%Dqx@XzckMIEB%the*i-OuHO(2cUzn8(9-f%>cEamQVsU8YopB_Z{4hI<$m8cg zQY!bE*`>F~DHNGG-QA}#7x@FNqtJ`fcg7Kn=PC!AZFA}7ZFR2;+e)unPLRG3j2I6Y zH&gVC!Iqys_z!5~%d9Wmm6oRab8G9BxwZ8i4(+UnvXI6PBe0vG3*f-bajYf($}Q1c z2Y4-))#l7DgVZg(W}6RenlVDie)|{jEuB~|O;a#os>T0?_!zA7FH?S1Sj5QsA5*3% zc>hZBuPGmyCViEbgqy#86%-`JdDyslK4teZc7puX^D}a>u}X8UYuuYDG z*8fY!x?n%rv;7d`$Z7N|ubU8U6u@$S{qv0;`60BbnjC$qHEXPV*V|)u_*h-&mfh)3 zC_PdC@>cmFX>I!`w)az6=YFbDdzJ529}J>v)mN0dBAdtEYrfZRoO43H zv1Q3xzPGzTw2#t#c4%s7)^a-P$Z?wrza2BV=<6|oFZzOv^Z&Ee{BMf2fiAm?Pj9m} zMWj>mq<>^ag@0H!jv|pyFS7%5zC=vo1Cp57Kh`K(5hjk<=w<3sd6;W|B_H*Jj&$tcjt(`F))cjy#6gU!zy;j|!a(bi>9kVJSFYd}w;Q z%Xqgq*EJ9hYjE@R=E!6nC-J|q{dcwe!|?y%wBHE2EArnVUNO;j&wl=R_EI$6H0?kP zhmcl9<$X_)&63yj{Xe7z9smDBYNHF}{XbqD6qbV*^r8QwcF0ndj?%kV-%rlRu4ZMl zQE4a{f{H|L~V30P__Ull%iP@0v1PD=~_XX zv_GAX-236DLgv~zUF6<%TP3YsFBNzW>}J!yMO@BM)G6{PDyCR98&W$zq|C6?!nHC(#om!y zaEP-plt+30?VLC0h}7gW20MIKILey7tkuumbF9OmyU45v762@K1Y&$vI@|KUFAla3 z`~S;`vG2y05&uC-P+RXdg# zpc1*AG2tcQETH+euzA99^xz|T7=-d;-!S-awC%|M&2eSd%c0S%0LK1NdD2rH z0Cpb`^Cfa*%D>0Qa*bA9aef`xX4vN*74M&1);9DmBQfo%#u7Df$v#vD=hyTYi}JC*SB?xMj!+WA-E^O-QC^Y9fE6P zjWibAo8a#5?oM!bm!OR|jXO8L^VL1)-KuxrtNXpzf9zVlcJE!g$C@?fm}||s_DrU( zLZ1DiTI7K|emvyvy=t3cps)DHUoY=IG#s|AO_` zAG81U$N$UIl~ViuQ!?P6&cD3Op>K{x&U&2r zya~gHl%-cWb&lNA{P!E6{eRUey!~>6ENb8lT~EsZg>G#P`uDzU2b(;9_Eo zrwiTA9Cd(c!+q7k+2XEXk^@UOu{*?17l^zQ69tfm_qcl4XQ6l+T;B$JG(5DRHT_?B z+g4ZBQOHXtIO92LkUbZZ^SXOo8SOIM6q=%Xx$A7Wf*A~$dzLaAEg&}oG+w%X@^__o zd;v|*s=OA)>l^duiW1R=ojsJ4KJs)~na8vwsdsP7ZO)$?cKfN9VvE22cP`#mFT-ZS1}!IvG1({xg?a+JKtRAa z1pZUw%CfaTKe&N6y}Bl{fImyu-Wn@qzJmF>ZC*XT?*)JPL~=6-PZZ@B-`@Ts(epCL z(t~QyV^|f*GCRz%p_B}?rN7VF7hO#6@=S}3GT5xv3bLKU+mlwLFx!SSr4UOYC zs?PhWw0CXE4-D!lXa5z||7SWSK_j{AU)=w74=4-xx7{@9X?za$qXOyQk=zG1e%)57 z&%MhJ4<~qCo^;$xRw}zz#>83hbpD!B&-%?FR)s4R@SY9)UNeL81@*rplFEtF%O=Xu zw&VL&MJvMHvK>sT2O?CIoy9e-fSTvvvDVI0X%typ4?5MZPx8HvYw{50`A!}ie z0Mf95d1@;VT~_K7_w*8+7MaxYUGhK9`2Q*wE&}!y|0Un<#-xP*Cq6~`JOjd?Kjtz$ z*_QM5sbOol!>vWezy)ZB;uD;0qw|9k@}f}vB#^xUUFO3IAJ5+hc#$x*0qj5uFaHN2 z+W%{3nHFc=Vaq1Ejd9uB$*nrhV~fYry6kF#eoGijCiZJI%Kk%*l?Ns5kVREBY)5R(O} z^JPlhG=d91O80+w4UR#_4e#Hz{0o)yCxxhRTd;y60nvt|oCGJ9!;+D(C0UbsBe+jF zE!iC3kgP?>VjB+|&@`@VN;7$QmwK2Zd~p~*+{8thOqN5^mbIf7-+th5aOm;luoob{ z{b?2))_oIE<6K>xgnonu3!R1G-C*5t_ttsiN_lQgeX~O&S5QurE!b5u^9#ACr9D(K z6D}rgOGRPFzEbX$45JviD`xKQl61d;^Mz;36+n@=U6M9bOP~ezi2a?KDkcb=g$hsPNoHp+4z>o*tMsl9y zA96c zu5$q2(J1$b{bUO1kxELxyc?8(b39^)EQYF2AP-*MUS4U1VE1;>Q_|1#ySVm7@0yy! z%97mAkj|7|5_e}k75xo1VD5`yZZY8$aE3oPW#^UOceH2VUou=OkRN3*^UV}zbYn71 zA#DC3Zo-RtL~b5n=Kp;vQloiw;c7kJc1KWN>`=sJ;=yIXj1N;S-VQ5FYEre?$N`^N zvxv2mIHE+f$VVQXr?@uV+{-fpiU!&rmArrwbG$zWQoC=9R`w8TUc&2E*(wEs>te;A8b1sEyBU&LyW&r;b=Bqupf+9t?h0)bz^bJ@;wHGWicZ_~G-mD_c ztJpbq;mxF%O$tg$v z3n-6Ak++4@ihk4J`dt$CwCe-!EWjHIMb+wbZq@k6Dm%Bj1~|(jwmB%!+{^U=t5m@0 zrznJe5aHwhkPi{&%ykS^w(Is>BbkAf3XI|6(~{Ty`E|2|vQiXX`f^ya*Po7GpOGp1 z5>KGM*QxD>JVAQ->clKu@ht7cGIrX;M8cELcyp-ZTwE(yei~6R-hZ7)i@3}W@3Pd@ zzCc#TrF)vU;*)lDQJE16V->Q|_j;X35-dGsY{ahCzJd5QsT=tgLcr^wR3}oqqOug< zic|r&Vm#ZIvUVDfBuI4kG>($z+_=D=$gdKElvkVv>@FL(NuK=mDUT(qv?8Dwk1q5? zAnU?7OR?10|6Fm|Yeq9kl~wDr_WV6reILHk9HqG3y4cC3G`rmAmlBq&xlT%zzo(aJ zF07Upd?ai*(H^~2P%#31)%N00)vI)s{<-%0p6rTlES=(p9IR=zfMI=cNKd$xSlNWk zBzz~SE}-58mKZk@Hod)%M=QNJ1j4-jYoF93d$6p_e+tU!JM0LA-Pc4FpHbn_F}-o4 zgj*2T5cGb2Ut}hj!IY9|bVA3M7KW#)F{V}UJgR6icti%BbR@k5ZFoXULSFoCW>WN- zM+Yx*ekIz3Jqpjnw$-sdo;o!%`h7@)BNBYW`$}k~*bRpu(ftR-Byv!(2Z2DO{Q@=; z_~yfi%DXXir)7-l?f}yGM&^n5mbmJikl6Q3N`;2fBDwGRPAs=^fUI<3wzt)4wK}`2 zgCN&GtWO&dSo?(wJdfovB8s!w8OyI$zrqBF>~|uuF6QirEMh3-AZ{M zwlg8kZrEYuQp#}pbO|72j3lK;Xn!?f8WmC91KHXAQhRbuVZ)W!vf+u7KL#ah*+KkO z*61lENoSOtOk;5YGj*?=DhtW>kdoi4?iZhTk}Tqy*+j0Rzn{lJ6w{wI_`6P{QOvaH zuf-?zwbZ80-Bef}Q!a}_?gD3v3a+Y41Q^wHrhB$T`GG+{_1 zV5%DV)(EF6pMt*d5bwpHP^B!IF(}wcc7t%3XKZ?fc||&r@egnLAf^e%lg|fMcfTxn zp9yAHbtUsJBJZU!5EwnI=DE4lj3PgCoc6QDFDoP5)9ZK8tJCdUH49~C<|g7DeTfx; zko#x=-o71Hsk4J!T+hZ={w7~(`O`Ri3wN}*TX^JPpcI0q=d7DYnPV@zrbc95!XsC6 zH9VtpR2C1a%6XwVc2JdS{Ow%+JNdS#bwf(T(sG3nQFg~idQW$U*ff|0$DP05(7H~% z++tmUC{XX$S$_1ndu;Q4 zzPsG)dbx+*YwmS$S)X-TpPLiSE+AwpEAz!u5 zCR^~s)wFu~-oK_?4PT-$Ka-Y=&o+j#AGq778_owecpN;JyT8u~4^h~#p{OU;$-bUy zdXFNA<#8|sVRNo5qzP2tyI(-IQvWFW!UuoOZ2)Ax`FKFrJTMtF3uelw!6V;bB!R^1 z;PmT7-FN;$uK&4`d?wZyfpJRQSQW82-6fVM#_XwK+^eXj@OV!T#ikY~oJN{KZl)#=EN%!uuEN%D-{n((p*)rIG(6}iR@}^&(I7QelaI*dk$9B6dlD)y<2|r`Yd3COhS&)`KTT9y*WY&k?l$3= zo_mEmX*ioj#V@|h40da7i>$(FZbhA|vK^}Zng?Q>e1RwK5I*D{!4|%z9$+s*<4PNC zF;wl`do{#n17$^Q46YI6{=E$tdZ29Q!nIqzwVSZQ-%6le`H=f+B+5s z2%w8&ZMlDn_66W3-vb3>xd4%m*QZGCnqOw65-qg)BcG&BM%Q)1 zS2#!g-4xbyVps26D@u~hR_%K*@UzE7wQ7-HI^S7j<(!J9*U9?^qDI=q#*E$7>B8o` zykzb*uAjaC22tf@lw8N*OtSkmuPMI;nTj<29P5UHjWd9wyi?ycyJBttK8DQ7`gju; z%p&C}kyAIk$6>spxy9d&)k!uS0%;dE-Uv)zl@WuJn75JBv;4fDj-6}oakq~6&Y~oZ z_LOkjYHFK>GK=K* z#kN(M2O|qAndYvC1XgONp95$%4aF^=;X9)g_j!SLRJv-K{9Ck>VR6Yhc!vG{UB03( z)*n26)kHSrWR4E5M&*g}I;o@mz9yV;Q;Ap~wAgl@f#q+VVJ%s2mtxG-$ZxKbt*kst z&B$sa%ho64T}yg(C2~01cudST_>|2&*h5jY?P+`rD~zrHE}NUvoTgzBr8v<(-h`wq zJFDiw>d~};r8vi1bT8)XxYR3XSNEqNr5OPnEYEV}9%sUG%CMDVurFpp&ks-VGl)@F zPrpHY1#JCsAbnKIoy;sl$Nlf*lzdJ_{cL?z^w>Rfv(|52M zlpM5u@G4K(#^3-TSA?&y~ zs$SiCh7SJ@+yH145D)EkxK!>=fWL>yK34bQX1x{oEz+6W&>n802W~<*E*Bn3we5gk zQngn<1RQvXP(ZBAkp>!1;(YpJSnn|`(<>Yd|8j=-)$*~HATr>1TBO%k6Zv{@!VVp0 zUWi2_r?dDn(r>qMg6T)pP#@0wLk~$K8+Fhnu%V($Y2Z$A#Yb_}wy{0Blyaj;lChYu zmrovNz91sJ3Fs{dZaI?yoO_Z*tQX8 zI%PQeV4Y?q*4*x&=`2areI9q=AN0RLRtgrlO4YQ1xjIM`aZb!1%?F zC7j$grLrrXiYD({luK%T&g2cp#|qMX6BdtDQwE}aArL*qJ%7rez>G@f3R^I%pt%Z2 z!9JM3w$|W_flFTkR}W1>`&H1EVf=aAofEn3xnlC!Xw&PEI)g?#US5RF1NGj1zDq?Um4B zup9v#AQp4GXigan6O&FQMXdOQgQ2PU0xIa>wens2Zcz!?e<#j0qi z4y||`@+-X?liIf!*j$s!=c0@vZq+zG`a+UGGRT7O3H5j`N6evVBVo=8Nybp!Vv2>-58zzgyOICItav}`&*VWwqwlzqI zrpA4I>qFgz#u{0Ac->*EpRlEYmHuN`VxFw2R=MV6q#`7CZRDSC7r=&y&C)T$=YQ=n zqZ|2YB=0|wQbSu9f%26=c!FTPZh`eUc+EM7DsXK6T#^$m+)tchm1xx$q~Fp=)vmJ{PkO3 zUr&PtEWz3LxbijpGhddr+!ZG4d!|)xx_(~zn{%aZt$p&i3uO)WM6lo~xVNY~n*Ql^ zlBPIxg0S_2)_rOA1yXgg@dqAN(nfXp(Za*x}Vz!4>`E+J+4u)IL{sg0f zGqY{@7Vpbf&NT#R2XZ!6;;%FW$~fB9<;rL_@VCd<^}pJ!{j9>R>`;%y`d!czUgLCH zv8|&HTZn2drL~}NQ2;oq^_lc*w_IsBYM^Lt&`gw4?hS^+oE59rg_sv)VJXuH_b)t3 zbEl3HqD&wWYK9(K=-I`Pg&FHnxPkdpVM!pB0#(hClPSNpa^w&)#K4 zRwpxaKv)g}Coh-VN(@hfNs|>%9%K4c!I7H14}|nR#xP{x*TBE$=1JqXZJn;GHBW!* zWVXhnKK-<7>dFh#vo>AKZOqo{=$S70sjl;e*u~2~l{bt^xA^7V{6&@~np}lXo*Pw| z-`tlymHrSSl{xaY;PSWLfCLtGA8(U<;1=$gdhrS$%8N~ARz5>T_xAgl{flSTdSX_p zQ92UG`u=GPy{6vfgeSx8PS)y;KL_F}oPK33Nh~s6pyy}i#g>fG7Iv9gpaP!jDP7!R zm;V~WVRW~ZYW$jpQ**r6xZ@zsFyzaNu4)b6O1a!?mNxaK(PQVgD7G1`@ql#ZvO?}9 zChd|1vPiWUqW73(?Zs6iak|4%aZ3PeGfD5$DjH?M)FdZ^j}1u56dW!GMbF8# zoyigsn_<&x?K(sESn;zKf8Apn_A>gQoFfUsYc!YkN1N$GV&e5)?zK7(p%S|-rn6zs zrOX;bsR{#`*0Z;#`Hh~B0$q~ES-!zG*iQCAMLvPZ=3n}AC&5W!C0L6@hDUPqF_Iai z@T}X_RZGU8{UAv7K>ohuXqCL$Tk|DK);C* zVch-OHK|YBrr}s+`nSuvAr7XragB7}xt&m$)-n4WPkY?|t#cbwP|BB)T9YLJKM4Pn zQjnYIzTBPSCc~j57o+as8w8)=zMM@@;=x738aORE>Ky(|uRmmM?o7L=Y-*FR_8@tz z#(FZNopOw9ue_$o5Hlt-{?$eK_U`V}UjIufzFjSeST!|j0YA7i&#}0*N}6`B7<3~UqsWdcUNr#IeqfLpP2Nf^}yUA-przd$-{7)yAP(F<1n zGdLvBAr_}?)`S%<8Am*PVN;K@-58uSUD_HqvQM3&zWUd`ipwo7S3*aT2FumCqB#?p zhu>J2xb0ju^BsX+g6dv zM4{1Do@%GVsS`>q9r5X<_mKU^VQHq(>{P~2>Rg+OK&wk0Ym0;?o!{33t>zDM7V!|Z zL6C{Q$8gADWTVggmk{j_k^37;HOB?|q{rZb{lA>>!R}dy;!_+}o*dp1{z4s?c(Js@ z159OG0e<_9wqW+nQS{VAjRxhe^u421F>(DFW61IN_@AYQqY(mB2#dMl2f(GcBo0G{ z>ywUIh3);Fmpot5M8!TAuJ$pof|s-*?!ivn*m{0pM1#;3Q9-I=hRl#;;zKg5-hfJD z{}FXDe`6wRs^dvxs6D^~=wCsdT&~t-O$J+M=&D>DK->6ZO;T@bJhF(O~Idf^nMMBUxjVD(13XP%mQaRhoiE%-lQ{cZA ztKr?Hd6N779hy}xpETORIeLK(OVETd#ed;ed>d3qC)E4-T@#x?<%`s?hL+~9S5@+s*+#6Z1RO4TqHtV z!lASeQNdDGip5>HL0&}_c=CfaD^k8?h`9g*OJGN7lU`0*r6oH*y*v%pprczs-22}* z;)|afyP!IDTMxlaP0ozLswK7*aVblq7ontuLLbSdK}cTscYug>hBB9Q8?x6TR&sU;XIa*BjH zxT+ifVCz*F8f?tj0p?ZxnD8r>T1K{zPV!q%q`&`dP%03ZOudUaki{JqGO^|-rK zTn2hKTBUtc4o90(P;a{6g!yAI1^AO+)5IKz9x=SWGb?bTaGvPK=?cj!?1yL_lN!#H zUEN|hQyHmu=NbnZ9o8dyqb3_lR`ch4r9ghVe(MM7aZK8q@-)bRQ}*vp)UT~e0WGF znb{AW9ARhLkF;Oj#^#G97mY8$V8BbdR+4p+`f?V@-$}SIoDY8r-E&jWMZ(XpRM7$osdpDzZ_1Ez*2cu*~nMX`Ty0e#u zXm~aLq|R$+Lp!%(>5;Hc$2~QD=w{-qj8;``{F8>xg(o-Cy(hL0f>>IgzPQ`)un9$O zJs%M>vuW9PpL&vu`f5dfFreTSqp;4F(e(9e!m*X2U$x*jXdQ&~nVJot{ybF02`GSf zT%V50zekcC1{RPnCguHN6z|(B8k%_mnB|Om_2wPPgrJMv~SJ!K{CwQKKCqN`R&k^0378(t#FQO z9M-M%(so`WuLo1;Aw&)|&q?rEM{_y)_^&9&o7fug$NM?tD=4RUA_b*FKsqwIYCo!%sOT5tkf4q+rR!J>EV`OZ6X2xUQ%Dw z0sT|i0!Ia+T2X!NUa-XIrg}FLMvyOrRxhP3wkMN)AQ|v3@cVEBk{}$n0(v&&vL~~vnxSx*Yq>iu7ao3ezgI6m_$+cm?%!4am28eOxryXy}aZ z>b~Z4w}btqa4i6M5LsGXD{Tj&WGBJy5*kl@;BGnh4^d>OnBtT)A8n8yZO|Qe)oWnJ z`;b|e8Gn{wD5Op);M#_$@laJ*kF{z#eapPcV;SA3eLk3SS0POgOSTvM8bEV}z2`S~ zd4uf0MBe|)0Lg|-AXg+rD99ksZhXZv3LSiq3a2P|Z3?DeIJI?*ur1z4}#t?Lg4S+-{7(vK{eQ7zAzMPSmW%yCMS>C)&EU;#a{3tg+mV z61YYT0fX8l-1`ZdS<(#BJHNGLvVeWsjDG>Kn%%ZFlaax*$of)G?RY~{aASoASnvw> z7UFB^u~L_YJD6eD0XaF%Q)&=>BR&sYeG&7B=!!}Ap{((LMB9^A9AU`3BIoEx(z@o9 zu}2#<*Cx8!_K8@>cM;2tZN3({meuGXMd zirMftb&hq>+BN;iFc3S_y5ae;XXSO`I$PL3qN%DfqIDmiEgzQPOV!|&F2iGNwLxbV zDs@H7@*$K|8-Gu~cy}8ux|@>) zX5-WkH;K2uD+^MxSLAsH?*%C? zq(p1w-RU=mK(GV1umc&s9?xH!{d_0#K|?m7_5AJ3%rshCRiC5K4k^noIxshGbD_Y% zM>*crJ|8Vrx{bfiWk&qm=)tu&LZ7qwPKKBnipvzl-OmO zyD;W>4nsl<`j!mE%nm`@&auz#g6KyAS{p|UYLQzp20>a7+Xnb&Ujvu}i;3 zL+HW4J;e~8;e|MNcOePtMN4)icldf0{An8hEbSJ|%}3LHby_E(GbwIldb7kP=Sx~0 zF-7c?F;|kx_36agux$;t026Yxw z@f)heXEM^rOyXb_KqA6tF2(!fJYW8KZO@y>&EdI!*KBlUfTV?SKjcw)txG2=A%6#Z ziweV{Fm6wr2=CLre-}sE7V0P>skf3^=|xWn1dst4;^sO(y#`-YQbEK2e>iM&70q>? zxy^O$XS({KVH91m=Oy?K~(q#6<(6lt=p?!cZMfO|NQkt zII(lZe`f*l^E3+Meth@!&Sm>cC(=Vz$VXFx&xi{2(5HidxU*cMQLd!>+VZUN+jZjG zNp}~Zf-@tp<_?qrpnJc=Uny}W!#sb zO8>71@Eiti%sSWx8pKFq;wSE;-?99(m)?SUh_eR|OMPz?ez*kt*|WT|lT6rh+EjE5 z0?fY=s=YzVLQNvED91N9z+$ZmPtoijEBmpp&U{&#?4j=N#g#;I>-%x?0t-CV`v$1z zpmw|CeC6OT&~<%xid$sq#3vL`M-Mi~dT8FY9kMp7j8hoS8f|~b`_qf{SnR-or@Mn> z;gj&G)ko8~GcxpEJ#*A2eeB_z&R5zCPO%pB(ScI88Y6d3N*P4rW3As!9tIpWL2KoE zrZ+FaoOsZXlaKPQg&Yu`6Xj2n?k0x#TlglmQK%bFUI~c7%@$$@KlC@}C7$}8E5s(1?A;-#{91ro1)X1JJ}P#GMfK8XvW(ApS$bt8UGnB zT-xk6*8dqUz<<>|X#!ZHjU>bt%@Dps*1liAn&4N^JT=G7E&tG7yKoUeXkya~Kqqv6 z+i^Tr0NMRN%a&bbm?(hwNV+E~CTI8I!GjxVo*sUpCKjJsnn)s_Fg0D{v3fSutGD;Q zO^`3IZb<2!BM~esff}-|K2|__iAhmny2cbvS3G?ISPL(ey^k$|zP42@hJsnwzu3J} zZAoPnT*kZpDPDQs?%TL3Sl4x2vpzZqJSw*j-`qTxA6V25yP6F8-#zGe8sC4VASPz0 z9Xb6wwM=38gbYQ@_^Q=$PjqYqz6?L>&8QGTNPPUauW28YG4hQ3`TU{}W^pw)gd^Xn zgvR1Nb#hyQEcO*3ka{fAU5uE3#n$C?$rl2)Xr%Exk;~#KKAQiJO-m0BbLWkh?7bni z?eb;0j)9PYqg8L)*wU)ZLk0O&^Ofb1u_p3xr`7P^q7OB+wv3IH2m2*W9x*QXjm1S1 z!R;d#-5rdrdz2;*Un1f}%CFdJ>zZj>^0yljZRlgbY-|kql@$tk(Q&?$ZZifZg^^PC z&qyL=i#J*2yQY-1=T0!Qm)d&`?)71$)>x~7mNWk81qWg?X9kw0>iJs}&ryI9m9kph zL{P{ZA3@!WG(%_m?$?Z@u1Dyc%T>b~twg2iSJjTlwV?pHD}gzkgSNRxr89GWj8g(D zwt361CLZY)(dKyocH*iOn;6spIY7q0N1uO21^!(ZZ64--Ua>j<&+Nfg7#jcel5_RP zaBL=>B$h95{JTPNWud5M=$K}sEuX=3O(J&7)$!Qedkeaoxq||t(>Mnm2LxABp3|xp zuH>ruiMulK<5SySpIazyLoUZp(2`6({tQ6-R-cW)$V?=HLFmBTZ(hxG`n|PD^Qx!j z>NCSg?Ax(X4!EK}{3<8nwSp6z>}>a`ZYpQb4|At`!Pxr*O$Hp^iT#vuYCYk`Yh} zMtK!hoxRUkf^dT;`6FmN>{`A-b=Od%y($0rEFE?18qYd%@2$#Xm$zq+bR|F-QI(p? zHS=;zt~t=gR*n#b6Nz!^Kt9Xf_0ex9v0QDw+KvIqMu6QIL-#7^iRd8RIp@hf_Geu9y_%!GJ|rDaT$~UV`z*sz zz^VC~y-Fj9?WsyzxeKfI_pY{QyA1?!j6_w>GEpQ`a=W0QQ-jNZUhU434{!wpLm3M$cGy*tpQ77>Gh(mVc7ZSjs3?tMe}-tl8O$S zR9SUENIMI+>aF4`Q0&$AGCSdFTngp)#j2~%tCxE&bLIWo{zy~%1AkS!J|nWT1C#j1 zXPfMq`a!GkV~)c2%8TC`J7u6%F$nRBLvO#c{SmzmR==IHDMxDH+>I>B=tlEgkH;g| zF=v zu}?}2N&}Iof8Hq=``>-3+(HsYXYk}U(+sh-!^!MsP--7*S8trM#+1ic*9WMR>W=!B zj(@FOg}45;<41J^Av)rOqxc~)A^x;@!0})at8BqzYD0=1=kyjJK7I_l`VstAL}0Ua zebltJnWR`t(dHDt#VddwT&=II(x^DC+fPS<&fKEC+M#~4kZ+F}#eu~mZ!s;KHg{g> z(l#?^2PgQEXrJFMF0qYvT>`IFxo>&d|5bH@(rpUi`})~?$2MicU7@=@3dzBbwGHyo zaTg`C1Jd(^)m-6G)lck7`B3s-QANnar8D19-SX1BTG32CQ3>2wI1(M=HWBRQTb|LH zUR~-%RGj6Y$4Rf!H}WYj84(RFaBwG@);K~9V(%M??;3Xy=)_$*$p$ugNJbt(!~p$` z8oj!-i{8$8bU(@d&Tzcy%j1p5I6>mq=S#-dr-s?5qcktZOx--NbA&962!LnN%sA2N zNj}VM2?m;29_aWY-wKAm*;90S(*jV7Z-boEHA2amo5sE03i*;1lbUSj_UO*K-Q`rI zPg`%)zHIhgjR|!GmU@itk2}pH7pFF%Z1`hDds=T>Z_Ip;uuZd+ee5i}1V&x(OKq$z zfu8@-yC2Oz5LkKqXK4;NYKNhG=kOZ~E$3~p$OpG{m!E#$n80+D=1&;51wdKh=CD;< zLf$@C9Z(N>boVS1AFiesq&!~#c@=C@CI=j-C4-J^W?r5y*IAI)4(ELExC-S_qr|Zw zN++5|B-&oe!>{CUFukAoP5{9=`qFq?PSmz;yP!|lWy387^)e+=UmNiYsyMDcl_*#R zdTR7)Fu0|gqyaAa?A;Y6UGX>a6xM+}8`Hx%JM%}VA)}{aw4E@5)Tbshesq4&lx=ik zgI@r?CR?_^cy-f3`u>#&7(}($zmW@J%a761Ey`bc%63|Fq)}h0UytHk-W=I8uX9ee zyY#kot<&3x(lq>?IL=NW??6W%Ub?`?3re?a>We=-m)gPD&mw75B ztJIATLwch)h>&ULuK8(Z8N9=uGYJ`W6h`0g7>=lnd|42)IhnEeyphD}yMx^i8!SlD z-F~H5dNF-xt6BYQrY-OAJIK)Lw*htrzCd4|<~cU8{Fdy4(=*B-DCI7#fM)49b+a!DMQLr>iWZIUiIWgGt;&X4S*n8A-7;i?qS9A&Ht1%Nb#8(w;8X z1JU`k${Lz2ECmJvfp648jD8>w+Vv5QL8zNO;AIsYo~*X{7Z@FpGq+zM0#&_VEN78C z%G-qSCE0Ph&Ivk~LsD^@f=2vKm)a<`p$uN`seM3oxas23%59-^KZ^=%C ze-|4(Hh&1!R;(c*UocDr06ZF+#po@;%+h-e&|DQ;qK~@#?zH>nn^aZG9iJSj zTQVt0AJyDBFcjNyAIS7m>gX7E$!C?#7Iih^l+_lUx;6_6CLJaTRmICFhN*6304@(7)1m~T*|-7^b2I_Z|W zgdStMFx*a^@ejwCqf7V~(T8L%#*r3<2m#pYg+L8w@%kTC4rRP(=Jwx+u=Zcj@%w1D zD^CKE*OqMGuiA$8!aqAHSjD3RB3Gt5CO@(_p}5x!FPrMgWj30rmwxXk-t*OUiT26P zI-p*;!c6t1;i20)Vqq=!yvm#V6B!yV5VtR^gMqIe^Vi63WzsM(5)NNo`(GU?lqZ>c zFNdgWNOnJ7ypv3qG_%nTV+~c$AHv?vtJfy(~js zME;NH%+RZ*)Efu1MeT^542}21~E0tt*I)TWA}pOt_66D>vX)G8F$##vREJRQPpe<4VvZS^}^t06_~_j3$Z z=iU+Q>#aQi*T&$%U%}bfgrp9H0OS;?oW`uoDB~yl{Q7iD% z0doq!c7KcWAu5cxwpD_FB-h?YDe}V87VH+%FIC5 z(?}Cv#FBNwPFo&dl*uV0S82&BZ>yp)R+C>k&zZbxr}K=3tFd=|>B8jM8S?&OrH@}~ zn;EatzGq#0MfA?rSdCD$HcPW}Gj{1$-fxZxyU4dh)YGwsZJ1-<@9+gFSM!7hr=JdL zV+UNX^~R1W_O(*-Hb@Dd>9WjlaV4-ab?Iv>`>B_)zn#o)Tmo_A+Xajg(4{ZN^jOGQc#w`X6a#J>^ti zxn+A>w^I;29rl*5XW!90jCuMSdB>Xd*rJ|561DVuiM-X&$F(NQb2~ktC@UBIa%jH!)I@k5SJ=D4CwwUabp?MrpzSXnN2>;+=_NsT) z@7gT&^lC~SU-|N{I7^olIalaE`(TZMR)dYXCZfN%puq)o?janovp|s}^#Odg|ckx-_^r znoXYq=pk<0eAC*T(A{uN6>F>8u`VqLTg>Q1+c4pEp0IOo5E#U6?}nl|9-|mWZ-tVW zm%{f|(;2VC)9_m)4l`iPlM)l{+(&?E&k*c}R8Q4*(OHzojdZL_w_SE&|A# z#frt-!z*qOuE9~^_Te+x58AW_v3RY#{)vckL6%_eubHG>%Ytp$d5zb1E_wxs2anF)&|h508wE|ErN6j*|jq7+R6 zS=lerlvj_b!XI7uf1Jlm_NRQV^=j)jZAEA7=HW`zZcg~#md>KUS_V4}yBN(1R%t$z zdMDq|k8rh>Mb^PT(xq5!{6-k#L!i4>_54)2t?6?r2HNmp?}c!$%JnU#eR#m?uTMS< zRyc5>8ENAO@0%o3=cW8oV{TmJii;}{QBHZxHq82d*l6vqM&n7MmtCaqIB^q$mQ`hV z-+*yw2rK(!ubh9%Q=e{M7HZ=8@)C^cv_`CZ*4C>s?cKNb58AB&?Vrtq%C~k4>w$)f zl>c=rewKWbUFLyHQ>^iM8LRDX`__u$2NGum<*LkU+SHUz!>DcE<7qE%pngX95iv!f zgIZ~mrWHS@jY{gtDWmM|C9O1YLY-uURn@DY)zU_tI=3-WSk0lXA@6Bj!rQvG!t(gz zjo$)BkRj)5nKEPJ5$IM)Hdc)$1zt*3ne*2tMjVjf zxmD8#E1P5rW7&KhF$su1k#lrWrdB9$QoMdsKk?oFNv7d@3pC(1D*sDfQ2ln&2F@xN zX9U#NsbOYeGV=paHLx2n()qogL0Ww>^<9RH{yIah23|&fsYQhhUP5T@je57pS&1#J z%8AXA*Of3qLUrmr-C0TBe1uaCgLJ}668b#CL<_bA6s_4%!w^=Y8kTq=Y-V_vt9n?5 z6FU#p*#^)Y2UO}ziJ9^8%+K1I8Fu8T9@dS?S0{vxxVn@UEsqF{R;nJdm)~3WkzKgz zc(^D(D;B86aNyO&twDspM6HD#$5e=z%!cyEHV$v!dwL0~HF?=tml;r_5A!GR2ySf_ zNzJ$GuT4kDtp1{2cS_Nn5+Jotv=s(!gh_~Bk%W=JYTA0BOseW-yfXJWwUeP~dm$tL z{Dh>`R=>wZ&A_Ml1JmQbb|+upOc7f9pVYe1Ie*HbAhvZ$)e?v${0eh;p_ z(#<=;#b!5T*&%`<07BBd&F(b@%CEF>y1`e}wH-&0MxgB6D=yGCWR-kn3*Ee!ytY^| z*s7;2gXyO3OIPxaMR23;pXo2$dkQx2<1~Yp3$~Cn`nw=4Gs_~~#?-0=)bXQ6QGNO9 zE|cURUEX$j`88k70@;sj*0nVCbsWN-7QNuHd}Sj$;3fP70}5*X#FN_p-XJgcvSXjo zQmRY+mZ!VRUUpS8*9z+EKs*~yPo$WsPOT~0+%8UZEW|fCOLeF`AC~Hu;nK&6n!rvfQ@KDw^a|pv@lD!vIV$;mB_;n~f2{*I#!I z!Vx^nA3p81R$mf1x<$Ms+yOXO+f=ZX6DK3=QP-HNe;{`O2*28X*B@7K&~B+i9MRtS zo~FQDSIVvJ_Vo0Z=*bH|wl+rc;`vCn6W=Wf2u2wqBB)AsHsV`dBvi9h?AesX1Siz0 zl{e1RhRX2X z2{s4%JxZRumvorO6dJ5D9_k9$oZ@sel9dYeC1dZJp-a5JQSLBv9amZuD{krlyl z05+g~)?l=rltmu54sDEW4cc}X)2IS$qTXn0)=Mgj!Y)kq?yY|MzFGsa@~|Yo(q`K< z{?OoM!EiC>8azexb^f5Xs6=Ri`|A6y!VwUT!UgdX8f2k$t7>Vh5k1cM%0I_lQd$tE zgq9U9ka~Q-6YqH5?4dVJaWNSLv3`XqprQ0T-;IJ zQ#dq1Z6G|Qlw{@58j0<(bDuU@RJ|_Jj2>GTx?NX`Ki)r{smyv=XU|9~jaIgF zbV>lq$Ir|lQ-LrC7WN?6{e6ZSArm+sCj#|b{zcN|ho$4ZIf<^sm_cdpQPv`DHAhoJ z#jffC!@7JmnBBocqrOt#L2KA0o5xafF~VFW%hc%PMKf7PYe7xk&JX%g>lk5!Upl@6 z9V*)nNQmacD$l1jhSS{5KInqGl#@Y%<%4I+N74Bh)^|JrtP-*GpoKZ_@W26l+9AmhUqlw^M8DcOO)&80?z)7@z1Y zy!`ieV*}Im=d8*rD;^t^!n3#*ECNrjPh)zFbK@>Q#e}$L*M(L+e5+v4U0mSCh|cts zdE6X~&OBanI~4$hP8C|F=CKZ4!5#AHk-2C9x}eiRNzAKFmz`E!%cz_cSl3}fkNxbP z`|!6fc#%CE0-g7t7;8**Ndh`czUt9Wex14nD*oe9Sav5v*Yy+1jDD69bv!E@OVspI zSRQFCPPHmGNRPGCp{T2?ezuz|Us?`8%}C0SGs17JG^$g^=VG*R*(o~FXmM;bEIJCL zQFGR`;I%nbNY*?-4uT*rlBHG_jvN+{c%CzZuCT6^FGEQOu^@MX*UORWTNPfdf}9mT z0k@2VSSwx!h`}&vwfY4Qy$|EE;P0dA^3adbqod28e(hQE_c83DFrQU=|B{JzYS>jA zJp8=>xzdr^IJ%zk7H!z7epy68_?e{LsI3Gw{dOudulOLZ)98rw)Mb@>eYrsTckzIu z;v~lm>t&GO&UIu%*_tH2!9d)@1iuj94)4@2^@Q?zjd|b@rO4U$_HC|fTYO;H$p9W1 zC!@z<2xlYX(n;-^FHRk);2pi4#g0LjsUqGacQ9V-x3Sg-WnpKu+3|vmbD$^6G~vtJlMG zkUei8>bP`2`Kob#lMZ*gf-&;aa8xqiFf_N4QA_TWhJPx}G4vw+EboMZL$c~<KaiQqp01Kjy|9{Se*pwhZ7hxzY&ORt$TD&fqPE09m)DpDcg6irUY(|iF?(FGle z3Kx(qvK|od{}%MRG0W1$3sy>@vf>{EO^hw-Nt29xdwxD}t~+Z0Apld*>`A5*J)L8Y zB7LV(b!XmjmB=j@(XNnep8g^&jXA=vk^4=mTQG^e@ZNWF+Vxjk*R&NazoqW1Fw#^2VvINElM8PtHGK4mR;%%KjxaBzL;4^ z)dOodD=QI;-Nw1?q;x(Kb&52gd2i-gCu46hinrIx;D&MRxKmLy;bEPyhGp&(hT!HY z^D?ZA^e!>!d`BnSV6{CK_Kb9d8PNjSG4Wm}G&^55+Kn&QM$~_Ex z5|RO1xa+I;e&et-|JIbMS5XtHeD-yGMqMzG!vxvb_w_LEpQ(^P*3~XYhC@QvD(L@A z6?JNg^3*s643}>B=%S8}<&LO`JTJ9ej?{oAB(4+cKMb6!pz9IQ**)q@gcunA=t@MpoFIy%rm)dArQqnr#`1-7+zX|c!*ORp|f5m*sQo7Uswth#eF zLht#NXpxSOsxKc%%heFoCk7#lOoX+1Y6_NfKFMu;dq@>!^cH|^2t=a2jYe;JqD=bO zTG{0q6Zn0P%urljOjoMEMqF33)kxM2yX-9b?Xetb#x#*?T=xXsssT}tc5wwVtJ2yQ z5=uGq>fPgGYnsF67{iEvmh1Y3z~|;L`kKCg*a1oyr_M>K&>&zHGFVC&3N3- zpGC6_D0HXZmc@=ZR?E6Ow>;bglsHGLxienj?yScl zN@qF3d6Vc#C*G!ffe}?<@Gsj<=#g7u*$Vmd3gmnHE-Hji{WMC!n__{Mx(@&BK5|Ja z%#I)6Ft6N>?tGDTOe^7{L|i1_J5ozcIVtqUaAaf5J)IYK`T6}M6!tb~AR{i%Re)KP z?ca@8(|R-}KVd<_dzu_c+<|wE$Klyt{;-r=M@fqgEiVVo6e5nsEw%SCr-I#cwrRi3 zwvPN3tuAi2+gweLqKy9T8?SX{rxa!#UjKtX^|~`&_%G!d8`z;Mv@!481ADdVoowubcbZhlNH;!48ta~KW1GA1)UmkJYN1bsM-u zwhA{}FKwv1&&SDiUgE##=YqxP?K>!pgb+p^|C|lf_BE-F@qDEhI6DHoyo`0fl$O;z zNNIA|I;F{g$TgJ|jV@lFVv0fwYLDT|hMoI;bSiWM~!Ys_?pT8P5_wkoM zAi=zQ_LK_@6gG%!th{9i&+-+t18LIXe3_VwQS*$3#TN(btW~k`tclI42pZe|HX&EP zp{Q`wpAq;n6c4yV_LNN?IJ{yio>AmyxniCwZhMV z+TU~-p9xWFt1RC{JjuMefHn$VtUD4(zihNsm{>tidXTvTh?sRbUV%N}wp9_ZMuT6f{~yuvW2jM`<9 zo=sc6oD>n)&ATB<@Qf;1ZNP66*MOtop|G*QxTR8~rEzva+U(hn)1LBkFMXefs`uNk z$-|#H2ape_)sjeg_vqv~c3p}FzJ#YSN-tGai5EW<58m|me;oi7_gSAL@(ncK9S?x_G(={M+}MDGu|)XVp-HdLniPH ztw-?I-so$U`rRf13Kg8s56-mraRHnR8&V!dvO4_~gg`eKGSS8I*^MuohxCY(AN|8$ z5uCs?`f$y_i&Z0hih?a<#NI)0oAzQ?vGlrurnIs6BhhELa;234BQFff(PFsO?}gis$7 zy*G=k)`OP4#ZK4-{PJoRwpePkI7_*dT=69AAga8>knT{m!E58iDhIkhJ3k>l928pk z4*FB`L+u0Jcfrk+DAYr~riN~=TJ8IWldV|u(MLbrDVhL=HTG?p#&~L|)O!n$YPpj% zow}2BMmN66Ps*{nnVB%WXWJ1{x*}6@Mla-vJRdL#P&WTW+Oy@fi)&`(=BXd!vvq!? zm)e@!p^lMh$juvkoqEY5af2Iemymte3;dz{d{+R>FiZups5&OJ~)U^TIewG-xn+@8~Ul@^ze!3F6T)xmMo3&}5JL$Q`!J zGbLWsJl9e|DP{qQbeezo!NXty9?=YC2&%Y+#RM1dg+?Ax+B7+t?yB+hxH~EV?+B0B zxK4NhXLch1Nad zIfS{|j$XP4xQ^q7XyL)P%Q>LVth5_KNdpvmDz;w)0_*dbkM}Ko$wIO%Cqzv%cb_Tz z;TvDqg~s2#y;2Q>s|HW-dLkN!zG3ZO>@k4Ht;pNP|J)$H>i>1C9~6xIBE#daQcqxW z^T#F=-IUO~mcN7&(WBch3oL)r?ij_tIMlSx1twD?{6tG}m zb!Ygdq+Nk^P-b3H&2-b*^zQb?-Qq37)YjZa;G&J#eh)vnV3E57mTE$zQ+OP$dkkfC zx`#|aGWkm|v*8`ITEP$pgbmT`5EVP{2*SR7=T=!mzic-g;brdfa}(A@Q*kx6_8BEj zl`OAgLEVPFY_~8L_<7=-G$RHW6B>=hh^|5_qM4E{WG&TW#5!^O#Lk zw~KeDAU$06iXV1yJhEye`N5<=>NFy51r1qOHaiEC3&7)tC|fWb(C;SlhqB+kCq_^3 zib2O_1w4~lr}w3YRBlX(FV)R^W<{Rcd&##8Q{n;+lw;-lgZXaIOXE~vt@yI~X_IFE zJ3}15?E83n@367ascuOEgA}No$zV>K{krPjxg{ z$yy+`1B}oD8<1!Qg#Fw77x1!+T8d7bg8MvoKu|>+K=EZ?SY|eCNzL=O(5qRS?&wK2 zGeh~hSox`QDd@G`y$c+EU+07p`NgZ{ zd!aX-xFG_kyQ#W3mA+%iZf_glFye{?(_f6Bsn9T}W9V$a=+uXK79Qe^YD zF++BoU_Oh3Txs3bfaV%Wt9r^x$mR2Lkju*-&0wS9FD4-^On=I>b@2@ABB-H^YPG5{ zaL_>Z?;8Eue%^o6mNRb{FJ7PgEzw2B8uOX;tvlQn?H8JKbwT;SHT~fIe2tx(!Ri(H zyq1R+Be7Tzrg3yUa<&atSL-}oww>1)JY|Wm*ti>e#E5n!OGuyL*rc49J@VT-Q)-{0 zADyFZ*sf==p|(lcGEYyq2G3>x$*GlyAhg+2xEAn=?dSICY)pVpS4-E}lh3IE&PQ3m zm-MnfI+iy;joVrqb&YDqbe!Zee5afAXv?GFJfBquu8Ez`BOinhn3K8GZgeU?33*{G zyx%`d3t?{Be1$NBz=!A1KUsnEnzq_m8>M*;S0Cm+X@bhr%o{0U(6raj%&3XyD~V?$ zPRo4Qoxqnb(IOYt3teB;s$rQ-_K|1}`dRz8Os|I~cV713%R#1#l+$UhV-Psv=Afh8 z9IaobmT%%y(+`b)e#-U$v1Bi-$mlD%MA^U>=#PJ|ugpNiDeYk(U9b`fm$+pv0YXzj zpmNg50K8!L@!B+1KYO9>Kg1_!%!{bLh72SMtM4l;J53JGVtv#MJPv%$2F_DR=)7z% zfg>*u4@de3$BQFoqFWha%$ys{?BYO(4FJrtz)e43=d;>=Y&L(=;ABC8TEO*16O~D>ebU6!jw-~*H0Af%2VH-Bq88*Bg`8ea zP*Yx!~))x+jHyD6ZLcYRP{w%r1hfX!D(?2ShN03TST6vo_^J@>LxnSpy z!-&jx85`H^D{h`->xDKa?Stn9AL*lQ*g3VJoBNY&BCx@#>_&Wss*`a8tPr<-qR;v8 z4TDqj%V-LIAuGm`#?N|6UMMzIp=LZ{`i*XF|Cm+m0=xSWMv7^~Hf9yar@B%g8=%9^ z;;WE|7aD<7qSm^3xYbdR?Hi=Gn5BwDz_u{XEQLp=qX4&v9Z2?iqu&D zXo}5S+$wTjG~~1qKb_s%Y&vEm@H%5!|9%&ryKmKabJ5`F7L-~f94S#cIunye=!Y3Y z`Z>l_x=Fa#`sGO{^pW^(9^$C=OptzWA$~qi_=-Yis>6>&<-%=Tdd(fhF-}lz+EAax zY#rhmBs#ufYg9J=N0aKtv{_uY|AN`;wEmuh^D*P>@EPBByR_2v3RHR>8Vu0}p8BHX z1bvinFgwvt1M!}K)nH@dNe~9>Q}O?^hEi$k)BG0mlHG~wI5yRq^NCEW zHKQ${!o=*)p{m-l#__n+%<&9bRS2@D zuo8KwwEEat?%i~nuDBfEdRc@5{1(CW11Lzbmp2m4(^*>ISU%4nkreIoTB@T9+Zo8^ zEN2N5fvl!)#JjUT6Avc24EwYtu|OlVoi-PRS{0c zIlQlybqu1!uK}b0&A4+tBNojvsc7y}jfoB2l>1kVocG_*3%q+Ybc)Us1YZVNsC+?x z+Ln97ir54`>sNO>doOc;!-K#d_X2Sjw0xfBw^kHRl7bIEaPWRHIpoj9(kMq9%~VVl zY-ydk%Ictr_thF0&*huXH_cac;od@_Iy`Ty?=>Sz{`Z_7N3?a;rLStXluw<9Eklr8 zm<*mNRiHE|vvqOe{2_10#Y(ZZl&N$Lqlzlp@2jr=e3P`Y!i~2alslJ+?10(&mL>X7 z^Aj*zO#%CKUqOfHGil?R&iQ%mu+-_QU*M?Xm#ei`c#unUS3ZpXtwj{efuN4gY#`wM z3n6G;mu;S7_nYl(lg^|O@8IhL*TnbXz4rG)-XVL9 z36pAQP2EgstDKY0GQRo3Sb^pM_y(i^i6ueEwT$w2OWkooY=fzfl3w zpS8sbyXnVpUz%Ib=#Qe|$M1det-|x4;#elho9^F8c|?n^BpjG~t+t3Nu_v-AhuN$) z-xMCD4+Xz0h#c1B>?&iO!{*_Jc-2!gzHm4O^GZ&LEZDeweMnJ4-~YHwyaXF^I<*Qf z6b!HSpKD?@!kHMuC<7f1RNI7ERS1c{e&k`HO5YndbpLF}T z^5{eoqa37VV!cMPYGS-8IFn0!UPI%5B-0U! z4}OIY{J#iv0iPmh*bl!qLi3r^-_`xpwx%16JSg{E|poB zD@Jb3N9PoesF{pX+hwLH&kqwZoy7p=5fJf}D}B5;aJfij$lv;QxIATn{AeS(1t_$h zemD*|Z)pHp%pFCC-hUz%vyFL#DRIy=DT>_`cq!pC_h1G zZ2YUu-I1! zE1<<$&zD09M~t)lqdUeJJ8&7HE3?;b1#zJ*jMYz8PWQ!~o0Qd<`sULm&q3T1gW9*Q zKBeFV0z+#lSHL%G#`QXHje^qpe({E+5b1?YY^Mc4VJNLvMxYpYlv$m#9EmAIo%{Ht zdLmRw*;)5u^t}2i2v5(p#38bu#yOKFoQS zbEeZwHp*wLJ;sK%aWBnw+f_V2wr8$^mvt(;{_EyRI6u@{b@Pi%_nKn_=JWQ^`MAp8 zdsx@%a1-20I99j}T(A`OLxEEg@6;3Fcs-lKCJuf2y6ON`0>(&VSZlt(U#l+@8{Bgr zRZ`phq^!aWCJngw0ZPHpr2%|blQ-7pjPYCV7FuM2NwCC`X|%f;nf2DzpN zvUXV{Y=!dTLEoP5E1l3#IViL;2@Y4VIh;%u{O;9nO(xbKU)^QV5PQ~=-^#Fw#O(f2 zR#@yo*YLC+#P^l0%_PcTB?gTW4VFVYa#Md>THR;?`kcDZz5JVkFlk2R&+pc0pbmDq zz+MvW*Tk!K%u^Xkg1saL;1ju?Pn78N1mj7NXWDN2%)*dNTN7_hB9&_5m9*cv0cZ z_h!MJNW;B4Ec+}6&7q6ZU3>;QwJ%r(12x}CWs9A#IKQZH=)ivd%|3rur7OjI>a=}V ztuU`M>ba@rxqdC_3E7J^!wDvDTiFas?t{s{@ThrZ^@emMS>JmB0?yS*U*|#aTkRE# zSsrz?kwXAPA=(fH-EUhNJdZdlpS z>PDHh%%$4(Sk*Tn3q02Dy2Bw0>Xe_lCVN@QK9yV^6q%?+J@%WyiuW>vuyl}TFX_1& zkUm+ak^0>_fs(W$73Hfdmu&-yhBrs5+;v&T8 z;*K`m%ckpo5I*JC$*7ljKI0V9oa|!gOxDQgdDG+X^$~&?j&?0-U21ES=n6e9Fu=NA zsZ3_WJ>@xAhhuj9HZOSDg-Ysq>{}lLwmodH3~3oit{*2Gp7CITy%O z;YR54d=;ZX18{N!)w z?|gsB4SNTL-&QNrCY%Pm$m2On_#{ThxyE%Be?{E~j^Hc!&$~&oZg60aADxK6P^C4k z$o$+=!+RiJWlz6cjp;pete5wlESMx(9mrYpiL|5!2&e&(uAgRbu$B+kf0FE(_g zyb||FhD3~wagh{)e8kzIqM*g5qD*o=NM9{=Shq0HZC zo-HD)b^VA!SO544*F*1pby`Z!K5F&7T%dX{0P&jkQorCBvnX3*t7(X^MsdJOIQHq5 z+J}XbF>({B*9OV$k#uVXb-rhwu*Y>w^JC{6oH6a(2gm2^YyN7&+;F~u$W0(4MMzNIox5#kNU1x|zI(!EHFi1mHa~(~u9n^9)aPObHb2Em zyh>i|n^9$}NoWU#1u~{J=xOWE!;fSrw z%YZL)TXq%}%RFw#Fz3%z3+GIuo|S=RT-kX-N;6j`!UKD9-g-`=n)8)8@pgEJ5mrYL ztXa>bfVP=E&%i88C|rHxQquP0(;B(&0Kr1~XpI-UjYp2|jJPip+`*cVh0IK}Sp_6q z%RkE!fz`hRW0aon7G81rutG!avNgH-puL}P?3mI#oM;6Z)-=9d-JYLlYr1n-Ni_5$ zTBmtj(FjWSX?JWg(_6H|C;yh71Ssr!)eZ56*2Xr4x<2*Ht6uXC^1+A;U-Y_AZs@8K zhLDTiD6_qyhHM*c<~b6U^i=v3R5)=Pbl|VRt4wu1XKYYf-=2n;DctHwA8KVY*OJ5Xm2g=#X4@by1LBwzm=V8H*t6*j*Ag75+V-a6i*?oB{7 z^7{{e?3`+sJP0WN+M?{Lz^q_N(@r*x+*#Q(C}lAll2v z?90_G9Ob$2!kE@et%Sq!{p#q?h`ET%ic0F=zR&a1RmKyUT&Q7C1b$L^jMF}61CX$k= zg=&9CBgb8f&FO&A+KT*|a@a;yBsT{%HMzV!ZE2u>Y-{{RaF~cRjo%|fm1#7*)t1*T zgBE9#d6Q+qtSMxYi-o_52l|Kow|(Ah9;q|da!Z|qQi1_dE{Y=Qx@X=l62j;QM+La= z5xA?aoIF$OGgmq)cJ@B^YXyeCz`tB~YU#xE+^N+`Y6s?XNju-n745!Idf;4S&=yb* zT!{+M%F0$^9$})^W(wLfc>T6kMEs}mH1r9hqmb+N{VmuP;U+I8B)&l-_Gh5p*ep;| zZKk2?%*9K7(TdwtPA#cPZ%r{`!zQGukwkpOwYCv`QxnV>XXQsQq}7=%*Y_DDyP%^w zZ#I;IqPbL*!{JujBQq{LQUrPBkEM7L_NQ)8gblEfTMYGy9t|ij4pqX#P6yd+4*n=cbO;@6Ds0V&$e6!-+M^qArD*fXtGh3_eT_m^Afx+ht|#DP zZ``S&Qr*RR!fFfKxgtGI`EA=#Uk^Tp$iO&>73X!2M^a?;!)_ zS4oFQ&Yd$mtJZo1-G|tF5{t;NC=MkxfspzrV2tR^!S2;*-9uwoug6`>6!GlY6u}H@ zQFbYzDZRQ!jtP{1^4ij&lEBw~>*(-5k!oyuH5ez4@I9y&Z^oU;slvyuT~7v!5N&UETbxTQk?K zde&BbiRwNE;?9nCI{oQ90Gu&@C;8qP_D-=KvU6JIos#edxEUY+Rq9E@278i|fnVc` z8+6k>!5TkTyH08+Sq}F_YWUjj1OM+AfgB@8hwXn$DE{vX@?KPRfgt!#F33U;0VNUB`=t3M5mhvY-)ov$h;CU{h)${MRNfD;pggj^y z;~`devTYlk`*S31TepO(yPKUprenS41lzmq*3c98?vriY6L7Q2@{0UzN8?t5P z$16cdw{XV6U-1MHZEO6NRllo)7X%1+EOCyn#s{_kVnuaKPp($6u4o*iU2rQpd$O1>7Y$|(=)~i zb(-bysHNX(y8Se-%9*%5DfLy^0DBP8aycRRmYx(`?xjW|$N z?w0Nr5g!@ia-JW4DIFj(P%D(4*n(U$N8>Y2<|%a}Wz zF0}NMDh1k|ySJ-?4>$hGM7JS$&C%c0|Js&o2*frHzzq$W&jp7VV^mfz>4_1C4>AyMlLj$GnD{a(G|To(_z@Tzbufq~XIRs4Kua%B03DvsAmzQ!hvH|n%!eo$+z5X*a> zm-mvgAs<)V0o8E@>7m>P3aO#jEh{gu9-j7-W*S#oI*n_F3oQ#WBj;g|N|A)^zA%ik&1dYZJz6;Gk{x0l~diyqgf|0gPJ*-wm2Q<}aFA$L`s@XMm{}hEn3QxF zI7lxf=}FlJ%f>68?<_-?Zrm9P^z?o7NQmoSb`zo_uj&v`)GQOahs2}LR6iw%;fM** zb&-$0p(l2x>KB!3Jy{CTbz)eTPyjV;ZvApS)C&K{`jFns9~WdN&Jx*eP=<D9FJx;jLc701 z>@(i)_G9vbw|AQI@w1KkVn)P#_&R?cl7ye3U9_M_-wE}E?qJegw{Tx~h)KWK3GWWr zTm|X{@qyz~pdq?~D~KB8iOUp@kY6Rk*2v8lwdr{Fs$=O5n>W zAS!m2r(U_ok?9oGfqCT;0eiYaYi-{cs$fe3OK9YweYplxk46{t)ewR+DCj|`iOS2U@@dB+!t zl7NG4E1|qa^=SU0MUw;wc86nMS6&Oa3qLu}E9l{%aCc^=V7E5fxtA8UFyYX=YZhf;LOE5aP=2hEWbH3T>>ysx9 z^7TD`?G5pkQ@HExUow07k;+mBHY&fA*B9?2noF0(6;|5_9fYRoJh zy(d+f+Fu=tMP`HKw-AESYvMw#hWONcmpoN1cYJ32gfysqO?ZOXGwXPicb`@8K&S?1 zrTU4>_qWIITgu2~LA`{gVFnw(@lltcQG?GS#Ga|ba60qHLZ(HS zBr-&t5?744NZBs!p)h8kQEF=GthJ21qdQ#Lt( zqm}E|{MFB%(N)wQ(<)J3Svqx+;MeKHY85r^J^%)R#av{?^wF)3*Tp>nQny({utvXw zm5Kn4yGPs3V!zYPPh+)>u!1zfXh3-m{M>Z(Le6bkCq}agPP8?H=e|y>Xu2LM4pdgH zZnH?h7>_SLkW&*CemEk>1ESD8cHG#*x={i$3`*N)Go=Qs?&1(#WvK5yA|)j0<=Nem zZ=p*J@G@P*-^<1DaeX^tIqGWED=Sxb@5uMcGffInU922X)E_Z~`1uT*0T31|FTW9_ z+&rj1d~Lg~b-dZBNaiHCsf|AL1gsEi$|g-wSFAwn!EfG$=1=w&8`x^S-6bbBHdB>D zMOpx!-#qUYAg7q8q{K7(dI_HEw>u9I6BFQ%*~>KII1ZecFgWXji+DYP*mJb1}R^9*1(GTDGgL z+UsUn7*bf&P8lpw3aZP?X(|+PfH!9qdBy5-y5=Jcf=!17$%GXrZa3ccNgP4sn!%J0 z|DJ=l_fCAmUgWaNpc<@(z?(b0iz1C%k!hI3;ruZH!T{1hNC47-rUcbvagdfDsFg%=c2#hOr?wYH=<23;r^nxEs`-welh^`Y@Lxe zBi?+)0lo`m3;Kd~evI+_s|%Iq2huuHv|-SWQ)cG9%ggR%j%1=5O%051^N8@n*Z?Ro&k$YB&l0qy=RBlH<-6Vuv z4PyX>;mTo3ged~ZtQ&wgVbgK^Jb{XZ--(5A#>e_uqDBL0THx;j>h3w$#Vb1WqAuC$ z&f6;I&JW8_e-nc7Pw{5GpUnYf7MSdxCqTCWG5F!TtnI;TEeChq`a(wLE z7MN3(087uJ6R-@)+V9U5L_wTZ+WYgwBbdILl@+?Qi$grW$8yHy@Tr&0^46>O4|ik; zE4s*?fi%fbkzWo%KxpVx0PD9*8{-zud699SXg`wu0)$XD$&ot)#D)iq*VBs@J3%S* zq>^L%s&~;$%&r?=g}Se!Z4#6to0Bt2hEZ=s8y9$Tzo68Ha;-evA%9}Ph49-~MPy-- zpU8WCM2r%0C040RlrInQG`Fq|{(mW0aD*_8$ zSS?O=)p%7ot%8JD<2|SkpYo76s&t!2@@7tCEls_Z01flKg$<~hElbsw7uLh{`l{&e zklXJEVwItdI49chNg7qf@rgGtisADfttpsH%-PanrDFh#BwV|Q`K`pGJ`FSNQ9F-& zYW^m>jKgT@JI{Iwei<|Ws;tDvcYZmJQe=K&$>cVg0*EKuGk78{0bRz|hzWg!rGRHe z)2H)ZO$1>157pja%P|ex5PCA4eze*EiwRum^RX25GI%;#89!A|RDD%XGT?cHz#Q)# zpWbpwy||{{k{9CzLMYA|(gV{|KYxEC}7#2)tL;v=NTeT3^xI;GSo=V`S3rnBQ%V9qXalOOft zF|k|hpwYQ~QlPgsGuMT<-aS_s4>P8Z#J-$iSfQJss{Y}r%I$T;E2DKjt zLceW**{9O+x_D1)+c`Hwy<#rODHY6oLV+3KNtLFsS1*^=mc zOos9MR_%PDSfN!_ZE*A%mSFyGy`8)Prq#op2xBQ3r&tzLSQ9k;Y1wsWT4C9vrfn}$ z(N-^1m5S_x<%@vH1)f?NR!*9Xq8RtawD_TsJRZ=AxC>V62T#}r>efgGi5cm9KV};U$5{FT@@ZY_WvI}`O0s~T8-jRekI>dJ zn_N_QyvgQ!zJHn$&&tJ#Bgu0o+W&m{N^qUq5YnJ1o!ig+;K7oj3-n0dTYA2mtk~vK z%5W-wC_vs&w|@dSg}MX0`4}khg!jA!O;@#}DykhGEABeuH7<08uGdTT)YGphv9 zY6Bc9>c#D)x%E4H8{TfY365|ENG<0#nhq>G(n8aiDD%qn=0S0q@^&8+h|o}Fe%j~w zlW{?lH>F>38Q<>Ws4=hkm9GC|N8$?t-N;fmxEdn4}6m=+E<%L8v|om%5D}@SzKLR1#U{ zUt9@$UAx?xVM6vXgKy1Gu!O>eTQ9OMS_h1kxHG9fw@OvV2~!Ffc%A74W&R5Id2aDC zVzD93J`Y#Fg{uAXVWgj0!t(5H?e6b%;Hz(|Za}@?lJ+HihL;BZO$7}B3Go5lrV);Df)!V~^w#+Hr-N;dwW4~HUe z4AoVsvPw2$-Ax($iTGKf3%ZykUkf$MRGA!3e}5zo*I@}I1DUyjT=A+m&<3W0{|0b9 zBhf1M7SQYT!g;a<$q0CT#4-PC)v4U0B_i^E5zj!##pONjd(4r$bdANPhw4<^jGLwl?(UHWs+k}TdU@dMc#tys=_#DY$p%JEKH|b_3_tEU-Kw)xL zk@!kac>A~^kW1j!E}VAMiF`nL1%J`2D8Vkc)i@*eMyQ7}GL4kzhN>dEgzU*Mq2uMV zHJYm0`}!$TK)uAf$!3xeDVW>%tGvx|WR;WyeS@(2c1FoZeMw|jC8IH=``EOwT0622 zx0~#D{;+O^DWyf_v$)%&+r?*$wKsR$9Oz>bnW|d3{zem)xX@ z7F83Zh0GNAdE&1}9uJR7wZpiD1+fxuNLEaLFW#u110=p?Pe!EvJ{E?jsyLfoEYPr`){?zzIt#5P8x)p-$YbnItV?2$BopNx6go=dK^=Ar)=S9ZS8RPRr;nJmkyo6CQ!SoN z1Zn~I)^0U8{GE3CB?gtPTQgi%tsQua_hR&$NNfqKtG&i;G=d+ zAsC2K&@*`0;}A?SyiCe@#z& zf|kO)uBu6`w@nMDgSOUY8tsX?!W4{#N)c7>G9TdL0_k`ab*f9u;-uV`VW&Xc-MW6r z0YSZjlP4Q-$%n%syN8UilbrfQ8rpo_vm@DN(>C@ZcGP`a#9q2y5a^{Q>?33+G4ECt{r0rDY{D>rQp+R@61E_=|s{@_+n+r!NM0(?eelwQqF_-<8A<8!UNAfON#FOgz*3vNpv@v{kglG3BgZ{m}-7 zmCfwQ>_X)2oeJL6&>x?OT#@nF((hRDeWJj3>TLY`M#o0QmCBUzR!8ipZM{YhOqkt; z1-xN#?9P9bv+Op>cW8(2&WV(@WPA6Tw7hbAczh-RI$Tx-J;I!0Ck<5eX;f6KKTIQ9 zoNNXBJg)ww^2(XF!g<8cNfGYZm%7hb6(%Cian9la!?$~hPw=uB?^?)RFy3IcLFzH2 z=o*!?b-V5zxk)j`7e1HD!ppLKL~rkVCvZzyK zZ#1R#CRRyUK2)5(s4QqRAy>X73lD0imzSwKM3n`Oo+_^2QRKO&$)DK4PF{RPnq615 zDi0HkUJE;>KT#Vj_gB6z>mBzmI%h!D0jL9Ac?m?qg4l}5&#w0; z$X!U<#CKe)nFsJOvqfJ!dL1H;P@a=?h!3#ch`DX9@3AEKa_Plrg&`Nd@)QY{Dn`bA z!=FXE@R-jhI3_)(e>*o~Do)v*W)Lmp6-|*`+Me~DJQiUe(n^B~78yR^T#q`mL2PLf z!_oL>M2a`pQg1anl=HllqY<>ZO)aQ*aLG{WcYDQ#1=RI>HQm2`(|M0thdueAmAi*% zqMQ-dG&QS`R4wKz)Qwpcd|nfacKk}qyz<(C==P)7f=E|{Xo=i>1@%x_UM$aDYJdr%;6r;yuC>le2@Ueg)E`9kxWF#_;VqU6%bLlk>#d9g@ zA9k6Zz#Kr8VyHoF9yuNFhM#|K(0NCLP$}{-6dOK@p9;I~(Fxg{_cMESIh&om@2*V- z_Q`{vd7`X~&6#BIyZ9i^0J?PnP>eJWR+7?(RL0^E3$}?I#XR8dR>=FQ`E=2soKE&E zX}#Sc|5nc@qLIxw&+WRyfplP?zxcfVZlqiqJF$@fe*6x>Qp};EQv$#DF4p~w1t+o( zVUrL1=kvDWU3;slRRdt*&ADQMTR~j4VAiZY+m4ve?aumqzHFh5{Jc-5VuPoGfWwf6cB+8Ue7og0%gxKVEJVf*rt`$8VoCqaf;vfU;S zNRRIOLRukh$&-sK?Mdy-d9^-ug}c|HVSdG;8f_vZo}Ce6C(`7@ z(mC(D1a1#)9uvvy1$(2??zlq?nbk#wq&PI1(6--dE{|4c3g?pO{OXvaz?!VLH(Bwj0TT=59exy^BbvYxn)K&lH6(wW1bR+gGNB4_r$2C}rT_S8BE z_ecoiS9!0XMJQC>#72%LmEpyfN!I9Ks zSk8ztP*&Es?9IA5W5stJFSi!Q5r-IAMo^AGd2y`?w*R~k5=jwFIPd;Ox_f7(FM5?Z zQT7N;lqvg}t=BV)=m4&@Qqq!N7xv?J^$W;U(sk${x`dv4erq+?%_@;=b;hhOCmN_d zAJ$4sW573OT+Pj*ujp#h|GT9~5#hcA*BS6nNRJ7n>`Fc)%`3!}^M1`q`0Oo-)-TSumoTQzY}4yn_#(z`v9Z3k=( zA6OasWdfq-3-fh_mhLG4^$;k&F2?{XIiu9Q!mqziPq2zu{COLac}&QH|~I4H3FxAV^bKoLKlNmo68t9x4!i`9tD zm#)L;_&%844EWL;Qy@>81ko72`cp`(EU{GQ9_g9FD}h(4>N%4c(=fURq5n0TSauNP zahQ=B&7Af1?!*srJ{N(~T~_s~IDemCnz80ZPFE!k%3RJ>} zzGmPIJ4F>q4aJQ7intToAh{Q?akfk~zNt|Qt#G5cKK4*}Q^(b@xnD3oc?~|c1W_ha zC&6&f4cmh@BbAo`lQhjvfrP{v4Xh@6DNq9()+a>krLz8pHuz;rR^3c+PvKDUkkZQoE3{*J!&Z&q@mQ05zpX6V%+puNmJi+8tQJ#h+;5pJ>PNH3O=em&}rS5UA**<7emidQi{%}ay^pk z55DlG9S`_a4b8LX+VtQ)UtYU$6DfMf6SRe|dqTbqpy)Ngx&NNWgD;lsLh@NVx_o$m z*4(>%)unH5^=mg*d04b^##qplP@+lw$IK!;S~R))N}fTI6wp7+hK1@L0!b6OaYSfv zzj0Ts=`y=nWTxp?n_MqECoEIY^n(P^8tF7pLX`-+14NA z_KCchX@)kF*M>mcbi%d01v@mik9; zBOL_EyW5u(qp!Q{rPL0|%`lPYPKjAd>Z&^p4?nhW(DiAR?OP6*jtL0X?mC=1Q!l2n znp=<`@9;f&JB^3BxJg?DiuZxAYZ)NKeqAm>cLXQcknBD~F0_xxtuDc=$a+P0h^i}a zpQ)=sx2^97q`OdN2M$+gt2R0GNqMDRdC`t5g@t0{Y}-`ZajrS>Otpas8qGQ7K6$(O zH^-u}zX`kM;D_TdeAWu96Izwfkt@&Jal{8c5POEFgBM*VPg?TN2b)AoiPPx<`dUw; zt{i{*K{dj#(mr~&qvMtnlTti{kLTOE6WqL{3<2#m5J9#XN}e`;4*>|4D)HLt-&0eQ ze>vJI6z~Vpu%OW|7{>M_*vgkf=fk`PR7Koj4x@dyRTvAmRZ|7FL*k7eif4kW?7a{o z-0L^aOwQS>QN3p^|C&%KAvaM}we#*jy$?4x<*Mo+>J7)Lpd0moEi_dub=v+}daPx? zJ;2HkU^z~R2s-^z!$)e=?lLgdG7PPl2P$PgfL*hi+A zt&Bts)3Y`4$$afK8JqN_4;n$Ko8xt^4xH-A4Zo(e>6`T9Te9j~XA?Hr4!_G#afB@` zoTP=NM#f9&7?T&E-V~}9=wQSv(w3P-I@(z1uWIA(>-d~M3_k0;9Bwd;I3a!@g)Tga zYUdrUXP;Js4RZPfWS+6JX@KUuk|hAkGLD2Z%2vD?MTL{`S8t8FwXe&PUzXk{;u+2G z(b7bJ9m@Z9Q~H0)cJBPessg*aEUW+br(+X>%C~>~4VUd6=LU{Oq>(QC4GRs)%KZqx zNO=iMh~`v)8kF&5hML;5y#)Q)(s#rV?bV5i^?!@mm1t_bhwtBY;gfIr6o!nkF1Mn! z+V1q=M1?D5Mc{K@#y$B9Z!aatu^*SYZB@6eo-1?DrK~2}MS2O=sL@B?0cq-`jdLYk zmf9z_g*wROtjnOpHi}s0zTC39Z*_&ydBbe9>1eZ3-(qX)mTV8GVSbVg`#*vd3#)xa z`Qrkpf~Ab6|AH}dp@jaTj~XOfAFJL=A>@d4FDQo!slU;Dlr*QT%bbQe@2H-&2bQ<& ziQ10V%kMj5bujy4WcELTFZ;h0a#cWCg_H z(p(xTp@0QgAK6A|a~p<*Zk%6gFLPz|ny&5X9o4pE_pQB-FLG-=6mh-_-+LCgbAfoW z*RKIV@AQX)DA~&c`CRx1Yry$=n;YqsN6o>Zj@jAx|L!0n3ZK90+C4FdLw@|*@}i?6 zKLz@I3gSsON;~62L<5tXwy%+?;F`kTG^zBcx{R7*|Np+IJrUIP@agX>a8Ru}`q%b< zuZ4l~A!b-A-@$*0i{Wgw44E%j&G+XNO6z6qLFFxLeSHtxzJl#OYjn8wVq$UD$_&4J zA($|I@`ppSu(X=6+z>r-hgcl8t1ZDcb``+NJR#ASKF5t}0ZghH=(_}au-%_IxY|JB zo@>=VD7vQWuA~J4ca)~O#ImZCY)m_k^0)>~PP+_ve_Y3EOFi$&ceX`IN56 zC#6*tq{uACx#JG6Gi0^GS4-azwm!qrIV9_ld*%H<8^SX^ngza#HYZ0@)C_%1j4X&8 z+wUBNgnF^GdYF%Hn1F3lAa&u~_olJDADaG!Wf*a0;c-6RX?Nta1_MY3zTACDJbb|+`TQ~Hr-rvHmmxYjW78R%q zeqs5{uG%?+ogImN@6-J(#hXTxX?g*lt~zk2T;rx}se|@^!bUyNNFHq!A;*ho}`AIJfQ{ymH}m zf9LhcmY^!^ru_d8VU&Hi^IAi4xFTwhb~xX2zvOto$kQ$D&UDPrF03}NqXZKYId_UaiB04$Q<4v^ zr%dcQ^!yUUFgakK-@kh0LmwEEs(v1722ZshEZbM_jsUOSnuRfm5lSi$T4*;B;SYA9 z>!Ehu9gs&gV)q^apV_8u!!{;P_9G)2oFGA0Z1iJ)5XKx8xoAI;lHx()EeGdxb1gYg zQngt@?1`Gh>P!p>n&&M7T(nG**~x9 z_Ulrq1_!wF3*PdXi?SA6E{PNyRJ%9t%I_vIqr3`t;DslXYaWg&Y0>SE6H_LI$*VR6 zhXE&uDzL|5x3Vm(zO8;QB|M@w`{OSMa(Fg?fGYjw1`|A6WeKWLiL$i)N{lK%Lyn9o zrH`cvWpLLT$LQkOXm(EFZRjU%j@9BriW%@HCzDOG;VxGUgm3AkfU4evSI#mp&M7CQ zc^2xAP5|s@OCO)gF9>#f&s(a<#LrbMmydfdF>OMblP2$xnw*yu?vr6%gLOoe_7%Ch zpWW5ilIkHapES)sz369_p1MFNQZebbz2_%GQMwNv5_`b;>}nvh;&kw(3NgQm)6=Wo z`cH`7tAP{=cUUX$b05g#&4Tz&I>@Q8tDlDPO}%Ght5=TSMo7k=;yavRg~3<})Isn4 zF7wuW?mkTLG75ZTZzpz3GpO*(o<`B}mu_bCIe^l5zed=9EI^W%5Tw7)Ps!d-zr>r{ zDm<6mW&YmkXqIrgTfEfKA~icH&wTlEW=!GiR9M%$p`3Yg-dtYkfV;eqIw_%??qmY! z*e^LgW84aDE3Io>T{*;^Km<$76DDfYn39#)U6&-*Wv%5B^>DA3wvlYHqVlYr1!}>*`)1kSE)3O3 zULI%cbJlSCM0gJf#cDjU9rL%2++*DYC0p01#)hDC<-TMaRr0lUd^WOjn z{$gmFBMKw()E{@KfeXW6M)Hp|T0)6^4$~TuqKNyhTA3mEtKV4z%-U*MCRS@!)8@1L zD9Y`!=rQ%}rs{D4VvM4xvv|1H`)XXG(jr`c*M^NVJ6DE!Wl}^9S|bJcRS%sZ9Xo?B zq1w0YM%d_UGjPN0<_25f7fpKzoH)(v%}@EV%V7tIkWt-x(U_uKTgF@_OK<|#tAvQJ z6kAw~SddA~$T!Q_kx#?B7Xd`I{b5EmhV%9W zcf^tO+oY#HA)-*tUXY?!DDQMvF8-oNXiVhg`6zK0FD(g5j$4S>Al}+pQ>V(L5?~V% z4ok9kSfg7QEv`P7M3TiNoR4Z<^KPiI3E<`E#(c(!PwfT6tlz_$t3E) zu%i-t?{kr>cZkPnUU&l3gsw}$gr|X#wq<#(l=A(8*WovLzVD}>I!hZ|JD{X#^454a zX59*c4$AY{d{n9qdDu3~25dNb&t}bZ0vl0aR0M+b9hOK5rMK+S4=UP*t*d)fI{En8 zF4fO8O(6XM3_TYIHI#9K_sE8#ozO#EkJcrs@ju)O$}5{(1DjqcH91_}ulG+*MxNf# zvwS9&hnZqHfk~I@+!P>r_%#)^!fFvc-ra)D3d5yYwLGg|>$q)&$pPZC)j;)fXz3-~ z@DAT2Uz*?zF@4P-{njX~NFIl2@HO$KHJxP6WPYbJlZZPKXGsHLlAvFZbJdy}ZCr&* z%^Ow~+Px|bFY2po5tx=J%?ozKjLwjLy10FgwrA=RKo#=UaBzZ%%-tg?DDp~{I6Xn9 zYq}=;pG0^Wk1BADQZrisIGGG;$d`@as13}Fdpb`NaDq^UArf0U;dx=&p>SxZ`9#R3 zwT;NAnce$C^h;-V03fr%I=t$ku`QgLunfB57V?r{wfa}dR`t>=c(A8K|W-qOoh4AMYbTA^)k8HJF`&!^(%SpbLd)PT=%56PHXJ72mv4mZ9stWyyMxZsQbvR>4h-Vhtm5l-H;HOR zaOL{Up=-x#@6#wdItT?~ePp4U4S<|%2YUP0T_ofLk_%TOlU3)I3j1vp>~*~q#gyjs zCejNCB~rBdNVSu(;3c{H!*Ja@u~Q%ya2;}bUxlMkD#h#@mVk7+lqjK zj_Do&HzPkfW_rs7Vq+J-utZiH*QPB}dpC4=0mKUR^SeeqCu|fpY>-V`5WJn{+Z^_N znjrp6U>@zC@Bd+Tlep|Zc);0qClKu6tS_RuTG49_#>^nRl0H6bt?XR4zWaH8)*8(@ zkB`LPppW*vaBadF&zxuvh% z(8{|#Os_|Pu=Ar1nL^#m;r2lAR%jowjH+lyK)xX zRcZqxib;a&-F&;w5>3jDAc~QA)Dccu6W*n7ZdB8U)81cT4M@Xtg%MM0KAlRU z@eg}PwQHVcr#Tf_@22jf&FiX%IyMQrQPH!+4%9elTDZKuDAyuKk~x4RvTxnIaMab2 z&ct?E!$z}Xo?p6QzWUfK7fp{_Uu zP9&3SlvoO92<-}b%5sEnsW__0RtGzyr-rq<9*Sh&#)*PTAU<8EunIck+e(_vhIyq5@fhz9V8! zk>)m$Q&NfA&5%vvL>90&6wV^%c@E@`8R=)VEZI+q0!GSq^ymTkRYW+!yCss#lN~F+ zyIp{{@vhcF9qFCCKQ{%RdFO`I2^&XqAzPX!%L=A?sJi$&`I4c}_h@y*GwjDjYJkL- z-)5fCmwxv@m$c73Oz##Ub)sFUdHf{kb&cMA2HD}{@?d_f8%AAyZq7~K36o{B%f+(q!W~&>^G@bj-V{}0sLK?WVQ38>E8t6@(vGINkbIqu`!H6AaMPf{tQlqK(flEy zF7(i;2sKzabD<{EVc4KqIU27qVaNHRH3Fzxt7|P>SjHkRR4lVPIc1JXcfO+u=~!~0 zSz@`bkbOy70+m-5VLTK0CBLsJ`XOrfFE^!`TIHM0orVl!FeNv3tDz6-$8?IbtmY8d zZ6v(Z9vE1XYLtjmLa5BMu$tj)0~h+qwqr`9n&U@o8@|EA<&PJogf-Q zrQ(9hS;wQ1zK80Cs+Q4bDk-AwY3jB{c_xb%?~ZpfoE~r@*n)74cdl^A26LfN-xYft zP$^1$s*3QS|d zCcbuz_ZCTS+tDai14`Y`r0JsYgj_4+zW%%j2fTj=lrbH!N+zvQsbAP(V!0!_=DTAy zcxLba9yp^mC@WRW^;9YnI$*T+W-&&$kn85**3l$9O5o#38x%#FRbe!7N@Id|EW>?kdM$dwGT;$`F%SP|SA z4+K){V`rOL)lJWF$n5DBC5`5UVr@wyKA#%4p?ncr+P<_ zyMD0$^yGm39))RzdkJ|q$<6Ui#AsqJ2F1`C9+S@s>ciy*+W3)RM(ab|)w&XSeQWCA zu3i0mBl+RW$op{iufxdhs9k#yByGqNUf=wJO^s4Je$MXQ!Ka%wn#F^n-V#r`n5ohg zC%e}3+fkPrDO*CRv93>$ZN6gE9lP`wF7hQ$zJ>dvtqW#$q{3P)h16RXBOuKV{Y(2! zLpLb(OtryBX?jO;QnpQQ!Pi5lQ|F;E3t=K}KtgDfnRO?%T@yu@u*brv4b8zDdgjcg zao3K<&>e;`YmGl(+CklvF>9OI+BtO5j!*Ay;WzD#E&QS%SqE8w^R+o~74?TDF!#pe zgDOvI#I8a*AV>71z8$SB%}@BmshFj4oG4bC%``jwmYk4hxBQSF@Sx7RNmR0sp^|AB zdAbM-VxbpgZG&$rOKu1F(`~6*+#F*vlQk`@a``;go0le!I`PYoDgxclzs4@jMCgdF zow7FqS1U{!aV6Wavb3zd?e!cpf({O=_>V}AZ`dr(&(mji(!(7-P9U=gC>K}&G2|?D z`kK;JORQPIw6qHojU{V$kB-6}wbtC{KXc^Zu1LkA%KzE9)Zx`V*=0cXH9z#4BX;X< z&%ubm0!=tG5oIcYjrz0w{TD;yq-iVsW~ARj4(N}DzqTn7_F5!WvZ=*+Be30ducToRgYSn90)@Z zl^87zZpyo}`~p&r@~#AJiH7F2()w(6l#{Z%g4xZU$+|Zv%CzV$Yj%dFulq$0UAl>3 zRV@wfdChxU{hLXR)nj;;Y%|oq!e5CAEvy9kEPYz`P+;!18RyfjibaXKDe@a?=%L-1 z7qP#k4ojNaxM##-z!gdrm*#r}(_VIaWNtPO*P+~GHLRhnI4Lj92}}~LsSI;{IpR)m zZm#F)HhL5N6^n{In*9eHsJTjSaS&YRp0+2+McPOL9+E80s2aln|52Cij^(X1K z_9E}7hOBM~4Su(TyhdJeZlE}N1Hv){c)~OBp%)b{&P}3`Fa`KNB^9(fvlYHDiJHVP z#4fD1ay}T^BXhVJO@jZRH_{1OB;Hb4hC@z*SFR|qX~c5b9X!A(7&y^Y`LI1!bHZ za?&Ga-&3aaiR_lFh=Y{IyqVMb@)cHB3$cT<1Wkjn#`X2(vqz10(ikX(HisjS8#Ddw zmjbK%(exa|mXmk7`=V{O-s~Sh!M~;gS0TZQ7S@BU7ukX6kSge^F5bnhqgy^>xyO~X zr3e!atxB`Y#)R5Sv>dE?s4_}B@u&jxEHi{4x%vrW{p7tv4HtUY8mxlphb9fS#izN8 zX1f8C1cA26%&srmeNjUu3BBh=GxKAv+u$`(qWGuUkME*cd+|lLO9@*{BZKdTYJ;rh zdW$|F;uVAkqe-epy=T3akJ=7>f6B&Nqs%Qnt@o#<(94}sADAu8zTWura6XQz?DvV+ zC-~)pkIBZDW=CC)br|&b55-m9V`IQW^`+s)^2fb<-a`pS$L6sQCogA>sZU1@C4RCt z;4~|JIUpl7Esbd_3`vr2fa3`=k|5IQ*zz6c)b#t?K@QyTPV)A#I>fs z6xa_RGJ5_WwCpd{-h~u8xQ}W6EZ@>0{U_4}%AZVae-oMPz;f-|#QumU|BB`RXgeqU z(T4vknERtg`_~%e9}DS!m977#rThkshVrm9( z?{MNX_4Jk6MOG%Wq2%`k$-F52y{C2MaP>B2{py}K-XI78SnO(&WLKRs3=QJ`et*H47X<%A~@qTYO+@NcGad@jp3 zOztS69pbrVO`yC@l9`3Iw!fEjulaP6R`+y*JF?KqO_Tr7sQV}B_mAz)79E@RaQBz! z7-~I+fow!blJDR9X=i9~0b6~hu83^5P>5IL7ahT(?Keog-LyI_JzG%R57mb<=}F0{ z)QfhNV!35(pkg+0$2(S@Q)y)Fj+)IAT1W0N^i8P)`;lAc*i%~NON$L2ag2lz!FRMh zR^C(t2K{tXO+_rzPcx|aR-J~AEtsRHYmh7L_Xr9f}2MCwRE{d#n!Kxz( zZf96|!J+ihtCK-wp4V;xny^h>D02fz;2C{5IqFz@RVTbp3xrbJ;5;Ybx#QW~w$)Xt z%Mai$lh-m!%N~f~-FfxA&poQWtb}PAJ~AVsWZ7d48I7kq%27O2RhCr`a-6%7PCB)i zsjP}^*ejjx?NPeQ`zsS0Eo@#z&G!lv10&hbxN2E_m97T%c0707Jtx&VZIb?i`1$Ic zlQb(coEBj4F6MX**~PVUPD)iYV2MuiY&Pk_d{%Yr;A{PF_0pc78hf0S5Uutu8N)YD zI7@>Yzv_B!c2i=#USB;`0ODYggNkjCV|6Vy$|OwWmXMuIIZf2*iV+!xt!va4xV zdH4&y`@vmU6WCZ^^6|9e?Osm>l8^~wDLPswbF@bp=T?g(7C^#^_A;x7Gojt*>up42 ze#ZfQFE>o3IHNEX-@NGW<-pZ`rp;7Yp7Wnr#l!Y*qb>2Fg5gS1w?TRehrX2CQ;=U? zVglIBIj5LmRrku|Ut{;SZTpS%9)6}i!%2ldPxT;E8%wFVh*sXpk?0%GJn0j}ib~xM z)y{*F*Uy8ArgS0ZYNZiyl2&@mhe0ekX<=mDxFOGjk(^}7MSz_Gj4LRq-OzE0@34Lp z_Z4^~&W%K@CTa&reo!5PgS_-%&{?@sV3HA%Ts->GXS4{CxW_Sfq;vwgi}hP5s`+7; zC3bc&^)n`@d!xaV@zITKv3-aEA7nog@yV#A671)*D9;sF$AJ;&8K4qo#_V=xQ-YDmX-Af`fjGNM3QsA zs_K&lF%G#*ws-4C;ss0CH<{B_b5;P?*&x{uRX+*|e0lhOqx=jv=*5li({sz1op`C& zYw~#Obc@xbpQ`U@X8q}1!WF29xpVzB0^qV)xXlU`I%l5y32TL;T?j_)e$zk+Oxldi`#pAlBajeHkxH|L%XUwOJD|&Nq%+ezJc;c zrn=Xx0_tcq%dKsL5uO(t3YVsTbTX_$Q;{&CK5K`J!!FyeO@SV=N*i4+{8oH0^)^Pa zlYK6rhxI9&Y4A=;-Fd0C#xk?gc=XE)Ohy{Vde}du9%~^q$xrhnu0;AQ`&9VV z!L=^+mfDq2l;2`Ij7&DDJ&`J&^I!j269W#RfR2g%@1adu4f~DoU^63y;km)vrLbTS z6h%*H8_URR&56?dDq4LwY+?#IW-;LA*hULrw|YDRQ*$%qNfh#nON}({ka1FBs3UHD zHMc=A#hT?P&ZV2X(Q7p=Er(kua*FTtwOmE9vR$&>WN< z*#MC^|GS+CFB35s?8uFNXQdlNJR_?2TbQ>`yt-HLgjvj1HNemnmh~)8c3CfnC3qTa zX7qjG%~&5NiWX~;gQ0ti7$eyyU-jT??aG0?Pk}+EpKO+Eo?ZKxZT%4!bA~bjBJ51| z?i*v)o~%}-;qU%@tHly+#4ePn>^47D(J}S6K zA{%;}R-db}s9S6XaaP!nCIy)HP&CE->%{mAoDv`^-7aNcB|9+jO|G0IY9=TR0Q95s z=z_1(0iD8Kr=_Lr&koY7E@rPd(g9$v@4P+4&w;0>Qxwrq7J72u@o|tCxyeItLXXw01A(CI)u%E>Tl_l%N=bl9n)n(Gm;tSn8O)wba zhzyIyL?WgE;|+u1yQSi%r}aX|J*KvGhsWwtCHXRq$=ydM*`rstP%#6wZHtauoR(9) ztcxu+1OqA02U9T<44N)dUh%2!ylD(;`u7={6$PhuBbRe-d*xn=e5%>TpnHcq<-PIJ z=I482uv9ItfNG>>cc*Icqf?x~$Zn3(0BO#nWn4?4N*y%IB)hwb9+CZ1wt)3Q>&JZ^lgK(~00YAP)+Bt-OdY^JRJN3Cf$rzh|qHOhA^_1Y!pZpD2-jUMq(N08N#%j ze8x2nf8S_`(0zU%-a*#;@QrBa#HA-r%yzXeDUk@q=z8KMk6e)l#%{wT^Os zD5MFMr4w+y$6~oDy18m~x_cIJVdW0mygLNy+RUMkYSxe^sQQQy z;h&N1;Di@Lr8hX}(>&R5AhMP)-@^q|9{XD#bHN{@KU^GtT{F78154KyE3mR9CA(|`8k zyklyl12v?y(JH|0yYQA0?s@Y9$1wn}!<_3xrr{e+i=UdN-qcl|i{2$Z+-mJvz`ko| z;APOLT*-Hh{>}KeO!IpWeYoVTJn}-8xNjI8q!>*59d*F!H)K5r3Ub!qF<TNvT@#tPK-AOFutrVN1=n@5@ZD)>+ zstoa zwqt;UMxk=Qq3SgiZS^d$bXR%abm|0(XpWYLkg2Bl)^`@Mzmm}VAw=uss6GGYUMVpt zRJ~5Cxgky3VbW%I%=vwfLu?a_BVp^@1r?ub^+ z&Vd+7x5y7sCRIyUtt#;45c>{Le^5Gc2@mToN1U5M-$d*@KF&3+c;a%xcr1xrEVF1_ zw5U#$5!apup4Ui)J&DvCR;X)rdY}zWE1@Zd9ju!tei%jDo_0x~U1iLQ2*!GW9&#%<#B$#Sc?-~Gc@iAG@w zx`VI3dLq^}#y>V*lgilDrpjkbxK}w0qFl}}EINL+?MVsx?5K7uI6w&(ku$TNM~SVfnI zMI=o>iYsYOwZjqAa#m2rD)q(EvepMwV+X}#u=k#PB*Nyw%i3C5Kfd34m`f3*4{|c# zph}MxRv4D(!qS95M3E@QZk-=W{ZP4*kW=aH%p={a6x^$uvT$5|=-z6BNbk(N+T`5; z?8H>Q=s&TX?@n)tyPut6mluaXh3^T;BeFJ5{xTo)Q32_J4LM95Z!;G*=da2(_p)^E z!ZmTc0jIwl6P)d;YM706sR;T6c>ylKh_MG~QPWS;z4#bCyr&F!>%uY338{HXsSRk_ z2fOhmDea|t1b!eE-}Xfl>0ZTlRvoABQ0mByQCc5ATaMs50g_ag%tL=c713TJkI~v? zJEy1<=_KFL%qSND1I>qSb@XZn_}$>|(W_88kQg;$!&tp61sYv5A}rQ#L`>3O=Jz#qZd`OejIsF$u!pqE-gvPh zO>!w5J@<8jhfk*QPxmTMo#!T+#LUK~PPR(79Tc|VtTis<9KdVY1Cnd5SzkZTCh?&* z*mdfXH}F~u0Y`qp3CPqmHKynivy$5zIMjY!7UB>Ntwyp7lkO!O9FPo%ObNF^W@V() z!M5zzdgZJs86JR@iwy{;4<7OlcPW1RR)GWn-=YckS??3ufU}X(H!`GSG-<`j=q4t6HxnXT#=t~ z@t6Y%;{2_?pHSAqi%2zXmQ?jmNC0qt|gNZ`(hN+_mu@Eor0VM ziIqsESbkY(su5YAm~)NwYdR)52|TNTOtJWKKRcm$HIjn>u)mOqoaCo4f=n?k{@4w( zrhhH+{l_^z_vkxNl_x2Yz}^--!s?%UUg zD8`^|jv7&hy7rnV-xMS)f>%8990i% zi``SnWzY2H=ezz?jTZNk82-RA8*Wx|>A}Old#GL_GKSLsMU2$0Q@5Xo{9=1aT7(9aF%LK z?@=z#x*;D@0D<<8R%#531F^n8?imsASDk*U&2( zbk#7Aaayi+n2=c3KK$(6;Wop8#%C(0F+nv1`JqKX73cz93|KcLn+sE|_Fc*7a5PY@ z-lS?cdy6D_hAE_r{wrubzjopkYuP02c7|2a@_MdGdUeb@p4Y9*PtyK+tZyheRur8? zx~4;1q?7rsOx${U7=zzhZmUS}cXlnh1PX5=8`SwxX7)C%k1*Y4=hN-;MDPP5J>L39 zQcQuUe5DyOEK*HOdIoBw6OhJ9ofEZYh$gb6CLk`-{vLaULskK0OxQ3OLQ*30jlI6C zye^qEeF@ks&OKIGCv`RaDYQpt0f;vn6KrQs@Cca{KKL$YT0*^hEmmE_kCt1rhz^gWn}Oc1W7`9r&cICSK(C~R=7uk-?}-Q1 zXW{D8i{z-y_SLlw2hbR`KLCqb!PJPFMb|MUbvzv%{-_7?9{)cWdf314{4@3wzjWMZw_lr#a8$=%Wrju~HNpv>es0 z8BQlte=g=o%;-<_xh6oYcyVm}5DH$vJS6jU#1KmQJ?N{97+<~71E&_MKc7iL7jH2w@RT?_tgM_!a`vqEVp#(1qIeYYDe%O~+;bm}mqJt}&2666u4AJ!%A zHa=j8u)f`-X|3D)?IE~%B9b#pwZyX8e1hMqO-Ig~$f)`*tPQoR5q?PHK|PmiX36Uw zG%34%1>}_v)Y!tH!Jb-PX59m5JS6J77qJ*}l%F@4lt)`cNqS|N(^VWUEkEZRvd;!+ z=tU|I{z%@X604;K`YzXBjIHdX!Nbdh4N^H20$JA9r}eN9+HUjicVe8&SMTo$PyL<5xoECR?IP`hG^S<9&=lq&0D{EHvHFsvNy=ULECsdBS zObF6y4FNvQ^YGQ=8_FWv-|H*7LR9j`r#|AuoZVSwh}l&k`rKVV_`BgM_9E+VQ5;4_Zs9ApZx`fY`wv$jP4BOzNA|xL!fy>jq~otIrI(;gKe!{kcf6H-OS-3K67m>a ztrx=YZqS!cadMWTAM(1zxp8$kxu7AI%{3SN5~>4)s{P??s9p^3x0B7jKR0~Z`=Z|= z<_|Sd4`yljRZ*v^AAN02d>K|h+vc<>Oc5^Bv?@3Y)TtQc??gc0`uY5skW2583ERXr zq0L{tI0sKW$&q7aC-93gosA~6ofYaX-ns$;Dn!g}ccLq>^oW$HN`xn*-k0QCf|N8pv!gzSD@^2PzPS)5 ziLFTc0mL^t2mw$T@rXm|y5LcOJ$&_4Mmk(|u&`5C+Ei_-OPZKs|ta)3ueoA&PnwqC=l0^e~lChzo7XYZz2D0&0q~%UUP% zWnwTU^TWw6WTAL2JW^2WT{t~NZhGb&1Xg5|3@?$@V^ZS?XxiP01C0KC>0otaQm5n_G z_GRK|8;s5PwW_%tNv0JWZTiq8L4lJ4GpA8VD5_ z+l#;xY`C&GVXFz+V(D=&i=N?(xE$z#_O;H-_rwP~bZWAJ9wpYRTjs;~x}@uj8c|Vm z5Kgco@k>jqg%^l0iM~QebP$nEgTACU@M_85(yR;hdGQm-a_7yyb<;)F^6*l##mtiWEG*RorT zseDAv&Q(BKge;b)@&xmu>VGkJHuYmFr-piy9KKm7^u}*{NG3i#IPdlOofBT$KEj-3 zpnhfy@Gk$XJwZP3lM4TUJr*uKOq!;qe@9m*F!#qo2sYQn1228XGm4eI>Gdk>P17jj9Tq{*dK}7`vx{iwRSc!wJ$P~GTuE3 z*UbH(oW&|_!rCvHaP!Pv=jSn~*Fh|A(I2^6CsGv!f-mf@tahuIP~$W>6+~4{h5`~^r0iKEJEf*qlPV2b$N{G1?`Dq*rNPqy5tC|-jCw-dLzdQW zg^kk$y24mH(4_R}>^Zi$65LJD`7LAeg}A+qUq5WifT%IomlqX!;-%K-Zt^Eh-rB_F z4_V~0a@P(;DojqBbiO{?3A5Wlxm2JO^^(|Ey;m{^T{c||2_-{5EwO-O?yR}NSs5}? zpyJ3oRql&AMqtLHu(b$9?aw}TZ;hWTAjWRBYBN)oLc1e{+FpejPNcTI+k%^Yve#}K zCqDt2E#X};8T|=_Y1G}eta^j|7Br};$>N zg#IqTj6vp|7>kym6zBKxC%La#n8?#n>LrKElVcMoDJFg=4onu>(Wn@9$G^o9DElUE z;q1dF#4+72x1>_n-hozipnjuNbQ6b)f@k5gQ(bUHdw2NiM@1nEXsJbxxLe+77iDUP zrt=)V3qesowsK3U>=nv*PEO#!i#%NPYB9U{F0;oW7d%%o3Hd`2*P#r)YrmXx=r^77 zo|mvxkE7QnsCWtnIrP#MZz8>B-i-hRnvZeYx`n-hrLR#$ZJg>X#&yaIpCj#>rAd!= zr6kG-{+WpHyH|aU-f#FR z!DiA>;%nD@$IRF4ncZ)60-ByE730&hXSX$%yAPbJmcAKAkT!HFg?j6)UTAtMh1R!S zw1=Du3O%*5K7o?P&FLMh=10tbukMl^4NHFiOzc*4Wr5gYCJf!@bqbS?o^PI%MzCz%z#y2?Q2??V3?{F?eYvvRc8AeWI&OLNd<(4mj5T4EVGB zU+zm#4Z(i@m46NVApu(nEsa$}ff1i8Yen7Syijc|3+Z)_cRel}*K5D#N55PnHs4Fd zAlZ$lv+fkTO&{cz3orq%&S%ujzTjz;^LGe0y@vwPrr6O&wgB+BS6lVaMj=X{egad$;t@*P6@a$>{S$-bc~0H#3FN z5UX#(8N3s6cH`m(#axr-w~WwO>D#m{uBf)OHvFPVjntJdR}^zxEVsm_SH0hrbR+&g z_+PONk54^3p+fUih95gvv1fi6@ar^Xmz>7dMN|Q_^qTTY=$MeS6KX9W$O$tjkm(OL zgyZ2Uc^1D_}+X|wbr3+Ro|4v$_`Dh5u zN5fa|v;+-}zST?`Fr}`%v+G1eAtxTcv7}TE^~+5`ot>P_{8)qw|M?9~Pzz(Kr zZ|mOs@he7tf{^0HJqCsR30{Glh}I_R&;C7;&D7~WA1!2#%QIUWp_$+vVM=woC^O6{ zXQ%z^_%ITaM>TLyS*R;5B{)+=VEY}yUSib8h;7;40fN`B3=C16Th7SZv%*{5aBvY@-w%xuMNxnRRmX+~r zYAPjv_>5=AGNnz}&m&K?e@aG))lggd^w#kV{jw?eK6|1KC4!SFr-;+BDf3{?3pHd6oIe7<(kdB4&yqi4c!wb zS{L|9S7y=~M1TFb`J=wqa?e#OQTo>Pdnu%#)I>C0*R4)Bml~~kalF8H(5)z>#yqN) zKeu-OR+ZlBppNr9P+RAFl!W%^Pr9s{x{oAb?^1sNML4YWNm6UlzDHqMLH>hE^`Uw) z#UVt&iH(7?H8yRpOh)s%N;DOKSTjQI?AT%*(qcEM&`cJl;3nA3 z@LvW^f9-aG{0IGIP*_|dw^wuh_k0J^rGLvWpa1nL+yVqYc>Q|kIb6qSgG<(;$K~sJ zrhcujn(*`Us^LADcGb>e(__t;JwMLqdNG2r@eh8ypvJFsrtvT0 zcENRmp+~>(c2prU+j*k4rMQERtm^Z*f*yVxx1U6<28?lvC8h}B5 zvGWERQjostq3r&MO%M%e_b{Kk+;`Nvp@K&J_W2dl$3cZ$NfL;Z{>IsCu^&-j!gWz;9$-Gm&U_eIeCbGHt{DE<%)?W@U%Z2N zZQfVvF87%O(wfjoy~1g3>Exv?EJvYyvgbbu1Ehta@vjxEK8x3dxPP<9c z{y~Au^wSj!Gcf#GL`Om$d@eHpi@Iw1=0SV4r6YD9Iq8Ydwe4mkZ=e-aLR_W6q`waEaJsXKY0bvsV{XTd6N@R?_rtVM52l zy)vU;N39|YHEcI8(NQ(vu}P~KqE_YYf^kw!1@e5SzXf7{mR=W}(YY6qS~2tKcGXx& zhE+Y2+?ge}V$5JV{cfi;{JTxSXvTz=k*b8zafQ@KScR^HdZZm|wi6b}!;ris%i~E~ zvY@Cb?QL-_r#WSkN7SV~J${Qb3*JhiL$hg4q%`YldI^^a1Y<*n(Dn!{sbi^xYZ&My zp>tAnB?6W?Vw$|=Q3{$aKc#{yX3Iwf0>SELNZR-R2=*ud9ZCKF?`9_iDE$I*?%*N; zEzJxOnq^sK1t3aR@Erwg@8*B^)~doHndM&u1gO+>Yy7?GBe=k?eS=Ky684poElpJW{^X``l=#l93z_w=q@)vCh&ejm19 zn#MB6X=Tem&9Hj6%#uT;HRLR%V||`U@rpbY!o-^dl6*liQb?4`h(UAzd0J$P8vxz8 z#aHshd98`l&Xj|;Tjr4gN<9${yx))g4-kSf)+meZZ(O@vQ{F6BB-Yw~+P4^SO?^YccPpxDnW>>8QJVJbHr`XL>F4+!I--e~s!9bbk6w zq_h(8s6*GE+Uv7szq*CUlEatp*p&K36D`Cmat{g+`?F`l-%O-vAoCl&^3u$SRP;N= z-q<0Iy1ZfgT$8qnlzEeB5&dVI#0FM<%VbWzKjVRJ*GtX_|JT!I-k&yiM1a#2MZsyv z9=}4Apd&*KgPF8;v-6m51uqi-?M53gj1v-dDbU__rxgq}`Pw_FtFdk*-*ITm^2~{( z`Y4ynl?CfDzp!5_P20M|;>_#7XUXqDz&?A%b?-S0rJf{6)262?=DrXVT0H^j!1VqO z?Ck#xtU*jZyc&Pd(weNDH@nCH`g59N`(_)%#-$Q_&QMOx9ZhQwxF1w_nN~Q4$J?|# zBAgp2PF|F<;*s$ABbbNF774rr0q;b@u=I)8zr$K5^5wv#6H=03&m3SPmR3$wIM#(E zi9bv`J1Px!`5)w(2Q+~(f_uqf)@7&#F#cj%3sNNwIc~)}Qi#4?fu)Jt4F%Ya3cS>( zHjZx5EYEKhFkcX_p z0M82PDy~N-slP|5##js9Dp5w;p*Mub| z|2Fbf&sL%wIr$Ph>=L%M#wrqws~^KYcDcKqL`zI#!tWKj0eST|st%$}OGyqhag!Tc zI^G?M;dl&WKd-eg-F^8O=$W}Sp~CELLi|CmqVdC@B)w+lUkz&`XV2ao|0e*M;JE%g zjzfY^e2zIy_g2^#tC#<{12)AP3AxZCxrmkXti|XowDh2HefbB$^wOkpdyM@ibDWxz zm{xoJ*nxXi!0-Faf=EflL=?Bnm;l_b}xphOA7Q8n)gqCD0>Rf>2 z>K@Kyi0LfT+DG@BVh!Q$)3sEYFUf}s%?bdSFNwM?&eM%z?PhxN6s>lHYPBonOz*{A z9){~pCJteLD-xXfu4uFh9bR%yR<JM9Z#7(QYs>UVMd8x7SwZ2wT9KRKjfzQ~C&XO?6u`YaV($U_( z0*93x2&!mN6`$RyN?dxrr4oe6n3^=;3XXHU0WgTqbQyc*R*?Ou@KX6TZvLr*wVgZ9 zZ>NQy!5tj!ZZK$bFJVjDh5{!JHd@QQlWD(u=mqxl<+}()o<4*>@`Mzeal3J{x%p4+jW@ zn>GUS-xNI?dH&bP9UBt3z6N?S5@3#;b7yyl|5Pp49mf z{!Qxfx+qz-cTrlLk$$(bloz3DprL@ZZc>H?3EI;NmsEf0hH{oCCH- zV||^?!)!A%gVuBa#1k%bm{Tr-i4H4}{k&M*fQPsTIJ}8hIW&L%|TC zXF{kKUmQx%-H3Md=Ii0VfN)ml^Kjn~iI(xxEuS5S=B%=DG$(^Lty)Xr&~}Yl0N(jP zpvj__?G3|bNCR7vroGXj^%Ik|V=J3JZ>xbt@h<>1R~Te>tmU^-Z)^r#cZw%~BFs=a z;q7n1OE2P-SVAFh$73|;J)%V$RwYQJApe2fxL;sIkU_0kG1v%nnFnbvX73g|C9&6V z9+go@X0Lc{R|?9H*x1g)0Nljkpx=2Tz?sjd%{h=ENgmeKq<#RO?>T@+EZ+q?C8+Xn z1KJfHFSI4(Et#jn%u1^}_%m&Vi-#%l>{p^q)Ms~;h=`jwYt;6FrMEsuth9xc49yny z37-7Bzq%#r#!!@k%70Wkw+y+Cl?wW5AM@UisUZlx4-Of5;2>Df95BMfgCbB_2#*=dWRwuZD++TST;jw1??X zk@tlTbNR@blP6t80A)pGz#L_%K1E1s#UK|E)irmptAeTgt$_s<6JYCH%rsFAMF3}h zxweR|O3sE_+|+X}KaH88Gzvp&R|iT=Ra^mZlBlzXScjH$!Kd-&|2o#lA3psAP5f7j zb(?YmfAIM%HJpl@Ze&N0o2TDuDpFE^c!|Ysa$r7P2R~8U+YxW~&l*-*3vt{4`klUJ z$A}>(Z$wSQiPJqDr|mv^gQ5Hpi4YqfLo)zV{-?jOB2ub>bH$$*xNveq53x(rvuzn? zj;9o5KWU{f*fyN9Gxx)!0=<@OoUJwP>>!$OQc+tHP<%pnlzaA4wZH~*7|Uf)zsaf} ze{8b-C4Xn5aG!fV-L4$XTFUPX&`5;KP~CUzBDDnuII@nyD(!d(PYK0K zVcio8&d#p(OK+yx^|zS?K930InwdtK`F-0-FNu+z`J+Z`rt@tpeLE5jewh$~sBR!s zlfaTbb_hvq%@@kB>hln_aGCI%j}}B_tAgpBD0U}??l0yXP?H^^8!^*QZFn`Cq8PMh z;AFh-AQW9H5_1yNa|c!@O2 zVK^H|;qh5|a43#R8SbTH*EhMwJuV^L-!w4I)E0&fq8@|BPVE+@OnoT!O$9`6{kLUv) zrTY7fhE(T?&ZCCpynG~3?&of3CffGDd|6D(tI7@~#YhOiwO#gZ9 zvsm3v!tC2e+I$$>pLJihx@?dR(l8qC=&%f^r#1^R%dN5!CXXBPFaYnn`L8sn<_2GM3y~Jt8Wfcf z#!@E&rA-rtVCe;!XHN)b`xkhJt0ZiCt1~ez(XstaH@24zKpgnFW$$Z=1!V=dABz^ zuoNOm<|&ufXPI?})_?xScJh4Ah-WJBP{@nbDw$?G zHkx|dtu822i*LQEIe>(*^?sRn=_Y5R<}$(-Z=Tdd*@@O<4O0If8$5*= zZQ0mEEP>4U7RfTRE}cFt2Kw+nPy)SNd5qs~gk2kb=5vO5K}OGfO(C4cVV zA@%}v(RZdfWt{|76KB7Io77XAIANYx5e9k%f%S_r=00m57_wmbqYe*6))NIoutMvH zM1M7yHYG$%4NL}!E3yu%L7Sj-sgcbWpP8Uj0D~vYalxh003#SI91u~syIV6T58i+k zih+|SOccSw6A`F){A~uCHA?cWu6D%xK|Y;nLTccECY70o0^MJiH^!o!i3Z4m4|X&!Oor!KMXdeNRtB_E_tSPp+OFV z2lqx!zY*C@Az6>jT5HC{*LObM>%`66P|Q7>E%6={Qmn(YFJ-sqsVo(pX365*WM8?6 zW+t|8+6-H9!owUP7tM?RHQiV)7{>D0qJ)e;0~!J?D8x;^3}hqwesK<8VpB9GqZPfQ*%` zB_$-A1_Yl+&Lzr?#o;2x!4o1=>g=vq=cCQwbHUr1%y-$PmM+6L@TCyEQ2;qW#=jH5 z^n%I+7%6XhAz*ZV4IXJUm51`<)`~G{Yby45tz6{1*X39Ez>DKUX3{}vfQ#4h;zM9Z zhrfIaYiINn?xuE%y^*!QMrL=1v@?ek&T8x1P0sg?fYqtnKn&Y20BCTEkHWi-oB~s^ zjGdG#f7RcMgRZvt7~K}+NAz!so$j?wk;W!hcyq(ZvEDt62BV1_1%&N*mHtVZHd14> z>3WrEgvJ$}Gfk$C-7CVn&e6EqYa$~@q`3>$HP7%t+`7Iaosulxf5$xWK2_d19&hwd z!~=EN{UmYmJ76AIh;yW*FXa1ftb$;2kJc@a*qtWeM#|!K)~cY?3(@1-mv*a+V~zeg z*WrzG4l%9~u^qf4PhsP_1!^TWcaUVrjBDLY0GEum@Pbh9f^Bob#-50-JF^T!CYHBI zScg^J;TH4?Jr%_*&+S2SpFa}?t0hJW!A?AqlQuqMvgfQbWJ|NY{2nDfolhw1ieRpT z!kDL2a(0+gCq{i_Sda+qa^Ne66t;A0&mE$EH4lN#`}^HTq0!9C`4zK`2-}1C?H`pE z)i*t4?ZahzH1GOG^1R5t?jNjNq}T_Qwd);TBVpa}9D3FYOSfgwRgSkQr zu6JRadjk7qIPEJ3)&+x4>v*44u8Hdk9#m1*%Z*6#1qEMfPj6;t!F5Rk0IK1+?SS1k zMS>8a_87REpjS0SiG<&KMi0t(UMmbqo77NAe2!_UgcZ*(zA5Dy?&7-t1dbyNgwA1BaD!DyP=D7Dgr1 z?UqLgKn|2i7U{!nwSNlFU=?>uV2Pw_HA zbp)lJwD8+TEQq(3oDNYw^*f_Kg2k_mfXUx#_4^eAFTSBMRp+Rf+KHBeIw-MEQ?s^d z4?r_jM6+2iz!KP15`3Y7B3HDFXhp3&^Jp2b1jd#j@yEK5hI$En=7Wc-)w03gsDNKW z9{<*!K*mc}4Zr_yu6#df{cnWeF;y&rtkLQqfE58ROMazdk)Ot)=w}ic{rh7RHZ6A`(Y>I=*F3fPu4sV(4aO%hx#(n{0TW_X$D21%P$Xv&_Zb zBkjM}8*AbaVAa&~lwyuY(TsL7J`g5;pDLd|?`F=@o)r|ep<_dE94~5e(81C04FQp2 z?AYrCR@C@0Yv(mapPS~}*P+0Ys69_Lk~yCGhbof@!!%qpkmwKX#EZFX(u$=eU8AXcE}bWDJ?^Gmm*6dw{3f0|YdXMW7l=UlC>1l#>;?F$C!`Z|LiVd~55irg z*5@(bG8=Kh&)QQeX`2AJbhf=oY%EIC37y-Cl`Z1g{9zYE6R;PjDc>F?B^=jb`lA|M z!vSsX7?X7sC2OgREz-BE`O1wac=WBbZmKY(@oe&!*Ph4Ex`I>Jtn^?S)}qXp85UH> z(Av8}WADx>gmKnPdrXV3)&AHN+Zf;AIznzYW+wST8`2d)?$U3WQr?wQ9kU-Hk0W{n zG(BtF9!ffB2KnSA0R0Ze+3OAY^BN=PBEM$nQv#aY$$ikn^mmM|0OQc!|L zy6(fTJ#7|SNdQR)T%ILV!43W-AK7aAkhKlvuepD> z8~3Um_nN83{u;)jAA&`>O5ctPYIhQ~$|@P!b-OmL-D#M7t3}qv`JT2|cruu>_|}q| z?jI!a7fC!!1k)BbS%M_h?{YBZ)m9QRV9A*D5|3-2uXicCS2syq zqM%zlJGv#V4e67xOjDkz_vNFdVl9>*HMVpnNx>!ZRYOOyP2a$Y(s1?!Fa@ONA5eeu?_6=mm*Nm9metk;ir}9 zjPP#;AxoMLx(o8JiB=zG1~aTq}xg&dCl~1rkGmle0^smzsn;Mh*0$IXk;cRE;V_Crd!_I>JQ2n&BsSrd8f0@HO z@87>N$yp-KV~K6kKS zr43{1wom{4LSuDzaUG-GA&lZ$s^8+=Gy13@|LjIJt#QJ5-knewSckH6C${)I__mli zd$G9RTX-EdCPzb6=F->t#<5i^sNqs2CdG+$L?az+xyPxlM(ytVqg3#t&P~L7ib>oY zI&8BY10e%#>e3+ZQevypCm*ZS8dpuCX_``!87T?vw?CzlYV6cVa5+>zl4u#%$U*{h zYtP^V@v}f{YMRoFIjPK=G7vO4mnSDYEw@$|TWeBVUrqtx;;W!UnaQ=7HYk(6H0Sy6 z6Y9E^Gs1f@8$UY|sTN<8G)}8E=`okWNZ{#gtko~66kpoep}FS>)w?r!|X-tlO$QTeVn zR=IX*&yVZTmyE8ku;8k{O!)NDXo(RL7YL?=gumKTw~D8cd~F4i2(OcczA-xZ3ix;5 zf7A%>p7g&G@vV?9LsDOlc`J&p5UUV!x-_0d4}}h`dCQLMNi8X81(`Y7%w~m*5+lGe~ zeUT>wTqJ$Qy*6t3yjYPQ6!QBtM;JW}fUDc?2Z-Ksf{^wLT!g>XK^=Z=)v=3q0o!jU z==Ezox0eD;bR+G}8)tF_<3>*W;fFD^1f(*SR^aA~tj(qL_mZeb2V696LQX4%KQD#T z%<(@)XZ|+f>%9X-PQ}GMaFVbZeq{lAaH>!()UWdgzoj%$Q_zEz@uxP7MMk3Ms30#9 z$)fVoRwh4wi!!GPy3w|J-M)rPzDj@pB7a=C?{F1;xza+3C(qWr`2y-D?>(3`cxG3g zzw1b`g3QfWn28eqh3XhUa&>lbC7FnFy@#N4w$Gom(@Eck#4gxf3~TvZ>J=j>9@<`c zzULIobJnnu({7rbTsLImDGyKZrCWGBWk4)EEB`U#?D@%^j84mWxm4 zv>utV#@Oz6`q#IC0cLBIeo=q{uixXkN{I6ies#+C);h&pB3XrnPPf%uDP8kv++}-$pUbJ(HgVRHt zXlC9){?OFQL$u@6!WhlJO`ChXic3>%i6@{Z{B*-?rfoz}khMP4#{W$X9dAt6jNZ1Q z+~E(?kc~N6oZ4U{cR(%x8mkp25P*8!Nwj7MsrM;v*_kz5-~q?nNzu%F&nQ$-g+_U@ z#NC!+%97c{P1Cluu6Y9S^BJAMGucICDc0kuyK$pWPPc2wwx@z`uZG7G6t}G*Y)~q)H$r*npq_oeqgzz^zFiLpgwl!M~gDRDHjfzUPh$SeySjsXdzu5a{zJx~9Pbr{A z^G|c6ChZ^LTA#s6F`Rl3=V08$an<~{<|m-|hAMlk&pbv*^OC6*MsC!~T2*+b@2(5}o0q)w`Gw zbk6I3UJ=0L3k&{5m#Ia!&Nqs@2?(`MAmCR2r7R3)AEKnntEbdNRrD<72{g|F{znGJ z487K#sPl0vH+{xI_tceux#5~*S`ro4PgvA-4QePRYN*wQ_d6JRNpaO5iJ!b#12A9 z$F)z=2uJ|d9e1p#{&Mz^fVX)cbQUOi{F8@%Y%(XSe>@=!MJqt@m#+6x z8opwA9k~1f-;)mynlRhMJ5>4Rry76^xTZjkxG~HI zHxj~=?=s{kKRl>tyXSs#H_6y)=w%a{PTGOHF4(EqWD9RM6O9l#Q}HL@OL6DXSKBZLJ8EyR5XhrK77pOgW()(&NYt`H z>gZrWumN$k-V2#fYp6EfY`^sx9bk=sV`4vpp`?IcC1Y*pDCmG$NsW3|*L1buOsmXm zO2=jPTurx!dU#G)B_<)HF#Jw6sqnD_vu(0|#UaA;zUM-bZ_920sO{Ndzj%^jiQRN) z_0VE3qn0-x79Iw>ZXu+C@h;%ZTouygqRXMp=gOWS5PH?)QWi^YgnLYmWDf574eoY< z^v)P{UjWb}>3%X*bDnDKGiBhjIiN zB+3#R&D13&CnF?jy~H#*{J`ER6d!@C+1Xz`9?zY~8BmQNo3U11O&!8zjv+@fQ~i&S z`U8SmI(R^tr?%)339fpWYc{Y8Zo7PS1)VWbi&u?b$#Xe$r!wWqXfND2*iS9NN-0T8 zDkCW#9m#oJcs*)8D=k0|tNktLnho~>?t~S}eaEm4-Thu8iw_Q~VW5TuOws{^X(sa{ zF)(GJ7%F7(fTw?M0Gf%UEBF2H?51n{>!$lWyXoQ%;5VNLtGM3l!KpyS>dfM*c!E$< zTqFkN+>binw+}qR$@7avCIbrn^FPRkF{g>z+N>VuX1(dfrpskV?4YIuz48~s!0>A5 zJ|b!`z9W}fT_Xzj#DAaoITF~RWp`jnSVE+n<&qG=&z>WP6hlB>=MfT6pzB+|y z@l@YorZ79pk$XXabE>cC=?AlTuS=l77zMn#=A7;;RO2}KHuE@Gb!&PYrA{^)zltFS zzplCJN#7KIInOuQlu*>mK|QTAuh8Fm_)l$FfP6Bqiqb&mIMF$X)?N7iwVi|nqQVKU zZpK~&9>qy>J6t3Hv?$sONwP6%|C8;B)H3_5fS3!51O(+*C; zhO#5~_Ds(dkRRn{XgGWc)5DY}=S`OCc2F>udtsCudqh zr3aycxAG_(XN0x7z~MbP3ec!OGBt4rjwq<5izqWDGV4Lb`sl)9Y`-OQX)bXk{~Rg; zjr_W{Ws9v(-`^R8aOC*Db;}cR|nk(j}!^?>6^%E@Hqj6w@T_GXb(5^FEtH$v$r>zHxux9H)- z!0GoY;7A$4P}qEELKqBnoJr~$q*JEYYTGPXni%!{Q0C%cIkZrl8-F7Vrq#|Ssg?!9 znaK<;j6V5-RnIqmOp2TE12)eoiJP+b5v-#C?ziqvS6D=$>@JXLmRIj~i z*fVvx+L9ADoq1vLQCwYTBT7M?`j6&gmfZ-+DzoXJh>IR{2v}*fEc(fps z&~Q`mS~!{M%t%aNNndu-J66ULL%j7Z%QHFwak2qe$-Xa`4WMJCcRcp!C%odu(h9_k z1NVm31eByj$)uJ<8zHu@5qbq29lsLgrrnzwuG5*;o`1C)t+sL$H2{<3QpqeyySUqY zEQW_1BqWTpmxU(r{wRPsJumCUJO5C6=pf@t8(%C!)_E*WBd4y#2Om5f2&gPQq)y_f z)OHa4#FG5vE>4b9eZn=eT=Dr&bED5%s&(NPG(1m4Xa zUQ~h92oBPrs3IviFJ7YC9s6QQCFrk?_ny-(r+y^fp#&h>5B^w#Uvl@HlZYW=Eytn@ zPxp@mcesvPt&+Ge7*BA=YiDWFb|w<3?gfuwTC*_EHRPIe+-YM)#JDOL+rDV$FH|FCb(bU|V|39p~1yGw^ z*EU)Tg_hzj1&SB95{gsYX@THDizi4aZl$=p1}pCF?(P-{THM|Bl;{1v_x-;)=b!V> zoHLWj?CfOj?7jBA?{zKN*OCiyYojP_xjx_+c}xE(BUOJfV>%m=tIXitFvr{ESD+^N zCydG-%txGNbMsW7J@@0lKG%4N^cWQx%h<^dhnC6b_ky@ciH)!{sk2JA$Cd)OL=)J< zRJ~0v#o1#MjzT8{;Y?V%_%0;SfdJ$FY{?HzZH1tsG6A?&BQX{KlJ?9fz~NzL2YEKO?PGVF3m_l}-3V3*`j z&E*>?+I#^Tz_6xT4op%}{8DvFUwh+NdUoc;Y}ogpjnR7E!H)(A)dNj|J^XnIY{Q4? z8iI@!#T>|6iI3|{;)Qm_6_UgU5fFUwED~^`j(E zLXrXSH7Rx{oC!Q3A1OK;kdPr{5N)6l+b%g&_B_|l=ehbl&y}<2d9E58$4&}<+#p8n zsKr2sSYxz3#?g{pePXrG;sxzx0}|ho3@%m(JUVa^Oa-Kx{#0bG>+--3uA5u0?tb0s zv_4f|-4&ZvFUzGcf2exNl*-(9<6a!?d!(R9plF%K>|;Y#T)sYnua@nk*0=kp^ZRHE zmH9FF#{cg$jtXxMX_Omyfgkpa?G^Ep!k9s+jA*39dF};ch+x!QRK$PLjv?;IOyxKI z_x_$qo!;+xgZNy&M94=;P+YKVp5~z*+s48C&HMMQgv#8JBn+~JfP$%iTx%}7`fL4mQf<3vg#PRU=UQ|zHURpJV3HzJEnM*k=Hnj z)I`%5=jpcJW!Cy0Pk#$P5nApn{UyU_*&$<$N|XZ)+F)uG4 zd(0wG-k~sDl8zUUOWj8I+P;hKrw!7qxK@wCIkT-%BSvRWO{ie}(QGD>q_lTc+L!Qw z>++RXraQ~nnkblrA-~R-@XauF31Cw8B=j?HrX;%V9W5Z(%8m5MpRQp ztv2!wfJ&>hArrYLcQ$)h_~>svDB4Wx{7KzzU$p+=udIRR0`A;*yRrRUSox0H+CZa6 z&Asl`uMy=T@}Ag(ok=>^T@FI|S4`T>DQ=~PS8r62Am#!ReE|dA|1q1i+ zvhkGGE}dNDuSefLlA7Pl6)e7QCr`8qXnoP^7IuT3;}&|Mb+~ip3A`a=eQM2jONkq8 znu6Z>Q#hxMbh95zC*QuuQ)>FX*4@wi!^ZenjrBD(;k#25oiitydQ#rilM?qy9u`?-#hR?Eqa5# zisL-{f0|_zBjMTngZOYjNO&W4k|pGcj2MBo9m zLcr`4N0E1X&Jdotw*r~UM?CN+KOio6mw4v4ekVs!lD^7l*`=?7r5`XLNC>S^fLzXx z+w=;aY`^b@Pnh;%9&C{V8 z24acFz7PS`?(as-O>^-lLdTnKZ;{_%++0}9goj5TCQj$@F1TPtr9Cq_#FcZF!jf@jbGRhF4&#%2<1EjI=A}*iu9)N7``Fi?h-783^h#J_O)vO3C*_ZnWFoSwuSBdwRk>gTpo|(qV=0JX<_rV6t@@n{%-l3k^{uhLM1d+XVO06^8;$&9Z8q;w3F7;4;)}*3r2<$aNB*fXxlhUPwJ*zo)CR31@Lgt{x`LN*2 z^WoUKE@z1a{n;h!h1vmUgslF{C2Lt&6&OwBTg5;n0hyrttPwk&lTcP814S|bN9OQ+riB~2G8L&7?#j?nFeV#ATl9Uc zg`tCQ^-MY@hA$!Q^KAM%gV2Eu392nNpXv*r>2XtL?Q|}`aCwQoWrLEB;u>fPhk9dPPGHu~)S`UGN;Vh|i_RPdtx{%!OjarG31ta_ z(hM;x3(3TA3=P>8rDbj0kcd{pjh-MOo~V=qFJ7qo)J42_MZtRFhM-82CV~b)V()5v z6T)%W`Fc&f6Qj(@NfIOZcz;Na{W0dtPx{gR{FGVxCJzUK2J+yPU)q!UnyeS2&Xi$W zbW^Qagcuj})5(^=#%4DeOuaq5~tjmgwDVuP`LBeGZ^6!ZL`;;vbu7_qP9db94Lc_FMzo z&*HLKD>aE1RL$-740iWF{c4Gbj$g}wtyL*diaUkowq8uWD?M3A>j~HYd4(9V6WVyG znbZDdTdDr@t-Te4+!Ti+rLL(Yo$q*pe*;&PgO#iyn_xt>2~BquS1ehbFPj2Fsq@135K{(z=7L6e<~R z;qJyFGJ4usp(1+2<2lJKHPWPBREe1iyb>1S04jHG2`J+&oE##4YY_whp4;2Oi)8gS z3KB&1?9cmlETiJ0+D=eilaf)j2CC}GeqZG97YMp62;E&#&I+5cZBw$`LDeBof z!hkh0w~T3#Ib-T6#P!m8Ms>b=$8Qc#>by&xXphlLPFyfsPx>9}uulQT^Tj+-F*-2s z96?~XtKhB0h%8NJDc@QPf%`)ps=FW(J`egyeW=u?so)IbW~6hvwd)MrWQK&!;g_8= zue1M4z>Ng&1=C3MW`99Jc%zaU%)JyGROFyX{3U9dz??b)XjjERU&t~c`Cfd}OhqvO zo*62wrtlm$uaP2+EK15yz}H+%1{6jC>lt$*fMkN-D+Zp%liEZgb**^MDr3y;)?9PQ z_n%-%^YY%BdY1&Z_Tw&YWqP(1vLxRMp)`f3#OA1)(}|H(n$6x6Hlb2I=!JFw)A?d` zHEj@P(xs~4;YD8oFH>Yl(Qe3{*0+l@#&7m7rek6ZLZ0^GR=E|`p?qL_-uR)np!v#a zf=b}#tdRXGyO!+I@1F`DnmrHSxUy{<3idZxS_GdE|FOu^ci92|w#a*R9M*h(v%59y z6kz@V5^Aar{fNp_CNyq)Q}sSwI(5VU{hV^A9^zxF8QJG8!VHcdyjX z`dOjNBkw=dS-+89@c29%Qf}(u zpdPPsm!E&3sJ!%k3#&q0maeOoPcl*7;wtPa8;;ghQ55E{3>qegS+`C zj>AnD79w~S5yCn>wfUW*s$N+IS|~X7*HE15>9jp+0eD5(;#T4CD z{uk4SDD_B3g-XL4Bf7rciq!;3qefQ`Ah`KzUt`!Y-ymTgCumm)&HsZppU<|hI#YO@ zm_>YXk5$zTY@4%MQkq#Nq(Zl`UVV%t!Y%6cQgVBx@9+zn*V4U6sb}ow6l`zm3DQc) zbh7s2z0`x8eh}Yy!fDphjFdX9**3b@nsJdHqbBRAbDo`NSi+PoMf|*9^Z@)=-$Oqd zJg}vCUzn!I?0C0k}7*wIsKlD;?KJ#?-p zmVnJfjSDJGkslhm3Xr-N2GNJEJ@l%=3x!znVzY8DV5 zaw=`<_*dtv0jv6{i-*lsVyl9HUwy0M#xoTr_&!C<_*}$S1yL*GPiWCmWoAwPa;+1C zc49W2)qM-J6Ag_`H}(Fnaer3z!lsEv_{<V`Q=wzO^HHM8{_X#G%pAU`cXz%l$1DXss`}#W#Lc2ccdB!1PMtE0kZxY zya)$N=&KauN$Ce)%wo;rKNOy-S5kUw{i!6?zLzUMI2X~cr+u?;lM*~1p>Ro>eB;X< zSKjjm%t$p&UDl0FOk0NF=FJP|()IjFU$>QYLTqK**vmv}s9AbY1L7I)AdR?6w^9n; za)0%*uuC>ZNk4e28PDrM)3+`4mjLgDh+YX`zhO9ySx!&FK0tuE2GRXM!2RM!_-$od zOU{m=p!Dp<6(`=8cRc8kuw;%c>zU_}H{zm@iH6R9fVxoYv#$4S-menw$R%^3GFPis zW_McY#Ondu|p9DjFtfB6PTmk&Ef4;$6y z+)sYE?;ZVte|+kJk5_knHL9P1%9W9F;KnSrJ>d_luRIvJF_Puhw;uzU}(PdQ@>R)~ztxXV{xG`rzyD^PYv=>E<2D|dQ zEK?(0sV13;xn<9SrLfs3T&fDLaXlRm_hGDgIkil_2~m0PY*HHQ-l z%Kx5TZY;=2qFqEgEH+ncn({s0IA$zja~M4T(E$mCgsDV*SSzc%5Z^hyeB=3zWKtv4 zF=O{*&8MSSvwanN5@?h9RxYJ$&3TmQ#5eB8fp|ja921ns+tnLOX^_s$6f5Bbm45uF z>g)HlCXfFp?|%4L@zDR|mH2|!@|?;xRuEjoF2e_LM2eYZ0g$%^Mk`F1b52U+?$9JU zz;mA+ZVdxovpuhQaftkX7V*C(egN6hAT1{ZY;(`sd;hV)qJ9Xn%}C)XI_ess6btb4 z;yLyT5W;|6CBdrFqw~Jxisb*4G=Dc3#B@a$*`pS;&5p z0+R{4RhT&VREhOQaaurYBNGb1CW0>howB0<=0O?w$;ye$uBV7ma;Ii$%8XO^Y-%>9 z8Aa<=j(uX^>N0L(P;zJ9St(CAwkqFx@J!59qUWZ+4)2FL&Cx)oui;v^2G zGB)4hO>eTjR)lk|Q8@Lmo^~}8=lRwcWf(_~fP{yt3s0Xb{9c#w@O;%8_>jx|bT}&Y zuyUOFDR-;A;@CW5=<^%IeU#iS0W>v1EG=^ObxaquvN{WZ1W0|^wldE$Hh0J*-!eY- zxAIiA0fc618VPcqXW0pt{`**gZ;xl1R7ZY=9a?6}fuPfplAy-YP*(e5b?8N2VO~(+ z6fj##5|sNRrY3!GAf6@DE3N`;@`lYls|2M(U3Fq4u0d;xdzZ098aKbtLSi$2Prc!{ zUfnHyb^y;0^$)FYT$enIn|GecXLgfL=aP#vDEtV|5!j6D>g$l+A<{|Vp$^`5GI#m3~!Y@lc}xF+^X?RiD3)s%%Vk@WPAmnFf^pXL5~zPpj8Uk`>OU8AD5v}Haw(a)+j(gFfN`>Q zPLW(_F=IM9Z%woF8Rp#}2pqj*jG6XHk(ST|p6LcxEUEo2a?Sp*=i^tl&fq4wA+z@# zlBnKLLtD(2R;B1CMlZlLV-9k9@ee(#0gcd~|0R{>c_R}E{nthYqblwzHc*S;YO#}h z+nw~t%*#h5>X^W*QvREu^$!*}g2gK|uy{Kp5Nl%mbF0q^l$}mme9B9=`tAZaDcsg5)(V%u-_jZq%r9cvI`9=24ZH0V&+Uxj4|#2xpk= zzC2e(uDy@tfC^|KLXcf7xHM28VdqnuX6RKr7xq&*{^K5xaB-~?XkMiK+O=**=o(R@ zhfrDWHzN1i-nFco0&s`++>eeA4|i<@LL&_8j-|V?8$N4$OJF*1V z`Ek|jC{V6!Vir`S1@8}pt4V6vBS^RA16(kLajUxoi-WUCvW(0XL%}9=Y5S%LH)eL6 zFe73+x>H6b&XM6B=KKb$sJ5>Gl_--#QYJ;hjf&N-)k|;K4s5x*!R<1Wcg-i9 z>8U)+otNERTCvQ3W_quYRW{C|yWPg@zgXbA4!jR7J#{xGbU$pX9hf%`F|`R%UfP(^ zGXa`21m%Q;9@#X2XRP|LB7LikepmVSxpk>JNCo7KBrS`b@w+|h%y^_Kw4OCCcG^4{ zd9dd8vmeW}(ThetbnEUnb`wCOYzA5IFL~;-Vv<`NZnT!|BjPsC;Av#bh z<7rV+`~i3!Kte0a7r?k#OOc8HYCm zd|g(!%0D?tl~x(6s<%Jmr35vP&6p}_`x_96*Hq_s;n&{l`XU6WDJV?Yj|A+Ag9-(W zEwW2Ui_v1!OF}JGvP!hfGDSh8upH^|sxe7la_-{LpA8o2p(OSYEm8#gX%SNH-3Bm( zAfx0J@I15RyWr{5Je+arOL+(i$wWh9;x!ey3QX~Iu*61~PZ_4_4gNTfdn1#%e$d2n zq0wWJTjGnKPhlTh+9$J1GL8>wBM(rCb)99gA} z1f6|xl{vg>?Xltk|IWw(&PBQ5k3cF-60k?)F`1Q|UZ(((M zKk+x?S2~FV5{#^n(B74u6d|fK?HX}7DTc9FbK1Tf5~jvm*?vU~_2OOkcnCD*FX0)O zsg?bU-5p0#W)bX5cRDf-Cn#LcHUfBS_T=-~2&j5j^G9gGr~Z5o3NiZ{3WRBziDemh zdxpF&4BiSYlwGK<%@=T;?fhX0!m9cy73d&_8J7{C1y`qsbt|AH?yP6Izp32{y}BH- z)-{ZLnSka!P8^Oq0G#u$t@zQQd+Vt94Ct}vcsCW8sh6m0t1+!AT#fi8_6!2a$?x)` z7Q#cZ_52{G`hHRbpgn)u5u4@k(_EWhtxD`tzI+YF1Qw=-a%)Tbw5KxO#|KUE46S`9 z`Bn~8rJU5>=lb$A)5J1Y&wjiI%1{%UZYIlE_v^nlJK|{A3X_{3XO zw^+SMLGYJ?6eGn|`!us-_Lj_6?CS-SHILhCkH}nvL&(At)eN3GBH@xh(~Da5y1*sr zAJyS7J);A*@!I=?C|{|!SFEX-*UX!RSe-%Pk2sb2@l79$Yb+qQI^zS<>{PgZb;D(g zZ<`L)b+IP~_B{lLOD^Y@D^88$Jf3nV%X!@5$zXfmh_0R6dVjYeB=Xb>ILa$PIm>mf zZ~-^P$%q7_$p>Sw3SF3g%Z&R3IJ)JqmNQ*mPdhzSMDJouQt_Ww)csItNOGgC^7;AEts^@|=WPIv()cjmWo|c(&iW5M%@g-VX1*Y#nQ3{!bpI>&zhpJNQ%KJAmDn9f zd?kB+VM=z(_kx%QeFfDH@2rqWu*s2FC{T(WiThIPkeW@jo@~|54rfsS zkOXyKzBh(vtQtiD1aI9@c2z&x5t`qoTE zJ_4SpkkquBp+M{m2?v;;76b!~*X>>5Q?#Ww1>2&!h1=NCFzyS|Z--yX6JC={xEk$w zVMF|%noHzqO1;H}%&}ThVB-a|H8Q$qrdh1(&kWE}FnkHO*ZBrqek#MMHA_u!RqELv zS*Nyop-sD$I2(~L#x>o*rpFR7-O+S%?v0x_Gn>9o(Qpt-%ya}v61io zIhN9Ior5#+Z%Uf5Ic6U8XG)qsU1Hl^zv<~|*mV+Qz_CR4+~wL6x>|nU{192t5as<5 zM|)I`*#*nLuWC7DYd9`KLQF4v#~F6qwztr&aU${!7^9xkI-=ztMqdnd zwLs|`lw1pOHC|;vX4KhbT9ztl9S*-kV>&E~72Hwh z{QxXqG!*eG8HzN*lRE}3@@tYYv|_I|ds?zMQMK=r3=jHRxa@PvtOjT#uk3hNHe+iM zwD;A0&=}#CR*cw*c!bpPs?-x;RHiWL)Q$!lL^+Li7IL|wyFQNIv}1%p;W86w*f6;D z;gp8E5<-4FQ3#?|l}@KR9UAR|B4 zY%135H%a%~{^{+jBgDQ47}rAd}5@huJ+ zp&?Y}B?_RRDPMr{Z9z5QV#ksYF1=GY^Vd=@g_upgbl*_rfVKo(Y{#`=V4PR$OOC0t zQVr*nt_G~{SiVfte+6R@#^V_1t$4U(+Wq`o8KhYEDs-oClRuKr9lz9-_SR+Irv>9T z0}tql;;2U#1_=--szG!u*8eYVsSXXV_mcmqqIGr?iQ~6=eYV;!oI#IiXXs)6vB$@E zHJvQsMdRVV@r<|vVEn>R{=D?8^f>%v-J2L0d7#SI0IR`0k_8Q-w_F?ELI2XL0r_~F zK{FxJ`E%J9>pyx;wD{fZaV-kvZ)UNLdCuV(U|dN{NuIdTdwtw`T~#Z<&tEDY5&`Jg zU-WIfdo9bNZjnWs8hS{&8(s;`xVyGRbs^U$J)lm1I2TiUVk;bc92inQ*?-$C*x%ZJ+Z>bj%A*>fun-!RF zot^w)AZC^3D?W?L4yUIlxR2JR!mP~F?2tlLImDJUT@U{oZJrNq^D53=9#Sx(r#*7`=*}Oi8gAg zk(teLYm6}h=$OkXf7i)n<&ML4sVz#^LB5wHFRA8fIbcFVrXy<@;}I=MEOVk&V29*r zgSq_HvC4XjES@K+2qpJYwdpYPBFOL6^kl}FB2v*@!`0;xp#b`^+1d$VxqzDxr&Ij? zi}G$IiPWf_=u=*K+bM=imNSQ)^zd?P+hHGCmw{s*9YoK7xhlfcc&ho4%VVwS5$Q2% zT-M`d)GhbWR(~hvOQ(en@5;lg$yF;o0m5ow6MDnaup8TJPwKM5LbBb7WS7O}+450tlQauH6AYV|r1D5F zjpTNa1BXVYjX9MQTjDsCg>M;0`UKqVSLVZ5Jp3?^@efzt-V4+WGgsAR6(8$ zS2<}Yl>_;=;PxxS3hbAco}5!)86^g%A9K+AEnA+Ka*xdUU;OI7hddLW{%_X!;(xi- z0#X1F!W3JP5_99@7Y=0B$%%Aa!}4rgJI3QciejZm|D6I9ogrG~h@T=68C?3dkw3EZ zP}+HrUqaxonLqi&*HO^koZ13!=FwKhRXCyI(YU_?UAUgsS+HpalkPCOsaC{eAlvX9 zFsWp2h*fS2Awx})Ck1+w9&=aXW?&H!dwD6cR8OF>Zd^!%>ETu1(_aSggDxKKthGWyFjid5yg1+ zGC8XUr9{>m%Q(*24ZFXZ+TaD8d3ef%7YU+fVo^!*6A;`c4k5ro6M>HP)xB{IB=xTk z1cVupl~)+uebYn$b$N6g6l@=>smXtm^~}u*Bu8u2cOcM9(?^=Q$&uMBiy1g<$yz%BzJuf=?`VWw)@OvS_IvnowN^;t+kJOV z3#MkOQ|hjOZ|U)?mbE$SV+5g&S8hGUMcQ{WkVeW}bWKe7 zWtGd4RPI}nI8~+SekSZPle4AyR=wkoZOz_yXnrzH8LskSr49tS~|RNUeqB<-ZOH&$==&qzxB>)2pUjlRB_kFbgM2zAFy zT1VOw_GV?{pXO5w4E7sgb@@}kM~2D2R;DU(o(#x!Tv8mw4U>#*xXcI*AU7`wWfa^M zBc-&T)*`jvh5G|UcmJxV-KlDHh*o+DFK{TQ#7&TMcbCqQe5p>Xhm+h4xCEU;v}e&S z_zXx|(-E?cXi5oZvQ#Y(%d>peSS9xXcwb?1*VAuoLyPAf#1u&@{y`{Br3xT!y}9fapt1|FEg?l0T$x<6cBM5HEW2f3|JT* zAYHTs&x@LMs4`bHJS#|$H4tNM=sEi5WyuPzj^QI! zF7SE9hDD$BzZq#x+|Yh=U-^ur@;(;tjj5{3DC;!BTlg_XI9aNmpn5DDZd)*Hy<+qh z@mF9N+e14(gLEACDOr$2o557$ZxyIZEjHBo++o{4GY~c!Z!X!vnufdjqH}zu9i2Q^ z|LmS6i~yNy=<5(>yFZpBd;6KkyFB$Q|MKCwyu-ISgVRG5YB|oa*dk z@Z#T|6dR%uPVf&_Ir#z2DW?2*t^*yvnlka{UGrjGt|VRc`@d-Id}=K|Y+RiH2^<+( zJvDX>$2i$gcB!zgSZ~Fh1_IZ=o$_%-1$uKt|1hP2EW~tuc%UO4mJZ^w`STq~>G*9+ zJDF~)f7yr^Ib&{M52jXMyv8~=~#)c>Va~K<&WnyZSM-VJ% zM*J7cZs!YOgi9w>`X#NBBqvL(29NCu&6Y3JI1cr>VlU3@Oys(%X_n})VHb}^HL^OS z2WYDAOI)w$lypLmCH?CT7oh^YoE@ZO->a;xX}YFgSf2;%wKPX!sUtRxQpWnP|P@PM1_6iZV)F+|wQ263p|7btcncD0c#sB|yiSZaAOq z@UZk*K%t8y0XFOf`5!N?ZWIr0y$Yd&8eL8F29~_W>|NVdWLs`ST1NVkUE5L#oufir z7&$qx>&HvPx(+VVRaAQ-%Nn1eOZy*&MgBt?^xjMsglx{C(z6?C9A~(uG7qXi{6Cv2 z(+W?(8VMlu2<=1uE`l@l7oc4eLrww8dZ>v1&`C}L23Z&n6_C3d%30v@X(>Q;8qazl zZ}+lEGrnK|#Nk_@c0!$95F+e*0?I3xDo|cBWjIo>_v8CIT?DS{a{pczV$6mMD{?u} zPwQ2!7RqS=6+9>Ae3@qCQqC$EJ$}>DLFVR1Z`^-dHSc0vy;GBZ7+28i&Ry_NB2EFY zrunFFy%3>xpDq(Wq335yYMusVn%g5s^niWt<|5*`m6s5ShEf)bpBPoV2u+j zEsn8RyWfa|Q)*h?7N+3ptVJR%xL2aC37oS^J2fPC#X!ThNar2zcbctTjcH>3C}xI= zM?3Hy;!EnYpB)_JXrkMHtUtDVM%tTSxUb`R~)fC1J&c*@OXy$Uadm+2E*{Q6b z8H1iQk&joodAE;8$lJxey={)D8KlGPh+Oa*fA%u)XS>H&Ah~iTb=~`n?~vQeI1MU@ z3aoUjDV{8#sITJ|$vuP`Fnk{UV?%YCpc_fXBOq|jyQzo6So$MGZl}^l_({oo{S&!y z+F;4~$dBn6+NKS*4K=N!wZwyj9ULhuE3M9$oz+_h2JhPYP%J{X*_V*8{i#he(kk8> z73dnvSPtP_o&shoSz)OH*m$9fG>|m>MwE2a4$drGZu>ns;Bvyb0}R|f2GY^%WP5@t z0?5%ESrC~l3=A_l213^Y7NZMHwHV>*n^!vMPACxOT8`QqvQ@*lUHtaPt|UC-fKodt z{?#TEoJfJKP)*KIX|2YHF5s;gL69_RyT-)J_Rx{{$(64xqJXQ@qr$?AWn?s=Kpqi`MyI?U zQXNQ#s{oZ*AbsKETfen=I+oljPA}HO^_SpY+gdV14EH~5JIt0Jr;CEYHn8uDT+YRK z&Ks0RWuJD)U$I_w>NgxY&^K+AyuqB37z;An51FnF>>0W0(qsrNeopV`vC@H>lUVu! z=sr5E!R1wGnW{K`%R*-)KO3=(^@Q|TX_3APtrj8WB58bf3zw@D%t{$uxCl(nGHMQ+ z@2iT#|9-^gl`-O7Ks|MNb>*~yBG}u&1a@Z8YVwjA%KpK1 zQ7lfv(Q(g~>@BdX-H$nAa6`Q9S~PO*A&e4Qy{hmL+Ozwx6wtFYEM}ywMFNeR*beZk zWR}tkb}2M5wirFH9ypJ^bjC6G0*h=2!&y4D;&@^TOW2rHTeN_s)v(_BXyQYPTRGFS zi}5EUGm0i}_s4S*NPtqLi8b(yVP?1%8RQ$>A{bCh}J7OGjP%lukBp(%+#2ALlssSAd*{fr;r&-;;_(QKSzz9;Ps=GMl&kwHAMUz!Nh z=xGXUk`a&lUA!Am_4g8i(up;?ZPWt#kdIkedz4Xo4|>y{2_yP*T+?^%yl{(AsI-Lk z;B_-LL=fsv$>~_D~R{W0wN0A1%^}QtJpA9Cz3W%Oqj7hiXNp^+!G=`>Su{>J?-v|$Xf zRd3wdGe4OqgL4ox6LpS~aO-|()$kqP@0CiJm3jyD5vPd?QFxu*{%BuNc<-kzeOx@p zA-fvW`iB5_b{9Avts&wb}*|X(AClUa;k?`;MBLlaoVVU_Htkc=UQ!~ z`0nF$_xE#UyV zg%p9@=2}tSrI5$b+V)9i$Hq_wZdc!97F)RTLsCtqS(%>xx_Vf~R$>YtD;IU=f?0A- z1y_{yVvIQ3gMr+zw4!(52qkEeY;nxhxYz~Ke8tkBt%nlIK-#LcqZBl}^4$CGM8@mvx#^|+6W_$@QP zt3__vK9n&(q7M&l8kqe`ah?v`_c?G7eWVP<)JmDY69SL8x{8Rq*+H+!cH<8C!p>f9;5aY~D zH@NxgfS^iy<~bT1ekY5kmdP{D>{|>tl>0iX7yM;bENN6xs$5EN_q}7J>oL<$+O5p_ zf}6sEP%6yn%Pu|AAw8**<-IzqQ7-Qny_eu>7HOw-7$<68Do=H^x^bE{zca`qMHAb3 zT7+0R0w!r5O;<`{PEB36ew%hlrcpZf73oCdDQ|Ayry)faSD z;(sRNg)XE*3UsriLD+!&30Wq5F#RVY@SL9x`9Ou&$FGiaz$hTTdD>m$Ez_;h?UZ#G z<#iZ`UsnQe2WM*Hk&fxe&}>$e90~D{z&&0DH{owbc1^ zYlgw3r9dqM=C3{(P{mJjx15)yqdE#x7At&(^+>gJ9t6{ri3o2-#M}uZaj)a`4m0u; zx#78bHpOS|*H0Ob=18TF@3qit$MHUB)fxkoBt-M4`EnQ$y;Rk?SgY+MxR6bA79F&b zHu=1*GBYJyA!1$wt*DXKQ)4`aN*w%Ti`@?}(YIO)UNZKb0&ncjWs7qxdgdw!mV<>D zL0$vaXPR!dLvP`On}oe;qJ|2C3v5BUETbYDkyxlZmV+-|-R7t(ET0doKs~tKC)vEL znHz&z%4g~dSVnjhX?sJ@nAaq^e_VzZ%wU9+=__TcRdUM>$n5CO`2jV{+GL-|f`Ru2 z`d6!wgCAJQHfBeM*e&EP1d$HT6nELHf}=jk+zlQt$z2MyJs~a#J}KIAE3Z@{e@vM> z?K4#uChOPt4DQo&F-?&yI1(BR_#rm_iA_@~tHxdoN9|Us=pz;P)X=?~B*jkHW0q^f zZ;ovQ$6s_GvoNm-4>jLG;;ea)c?yvvSIF0<5l-Ogx~IerhdR#OV;k>jmmL zoVR<~SW=(UhdXQG?3b#jFSi2K{VPx=Z|mFXbA?u+D?Ks zYG%HamvTqLYW7JP=xJRxLYade-K*^K2mSWr+^#_r6_kyMjZSCrLk@C6a2E5qh((vb z9|@P8%?cKOFilji`(6(x4;63qwJ^F94%GcpG^+SMxDTi#r zk}rK*2HL7ylo9jSOi4Ck9*1!kU()uI zR_Twf!wanFO)N*W??q|%?i*RGb8rsSz)SEB`w3?2K%b^;>yOq4cXiAo+IPum6T1%1 zOo7|k>&0wm%$yxV*9hm*HOb2{jtz3oiB)J>d&O%j_kwM}}N+?Tp#rwF|~4B%YOa8&;vM3>op9>W}2L zJ)=B&-I;@pN(sSB27snl4Ij*w*`@SQAgJzL&L+~Qg9@Y$;I>q{@Tr@3WcPH83#wz&0J*2b>$wf^mG8@D=|R`_X)xNO+ZPv>PrHz#Xjw7-IN zNoeQWmrZ!*$adR%a<}teP$r7ifdHiiMfFuJ7{l2yboMHBG}WH?!Ap{R!8<%ojN!*L z3uc4q_qN*uA9WS$)LroWv`s$q@RE>>v61o5vO*U(V78nS=lS5^{nRO;r9(ywe2uR? zqT%ivIlB>4Lgb4E#AsFr!>i_Bi6Q*8U*0uLmCHfGOoOiz zUfDM$zY-{pmrxM1Znw}?gj)V_S6Y5$;j}5U7WahjR-WSKN zN=?;pon;OFm;-GKL=-EZ^S@_}8K`tk8jG>oi7eS6UKZo)rtj{}etnRD=5j@k9Ff7c9c|Lb9-)ev?Tv9-nG(7Bmn7H2ii_lcl9bAXy`0>Ndg_qOiP+17fx zIpzVwd`MVy5AWu_h@@F$vhOHeTdIg8`{vSiPu9Fn`<}2cZ8uGzcu$e6{)W*STAieN zWPL+7IZ-a!ozr?Iiffq4^#9N6aoOqB^NNzjFNp>II~k<*P#FuU;{#e++!%(*8#?hH zbK#!W4upf=~%seepO^qF>RCZQl z9F^VB%okvaHO>A{XU)5mz0@oIj!GRPuXiZlW{phtVncI33{6PV0sxGVCuD7C;_rrA z-#{{k@-rzWel30XEv;H)j}-U}n>%3*k%5`(yxo?AZ%S*e6Ptl&P}c~>Jm1CIrDo`Q zPjlj^G@q#()blCGw*zsiIQKR-_X5T}nCds^|M0?e~p^bb+*fcC@SJlx^xK&?dw2AY=NxZ-h(KCxAkz1`~g zAA(^kc@9Rp_Zh`<{Y!7o?{_of=oif$Sc_m=h=*FKJ@ z^XhH5#hwBGzci-zZvJ@$5dc`i{&Tb_%}N=|=lO=sDPCp$>>J=`j5?mCANTO}o5EIJ z+mF_m>nVLuTm8V-jhq|TSQWVEZrJNW%IDcdM9n{+oHFl@c~R+Wda{Kp?(oocDbsAF zdx6z#2E7-b;ytl+yE&|HIrTMC4XwR})>a>p&o{eiID#&q9anp;-QAh3!~?=^^5S1V~#8T-+3NZb6M}v{x81Shy#a0?P#lHd^BJ!q5Q z?h=A~aCZqF+!_h4jXQMXO>k&j|0MG!cjkXH@4dM*Yq6l%rx)x~r>b_`V9(sKQPddbSbQqR}1{KZ-v z%4ARj_jtJX07t!zG|iK3$Mcu2gLjz6R%hB1UZMWG!Fxl5?G+wM!14GibP1mIS&JJ@ z7NUcmF#Vp?;ySjilaiKjAbr1bwl zIxPK^Ryf@28l#K9@+NOtK>9TnavtA3aDeoOz$BWXC}(SlH+~0^6{%-o7^~1t^?Hp` zY`=(PynX2}hK_uY0y8nn{WDLiemR}Q@Iv&qM$af1O*6ldvg++Vl{1)rnmKR=pdVygqC$XM;rbfl>?4@6K#FMJf^!|B=D-*&_eR zl$+D69N2FyN;=R$MqYan(H^zbtJk>@n|{rN{U#RYV$Xr}DotL5ck|V;$W7@o2iJ`< zCT%O-%cwlHhOh?-cg=X$|I9bMKB|I?8y~4NL-6~u&*#J+N`2CcI1b*E({bon5ame> zv)4ssh?U!9zUXhisp5$ehMqNhR43c?!O zNuZq3hlkBfnN$0>;>Rw1n(069{82~g=*aFL2E;%GD+uld@&ov})EB@Joc|Xsg0JX; zNQvo3dH}$|_AK3&-uGVw%a%E%gNvyWvA%ZuVtx^Iue5Y@A6)DPZR!m}iixYDGUOvh$e6e%Y8TjG;fN4@x4aX?`6z>hT!wM(8A+G!zzo$Pu^ylzSX+E8I~={?7Pj{Bl$w@$IsWzX5ueLCH{#4`kzVS zclT&Nc|)J(B=+`i{8Kq)!l2wEd!(8GmK=O>uhUAVL?Y$SDem^8Y<=|6krG2I2wn_3 z{8yAs`4@#B*%>AL-cw{dvb+%(1(N(1zNf(pSbA! z>P+#cjhu3Y6!L%O85J9fes)R)Sm$8at40K`g3J3{7n zCv%NQ=@F5C$JfOJP#`p@%W#Ocer_e`C7af~4`7$}oUZ1V>qy3KS3B?$qujNB?+Oo) z#t`FT@HD*C+cZb z<31`VKvsHUkueklO7ZRbmrd?JAdLhAV?cKp$7~cYBtmIW_Bf0UtH_OCo0lbORp~hR z1fs_w&bSJyrKfN;^d_dD$C;q<;j?GDDHa_#Mmbvs^W_G!0Vrxr4jM~GXVPgw(Ei4@ zQIX2sK6Tz|dIMTfDml8g$R9zTL>C!&H|)YbR+`z)QWGYhp>vkOeQ5h5V&SnQzJ=!g zFnH7^_m6*Rb-)%j#qaY#SfKVXR?uU@%lZ6Crw4Z>Ez;C2@OW5+n*nG{3Mq zeq8QCA@NMSxn7I|ZVDgDcxTOTFOCIbn?zWh^Yb=LU-;OL7<76Cb??y607QH$n&W_D ziC5?{+b<9eg^U ztb9bOl$VbPsZ_;Oqo6)()oOt7Y7x(2S4&sQs&v$Oxl~>Y^tpU9S+LzWG;p7%MzE!; zz^i^o`_?C*<64tP%4~VB z_M3A`UO8|CxuDZeJX78H_Zs3IP`F4Fq6yd@q!GxJq`7%gqGymWRO;Za&Q>|NsowN| zTMYZ*%$x!t*jbxobPQEeA6cI)jq)9sD5yr^YdO@eT+z;?Yrk_oLuZZ{U#CY5;)Y&B zHCtv&&iSLKXV8vAFcyS71zr1@tx7yg4{0+;KihjJ-2jOp70vzRLTOh~Ed1+>w>Onq zEK6&S!s{@8*G0f(NWfq z0zN)^B9dmBx+jW>M?7ZAC{Jv z`IpzEm{wu(6M3jlcq1A!hq+qldElUPwn<56hEq2HI))=Ft`qULR??*kqz&?LUR z=sK;a?l5&M_5(b2R!lowi?#(`lQPzr4vd7lp5XSh~N)*E&wo z{QfA|*35wn(r>AkoS;#YC5lKKjCddN+Mt+Dgyt%jx(G-q1n-XDE*%M^ko@z1wdcmi z3$ziqZP8otLvZbGGy*{5A{+S9@*-7Cd1S3c#B7*N^uQuH=>yhMOZLGcM$S=tI%IOt zN-Yz!n*BP@maaOF`fKf5uYito+dWeC_45kJqa4dkcK>g9CR`UkJsI(FkJ1Ns-J%Nq z!ILvLi&?&Dh~b0055vh+6Rz-|Tc1cuia5SWH^7-S@+c}IOL^I!;~jSXv^Rg%xBBb(op8x(rcWdn zfK}}kq10t6@~bB)Xgqa&>((@JaGD~s*_fV>qr-a^C7IxTPD--d=SkMEc|Q-n3#wx8 zBA)sz&0)&9k|@xK6^*;@`oyzU_xfsU5znyIU zhh&TRyE;iEIlaz0_Lis6fjUdcUf9!rY&>AE&3);8ZMi$9@0tWdIvgrFa!J7{i6 zXKs3W}Z+Hl8|7p1paim?SzWqkPym#N*q=l?ilJeQFgZ5r@P;oioCOsB@ z@rk9}lD4{FJd1mvC%+1nk?J7X)Iu<0wHI9kQA*^o;Ya2!&6UoS)oxo&8|%utiNfk- z<+6*k{_68q{Z@$QjiN?~>f1d$J(T`$cu^*@*zWOT<9hDcd}V!3D7)BEn%p^D&G~== zmua}Gq$-mo>)J_LmHy+DSB~R{Y{20`ulO?~?7S$pdA@db z;mHP2&P7CK$L`aNE-31CVq4#t>UEI9(Y|Fo8tR@Q#q=G1o5x8rtFWkKQ(LQq-L_!| z1bQj>Ia4&aD1w|CwRgquW86~^r#YLlNGwoI%DMgG_%4L}70nwfsNCQ;BjGpQzJ9hi z;w~>mQnH&NB5S1U9+(0ZWl|Q6U)c{gNi|F^Jtd<}StJxh%VZuh&vtMHLQlcHMKbl_ ziRP`>C|AQVBPOK5{Wo$cu-(_r?bCd_i#n19z`m87rD~><8&*kMj@(dpmdVMwIyB|U zV$yNRuOP{Vv^}D5gM%k64F^ZNot}p(! zwfXxTR!TI&hzLOW$GwS@AGS1c>2&Fi!`KCD^qZjJz zDaKp!S`OPqqi$;g4s@qh8vz5vK#qquA?r)EUv}NNynS>A7puo3V}!tVxTCR#FN&g< zF2)THe((?Q`WXP#ea2Q`k^r{Ssbdg|QMBVodX?F9DZkX2Ys+0*x0KJdW z)?4dWwy|WYY2*XDNIYS~By#L9#F|Bp)94cyH~g7by>%UxI^&dg~I=j}vdUtTW8SfQa&KBjFsjSEA0-T0Gsl3mc0- z+`BE#(KG_Klo>tgwgj538L_Z|0?c@#r18v?eEE*keG=7HA|1zaEfr=@6Y;vaf|d@l z>wv_p+L5HE(TRt?MCuUPVhT#pPz1Lczqf>faSulHJ~STU^d}8@(ceRFMRy#V^>zBr zV(J>j4ozMT-2dvvX|lY|llWt1{0EQ8C;rX`g~)@sbpC3)T} zvxOXuQ_^zFN;BtY-r#ubu>et_$EFD--o(GU7(e? zu2HHokfQm%8GW&wXQ<70stnO*xo$Vp*MT8ilSFQ>FF(ssrcSp>4Rt9Nr}3re+puMV zq0UCFPMhLH-wH&HYh7%n^EVFL&eYVxr=#cmA$y~wXClVS61AoG)Y@v<(O<%s3|tHX z-dH6ZLn8T~AqqS)y%TYKd%!Rt8rs`QwD=_6kn_Nwl}dL;(uI^K(1(_XSQ z7Hq!P%|db+REEl!mwNAwfYC(oGZQ^T&!q(P8aO64+|F8`M(Wqj@z6)CYpK zgD^eW11i{_eZ<}bb0+-@sR3>!u2RwYvO-O5`i9=Tri?dhjAiDm@9J3^ifZ)n+ZiSV zri=}YjSKuXuILrVs=&b~+Am?IRVX>Uem(j3s$0nfl`I;D*)RkV*fyv@B zI46XoVxH}-RH>hMv?!HLC7GVIGE-p4D2ccR#2q%2x6|lVF4GY^Ri&BWm8;dTTJyH> zB#!mlAeuCoYMVBUopETvG6u`?S-eEe01J^&>+rhV+=C)=M}nB!8C`P3if}iFdF&k- zitTqhg|eMFn+MH>1=QWP-*6|)MG$JNV1d`1214vnm%jG(*n?excgVk1p~vy- z{;;!2yorS{G+0neD>0r)r+3wv*pi7qN3_N)$bDJt*op+qzD~A&j3AaNx|xg%+tJ4C zN-a#ta`Rp|B>uXX?X0do>)T_zimgD=I<0>?cd$9+zNp<^eCxBG6wzQ=zTwOEH@ho| z+qC@!b;TT>7ro)HASDUY824W( z<>HUgW8-~4C?kt~3AdBgOgN;SWiep>1 zA~(;Yhicer58c$RP#Rk9SXkTSORG!XF1H(x+aa|iDL9ig)z(~5SEQb$;a>29O@+!| zBHlYH|9J@X|0C~rf8`wENY_VWV1Ed0>rbIoA{2Rz$=Om*D_%Q-oBJgs%wkgTg0EbF zUs^kUEH@l_`HipN?V}+Lf*1Ulz-Eq5#>>cmE~QIRR8y5V6vz5t6aSy}HB_5?>s|qf z^8C8SJ@cu3s!=!~D6gh;lW`Z#v^r6*;(=SKX2jEro*4}LXt--39eu&Amkm8NtZtPN zuHk(+PVVFH}o1(iijOogf57$3Yo38uvhUUO2J*;1c>cz z?6E_6!tJQUzk)US&Jq1mXn7_hn?IyyPX+IX^ave1m)m9yx!gWO^3SEFUJLhh;TPej zi`VHUX{1yGoV<4M;G;+PvSxgI4fmpv?M)NN>t9UR{U%A1um+v8#C#GJL$p>R_@j~? z3^?w4f>?;Gt4wMEK7;(62BLdd?s%#`ooyjFy9SWTA;nb7iuY)53^+Pt=56*PZpbI* zd4$H(0fSe>csG6NyST0`IwkZ5>i5AVTI0NJcg%_Cnt@ET3--K_?t%)R31It`d~a4= z;kO@}{NMN0o=MRz<&iBR>1~b?me75Vlsw=*i;u z=(6Gg3eyo3dp5fz!J-IW%lDW`^Uzw(h_+c>LYbyD3T}s5!E3*#=fl4 zz(|Uu;sduHS!0$xOB1-QHD~QG0!j=PJvnG|HJ)RMVuZTMiwT;1r)*Uq5U03fj@hX{o1?e;Rj5Qneg^$LldfjD zTIMxjkpEHR3Gpv*yN(GrJS;4X@`Pv2d6j z`t1i#8xX}i57x8XVd+M^*w}VFh~GUNYAtWfBf7xtQ+=K;YMzmJ3@c0Bh*V5zkKs12 zjjZtP$z6q05Y57kiD~h_{ z9PtZ9RfT8dr2a1ywUVg2?5&+y8x*tGi1_8DuAK$E`9-9sVZwLSf3KSCZx#h@KxcS`1e;B&L>~G-;_w6=2$|plnU#C4tL?2n-R-d{Q$Sg(PSJE4U}R+2 z@x0mfHu67!^Ya^?eTV(Zsj^o18OZ!@IkA~9r$a+fzC4|1n3D>DV{EOxf2H(6CM=A% zttNUsfxab(8#hgbA)g;0nw$|)GvCqhl)B>BSwzgtkad z2Qi?`uG`;!=oU|~+UPtgb{=ULwb%b@u}Cn!>`=S>pj~Y*i%Wy=sJZ*(8|dXEp(Dut z?VHr&2%^$uu-Q_PPd%Bd)-k9!lV<&zpjT*XS)FyBfZX{$sI0-nBI3uPgQjS|lfJ_b zWy<`Xl{tPq7Pa6NcTrAEH*%8(HuYMxB)kxUGvv1|p?n zS%9E_WbytnX$8f)hTUTpCq{o!UJXFRV3?~U9Ic|0lO(Ys+UGa?T1nKdzkl=%$_h)p zMK_=O%xwtf9*265CYOVbo4+tsJ(p4?ts+E`{*t$^Q)NcEmo?!gFMHS0_vjR{xC z+P1wl9H*69oI<@-s?%IiEn1Ton%|Wy7JIyKF3LR=Qh!z@`V7BB|6kq31W~SsUv4re z3;opiciHUn$-E39^4gKx@rKym0DRFkvRO+vdZ6_JHF{ESHj*)Q?euPyWFNrh;&Ux-JFyMrwAj8Qd&N@G>v8N3wI!oJ-?HU9$oQJB&a-X#{E;TGgS1b z|4^2-eKl!iPO-bDOqL5M?{_31Z7MEpvtR`N9gIn<51tftY(Bov-y#VX(6T8IiabOlo>OI#+a5C3vr_n`a*sa=;Bgicca(8Qu znBg<>cKlYPQW8s?E~+%`#qG=8sRm$yZNvkjSLT7C-#13fqkzjm1MJpu8di=_JttBiYcBQJ|C`Rpl`uHcJ;i7Nx{Q0Zg~?lm?+6Cm(&HNOpZeI>9!{^_i`^T!r{| z1af|gj>UD5oon0t=6%fb*Ki{iuc*F8tBG@{Fg{)5yOxd))%Q!{MsN?jWkQa3cyb$Z zD(4Y6#qX`y$0s6njR+FyJ4Wa;5$K%f+MY6;eiDNjLDrc@wZm=^mTI_shz59^4jpT_ z@Zh>_Qy5;{Yl!x36FBSy6^U)94Cw~>-J`nE-U;QZlKKWg=rC-ajoca39ui*RY|zo7 zb1je_211^m7}vTL$1&m$7qESO>O=7b|8Nxo$M+&hOFZqa?SPPO+`RqFC*u{QhvW5< z*oMY2Wj3SQZpg~4V1-Cuogw*|L7oM(xG&Nn3XbB$8*TzH8u?n!teg5dYQ z7)EbI1uF^aWBaT(fiO<$zgJDfeP3&CLDm(P`Xo~sOcc{@2H(%|a%X;(#3LZ&J7AWK zg!)GCbvsBK9~B%_#oh}Z#4d-He|Q**T;iTaPdEjt!+JkW<9x|%Kmkt_eGbvUnT44z zL>~#sq!~45j$&y`xud3z%=YcL15iA}>q~phCk=FhXWzE-hQGdZoLcnf*n;N`3*4nD z%qgB7In*>V8_tqm^_tAJSsQVAs7-9B9+&KA0^7xV4z#~ugH)i58Iq4`Mj4W5Ft{H? zO@x1^8sJsOcdgp-;d{N%x*hEayAPSW>sd-`oG4k)pt^9oN`IdLQlimJApUm2coN54 zi56Gjdv5EnjDISOxG4ODgeBU*7)XL~etO=B)khSVX%)T^J()AZOb@SlJ}i7XTy3_9 z$o47AytT+2{OH3S<*focKY=s5P$Ls8?L}tCCSWAF^2433i@l6-g}NnMlKrYr12ue- zBH?<76smEYGZ&9Gi80rAb1OR55P4iz4xVvVkc}-Hj|}~dyaVrDuTKX1ZgHh1sq%{h)a|PXZ78#~mEaI@9e0D}#l9a3oJ!+&u*y(* zL+)J|*@(7&a$=AcuusBQ?~yde7{A6)ep`;cY@9|8hxwhE>97tDmM^t=oiu(r5`PYN zl4kYD6}6w=$0c&Pu=>A_`WBk6lF7@D#069R$zp;*IcZKNitBd64wW6JAh4OE7@a78N zV|x2Nx2mlTr7Tr4#6oPQt}FXcTq5fUrf4nl2E;vkc9Q3m=jWZZL%8T#f5>LI7fXrQ zFOFOhY4O%upooNc468l5__gy+tQ=XjGLLfQXQaJ6mjDku#Vj3*d9ikRxP1i<{{%7= zXbAj?O1#zKN;Y=({hLPdQE-^;bhb{Hj`)}ZarvwK5Ho(8ngPiulCz4%s%7(rE%%${ zJe|7T2B7dPh6@$C=oEuQEw8r9okr<3Yr{^h9>kJQ;jdQV4I@zhfi4Ya# zJ&e3?qI2!TS139^Fg?szie9)YuKjY}V-0Ya{$MNC^w4HSB6o;p3{!v_AZq$3?%321 zH&)l+>uHA$$BrgYbOdRbXRQu$k2TwER$&c?;|#zRxeehVvGi%$59zfaU}pF|mHNuU z2`ZN0sJX4ILK%X;(*K@Q=tX$35|NUE{rHq;JEkqxc!&HHGGsf^v~ipfm}srF;rf7e zj(HTJ!)nasJz_t^1W*3K7tg1S@}4cr2>kIjv94-iMZ|Fu#)A&CB>#3#Yh^gV_1Kr7 z#;NA>X)p8TsG`25M-U4i_J$ix3S-X^E|?*6I-GxN6^vXXh`GBG3FNi6xA}r&9s5Ah zHBp=Tz`K-%D5rdeo``p~5B6vCaV!f<*s1UIsku`UqiIiwgv7=|8|rs+CNI)G^x`DI z&ihvF$Bovl2fCg-)&ds?{IlyoL4aE$sb_QqlrW9;CNNR~?ya;js#GTx~i-O~>Z$w?m z{C2}RFcetv;`1yX-AQw&xPj*XaY0Y2XHZqZFuSkCpm@s14LB z)z|Y?#-1mE%=aCC=nK*jpY@}(060)yNz==(<`*ElA^L%;(7va?|FhtfRWQ~>(*;%L zreTD#aWu9I!9TyE08M#AMeIedJ0ira!Uh1tYOD7O8o}e zzMI}7y>&SAd`@Guegz{BM$XS!aac22dhMVt=F;OkAk`lm3ayf(vl&0H)Z$+1Nd-9f zz=Zo;jU^V}FAR9;7iqN8o!yW?OqWLfN%zfz>HV)@?ZNVSSN?C;R^Q`CRR6^9g^))q zX%4=)-iNxCn%shr|BC9r;EwwMIDyYLY@)&k8lO zRHM$u(e1k*c^gR_6Q5Oz;svGb%#|1Zw!=XWJ#~N{gjeNX{wVf zzeAvQZ-II^EQH4l9yXoGyn#2PCIz|Ok_C7V(7=GTFFtIt5!A*yTN7C%>Nc{i0(t;; z2)NY{5)YU!TXWVJfw&qd{`qnp)uvrFEBtH+yWnjbxJ-We^3US* zsqMeY%P|Ia{Q!Sc&BuuR#t1h^)YT!$4u_gJk?|B>GE_Y7e93{-`6QRx>DaBZt zx5kmVni(kND@Qm}0wDiiL0G;nXOLvwkgc|O)s>sM)J(A@zVq$yu;$;ZVyZG&b*sez z?Hzd;OWdFUgxD5}FSx|a&qR8wz|;g$^q#bJ(`z)8$UAQ_o+oX9Yfqm`bg;hK z=R=<6&-42;2JV0Er#ZwLJ;9(s`zl4D>ol)OB&brYr8k-0gqF_1E|}z>rdP&1%6+vo^8B;Y-p*(_WhU zJ9d2Z*(+xaq0e%eM?^uPsSjHVpsgW3^|OrlpQ#|=aKb9WuWr{hJNdESfgU*-2^=y! z9GWN30QbBvITMdxVz~2%W%n6iTGK&m8x!b1Q*(NEd;4pu5!r=_>1e?2YDFjU1K+?n3V( z1OwrQIH+(yzt4?#Z=xG+}GSmJUkS7MlaL z4;ld#HqJM;Pecuc=0>3&`Yi|ZS?1o*nBeUB3RpneRGEi@qqpM7`;XGmL&v};PzBP) zG-z$tr(PW_R86%5?s4LUY~AGEc^2$V5B{0vD}xt~xhd9RKF!S|gLrt-4TY|SZ3)kR zT#N7_;DXq&l696VUO+N@T5fi``XJH1K380yBX`_Cxon5e`5-;_72{OdtZ%`xc4gk# z3po?Nje)0x=FTWYN3T$MlzF+#w!w{MJ+;8hMMhult)efq*$k6xetDPF6INDxZ6D}l zIWuxxio@{pL7Z|wQ?9ei*Io7r*p;3CFmWa%W*W4!Wt&u~IDM0cyK5PtU&k{k;)?Ay zl+^(H_^K_?(G8>WXpyARPtNV>=vQFJ$xhZRnx)}d3W0?yMx|z5gHidYHFH?t*{@g7 z9=hTx<^0wbh>pi1kN?regsM+>y|hlpD^yt--P09#2^9`9o#)cB>dwk!a$$&kQJ)zs z&^OYvk|`!t+sRV5Zm6URS!H3bnZsIYU<=Fh`d!VIeD(BU(#lR<)la!OZd6Umh-PX5 zi|2=A3s>2n2q zh8*fXp4Yd3+MwE{f%c!KaUT=Wf&gy!{0>_SU{CD!9RazgS zChJsjg3r5l0WG)b_xe4CLGLh1+6EoR2ubH#*H4krWRw-G^rJ*Lk$gl`gHweGi7IRx zwG$Ju-uf_hH^XRsTT#9DzoitKwaX5ngv_>x&Yn4wI6QfK@2PL784bfiI$K+7(vdAE z30uoeX~82(7Q%TWCR9(!)3qEiV)rBHUKp8+`0;C0OL&$2fxT!;)0~?izb!C0g;#jm z9$mfCJ~7Fo7nI+i%pW1ml?C|0IO3DEgw17}5B;|1KER&hdWeqer>Pi7(9JPEy~Jy8 z^!5~mAm^c{2G^DBrZ!}8QUbzqW_qvtiWgso=C%M&g*BI5u$ws;Q5v3kktAfo##OJ+7a!aWFb>5uS8UU7-3F-az^bTy>CEI7^W~vd8GE*`Umwoud5)YT%&<2; zbg*3=q}O3srPbU4ZVzHxxrU_8=jF>1x>ycfRL?S7=j$BW0k$ZoS~G*;Kw;0jvl5ZV z+9%&pm?uffBIWv@k?`Z?V-Ga@3PqH;rn`cw21nh>XQU;pCOA^pG%=w*@P~J?KCqZt z%cr55UKKj_O++;3$<(EQKW>AAi1DRhJpn7P_4~a{rRmuzlU=)FJS)RvDB zd&(#W(k6-{cj9GW8(6=9@0Jg|7XWuJCeSciDm?IzvVY2Z_Zrf^l4mp+e71(?pgD9R zC*}TGul<$HLt(I&wu=!kmPV|7oEl^pVce1*H1RCyLVb7PncZvxt+&PU5xB?JJg}_3 zy!G4Fi6LIMbRW>mU&V z(LzMF$H|6@N}cA);w7tPlX>O&(BNaEZpU&VqU38c|&7 z_lTU}UH+Vm_Q+$%NqqZn+F?Q;1sOeh()=q$=EM|mFaxPv;0Cy)x`RFM1?&GK6+cNg zzuZNFd7s+Rzs>njA|oiD&Lr*8Cu5E0eF?-O!lrJ$9Q9UEjAS;BHILqE^?c{LltC1b zM@d58A%cCI`#x_FG};^ZPwm@FXfCsb z8Ko?J=#z(&N#q{FUIu*%Wua?UPP1JvE^(h|YadCAsBFrW@MZg7JG1^*GJNf4hUalh zTrR%vAFn<3a7hbVJ*s?0OhDdAk0Hpv-u<+o81?mm3az%fN2tJ))G>sKZk!`iA^4x2 zAM-=CY|aZ#$BCxrhpMVAS5^=A0yZJas#uZt^7B5KeU6`^fu%>EUGYRtDmtaW>X-d3 zC=~9Rt2Bp9UK{#>|NUY=MejK*2)>`$g_O2NJ3Y_48=?B<Dq&*v+vkn^ipk1+ ziakOqab;`osS-cONW`bJiKm7;eR2hk`;b45^W~_|O)gZ6$)=TPl&z(a-HylKE{NYP zorhruuBcxjdYD{?7zAXxKhN{yn;)a>SypmH8Gg2Vj8m>172Pd#XxW=c%sog}Rpz1i z6pBMtkk>TXZ|fcjA+2a?U!G2HZYeypxXYKj_CKU>Qh@>)YG-WfNvTf_{ zTLpInEn`+XnO(dr)9#WrGrHTZJnDbR_)xYQ$vk57>522R(JfBA>QqMA+xzM+TdvQ+ zU|YQRD-C;Aq*pac67Nn956(9U%gl$Zzo?=W*_;`!9-M%iorkR%?%$P~aE-&0YmVb<${_NAtvr`}`j6gL2p zJFfBv(qXMiz*fo_=AHUIn(IUD$?XTHgVeVvuk}P+i!a8ygk0YfRi)XQrjC`$>G!!_ zXKvrRh3|&i%#QRmV2!0A?eHLUIHM*!3eI7=xn%noccPedHf2LG&1r0Ax<88p`9?0{ zB|QIxelzR*Y-;*Jg;lC7qHNy-@OI2ffnz|g(mh?u|rqs z1Q{3jh*eBcq6=QBiW%BCCoMvMzWV&!2S=*P)$B^QGC$!lS~DWN=%Y^%6CQY^-WN!4 zsw-|zRl`(|DCjPk{l&?r>+FEk9kBwAWj&wIc`}O}@e|?srshzlw5GR6>7<)L)wZ?x z)pe#MY;~?7qwhOSgfPssHM5lc7&(UQV;S6Y==*glN1qDOOQb!0fl(`t3T za6PmPW5#NcCp)^R(CE?eq>WGyXXcwJr;WQQ52oZ4F{B?KDh(-GyTrBZEjr80);~R- z;zpzNS%{=hef@a``7A(E4xP(!`(^#n-gLJri!Rh;AAiOo5A0FCEcDmUMidc!kazrX z_!Pf0#~}L}2uO>j&lC5&8Shh_eDUhUF?=7^0ZT_1;!S>)dH9uvxk|F1CtL!nh=x3b zQ8mP9uG6_VHiauQoRQ!l9qC?NJTxTn^gL;>g-YFBjvFXJy|KJuZ5KVg*Z#guX{s_Y zaCTsJF)g}wNIQeWwuQg61|)kp@4+>H;2=3)8?HnDCBcP(XSV`6nIX;m=E<}NlT%vF z**UH!NCU#V!vt8)u&k}QU(^T97_RR!0Tu;{)S>D1yZz~tI0MQYkY=o|mCpcG+D(4w zL1pod7HODhvm{I}Y5}#29FL}V6DXhJx2*mrsF)idD&=gi#fdR8elH~7So;xY~AdapgCQi*bXP;g5qtF=5Z%@7= za1Os`8oRt52()XnG?+csaK5VzXz-nOl~x0;ex8Yia2%Kz>~yN8m^>r5;Ednf!8!{f zR7E1x9fugaB?~UTb+vm$o=EDRaLy}q8-sU!KvI+XMP_<|(^N5Cv}kDZedR|Na~2`N zZl0#OSaq&0zKhbBD3za z5FKH4prGhJM149qU}|toLmiVJYq2)U%IfO1GFv>t1ZBbV4#(W;tgdsbNp2T z@HLfb=dYsu$DFAx-z^lHxO8pWM{ZW);X1i@Cr2Guyt1L@cf?Vr;uYq1oGg81BV^dS zQ2vPTa71|#Hd4QumPwLd#6vKMo<(m8*u;`(Fvv&J)R7HK%OKaaW@NOf z@BqhF+b?O%jP1zD*oRNS5^?3b&e7M*-HUVZ2qGr3FxHnAq%?R|u29xF`FgLX1>l>S zrGWeX!J57XkjLn$N7zI7%eD*blFUXDc?MqQ-?8Q0qTNsrztFWrdd6q^65lP6JHrp! z-aiszQ!H9FTOV7bEw-;$RL*$5sqlan)4IUs*SUu`ZyttJ=Y{E?G3K1 zZ_E>p;j~%H@*jE(>qorTMf77_^}4R~AY^sm&!U|-juQ;GYt97RmaB`&x1xE?j1qua zV^^D&h&oQ$=<@oF!?PiM=4pd=mX5ZvgyrD#>p<5j{ng2r6~aZ0*YZjv%x(rDb^DJW zLu?CKSpa3F0AD_G*}BtbJM`3vgM~d&OTAe3Q_6UKG6C zyKnG`#h$A+G11#}f!n6JfsjghDV53Q{Xn?xyXLv=CP{$vbApAYo!#}`n`v5|s*sG` z_S-a;%WA?@wfZAjhmLMMk+FI2ro+OPl}%-i*c+3NWtkG$o9A=9&wU}qG~z*N%$}?% z*r=noYa+H&KE}uQVZ1~$=jvM72Zz8n_-b2bfrG#@rIaK*CRp_wGXsq;!$T+u?%Fw= z?96IgmQn4$YNTn(^9=q5o-Lz9gI7M?N!q~q@VdLe7Ns1|Fofh`e$;+5Su4zf#IB%~ zH~6_2=Ol}Q3ZK`L?d8OZ_nJ-w|L*99zauR*p=<6BVvR!pQ>`_BM1|z}WL=>yIKe&T z+^-CxG$8_KoCsI~NO}tKp95;*qv9{bY{LF%3gUs7vp7ma4G{?7S(Hy6UwSnT%5waT9O`vik@N8f&YwPNY7^05VI5#)1?H>J&L7MBp| zza;m7*`e?IF>Z{FKs%HYACQ;q zlOGO#8AfM17YGP?s#%Ua1u5k(R4a*ChsG2Td;$@d zOlQi5iwYVSfrMa-rk#5!a_6v1dPC{Tw zKHO+B-tp8S&g|RHlRD@w>iZk9#g$}AS_cC0fv8+Zk>gs&U9S&nsucl1?JDcJTvMI5 zu0Oso5RECW5*g~qyelg7F{-~*vqUAZO>VBuZu|7n$ml5o?X)!uThiGuVR!;BEfh|$ z(T9xPzthF>5yKKk{d<#xOd8?*s~>-($Q*jkOmFF!op|6GM}5F>OH6c|v#ftt$Fm?T zTWejMz=xkmvX|$@-$`EQ$mpQCE{@Q5)NUX8w&3mE+cf<6T{>I$s{~Tm1Iv z%k(w_)%K?6Bo&7r{6gZ)3)(XZ7m8g6v7#{xKVAli1Uf%e1$eJ?WytBySL+wK4n$wx zdhdGrpe8Y6OPmcaHO`+&KYL{RBG2h5H?_zyac&0}r3_SuWDy9$&|gq+8;7SN!`;-n zp=QZv+`G-7DQV^QF1h}uy><(kTg^^ksL52XH2!oYP@^%h2;?L8%OC+RN^NGdtAKokHw}L0Yb|NvD;R}q%!zbrQL8w{!_GOMhYuaO-$Lvs3*@~K7aJc z8z~QZyODa?PuuK-(`km_-^P_znlhIHEjAeskyjvn<(7{#J3XzQ6%GaTkhz__D~gMg z@LY`T@rF)}OF@8k$zN5B@GG>`%-m2X3Rn|*k>m7N$F&ptn5FRBi>!|ZSdFl%Q0wM1 zR@pa5$gHs!bW>~vVs48Uvvc{k6|-?O{SUBrTdjsv2d@E2?!>yV{es z@bt#uRc($Zam+5DY=yncWs8;EmLkodXqeyF&gInrMZHDOn!iTd<|lAHK&U2XZaS00 z#xmy@71=Z|jj)iR5kkJv3f%~bLCZ%xuUM-MNev(UL^OMKf~;a4u^m31QK4D78 z;;KPKqVj2IvZ&KhBOJH~gshBp*w;rQVlbUH@UFmlkcabW*3ll|Xb#QTFRi)!d(-}b zv(z<8L25|h>Ja*Lq^GkF6}j2mvu>%4LV2xutZ|)qR?i%d;OS-qi|;z^3Z^C+=61;Y z9i$ycR3uZ@+rI&a@4QYkw853>vNcz;L_~NUp=yPNu>n_(sA; z0?{smSeQ)b@jjawkI0N}#8}k+3DvT?j1f`V%6zX2i&mf&^!weDve3)RxW1H8T@^DC zN^vrS$q5_}?m7iN{Ol4-M}w{{Gm|x03wi5z(XSDg8|R&^kyZ-Mb<(J6qg)tNJJkyo zQ7`qoBt@gfuezjIB_?SZ5i68$+O76v_RVv|rjlc|y*dYO)HWSfoajgyY=KP0^{V6d~~Z3%vMskqziaW@Fbb6%o?HSBE9$+x75vgNRiyg zY+z}K~lpv98L zHD<(zGv2*=Eni zm77jD1SeR|GYuPEL@wE9-eD@ZBXIL{s*5aLmG#KH(B9tY57c7cbDGgCY!1ZN*5^eF z`SZ%YWMrO-WolAQ5N%FU8&$n-wI*AiO*>;3r33p+96V`U9>JM$IYnbW8}C)g#=uqD9A`Z!!R2Yt{NnKWzIIQcXdND+)wWl8 zKfc9DVd*G#ZN?q`wCd7aOQL{v7%lM;*RVyb90d9DY0y|9QtfBHuxgox9FSuVmDS1YJ%<*<`wQ3gorjF@ubf`(?7lT9TnQ#AQ-n7Z0l$u#ilteTC8osvvO$bGl8EIeR>^G|AE@)#AZ=AYiJhzGnDPk zgM3nIVOXaR!lNJg9L%A-KOg!aE+~*^1|{v4p+le}N7ptq!RQL16)+e1_RK6v=Jfmn z?YYp-l<|d7Ev){XQAx~=A2Dyy&^S&+!tz(afJa|tl00f>I6ka-2l5mo$;iOs&#d(E zUT;TRi@m(6=+3E2Nm8SHbyj$LD!#tD$A^;UAoy@f6gLfxMAX>K63lcM_=Y@->Q41D zAF=Jl{tH@640i}M?-1e^cIuH>D`^VmuXp5tdB<)BI)-iPJy4;qp9V)v+9aw$BEDls zum=F(D`k~_&ejjWT(Edb*_cD{yo=ZBNLf2Du_%u$^`Ck@aQE_GedvKF0Ea^P_V9%+XL}tovGz!Z z{KLR3O>c^ei?$b81s>j&QZ%RZ6A5`k@WLV{x{peCEycdDu$J5$2D_aI@pgQYr)Hr;6%;w;9>&Ok@s#kq`}-U5>+q?dcBSm=ud(0DU= zo2D6}4;gTCzuEo8#Xb>~z`1_%P^TlAbmfa%JquZ9y4gmMK%&9G92t?deVJPiH*4W`?C7qoscnd> z`YL|GcI=y0x`WnaO4v7?Yf0PQ?cgZR*%uwusI#;`o*5pez6hN-&f=*)gxy{pgQ~p1 z*C$s?gC(E=p>*T%gP7y&F|K5bRN2#2Vhx@74=0>CLItUmo2#7T%){tIaPLx0*ZMB- z!oTaE&RWep`Q|~nF%Xz<_~YPnPfE4^Xrh zPw4_1wkHmxvvu_L>?K*uN?O&E&}W5I(XC!=i_EQgU>8_=%9Flx?%(2^l{}YmtfuSP z!^yL0Etr(JeQQcSSV`QAr*Hr-(BH2c$fa}QOknbQ;j$(qJ;-P#e| z7A2C73^{K0g7Y3~4rx613{fAF!zD{gW3mpHkC~s67zb`P6!`#<=!00>#_2XZ^{@VK z-`~9CEt=4YO2$po#J*Q+IaTij2KYWBnf~1uH1?V*eT`2v(mx6j=P&2qJ^!@k$yWTyrw)7XM>F6 zI3uOeLbrE0!;Qa^&3kFiXoXl+zYRLhixLr+64>SZ5<$Vb$qast!YTQw2iJ2&9ZMnTSSGk6A1;cZLLqsOn< z>dKkRnOTvkV{#ZWW#Jarczz@gLN!95u2(q0#v6fF@WY^vmd+wvF+O~P?~x*-IRu

    zMzHoI0Z&eF>Ny=GH&!kh7+_!R#tu9tI^R&nyg-;>`1VN zD@o>d7N->KbohXfafWs?yZ>QSM$DVm#psHYR>-&_%NHx9H~rRZk`2ZhiB{W{Un@)4 zD6u$jPZgxS?YO8|C5u#ngLLIvPjC{?SAAw zkD-quXt)_7#{@|xB?)#J;lF!8=C2>etB<+A8B`yV+8C$`a0%bwvYX%2njxBsJ3m6P zKXBx@Bb&x9pCg5G&)3#BIa@WdHRjltaY?&#rfzDV%!k}`&7}p`tTwvL)GVs+6)~JG zU|R{2rp!ACNA$5R0VA#}WVkpQza}8)sM!=f-vh3>-)1!SsXXzHS_a4rqN#`r=+|5VYqo+B+>o!f5P&PTStuc#XOprTlM$%E5!qt7 zkNH$JD={Cm?JW&L8}(R;J6#9qsXRZk3dMLuaDX}%LOrC385sgax3u(lxK3Ui=TnU> zVp{3VIW4oei(eD15Jv4F!n!e`v1vi9dn+Ls+4{~;i1>pmW0S?6YOA4so2k5zCqc|h zdpul(>xtUvV;ByOGHuOCFwKjafv6KR0Ma^8tO%l5UM?Y}@@w|J;#6VXN?HtT?Zx&Q zB>I+5tl&=Qsa9D!Ls>)ieVy!m>sagH%c}AcATRj2wi?A9iZuCQ=?EatM>!;zN>i8z zT(I=xy-H3`aGRIR&rsq72N$!KbxA-k#d&96fbu+Z;a!27PGF+M1xesk9W&8 zc}A-`&#jxCvZ6?7yEIKT%6TnVZdvJ7!rM!R?<9&>_w#RcNQt-I(^%~dSZ`SDw?Tc% zz^Y9YvyU3$)KuR3A+&6jjOk(@XO9wQuc;-i??QG7K1uEdfU|i98&E|@lSmk1;m=bdg}!$gefA3%dog=wHYp;83MBn9 z{0Ly%FVmx^*xj~z-4iW|+-dwtcV^JT|D|D~43Mcm2RmVXBv|s;OgI}>@oL0F{i7Lg zQP-O^&hKy>A!zY;(07ho`{bI+9cJ&>cTSCk zcL&ok!MBDKLsxxIWZa%3=_mxhw|&^xxD`2=koR9G0Q}ovT@wV@>>X)CFMw9|i|_|B z?I{Me{e$LwfmSzPI!xer9s5Yz5SOSoi~_3tX#=XRjNJ+4GOOqyUBBY)Xk2B11Vk3Q zv?Q0e?hu?$cbaH)f~)wBDUgc2jCDHPs<#Ae+da!bckO8?W7|WH zJw{!xeiwhB2nSL}RkcA!%pvUn)}d+Jmv5f$T`5d3265}(4Y&j&OX7hcZfs}xos;UM zVH;mMr_A>#N*E)~omwmHisROq9aOyrctdO}x86eiN|?M_4(D#^t$3lR$}Sz40~Ze3 zrH1w4lyQVAE^WYa-tjj-d&`|`L_^L~IP&vMIRhYUIvtKmUeQN4QXr^K*6C)I4@Of+vQX(X;E#35XB)MveS7&7guqe z;TE%ZA+`vw%^wuCtYiPhxgqul{fX4+tqV)ZTmz;-4===t%KhZ~n&pkS=q!jN%?kT`es*1f zTyw!h(m-3s5#YM4v<4s#!(QlU@@jwADlQoN{M?B}XHBZ0F?#Dd4uB7`koxey^1ipP z8&%(9u<+>yG`jxS2|R%aExK5I{ODgrUz29^QeDA+OqU-D+n-%=7@JU({Nh*KXMg6q zJHt-UG8kmz@)&P!qPT_G44K~~1B7w|RK`Q&l$RXcHEYbTb2^RQy2W9`*D22s_zwsdpX|N1 z4Y>L(+HY7~g=nY9gO;}sT2rN%q|VX;f>A%O>8GeWr?Tw-Bz-RlKK@%s-za&YNz9g|$zWiGHPv z^^9`o!*&;Vz+0}_(_3#RtaLfNN!12o$=yJ(ooq#$B3t=m#Sg8EdsQ#!aL>@}HPnPd zyQ)3EaYoqMkA>}cyBVK5^j{fvhe8f_b;^2d;=1IQmFd^F*(>u?M$fBiyIm42%zyFf z{~zPTyMn&7`zS^{ZchLHA6Clw$HE?qHAJj@xhz}Z`L?h^I3#*+YK{FU0dgU@(zVdQ z5!sl@mTr?M&mQOu=YXbwI}qe0_`kVl`}BN`&7O1a!Wt3Irwjp~=LXyH%Fs_5v7bxb z!up;A3+(w6E{6IA<5MMi{POzLJ=knww%`UT6{Uk6GidI2>m__3Wul?~xFWjSr?_z*f?x$*)&b zbj`~>l9yY{%J>%^d~U!~*stRJY?Y9ri`AL_p}`EV&V2^OV|$-WA^H#@y1T2-DmC8j zc{LvgqB}E;Xsy!*J33W|C9;icIl9VtbzERenF%nT7?N<(~kFAgBn>R}G=cVR#^N;p~_G^#% zLZhkHay=f_X75WijnWx!m)OtE|6DQ;H%kgHepAR5fD6o&G5s^*>1($ly7EJ+f??J0{^hey-s<-d( z-kzlFjO#aiJWa-~pKkjwB~6e;!PPd2Hn0gX&iQ1-vcO2WC77`H*hC=n3SD}BS}JY! z0C@Lm6@}U|{mBzRply;~LMxgC%A+`R*^Ex&UQO_;(V?fr7_*7IEOB_m%&G-n@Q`-O zdRf_NVX$I#zi~`lqr|?mz)qZpp z7-$>lBcc~E(_9bQS#`QSaU1WP;d3?Vem)Lkh>R>*SS)&Gq-ARi8F5;olQ^c~RV2{4 zC|@gLBA`L8pZji>T;w_^6Ektg%%`p`aUVe+gFETEe)rpzXcbIZWg@gZek#okZ%)Ve z@l~1KS3`^d!kq*sCcPbe*N&iQcuE4Uq*$kDszaYwMT;F_z~z=OvWRa$8{ztgxWw-< zbtWc5d75_9`rPzYs8bR)i}y+j@(bKLq@<3z$%2LfA&C_MT>Kg*d!UFWzS|YwCa>$$ zw37MjWkQ694GgTPIYXr$noR)mA+EH*n|z%j#7F>9Yq49Z8ZM$@UPY!wuC#Qan~D>P znR5e}`lfj1Yhoh+ykNfPs?SWXZs!wsTNHw6S|zPzS}XYE9l-?g?#jE(MhW^#)w}NT z-1k+mrl4uTIOmsSq!gd3qY`7fhH^sm|niaRo=}a3zqs0NM zS6Bs}ka_P2#XVHW(tkIj-7gkdQ03MeB{dTAjz)c(P7oB9uW@>l`*K7bH08#;Bjl{H zO(y}mEd$OOwilh^j3t?A6taydnoFEPmeAx1bLTA?C(z0`3iG1<_wB6D6zq<-_J%jl zVU{oDv}H-Szs<4CeMhcsJEh~pKbW(hUE3|qhAJjap@!wc?$10@i zP#_$dQZs~c-&pGhwK-<|_CNPp5`ZWs!p@z>!*1OhTM`Z$IluPMca`#nBgZEq4JQ%B z)3IS^vYG6HRx*pKR@3U`Qz0R;cHxac$4OwIlSTYU<3|vMPgZ!|lb3 zz$7wP84A8%SF*6a^SqT`8|kZcynSb&9(R38*+;?C)}gY<72G)s#}xdQc+_ zYxmSzjEtz}lC;g0Me(MstA8RdG{+=!K+Zz~?8(b<=0cpbTh~h+ksFC_>U-td4`8#F z6(PG_oiw*Lm&WDh8f%4>HgOd* zG)d+ME$QT7C39gN3pmJPHpF6nx($fq(f#>;{ zeZ%QbI+$}gKd@1B_xmfLE5(DqelXd(y=C0Wu(Pe~G*HoF2$;r$MV=#xR=C8}=C<61 ze2d-Lwd$g=$kSB#q8m`mb(VQjZ}FNg*gvw(-; z;E8&+Qrg4NFN~0o)O5$?N5`wHtziiJiOj(8B~42-k{^diy9m~y(jN2p+^?6xz_ekL z3-+&jkE=T#m_Iq=gfHlBDvWJP=O|#S0+P29BUwpX$vNBTGuHrOK%Kue+e*f}fXzd% znrMp)%uBd^d2OYNpcUPmX-dvqok>KJ&K=DXt4<&4DZ4;bgdTo3%I8Hy6UNkEYv0q8 z6%1h6%WRO1k8`N+dZ5$#9K9u~9nyXFiQ)3<9p;>S{$)d922dO5}V-n3io=uhHV;9O{U?L#$Ir9A6mCsIsxqli_WS zW6a_7a?Z&UEw!>AUBko_2mwQ7b?R&*Af3^CB*n|M0@A%C-aS95LF}@dB9av?eXl8V z5A}JqzLB1?u%Hd1X$+Ag=pL_>gXLWNP+UMh`>=$Ycll}KI`!&qnrpCR@Ua#*ywe8u zRGqkDcmKq)x=Q(z zWz`8@%Qyb*E7DQD^q^eD#9&YoqPsCis2c(1vzTXXpJ{3)M8Br(KqDM>s1P<@d~0Pz z-*wHl_{*tm%U8s7o_)_i=bAR4UE#+iOtNuMs0ki(&uf!wZ)&7*{22~==J0V~C_8WA zI+iLU{lR?o47IpYj%C3So_+}2f6vi9PtH}P{>-)r`ncu~_*Chxv#tr{b&R9aaZ=`fBLm~a$>Of3{ z35Nm?hjR5AG4ZG~I`0{0&bZm>`jo<(@`3UuuG^0PdmCjza??EW&!2_H%LhCCk0Rca z0@T*G&r-gV4AH5~$O;S=3qE`t|K?3|{H;ANASawcait=UG+@|81U*w&yW6LVN#q;d zgOFoRNoYci-tS^Owclp_73r8=0Nwb-TVFEsGltNGQoT{#!3%7ziXDP*_jOi}MCV+X zM{AAAfD_}FhD(S<&!h^Wfjfd(8&X6v5%lb;sk3}7IunNUc!IC2M4wxmMb=|QeVtA- z^$esIwOPn$|C1uvsIWV&pf*B-urc2$chi-rV%{S>NBKtP=thbSziB-&^e_15|2o_c zz1OUz6|)7y{wS>dgJu-_?2+rw(wbeh@?&8+HdfHt0B^VoF@cX_9vpt_J_iX=&*naea{{w^MB!eo5(LhPB(=7~Dc?THIWent% z;*z}hVMOX<=uR-#SjxTyv*~4&!HBjXA!AEq`R)$a!sS#lT?+X?JXN)4U!&#LSw3<* zs#dpXHSg|%ydh@Q$&Cu_3u4^`*Mh2xZ&CG!^k5UGZTNU6*0inJd?-1%=}@9$u2B5q zf6(;(ry(E9Pcd6K`jjCG;Xii9sp4O@dhYbJ#t-tkEv;3F=z=kyAjzxVgrQR>l~qVC zkH{Bw!v5&(QB*zbJ%C#H8wiejr!$>v@Z`VZ{`psis!pU1&>NCvt@%Z4153H(9~&lf z2T&3}R+ZUP@B_tm)NW!8h3E(pS-8qh((9%HE&ZX|846bgT+5{U4KsDpJ@u+Zi!ZS} zE4uCWAwCpc4Ohy8cU#CwSYutLntOL4isZ}w$obC=(_qA{K*gmqnfsU?>{vMdR62__ zZMj(OT->eckYdHSSp1*3t8c^E@5!sc5~hABf2tQNK4_7B0M93#pM87!n$#Q7e|^4a zipk=Z*?!Kw!8!SFS^g!Li}zSLI122GNc2DPGZi4h%VF_?pOWZ0Sx3LenlKhXek_5S zRlUh|#a_%k@LG)4>@EMO{kkt#e0K`T1tlrM>vQyjulp?yDXy%OPNb3(JZLa_&|x@Q zQ{Y8&@S!j438?Rt+j`nXOCsafeKi7DMPcc?%1(}tu7i`|drs0R`mMZ`YF#|qWs4i7 zkhPu#voyOX?)lHl*AxcPM@xm6V9EZ%<6StR423R-(LNV_P*Cr_4nC8ApRA-w17wg!ouxg z&S&h!*OdOl=5)2sW)ir?cy}{V>vb^DGQu7-Y|pYlg(m)|%MJouXrlct>B$kIM4zpQ zKbd@ziZZCIl%{oHi-onzYQS<%jkUb)5OI?%Y2|&i%xWd5fa%Cyzkmdct1S5%Qn0qu zm)dY{5&}S+z(ldS8(nXkSkrpk3fPKTkmcD0;eV>)H^`Tq@M`y2`ncacp{2Duosm-~ z&bYU3Fjuk77qkGnh&p5izPkLYa-qM5JpsR1m;oQTRfqnF@0QA#f$3Bp(}3=QA~dnh zX%WtsG(~}qBhGs(4r9!SdW1%V)51d>021=})%B;1hIo%Y**@U*U}&{T#s7D?>S%RH zQJ{0^FnSU>gCH3p!cyG^{p)ZQ5e%*lje5OS&aZQfY<54qZ}EaR%)>?`4EK52-rQk~ zT0Rhx$L&A6jA(!6WS^vTzG=BeUenYPbDXB8LcKR&o}m3b9)>$0bJZkSeP{T(pm(xK zf9e3Gb6(?SX2xy5B8yRHIbE$v+_ectv0`3K{a+E(*O=eSK0OF|PLSREhp0j)D~bR= z)}sh%PZlw2@2}JWU2&QZ7c{$=cDFq{XQ*_tJYtWOdQ_fZ?uBgdQqdX$s){Lu9EwnUbGrgJhOe3gabyQO>;){T=Jkzs-3c`#GN{^ z?v=V3y(=)$*wiQ)GnAj0U3UxB`o!2e8t!Qv4>>Mtta1S?xrFzP4;HOE-qmbLjen+t zp{p?svH0I&Bm0*N1qYqGBu0SEmDqyzK`zmUEI-z?z23imsp@8Nd+#UMj4T+x?|G|! zW7?-3!hZ?_6j@}xq=f+%TzwRoEHig7LT6dKUA%^pJ@(T} zrzJ_@HVpCXFFP@b(JigGr?34R`ni#kbZpwEL_k+9<8D`PJX`0r_d`4Lj%l@q-TEwb zKoYoTss={;kO^gz>WK-Q67u>q(y|pcR^!upup$|3xblcZd_TA>;U`yJa>h=5LBMQ{ z!lW`gaE|cJ^6k$p>(|RGaj5P7W)~$?KMt*FjxT z_;+EVcOk;99Esfp;RdHGl@L{C-Xppa%({VuGRO4*b|ptZ<2^TJ(ECvYyFcYNFG!yW z@nc;ZekHZUS|vdbX10hB&~?$G>j-r(UnjV-a~hoW*;-14T7Vj{=gWt~^ z;T$=xFO>dglSAwgV6_XRjlH6ypO*ZPo=W23_EmjiE+{o zT^Q3offiv@2*Gr(=6MZzGkLFIgEHuje6zLmCt?NH4Ku;&?YTach` z(jYh}jCY*g@>FmV*dR_=B0G7V&`z@&QND*Io~z~mP+>Z5JAMUA&7l#gpcCFWh6 zClp?!5|kYsqfPqFHgRH%L!l9{$sFad=!;u_Hhf<-jG;7SAQNBLJ*v%>SfTvjPg#o4 zgVxs%;I%0EF>hTsu?3vB_f@PCnKk;k_j&G!X8smXO9A-jFG1*~S||Mfxu}+F7-2eH zVD&i8G9XIs0qiuX#-UuElV-#4X|+uj$1xpctyZ8^5?mXnd~uT9)OJyLU9yZLOu?gP9X z_o8j<_~nz_O&E0OGvI=#O%nAV#LCp-xLX8NU*_;W^HpGEcKP)y3V&M#F zshroC6~`NloV*S@RZFQdVIkLXP(mZ!EW#tOzYBicN}WHRhsKz^zXWwke6wr7yACez z5U+1qqFga4`in+OqrFc@UU|)rwf~Wh%-%bVo7Q{xuIJ|bZ89WuNWmGWu$5G;aGmh5 zESx;J8?y$sr%|K{;>ZB%53LLjQZ%+&T$dOA@9?xTCrA3^3F2!tUW0HfTyl1O{hO9$ zI%6D)E?R8^-`LZju!J>Ai26=xJDP-np#>oHcnce?QpO`I{=6*Ab(@n<|9xY>vV9KZ z__n6b3zLt8?CWLvsV%We!MhB$Ev6UU$K+tvtyVGLEOK{%00^M(&>&mSvTg zsrO2nx-UKfk^b2BJS3`ry3Pa79CL8#e~VJXFl7%`%^6QI>96_;Q#%hI`I}&BX}>aR zO0mzG!+$JlOBGE2W-1S-r`iJa={SZL_Ix zpESzY`ej#;Esk0mNqB+vwua2r%N!#R`YDLfbNvvLz6(fN-C};76UYp32oCaDffn|% z?nP`-(c|^he|VL|$V&WUU8BmBk#LXQL?+5vGAX&=C3M0)8{k0MtTgVy*coFhoL)- z^u0z>&^{H$_CHUn#})8B`J5|L{dYawv)LsC|4Sgz3Ja@hSp=bTUzkUtGy73DlEgqL z<8qJcRk4Yil8#-WI$I_N{0Ya^C$6P|t1U|yxmlx7^QqvO5jJ0Otpc}PJPb|PKxF3P z{AV%T06eaA3W&W5nVsqP2v1V3jP~#vk?QExj6VFU<;9;vkD+VqpSB_IrCGuHBT<|B zsd2~eGV2z6Px&4!f^{t@+;$%p2nl=wO~1uDQj(CDlrWerN&K`8{P!AZ!J2{Vf4A81 zvqVebXQ$;Z<_`1Y$Yv*74rIJ~yh3Cg`syr{ZBoCV*KW3)^~hR#sg28mHUZzDE#c!S z&=}G;SHj2BFmb}tne8a}g7IzI6m%L+Fp$^;OapBW3%=-DIx&{oll&eMaq+K{%~He87D@ z(1L;7cMui`pPd{Z%Jzvlc#=tb1s*u?aXYT&V@_7))Ny=$qFvTfRuv~QMOXL&OgszH`i z0u76`bZNQba428^SrhW9tzHANS_`X_BD+GO5 z@h49%q2~)s#Tv?2))EC?t=6+%HJ@7g z7E8g)&fNSdwoIXJah7eOD%3g8?hd;7WweS=fxw@88Ji(_H`SqMT8mSILp&8URC*f* zPFl7e`>-CYk#PQ9k(oHG(X0LI62?BXNCOPEw{YiWi$AkyY^%)g%)FN!ZK}y${Fn2V zSnb679r0l<3vbSE6k-Vx^Q7&ICoKmyOKpM|ZF&qbq8pHCR(anqly9rz1GQ)%!vYwz z0ye7{t}ohx7L*0Y0^dlD%PAQjiRT%(@8I7-2m(;3rJnIz5+$s=_1yXYACRdwH*d0Q z=3(!*gKF@m$b;-NNeDW2Jk7IPJzRpsq&jdus>w@YV7FC##@J)dWKMk59z&KgoJ_kHxV&WxqIRB0blB)j`tcTdkDL5Bf}G=l|0Ib&}Kqc%+bM3#bezC zUxhy3zM0p<9D6I%#07pQx?3tOo9oR$9lJ3%DZi7KBGRGYW;5H|L2!%9>#6Z>n=!Tu-0DcHXB6aHHRB^_^>4O;43*aVZrF z(m2JZ4WJv_==FWb)S#9O%w779IIL^Fwr7Y*n*DB(@}XlrDR=&fqH})#6P$RZ?p~5{#KA=h&Y6;8`#R)83iR z15K_fZ7IP8a0LO?yydw~OWWLOU2DzYaj_290MB0EOa-4xjgzJ(u$KP~u<%&d;`*M> za(i|f;kRx}6SzRlE(xKffsp+WWi*+62d;uZEExW&>l+9_EbiS4P(82iOSQm)sJT&N z1uSZ$)c2x`9gGo?g4*wwMGlcP*%gv6j14>El)WGo7M2Bd$}c45UYt(w9UCw((&&HZ z3k?&OkEbLz6(SVH-3`1nMU*#viWL>{<(nG6^5Wh#q6g*n2>c5IM82x3H``F|Y~)L{ z-FOF)cvC)xAv6D^va7aPjt~CiPiajfXI7YyO(i!mE&8Y(DkAc(0P7YL*LBK{-iY=H5z`r z|0bK{_TV~-!kG1ZR30;PH@S#j+LvBv5lw9i zDy44b`J94MUZM8MaNT&HmS=_9OF+(stCdi!aA|89H9~0Bz*a!%Cd#3wM%jGm-1bD} z{P=h!EZOMDY5Z%oO2-U0NUd|w9tV+6#>7#}s4eR*Nn^=s~{)p4dVAzLfx- z3$Ohe%lAGpi6;V@n@Ib2(efnGa7G^)-coIP{lJvnq5SYcD)*fxOV zF@mB$89{Sa-bJUS%HB9w(szAz+2B}%)wnCB7k_BMNGPax;->o6ud-x_7gV7wi9D;h ziR$`#X9w9+$(A4+8?~|;dzIRGmn!Go?kVrGcthDq;JoYUl1xrh!`;MS)9p<=degP1 z4qrtg+w@!+`It_BXI*sXx~8*m!(I=UO!1n>lbbyFm+NxHnkW{`|S*4PZU^! zg3BU$yxz1cy-%$;XOP>{JtTp0=?V4ZB!(KQrS5O2l5@z;g%&FM05{Q#Ev&hk4Hp#{ z+~2LEzE`gGWSFy;%*NqW#fE9&$><)%pGGnS-?o~21_`9P72(rex2$=(KB45(4~1XR zIO+eH%RQ?6C?<#ad#n42m!3griI$K72MS*r{1iQ~Qa_3Gm6U(2FikGjqYTC%lqg0e zmwpDMLphlh-M~DdcHd$vkD?CF6zgUZ7EeZ3Ew16>S{R@=QO>l=z+K2+ksjrck348A zPk#McDI3qU9S$Fqcv*WdP3y?5R95~qa>tv&(PN_s2;H$9@2 z=gsrFK-TKcby=^PT>CwfVuw9LhHGc&uwg|LJ5_3oC>8MsNh>*uRho-gceTOx79wJ<@=guH{S5Boy-@2C5l(h8YHt|Hs-}hQ+lk`@=}E03iem z9v}n=?he6%yL)hl;0ziFuE8CG1b3IgT?cn}x54!V_IY>Cz4u)C@3TM5n(pfEHS4LV z?$uTOt16eyK%#~?RkaME;%|go!nKi$os42&=?v{Dy-A3xMAl|QNNh@baYv>sRJU}q zx=hNk#*DC2NGIV%tk6=biU9%V0C1*PrDF*IB}X{%B^S@PkaQ--%8^{9S*ndHsdg3s zCKm|Aqyc~}CadWnzcS;8X-ZCSw(*)PpuXx`=j-iU-hUX+B%QR{9nj`<(n{E%jgD+e z5(6unb&6TvubgE2SV-RYLXVSr++l1+5b3VEEP0O5I|c`*{}BE>B5oA1D7zr)P%C&t z?L5~*PNGk2i7f{3i3wlJuC58)mX31eHF04HD?DFVm!o0;)8luurOGnY-zc<8&ur8l zCt2z{aJ8Q41K~{Eeq3!$Yxns(Yq=hNR@to$(Z5%=Ig|o2CY5uRY6=zX{j#rC4+LG0 zclK@+Xk+Bil%Av(l;7tan{p2o)SRQz?@_03QLE${UCx&x=_=Xt&#NMnhH0fwq!Bm- z`ZbJpxLX?>eiaO~9qy2;xA-JnaH;Nn=#Xe{DiI139=kJRL4ySoU#Ib`&_>f_pEG^-Fhjy&)R6{qZek3!{{=mCjUJ z-sjg9{3Ov@=8_@PCRN2BwTc`qr=)IDYA%dZ)KnU3Be(jns?=u~NTtMc4uDTWJG>T> zZTN0Rp0vRnqemZRu9Q^Dea!d5MR+anY@jp$Y@=Bb7}N0)Ju&-8?wy`;Q+1i@HkWZA z^}VJAF+m9^ua~!@;8H`Lx!hc76qOYfB7yJ}R+H-I*=~DvlcxB4 z1--D_3Det{7~&?MD!~FaElVK(?+aKm|M*bq-hJrgw8c ziINy_KO3N2=V(+5|63nzl6S-JIj^@pz^ZEiEd9${x>`iE0CAwP#BZ@VKP2u5sA=F4~X8`cR* zVA;nK!#hvXk4iAbMe&74?sGbWyX9@J1A>e5gV?NYgQX^6M4@rIt<#q0J}#33(;ri^ zmjYH?Ls2JrOF@Zs^*ilbUa1it%eNJiq^oG%5xF!14;VqdT~qfvg$v8^dL8Db4>zl0 zjRV#8rsEHpckZjP!3zZ@$N$Em)IXn3iMc+Tz-SeidewisU^A#mzJ<*=!gdLtJ5xer zaA4OI(y3UVJdomEdhWeY|K2xS`mev0b40ZGU zF*uKMtg59KO2I;Yezm+G?E-`|y5EpE(mRPM5vEG}MtST&!h_&>w$9*YmH&vqC5(-0ro z-?oJLf_L!VvTu3#uo&vANChhf1H8I({J)NJJF*vEC$#8Cydh5K>VmTyI)>8UbA1YsPK$e?5mX<=EeFCPe=F_=6TY4 zdB^-2yP}?(qXO!+FVx%1>C92P2Y`$UUc$!0bWMN4!&6YY#=k2lUBe*n^B+Tokn{1k zK@5)aCBF`O7l_I^tUj^uC4I#pE}GzHW>m|KUC0yTDz1p4z}E+lCfQ4CQd6i=@Jm#@p7U&8Eu+UNqTP z3+0ilH(sd&EC}0ZgmEXv9#v~r1PMm@PQ~5zzgA%ww0Kt=jVJE%Ii^F>dR#Pk_w^b^ zFBP;u^7331$SvcYX+G>Ik6ARW&z?;wKFHtPXR%^?465ypF9L8^{+2A6eeBQ2SRdoj z(p3NSEuAkDeL_S`_5On@Y05C%Ncq_* zbgF*vH-aS{Z67>b(*Fq=vCjI8OHN(KG*j4mef(W{0=E-cDVW$HxcX9XfV|AHYYvCd zgAw@aHqM#zeA4y0m6I_cGXE8ooMxHiI{g}^w93goTebEkXQ84kZ#ZY~p*T9;Lw}vb zvC~-i3Sl-waavq|4fDnmJ`u~9mSY@WYwFy{$@KnaRmB-Bz{R}7f_-4s*u$1+2K)c) z&JId?<`h|>Q=!CfFwPUFV83takDG15SEWUnkAAFpy)zV7rN7E~!KP_Xyd3v~aJb+N zXv_0dC**xwc?jxPoG<6~NSlTOc7Jhk*117QOR6V4DF=4o#%!S;hZvnxPT&H|0=HC( zk3C})*UY=jgD&n~(NYkOny1=mYq)IphjW}Eca0J76C8UBYjO7<3|>hXRRUAHBTvp? zF(yINthqcI%yRhFGyr5pdTTR@JIWa3$*KF@+=J4kDF*eKhx@m)gSRrVO7kDuo?xCD z{Rxo&G9N52#dAJbNXW^7&rH8#TyZ!Py$#G@a|d2A9;DJy_GC<@ceY0WFH`T>Q<4sl zsp%(I^Gw-a@WLe+i_zb-(v%PJ09L|0RH@arqvsY!>c_FE&p3rYA8fzP4zp#-Y zKf!FjZN{?}=O(E+zh9mUP*%pOJTN<)y2;+O=j!F%EX{Twm2p&=?Q!p@zPsTqcKlmX z$nwhEzj}s~hiAZV{(h-lJwxwroocJQNyfa8Xp_xkw+h%;eOVjJ!&alS5t6%ymS_aI z$#_K?E41&MX(@!h)p9p~(e`sq0kHfliJtcP0dm0`QC;{FileS@*%D>nc8SLL8Dke>5_hzp))%p6y1X@_KGmjytCnWPrFp#$$vmG+c}7}Y94!V;K2z`+^8|k zHsc`j{yr-)IH)$O%Y)`GdA8Wtf}exdd<5;*h5T1Xg^BDZZgtaan#V6qq%m~-kuy3Q zL6bty7a4Z^X~$H}ZSoYM34#&!o1ZxT3A^q8zGeDP*`haJpVZD0HS`G=$gFz5gySmL zE?-#jQS`yzbu=F;$#b&rGXGv(%sIw2vxFf{KfQ6DaVV@oR6~DfU>R5 z^Rop?cx+0q^FHwmQ(TGJpb> zjXR|#u4n1}5-mFY8@O?+^aKoW2QG-Op_=lwt7{6isG7{bUAP={Nz&YBN<+go8=~B0 zzv4RycfEpc%0!3cfQUS_@7|0z`j3ZUI#(}=QdtQ`G2TPt{Y`4?35L|(Lx@*o~rt`+Ow{%Uv?WeY^=NV z+lyAtJ#YJ&x&JK}1yq)Y=dA$6u4VA@KSlcbLwe5-1fDsyTZGXUQ<&rLe4OltCmq_O z6fX4LMea#@tK&0$p0aB*GJzv3PpBK1{m)kRUCit~q;* z!@|1;eh%&QrEAn1hKb318g!4E=vx#amSc0^6AuscZieI=+Q_ugXz(9Pcxvn|x0t+3L5x9W00Y;!)q`{&ZL(Oveuou*he6Z7PyU z4LBa;mP+L~(3OPm8Q~E!dQ`ZzlkI^q*QAPE|Ge}I1bxcz(nhi;E^T+;89hOm?` zYPcgW6;1Xvf zWT4|=y7V>{O`RLOkqg4k+H2@{TP8TXnV{ zFR;^r-!5KygV9mxxSLm8@O{DkbN>a#{4a`ZQbb6b+^=$DQJlJPgcUAZBfxO0uvWnz zD}t-1(hL=jP5b6>62bUYEWa zlcrCd;Nqm9w-?fy-S=OqZIPzGbT-gGA%l`uhjw=&%+NTUT_<@y#vYqB2KhnCw$ls*{UiBge=i9kq4v}RKn$a{ z78(cfcVFz+c^4Z)Yn5)a6iF56kZurfT|oluARx}aKhm z9bU5Sp~pD5Ou@v52XV7YU?X2<(8ac8pPm;*K1u#z;S9Zm+W>uK^$%g7UVHvzEn$*< zYD(d9Lb!BP@nnt)uc3DKW!(<{S&(}CL)u5f(-7r{K!Y{`yoZW>^@ByrXDe#I`k?!vhG7v5$FY^uqD{)y4TK0X z+VI`%nVUNKYU#A_01vVW;AWUxwr-o4fWy@;DGwLcSw$P{wpiOY*0Ht4<5e~$1dF&F zj$U*W2gjn}v-k?d?GvVUe`(=&Zs zNfCYYqB2r;*iB;`ubjE;CYZ*bJ!@=>#!f*#e?3LRKM}S2n*P8=f<*yhzXQ|#!`ylN z>}6a<=NnsBX--$557+-p*Gywq3J>vIl4R#Rd&s_w5+xm!#NqEu3$W9+xXy5PtT zcI%+8iv95!xE!r4T~0V>fR$Rf4j!AM)-0C!dY9yeu{)|L9LPvRdYIPzfgmLJd3C&# zv^paY52Y@zz2PP7Vu>T%oy+Ue=Xye}nN9@%zal0Rc%QlSvC0s>^Yo!qs~ z*YZouYiPM^wGeV&sa)a}@$gp{sIRENOl}G101_u+HZcD8}LtBF4ckW$QAW502lRe11eb>lOvv-pcKfl|w zZ3e%gb~tC#P|se1N8>ba`RH%tsUFV60TWB`imiqXo7T8jTpVcxOe ztl=i)Im7_zikkVK&a)Fd{{U(Nzr$@k?NbZYWT}*H1?EogmA|gX$prahYAPCC^PPx% zDE2Al^SXd&=;LD73t<1a#-`I-`lX@GOEHvt7rBaDb$xE0QC-*Vumtg{Mt-?D+3QBW zpoV2tY)_f);`W^HE#u(wHkoxNyg(6;q0yc#QiGVg^dN2EF1B0>p>03^ol_o>+lt}| z?#P7Tr2odOZIc)iSMyayQ(ddKZI8M7!(s-&a$~n{Ux79E&K@bvFiEX)M?BuoUt=hl*M*cxp5-v|sD zmdf}K?s?9K>7T<%z43wo^Fq+_CjJ=w&w9^qzc5a3y8~-~kWC0ai?Pg-KkK>6MCw%8 zN10OhE;unIm_w!h7&Z;1EnB^tIm3l>_O7Y{e!S9lFJ-@J=8H>HkkSbkj5K=jW;dHh z2ana0M!pxg81dvllGR!6(UHE)zEhvF16zzIZYaOYOW?+tc(^lGVDk9>IhO1+p0N8% z;OO|ME3{|!c$NIp`<++kAMrZv(L&3;)m~fYDWSIq2Ku92?AhP}EOLYdzrVVjPlWC< zyFT%Zj3RCZBL1|;^RxS3fzbcbX#AR=)G7hw=;B1`f>YcSzg$#$veCW zAsVft%(M${!^GAwv)VmiNEh$4^7>N!R$`iV{bt&}+<9F77@lp=Hp-#DU4Yr1Nw6gqDB;L<>#Y*Nu^|_3h8SKJZB7kSiDYX8 zwcx5dnmNp7^{J;Z96{ywa{A}9LGf`k&oIol{Df#12%KO`lRQc&Ki@KkU|zJ~Bly|@ zRFg`nC|y437ip(k&~ER{dMjWwQQM_Ih^y7*ln=qh2d!ia;-ezTWDxii!N)l4I+Dw2 zqB_|y_14SB&=6mC*H{4>Qqa-&WsaBm?4AgPCJ(9v zQ!R(K6}=vwLIH}Xgs+}WAGnWLZwf_MlYg)NbUBf7axPtoX_cNW%*NP>f#+1F_+zGV zQnC4lwBe`ib&MgCu!$IG8;Y6iGG)ajv<`t==n7pp_VmRs#we}s2uSt&l$EJwj43dj zQ%WDD*y(%OmxG-W?`OSSmohGw;jB4yyK#q=3QIb+8Zb2J-hi!&(^ViqrBo)Hhsh7qPz z*Tp(tGcDyN8SR^x(NKVDT`+E~Jgtm+v=MV7QMH`NZp58L&#Qg6;F z-KFWFUL0EAI~e`#4x8AZo$M29Mk;COX}D(gP7D5s;f(?P0piN^wu7+Ud`;i}$gfp* zeqJI&9@f~+l!3pXmpynvA zG5f4;r@7&Z7C!jK)nKrUdQSoPaB%9%`r6V4F5%bJJh5MOihsXvwKw?@=Bt^Q*wdh2 z%Z2`|^^vFgCQg(qlED!vRLE9BK!ZD)*`uo7#C?tkRxb29(Nr^&%7ULpSYU?>!L$aL zR?OTC_0a_zCvf@~E_k64+8DD1jcnGETRs=-~X6?WXH_mu@V@zRwc{Up>mL4;Q66%#YMP{7zudd z&ElmWd~1wy(2y!>h|M#d6f=&|%$R<86^Z+)AVY$a+3iy*iC$0n>>zUZwa8F`t&)&u zwbYV-WAe42nN#2F1A`l5U__`K&cX?xeC`xMp-ugj)o?iNt=$UFLfJWqd7?>QTu~RJ zpq@0qHh*C9%A$~G&_N_^zt_kX%=;=Is{1f+{nNUer!y1dro||Vw+TtMmQt~Lu(Fo> zV3U{1gl3;Jrd8feb_cM~WgbR!6*(0cdmE&4>;YMGDpEwR+SIL*)?VpX;_^-F4EtLC zD{~;mSsPJh4{#@}k9GP-122+1s8Wvj{u#r}Hb~Ww^gE53MT1G3%%wSs%S_l&mgf6R zDNl>M^JeJxX_-)ONSkG}-%?iy?MPDYE0}<8hFxZi;JQP8d{q?_86-;z+Sj|`9AvK| z`mAFd&WF6n>7%f-GWia__G3Ia2`x_sgZI1Gm_Vb?Sg|!b6)3Wp)^n=^PN}$pQV~{G-M+!OpI+pJJdj4QW(ah`|kIL{A;oAe94PAGtZ zmt_m)rnk!&@(pw9@0889gzu{?!ru#7xN1k=cx_T7dl5ZMMco`-Y5N;t^+mbOCj{zY zsrJPf(5(^aG3jVW~tFjRHnz} zrKz_RNeWH*UPQ*I{L-N5o4NV2t{~12WcIQjrA9c;+5`_!mjY(%L(KVs_9s^xn4=Nw2QW(6=d% z;u~d-Dh86fgwgjrUgxKL$|C&1>k7q1`z|avWZU-xQ+leM6f{TMJmmZ^^;e-(V*7$u z_2W33SjLMMC%2jn(Q~P>Oz5D;eA87SxT-QdE@p?fy1hICN`T!v`CSp6U}QMCL02SVCM$6#(huIx0k~-f-cIedzQo)DgCc^t z@)~5Ph!h@&7PI&R6Wkuy{w#n+vQt@O=TE&ij)&mug{rHm%Q%{jEvGwhZWUSh&HGNh zuzQWI@~)0W%|NYLJ=}of)Bs0TujI7salowTWv^6;WgV&WKx#p8|KzQxr$dKw3Y8kT z_^=q5a5ayAJ4C^?{5D}4^Za$_h6M@2fB>p8Y)v`#DR|S#@BnpY)I&M6`+N*~jQ2JD zw%FydG$M1~PGBM{_1P<5v~p85hb*}i&0I)fjmVko(3@gvdc=p2A_ z=cud9ftnu}G~_%CUv><8i;Z}L(+OTFHnnFlJP&TADM4kvxJ{Z$*k{%lTD4e-C6C8H zcRee=;N06kVVV4av4EcY-e&|ek##z5y!*9PM^g1q!DGW*4hCe++$%F1)Ot>KFV-qv zb9UXs0~S@$;(E1Z^1ur3{2#IXjUz-3Mh9*L!gI;#)iKZ)1S6kSdhFi`#aw!*SQ+i` zK+g+LVbWYHX{h>=%$=0q;Y4Qqi~Eg%{|VLd|607FoB%~Yy1#lhlH#m) zgpmHZ!+mz2{LW_w6b+R@B&MlUQuxz*GKmEfb=aTM{sT%xm|X;{mU`f~MHu5`VWMQl z2jBnJzU1(dDES6|rQEgo1qq(4ZkX3y@ENS05@}U|A0dydP ze!~}=!Q(SGlKnam`$Qqeia!lUQUgfI<#4B*8W0*m764{vC^{?!?OwY-WsETDk$&W& z)gO^DVnisc&7!ZeqzbR45-wO9dz|8#k^h3({i?e5*|>zCX2d}H`vfvr3D>)Y+_j3V zheRbUN~>saB*s2QRcv}-p*E~MA73&#N*21oCM6OjBGu`Q56B-r?oIRP1xKc>q3K_- zEwwrzJaUe=-SG-dz2MmAjS>3ZqRQk{$wzB_x7L@mcqo^jeDIAB2fOfh%(9lEl_w4* z4%jVls@-!=@EY9Tq*r? zd{0t2vC~5O#qnIl)lAN&OU=S*_KMLUqHPJ4YMi> z`@%2S#jyW9C+GF{2^F4|EiSC{Rm#5JIMuiJ2lcCmBsqO00f2v_ZjZjAt5Uz6k#)Zh%a&~vyZX4EA5|>(mkYv|PtOCbD&DI4r?IcX z?2JPSn$IcJE70hZx~zt0(vh~tasg|*AHMqehqa=2Z^#m$w=>b+po@r{0$UZMxS(KY zzx^P8UHqvHT86%UaK0zhgT=a)V)}}wXSdwwd}6WR*#qxO2|1+0{kdv6zV)m~cy%;7 zKwb2|eEAawGtXMQLS>zz32PmSb#hNe=s!?5UlObKlkSy6T^?Z5{q;3Tuw6sZX6qtb zw^fKv5{|!nyJk~r_5BQ%M*93g(quf}kZ(X;L(o`# zZ{PTTAuP55rci*61O1eJjZt+~3A4HI*LKu@sE$8u+7@NOZ1)>tQ*)SEcm`nRoA5al z?@2Kl$*Gt1oZrf zY}hE$F9_GQVr5p28MCpSV_;% z;8&4O!7PDJ;R>;BT^v5XlXq7UPjMb7UJovQrJQtXkcg}3bWS4OPA?iFsMP<1OXAkI z5hKkzleEvxW~67pZYxzU64scgo%Ve><5{VhSDEoNOSNj^y>tLybV+-pG;rQD7Jp<8 zg53{YA9iO>-IsE(pLP&x*z2wD4ONkBr;UcdCX043bcMK})9uKA;ADZ=u!2&P-qiW2 z&U@T3M2SBvQeAggV!79QGX8Q~sTdcfmrN#8J;d_l9j0~d*G%5o~v(@5c} zdFn%!jXY!80`ISJ*NO-dO+YLtu4}aWxlC0Fn^6ePsd6|bS7Az2DvTzB; zwNB_)1^SO5Qnr}0R_+2Z#2l)F98gMG=W8#s@)vXs?v8RBY558P^isU>vs-7+nh<=3 zQS|knFUz9J(+cDl%gZD39_>{-jB??TRs7svMan@tz}&$9mttR}QC~ zry)?^)(m~4nYdB;KsxA4cw@*jl_kRT={v`5a~a=7&!OsVIYh~crv=M*!yuw~&O|A* zpkF_-EI54wsJ`sK*mujHXRNO?xj5&dq~or=J9(V|?2Ypwq5sAbN{84-5E@Lg#RR*m zN3hMDzdd+fg|T!;Y1rAYmw`(?J1uffEHa8Ty5Ld}Yj%<`f|}s^W3g{qk26%QvF0)* zMP@g&wPq_uEu1g%CU|@6>P>rAhM_r!f&V~JLg_R$pSgx~$5hSQjZj!f@tVtOQ@_io zXfGQz8BFZ^y3j*0ZUr7-6|ZTG-@uKDuqxmOOLC8hJ2Wn@&-B-QT+D>T zBwf6H1?D5%Y(Z?N?gsC^D2Hm(p!=yrjGLs(o{nVge(!*Rk7)`Y5W;kO41rk>Y8>f(Jy zHWpM8#LG!i=wkt0_7Im6(#`3XYqV4EUt2~3j!7(=+~^pL9-je{H>dYU9|)L%xxk8b zT<)x$)0^;{O+>wV(pt-YCmY{4BOUnwOGrlZJOjyT#m-y8h z?1N~x62zs$*Wpj;9zDr%za{t9J(s!wSZrTNfzM_eUMSug8Y5G?wZ%&yPsXI^UTpJGW(BIsQitn`uSJ;Bws8|I|0?)7~jE4E=(AzepV z6BuJeMo3FhAzT?laZOPO1E47Tk7}>b{nPFT0(1>c>+##wkwb~^bs!X-xwt%vbrx*4 zR?C_ge|nru#pNKkl>8(;{G8YI1DLv(8~$XG_$76qF4$bxP5Pnp-$2Cv6Df}?%>S%m zG295tVBS%abA8hy)3yG>IxlM{?tzIW7vv{ENVxg+?WhbbVQuw5lBGQdXtFeUuJBRIG5_{{pYEQTmGaq4t#4QWsVbU1v0wwPsvb1{5L*&RtM)LXI!0E-Gr|t zhG-V%?`%$kL;FGpg&Rhrg+kQqNaBhCK@qN6k8s{18yj7f8p|TX1W^V&OV;*Hn5w&qv%hf;dg}xedx2qS zDa54_mri*+iVhfkv{Bm40HhdNq7JUFk~x!;!J%8UB)3|0WM!m3nj8`n8Z~Hh-S;^|x3wo2P#RpHoqt<|kRDvL> z@u?(FInJY`^{ZNsp_*ctew|vylz0>|Cp1~Q0D-KXUvbA9HndfDHM8jVc7Pzoju*bw zWq0nAF9j57g)%Ns;l?*cSnymM?v`)6LKagSZvnUWv~_~ zlqU8M7=l<3@lL8udA>}YAOpRskDx#{(#K~VXW~vTK}UHK^?~TuK(i~za=g=A^4_|j zo9J%vRU4AI%OX&#J@Me)1l20Y;sOx>T$Vi`Z6a|X+?B&3AZ5;qa)H4RyEcKF#n&^$ zm-HYaI@D!A@r(1s14}CbQ_6U0%SRv)jZfNZ&mvV6ox97Wgh#>+7b){V2x|I#SP!mv zV0c~>kZ5~v! z4~W+`U!Vdl{YXV4=9YzCY#%t4)PP$=O4v^1Lv~$-lRORa@X4PUxcXqOzu;ZpgL_w} zHG^=a6+dxyyOC~FSW3EJ^RSygIQ7P=wSAVW0?_9HRMayMsGfSPZKRe*9e3Wrj9aWc ztyV8A36x*|8OqiKG~+M>>$O#Z;lmJxdb9AA_F{s6rI`hT_GG zH1u}crk~og*(vcMkFR|_Iez%k3;07rTE=q5ddB)7IW%d(uzSmQ@)g3f`Xh*P(3if~ zEgX?l*P%_s(cPc54#sIC_*Ad`57VQpWcz>IAe*gW(@%uPJK4}OkkCKY@dpw!9|ZC>q=0|N(hd8*pYpp8An zR4zoM6+dXt%uy-GxTjM&{fON$D~eDz@{prQ^s(tU)Vb}UlgL-mC%*BScWt3B9Ei}{ zUoT8AH`@r_Q=`Q&cNFYoy(Y>QX(-&>D~o3Ai_x5Ug|bW9_Nl(kbAg!oK_(I_RYB18 zqXaXLft$w4Dw+pxu(|lEJi4*c%4j7P2jR;}Y{HxAGJ*|;FzRKJ_hhq%MKV6ZE zyNA6pB*b0Uj_Ungq^CQIp+%enc$~Rzln3oIbJFbIUnGV)Ez(e=wJ6wy=^d}9Nbrs6 z>noF2LB{9`sVSx9zBx5qt%pgrkQFjzqa~q*+9TyT0|W=jGQezBjF_qZq729tHn#oo z5CN!?ZT#e>Sa3xlXocs*u>WaSu@upk@Kn8bvo;v@^aG@F*5w@?bS}Qaz_T7ZYKA(VZx-$MZJdXtcL^)0YIorM z=^?dJ^r)E~XP-mcA#UcTw-X)DSO(nGxyp~y;YtMt8 z!&&<;lHn1eQ`y+Nc7oyX8#ychMtw1}*Wi0pjn!{RWiF))??U)7z_tr z8{CM-w4?p8hFmP;498wu-xPJb3czR3F=g1BRBI}B$^@RlVTO5LL*);5=co(AkuJN0 za7@Xp`}Zzwb4@1FN>*+!MTZkjsBpqf>q{3-syK=Hocpqz5wqDEEYwMvW=L)IzP={| zNDm0_4(zki&YVQJOE(ONhx2H<@-@9Y!JGd1CX}}=Eti@&_Ecp%X{mXHJ)4% z>Qsfy80n94ePkH9>yd$DC!#{8SDD2B)cn5tK$v^PM!my+W@>orz~uv&}=?emLSHHFN3qzCtZMQPb^zLN77i|GCQk&`p~ zjm6yT)jO@S$iXmWSU^eLAkX(PmcHCnus+MGoNZkq*ERhD77j^Ht&rQU`xfp|s7LKw z=;U-@lWvPUg*-lPNTe@*+u}5>oA?aOxkUtwn_2a4lGU21d5>S;9WS$kGNt;BuVs}( z?)D$G{(ju_@?}YoUOhrpdrS*^aEY#1uvSY zYI1o@V?#0gGE~m3aX10n5Da3NTZyL^9Hf@42z`iG(4?jW>nCV@|1Wz|gfm;QOVi(8 z+oHM!Qnlv1<+w!b(a;{YTgv;f*PnXxjo0EE=o9^6e{pB3GgcV0yXHjk-~*m9@?v8c z71YtOC<#}+act@2@auWVdJr~; z^wc0FMMIeevWof`w%IlNwr9r>ubC=yW)Ek4v%+rkR{6x!%H|@VEK!jQ$Jdlhewa;r zjMfq;8wlACIN)ndawY5`#&u6U^EvBjtecS!3X23W*#;m>cZLCRjmmHglIo0@br(a05U+ST&$Ho0-wKQiU zeP4x!$yDv#h8V~kQzL$-q)pkDBTD-$01#YIkorL-Jhe<$z|8>TU3tY&ags$FW=ve% zb#Wi;Pgm)m6TXojTM9AQ$Et0GnK~?BSwZk2?@^&^(W|HDs8~Iq9v@&S2G5tNA1=EF zV_$fRrA>)W6J+SGFH~C_G%)EFtjl>#O)l$rHC1pF6HU2|4>K zELq&n(iu!vY6~KpmmZM#_9n=$-0>X4_rykhFGxZsKJoKg*|tswaZ*i))vE=3ZfhRt14YR_sry%$Y2MV2 zO8pPG(b}*8EI;0lp@Nf4EjkjhXjRkhePpidvzgcCU#*$gxY-v+k00#$<&^dEI&{$M zNBIO0N-K2=I{0xDP~$CZIgH7Ps(1+UnHy^Mg`XQksA5V~8ipl|6PlbiypjUefOYh0 zFACQyN7oa1?=k!1zs0Vf%UDOQRAtwQTF)xXW!6}bTguH%V6akHUOZpWA1}pE7tqtC zD=-ng+H>VY$G*tZsQjl7|CP(#U)coLsOM28$(ce5x_fERBEb~IkW3#~^+qZf19}7* z?*i{+xKH8$4BY9?BjTTW!Nj&yXOTy2K2tM@`_S-214$v8wNVLb3av ziqabx5%Hd1HX+6$m zs?b?MHj;w_&Tez=jNbMyIo{UP{%nOXKe7hd$f4Hy6t110h#t#!miom{t{OzF2xykq zE!*KSBdr*@S4X)A5MqS^>71Z7h4tBaDs;Ky$D+eV5+j6 zqL!~*%nLiQJNy!kWYKs|obMMOf3Dv(XV?uRWfeT!Q-Zvy6HLv6CBW9jj)EnoC1u+?B(fS5Qim4BsuWoT_wc3M;GAKrPR zbeb|1br|s8GV77uhEMFSTZ5I+`_Sy)%(Fyy>N=fyLyWmh^F?C7P@jRm|OHeg1SVB-tJ#lh{^n0rs^$1ICRl&3*cL_rR zo7~L22rhh~Dcru4js-XUMp@pwb-o|N?U0BsL1-YaOM%nqas0s@6g{C>zlnnJb_Z=B zm7T1C=S91hg-7F9;!`^tn7=2z5=Ur%qvqDGV=)r62MTLRPt)x}LqznvjPVF8O` z#)v5yjW1?fM3uToeuV@Tk#uTY6lSEX$06>}P?0Bv&4Z2u_c1UBHz^2$JSI1Sx>np1 zv2qhRXb2oG-(44N&Z^3yQ|xOTKWa4ZmCe@_yY;}hyb|gF=}}lXbSDd{*8QNT8S*6M zJmQc4OX~Z_Nn!CcMKT`g=Q{JXcTb@xpn@;zZ~x36QK83LZvxGS*PI=jVzWiEmkT#0 zR^KNaIX7|cWpc~c@Sz4zjc@cb_pg_3IXs4wzA~n0P$Wu)-N7(#ryqoF-v&W;hN?k) z?NoEe>1vxhXwt`7>M+C1(*Ud=YkW%HNxYtqNjU&cqB+!lCugt5`!Om5q3Wki64n#j|A^W0{vr8;>V$y;kdo~+>aIC zHD4RVr=jm2d!^33vgteRrky_p+un3gO`xMYowGn8zzBZX{`N| zYiV$sqYax6wby)Mr}=Zv_3@s7$6Lv-!44S|&UV}xtdt`#e#YYIo1Qgv$oROYkLIGm zYoIwEt98{{aswQtyou2+ofx>?G{0Z9w5Hetvj$`ERF5xz1jA}ER^+KESsDUpS-!tF z^HoyptBO@sGB6;MEwvP!Q0#M1n*P}zsP*&2daj#GfqHh{Rg)$p^xE@)Rj$uVm}Z6S zIu9qSO0%tyx1LP-oZ3Uzd{H(~SsenWXrJ0^>;sd2e#Qs^+E<-JgGz0dzO;PA?0oU; z{OaVQ1?xKJ$?Y9(zkI~6)8VZq!Y}{vm5oo4`5hvIbMYJU;vVwtsv5zolsK8Dd62Pwl&21K22 zlNe=LD(mtPQh$E?l$sHa&QMNZ?@w8@f*lAMmBGWplEPcU-GcIag%lX+d$546E-HaB zYu0B{hIM$bH~0#vjbRqQ2CQ>Q?)riUi7Z9GJ|u-|a=yZciA!>%eHavTcJDkQFDHgF z0Z&9rt{Lw2wd@^e82}p={6b&gJ>LB5I$?It(MZsiXk3v}sn=wx9A7t?_AsfkYgVy# z!3a6c$!q3(`c7gZ+EdY1C&i-=mA@uM$YGE((`ZjgZUaI<-yy^HTg+@ck zBR-kFvg^}FP}M>WqL}x1fgD$?zq8%2d$q&T;Bi?Vy?uvubJ1w^V$NW}StEr=8L$g^ znZ+fw80EK=cxHWV=myc)bE0=D=@3RaSKqJx$diumVYoJ8(hFLR9tqy3UYIbatcs_& z)oz@IcnN|GEU!X{F-0`id*Aj6Wm$!uPP(|lR^PI71MYU(`jnf1^{yOV7uxc52-s6m zo;7HVZ)gmWN?U09ptL0PacrcGh#lri0(3y%G=qR&>Gk}R$EcVm@g>s+($;+7KJRVQ za2j+lPQUm@Bd}MYBbf+|X!qfVd+eC-ml{_!rjg@-Jp%>%@F$OlHhxt z_MYkY>7#-qkPr>AAEWPbIC9(3;7RS;JaX69FKrQIh#vLyTva**{~uRx9TwM;G!BR0 z4k7qpAwh!M49*QC5Zv7v+}$O?eQ*u#&fxAaxVyW%JHLB(_uGA+@4u?9u5;??)2F(t zx~lr?nUnVX2SOB%pUBI_CD68A32S^!r4CA%sX4eRGY;cYAx(m+kGA0*_`a7fA5 z;b3%Y#C(iWSzwSXd_-I%B}h`KP@Q`@gJ+tnp`? zisQbH=I&z|{DXA#Di|B!@u^u6iK6*oEm_V0j|k{|VWq#1RWMhBO zk(B~5a)|nN5Z4I4jZ0vz8@5!>wX8gT@Pc!GI0>k%b zv~o?O-Oj6!G?F{TegUI{Eh>@h_SG#8ds+3zxDhZFHA}=iP|{{|r;PpCIP|^{<89hl zUzp?f_)ZPgthVp9iI29rdw03(`;v0bvlI=$Yzlckqio(aA1ZYA5j@zHhcY&T)(2Ol z@3NPNTTMEWga286aR^IX+tsk!F1v-ng3x-7qEDI{vpZ!di=?}<_Vw562ZuAV=D(q& zDn`Pry96?#6S&U!ms0p8bzVPlURlYtN#yRIy5hw#3hsfi@JkHK9BJ71UI7~_`Vl1^ zva4jDk=q6*Nx47hw`@+fZy0wbbmcQjsJ=jld?(OU_ae;5S(@rsSi@BtG;~C+MC0;g zKSk5Kgv^r!{!Kpf!gR(ToxJHF;{R-yP=2RBnAL2ps_u^GoTIM0-pe|e#r;`+Nm&DH zG5Ig`M+8wNm11ElzAd-|9ZiTA{6YWRtk2k;hUQj|`%JM z$7u%9qI5LL)AZ=ufuT3u5DKYa5>`_)8qov-j0QQ(S(?JwftR(^v zaj+BQG%`~@sPFc~#VgV}Vr9xkyQTSzFKq4A9WvIxa+W>7+Z^&KR{bKtCTLfvCd`<< zO1>leXNdG#B4?Ve8pedOkHQynZ571&=RI#-wcxb#!2yQL$Y+VwD4VQP(o4LSC(OeZ zPS|SqTK#!qjHK)9yB*|94nX5)uMLx*ROuPtbv$&>`0i_Nqv&t`Nk2psnI%FX{BI2= zZ3Z>_X{2m{M1h?s*>QSgRfT|)g`$CU-*0sTgX{17S{$sYF5#Q)sttcucHOu+X3hy9fVV|gC)kojpN{loMuGsg18VJpwkra8f~s({=wO~oBc)ss#YLxbQ`O<7`C&1tIB^JA>mp&7KqoG)aD%oG zc*}g8_qFPaGRt7f@XUcUA!j-=3GI;~nX!eRTKvs(aA07t+(~?ud#rM+i{xD72zI2e z4*il`g-v8|jLsSWw|JEv$-@u@MY$r*DqppyNnfwfJ`&jf9VlINJO!GSv~Y_Fm? zn?B(%OX(F$Bjz&>#<0qR5}%M2ZOG`PdBO`*LSrEtt_FOIMTAZPc>X#&c z5osuj7b3&L?Zh|CQM|=E0EIvQxjTyz=xNo-NN>by64+uKYl6*x{35KD>4mX#U6!gA z0nMUg(x?tAtx?pxvFsEXO<2-+n9@J(#xX|JO$19xTa zy+WXSyNVE~rM6LyW7Jdrn*R(DY1kyM#iWc?%0gEiyJUGl&|??Y@Pz6{or`C$W+YUq z_~aE~E(-#Etmo|B!_E?v4Ak-+yu-}WBZ|b@c}c6!F-yEIwbs}QuQh|Tf~&7c`?Z4G7q^AOv#hX0 z-bt0>eB$3TT8?7o!8P*Y9lG%x2;q+Z6Z{KNe|vs7PQy=>O|zIhe4cFNt)*#`1P7!WGUk+@s~C&-hJXbqfq0jo9Y^TG>-a zLLzuT*<vU>YIV z5zX_?#_W&Z;IiS`qTxuJ)r^C8d%@9Nkn{6DDinTG9VaB`zekgE<_Sywzt49k6)A)Z z$nCqh%~Gkq*$bDvgZJldY&aNmTs)}Z5FZt|QGcZK@)wkn)kghU83jlBCyBxfzCTRu z#j^x)K=PL*BJhtdA{-GtjjP_H#7`RB;9s49u}$lEQ8Irl=M0Wq0+HF8I~&pRTxZfT z0D|TG16U&|}0*--BzrQG{F;0%7?-v7l0a=UUz|^CxU-Wr58r9a?Gpy?l zizT>KLu?q7?Au!?E zy5{d^fk-8118*`H=cD5yfwRE$#lCf(h5FWN4%)6~j;`@TohZe@G_Y@oLU(w7u^|!M zRfwE@?=El)eaWE+k0;$Cg#XTWypEgNvi;t&9?$s!+l&*WZXLLA4&Sz62VZ{ZX`fV@AYklFXuoSVdJn>Lrw|u!3XcD@Y(c|1Hmg*U1^VGx98fO#w zDW+Kw$KyAgPOk)W^}hR+?mGpc}YDJg}^Ib{}C5QD+b5fS_q2FphFn z$Dj$Q$az*Bp*DwaOjf|0Yd$wwK~im_u4p`C++x?v zw#>Uv6%TYIBjW|jRqwp#RxBp2I;Uoe;Wpd*=$PdDRLBf@LBDmDij@nRKBab0l{Z1o zxqnJB9c@kW_vM6f-RTjnQptu$9!e8^AP(zSY!cU ze)z^7FEr;b>0Kf6mhd5Q#uXJ_^MgfvUCX?6byDXSpGro}{nrHt4htGkwZl4%H4W&3 z*p>q`r5|(d@@kL9a=Q&xw#o*ui)IZ7a!h8Nr@{R&PM?Sus?N5dlptN0r<>q}LV?kb z#+;CY4>M0M1`F&8%0YHBm!WD|kdn-X$lS6pE3$@83zztIU%`YYlo{^N%BRQI+*n`L zTq6BwyFA|E#XSlEbwfv^# z_BgIT2QKq#-X4A(vHn^LFL$wGJm}5vtIwk@?tsZHsXZLf47#>C79YM9*?#HIL8$1!rR1c>o7UK@ZUKL7Go69D@xk%k{k7Q1m$J5+$)=3PEpM3AA6*N z68N!zXWlsv?9KIot(E^_C8OfKRHyl)Y!^`Wp+Wum&>^3{5VBJqkUh->;A_AWHFfOx%MH)1d=>%wB# z{y0#1)nn-AJC<^|IrZBV**6|P{pdgac^L7sp}9al7ZMe6W~(_IX56TTV)m-PZHdS1 zrUpv+a+aRchZ~<_V-A2e)jwd{eHTgoEwB|#yFtSeY03?9`Zq{!@DE5;uucPtH01={ zYz6-xkhft1M@$MjdCZ-ig6*&stU74-vv_&ozz(2PdFr(loUiG!Lj+lDvLecwx$nRJ z;K~`ODTAwMrW8h9oL9uB%7Zdm8}A=?D?~BRDq4n^I^%Q>&&QVjb6?;?nbALABQq6% zn}fp^D?=LgV@%y>*NF5eWYK(bI;{j?1-MYN`>qX~omq#)yv@~kOM#>=z}lGJj65E- z|3(DX8oSjYRf*<<8(!KGA%4q|KvTUOZk((7c#lT-k z>I`+j9>GAbvM-0OR-E%&zh1qGl0;TjLC%??{g=FE*K4ZIH=Ot9zra3P>3r-N1z&Jy z!)(4Zvj%+G%`k|_D{cJgQAOP!As6oX+2P2n+Dg}1&NX#vH=y=)gHm{DWTQpzqzY1` z0bug9jyLs(YNxt;}-!*XMzyBH(@7L{2|W)NG;rtuh~2-yUcp-I^5lHffq@L z8ym3zUA-K~!+Kya=e5vE#E*IntsD<>29faRqnOaoL_+Gj;ZBh|7Tq` z820A7h39v%C4Y(sa6_qig7ZrZ2Nui+lg|!9DUr#qUVhtGPFN51TrKMj%r4h>uPiay zfcV{ApA#G4hR11jJBJ*N+-c4}8Wm2WzNT-rT71f=;((NcSPb|x@@xXd)`F*0Ld7LX zr%l7$$Zs3sTG0kDxCSN4bB(cfBjq_LOs+L7EJTzV7FRTN6oYAJqqp4|$8Ib%pQPzV zMG3V0P1=vzlDjQg7J;v-6AvesXWGp_mCeFy3KtGTe1Lw5rB$lQb;O z9(t+a+V%Tz);En@L5?myjA%=jajsl!Uh1>?iFk_yGg!6XEi(oVjBMgGsAI*Z?!eh{ zq+&;>st3u|HE+?7Y`27X54H^W=wCVYT2J-aF!HE8-lw}?>#o=^8VhTL6Ls@51LXh+$bDRZ<2uTYdrg3u?%dT;qj3#^27l>=#l{cM8TpGwQYo+IdVdW zD)skV*_4*-QY4FZ6o~TAqjjqCIIGL*7wh~NB6GM?Rm-Kws6o#bGu|y;tH=CEUFKJU zrGb@HNZBvEQ}P%+?~>poF?w|DVj;hYa6rmzI3B&y-YhPEEi0YuoZ^83h=Mz970KYC zvdbS0D3Q9QoiM&9E^~(eF4W6QZ0^Y;3O>2tx54P?rwiIGr_Cc-$qaO{!GphuZGHMD zRTLhkk}5*--$0uGzYXG?0_14Li2`d76H(S3g)JSd)l8Wgv!|J*7eXe*_PejA;|;^3 z+4QJs;Uw3H!s2UUoP|(7fA9A~{1xjX!j6o_VS7HP2gm$fulpna`3Bk70#rLUG`1=lmpGN3I z_eqAN?}j>2>LtEKiGpLxBUlNoHw2!2EB-bB^cGzjeq+-;gv5}>;ogV8)n`wW<$HDk zQUzDZW>#fa136Xr+A*A3*Le1>1gni#_i`2jC5LNAkevA_-$ehSUf1m#Efc)VAkyDZ>(r{;~B-Xk(QPn76bn{@*ojME4UGXzBr-xjvVn?iD+s#h+jec&R)!n-q3JrfT^`SOQzAPkvmP z@So}M-Kk0zGQLoekA_HEdw8?nwEi}(<;%2K;^dxH1ICWEdRe)F27kQKD~ z9aaBhKI^aPq^3#`L{;-N_TUGbrjn6nR#Jn+wG)dg^VN*mD@g#4M0EnyRoE6;qDkct z1*)BYEk&zMIb;enXLUZZ&F#fu_S>dwpU4Z3{Jd2q!)7xF0J`uCPrX^;$_HBF*PT|- z=^Sj5+-$qdyh=0*&D#g0oc@uZAbctkR7iWuR9mXM$!{V!>U7}le&Tp$nFN=utj(Re zVmf1EG=oIa&Ukl@>*O~(P!tu~ro}FZgD+<}iz)yFha-#jI?3$<>$g=CI_hUge~t%T z(rBD1-sAG#zBsFmvZd`=A_;#rF}OOBqfiLT_u`wb@76)*zE${%33JRL1#p;9l5=3d z*tJlKHj=Ds(!e6?1&w{7HRPdVxe4|8&(FemYEkN98ifqO6B@W$d+zlE(63C&>%5!F zQs!}7Ts!k9l5R;hHQmqgpT?l+ZYty`Rv9qIbdLlN{XlS&K6gSkt%ebIKE*$?)y2E< z%1b1xxYtf4Wp!kYoa*?klaX)L$m8KRFO@bN zg=&{9ynkhzBk(EaD9HZr^pa^vx?AqrxjPgx?yEl$fA#Bko&`flXRSb8YVJZVMjRG~ z2wwm(kzlaw2Hri9ik7-FcnF)vc{yLjF+YS+axP{xI&D7}0R;ia7uzH=@7Dnb)xn3! z4~(L=iCef2@sY36{b+QIogJ#Avw8+Tj%vRUv7|2M;R%;C=4H_xB5{&uI4+i@=qli8 zxr8y1SVJWioJ5FJ>yF=(jCSUO?tETOqlWj5^TRl2ombVhNcOm0v8EL5EgK37RDvI9 z{j(3#W0TD^X%S-0%)6uFzDQpciK#{5Ym-dtq_(wH{yA85fM=-DqAeGLaE!P|+4lSV zEU6V&WEl3>bVU|g$MXze;CF$aJI92yZLM)7;NAzH)ytP;oRc$egyEDCZyyKkkz@9B z!it!mTB$Q47OY`{nj^e_^oH26uH_)yC^TU=%h_QeKdcmwQS9{;mQ>>W2HjFCq^E3m z9nJ7p+Oe(@(m|eF7dL@KSckKL_2;~89IfH$AKlKYbN0=4w)md@#L+dmYgcl0np0}} zgshfY$wLnPAZ(h(2Geei%7kMIE!OtN_%~9pNvhl7K0(HSI(7sXp1`_R8wgdUEPVKe zejFjh=%ge{+iyC#k=EurB8~WzjCL$4TxAneX?KUlglBB}XTW7rl+|3=HqY-^vxQTo z76RFc7i;K=*4@TwkVxCSbNLRhtgRL#u><69-D}nzreD;Hf%O1SC3=l&cGk$F7@JxR z>lo3Jw%&#OA{|qWCavfmtNwdeAZNdVfL&!h*=$xf4{cUz%J@_{2|LRbYd3nLpYfc( z08JVe#5rhb)eFWXNy`Dsjy>}4$t>To=!L_;!}z@u3b2QN7Mdn8WT!nvGKvC?6%Kx| zek<`|Q-df^l_1s>A%oQsEoW~h%Q9a0DD7eAW;9t()gK1^;|FWZ_&-Ik%5%AS^JV3Q@y9MqJjU~l30KV|{ ziJ#FaGaZyP&D3Pz0BGqHxJ43JpVz?>+9)b6CG99g-P7&+cGaR=Ozjk2! zZ0Ts-q&Y$S+9RDz*r2+cD}Wi$K!3$~8R>0&~cg|)qap^swQ+|iHZaJ3IzNqmJT!JE`>d265VemXI5Q)hZU ztguE3Y*ns=j2v-N($}?LWCDIc-F3sT+pERM?h}+4;yqnvAvh>etEGDv^f693yAcJX#UrdFR1`fFTkV|tDAR-(5drV49%FhIzSQ%Zk=WL}7GLQY; zqs?TO=kkg$Xa&XIVx$8Lq5=xx`Y%Kb3|ogQ8aCuFfw7b~ALtmrbu;+QJZ8WwS@omo zE66{VI?W|aEkB?9{!M*i0CCftRD+!fQOc`Qt~HHUV~Xumg?jl3 zRycC2lCyQy)tP}tF36=H`b5-C)Vs_-)0Y&APw_%!u1%kt%J<{TlEa+zvO9#xu#3%kjTYt9%B>$9kG&Yq51}|r+!e2P%dRimeHQQ_Z=uEu z&5j78yJ%7ih)vyy-PX1JDz^)}O}6g5TDEp`)MMW#{k*Wf=^Whw8^)b`y(7iL-6OMp zXi~xEe1GYCDCa^5hZ_msZWKt*HS6I zXK$Q z%MNPpY*m}Izv5&^pLGqQ#6MGomIH&%gZ61SC^BI9K=!X@uTg75dMg?h5u;t0o22VZf> z=1xBV$)la;pp=Q#7Z`Pi#ip@j^10wczB8G83EVd_W3jZcTcZ{x;0*4HYm0H5m&=0`Umoo_#z`) zu)hkBJUk>8^Q2}#iZ9uj1~Pgb^hp2W?=7V&@WFeKNaVe^+dhVxmN?}Bxj13+(4G3o zd)yb}V_$CRfi88q?_dCpG#w=bU{8e}wJAa(%pBDf9W>Hm_OlOzW@U=ZtAOEAcrI9b z64TzZ>x`>oAK9ztOrYGx&MDvz=+K4hPUP2l%!%fz-a1lnyWStuGkm_-oIY&9=_&b+D8wqGRCBkv}y# z()RNRz|I`P>-aA6uEW@;bAQAR7lxRNRi0HKG(4>NwTQqCx87RYc#A&EJtjzr$6$}1 zu-KR;S9|(fCYEB^F>~o$3hl0&gkx59(zi+N!bW$6v9!90^{z$7-bG5#{GH*9AS_M(j-7JQ}e$$WxxFJXp?lZ+UO4 z4~&jAHENCZiwK9T5{$>U$HLVsBfn;*igP$|6!}_r86VP={<0SJ#&hEMIuXMp1KJXe zOueWMPu(F8oxpeRC7{yB{vyxd`i$3qGS4Uwkc~3iCM=NjkMEWA9nOtbFS)~Y@?RNz$LA3^WKSf>tRXX0Svxi>RM{& z^p3h3`wvHeBR!%;MP`4dcy3kx!z^{G?*6%50s6B| zdr+OJYg-brP)Y-fCwQxr9{@aZa{t4tOrZYiq#(REpA}OFU?3SA zfv)HdA{_bTRQQ*!eK=qAlKM;2bEFC~qO8kdv7ziN>2i$+9h$ECp9ck;+f9q3~&oI`b!f%Y^6$tvv2yFYGe12(M z_(euS%)dS_!)$Fbc_38)lc6a3kJYcOZ;69K1HA9WDZ_xrH1gTZg4RbZqB(Yx~$?WIo7Q>Ke&d*17IZfMOs0I>RHX1_QE_2+DY+7cy*I3 zeTV0ror|6D6inbqW53@Xp6-^VZqeFABw@V<`dZD?W}4Old{ z2E)=)y;hL!yRR|hGm7mD^6peIE;mlcP%ajVxCqw!w=tbbT1_YFU%cKTKn zRkchl)+6Jx6Lm38&ALS#wCw*Sm@+%BM5h-?jak7x6vIVuM-|^U{F1tn4RxoakhWm_ zj#(P-{3D7Bh|~BrBKZl_y`$;&x+ZbRB1=d>B)koA zH)(QqixBw4zpZ&zLA0G?7Ev}Hy1Natu>5SVOu}(z6WHd%0A?T=G1h?mprjZvWo&H6 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

    +UpMwB=4g&Bw2*Bqc0H1>Zd=3KeIS9b# zAON3(cmclW06qsHt}h>a9soWE0r(sQ;Bydw&p`k_2LbpT1mJTJfX_itfPMwwa}a>f z!2mu71Na;a;Bzp5&%ppb2Lt#V4B&GxfX~4IJ_iH%91P%dFo4g&06qr;_#6!2b1;C< z!2mu71Na8a=&)q9g{||I9&gV4(ef(mM8c4kj*C|JA7fOw6h{ V*&u%X=eYg5;XE7=?*D1{{{=({4LJY+ diff --git a/build/extra/NUGG_ABAP2XLSX - EXTRA.nugg b/build/extra/NUGG_ABAP2XLSX - EXTRA.nugg deleted file mode 100644 index 7674858..0000000 --- a/build/extra/NUGG_ABAP2XLSX - EXTRA.nugg +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/extra/NUGG_ABAP2XLSX - EXTRA.zip b/build/extra/NUGG_ABAP2XLSX - EXTRA.zip deleted file mode 100644 index c3af152fec8c0c45741a5a066027a00185a56297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3468 zcmaKvcRUo18^_Nck-|A6x{f$oNcM_~JL_yRO3E3RO`Q>Oa>Ti0mz5D&hm49tWbZw* zv=u@zl~uuw449{fDxc;?yV!iaO+n;%b$b>0QmlF z4bAV~b9~!UP8x_8e}$-w-s7uVPc?$MLmzNxmoMUWaN`KrI_2XC-o{n&d~p{= zzt!>Z*NJ_>fHG16u-iuYet=SbZ7%cs%yuz8H1uSC+ID6d2MFxt|0VyS^ifrr8HqWF zey39*kN!H<>b**|riG*dFVS#OS{{Gd;-}`19es?LfGDDJ1d!Zcg)1Fs_CaJb~IWTm)SM@RbN{YHu58uk*zkVLj4WqFcJkh<6<@h5m_@@9Aqc+~ zpzgx-sn3X~$Sts%yKW&L;*l^qGrrV`U;AMw7`lOgOs4m5=*hzSb&x7V0}?4)-9XOF zJ*B??lgwpSeDoa>ysLlr1E+cH@pxnUslaZyBk0m$D__Rkm!+`7li`E=qm5tW+cz%}`d7wrOD=Yy|G3^4iaDc&BxPD;s)nD!d`` zqdF+eEHcSG!-7V@!U5}GG;-G}!5zsLVHGTZjn+5S6ee}QjQ?E9=3zq6p^Z85QNi_W zY7QVZC(l2HQlG6Oc#2_K1kkYPArTmr!o|IozG9ocQ z(H)1l9`F9Dv38j|zdHGc2)CyrL4(%^qaKHEAP`Xx8w%+feO+~fOB&9!4AzT`Cm!t- z37pxj9cJ#-H;}W#hNEhu;9aGX7l$6MXc4xOT~J?2C|kS9~sEt2R@>rtUQ0io*yYS$T`{viI>XD^CakdH`xDZfo-kAjQtL>^CO<77LCcq z21{F!D|xI{hkzU^2A>rlvFkjXBS`77+CG|Ro`!}u^@Vp1VtY$Iln} zlZZx&n}bv1iMda{Z0neX3*Ne>a@+A~Rlvk4GIel0&E>Z>qU*CO^V?>SuPt|-WXxrk z%0AZQ~pc zAQ!u>2jAx)rvj&;T^A&fR5pQ!9GglQv&1j@MgdWL5$dF3$3(;{m@3+Q-7H(=0#U30X1~RTcTOGYY@j;#O%o zQeujZV4Nm8*Uz<}Ixa6n47?|asH&9ml6fyrOhmf*f`JZ7O@`F`9@VU`1-q3RZ-d9Q z99{r$hr$B5oi~`&$ai;e#MTk)@v?B>LP-{<; zR9$sW-}Lvsnf{`4YW7WEg|54m&4JZc{Wq@QF?qUlTkt*(97r} zIdKVgGW?uR3e2WcR8rEjmNV2E!I`rsWj)=h!b~!i;p`GDu=#t{3Ckm1JCG9DK%4~& z+u%AA+st6@?9C|=3t9xBDX8!vR+&2AZC)L()G5|1G4xp7T{NfV8Yr=XPO7%G;&7a% z9aQF?U@2>RtU{bDPqw}S^j5g!DsuoL=K9zvUYA;Zv|%`N!%<2qc%Waw@(MB!mNC%#so#5#7>71w8#sD)X{kDqUMMQZVuwY@ zVEuNb1b@dgG{ z+==0-&mZ5}tzrCU8hB$V$I01(zui=PQk=DxJ5GmqFjp&9jqKY>+bniOzul{B-QPcC zhrc8@fk(;K5~t}C2JN4kh7sqnx=&M>2Zbtr{0!KAaF4TL5M`F#V_(KBAK-&`gt5a{ z>F8o6@lkIJ>O_K7_s7+?3jf&}Fyzu>Ko=KYEF$41;%GP)_8x@JPa*wrVyT4{<+&Z(aQyuz^x zEnAX82n9oME(X_{!}^?i!V{-PY;c&}QVr4xbygX#Cq~a#h6QT3zmgY+GQ@(IBwxI` zSJ%C{4!;nk(a~!Ntu*@j)Q50}lI^E&BjeNnY%89}PhoHi#PL1K70hgqVf)OO6 z?3u@NeFQC!bVq{}zC{zQ=ztERMmP@{U!!#1-L0 z2|IBbx;Moa9``Kxi6a%8hxJX`S2QPJW1BPA$oi;@u7)|0Sb$FKc# zNW1O25nGR$QWJ4ojH{OOfrfV2Esevw(49Zi@gE~iEDxC6rB0@|R-+Enpbne!274kq zpK*E-^Rj(7ANdRGnDx}Xjy>+;_@S)tiXCZDdTkruPN5w&TtdftZ_m-u3DbnV zRSnV+fd7R;LVsZBZ-M`<{}+sy|9eCQ;0A15hGr49`=|!6 g@4UE_`>52ycc1=sV;CL%-%nJ3+T)KivHnf}0;O4|d;kCd diff --git a/build/old_releases/ABAP2XLSX_V_2_0.zip b/build/old_releases/ABAP2XLSX_V_2_0.zip deleted file mode 100644 index c8a9a19d2f21b49515970fa497cf36c442cc8578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570618 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�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 @6cY>1siteLiluJ&!Uews39<2|Zy!)9!ZU=;+8U zLq3f+3(+)b4|M{VJd*==AJO}hPIH{h=G#OcPMHey$7w{%am4bs`!(Mk=xqplB!B}S z0zInEjL5w>PB$#RqQG%vnB{^$d<3Q;eN=L4y(Sr)hE(1EhGb+SVEuFUO(Ur+EjZZtaiH#7p3iN4$Hy0fV{4YjfV|Bk;{sBuX$*&3o)35e zymvGocVYV6Xe3C+bSmqvITPwb?OEOup>?3V+!W#WD)&qqc4#2%Q*;arE5zvnN;b?? z->86#O(ESuwrwg0w-K+I#UR&~B&-!v-0R}xXutWWG`^YX(cH3`No52R$t%dc`)(FI zbsmZ$i!kXaY`YS-d`o?4Byqj2vXgrRb9eD>1??Wi`FPSPU%0GX6bd(NQCYRqwwz6y zP`>!Ft#wYTsdDD|%OZpNNd7VLOOz1`&#fXC1NSD(gju?Jy{4?Bc#~E=exS9T6=&Nt z3vHh>ZH`r=m-H+M$#}p5sCMM1=H34>v_4{*ksxO>xIRXFRj)>ze5x zh;^NFNo|G;`EE;7@fuP7aG&AKTl0OHm;ZrV7xNYI&ZA(%_)2zx(yl?&B%2dnw`$=Uqm3ei<6)JbQODBVxB(QFpvYMa( zS98|oO~n--rQQ7UQ?eAS?>mQwa~F>Ri)Qz`PK#_Bm)*S80^#-_e*9Vqxb){*vh6Q^GU_Se~U^n6lQAO6UG zX~Wxjhf{t){cMJ{J(w!8P3XlUW+Sxv-uPW`_C>h@)t!(RtM|a}bO2CZy&P4%dE-tB zkGoN)KcFrm?pPVFwiZ}Qg%F5t;$Ty47sCsuj%ilzax#mlQTua-gg0Mxcyq9?qq(YA zr?Za%wb@+cL*qhd?MGCzqB*2gWMITJccmhWp*Ta3#C2i!@`SEXUUa&Hl(kNuexlaBPn!CvK zw>7iH7L?{IF-QldY3gu8Jiq$xi(%c~u`8pP=Sh+|Z)%4S1dwjI24*h-62snvM$|^j z8wz{a{!o-*_0 zTgG5IzTr{8iZ+}xUEittPR4;kqVAL19gK8`^Hj-mjb~?Sm#`GL<=Jn;G8Ur7d$T#* zxBk8PFbWIR%pzScjvC%HuY zYJ+WKh>@v!>NYQwBZ2E2CQG~+{$7&MGG(3B5re=vjEt}(oNmd7C#z#uL^WY)wMm>qSgqktFxSy?b93B?)^K1⩔V&bCKM9pWr;d48O9g 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

    T|?MetaA>NUO1ib%#e-6o(EF4B{ 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

    Vo%|cvqujza4k@*Y4-je+O97 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�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�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�W*L$x$%41C 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�+uvVZ#t7ktVM60gl1g#q$HHGw6RSbV{7 z&V;yv@HmljNCVLaPYAwur*GYkFaoX5F`_8vWb9n6TS54)AN zY2D@R!T|ZXzGP?|7dahbD@yZCNx!hB{IWkN^RH>& z3-FoRF&w>q!WAtm)b~A*l+fsVSV05xARQVtmN23Ou-n(2{Fayn(^mQx9zPU6k&4J# zz?j7c;RZfbL^^oUP?>B;!fX^CW(USg`;UJfeEfacOX zcy3?pB^Wb{xvvJCK1_Q*X~aTIw*5rpfS{v>x!A(ryfSgmK08|%ojMy)_=7X=p$P~t z0>JED3pKoOIX1G}7ohSik;Zcs*NsKx3Smca-t5*>N<*y3PNkG3IQx-`<8ZI2vS>AQ zM>A;^Jt#FRJt#E1qp+=HXBA5;WqvPB89$fdr_e*_@R%iMheS+(OSLLD!*|vi0=(F) z93*iZEA(2fMQ_c?=6zHE@XG5u?3UUlJrV3F9m-Q*l(KdDJjGt6YCh}qFPo7bbFK4f zOWUnP9{LKcOvPVr=$3pqMyntmh@9O?S6WRKPs2==EjNl{;-+bHP$B|(g5Oo_VS@_4 z2sGtkae|LJ#0nuUY)l&&tGtX6ZiqdV^d{z+(C5id9VEU~!JQX4kfu3_D%$u~Otx&D zEpjm>hjJVgc}E?7pmUX5&{{K7oyjrhIsqr*Dp;MCbiYjWCA~Y6N06tw?WzqoyRP@E z2G8=#iwl@!8pjaR9~RVw{TA4P9i=$vfiPt_3h!jHiE{a5&^79=va9!|A`fH6z!gkX zu|XuKvp=i*GL>yWr+D)yY0sls8Dev!^`w2+V3uS&meb{OvD&^(wmRq!75EAZH!uGb z0v5tlVJ}A*u=*82ea}s@0VctQm zx0r_>?d+_W@GNvrGjLZq!Mn{SERO$u>HN9 z?*ccjoLbCv?x`4g2!sYvEsdJJm+D4u+9nGh{bRndvUe0&_9obL0mjA?F@Gcws6QKi zXrZ4h$Q-!0DD@FX|Eo%zxJNpg?aqxz)tbyRdDXR(am*FfPXu5a^lBI;pu#1D>DA<3 z0uVP7G~+P}fe{IegiE#g;O8{vPjv%}#~vUjsDvd4d%>ZHZ&M<|N*+EBXO#76XQm2i1Sw3_R%1+M}krRi^wua;U#0_0VXt?WycUH+?in@DAYVEC- zk~OT>Ni=i|K_{6|3hxC+@{D>1wbp3PrJGHXha7`&q2H&@YCV@wBI;Yo06{>$zttPZ zs?Qr$Z(p3}VF8ZIGT|tO7dh?8<7((up2O-ZAE>^vWz|vx_#23Op_p7JSBH0KLTdY% zT%(KL073zG&UPLV=ZZg1OK_tT3^;VA4Vt#>SiN$laNzj&CW3LvhKibvPlREuK%HUM zPxA0(Ii!>`*;Wc?QdK?NWPfwDAKWgcg|z+c+{Nj&7JqTI@57frsWuo%9-37gNLff7 z!(w}JwP${Hwco^AYX-5~?B+utm+8ss5_jjnQT>4{yDg1q*~Zy4d~4~GKEC{LoY{{3 z3`t1l&Xen-{7u}Lc#d+EO6X$qeFbGZW6TM8fB1!gQ_rl@#L8ZgYaU_6m-}V933ZQ8 zic%koCLGqd&K!c>B;EOZ(A8H9LrPhX9Bc=s0{Vid`xbynMn5dmi*Zxlce#X?4yqWp zk6&=-8BDXl``9bS&-oKDRHAQ_nWDK=psn4@#(bRc?l#?5-8Ut(bMSMw=MXt)hMLqd z|Ds+Evt0nb!cNvqHO(BuLQ$d$Zrz>MY<#7Gp&T?Q*Tniko##Wg!zEfh=h~w+wo@w@ zQDNq>&-#J=v5!v=?4wgU`ixyrZ*H9d_QBQVX9v7jWBba4QHD-qJ-?>?y9*FC_d@xw0Z%!6$;*fdYoOFP$3lt%GXL-xH9{!rMek^G|1fLhxzn8MmDpHT~mQ7NW3@+h5VYp#- zXZLJOUcFf%Eyg1&=E)*$+(^B2cH9Q4^cr+g>WOMq@Ko-zTM!(MVv*e);9QNIgy}(? zInP$XjcyoG`>4`{EY>7!c2t3S8rpJMhmBBNuWwwfFB^R%xd~(O9K23W-(ZWs9!k19 z)as$_`;h#0-QFKP-Xb1$Z;ZkQR_DDU#(GFb(rI62DGC})mZPwwowrzTI}$OWmk`ZD zuT}`)heuUU9Wh4(8BYXjg7bcX*A> zgxL@mG_LjhPSHh0$i<64mv<2^m|O);U~r*!Ay|y(py;8*~p4cX@6ZehehOKh2LK;7INZ+fZaUL=iPh@$(nj;Q^Ey-n>{W5 z0}XTR(7ELvaM5T$++L#7_B4^F(e{7yw6B<`O!94+mltd1 zAi+~eyhsaIyimDc<4VCp_JO`w^X;zeLyQq$Dz%g(NiI81clWuAmx!Ys@f_+(cqYgf9x+A#I$~(c{FudG2 zL)(_rHE6`(K*p~t8tHwdIy|0$bhjdFA%^{IcwaoUVs?kJqVU`z=LF0CTYyg%FmOJ- znbB@bsbpyLImA#K^lC?f2-Odlj@O4Nd>Em82YK(z^ z%N4Isjb!9Ctc8sbY!Y!V=Y4T%*C5 zXM8Ws8lHHz$-=Y6%rE&7D^D+zBXC4l<0zj$u$^ie7E7>kKs1Buk2ou0jJ{_uIv(>5(+fG~(bTu!-L0f*_4P&LEPSmx_Gtab)tPy6-9|nWC)dcy zL1micC{QD3TcTPO<8)F2I9+c$Y`qYIbP{IjFXkea2n)R_o_}10iRJ6het(uy5w!AD zj5i$T-MEWVXbioA60|Oq=%fK$IrK9xeNXy)J>}U?tECoxzi5+j(sFs&!iSlE^tJnd2WCaQUBvCi;IiY+Ckb;%rj) zbKR6i2Tiq4XI${Kf46#4aJ_q)qz>7y;&3roa|G78L2bDnz&pg?btDoGU4%YKbRYg1JDiJ1}<$p0*cja6R zJ9Pxf(^&EpI~oP9KVmyVOWc++JC8;<%{(sAQ5aA?taA!?QEQPt=pM%z(QlF7 zcWcfA67NZi^#|CL8h4Wmm)O+E63>P&E$_BDuZL$uhyNj_2(T8Aj`Bh!Obiw!@jiYAFY&^3z^PDCjCrv>%)c-S1pA*@Xmxe zRH4@>_ghgbzK7I7t!kLt2@Sorueo4^U*OC)6k=pS74`+C44p!Vbs@uEK%7pu`hYti z^SVL_Gq8Yhto*}rmI`$_b(pRLWT-z*cMwZB+Hn4Jp$YRsWe4m=9kd<4b8F4FLw&HMKt5g?x?A@sX4fd;@_|G`6_XK_Ps0r9_xr7h z$62M1vtA)By`XH>Z!Ei=SIh^+ZPZR4vXGCHE&88sd&h?w;#0g%T)eM^S32Z|4M#q9 zC|a!CilAmmrhWTh+h%*6LI&S=jT`4z&xCYaB-WN{s<(tipW7R&C%G*p`4k@Hwc^28 zNlW9z+Rm-9L)^_V;KoSsPL2EK;6i1tibQ%!Z(C;KNz*hbidANVVUBFQHpc6FO}0Ul zf3eu$n3FEZsJ>w9=VM5ndXNd`2lN`#58TU$idVvG%f7wt**D2yy-PduS70*j9+?7Z5ONnu*NgXgl6{%21?)9#U zHb?jm7f>?}ZM5gE#j2o%O&sTmV@$q z>~ahw>ojN}YhSAYL2^lhSmu5&(@8y>wLpYeKQY*y3OJb}jMfp2gP%%(fPyB<3s!cH z=XK1*_kRGDl}V;FIdV$(4Xa1#Ne}x{i!6AN7e^{SS-1J*Qy~~aRt+_<`qKs9R4e{5 zQ@|K+;lmndfy9@^)N)acx%X8 z{f=!z`(=2S>k8H0Rp}?00wMvZX?>Gkp8Y%US`a^Xnwt@_;iAuQ>@%Uj(DBV@Pl(bK zSzF;Q7p$L4h2%LYi(f@xEpCod?fhedn?gq3Z!b(KjHC}57>>0Vu=56tbQGPV2tVRY z`EH(9-h`GodU88WFV$o;IBxZf*b#e*3^ab&3A?AQbva+S1a1}A^LV&=l6{+bum@C+ zjRf^JnhieZc!#x|dYKmNrS100KVjBtYdVoh$=zQ+(PF3vtMQ$$mVR}~Z)=j*)}*AT zLraK<9uf!N{`vO&%eQ}T_ig&gs|FC#&JVG(KZ&hTyz7)f#J7qf7G!InsaE(TD=64- zDuq8At0#ZbN-JN$bo>68B-Ot|Ner}O6tt?wAa69$>wlGZ@zX=$_c(IH1$0Am^eAVw z1#3j!ahUn@0y&iM1Sgv9I=%*hqmbCiNz5r=>hvVpkoA5qBw?y`f~cCrRY4%eHDf!} zFceQ?SW}sw_9Qd7mYx-VG^@wo-yMKnGylmy*~-tr5yV14QX-=9gd|B%5MikIR=RRq z<7QOgUzMD>9j$z=F+jtVWTyWEp@4lwDDLi}Z+-j2EW4|`v%kNy+2FgZFK!4ECW)mX z%60>OwK8my_9M<@V*4~?nA;Hs>}n-EFY4o_VjK+~swDcio0uZN9=p~oHw>IXbG_m% zMZLHH7r&&1x4qDXecXZR>N-JP_(3eLgJUW`^g>+B;2fRuC>$BpbR0h3&2S-zL@dC~ z&axly0CGPX1yN=DJd*3vNyq!%8r6ecy5_Jt)#~c(X%P~n+(e?HbTY(wb)yd51Bwvl z7XN{-du|WbD`rIKeDOP(aN?hq{h<6;%YLj33C^H@D)4o)l z6{C8;wL$w$!BZfK8rc zCAo7af#0kOW~sItVI1v?d4dTDE? z7&|;4Gi(27@)*Fa?CJ<8xf;=)n7d=X5^R-$}2td5KrI2ZSf+Vp2rEBUTr(@P2=LZRUs`L zs#)zqW5EiNfs(~x0(D`4XTjHz2j*Vroq*OgT+RQ2@;;{^T~WEOAZn?TE@2$*tt;Yw zjb=+Q#2reWyHOtC0fL4o=1qKfI=GT>4M8H-?keg^z9@pqhPI=jbfL7@8?Nn;%`@^fJV!E-WNcI>(w+ga^pRXG>)Vl{#k43Jfbgvq93=ZCjTsw3L(h~DQqQO}qv zWmbL#ErN4lHo9CTsXmh~v1y23Vwjt~ogbZgGFJoU!`k~Ga(T^j?30{2^!906&g7h2 z(EHMl)S=qI3~Udzdhg^o&Qi~4#K}{5QQhtqK5f=HC|y@tqa}5I0k;%!w4qXaAoL3s+vt(2g6;jQBqNxF!;~1bTaNGZGQ*-=g zCdB6bcnx?S$Cx(fWC1~CBSL>q{7{aF3kS<=(5f?S@C3F2ZOZN>QSXmV+VV}V6wPwh z9H6a8gUk!RJm@Hx1vj`_t)OcNy_i&tPBe2 z+!}7qMwWm7eYHzQFheBcJsm_*uJ1M;vvoSZ0)TFdX3XvYl`kYXS4N@6uYVAe9UT*V z(yr#c-_H4#5(8->NXs#r#9)neEaFEn2#>wrmr6b0%PJF9_FeYt&|7YkU+!{;OmT-q zkmr0WFUCG!IS3$18n-dJcNJbGJesBE;$jO~L_k3Pngz`R)A|Zy?jv3Y(uM(SC~Iu( z<&Q!TbWKPhh=yGFRDrkW@ylO!;V8_HbJvjHUi{d9Wiu8Hbo7A@vOl9V^hPX14W-XW zE_l|m%aU=#5XUOjIVCG9n13TE3ZtuUaI6o6ztI!sY#9n<#8;Zx9kS8YE6<93SE756 zf0%b*y4%Gfc|!tA4`q&Zp`6_*aEY;`J?>qZ$d)q$sS=~+M!Z7)Ys#TJ?E`1pf#`~c zIYy1RLUhsYvNxXr1W1a`LKkNrODZn&j~oX_COl{QZ3*LbrRH_xP^%Ad&}|cZK&s}k zCq;LwjN+>q##Do67G3hbGNs%1ub2#D#S7cg;^G4yGV=VVF2hWCmv@g;}tv zW-4e&y*A@Jj&4<^`!PqELVVyAv^H3s7`;-x8`!1}+z8*P%xPAXiTB(X(wJu-cp^8g zda;geli)hH-=dGcwAH9{QbmW?aAUqo`eOd8{fiMzEWEM#-2Q4MGN$ZPB*x<0lM+2|I6E65M zcP)GHcYY-1AUS?ojSX^NI5@ycB4XAqAKp- z;sm9=ZWL^GjNM&*0J|~wP`1|5afDMVLr}a|v4kbgOG!dv1v|!^4()G{@SG0bDrBXi zV#Bd087hTQPt$Wb6aPkZ$KHLQi!b~|#dET2Doe&JW_=g)8r3{xrWvwA!&pfrNp3(E zXUS5`hhvfg-$+U2oP0Uo7u$y5{!PDyj*m-wY{9&jy-E{zF>52%(CPux)BD@KOtoj7 zz5Fs2i+6Leqs5|Uztm0;*vg&Bj}k+}lHDF`# zFJ3JWbNUNybvm}15Xbd8oLcYY!DRKAGRA@Y5G-)Afdfmy5AQt?v{TGeT3(rs1n~sp z9V)#5zhPLky2jwMP0PjQkB3a((C;3~b=|IxkB6s+OYg4chu?KdvKK;EgrE8L;!k&t z0eoak{2a>Bxu)FjA*Qz&C6lh4AykCUp=hy^BDu#E6iS-4@$AlV_VsF)zWTskphADvWQnZ3R33kg}8^-CI* z%IyENC67(C+qj}=4H&?@&EpjCcv5kZQ{DJhtC&q^eWW73(6h}5CgtML*{y2U5Pgx3 z;*18zu=}*axkezfK=cM8d%FF7xsp{;j~dCw`{(cu#Q8KCqWe#6jK9yc8|8I-BZ*{# zF~ML`BdRn3e8xRbmMIj5+eX^gkmHzDY9@EF z3HwZ_*$pYD7a0?_%rp1)zVBV%F532UnONTm*VxW5UsQJ4G2>=YU-hRUvZk}T@QOh} zvxjoclY}af=5-_=g^A2x)t>RF=oMV@sC>H1oV4Vp)YYw?0kPfDn|NfX3KG;lVX|oJ zdz`i)rq2X!%6Ol&vh(`tvZtH5exggrnYB}&^{ROJQ!tE$T@Wi5)z1AzSYh;ZgF2}k zbWayv^c?X$_cVRF2!zQdk@i%(9WtQAT%KA&EGW0oa3lZQXhxpO3@K=R&G_5pCu6L1FMpOg$1~ zCqt?TarhKn)PDpG2auBQeA+sDZOfk1vIBj_@I4ZsG1-W+^iEIOQ`KJbVtZduwBOGB z9Q{(o5xPshZM97?_Kdus%~W3JmV%93z99 zl_r;?f4^1vUhK1)I3eb)!{AxCf6z=E(r_M8R~1A0xq*zWS~IpBLaP8?z?OKbR^J#| z5WY-~mRz?(DQ?-+XOHCrLj4DV?~PiNk(1?q)G)eL4Vgpv5`|Mlt6HRTdkDug>F6rH zexVw3lQ)M_kp!F@)QPF=4#i8H#4?4+s|7k?g+4sgj$I{ZVAsi(GiFDy)VDI{iNBagzPvy)X++;J&nC7)WHTU+|* z_J~)(XN*M$uYSXH%NyPOs-VqpDFbFJe4izB@p=Vq z-2mCS#z+U8USqm03YY4|kQ%Cjt41xVUKLT>QS7@J*6(+#auFT!W$^~_5jr~vtnJiL zrDjP$E#Wzg$mHV~nH6JubQ$yU61EBzNs}DIMN<`hKAG zao&^PMyXB54SW-*+_k0~qm z6R`rP$jS7|KFjUgeU^J6euGf4D~;Cu!dlEso`)D(-+Dt0+NaLx(J;U0Abntbwr_)8tD9aJsqD z&J{)gkO8-&i}d!}^{iPjwWl${bnn@+;C0ZN15?6m&Y7IYG07ba2a~I-d<}zVvz90} znp!dSrhyy3!J|z=(7B%67#d(8t7~~W$QzcdOm>=VNb2bMXGBUGz*3x>ManzNJJw*i zpE~Cd?~;cY=3X@UXVfSsHqBe$oJq!2Usz{R#sXQ(wN#(jL@l4=4B+kM&&BpdGm{P3 znD%ri__S1CjLpupy6|6} z8Bq*AHzM~DcA^>*Lz!pv+(~8*n0AT$j(Xu>wE#U$d9j!@hwx!R8cM->EG*+EomD!mpoML4F z^5TDpMM z*^n>r*c_Ra#Z7WSjaJMtzJ0-(_CtEm3Zb2;j^ZUdi8leVG+y1BILZlDS%M)TT%^Is ziVgxQYS*$#^FAl%HiP?es%*AQ{AG2y0SYuzTNrnbr8!xuGL|~qdfvp78AT*{ZVpb@ z2)vzo3}oQ$!6U_TS#qKi=;KQdi;Vr0s{kDt+iVJg^5ap?NQlM09n2=({0vCU75#UoH(ZwPu3NjcHH(XgLD*kR z2=&)UPpZmg(7^WsriXyTRLJ<=-tccr$E+*=K;Iv^Em61n;<|Bch6A3#>YKv)S#?7; zNDTkrR%pPZo{>n=N3sq%YnMGgD8LRgokCzXb|b3I}7Huwv1;Smwsf{6$#*=BtwF-el;t+;j-Zb*ch?Y#btr ztJ|^7i~;d^xkI}aaaxW&__!1b4HO2&I{R<++FY)TvJ4TDz31udUZ#^h2a3(Mgc+Lt zlYwpW(FFnym)|;31Y{QiIvu0)u)HNdp{Yxsr_<(M8PlDoGv_nz@@vSLOa->(DwH$8 zEh+P~u;w8caFU@gIkuFWACq9nKV1@pA^B=k{ZVnNx#fV2g2-zN8GgDXILFA)^|G-+ zp*9O8G6yT!a9O1G8`L^kN*PkI3L=2ixi+eW4245aejnLY&6~WKJYo4sfrjHMME~@B)R23$na2}osG9Wd#o2b7=y-XF?9aNhDz5dNz z*upo6s(Vg&QwwWNl)mjPnkV6oMiR`W08PgtxejwRPGP0%KcI@Kc&8?tdGS5HLp8#e zuA-uX7v{?kF1Wi}#}B1$Zs(Wedo>hjjh^p~zr41JT`qCDYxZJTSiS@wScZ`!MOL`t#WBLZgnD%QdelfEJ{Izg3PRvw}clyfZ+ib?_E3W0& z=(c5mnqcENfh@(!X-Y^Lkvo;|l;iBa*?fcsGMC%8O!oH-re=>>k!RUX^yBjAlkXef z;LO7u0t_7Xvn0cvKSm?712O2_oTZUR@Y;LQdRZ~M@OF%hYWSj%^!)&-1sT6Ja7p+sl-qeL zayC9nI(jP3@JJ-K#e&JQcyiM__QQIOpuK=Q11})ypto<`$ssY7QF?24GwbXa%TMuiQzT&c=C#}(0 zy`!tq6`4!0__oO1#^M^iW|An}oa536p(vwkgnm?0P#_ZGkY7_&aZ_JkGc;2@v?@an zQeuu25emBk{BVQaX1n-ytR30hVdjX(c&r)P;CEx7Pj?nykoxf~iB*4T=-sIQKEg39uH; zu2|&4xt=k^u?2KHnwzzsgUO%8V1Ete*i?A6V4Gm$-h|=|YLt4d>(Ruyl9ND=ke9#| zFGdTEN3PMV6^yKpO%d+1wI(JkYRP)AkzbX~)i-0ijx)XFuc-wV^~&@Uo>p)V zNjcD~5WbVihk(0Cdb^#Sjb4mh62_+_N+xRZrOld7VSO#M+=FG_&|UD8;2go2o_7vf z0j&G_ZdtLMNjsS(0)ugI<6dI6f7CPGuuD8H(58sPMqs3!PW~Ri6 z7C7BH@wYry~@j+^9>y-b`^S1sd`w+!S|o$ z)P#~cZ?`k^q5d4D*{P7idLH^A3VmmH_r7s3ozPo&UZY(yl0HM8XhQfKU3R=>iRIC5 zp$6H;dq&>t_)aKgjuo@~iVsm7FvHgdVR#&!m_076^Kyw`(&3~Kb!yp_xsH{J%7N0} zQ=jox$Fm1lD$VQ?l;07F*$lYa_&E^jgylngyosaRLLyDL@=^@$gB5L9DHOW` zl&0RUlZa&*h9M-NdkZo%x^0m0IMLZ81`ul3P&HDCRRtRgCkm_4nP38__DXv>I`V=p zNaS=01cz%r?&U%S(AmwO;`+M|0g`n4A~p{;2f-Xe3YH!T`a`T>a~5cAL&zco_%)Ts z2JZ;TeY?I;y!)IJQ9yQqk#r%f9B`a}4-|UaWS;2~6HrkPTtW$n-HPSJuH(G-{aBVr zRh~~{>0nx9BV z&X{dnI0rvmODky`ds8fDmu@&f+GGv7l{xB!q{)(M$WUur_dHRz)sk~gTNOFRnhdMJ zZ-+*mYm|&*DwbS5cs@FTgb?OSwk=dX6obGb z&Zq`6oH-}ooP6Lw&W!D3yuo7L+0RBhOKL$-R7mX)?f+ygJK*mBqP1 zl#`TAq%ZP|r2ix<*rtLY^8w6ncU=c~hOh^f;JZbH?_JQt4CgtUo^33at!G*H9vh)#ktqff@hu&HQPEu=P#=NG;BaS z>ceYsP*S%TS5bWy?B2ovYaZa6KsBj2va9MPHaS7|0#zE#TE&A1c!Iuwx)0=`h7%E6 zAPhAF{kmD&-*PbRjn#QTd?t&XD1+=x07OUyRtj-+^+viX`_|ybUirIKgJy-}I=QkH9Nh}>kh7=~ z-HOokN$J|eBZj(-h^X5-sea@;sX8erhO#N(_b%N`p<*;3kY`$aI^Lu&+ zvv8!Mv6rbu#5Wx3EX6lIt!U)R$O+R_=m&#-=XLxXx~-^*{g_VrNGkTW3C5^W(CmAY z7h09y9Xltvz3Fl?Z-X%h7eN*=!1>#}SLX-D)UTJ7KQ7sl9bAuAt-f9+`@@b17zV0I zV?nX6i-j@z#C-6Q4}0hdDnH5ft%3F$uWO9TLfxDI)Owqj?fOAEhfDajIWs>hI0kLC zBa}_Rq%njtO?le=u!F)@t^evg6WM@5zB?+^Y!NE z228b!U+1iQOP{ef7B(snQ}(n?w#!a%^81smD`eGT4|D4&k%sd=IHQ@sRvX1VzFwcuoSd-;Rd1LcPb#BNFI;#Sku)9}{??2#TX>;kVpP!=2)l>`Sur5Agk;nn zpy#pJMF3^2Xw$jo1_@b6*sit~mYpfL#%WB~4Fn*Nzm5<@K$giWp#i{1GzUk3mK`a> zNSbUROR4H+Mk~y{8*)tG|AtJ!ib&`wnCk>0S?k#nsW^w+7iU*HC!)*HnaHXXAxj)P zOIIPYDHY$;z+klZu}cCwtKT|hhG4t@2sNWaH4javvjX6HnQB7425+V{&HGIjn~|P` zb}lM&RXaRCRB149x6lfQP;2~B`tItgdlJ!XH1a3yl| zM*iR_(jgCm-0&BXCizRcwOXf8F2nE>1K{ z5Oj5V5%+$8Y`8Fau*w3XR`EC%Lo#7N&6<`;hrhzAs4!GVyR%W@HZG8@I$t46Z!u>4 zg3jN)bFWb|D%r-aV%4uQgyR;!0?)X;kr9nlZb#9MiJT~byiDHtXeH9+P$XPt!u0*q z%a_b@Eo~PID6H)6U&tXiW+pvKenH3? zq1L;5^7A`=L5w;%n~DRxWx~Vt4T|34+O>v*FJH_TPH`}NV>Fgq!SXgox`A~Rn-Acn zOXryRZdi)hQJTJ&^aFd8>8~g{lpcj_ro(s5DUIoH?@LO`!-) zZ`z%O+UXF?@>j=eE>fKRn{O@aGl|$t3q9jzYA6G*u@_v=vr}`zA+h@v1r!MF- zWR6P}4|o$p;iF_hEq4c}b~Q>17xdJ|d6*?o%t|mWxUQq?Nqb^wuC6zN2TyL@Bgufo^@i_Ir<|#uedH`0x zwdJH~Y*smR)?}nHn>_Wu+=f{sp!TyNbMuwY+<&L;?>muI`nU!hPOi2At21ew9?t$? zFDTh*QRJ>)Ebxo;GXHMmWS^}qA?kdDWfnmu!tYh?6`|S|Q_(v(&`pcNXK5A!t zCRLwLg~c5i@qUa66F=fQML&`IN6iBk8OR^F3Pj3)$WZc)ho}^H=tKi;ToIRoHLBF3 z@thGps1dtJSq1I1WM7?FC@Eq5h}UGpkOI9k*798G zKQzPxm;56Xa2Yhf;C4P8^Zm@#Q59*esT&VJ^C@!Z?6rt+p%QK|P{`W5n7P{X&(PTB ztTs5ecsCBG^O4*E$SPhE?k}FqD&9qp+Aifo$mw`8+=`Z>4vMKnLCoa z^#HuSxkV+SMLTPOW4K8+WL_f&SJ@F4I-Z4I98=E)ETg72F*OB#6b}_(e#hJrAf);+ z9h9=`y`8kqNKJY+TT%2R_dSLN0>>>kCIj0b@9SNApA8#65QBJ)IY#yM&o#q?(ubAR2Xwm_J z@j49Wr@|U{8q4LrE&qJlF!y$vrmKCFJ1wntXmjWz#7o6P4+C*=ti3x)!rXAeBk#DZKMbNwEGq{!#y2?JhOM!<^5)(e zpx-DC3uS-Nj52WarlXLPs$Ky4mV6remB^WPoBxe6uilzJ3e8v-fXD2HTZ>L*DrZ(WOb@t7IWE`}RY4fwo zM`WwmZ(3r+CpuX#Kf0J{T$iUnlS8F7;5Df^G+*b^-<3E!lXk+8d{Of~@F=IxT~4Ke zAL<%wPPILUI%1CAR|%Nzh`WTJHepMm01{1>1fX8gvvGfqY$!_zQwaemO$WwM=>WpyCs=#6d2$fA(ft&m5Y z)I+M5mL-apjJaj6enDUY((a&i-Qm{Tk9HU09RImbq{KnV<&A(zhYTn~$_X!-YC-LW zbD`}L|7BW|r9-bjLz4SJlq#W2VHlTA*mr8=>_(wYt8XuX~* zpi$lr?}u?Jq&YFbY*FOq%m28Prk?FMCpTfO+zL@w7i3=DHdk#OX-dZIawCZnv4Sf3 z>HB`JjgCCB%w=33;?38GlUp|#bE6xo0o_Q1HH`3z%Cs-6W6cEAN|v-L!|WmSS)AW-*LJnCis4U*AkPX76sm z3l!AF)9l8jMencQ;Obl+eSh244r$r`ts;1KGY*98bj!-kTU2a6?i;b#e4R7K^p_>< z0j0c$rk1{l;@S(d|&3Dlf3U>Z8~% zu1C%9#L@bQI-ItFRDe10woli!%5aOjNi@MA2TBcHEX5}5Eo1%XgipVu|GW&C5V zrs}(`RjU?hw|C+_WgTe1FxBL3u0}>79E`c8?PZrPZJ;5fZje&d;n-;Ys>*J3XcbniXydku{o%aGi88B$xvp# z-#UY&JJV(4YHPix$E`;xcKeUkivMZNu8l>pn21q=&wDrE45$AqY%J%=5)yx1L2TVl!Ia1XNAK5}JBe zMly^woeM)`PR0OhWdu`c<#rm|^MLoxRtGv7M|xT%GW+Y-%GO;Tu3 zZ%V>oMG^KCmHKtG+`4P`VL1xC> zYz+u*rpkiIrMzyFiA_>34>Y9kq76apB2^gIK+HsE_z$&N#ZLdBt(G6`s$4Eye!J9k zM-@>CThXuV9YCD z9Q$3qgd@{7DN0pq%H9=8w+U_j_{_V`AojFMeoqg|^<{z?e88OQ_0Zy!-C&VX^C0!N z%gJY+JS%xhx*PUCdTX-k{eTzpKYTg?p3k4Iuis4eWn!1HgjhdPdU{W~{JfopkVn#q4B#;5y0|vQ2*`xoa5)b?eVshimt%f+TKlqr z#nJkU-`JnlAJM;o`}!JHfpLd^p9>Zul$-ZqsY^%CA(o}s3c&Wz^%uCsD%b^=K6RY+;~g~i z6~`S#2V(b7X0}+9vB=Cs*Oq=T79imoTiq!cL!i(Gq38~))RC=UCj;xccr3(O-axRq zpppO}I~RUL=AIHXIlqYGPEy#N@!^c_8xD>8zVlG^!oWdB4h1qi`kD~bEGBaZiN{CI z^{=1=H0$`NSsq*dDF-nJjvIYaslbb|lY@oIx+9eEG)K9nZm4XyVy}aRM&O9j`ra2O zS_=2%1YHEvB}wzKl@5K0%ZN@(MlI5NkM6*vaa!x5AXl_eVcV0%nM~9}cLkv!Zk{v} z%Q@aFyW>G6i9Y_GGjzwVIlr2E_YjE4VatOv{o$>hc0XQIjyNgSctc%FPT!^lC@P-V zd?{jOfy|Fd)cE~=q{_S-7Y}BbQ7eJB&e&tV=q;PZ)Q6VEo5H}6-QW7*F0uD*!$#qS z^F|$`12Joo0q;9wr{CA+Op%T+L?h{QrJ2PRAl?O~eN8;r@^gOUDsOdvh5p!3;jqAO zJ+IJ;Z+?p+*HU)JEi#Gt|1}P13{T<|Xgp=^EQ@am3pt>xCwFlv1w5ulH&=h2` zx{>da{L5*PyD1~!b3JgGDuBK+HDQn`($s%u;vQng+34q2d1j}gypZ*?&g46rz|CWn zNVCz0blz(}2+uN2r;Vzea|fB=iP{jY#LExRqzImL!6d{~GCJr)X4@4w`x@m+V`!}r zfPAks60Ep5P`^>1;W1bP^8D-ertH@EYSr*pNsH=Lxs$@l7xNvPDBZh}r-4Cb94V-I zKM;i`hr8la08S>3s_r=otvY4R4P_U?T?!n9`WYOdS-Yxj?t1+4?@KI6K_A~~3GODU zHfLOV3{5&Yot)k41YbUCjTT^YWMLbQFO^9hiA~OXRTPOfpXch07C1IAUOmqW1Fnj6 zSYG@CMPXN@DE1>vt{UquB$yQ({IOvtAttUDAW?s{$XERMLvA@K{40Y3<-38 zdjyi`4vAuK4kP&9+MV$B*jRXehcGLCs74_m1b1b!Yc%b+*E7b^I;Vy;I9&?b97;V+ zo8y~!HR%TCsu>MB(R3||1L;oI-$`ubB|Ux;V99sgRY;SgL1Cx@}# z*J0JhNSF{_6qcsoSp!amUbVulM2(9&o~c-rW0{C_M}Eqnm3Mcxpv{T-lBX3tUx3!? zk)zFJcpmle-pj%RIAL#{OXnWI=V=T>v>aj|{VcwcsFxxxj+2v8o~n#nazsba53W~> z;y4)0P%hEeE*hGz4OBIrW=PQPx&|jn9LS1|n;ZRz*VqddXiWYbzj;!h)3@!G!P+m2j(((Yyb#aM7mFAWlIcATz?xIyNKy6#IY&{N+te`iu*?0F~Nq=wLdS zfE+E&~%a+V6K($bX z$t}*oaQ8dQ56tBr^)mBG=98s|1hZHb$5Y$ABh|x;e=zV<*YLA!_Qno6w3T7G^O|OC zYy-T~!6X>w+b4+h1v3mW1&r*J_+N=V)E{+V+kmDl`C}bdI`*Ff?{UX+MnyYZV$R(j zLNp4Noi{|!7?=fCgq>&u;0NrS-{kcWe@@Hl$8k~UM~!NRK=zmP>5WpZBu~JW3mP+r zd1t=iF9{lkow2=GNYlsFN)LZA>}7lD#f6;~9m!M+w_%r9-AHF@bW1Xr=+kO;Xud+kt z&x&89gD2t8>*siNBCUlR*c9~XgKGWhrCPz{xKe=?~cD72rz)$ex{p4I9N0O7C$zC~63+cjLTptLN@U_M1W1q6! z!smH}T9ySi|7q}u??u^Nl)X)2pS&^DL>o;ju)6b`mrd7h+wbp-4$V9t%m=7^?~QDK zeAdcH7_D_`;(%O>MXQ8R@|6y9MH;;5l-;nqC#?%C8|3GlEBi6*k!yD=_MtmmytvlU z+~*(_=5FZhc3S>ZG@)#Yw&FKxlaTKc_*i@Nh#S}M(XZpzk$K=1JfrM1;SAzqO_GSm>2fDryEf5Hp2p}~1Mp6I$qo#}|+;StMsUb;z)G1(hdGQSQDwBip%2PHa zo4ab0*zw0wKsC;|pUC1e!$e{_VxN%~e`^MHv`54;?kfKRRx1$DR z&UZfK`!KlUx3mk@2m?@@xC;%OE>t_P`5NufYDCnHnh)jMP>&Vj>Z7!Ip+}?vT=`p{ zAJq35=lJM9SqowrjuEJia;UDkCC!~-6qy*VxIq@FR#xu_oGogq$X8}!&1%R%t4Ov@ z&et{rIa693fL788nBD^yyln_{gDu@n-vZGx)1cvT>tJX?WW{PFJ(q;O%?&(a-Ov6p zw)Ng9vqa14BQ=*(h%R$7y#SvpW90hRm>Rwe*#2|#lSlld|WW=CH{eetva5iZsrgC$@QFo=#jUfNyDa)Ez zgD&Q|WSNaG`U&E8e9z9fE~OG^?wwQfn_>eil#;hHHj=WpTP3Ai(Jl|@seKVQxgg>S z+^|KvpSgm_jGm4-MK_;uf(o1*-zZO?eKMZ{5okVrusX6N;OrkAl2iRL={;PWOrXqP z7~R8NNp^-+EsUaB7tkl0=5EKbhcD1YS?xs)OAE!%3C9J@2<9Wb32 z#`zYXg)x0S7qietpqJ)=u&pDP@d4{oq(t6o0w8@_;`}O(qD zHG)a&4!DY^wRx1+z0-jH;CFi!nGD-w zLcSt3IY;P_@>3llD=sRnhB_;Bfnvvd5-N!*1&?2J#AOyxHn|Ywmo&Eu1u`0l zO$pE9js$tQXjcVz8oHgi5GvKQk-|&SlPD3OTAN79bMY)uw!pAR9D&6JvX_lj24Rz5 zgBZO}n@qp<93GaxatpKxR8aKFeg}T1(izv@|>dka0OQ347X854hTaee{3ppNE}y0!TV8r|VlTo(wyJk#y{Et~nrgg%4hkG+hajh@%}P zhrI@$pfH1C;uvW{!RK{mQF`ufE=+0&g&yLrm_J7>PJ^mv?4G|>`w_%sY(9M8Qw8Kw zNW&XCjAtr|+Z|BFpv+3)tDre_fxTz7aBwba?ja^ljxM)SB7>t@ zTi~9!6K4{%CehfA!tgx(;rAFr6PE{mYGm%H%Obrzn+t3@F=x-Q*J{4|PgijrEa zvTm=9Z~`l_k0)P8Nf}H3YTErOJGX`erszWBvFt3Xlx)rh7cWP23a2^ zZ^6wkz~@{%yV3#vtAf7gi?m(y7bbP&(0A0X^JK%l1j^VyJ2`)&{hHO5jv zD)=80KYs1-=m`8#nuyxaFXi>|&EVCU&BVIMDs$8(N%zH;TyFVQouVwVD_HHZNnEJ< z3dhn40oAd`t%v}!?si$b7XX-QL^F6R$nlUZ+2lvi@f&6KmFiXpD*59j>Z`BQK~g(8 zg+!_c4v%jIAeWp}jNDYsyoa4Hl%4x7L(Bsj765G~Y6&!RC*Z2ZWepGaX^&ApUcNy} zhdHQL^Wk1=mSiYm76=qGnfMxl@{R+&Jdyp0r-t1ph|vkWojillcnUv+czN0nFv&@k zzp}DZlVO1uEJ#aOe1L(05E12Z+n53l#dPsT*K76TXGN&r_Z>RrW>%ANM7S$zyZ_RG zivykVwFqw(r6`1Jw3egc|xpcsF2b??2@h5%Qsokz;}D z3BZ7ao0N(O@{rhY>V6Xu;ce5}KSeFiP-jKQr&E}P zRu?8ixRBo(3#j^(Y;vb4784a>=P7Q8kR9h0?(e0K_w-MMEkTd7cQ>Luti7j&Cdwje zZ7O!aEI=|I3o}<}iN6UpSSaN~7o^ycBrw6lhuoMrB3#~Exf&)UJd%bCyL0u@%9&rl zE_879R(EOij0ut!HA8(Y$Z)%reL?hqlkzS#;(yH&X|6k~HUYA5cHGIs@h}+$>A?%b zfp*++$2SNBCn_Vef$u({#amc6z~8q5VFfAsy4oF0vBS55Lppj-HLJ z0``5X-_$p053A33QS=#K54XkZv*c^Z^3pw|lt$hkKBUH+kvBz>gl#cBJV$3C+QTHbXcyme!xaJTBCF&?krdcsUA}fy3 z=!fR?i~tEc5XCjaPgX*2sv&M@4ECUm(Sp0PbCl8-rAnmdjH1ET_sXQVwqU^{tx(jvd{rjZ` zO2hF!pFDJvy2>(*e5-}d+Cu@1hI>gt21F6@9fTtlJJM!y6tfkd&w>n~g6k7~Y5F(oWPIY?&aGK}jPk znd!tB#pXvS97st!l5M=3*e2>AM~2ndBcaA!iGok=ndFEq#%`|gj0LG{Uy+Z}sASRi&gy2PGd(+%ia@dw z5?sat!4ChT9XB;GUp|sL`2Tz(dL%9<&! z6eFbUwoTbdM%h3a95~Z)Mzi%f*IFz8KsT;gzQJ;yw&ra?J)MneR&@baUDw7&voceb zB8A_E=G1ak8(fh^lcu~xri(Jr-jC^{r@au#!a!@l)ufT$5$rOp9gw*XFC!N{NLOkl z&r*&L=m@;`(_;q-(U!6BCgJkj$C^3xo93U*VNdtHQpQvV3eDJXPL`{EU>EY^yk(5_ zmSqMukwCUkl5t;&{k%%pUmMm>s!Z}uGNPzoF+ygKHc##vb`ZWO9y64w!mYzs(ro+# zb;Jj%2xrBMib>yXO4KRkc(?K4J4u|7v+A4S?V`h+<8^b*{p{Pz@y6cc-pg@0GtkGq zA~&d=qR-LxvD7uEd0MpGTp>Y@w@iyU=|vacHF1Ac9>zuniiXzQ13y<_n`)f7%e3=f)<6%Xz^Pa_@UNo;VuG+g7bwp#&7pS zb<+cNnoOsMv$UN(vb%gz@piYQXsNi}1a+JiD^sR9x#haasvw36PK&`U9opat3iZaT z!RGFLb;Y$s#gAFr_F`pVIU+4%utaBwz~C<#Q_igBNSMbm4+C7@$flRSP2yBRlqvP5 z@`dzpElSW#SXPLvC%*u9o^LHR`Q9yJL5T~-n z?jp`-yDl9jpk_)7CFOK+EcWxya0X+hfhHaVN31^<-{BucqqZXWqV6MJO}26xfmMTF z4ct!WR7PL#@z_38Kr_ArY8*m!B9I`usql1>voc0hfqTTa;b%|a8b_EVk}w$}2ft?z zo*@$Id^3UG(u-}3_^soSe1<{Eia*u4!gRnm;p4sA3UJ(QrmBZty0-x6jbwv~N8&{M zs!ZRS4Z}rPW3l{%>nPQ0K`#Z@x@qUN<{1)ZqH|cv$Xfgl=Rog(?)pEr6pg@L9fPvI zsVQ(!eRJ;^A@cJB4yT1!WB2z5YMxIwGhbr9Ue>`#cs837QGvlUB4Rp{FdxFbY}kH_ zi;Kj_{ENhZRiI~y0hFFVEbHo(k0d|aJfL0tO~-nQuNnz*(HG-B=5AkRR<&?VyR<0b ztFzWJa+~J6WQYAX`KchUdogsuDBL2nVbQ*gXzW2w0Zn5lXo-GZXXQ{nn_l9eH7>#1 zXtvW={ElseWt`>#dT0eHzMyAA|9}LwKI+%~qkoxcF6T-BA8}lymD&@8Ln_f9`BY&g zp>BnZ!PEQc!&{Td;cf=B-0NCm&)Z&933k)3mL8Q?H@YL(OIcUs-Z*a?4A3azTJP7P zggl8PsHn`5V_m%rP;=EbxPwTil?U-zPt#qe^}WcjFgzw za_#m$=dc!S$zo@|E81*&cw6~Z6#A1*9ZsAf~z^dy=?xsd(Mrx@FiIh_Us zuXtoQW%xFD`Tv_wS8@-}`!il6a7nki{Xr>t*_=cQm9nIb%{|Z84_AasIfg%XCdOe} zU`pq$ADsYpjLFr5cT{`LU};V(^nE?L?tumEzo>m>JiQ?dmxc0XSu3s z>J%VFsdEj1?z0}kZQ`&Y7>6eyd5gwiRhX1LCeF>`WI^f;z;TpJ(l(fdFrXA2<+w7^ zTDj$HPAZ*cJ5(7B$3oxBlOhEiu;iE490Er(E8U9@Hy<0~xSXayrQPk_Lz>|?5A~I7 zr-1&QHwRsChxJ^KJOiYEP5CvLOl+|T4vt>~^mP?L7v*T1@IxJZu9BI|f zU}Bodx#(-h!%9O3UttkSO|1eOV;Ku7EyqQpamvsp=Kje~gL&>J2TP00&Fw1E!O3bz zQHz*2G_YJV7}4Sbuy!~pELZ1lX)5vSQ%=vDL|#RXa85n^N}xDc88uMB-r!#Cu8T+@ z@3vqITCVcpdeQLsBqc0Ih=e3*fnaUzJ`AAt8zoHJ*(m`yo$goOH6O!nIC%W8Tg_zq zxb$8&TY<^m=z;%w48Qi8E%vH-)cZ%{33I!p{=U|15Gg&b!rzs>8#KN(&idGJeYqJd zRz>(7fJE!>aGltOhB_}@#OzT*d&=6tfngZQ?;6|Mbb$@IT7sSS9gD-XjJ9H`GjrAUF_?G zFGAG|8b6Y^NIV=rcr(F!I{nw%%^o|EpXKl_q5}js5or)7~GbTrmJnr$ap_$`m-zg)#b#6>s~`?H(c+jf`;L=iiRmb>Yn|) z!XNFLTs9OX0(K+A;DAN+Q##_~^o4qwg#K5njbe(!%9-oM)8@|276abv>C<<~e0Paa zZqGcrjhA&?uN*)<-W&g`Jxq$Uy2+ROZrvvT`xd6=-R#pBKZ1P52Fvv)KO*%^O$=$- z#8vM9dkiu@ zs%h@OM8&NgL`G<6L!fIAzP{}#fgTu1$zxXrQ)3?zi0Zx*xi5K0s&4T<;lV2(Q&n6r z5bd@bKAoy;7Q^TRq_o_9>X@(kFL_VDzqm^2_QLgHqX2)<{=;@bD8Yd=P+i};^(@pE zJB5ez*XxGiWl5;<NOv+?bB5le+&buRXFEi z9ZJMtED0Da&^*nbX(an6$F>V>9@azq2|WuBgqqm&HUd4_M6T3fMQ_POw;(Mj46<(v z)LQBvOarJ)nPC(&z9XL2L$hGal?}6WO+lRd!ITd-QF2V7m)e$9BzMmQsdNeh>}s@~ zoEHZ%tU@}8bQMlSo66O{4COF2F30WdEIeB7s;A9KBcmiIOP(5FKOFrO!V!tp$^U^23S&yZ;%^po&c z;L~KhCgd#cU5l3JQ-#}MxhFaZ<}B)I@$xJ{O|{*x`;jQ~Uok!ZY}=q)ZB{LjT!G|- zs2agYB2R$|NB4KR_p~jXIPYSk7x2nX{Q-7&#sT2WSt~m3fW;QW6qde9ucHCP5oinD)m*~C9-Q;9Or59c3NUde^r z-N#e1-8wu^uyy*YCfJH^J>#vfF_q=8{Qnp!ykzqfG~z;q1`n4dQI4UC@cxJ(MeppG zQJCFrxT=-IeizJSj-d%f=lq)SkmuC1we^$M>!Q;U@99tDPX<3PHsn2hFLq2}8vZ2! zOUl^z+s!eA7DiUj{gtDdmZYU`$0nlNz=s+RN=50cz0k6x`zhN_G!DL+I^VQK2On?{ zvzBgG6YZM^v62edQQxiE+Ov4|o#n3?2TmB?^3!X8NACb0Ri_I}iXtZ;$>o4-Cjif0 z!5#1Q?X7&H|5d%*ZaVeK}2->>eQ;pX8OoG5Yu{)jXWY z+rY3NT5xVWS{dL`#3(n|oK#W1XkY;ak*JeAeRZs0MY@^@oxA#Ad$C@h)rQ!B1Yu`sFxS-M# zY;4d>ocK%>f2>5?H3{}U-CI+3eq=+8_spXHyfLT=n8lyXrO=d=^SD`QYG^+|YheYR z+I~49VJ+DrNUw`T?qr-x>&b;jq!AAxd>Mx=S${z`pKVk8A0#k&4vodjn|*9kTD~yTzNl#!Yn0@Ig-Mrc7N&k|T?fT{betkx z%woI&`e_P9x7arhQMs4L^tc|rq;B%Rs-C(-c{r8$zjx*}&L-Cj z8{8?-Q{wO!*75&c33%?_TDWd4y8S~Z<#B7Qmvw7qe}Vh&yQY3-qQ7P_U^BD(<>|yP zSiylLkvP9KcUo7z1@^J@YzX&iAtm(bicO6oYV->=>a@VcGyYB^X)(xh3cP8#wV!pR z`<7>I*%1;ir2+HfUK4}})Q2_#VfIooX_ruCIik(HhnaV=NwFW6uaWFfY3Vfbm-Tvv zyzVhB$ZSy(nYoUQNnGsea%_-o*^1#W^+3sn(5);b_w1w@Be3@#-dWzCg_hYmCN@); z6#fW$$FAWiUwF;-IAAv$H@x)_5DR5f%I-uCTT{$jZ&%m*7#vD1d;?dpN|Qx!3TGIIXE|kBy7Z^Jt+FGz<~HD(OO=jw#Ik zOh0`wRyE97by|98;a?j!PrJH{ai~(+b^9Kp_v^WN=)#9ZnrhvI9n-q+Y-*+7$vHph zRdrx=pX|Y`%m8?3&~`PdPi0KSRY#fa>XO8xZ2LFtETA^mHm?K0@8TKUyj%XA$l(7T zA11C}@&J};*<#E;LaeSQ#nXVpHd5DQoAc)3b-)uOgeP=-QalAE11RyfH6@ydFgP)b zU{sHx{g|fv3bq<~XQvnuA+9&fP8iviLw8L7&C}FS&XyU%3O!d$)cR_~p4!Dxz`Dz( zQkFl;ch5QW;a=PK^|YCJAUqvnHrWNd9&utymvFn9Me(({8B;Mw$mr0xV+YZRu1SB` zZD^gyWc(37VMtLjqap{t1Dq)IMh|=6UKVQ%|&upJLlt-NvE2~~d5-hMJtk#<6IBNL5 zbW6n{&pCfQT%6QAm&QCQXx&iIvtL(dgEQ%RiP~dB}?(+~Td2m5%9XCATD#d*QWpNMzWM zzZ>tL*C0F}jWKzIwwk-M-d&<^y0O(Nb2|)E0D)BGQ{t zmYs_#thRL1`#3xtH^^DPLaXIxuUZg0Lj^hSGEtlCz=-~~;FQU-j*Es-Zg1y^_9Iu^ zHND9r1V7Wnsj1^al&o1)O|!_sO+URL*<%o6Z0PhQHLHCbateO zOP?lL@1isGFzv-rk1u@l`owYf~>59>9We!JtrW2B`Ia7vvMW5b| z+v|%G32R=gqwLLMiiYCabJg7m^=wY5YbR&VYkQZ+bWdN!W2&>Q)_?jo?~D?k_4qaM zl=U#>AHn)>3Y7evd;nemxKju0MS&uI6OSZ~>ne|@5(6yV;Ab6=#t>9ESESS`4DXx7 zE2clG&i``k>|*q~QL(~wq7e*u51~Dy5arO+F_RBPUIKfHe#%CYSc|l$*2BzOMlonlqDFL2kFh?claByU@rwRZ7(lARD4D& zlI|)gL*fn~6Zhpu*YIL%H-NTtZ5{cT-qSfQ!JWY{1P$uA72+XTL^(5xvU8tG4i#n`bZy)RWf@b~uY& zoKr{Y);~Uwt9d^-l>U#-q3?DO=LJq7>OH2h{oAXs72`>hJN-n${XBSn_}2C&u@{ri z%Y6f~QSsv|*bM(1nfDo`1Q7v_@9k@)?oUGh<}#ZZX0NazmrxPvLz*s3BFp{4z9uyd zL)nn3=`9D()#uxh`a?NE_gDnoei7M$@bHk4G5Ox46PxSdFDtKNLu_!5ZMV@>(5DQ@vc1>YC5UnpKpg1ayM2e% zI1nJ7#s&ND7*+9{Lt^fEs{5wZRF}zHxMalD3c)CIf{O;ELg*{3X zxs4eIm!wNlC9&99SNA+s7RG3mRef0l@{DNfBzJ%>B zS^c1*p`{+3C*7MV%4r}HA?6&eaq~{cK(}YAvfIem>vIBRiQVhOKS{2ODK@m`@3@we z`AzDV6bT!~A@Y}WLPJDf0eyW1(wuNdf5;UYMF7U=!BQ+5leCfbm!?RIFZZyH1ewyW zWz&napSV%M(zh?6)KWu70^U-25|Wboz4c32=v}KXr^wL6Ty494bd9B|cVq1-@O!ijaA?TyYBdOh0bw^ zx5Qj@*0^v09>|dvCE6Qy9OaX5-g8~3PUf|Ic97XHJBHrWI)2~>wX0ZFe1@g|ngH+- zM)^fbwhsxvhJ?=ja^{|(PtJVR?mdE}1RNKxsU=D1USBn`Cmt&mkHk+KkE2i%gaTuD zQ#n-eccY#Ed&J0r8>`!_eNs+oig1GV)+hH(x%uS2pOsTVKJi1sL-*-L;Z`Gyfi>{Nr?M>!c3oZt;kq5S~8FbgX_O4Y2*MI-iW|)0P5~r~psFOdmL!e1vQVMe{X=q3WG5XF%%3a z(xI{_C#@jo1=LmR>#!d|3Ei=m&I)p^({=e>R(aIPsw$rwY}|ae%AhH?KjB{LI6@^a z*x0wt;}pfPz9&bzPa<3rEomsWxAVu$O7#O0A{9OSwwB%I6+ngsOy}xdqaeQ~431y7 zua$JP15o&{`oRC@rO9DAo90Wll$KiU9tI<&WEaD3=l+SD=v$hWBf-s*n&)fjH57Sc zt=S*&$?sj`Orwre8vE~J5QMq8wfQQKAI#EZaUx|P7$^&atel1TxlE2jV1_6pGy(@) zS!_wm+Iok`8feSzv3i6KSu5Ol8HHOXh4;1%qNCzD0Do)RW>*((? z%oa_=+@_J%wm(mQZLKpuu2VlwlR%IgAC*%KsVd4u5Mk>#QROJk->p8>G`rV3pk#df zjMH~}b9?$)ZAe)D=3%fuC-;BAO#jb|$X3^oFAi)nDEjtK4(x@I;OrPseF~-}u|nHM zN*d;hJ9qU$NvI*E6?sQA$#R-zWdTEQqT2cOBh(1XXC4=^JB)wel`ilmw&vCr0@;FS z1l^&O3usH^W0j&b4$cjha7$)1jQ3asY_%1XEPaw>y;XPQGmk#qEmX`3G9~Ik!BZPC z5m)cE+2TYMU$SEayH6T;s_fbYWli2%HxR;#-#RqkKi`?Fi!zH*HO1t`F7h>d)Y8~C z*Lu%^yTeo18S`%h?*Aa!kq&v54q^X6#LORf2i1G9x7=`)W-FELR;sbmsj7xPu|NM)Msy40OpNJNJOzwyD3ayjYV+`ER`Y%#620$}J{8wJA*-6pNH` zp>UI$rlxE_)O5E)@O~FK!TfO8Oq8ZZ@B3=Gjp{LSag|v|%P7{x`C~xwAm?0KEX_xX zORAuQp}M4GnW^W92(Y_?SeM2{BWGJOo|5(Gy~Xq*zV3z{TY0r7mvgDQ_;h31Ol%yD z0{x8IpYk5Ee{y5G!M;!j@T-C+{~+Xw%@*Q<@jcy+s0W+y*{SI|UXl{H_wXjpIoLI_ zHAaNO43zkVR-3$AtC)f-4d`%6Fe5C(Jgg)S(0@g?^M5_gk>tg*$9YN^pFIxrv&V6C zNwVv~*?;mln22n&g_L#QNAuf?q4pa)o2%7YYPPnTpYrXrL>ivPBH4lcho}Qi1C=8u zMs(hSZnO2SrTg6ep^>6cap8}RPK0b>)JZ^68 zyRX`jYz`{&)mV~HqqT5uvZq4Xy-0L{)8OD>t9q|kec3DjCXAn%@f}Ha!jYv$5uy?F zhhlrO?CEFAUVE}^&Dm03!#$CpgTB)8btrFHBI0ePOtVjSOV5@qL+9hSRYhKRP+z*( zUA4tAETHw}eA|DaM?9!%a{kQe6Q}vZOS~!Em=ND^GH0`qbu{-Jsb^5Sg_?c98UB^( zuq*ucD#EGv0QQpPh;q^9|H;7FfPlD>nws0QxzadzD8k_pO6>WKH&dL8qollIQz<+4 zmN?VMZ^Q;yCq4rK9dmyjD}MLqRPbL~wx$urQ?AGvQc=tOj(5GMw3_VHF{D`*4Mh#- zf+(Ab)%w6WpxT9YfP&?FS3V}zMAI57`4RJR$9Wa!JZPC}Jh!M_Ia=(j^=7fTvVP);Zo(d_!mVS+G0;7J z`VNbIAV5CtUt&Qg}W6_~s&CvjOOPEUk^5wKF}PZDPIni-RZ8LF%~1?}~5SPej#N#mt?@$d*jp z(E%hl)wtY7S2hai`CHf(^4JR=DcpX})ad1PIsd=*4fGm{JuwmeZZD0etp;j#mQmF< z+B0si?sDOn=`S$ujk|YE&rgO-{WU_~uW25O<;tQ@S#GS*9;*GdlH1x-1TX(9f>&;NN+i$AQaYgpV$=BC zaS9-w3|m2Vd3<=Y?5Orf$90v--+A$kIJT9P}KOTb(8g|i0?3G6MxI0ja|EhqmxCz@_F<`*s55E%3&i=ZgGMElj7xd1nL zlS^5cZY~M({v%Y#oavomDPE2^2PVJ+N`PtZ>I)hq z9h35c2EG3c4N6XK*55qart4K>CM9$A}?< zL_!E(gr_{m+TDDW?YuU4&LpFUiWQ7z>Li1Gy9?y;Jp>pGYT_2&$C>{nLhTEY1{<_m z%)8KZN0TEBU(+vGm}a9ej?y~X+k47$5=fq0GDuvLrLl>nf16yEs#{VK#OyPepI~IkAKXB-B>%geTVh8gjGZNhZiGvpg93=_yvcBhWNko(Rc+?|2c^G?%0~l z>u?lMGFMrlqPyuZ{9w26S0I+?TU;+LD#d=c|8HYZT0vA~q!@g7V7DvYh4p96O=3h1 zO0mF8mmB2G>6KAhvFZ4VYxpX7?L(&3DxlN`>{%_h6c@C~VjJSHa4{PPC|BP?tTbi>DkRH79USJ_98DM3 zJO$(-lTGg|IUYL{*q$-URi_;3qmB7z&uw@^zxYz<>3?xN=TUuJt51&SC{=K6a%TKU!;>hCkPe4X792~!-y+h<0bco3MRwn#LwDO7GQt#T0&O9G+P`ZJ_ zp0kCm)s*qc0r6}1SE;tBUaS8cbMKtu^jcMMNYu0N0+?YM7(b~Af&+}J~G^?orG7;hV#G#4Wm&a?G0 zM$76i1&X&)P_1$}c z#wgAHwd4N(YZEz`uYcAi5hL9gAO0bQ;;yx+l|&eRY{aKlOV z0s1&$y<;UB+&jXL2Oq$8{`<;=@d2;UR{k1$Aln&@fIFsgfn`Yys#28J#<_vI)aX zdx%k2+(HvAb~HX2krp}N9RCv~Ul~8MCo_|lSNVA_mdHGyJ>83H&2FQu{e@RZH-9fD zbgud-rPmJpioL%AW~!#Ae1=~VRjsMlUF~}ilrO$8_q!bd=A9(R1%ZQVZX)ksLZ$xD zv()*uWoq0zurKECc`yIEiDADkMk}yIt9yfoKn6<+a~}7MA_#RenhII>q!P1fj(jGz z^@~Ox-Ig~P35glilf8!|u~*6Dn9jph!|W|=CsxMtPd8+pX2ABtep;nnOtsTgJWSYg0Xr_d4yc)D|a^|0wpBt0eC)fqt4Ffyhh5Z_!WLux@NQ1&7tZQKB(5^kfaE=a(!3g6$F=R&SPkT9}?Z zJnU=;jHaut#uq#BLZ=e*rkz>+%A&*Ou)Q0SuC^VUn}$l$=7X)go9C(|bV~NEv_o9| z8M~d1s$1MDSwB}g#HQB69Y3ge#j5Im3kb^$-@(5mhkE-kE`Or^pJ77rJw^7-y~g{3 zh#gY7VPSqTe8x9P&MM^7llo7QedcpyKiWH-miF#bbs>YAH7xArn?um5Y>@?p2(lEF+`AbQs*1u3QLXv zQY!vPGKHvWkJ?_gbBl)EV>012abbhbi^Oa5%?Oq_TtIMa*g(xI?4|yRM7l@lzlzD^ zAj`ZYWjM4LqDpQ0p$!TdqEHc8vgJ!#{&%B^c^mJII7ER3b#A>AT$Jlc z02h~am+EPlK69g@TMZ{OHj`;b@nZM=6N1tY2$x?tj{q&0%Z5{TNJ@|FoG%m(N4#Zj zoj(F3nBZ4HUtWPki?TxB4tusOkA}6>Sj;M7|CJ0`b;}nTBbBQYmHi(P5@P}QTS+8N zm&jQgHemyc_rz)5H=bO$rYB;Y#pL28>GTTY-azMx*F6J7R#u27syql|gRj(VWetbv zhJF4ovAaw(kE4VQrm40S43I0SIhY${?=CJt6b=7aNIpO%gKFXCgBOZmrR%EEo+|)< z>M@P1LazInSzNJ!S#>_JZkVCVh_&$QBj;gKo`TuHZhP0Y>$>jAko}L)M(za~CR;Z> zyME<0gZkyA79N(RPt^50mh#CB#hmA=%9DcGEORH1tJniuTHRZ(x>eOoy zFRkM@G4OFGUR8=^NW{QB`v3bRqYym$EzWKm6j;k_o#pB6 z--lwh=gHgqA`meP`)DXwhssVvAjR3$=8rEsY}F6U7e{$1h7N=FcjIi1VmQU00?*>f z9mu+gBUF)`(4FCk8APU>rT&^1_RFzBesbUK#70e>(No~`OKu1a3yhEKeHjo4=TS}*j_qc-f+Kq z3rms%^5~cw_VHd@Z{B)V5r)BvD-Z@3(<$P#0 zQBm6phiDvLT21D_(LIyzX z)KFrZYlrj<#S!d%s1oz+I#PW~)b(s0y;T55s2DGax;Em`)(aA6;~anZjKo!M)%Dxl z>%^1CxOFhahURQhv)acaAN?gbhhq5kG|Nl5l7LD@Df4eI&4!mlys!0nLUeIlB0`ckmxgq`m$v#jT!t)=Mp}K=QK>eEygsPXPc| zK&ZdH-nMd-*5SFS`WMR#-r*sV?KzU}iHNs_g=CUnj9ox%n;r(k2TGvlT_)RI1u>4z zZL>>@3HGLooB=6PT{l6!3KLdqVQnZKcYUR)mAF< za%AbKwBuABe1JXJapc=9PiN#$AGhg09?`>IC))o{Jgv?yGqCH0(_F`6KQt85upe5o zCys&Q1qilkF{jUgkZyHz*90dxhKTEmzO2S61Ss3#9mTa`-DwR;ff1-H=G=Y;PCgor zUrZH-RfD0yt*8+ImIEWWY%&tm60t?AuxKeKrN773f^(8e_3>SRss8ff#KO;7Sjc19kmVUi6F?0Sfj1F!SG@^5QboOZ@_F&QR+AKp)SZ9fd^J(~aY^(3cg|9ze-# zc?C|wU&_|Hyn}uLpNH3~e^JE@QcP{ZK-x&5aO`NAaMAEP5c0y{R!QI!mLmJBPOj(l z>9bHsS#rc<{X=$ElR$v35p9!ra@8+6KJKwY3w|#B7ytyCK*R~q)U5zwOHuFUm_laz zy#Ihsa7#Ed)5j9RC}Ogpsk4UK6yT=A`mk6vT4LKH00npI(3*#)Ec&qVGIa)Kb-eE&cq2pAhG~a=MEsYENo76S6RYRgK zyX(8|y1d*Mhr?&dpR#r><0A4xDw>Kp!G^@f^4oo~#UJ3J1+Kd*GNb$yM^sP;h|&r1 zvP&=Ympv!(b;pO`GE1i|;(ycuK>oMLM_Co*Gw_z9xRCz;;lZJ|2;-nHcyPDc3m$AFYkJ#O3{!U8tX0@} z)L|9lWb~j`vnbDyXj=(4tjFYN3+So0g_zz;4i*^Sy}+oecGILtT*~1RX>WF7m8JU0 zAsWotIhI+;PLvHVh}oFF+kpeI4y zM&5fd^!ym*$s-Lb2UEYx;jGEYWXSo zFjxQ~#3KDdlnK-1Q8NZx)$ntI@#@cw6%-c;k5=j$^;i`oVzwQ*EDuO>irD8H3#H}oF(ARGoUxhD78 z;77;$8zVWaL;DT)Tcn!Nl1>6~`GM&H(X|>`XV}{A{4v{ZFb6x^FI~l#`)ZfPu=okR zVdqz%bruUWmttHw!~M|3fpOASJK|4yW`1n;nzTb~y(yPnR$1KCE)D#F0l;v+Ta z6{C@uH{d_-TKRcAw|}82;JINQ3jGZ+dr3Rw19*BZ5*Ak~uItC2IJ$`-RF}SrAF1r= zhyksR-tk=6*DtS<#tDJI82`fyK)D-k&I*u`*!fmKA@yV1QvUim2wed}wVL_`mK-#e zfNgWz2q(Ca$dE;8eknG%*5~`(wGv_4$03u;C|^rKoMT5hnldqwJylPxcuPi zw_YHiWBFHAi@57Q36p;bxUW19cTzWOk=O}+6Z<5)xhL7ZAt*qIR>QeK)*?5OJ z!L39>%F3Q)$J@Y}cQqJS@5W?&ISJK`h1D@W8|8kUpmeFWtEMZvPQ!{lmvL;TO`nBB$wQ?U2jS6~1X(`xz63!eAqObUf7E$tMSer>S=va` zuh6trK60ykynCi%t5;*agW3fP$dx?}ds1EudlR9LS59BMOyN%cFHK=)&L?cxCBzVg zX`%<2YO8 zlZas^L#S4d_uIZV(^VbvA2{|`jBYC|I^j>Bss~k#@15xx%yVo!7lcxt{kqEw6CtAS zbYbJAAk_cj*Vi7O@}JnJ{KxFS?@IZ3Y#G9SQQv~%~)2Jyq z7r6$`vjzPi%4FAYrY8-Z+tspdm`JIDu75xdFeN=UbzF?PEG9Q|nU<*e`bDG` zgNEy0qLlMi)3HqOA;7V|9$_2&i>O*pH{&xuYk2jwG=*f^_oe){XGSnGX;bq)TOp2h z?A$ea-93acMcwz-{60sO!}s@wi*=P`W|_B38ebYpBy;V8;7j!EbZxu)>bHva-VO_B zY1>=~P@R%=O&QSLtNO$e(xqhYJqMNNF7epn8!jRF^DouNgQz~P49Ly3^QV|xO}8^= zB<2@{zPR}_-HCZ;zxzvz{)Vmv^!ECeLD}|#=o!hh`m1{V0f{X?3z;c>Z9RW#PI*dq z(w_p=UgtKM5rqI5At5h>vK_8#74qQ%IOr~(%mp?QTI!_v=}w0z5TH@ouR|6HzY&tE zVV=@+Kt^&WM^|hHk9(4=_q5UHA~Fd_mn9|z&g~D?r$ho5Uo6lV-eY{Nsf{lrbu`?Wydz^+U&s`~Rf425@%rG~JyTx!i_73D2+_wD8(AV-B zMWt+#UNZDLscXH;R_DgX-|KBB|0WONUmOiGu3vi4NOZ@6l2Nm^10K~7kov~7_68{ZoZidw>Y>1)T0p&9G zi#q~~t=xv1*@p@;!4;b-vogmK4b3g`po1talU|k!xu~g(dg-fiva-_Kgx>{-?sFRQ zdUa#JYvPci=(hIanYVscgxwU5as6cDJ1+H#ju-ypdBbBb#C6(~>~3j?gv=9GySyhq zK-Sdy?&MycPQ)88naH!0sce&X4<$mSyHEw=WA~E*CX?xymtQ+gju8twpe%hWacOY0}}Y%UHJ=pM8t9% z3J$6VMo5%T0g&2rXOuTl&Ww_*Qs{1SlzI{C03{tA)sg63gIPlf{REqjUv~wa)*gM$ zq2ih&pkfqNA&E0go2D~1*AS{q>hW9qTzs%ll*0nkUDTyGo38!LY!SFQ391f&z;O*Ot5=J zX_-HL)CV)_hTF9|daIvAyz-T1Qz-n4ne6I0x^w}8apTYpWi*p5>iiu7!7V}|1xtHt z{=`Mkl(92?m8)G;|8(^|ploUW!#c-}U#CiM#}uXUrKC>d+LLw`VzY;1T=|#LKIi3& zu!$)NCBrTO+dgxy38sL)6UM9i@M z4&phlyORIMPU!YYhAGdC1SlHr5Fq6OgpwGcBH_}Lo5~Uzw-F8fEi0(~s4p75G*8Cg z^PzpBn3^Ko@#sC{lGEnwc$27`+3aBf&NH#2b2ch`F;el8d*}B+2ygmSJSb~?{y7k0 zDi&{w`AJOJc_t>5NXMve78gGWQqAU?>?t{?cn07M{u9F1pO1&XHSCedu6&yM(=?Ai z-HKM+eZkM8^r-9NURsx(v}rYvL|;fSL#zqTY~WxXuTpI=eg3P))6OZp=N40>irVg1 zi0eJ26=bK5-r=%nQ)(%f&?t7SQ2WmA%^b88PqE}uJ|^8jIIiO~TJ@66Vcv=9>Tupc zvt!!KXqi)|V(*BlSdml9iR13Cia1+W-;PPW;#gmffyc81ACd?;MK5#86YK9-?QB%t z;&$`xD`*~1zP{?z^}aZdWhf??r_@Lp~6_WBbIMobV&fXEc8 z>zUI}%RqU8{?=og@Z%9J_~3uS`Te&54p!fhM59nk6mcOM!4N3H0@{+AXFBzkP1#YI z>nL8;DMQ!AQ!Hue6Di9Qt$@cEP%MJkxYs8=xj4gxIPVh7Q>XQH+x974OnCCv#ZBVu z7-%j9zBo_bI#}}HjAoIlcf91Dv*m#rsV;3MXXji-PC5p#Rh(xOlUI^`$2P~{_KYUJ z3K%Y4dHfTVb^ZewKR2B7;ctET@M4L0cp`lJ`W_-w^9*}!7w7XPnPbN(yat)chxa-Oqk! z&Y_Chb~x#8q@`8)KW<>P3Lsvna1=+@sB_l{Z*P&Vs@8$n3WNvBKKfMKC26gxzDv$8 z9=v0#S(N8Ww6lh%)t}kT5bnwl!jh|$~f`3USOlW&yx{$m(o7?yky79~E+d8}>lKxDiG$D8O zV5K6=eTIJ$g-L!W(cn%%jLcl}{)J5{FQ9Ni=s1PxXge4YgmEERquQ4*vhG>a-7em< zo-iD2DQQL}Z>&UM%Bu1^fTY)#tURhN6CF1%<^})>)wjD|;~|Wz*ZabNVl3rL(~Z+- zI$=4h8$rx1me$4@rz&+EhcxTCV)MQH&*JW}j9N}{3dtoj=w?Dn%m>itXo>`@fv zCHKk66;=OJ$L{|Lhw$9p-M!RI52lh_44yHL!@maOXx^PaWqL7rR|f8;-~V{YVtKD9 zDoFZ|HDXSW_Vh3vub==RA~IZAW6K=u807Y^e(1mpz^g|bZo=#V>WQ69{s?d#p07X} z40^UY8h+_>FaYkP?$%>{m#37lX0_Cd-3Nsv2ZEq&_<508lvuJ#(&hE+q~9vvSU@wm6&V3XB|1M{?nMY85c zxQy5AE@n@8Jodk%&7EEEy{t`H=hWCWgDKI!F)PSA-h0az2v4Xz4mioYWh*pk;?WTF z7Z+(>(U&rpyJD?bEv!~99OVcA8qx2 z_sUc2aP@z8@|tVQD(sgW@oEbMod^uH`-OcxO|1+0P_nthrzoACh*I;^AF9ZC4SInu z=I;jfCe%XI-VosUt_T+6&!K7%9$yp@ z{8M1xd6?-`AMDJF4yOjBe*p5^%mhuX=YA@dkfvI0SS=aSvg-UZNB1;YqG&aoDP&z} zk~3pBpJEr`0ZNv(uKacmkp@EAmB?Z4PMVZRWP${%2N zK%@0xP^Sa>>(|fJ%-0_O!p4mgdGv=}Ld)O5#(wc9K)8@2dWt)hqr#k23)zg(O=D*s zK(uZNwWC#*zsOn;*W?&|HW@N*7RMSruh>|qm=uKA2*A^+@$ChwAf$oyMaaBS6*S&G3Za&oYHv%aeiY$T>s&hq=#&%jwGm zNMg@Z*~CAvAY)rFzcf+of2F~Kq z^5DgA?YNoxvOD4InQc_U@@pOaYszq2s_kniq;zA`vYe3g&hVZ*WbSmjjdG`HO>8MCvJHopS?o{1 zUu<{`ACI7KUwI{|XJ}v7J7zda$GYCPw2tJ=c$ZhU(x$+j#DqG3;d=c-XQ{iT{=e6@ zc$a^n^ihEA;jwnn2_WtkIv$za0gMBibj z?I^`S;Dq?^Yxmf%_4wQYwj(b0Ia<3GZ?y~b%6lgtjgPRY%8i{iKNnY2+*-hycVJk0kYfm#^r*&>W2ZDz)$T5*4Ve z2fc$Rg?c?jmGyRY4#^D+F4d+C)J3`R{4|>CQeQ41IggAC@I# zwJj54nU6w1DyaFvt+I10VXx5SEa9~YZ{oM$gYf^)qc^y`0yQ_7BQ-DS`TcRQ|Cqe8 z*EQ4`&o)%{pvRuaf__t)oZ5N^joI+HyAPZ%iqZ){*wUd9DW=AS5Rc?)F%4JE_b1N z|BfGpw|#)On^eioTptBRj1OV?m9RuLS`kIum_N+<*TA!VbO%4o`*lMu~SX&(!TM*i8*RQdP{i>cJXs;y$1CIW&>%BuaNiD*m$$+m?gA znVME3XWJD(_y{lB8u!n$QN5L+zBRGIQ>8W2?UhYplFgx*k6}jTWb%ly=qZ(T_g<6y z-gn~Wl}w^hhqBUpw(h6>@TKoeoxXXsIe9sqGE#K}cl=K|P%z*T^3_H(Q3Seae^fgd z)ucbX4=~%3-9{Dxi4YyvCNx7~L1;VtnIk&ZOwdZ8Idg|4D~){5=qt7ko~0rs7W7Lx z;Y@Jc?)<;=IsX|<LdBF*%B`b2xf05f z)O4=eA{p3|p()ioE7f+e&uSVE7*Hf$}Fhh7}YL5&@E_{xRc}#yj$Y+<>;C&Yes+G z$^P}hX6JvQyF4aB?)&~!^Z5H@Z@}LsduLWE7o4`KSuWac9$l?A{(@%j=*ji3vzYKx zUrXB`OPP%e6y#NHgexV(+Lw=h;dq)Xg!@bJSEw@)lGA4 z73xjBBLKC0@Z}FJ5r+z|l^Y|#I+k`+HGe?D2ohhGp{==Ea?BDp^ z@wGO_3;wXs4&{3g`JWcDWz4XaB1%NscxTh(Hy5U-f0B0Fq@qI>(Ps@s5|kbXpZ+a{ zxHl^dPKFY`D5Hh8O}6BJ5@k7L=R^mprXQ+n5q(3z&QqJGzPjMJXO*lzy%=ihxg2@b zVOh8b$E|x(uk_?KzXi;R_)2N9=7jIIxXjjjM$uP!Zg$2#0e{pzCY+bLjz{)S-yU%Y z7aNAsz|AdEw>|I;{$@Dj`k#i29fwYrcLs=>y^tA``+C0AylSxwcK&m%r2qeO@86u8 zzM6*#^bTg`k77`ZsyxQ4F3Yt{L2b0Tk>vO-NChZcKx_1SjrV8)35{!88h0G>kC8If zl5&6n5ECa8gEP{cz&LbJFDp&jHW}dmUB1D%zpweU<$UvIoepbPKMIrxo5bfaIwl&) z$fu1D{xh0Zw*E!&NbI=KtV%&cYYhHFo_f{2!gOb!%eCnKIg>>goFf@c>w1#6;M4xa zTxIldVduowp}5nA7c1?OVj@&QvSBa@TC!erN_!=!>(fZ>3)EI{iHoQ)hT0A9fRtznUqzN&7)%Y3 zGMV^(_+z5pTW+p$zT4F%rR|Vy>Fb+szU{aUGCd1}flmLlp;x;EXiT1`?jHr%_VcKq zs{XL@Ha;Lj!B8!m#k>Vf#rTwIvm1nMcBrJz@gyeuE)iXMA~T(p>KiUYOA(nmEkA@Ey=>zT@&P+fNpoB(nT20onNR)-4zfKW?bWJU$+??4!QY&6Xo?Jg#Ta z6_#Og!>_)`%9DF`ehKD6)CK%2wX=U|2-*Hu6|}c-8%x0?e}H-auCLS**9>ZnOhZ%$ z`anSQcYP&lA*SV^n|0sr zpYlMZtSb2}bl+l=D3N{W={XW2nt4(_;kvr?+^1apkkb16 zxy7d5syTZ`sWiE1lt$SCr&g54z@tL{P?hF{+v&oTZszfD!dh9k_o+<2U;E;={Cw*{ zCzGc8!^)-C0y&U7tD*gZ?-xf{e)lGJ@*kXp{iJWYKfVzLNZSPMA_PPyJir^|>!E-8 zKq&MKpnA8KdfFUSCIs`4er3rwNMRU7GBamjA%#3u$l_ZVdak;BKuh(0so&Sjl>K|3&5Hi=hm8H{OlJZpY|1gxV{9oh-T430YZ`tbM>>CmxX9m?q)m`dOr)pnRh z)|VRttW@{;m^7c{o2v|BHl54m=SDpjJ?HOuFKWZpZ!;EDu?Ir0r#n0gtPX$Eii5wV zHvVi5zD&gWGJ-MKx$^TcTi+>z`M(`z1zOL)Vr=MWtl^YDV(b=iegvqWdv;+!JAflR z1WCjH^Cx~5b6J{3dEFb*bzK?49!IZ_ba%#qs)7(?fquPAjvJ1Q|GUBYhR~nC^MZWb zi_QAOUNj=IT%nU!-?S7ZU$-;X6op6iN7W4zNlXLXCq2u_Q?G9HC^jqD~K-=7D5yPAPN3$2)agYy0?#Abtp z{O#3-TTjOZ6sC$#LD%RtnP+{SGmv2(?ZMkXv@?Mghe7y~TXo=&%j$6dqVFL*D|&cX zx7eovseTIJ;%zb<^6DFVRlF>36epNQzBXTtbTS2aTM58m~7ReMc>{wxj2xpmIQip8BCCbbtadj)fyqz(5Q zo81u%ISWIn8n$i9W!^BR|V?hOa2zOPO~j=W)gS~1~LipdP$`=auv zbJ%!5?+AC}qFVWB%>R3IQ7SvQ^7?;xi*e6L;qga1`FA?2xQqAud046QU^O|=LZGka zC|a&Y7;#V_sMr$48^{3j{drn(g6wLORk+Kv{99slwbOOa$!RXt#sF)oRB7r5Il ziTWo1{DZe?A-GU^a|R(`Dy%7n*4M0^*2(3OPmTtqe515w7=#`=R9g+E`dMFQbYvf` zjQV^E_oo#u3q0!gc)VwR1!#T64yrQN8FQR9q7yZOD^sxzcd{*V&sR^-D?(lwe~Lex z^M4bf^_(Tl_58<)cKSCUk#Qy8I`K$}tL$JlPiC#=)p=R|LXysxm|uATMn*K9>K`qv zKSo@Wv^=e)RO3gZ(&BYQIO|Db}%WDI8jOrcy%NC#vL5=#67(us5q@ zuM(V{iXFRGU66Zzexm9OcWYJQ{VNiLN4noi)hI#{VgCQrE@Li%`D26>h`Cm88&cpMw7s$?c(-#?c~AOp?%TiJ z?0B*HwRzok7{@T1kCHdGw+v&Xeq?{RIKo#~Tx;Gv> z;RiZo|ADVPWapS|KX&bIZxW3GgCno1RbSh&9JW%?+t``4k5nFlBVklZHi*eDFSANt zNJvXekoJDbT-c4xg(dsuYH3~e^XbjS|Cx+lv&Bp|YMR1ku4$YCmho7@4M#UTbR{$;!G#)&=hU!xyG zg48WyDy^Yd?$9Om)55?wl~?&+_hU~#pz$G`7=1q?#dU+^lTTprk%HCJbHi~}NwZ)G zhNTq!_ioZgwHcXd=qHYvX?(Jz%3Y!+U8<-fHlu4A`>m%R0C1Dt6QvG~_nGmPGu{P5 z=jS7ionO$Q?8%>~L>ovO;0{q)ma;8NL?<7qUgVz79=BwFDP2B3Fwt56MWL5-?&B}9 zD`ce61-w5T%u_i6OsGDN@6x~tk`K-pTv7wM$aB0)j@FkU=gljba8^O2Ow+76z;y$z zm*~3yZpdAn^D$nsmw)AX=NsU&y^kGBOsjidX*=`{ONVDAqpTA2w+<$KqTNSOf1Ynv zJJ4xjM=T9Q!XsK46`eO$CyTU7o-hc29a@Lh{;7&gAkN916|=V{8T>GbPrsY<^*wUn zE5I0-7g=*w+{W#`2Mqw8G%qh~r+Eq9xjpv@hql(9)BbOTY8euL@uj>)3Q?-N`IniK zyoLau0r+@*b97r2CuU(dVWXyFQ$O1C87|@5TmS;63+m**$M1>z5cnsrO1sP4x>@ zus|{D%6xm0Z~K|M! zqGYyN0JD#P)uGm>q5AU_f}D`~FeShqGUs?@{cCS#^W;s&#a#YQp7p=~0j#(=H^RI4^RslD66gy4txSB9fF}iJW^CatqCab0w&BPtUdZ7>0 zGiQqRPUhP>szALB4ge5jP8R?;{t=kZiFU<;fjs(*>Y8RT2(yd_;f(78kXxtbC@?|xyAJaI;eC|*Q^)Xc(k0qI z{YZUyB9aDwh!KC?*{=%R2*$c>bNFio4kr~b--gQ3^!c4h>=f)jR^YTVS|5Z`? zPttp;1pK&PQjI9(H`Iv#+@=0z3Xw~Y@jmO>$)7IuAWeXJNLtK22A(;PX<>bu{DTuX zhSvF5hwS~om)~#T2t0Hg_n4lAQ6!RoUel``-q9SkPSoGISZwNVS%dS`rTJ{=A3b9G zFe}DzQA?#shgA^~^2|{)9;+Be)F*aqnXq)MI_H`vyCd4c#(>Bg(>$ae?*wdL}2m=45VJ2(pIzWkrIE1T-g#439W)89sY+@t8b+5NNm{8G=o?1N%`kB# zxoYhp+yj1y_@-;K7(}dAt4JRCU_XR3IrE--f-qgUT2#ygppQ&fSoT@%z6dC1kF}W2 zc+JI|77unpc}_| zA`6#ivU`Us0F8e~IYZT1XWCu)Ke=#Ty!(Z8Mt}rUg!%)AZu6?ILl2Yn(~0OiA=Bi? z2Sx10noV{L?Kx;Vb1H`My*ktfuMeTyW|6amWHBBDjP5A3yrPER&xRdN)Gx?7Q~3TDRWukJnDotOfz64+kI zTRYTO!7to$)!dYcqP^!uYIvwaxd!e^)Ugp;^8cHgCH6_bv=Ttbavy$7|DG-NTcl2g zWUn6N7e2qw@c2P7nb(Y+3zLa;_)SKj+3j6+FhO*RmsFu|ZfC=!;?2M(J?hZ9$kfU+iHXG6r~GzDP86#%cJ#2)FB-ZzY^nZ-r+2fm1PvF@_;&5c5I$2!;1v6| z!99mwbeuZ-^{0};ghb4JpK;!gIJ?ay>i@`qd7_U4(G5|b_{=zhl#*|f_-E+ysM(< z^LN#63G+fa;llB3%|+OpVr7Y13M8>6ajqnnS_SSh3d}kS2bkI)p}; z?ok+&k4c+UXPiaLF7a07F~+|u?BUYL#n_)f>mc{0Da4E;=xw^`mPIdOL|OV-a(IJ~ zmTbvfj7aasd}ZSI#D~E*4$?>{3|yk{KxfY7>MKj6b7+Fe#DqUJ1~s)g;|Q$`){GSO zE$v|SCv`IYamI_0IcSd;im*h>tUPZlRtCy}GLmfvm4TdJ8q9?}{BW1Jt3B3soSE9Z zs8aWibnjU3COD+&J{^d&2`4+|=V{l2rCz|XU&IB4sry$G?gzR(6xY!)!;@gg5*+-*aTQ8;u|Y%7jSetwn)8T=Mmmc*|Mo4%ceAX#hdZc^M_ZE8>n~S#M$qXA~ds0E(_oR^xUyuM9Ifg z_DP80@`8z_VZdy15O6-e3;5u-8+TLl!e_YA15C#%M6wiN=N&G4JQ_ZZnyrxd5IPZ8 zful$FN$%#(liIp?GcV%6dcN291FjkCCXOdh`b(7c2WgIRG|dtQYiu!Xn@uzY{s-Ih z5AqdHBk!M|l_+JFpT(su3R>NqX@-g*FQSd+ z@vPIiqPx_8vDb_=#$HhuNxB{Ij(DLg6G-Q>zYdIDVok)J+qOnJ``nsM)cTg|qQf%% zVPF}|Q1)7`aHm}Aal66d3Wdh$D_ijqnQK^Wr~_$jZA$FY%JfEfr=XqeeoA@PlC@jP z)lg=`Y)GYgyK?qoxFsuovwF&`Tv{P;B(iepfwTL9HT-sj$CC9Xi7TF-)G6|0$#`&u z_SlN{BC9oe!*DM#rj<&RvtJr;{Op)isKX`TJ%ci1qFlFGG48!-6JRUJJMw|`EXlJp zZ)uTa>sd?U*w(T5X$y`iUH$Cy1KDLtuRu!smqQ}9S(RIvGSY^QiSK5Bg~UKlE>lgo zVrKt3K>L#ZUg($t!Vf~+-`9-kWJaZ0D{)iITXQ!(N)1ZJ$;H7Z`@ zlvf(bXpJd-7tkN>Wa}IZA$O*(k#{n+qq_OAGW@3*2BjgW|cx3@4*H-4T~{r z_PRn6zxp(W=owLC+&$_;p9WY!t$dlP0PbFF!_#jx48q zm~DKvs=SU8w>rSi&BlCw)IxF1n<4f5cSHqUgBts*ZNBaKK3^lxs z#tfPi+b#Bj7wS3yk}?2CK`uM|a|a!_BK2J1Ets9`)br?h76DM+LB; zp#{+zkR@%G;|!8jMgf*-C|h7#A`$UD@_tHBg+4-^`MUB~#ip~Qesl=fxwOVR?`s=O z4^wKHt{13zod<|ycM#;o#o^Zmc)$nG%bRjNT3g>GR+oB7ea z)iyjzlsRqw%2g*@rA>{w{Bb8$CijSESLf|p@9&9@Rvh^!pSRz)c;iG5Tu6<=+>OjJ zq!@j-mBFoRvhqC59CF*~Kl;|~2PQk;_#S7*^z;PknXyCxYzY4LFq>q-Ha8hi)#iV5 z!WbKmZrp>rALhgNu~kyKPOFZFvj>>h3rctlJ&&EEOJ{sJYqp%dESeYCJTs(s*R<$h zo3tM`DeRdTD0paFpccG3$MtFa8eu16*p|#-)s8gj#8@SYaQVaFN%aV`Z7s{E;PZ7C zg!*0mtZt3Uwbq#1MfTLJ@sqeF;o!&=}A5!z_MoU`=YwkwaR(SiZtW z0}Y&m)q*yVp?UcVEB!$`_Q86G-`3UOJWC9+jbTKS(pLHyn{&lL;hin#%7pvH!h;Ew z4Z1}Bxv)jkWXl=eswTJ*Gf7>|NPKEcoc^|A8%g$na?N+A!l^CS8W!)B8; z&l5U8!x_gg(*$Y%maY!~!LHfye(FqDse(zB4tD=`B_vas+ZWGyrFa^jwpp=e;3lJ- z?~0}UL~Pz*jje(k=NfI4r}PGK9&!5zSzT%PMwGnxSE#9P!qEN0X$kuvQ@G)vKSGAYFjeT`DYbV?$3Dcq+{VA{Sb2muP!0@w=N zhqgxmtJZn`JZ7t7UUsKiExG9aJvu{FO0Zf8iu$Jw04~Ch14RbZx=w%SnE|f$Ga5 z80*$Yu+az}I){O2Pox()jjId?v^uk>?WS^>k<$&scsWu4Xo0m`8nX>%>xBGbr_#*p9eN+lXI>lu1fD{qSekeB4fb_mZ;{;?@Jx^Wu6$U zi-GaIX$3dzw&0GfXRP{PjHg+d*J-k9pCp5?`=rv$%aCo!kQ&+AlN+CESR`0ZN$cD4 zPfc1HW?j|VGQ_gm_jqzEHJ)liyLDmP#A$5j+pacX-7SvF-`SS83%heEQm0X*j!;jE zvuYBn_dTRHDs{*N=4pf%;JXPV@)k_K>3s{!3qnDyJd`3&n`DLGYbv zxRYG|1Z-PaX4{zTvqnx(6^Ulp2BuduP0b1J1)apY?4V!#OB!*s9+Y5mF3vZarLR(F z$8iBOX~_Qj2zcKKbb@#D-nY!UW%eF-yhC+5{q*v78w0>K){6s@w6g$PK%~F71VOdY zen%*WI%}z-(ws_2MYI`+alVGWd4S|-_~;Fb>=qds+Yh_F%>gK*eTUlq`O>i;u`D-h zGAK%}$8~9imJbvbIGZ`?q;w z>%g-9WQSd=Oa4xI`QqzsOUZ@aLMj30gVZTcqnmfQX$?Q$1X1Klb%#|5)fwtTvq{s5 z27zqtRrJxN6@JB8u^~HoUD3$Z54k}5#R$T5)%)`+;jbmU4YP}qt}_dcPl6TYS5~Tn zVqg#86h1NDX9%cg+w^e_$BbG+OMH1I=M80zNe|#Fk_xD{0Wixi9b+%I`~A7TXZpTR z&(D(vRB(0K&g*XEJVw^s9xKIpuxn(fbKe zF#S$LRJM*eeo)*)IZeiY+_U$C&1wH2c0}t22Fy!rv;r={0P#*KR{<8KZ$exv?UiL- z7>Tu(C-2}?4+c`5B_T6h5AnEW6=r>oFckgSinnM6(h8dS)Tk}#TJ*>~)NSe9CrhIl zcG}7VoF(QevehEeo<*CFE>PV(iyD4zTxHpltMYc`)$;mAC!pDv>WOgAv4c6^k`V@| z^tI0}g=&L$S~C~}Ojr*;UzPlq$2cUWA1%Jl3gCbe#Ef{8zB=j|Bxo_GQ74Z#I)4He6 z#gge19f7Jm3ZB-RUa-5{2k;;?__2VjF2}mX!01IaG|GrPlrssYupCbFH;Sy3=V>s_ zDz1>z@tP@}MX1xOtn%_FodSKJ725p5E;TD8bm4EXpIIWr5O@W$ znB1oA;*qw@qJP*OH>_c|wXE7h65T@9b8LQw!fO-cN;@52A4(^iAyCJ{S!*pM$BViZ z!|LG~W{U|U#zs}=8tEQcRZE~&GQ<-VCsMgcu8|*4=G`bw)LxG;0EPSujka?pGKsM2dH$%NB+*oeCZm(0cFoFBYbB@%{6 zzkdLIA0sT~Th|+zgU3(LKwi(#GFJlfFW*dDLHo^RJ#1WUPmB?X9gN001%wVDm~&|B zi)E2px~GMuvvfo^&)0~R1oiH~m88QfgC~mUrS^(KkR;=5PM5*@uy@NajMU|#{r4aS zOY=)R{Y$`jmbqJWqxZ0yJc2ELY!EBCcJ+1u{WC?#W#z6#KH}flI`(iuPs@qCkAWXd z<;LRr=nBCj^C1qthFEEZ1S&>x@Jp0wm@XIM0JmE9y4iey^uk0T1UdS}H8J=Tp~P0I zaSCj_FB158@9)r;BVf)^yp12DApcDn3F7#naB~j?vlwDvV}O5@={Z%mURESGycE_XxB@* zCp`1INXcBHcvq$&bNIHMxQRRzqR0lhSxwHbPg9;tx#Z8}x-w4-C*$vEU@i2#rpE)3 znkXwBG@-vIT5eCzRz9!%Dpo626%V~x7})utk8ahMQj!mPxw(AJ;`BFO`4rSep>2xr9yO5alT zBJO#1t+S#z=ujpEVfp6rnq7&3KFh&aiv+c74~qx+r6l;2YJ3{isMzssODXpw(Ulx8 z<{O`Q$xNk&r=mm;Ti}yfxX$2Nu}n_Tf0bl&Ws>?S;Z}dRU@dw(IIzijH)cqtPCtZoE%*AS3 znT;F+Kl5p#^4SzthL85_;Fqfz`#q|leU>eqt%hdr>7Jn|cv;{YvXTOewqvD`n-$W7 z(_~-n;?qQ}$b$4(DLX4}t$7quFnj^ZQiDm65pNT9Vpw$z7kb|G4rxN1R;*&NfJme^ zZkVhR!{zJ`BDT&oxoAFRg>5>ln_2GmA1cGP8Z5weX5EQTQi{}b0?ep_Gpj0;;(<#E zgCe$4^HRnYjs4Wh^Ql0+9tt~hPC~Nw&qIy zMgC~AjnfB;>0QgCstPXP`hY%()kXc2N;hpxMpgCIe6N>IB7c&m6*^Pnor7VTuz9(a z<1@FlV@LJK;JC*8_PYDRwt-<G)5z1$tk`A-X{p9`6O^-^W#t{ z>EoVt!c^ebTnj%XUB6OLf`Xrz=g|C~ZD-aW7QhOPV;Aq|?2Ag3Hdv@Dh15yc?7oW< zr{S;a5))?)Lz*BYAqdD*XnYFuu~Ow>Vx7C?&;ud8=6Tn5ah~FMQM*(`W4FIj5TY9$=F5S>nJ~Qv6{OSL3bJcN1Rt+^k`#utzS>@LG5i$kIEQz3LME zd|V?M*cEM!tTb0V_YnTFl4RvV#oMpJm~nTEW)*HO{AHs>p&S+l(K9R)-|SfsTZ=fJ zr~}n7F~&uFVK36uC^{WxcaXU?>vZ5sslVwvLxZ^;W`1PB%T=zX?AV8!+Bw)Pu_aRs zt>p~fCgol|T(N;4!b^uT;qF`xr@kd}S~6MdtneBCXtasg9;y){Sq@)U{$#T-D)W7P zq;k%Dm9%y8E4J-Z;LSoqo+cez%lwVGb}{+dqQb;YF$4bD=82+cqeFJu%DU5mg*7u4 z!3$wHEm;VD-Vf?vd-U%;3ljKKC@JXefHJD0 zoLKC(N2Nr#;NqEULlg{ZFGmEpusJ}pjZbiatFCGsb1->??(J*Q#!Kfo1Mtr*E@%To z>uE3WM2DEQK6_y(tt0&RFJ#S{NwMc|hAz&YT)>2HH|@&Xy9*&Jd#~UH(YPz;T+gl(A97=V?`Drj50gkiJyAc%zmMqBP{KYb90E_;!Ut z-?UB3OXi*X*NDr!f?~anT}#^C`jD{Wf7sP2qs@5Y*wrYb-35WUkXO|-cLOJR7nz}A z!!y1!I89?B-`+21+pJXeVqNqdh$ml}SRL$PJ2Gh&y7;u+KSuG-o(S+Vi;s7(4aHus z_?qKY->J690cShe@xMC%LZ5W(y^0XL@oq6LcmC7x#6M1FzC|+mHJv#RNam<;T=~nS zhB$qH{SV$SJhSut(W^aHKmg4lkHL3kluY&_*A;{b;O&AbNxGhL@Z5J`5y&PbC*(Hu z`NZTNxr#6U@zXd+%>iNFKMW%d&X5FME}hh^^dd`?*@*-P9#O8GjIElrQl7z)G|b&P zMYm^Qam|L$E=fN!G?rFU*QpL8w0gorKM-3|GvIS)Jy*j>1ARi zm(T7RR}t1avF{pC5njiA*TAYwTA-8G+dn*dmfUh51?J^=L_5beKW|#DS!rrNlh$0G zgg;zvm9cntwtv9{F4zfuH%Bab11#%U@ZFf;Rk%2T$!@dtvF8=oDSP~{kl}we8qqQI z+sMc}JEz{}KMgWby#FqT5+dvRg`@|~3r1Lj{1#*PV}_F~?d<2Iy02)~pu#yjmmtVT z!a;lya57)s80`%9?rg67CmQIl09R)RTHYI;BXw>Ae-f)E zFj*tp%RIZ`t33fy`Tzv!LZS8} zA!n1->nQN=tFOk{nU?2<>&W#i3bmo>!>U;!0>G1*eV&4tH@hLcZ`%^5>Ki8m4|8N} z@R7Z=cB|pr73~9Mm#mCseGZTIuv#EDkmW_MqR!F$;bMA?3B36Q>Ta%wtROi`)#5n; zXYiq-EcVppe}c{ZdpEs!k6)J_h->Oz^zVjWZkZ>*2+LvjDQoNF?p7jhLDl$NB_Qz1 zUZl}%LsR$dlb9f2kB%X?B6d@k@PpHPjP#*TnQhiPszujON(md(S` z%!6p!4aVbrrQ9VcW=Ws2dS#YY*33;%T{>=x{w8Z{)00j$t0(<&c{~Nq5S^zW8A903*cTDO|J#v;1ViszwHLt>5=J`J% zF_>@OZa$$n?nT~KBNPn?Jo-|#Vi1~p^d-bqO+OZfDQ$61nPR5FBza-_YIYf>+tA38 z{k}qtA%G6BoPQ08iFQ3YJ)28^Ffw+%!M07>5Nqwtt?AwO^`P^o`wN%%wcRd1?p!(d zVjk(72tMz4?7MqYUwcmRUoG_=_19M1LogEf(^mY4K|E( zf|=fHx^eWE$|jT<#`*8y>^j-MorAH+v!6+Xpm{?GDc*OC!A*(ZY&zh&i-X~RMJ&_c zDa21Uvpra~#Z8~;iD`G-YX-d42wgg&??WMZ$JzjG-znl>ek8CCCs|fiHLs_NmOST^ z*|c7U%-7n`mwQx#>U}%eT)XtFZ*qgb{0NM$1zuY5xf$4)Jq*tb)y}S9C~ZwTuB;oz z!Ng{boagVHG%n#4-+89W0keSY_-kurQ~7%*ZEcZ%jo|uz*3d6fbr3wt#rK52!_;|7 z=cTdVcgIP}dWZ2STg&7{r)ov3hml}wHYg&}l8?v+3t@#9gm#GF7wsD=^IR=D6BjC#GZVyYeXV&c-72>{JS6Y}(Z$Wf0yo9Ie$MNM~C{r0b(K4l3o9~{Abnl)I7 z%_aX~|0p4*w1aKGzNLen86nko%NV{TM*Uf)knFo0EaUa}aGX2FbfY_Uaw?C9go_qX6Wg>_;+K%|jUW6lKO$^JVIRGNV51cvgeT$%4$`!s~ zw}*)0y@2jsNX4m7XelPpclBO5upahs<5)q8;_7QscVC%iaL^Ua$Q}~Is5u)VdR6SA z=#pT0#stNv!${!#_S=cU1@LS88~H5)y%`NS$ODRVu3YVHjqK>A4Hna@ca+DAxTE`E zhZ}ewi9(;>IAiH$rqvIbVR?F*5glJ`c>7TsyO%tq4L-+LoKbo#yXfKHAlQrU4wYod zI!za{->8&$Ij=m#aLw&JU_7+6u8iHyP_6JDgWC6vCA45ecr>KZpna;!B%0ysaml_Y zGkKuh=47e72_T15qz+9An>=XOm2CuaeYl{LjmmZX0rX5$)~vlL7+*XEn!rvRwwqtN zw5@oNR7c!gUN;{p)cYrQelY0;zY>7zMd{G5lF=WlddInjUc9 zeZy4O_^o6pz_Fc3ztBZx+GZo3)-J#B1`BZIYO!K{#(bo4BFqb%JvwNg!_=N&OK%rm zg1Gz)qCeP!|udsY+IR{b<*|L7In2znirO8C2$bfb3ZeDost&)osfultpa z@cn+bA9Q&}%icFIqwrRFLiKB5%S8=I^djF`5h} zX`=bpBHCH0PDR&o#D^oa{noWs(TX5VpYa-DmbA8I`}s$^A`eFz(yP~^;qjq-U{^&v zmd@?5OL4)ju2n!9fxz`9-2F^h=gGoM?7UVQ@yXMcF6nOvAH+kF_B{ZQ@*czR$eVAZ z+@OTkRMjeHVEqF?&~_!BXwB%mvcMnId~~vxWz~SlB+^qy{Tc&Uw3<_fRYpKd_)Pr~ zoqe0u00^}Obldnuz7gb#$Jn6sZXBOL%T3&-Am~jFou`gGS5NBvg%Gl;Xw%P5#H7pE z+&UDhx`A(5r4U~r6N|_px>hkHnRnEu)g_dH6`C>zETT#>i10CE@18%ljaEB_yx8i2 zpPV&zt$-y~Kp(4T?jyC&1pYT0VGfK;PnK*@0{3qfG+7$(ZxJq}hfIk>9d2M9HgM9A2q?ePe5GA!8G=L%zy0*t zKW)N>=myq@AWw#wKalU`d2~kSspSIG_WDFuw}YZ_T@HI&E+KSMaHcPp?z_gqC;J+0 z`!cNFp$^5i<%@0?eJ4629X3Sy_RLbo2{M~Ej941zt@!*RDsedb1ymt}7jH6%L%w~v z*FMF1U0PmCYH&92bI`Yindl#@Nn*PJy|W@oTKqeLD>Emx=~bMv_!jg44MSJ#Qr z*t$k-R;wPKrT&_>w)RVuCbJwde1l!m(VSeVtYWUVei2v3O`>lv`oSH&wi<83oKDk_eUlAkpJ)g0>!{*{osV%~m^Y^Xd{MrevbZBqg%03)Z{m z17$MLis`)dd3YwbNDUZQrNxA@RHc(O@GTBRHR&YGO75Fnn!OV7gkf7t*1!*uM8z}V z8)|#EU^XDS-}}}*)7S2MOx@pU(sy%0&qkTQn=D^?nAsp!L92+*RMTw|5+#?EU%6&4 z|K@n>7uF{Hkh!Ks50(Pr`-YLs5W?sAMZ+_(e$<8JLSQ{puyLM(QqZ*H)TYG~MClMZ zmOL${FR@sO?W6Tww-?>TJg(Oof7$fD_Zs3L!0s~C(ddS?W7P4ZecH=wTn6^W$z0`k zS(-Xq?-6rsey@j#P#M0S{7G}ef~z0B;*+C!Of_;AB;E8#E@C?5VChAMARtYOH-VQI z*REti&(M%jpFXw*vL7AotF*edB6-pqa1gEX^|@IJDejMxd3=ZrVfT#&@D%Y)*i!AA zA3A5ES(l42_a$qEf_WE+$83laty-!mYK#=j@IOcvAbFqRw#L(KHe?UN3R*Wxp+S5J z^0EIM8v#^ojVQSp9)-~MK7tT7FS6}kCjnR6qk8Twk|br>UHoLsG8S0JmZyNsy>H6r;lz_LOEB~d z>A{!uUEt{PPsXk*W;gGS%d#m<&azf(J{%+gB7DkgL`g>n0C88DNU@60>r~gQU%z>j zw>7NiE{C&!7j->ZiV<(^Z8P|&sPfZlA(Y^Aw@!e!H$4}pFjGx!xC#CnW0eUcDu*Tq z3!fKA2{|xY7dX$svXpUivoUc`xGw^TS(LN^H47I0RPm_iHE9=l3iHu|9<3ajVeLQ-DMEq@-E-2{Wl;>S?Wu%r|EsY!CWWsdBxW1zZbP`igbTKH84<_d70mx|*Hmxe|y3QM9| zBjezYDU1i~ycj#E6qD0@q2HIWO3k7>9`NHQ!em@V;NiKiS0Qpg7xFDrsHD|Iw*^7A z0sAs##d2#!B%CzT)e`CJ$MdF(CW|rAhn36}6xn3za^~clycNRdBX1Qdd;yg%nwQVO z!GoO!e9Ht~)*yk~US9wy?9p>2myJ^>OzVk(1wG{CKY}@jE%(W;C<>%5d9rG17HsF+08fpzoAA?KM zvhMc5_V%~0dOD;Jw!b~;fTV^|UI|ULxJP@)$OtcJhWqTN9L-vgmz){mxbvi|j^E9} z=kNkR6K4BNQB=2fuoiHLJV@=@!R5^?QR@&_%<0vXk1tkaEiLOa>2#gy9c~!zO@mrD zzC82-H@cpz0C{NIW14o9pZ3<~-YM&5TC%skGj-9Nw4ofYK09Bfx}~^)IqXxIlZGEk z#BQk99DH1Y`gs+Rki|AX>ykOwDD9IO*2aV&+Hphe9g~QtXlwy-e(5Qs7zpIgl9W^G znY~KAtEbfQfm<-k;^1Tj=e8bI@AaeHu@lR1G@#K{nVYepa2$31`Ss=MT)VS)wDufE zhk827ILHyB5YP?N7Q9-npgIAB~iEw5M&G+g6md%Oips zRF07oUtahg?w*K>l*cox+E^EEPVjp(Rok|nW{GctqSTheJ}r^lTN~4u-bmfrN@W>r zxkT#2^CGv#w3m`Uqvz&L-@JCLK;FxHdi*|wX5Fumm==<~I}(D5Pk`q16uyu$QC7MV`vDxuq4AbdX^;lw^hlQF+dm@cveZTT)9!KY^0zpZi=wtqmA4yde*uJ5F^+8yhLPASZ0d4d~|A`BIbp_^y z<~RzxUNxdb^*QdA13i^;Zv6a60+=>T&Zd#TgnkbQZyZ#w_$UUV zyWJlhvT?gPf$Hr_CnCEMf$H)v)OoJ-XjTI3=A zZOGN{OQ0s`NK8+`Z0f>Gd%xYs-Q;kivK8Sin@h+ zA<33*$G7tAbL?3>PV1W6VWHb&5WOD|(S0Xx6k+}g^YtS;N$S@rL;fy&M(04xRy%ci z$%!F9659kjvLU?wgJmupjpYy-6sG=2brjOHWi$dOqTZIf@r#ksj2NChRtAwq;Y<&w zkM-s)o|z&;c(J^)sx4RLHfi#Cn%x3zn8EWtjO4xCE{%Hy4W85%AyYmhW%#z-~tQ#zrn?6T;i3ZJIA zD$9kn%{)gnnZXX)imOJ`p#JTr2v+u&*X-xbeOGyr_&=7=m1H^fzsPdl?chV@{vn0@I-&krC(S`m5lz-oT0{u`3Qr$sG0An+RNkTmCjY}6 zksyPK??+0T@M$dh2dQ`To{0oJWG{U)M6azG=9OM-heJD2|Hvb#l`Odpi`H%z!;?=N zVS%!$?2E+>jx6^PquuySt@o*++YzV+o|TFVWb=lRBdd4Arn%}1K2P747Iq9yY+icw z_B#c}(|USP;?^WaI+=pct7))tMgBh%{s&blKI>PuwKuo7HuNKZ8uHBj00XLzg7+=( z5OD@2RfQOlpGvVP+V#9i1uo5x_*0Jn$)@jvKjz5SUStNfTg2MlT9^&bWbDDxoHojT z_P`g5(0B7(_)H75G8Jvr)JM;XV9qM9DU}VD6+EfBiMFuIU7_SL@sT#g+%L7JX1xJQ zyrjqBS}nTsNVblbdyn$X4NdA;EnD*`(qHLjC#Uv&rXg8oYFIIa+A>sRC1q`jv|Y;z z{ilEXpFRKve$76Ex!fZ6{;5Au`T<5z9)lOILllp|WvoJ20TG3tt0?khbA!`eoN6LK z9OCmj$J5vFYmHFdJUAO>z3U=vpZ{Zdc;4QXmhXn^$o4FP#ifa0)v6WYhK#vsj&_dL zIW$_DnYFXtu?sPw970nu%U!+4QQwk#yF$A<;H08`+U2I*Tav}CGprU!ZLJ%VOtq1I zqJ7k9K!4>+fS-0d{Byy4PJ1ze+VWPN5fvL9Y}_6AXA8#fb?W)ehK1mB{O>zYv7ZxE zQ2$Nv3vK2GuK?yQ$@g(TsT9Cf1OJ&DJ`vvnv@iDr^Q7->!o_m}^O z3-WKbDDh|Gc>zy=i$=E?Wvg{0Yn+P`ngef~^>|flooF8Yj2nDc8$;D&j5OTTM1VSP zlHr%k9W|k+17XjDTub6b5xQG7-L$608 z|A+TEADWD62&_;x@!`>Sy95FpV`8UR^3O779fvD5*c?5NGi_~O1~CeU+>cLq&3OhZ zM%-Gr$Y10#b>;q3YK#(6`#w)(*wk z#gav3a6xace{|8DkuW#!VZoh!01WSxvA#0IDM5AYxnGdf2h1<*P-~pXdb6hP zXxGATGcKAobm&@VGGP4b&oD6b=6UCBx58w5l?{o60{_pw;yd2g!NfO@f?nxVfA~BI zs`u~YQ9@)(bqw+J9pr6@P~H(0h5h~b4VD`;Cm_gV!e=(ru{e`NK_G=r=6UT?75}do zhZ^t*@^+pJeb8*@zINk+(YjDRdi6l6a-q8HKLiCzA6E6xUw1UiqCKb1A6w$><5Kl( z12y+nYI|EQe70-HsgKfM=#w6_ex69W3>Xi8w@RzR#Y$ARm(}2_RWSeCE-_#FFUFSp z=KHsPf4Ck_wV$r1o7`*h3ghB^T%-ebHp0{(+E#(bg4%)IDroFk z>TO|V@`KXb#7D{!Gd0(mx?wg`!nbcctNzG4D}R1>rURgxJT$3wsCAS{k^IvpQqt=^ z@n4=(Q}G!?Up*Hxc1CaODPThr?-wjXtk2N*PyU|y&AX3pK=8>bf0IP-`Y1rx=yEXX zWAT?tVjSK5^7t^}87Z58|KqvKoP9sd9zf5%WE5Lvky9t};oDafjUw1rf7e0Hi~t5D z_zANE6wT|~x@cfvTqmedRI607 z+Mc(fRB3aQD)Sw6rNWMxi}UWQHj-n@A={lPg6=Di>t238w;gKxzsvOYPf2HKUS1&@ zAT*}o595D;1*b1rVL`_!AY>lHc{<1UHh$Pkrb?nnd_`mC7ncX)3&an) zRS!e9?MM7p+KB}*?B?tzy0*? zs1#w#wx=5TwgWr+MNZ6U$MCETx1Q@%3C74T?dc<&u!v=S%f!VLAyGf}P&QHf z*@u?P%@5YD>3Db_EkD?F_tEg#$jdAV%)7!wFTxXuY)`tlQ9FlhoT}uK z)!Cmg(o1aE2ZVY&Yb>hL>np|bs;x*P#>zxGU!}cpS0l$URV0;GBtz;}nHIP=5N@%K zg1T-ngcv=ue^~z=FN616GSuMhl!9^46F;3AXR#d&VGPx1|Ebh+5N{wr4-r*kQ_$cV zg_CyAC*(zwxz{r)DtZk1^Vu|u;&sFgnTFp{%b@bMti5&jRXe#>F5abkYg47k{nQSo za6_7$yU$4dL#F!58F{gFuS@EnKQS$I#RFBvrDl|&m+YAp^-DcpHh^o>%6VRAk4>aq z!XrV0z}6<`hU>ONi=r$U(!?Ru*7=Ib5ulk(o4R&HR7(eSyT!i_n`~C1R(au7JF`Ma z=oppeIeKt`_whg;b`;9uDE813#^x;I0p`j_uu}CNU{A(Xd7{ei%>1o2RU2(zxD-ZJWN9D%C zy#;$@R+|)i>~z<3Jx861D4#*E6`=V-uT1?QEe$l8+hCp8if_B3Le=au*_rDZ%E`HH z5dS;eKVRg?7 zC)MM1=Y(hHA~NR4=1s>v;J~NjrWrSUGtEPbkM>b~k%!-fnByGfsTRt`)T&UVPzfjH z66ygg=vaWHYel~{VLmMgO;o5cv!M}w>-u9^ymd>a%sAJj$NlSY8c5G!_S5g(sY-3C zeRFK^?j)W={e{@70(1BTR+2zio$F7e1xAu$@p)yZ3eqqQ=I;?syYc5^mnTPE7xJ&fp88`(NsDO62xV^IK+$jw5ryTcY}8_`F$ujb`JOi->zNJ?}4{J zUC#<3woE`^(avckzjp&kYuY2lTU|z8onV-r_-WlTZG?y1g4VS8-fN+IW+o~LCFB(I z=$%jD+iSy7m;=!{F135wmcS9RNjnarmOGTS2SvPG%to`xglxkD$WTtB?Rn+RxX=X# zix}c%X}`a}E0h*WcM)-xf~?K+eO4V8Os%+zRG-8u7cwf^ac zSIxoiA1!alE8^Bew!HCurd^SsNhV8%Y*{1N(eRY08r_^1BWx0r0bv%>aO8KAb*e8N zSyQj?B^Nr(-5PQ6K24VKZ|@?+mIW0xvO!{a;M3kX{I|E#9(f+9xY_?CoWDZW6!0a< z2q8}#DPhh>hWz|7_dGrJW(^l#&+F{xPvIZj5fLzUq_331*Ma zc;S=ZTVU8$xqssmebQ0ToZIB;NS`LMt-VQ>?H7#St~qcATm-Dz%uh`=%EKE8YtBf+ z-vX`LM$XXs5O-*@w>qp8!wFV7;tOzt@+kt#gb-NxNvd~+CHt;*4+o1p^hl@@w)KfiE8Og`c)6`n4wKLrkpN~z^C)OL(bGSU| zFM?9Z7cU47-3K9TVU2cRN$*vpy$Y*zaC^$YPoco)N=-z!O`*zI4EEp{DqDWXSPfC`ePP-`tYa2TiXi; zSqEz>rv%MM`eAOqm;YfF81HvMv?weNFJ%2iK<=p7qOa`G?xn0&4_8_h;|Wtql>C)+L%0G#pB-L5B8wsMOC@`( zM>(f3K3=Y|V4bX%@|=4}*1R)W_0xcSf1rcm0k^OcST(00cL5I3^>S$MheT8r!vQte zHRS#v^@gG!gHWZ}pk?4@@+-a2W&P7&4uOHnpQo@@@exY#@I%+wH@_)M1uNHN1+E`Y z@IsiXMI(I1yJmlPGHDt%%hCJv)&cK4ywu%Rih~jD>U|z>yMV1vRO;kL|a6tDu=8# zIcsP5a*~GPS*bLku$T3~K4vabDw)HbNFG|#NVR@Kus5nT$UVkGjtzt1F5kI7}o5Muio@v5fDzH(x zdIqOjQ&qDBmsg&)-wSFfk;P@FOPZ-$)Em>5!j5W#28ZqXlX)~e+@Ai zrjr&e2cBwLHci*k)l5Z697Id;XEf9)={W&q13)!b1YjVjA?1SZy?v)Kp;=>0>PahU zrGWg(8OlOQxFzY!`^;~M9<}h6UBKQ9gO1~LvQv7)7pT&nRzX)M8pe_)Wsb8gk*a3U z@EysKuO)jt#NrWsNvNvjy%+g?J6)8?(2+KwAQ5@Oje~$B9vzd;1H<$b7D11n3%<>( z8PkfEAL+JczRK$2V{KZEdhIY>u*jJ)GM3lXSP;lktv#Rau@n1OF%73u=1U~c(fM2H zF;mY|B*|f49omuaaor_bTSH{uwvmW4>2Az7;pY@2QgoqUcZR&{R%mxN-qN%vgIs30 z&OG6`5G1?8t$`jyuVDZK-A;h8-taG|!1E?MlS{!-UyxfE@w<{L3->z*s-M;*J~wVO zQB+LG)JycDV2+_{b%UT*WN`2MVjHq&_wjSxt_oy_(Tg9J)>ETRl%{$a<{^hoB3+q= zPR9})Ytn}^FZJ4%I$#YKFqbiJQ!;zaYv8zj=p?(>cRbEFiVFupd*?Or1v4P&e*T>q z(|qOL1DP%0c1aSy#3#&JxgOF&R%U?3JYUHnitcQ>@5lBREgf=nF-hTf?-W>W#zK9< ze1Oj;(S}xr7c12uOx-#sqlYoBEIk$s_yGb z$TNOXJxk$r0mfx8xp{*zrgI)2GUs@yZBMgD$qbHmIlIS*i!c&JgfWMy)m`*m z8@A0;U~wxM!34E1M?`6*f6h^eB<^wz-K8DS<9+)j#|o(SXGzq1&Y4>9^IUgZaWZHU z3*r|Dh21y!!9GIwZg9ozgXIQw}I^C z0*9v)8+&eh-PZ@E-zB!+fSmWZHUGBk!kXdumwv z53=d5rE`%{;nHr^EIRVnjGFQx994s&_AB7t8$C|i(rvBXih$AyTs2(6QK5yV+ zf26^ts)@#aLP~}NCvPQ+$!0Fq!HUS$Qegz?t&ezStfO+?5*B?<_OJ87h*gvi%=6R6kjIiF~oVJnC~3)hj)mY=YO)`5Ft8|o7ZF3J7lnugICGnDbZc8Qu8rDl{=t)B}J$mzx1i zFuNY02z9dcw2`j8rFJ;elE>*b9;tO=ZTB0=>GgfE0$gynwhrem+%xXs(!D%)&jpzD z9{o~IMuVhCOI=G;p>qy~h5dbs*pe1ShV=VQ_B3MQ;@yH~vAP687LolJ7mGv6B$bu{E3RJBd;Q_`H^p=h1#{w;&<;(I3 ztjM~{SSxa9B`Sj#PRxSqL*)BsDrN{rqiCPr!~R-zb)CYs3O-4^F+`3}r5h!m!|$f^ zEmJJ?`q~8~lJ-{FMA2oj=9PM*%s$M1GEZQq*6~K#Z?Q--VY#SdyFBl95T^ov8>zIb z)qB3PbISQKi!zQRltHR8bFuJ*5acWzrMHHP8%mr>nGGuzcBDcjszqN_nW;k4s+$TV zUKM|9k0~tjm__P=dZ9%W36c)|=qZUlay7wMv;8KH@N3=0(3g1V&Zd|~?%44l-Ke8; z7@g)`9|p6Xv^M!{uL~b8?+c%uw56Zdj@20*&2x98u1dr!Q|Z>1($;~UZiimA)Tje& z$0`P?n(w6+???q#%9;SYdkJyKBVh+&?-t7EzbElEkI<&i;fOfctF5q7Oz^+fnq*1Vp?Or60{D@xo>PW}eIBd@bdI zs23x_t*glOjxA5A$&m4ozw)={{yPyNJBPTZt&9Y{7f+($0!5EdEM_xz=j0lZqhhqr z>mUnbqs~Y=+m2`tzrchX-C8_Kzn9mv{|>c1#YOjRFXwIOWws=HoLWQ+fS6`8{NH!6X8bLV zk1b59Y&$55fpYkwwkkg_AvHY6eL=5^1YtcSx*&MfofQ1OF-8@0%} z%W#8SS~X|irX|)?6l(NhDNj>@6WDt4894HC&mTM{ZheD`#*j-^?*j^$v#B`q34F8s z*g$u1Sdg&-nZRF=mLN0imt{Ho>NhVLfSkNESbC2<6Q|ZWj|tQklcqmvA!1~fF}}Fx zbAFoy&7>wlW)=|Vy}^1^L>hkbpFr7?)Y8sn-b`hxdkX&&KWbwyu^3gf0|=#==El_? ztq>{8S4F%LN6%*XS~|0(b<%(>((1`{@zhg2sYME|w6yFfmF*$Pwi9H*TN$rp%iuVw z|7w93j-BQ17GuX4HdnKBswMZ_Kq>p6FEJBuv?Ae7VL-G3hbZ?!cl?+}A#)dRv1z_@ z&nXN{fI0kN6JryQirr6O!6`nJ#}lk5;+_Bg+2V)#RWehyu4Cy)piMC=WP{Qu)KGc$ ztz~KJy(o7vt99_!%sA()3M;F-&cFl*GcgUbe|sK@(r{p3K&EjLr9p zPGP0ACxQ%Z_ojhuBQAkExuXZ%rYbi)OlrnMSeL;&c6K*-*Hh$f`KdLi z#-x~)>Z+PAsof)Yy_RK`KW^S_)EnGgN)FOW#Qy;Q+HXT=zrFMLo=FdS?-cxs_1rjC z`U=Z82+|{3S2NP9=Nch${}R%hd8XkKI?lT%Ms$K{d%o)|&JG%@O(ccHLtXv$ z)yKdZP5dznAlXvpN#Y4Iaj$olUR@>_*G{TRUgP)fUF+>a*!+T^POpfg!tyk{8=x$1 zyRu|E7=?r_?y`U})n+H*BTzPSV)1D_Q4r%CpWsXSDj5eL!S>*bW>{dpw(Z7vsI=a70LHlqvp62&PUh?7iv z4PlwI@CL@{n882W0mA(r#fL^q*2#P!T)B;}Hl=~XcaKCykA{^BQ` zXV||=ElwV&%pDrP@LHVLT{15!zAmW`SI^j?DzA@L$F21)qh+2Ii&M+kbVv2v(Z$$i zN=T$Taj!_?dtlfuOiPsqK}~8ewO?Y4Y%LAF^5NACy3pLh-Wg0zVgMckeIE*tU%zmw zO_}@J?;T)X+{HKVzsn)8q`3u2eS5x;^M8kmlqddSLOXNm={P>>QK+Y;d>;6ek5iK= zb2GcZmy+$(JeWwS)3|SZ%~vV^pEm=4-pU<3`9*gNjs(>I|M{t%h#Vmm)0QMC-aq+a z{%wkNhg?lSCi49r4*rkvyL*2&LI|=r@Zsa;NWehnKWPu)vhA!pc24@BSE?CCVquOp z40hj#L7{6JHX*bVI@S;zed*o6iKWVMu z?b`j{D75_frgZM(uaQzn#>F3H|Gz!Pf`>_@Y#gZa2`+1Y2>)%ODMo-~x9)xM=$XIC zM5R_6A}4za27N0k?SCVM@h^JS&a}L28P|<&-=H+7e%RM&<6Vm?u`kj#YFnGa&lyHf zj3(-5&DU>Zv$D!Z0}ba0+ejNi438I3C2x-x1ody`=i6(6cf`XUlU|hGhP3tG76%v8 zv#u~5Pr5%sNqHH2^L%@@L%jsuR}!w?ikNOGUT*%&Nv|h^Ux<;nNH5P#D}S2p`Wu-( z+OZ+6{@iXuc3yZ^5N(ycEbZ*z-Ul-Q5}_UrZzS9d*;Y4UP*6|oF^(v~hx8}xB-O3+ z5-pvCp;8BTW!lQYE#>Am%K!CE)L8HLM~*9w_p~+)Jt$l#YL3czS5T;|TBuq_ZqEK3 zBING%QU~dtSGc6d4yH){ zQ1ZdUoqY5D&083+^fs)=1O4tdkW|@8nyt>J?yne{j=u^+9c4wgobmXEo>ywyW-c|1(9eabVq=&{zmTlLEYO87hgd(5sa27{ z#`aeFBU!N6X*&1m2zzttdICI%fNa-p2h<+N-M_2kSaX2((@w7YC+n!tW%7jm^DfON z@a*dbtxGQX8OK$`yW+kr1Jim4Pf!3V{^p`JxLm(X|r23k^e?{AHdZj1Wj??{*dfdthzlmNz8(5b_ z{-H00`wQiO!F%Kp@Tj%tGp=ca%tdc^#qj_Q)hOB27rg0n8a_dTs=S*EHAA%M} zvC|@W_C5={Nn648FI`b3o_=pH?ar*OHZ{(Dr6MTsRK4%hvUr%9S!}&Ag(-NZ+7v{_ zPcdNRHMjssWw+rE-oK&yGfXQh>2(J3%^MFV*9EOVa44Ll?=V8%V(c<9q@MOq79+HX z`gU4Ojym|K?C?CS*#8wh@BNHl0|sv~O9zHI{@9;=?C;<4qdWm$8{P!vgrpc#0?_qq zGI+Ct`X5B1B7zxqUmlQL)OaP&zy&@cfYY*h^UH0j`f!@dw{>KXH0r;%HjBbMVOU=?yuXSHudJ_y_UsyrzU1>v|{i4kcM_oUT6 zDic1f8tM|D;bc%b8J(gzTBB>l-`s&J?0`k69e2$&Zd2NTnC~?AORI2&oa7QR8#r#=4ut0LuY#g+Q19Gx7)j zsF3ze?l0~72w8RA#8I-3VqweE6`GkabJFassEafdRhp_U?<9||MZ?~Lp^SebzWN-O zej+ch^Fw?yq$qkXNCPE@b+av&6?Ko-LKCd@BPOwjFKESQ{PB3pj=lp zWw8}2&$fP>S&94F4i8EB>vW`uw(fQDvW3laNpW1#waZ)i z%KgnTs=eB)L3sD#m~kh0^prZy8WV}AU@6`=()CJKk4tcV$)^y|8hZW}+!T!ET6MXK86Rr_^Z$X;P@i4C7l$zLVf1nWo1a1#0fvbD!TXj^4l(;(q4c3)>(Idh~8qRm0uGa*qb^ zgEfO}!Z+2)9?;b8nLjhUE#Ojw)?=bBWOPqktrm9LC~kH{C^RL!DBE*e5FPEEWK2{{ zX_G#kBb4ro12%Ij>l$Txhuuu#WhEV3trHdAX4zA>lQ~2ALOkH)YOO$xboIuWyICPJ zolW)dF#LLT@{QuOuI53F8Qe(!kW=Q4r|qy-k^ z&#SAUX$95=>f)8ep@P#QP%)-4KJb#B5qbuSdq%Yn9$&*~9nFE0IHzG*B*o7>mqy3k z&XMuqlbNR@eNZHUP%BxQ`a$c4Ab?F?M=$Em>yP3>FUm06SB_{E0RPqo)(zO}U6$x~ zQYaS+-Y8d}niOM=8uTDUo!xf;IaUdDfObn)eq=vIA;S-e1>vy8>I)GRDxy<#vXG{18XU&qU>ZAymVc*ch)n5rq7-d zddp>AvoTPIBO~O>P14lC)vacb)3{+Ck5!T*NVVBu+VAKMm8URC#FZ&Egea!-$(^ob zHW1|k@LqVdav&tF#ZoMdm{}s#Qb$PB=%WKpRtQ0<(Jb_0-PU+jMjjV|^ny;^9)vl9 zbqfK(#Z!SSH|DAcb)$ie`P;^1*0%Xg6?H<5SswJpdoa^?2~NjE6jt9U(!aAc`4O>y z)P|!r)wv&@sTSg_i#CuiGj}p!F>>h^C%N^8?f+pdCq7A;loD3!H#@wbqG^<~%MYRM zyar)<gfuZfmP74_` zZ8+?$JhvyArLGP@%5+Fixbm!)GKui46TzwXVoNxY7aH_IcFRs1p72h6Yt!REwc4=O zUy~um3S@4YccWTIV?Df+mH_|ldeV7bh8WuxYssn&)n4))wygqV*GQjcOd39Tx@JZJ zc8zo*PJiS9?*?o7{3VHT+ck;dosVl>UurEHfi#)CA8Z?IfnWWR&H$&d_%6E&wLrpIrd^tWZ z57P!2FL9sXvH;B=+XI={g{##wZ=ep&#NAln9qD5&Q(TF6mI<o1tULJ-5Ib>`Y`0lctcjIMV9$iG(qIv04PfWk@^`t zw0MK@n2`a29$H7@I_)|c`uINlfR^2?BJJA&lOTMuoS+&!W^7GW4O6a^X^!)z&8WE> z-grSPtuh(dT7#3yLwkiS;h82iXV@x(6P?4IQRuS1W+VVCW~sP>t(Lc_3NA0)P}99J zl1@qoTtx0Ps+-dekjQUCOJPclXLiw{3G5MjZKm{&mGos<_8Q=c0pH%-?5E_qHTptc*y%zfZw5`F))R@sU~+^mKnIJ$9XUBkwafwTE=k^^eC zKY}9Nt9{Xe`w%2aElw@0cEFELT~$4^UE^>4?h1jkNYsnFA4uDPz4T=dv7y+f|JL=3 zCC$ETz}D6iCr5q@?|#j5`F_MXJeZ%}(!PP~uq>@^8gH64#Zdox*QM4hT=ir2CyceM zNc`wA_FOmkJX1~)gdfiWSi^af)p;9Z!WB|vU%VALo^8N;M1E$6e3oMA=7K$b7V zB|)0P(Hgg!f+g)Pi~&oEOV4QaK&~ktczF5%i~={_Acm!G7GkwDJ9j_p5}%&-kP}Un zGqGkBx9yz{npTxhot9q`4J}qlHI|%~sHxfx2L#4?q71K5*$VOco#tn{bWjauSv*8A zwlnn19Xr5n90qIEsDU+@ zuxr~b&%KmOGP2T*lN?hc*q_dKjMWltCc-{Q;E(&eSiMWH^#Z?}4v)UNYbkkfD19jQ zZgyHZveWk!oi1w6YwIQ0cXSJ1ps>#6ns}P6mxX_!Bk=j=yv*|$RoY@%#xe#BuvM9} zQAki#N*yhi$t5YBtX%Wt*2(1+j07c}W2)6OAz2+_Igxiqy{O+tTqIFAoK9q46=Spg zILOiEl(%*u0xLH3Rw9z4YtuR7?el1kr#BpiL)P0R2KchHmIw@fg)ka}i@5VU-v#Nx|lnu*C ztG$NRj_7nd#(sWzhmN*Sy$^m@`CF3tyjJ22VA}_GjFl&ioC=SP#$rP+w|&= zrg~Z3JJU6s%}}cr{*=9Mqd;8+-`=qmtbCNJuC2AJb!C4WR*d6hfuDF;$E|pAIw8?D z0qufz*|X%yJpAG9a7D0`c8 zd^Bf(xIOHIs61;*yB%f!YSFM_{~TkljAeVcIPJaThrHbOmSV@Rt7G9kNLV6>iN^5T zxA#8vwU1;Y>>o0>9NzirxhvNCUEXh%mc5WcDBX>)JNTIoI4(az4sERa!FjRGmO??a z`EB8Rv_5d?dg}!R;r2{r0%D9M%r+83vC^mJ8Hy=*#iquUnlPpF;|xcv)u+cCn_%XB9d=a`a!I4 zoHkHvUuDv4H)Oib5}*3J&Hk3cXj#hE7n6+4eGmD`r$YvCvpq>(3X4zD9QQMY>d05X z7H&)>p~&rGUqSQ1Rk6ufb{T<7uD9NV@sTH_9{Ks`lG{5!-qcg{OMrZw?>%_;l zdh|_@7~%>U9^(+Qq8tUi;c0YhBzaaFhifAE+Tr(~|9(?)i10$o`}2SfD3x z6=U7*OS-$#Die=X<6I- zywvMk?lxFmRGA!|E47$TS1*^opC`_n5H1BlvFERErwaw0xPXRMfP)O#h=C}LbH!h*N zlIKm+*m*oL^9Ak>+xx-r2{LFC9S?o;G*geZ7;r(++sk>!V*(Q3r}1S7{GN z_m1_jmI{5X|C=y&=Z`M@FU!gH> z$3L~5g*-)YlzIW2xf^LDhV6}LttIEPjn`vDOxYx*x9wu)%v>|TJIWRU_ z&nF{00~ilV*Lq#yMN}yZY!C%~LY-!lC(-S#vHBI70Sf_Ik#4N9hQ$j=%AyaI<|Edg zFD!``Sz`$nZQZF;V-?qzI>p!4!7RnO+9!KtPZnY~RVqn3;UhRde#r7_+}O-++)OXV zJ`Yh9ENni<2EN!boLk{`XmsKEby~H1%|V;3kL;{Bf@|D*l$l>YiC1QA?PVFOw8a7G zc5~ar4#9$3pv_o;pX?PqUjGM?-(O>P3RpbI18~}C*}69Tw+Bw#&yzm z`Fd~$uf2&iXmKl}(jM4jI^%b69&}@1-QbP)@ReNUMbK&}v7;N~L4V^Hn>|S6Dqk(y z@6+M{jl{*E?A?)qQrdgSRG0ffLcun(+Pwh1dHYCwkS6K2vpVtn)NO|1$rPIh#HYCm z4`M<3WK{$Hbg`RZKTuV>rX48AZ(+-xU3d%)YAd(1pRWWta~1E!neM}$U`RyZr1yC2 z&&j{yS+F*<*GLLZfml79ri|Ni78=Hro-T!=C+T!IifUtZMH*svZJ<{?1=8l@gq<4q#pa+1St^7LEoyYJkoyd2YcAEnJ&_HfL4w|qOMHAA&AWj`ik;fyKsvVK{`4LzoLa9A0*u>? z{hQ7%8A^L5P!rm<4YEcppQ%P&Xqq$+yth0TPSct0BR;Q_J{+`P!gFOsZ;;MG75>VDV35Kwe8a| zZ8cvnhO30G!{T)0R$IiyHQ4&PX$O_Af)Cy4_glQLeYUp+!8}H3qg5*>VB~yyIJKWm ztpIR`+EvE>v&ZglhZu$|9A{C{Q`nE=Pq>yc?!WmD6*ep$z}|Rs<)WoUj+|6& z^;ys2xi8sxdNE%nr3I62^bKyzVDo6(comjsH$~TnYtG3ostgSt6-+3(c%>oZI0}e=%s1o z1$<+^C}nDYjt7G_i}=PIrTn22qK`b1<#P+BQ$AhNij&RyJkiw1hxY49ZjkYYxKry? zf3n3xR6Du;uZJtc*7W2j;m%CtfbJGdp%>wZ?2vDiE47Of7)F&KDuJmO#H!jA5G*j~ zGi4Jks8@{0emd+=1N>kk?Vg*m4g3AD<%6euz4H-s`AbW>k~LcprF* z;`OQhs>Q>sJp`ftE8+s)lq7s_Da2mfr9F?c7Rb1sbT;9al&235WG_aJx2yzjvvc3T zx5}FVQY!Q>O6J-qSt}z(N)7(cmv&yEW0|eEq3ulqF%-OVdf!UKuCRgCM#@#A?45d1 zNKBbYhf`FWhqCnjRLE4L4>pM^KT55>0q+WLChfa8qIKAZ-9*YfScoc^HkfMquJ{K< z&U-v=Lzn2c401hFJ7{8Wd$6#*&YHH=A8=oGfSm#inEQ^hxF>^>T-686qMFZa$KSll zfSt)*y=Bd4&lhsN+sf5V8Cd|2$Isbd~&OGmjBu#H%|5CfVs=9jBTH^n#^Ns0EJABjP zdg=(v<6-U7cz^=UHgWp!h!ctxB-D= z%D3bzW+fihcmN(mmEhWT{n-_{Ji;v1JL)?gD?a zcw^3F+5*9)y4KfD?j!ltKxK?e41nE0p@Ft-+6p?Wv>U&nNrgz?6ApuIU#IVWy=Euk zhuD%?P2H&`m~HNT?hK}2f%3wu!f*oPwaOPPxu%K**7{cTe*(>?RZ2O7fj2O-)*7^8}&x?eQ$sd7ay{ z{l^mZbKRSapg+5;ehhs$Um_4FJ3$}$A9$U^olv2F*zq=Y*Axo&>rym?G&ounGOnSJ zDKtdJ+V*=lx9G2UA7t3@R)F04+X%-jnyKpFVfwU4-dJ$HyX1DT`1eb?F;6MOBCPLt;hW&Y?0W$Zv63!bpnTqnnA}1rj43|_H#;$ z{qD0cH@uT;u0Te=1Lf&-L1g`doR;scr{|OX$BLf@9TLGvQT@5F-IOhL{?*WI{sHQz z(Ri8$E5H9T+QEy_JS{yVe_AbbDO$VhB=#m2B!VEM+I-dGrd9=?fow-y9Svd5cGwff zA<^T?`g8~t^|Kj7>zqXV7l*CMvVZs1|7r-hj{D-!W9WgIh;0xK6_->&lil1!fLZ)* z8sZv-fw{|nM$!2SE$~2BKM;>1VUcs`HHFr?KyJ9a-MEX~akoj7NAY>((wGGB@=D3` z%)cUZ{<^8x*uL#=Hl2R_BEUevw~8_1+D5A4y6$w&?~`-b^3$kpKaDCvc{*88n)@JE z+2#ps^5Jf6E52oX82O`7s>(nn6e zlDyh-y3}hz1*;0tGw?8Nx|mGoyCd_`k|R(>gAEx6Bk4?jM7;{~QA1o7hKA0DaOJ|x zYjwdl8?|j?_neyl$Nz6gb-{i za!S#r9?|2@aZEU-+R3gnr<(AQ=(w{(sM6ks7dv?+e2*DaXMBp${HA5;l(MUztQW=T zx!zjHyM$!;4BKU7+RuOKq6(Z3xt8^C+$?2=JU=~q>H@bmmeIW#`A^sHzaQS7p1c@~ zv2@A*ce>$eYn*)wcyJ*{WI=m^L!p>ajb8t^pWgcWj>^BX>P$STD_~KN4yK35dxNRJ zmA;|r(X+jlMo;+-6O<=oeKM8xI`Cil1N`^q!&NQZyPx#(}NS$n+Hs0&fwb&6+65m z{+`TNM)*X+8LkCzD%y44T?ON{EbB^la(KdByi=tL$`rVs9MN_&qXhC^j>SDkXfkEU z9qS_6GFt!wp81siJ99nv|LlGTWeI7nDf`3PDuMx1KyL!v;r)n4#$)vnsN|#HM&BuL z3SW20v~-Rf7SLv8#Si;}M?D!5{!KiXon?s%Zw?GHBnACrf6XXwn9BWL{M zHB1LS!=P6d;$or8W$l3qZCu-G1|hf@+w81)l!M7W+k3RCQp0DJ9)VcHss}}^l+P@Z zUfs-9LALm({<9mhbgtrEXlKLj3Ff43MtqMVOKekJvenvNn%y_8gt|sia>I8nS|g)B z(}gd33-$4d)@w}@R$iCe*uJ;3jXunu!m74fPX1w_!hLwT#z!%EWjpbUtK*6Wy7LV( zq15v0v_rGZ>K?n$746K|=7uEIm}{{=9B8BhGT75cy;W&}w;T;A-)lJ8V`1Qdr&rs zz%H?8qO0Wiv(J+|?=S(tj;+H<3~8>!*`&3Bra7AOR`y`%ZKB* zdNi`&w>hl0#Gg*kpcUV%%&3x!9N{<&G#_mb&P_eW8Rly34aHfk$J4uMm)yF1KC+`a ztkc!lV=#H{(!B`rp(;5j3J`G zZ6Ikdf{_o#%_(Oc!=%4K5S-~xfeI|^`%Zx?T59%Y*CNcz{L=PtOsKI0}9KdCzU1E13dGJJp#K9THM16WG8fT6D$OS=O9yO_xJ1IKsEHaS<>&!}EDJ89kg@ zFFwK(m!<9IpHhvynT7uCz{UOZz~%5)9k^_Uf9ijLVxZL`+WbL-VMYiUGMmXWwJAhL z_=CKv!3iab^rVn_BPHWZUzD(K5(uI>^!5o^^{jYc4K6`yI3$x>vG%h74&EQ(en(o* z&Ck>$29X$7wIpp_#*#@Hw%t?4Aw!0EF0;fU=GVz3lNn`Qpc0xxR&*+%O@|{EUjk-& zyKQB(xeY*dOQxo;HYU^2TAGLgnt+2=%@2CZEC=TiQ(FXnnLjbhM#kHFmrBlQo#h@a zcULty!fv`=>z*HnoBkX;vf@trmhuJC?eEF>JJ(y$63<&9Waww3kWpUOnR;?!gYP1{KJgHirZA{#44-5&}?D& zULony*lORkRSSR1bKm;j+`QSvz|-Lw<7`z^J=5~A-^O{Nbf3`c{CF_4vGlqT>BLT@ zJIjag-`U5UVKd_e$qcW3mGuW2vW=feW_%yn6<7y<{ZA!t!}8xvzQS{{*P>+!h!(pg7f9AI!A%{RmWX zW(?D}ld?KL&yc(9Q7R?r4=tg>0d+~X@0_2Lb=(inQzNZwQ<+5@kEZOK&p(e4avohz zSbhVY$;R3eH)8-E0(Gfxu70w%UCdVK4VVp7`fiPJJoj?OMa|e~NuM}Q1G|2Ng_kF~ zOxYZHIq-A^l!yM)E&Dq=(AoH)UE2NPDd%4yRq=pj{qw^h5^4dF`E^Q#SNSQ~&Yz76Ybw`g&q4DN8-baMw6oY_du0%Bn;R@WXlJDvk*N-#<&u8G`GPa- zn(wMRYFy1XKlLZ);3Dm6%VO*Fh~v_T(@337(vNsmHw33?=1kS0NbWqVkue*uuEfV( zDuaHP9FZxb&HiJvma-Qgq%K~`5+02R130%Zdu%qkNJeT@7Ai7N({LVHuS%nlY{=US zl;f|>d3}^@T80ew`+d5x2k+~*yg(Qo#B_H?{QeA1@_&Xzf-gXCRD(eEt3R-HQ9}#= zWa~P|JWV(;mzVuv9!GhU&2Riwi{eY^zNYyIG@T9)#2M}bZ8kA}_n>-Lv-PXo$+-Ux z(tLQdc(V8$H)8M!;l;)* zH8?%@v5s!=cG&tlv~AWWz|-`z+DKKEmUu4C#m_z#L#pExo7A5!?tg0)6%Gi#;GEsI z?p410zK5bBLqG!cK_Kg;!zmt49clcJ#+FOxD=Rt&`HttFBNzUHfICI7{lX)B?lY5! z`+HUmz_{Q*5LvB(gX)YbLtc}InY1#+gF-Z0tJar9f@Dv@)C|9zE2`lKb01sB| zHJ$K#I!+>Vzl2Z*KbkYyuZ)1{fb!ngm`@>GXv^9C(p2uUtB?SFNFqJo47dQ3saX|Z zpS_Xc1@1~OWUUy&Py?l>+q7p({z$(S-vE5qA@@6vXpuN zO5YpTY%5OK`);Km^Jf9bH zcj78v)WU|2p~dWzZ~1^`AdAL5#Ol?3fOE`3T($@Bz@In>p+I8C}W-a6#P zS}eh%XPcaO7vbblWw`j04vSvptpSb1u%0CAztZhgW3BBvdsTy1Jj53BK|#RAjY0J~ULx)I*rnCSCcvjhdr6fL zsnB7GCw@POFgv|co^-G{EMX-A8wl%mZf1$oB>Cgx5Vz@S6zhm2=(Q_2yx@6=3VQHD zGaCkU3sj<{L^e#sqheJLtT$g5X-?Q-RZEPcW_+dUZg8!3Y5`M{D2zd)i{d=vZ9SAf zh$5He*xvMkdhgN=VJq01d%jFwsrZiLOVEz#A&1r%Hz0Kz9&=-X8|yJaG2Zu!!t@c| zhqM3~>8`>b?oCy$QUgw%$-Y>Lg?nI&W1%8Tdt4Ku5v3!=x2CycqjoYJ`0m8`B6n>F zZs>tR9ikDZsle5+lCmeq_(H{(Gn*5`CdT68w--uIwp;-#LwR<(k$uHW)yc=Uz@x2V zx7;Z_1Z*eM)pynEA~an;9tGnBvy%=-Tq#nDej;W2PJ|cV**TyE)|E7nlifyyTRv$_ z69yO#RB_u^BgszaFvS+VEz1dEw{J`NT*|q4z=WmYAd*0MZr~r>`pJa26gtD8VKMjF z=ko1COX0Og#HEOWMObwhhu-EW1W_dQMO?# z7AK7CW6y}Y%2g}Wm3oguCkK0gvQ#OFfrtG}33p}pmP3QIBI@tImZ>8Qj0@xff%SNNqMD$vAu_Tn*g=NoiG>=X9Gd$Z>gA2 z#Q<1Dt;HqHQfOryB_OgM<-F0diuFI-W4C8Ve`LBXC^}IlLsgzz|LR$vwf?nd3LFP# zjeruF&`Ya$8#b!vMv8+A?xMHLiH>o9^_@VMbvL}2VL&maPC$8?_87m(2`kVFJPK1| z^3MI+vaiAd?CVs_vKVF2ESiy;#0kxs>3KmzD2*Am1&%F2ef*WS#Df6yBFf-|xddRf zWx{84vF$)1PPYOaL?Y8g+q`{eSJW+Kf%`krokb9GnU;iFy}K0n zk1)Vc`)lb+t&8Fr4rQ2)D=<&wJ;?JoLpC&b-re}Hvu<%uzKN|b>DNKX-) z$sJnvijLB7*#*3{*thf}^3ZpY95xzOz%ew#miZp^m58avF1HD%`{Eu&9ky>#bE?2_ z1A$!9{=)o>4riIFy!k%Hey0q^)`jMIYeXO$Y2D1smCDDOdEjTaY@ysl=|!EM@@I5B zLnW>@IYwKGmW>n#w{-4p)HErDPOUeE{Hgi;VMRREE}Zmh#2!pCMe$}x_A0YVapH}x zFw_f(Rn~bnnt5NAs$Oq~QW)(j-euy%3+$YTg&%XIN2L$&+9cGJG$mNB#FUbc^wy=D zhCueC-C&CKHHyoj_Yft5vOhs}`xd={zZb_U$#4&Z$a6JXFIV23M_w#xL#CJ~I+ZP6 z8x0*6HO2SSYT)rF(hK(DlpJZRk#%3k4@*OjZI@fgcBeg(w2%T8md8;Q=BI;|e!S`$ zJh^w048P0w#u#x6IAjl8?)0ce7j}wdpJ0b#0RK$AS6m_HrKD(?Vo`o{1NXY26SxX% znIb~2itopvdsuIx^p%Ct8=X-{xc_R6-kNtjB141k{dYBuL@Y|(J4-W0fF6#n#ko#n zz|EnX|N8Bz;^1k2@zOQu0+~P|^BtbVP1?!BhW=hY+SQ4qMv;9Al=6H&nmEQ3&G@{V z{Lof*#NsK=q8*B8d~VepAzpt@_F1=ZsZNU{va*uJk`_dda40ClmZ3hj^7m=;*|V=% zU&PO|ZFh+azpA*!Omc*XR#}X-wYz=5Au#2!=?+_7uhc$vtyFEF=|>~r3lQI``j8D~ zBexb2{5`qMTJ?ZCH7kDkYY$H7`Gyt6Ievr#0YoIT3MABNy?AVAvX| z?H7NAx~v|+bZOIjF}}}~1x+Q3k5?{DR;tsBg=<4$O6EYS&FvwNfdwa^V>Z1jYu#h} z%+m`ihjxO2-S48XrTj&6W_Zx;6Th)?(3iXmQ!;9g0x5v%;aHgtA?1}{`8*CTN+yg9 zs&q%}HJg5S$V2`lX+Y_0km4$CZ|q{yw4Q8Z(uioN^O;PURr*yLjkpM}3R|}Rj2wIk z3ErJ|RhII8GtNlBNpI;~sDTQNJHeS$Zb(t+K4ta$u_B2tAC9d7r9OPmP7_T{hFCRA zhzn}*YRBa+F2Gy1kTozxy72<>Wz!%snz8!Y?<91WZU|p6FZOC_jH0DE(qIdOa0x`l z{Vhe-!9PRRNmEoR_hMptou>5J9Wf2^2qJmV71o5hjGD02MhBl)XpI%FtEKH0C z?hVGS-Xa~m0StVIWG!*mOK7=ky%znf#H<|2_a1)k>bUK@S-}^K)JuHmsK$X=$6mxE zt(qRIS|!dwujf$2knn4-_fe(b4fYbQ8$=UseE8?#DxtN~lF7kgR@4F&cN?K$&1x}i zq&2Qu7s<*auQ?{(0}LE$lghd23}U(al`SJNSve%cELkMnLS=?DI%g+MoprfGXQidw zLL-`@xrc_uWN8gpduHP{zvT24=1fWRnrdW_!K^P1w+ceZDm7n7j`=y9%bbkUK6N0& z;1T)|os>j+`z+@(u8^OWWcZve`!*5?*=X({JW)n#X~-g>El)hMPPgt?O5)W<;;qY} zR|@v_@ZI>7EttZX8aRs7Oy)xIWb^V!G)QXieXWt2G1bkk2?8=`2ba_CT#Cw#_g-mC zwTHqNxs(g|dCeFcdR#c*xgC>#)9mH1JR)K5>VDydA^+H6vp`p-_|b`4#%@ToM@+U(j(?s`wqf!IA&68h8s%TitDLt#_E3 z!{ExIr((5vq$n>#i7C5@;elG}mkErzN@@W8mv2YC`SdJP-IMA3lj$_``p#}8{W?RZ z_f$jmtSnGunhxpqZxkH3!~oo+{28jD`!&Jr+e}=X%W+i>vVA!iC0mve1SyqU(muwk zZqLG#pRN>#5p+4j35seR{cz9FrmJEmI*fA8}t;m;Uz4Hn5FGLs(d&^7&y$X9J!e5#z@pKcuo_tUvG^-4m_1u3GX?W^n1-{ zzvjWYNCQDHauHtLA947}8*FMQ%WKi*y_AB-^AR%xg7cI~VnFB!8ba#(8%gr|Z9-Aw zW-Rvs1Ikl^Cb|QyESJ&u#HS6@UD`J|R0wp8xPHLe>!Xdg@*&Ts>!hn7Q$l%m+bMQbwW384v5ucUR&ooV(sb_oMmEZ4?v9S4IAumS z=e-d%Po+cs%%xCom-*hVJ{8L&=HzEf2pD+(rc}@G&V`_8*9r|fYl6^zFH=x|sxSh* z0OKmNF9!;K9~T1;t}O1xw=nm8_Ez@iiFZv`5*s~NlQkA}OxU&ttwasy=+5fKExjdR8e2s5mYtOpRbQf`1x|=x3n~PVO=ooO1X9~^RoZZx+alX&o6a=JokC?-B zC#_3V(>|a|H{(N$P7KdE-VX+6ey4ba+ZBfMedZjHW-rtq#R?Uwh6lDf(vxgdoLC)i2sOLB zHFpR?Yf#(do(5*ob?p=cb1fuKy;|NxZSVDepqt6h;;>zJ|B4GKUjxxstjuey5CtKI zF~+kaUxNwv{h8iq1R+!*5viY^sv_GAZp*~}L(~%tXYH3(9>cqo5;+4aRnbdHhBTft7iM`U*B8};>H`&gE z>D7w9SKQCdiwF0|r*Y{Pmjc|iKFq|-FlbPZ%r)jHGV%B%e2pRq42EW91;*FEh7|bf zQymCQo@7l(XIL)yxMAeRssC1%r_$3oEwZ0%`gPgi1ZAheRN;MivC=MTzmF1b;cC-i<@$0vMR=Z`j4R2Z$KLuVT_%E-+P*01Wll`nLHa~>-@*W>JBAH zs9sqpSl9oix*n|&LI1klVe3=s*#Ks#7$U=~x7ImfGQDhnM(nnKdaCZUZrSXp3zyc? zPUutYVQ87)N^r#?>;hxCL_pPHQ68=1h|}`r-bCQ|Nzxp1aVNXP;Oc?{QjWGm5CW#( zOvTSq)YUDNgIm&hQ^lhR{L`aqZx99b9#9*n0WHtEwtH*&Ht4MRvHKQe?0=Q*I?i5n zAKVN)8qR(%%@Goyfx>ryz&j>m%iOH*DnT!0x9C=xnMfwN0V|#fYV7_jy?p;|;ll7w z(gRRvECbPvUpE~8BPrt<>*n7lR!7eYeFwst&(ZW#*kOPkx@ug^-*NbXxM%D0i?D+` z=;!^{jw5|7qT=a-A>Z{qHf*I(z0O+S8l6Q75|Z3r56QtG%WT8P4m}cuSW5Cgf0V7%J)D zG}OZCe|DDW-}AHTfUbYsv=p1TSb{1yDK6^A>ef= zI3=Rc-|W{ld^!|p>%Ed~0YY0enaww9>uK{ApBGfjx!jlFa;OatCV?2U?L0NIEb65UC1Jo4} z!-FeaXxtDj%mJt;rzJ#%P$q?~M9a!5Mj1~XO7J;AB|Sw?K5YQ`%UF#}D5EQ2>}<(j z<)_{QYGvaP{*NVoJj(6ReQybSOw}C&e|7^px-b!e4t%Krg8|+oz0mZ{i4?@8#k+Zf z1!p8W*mODO+*A7?yIB#d=6sf&|Ag|a2h2OpKw2>?`6nC?Pns{c z+aRaw{l_@JB!YRSe=MpjCQr6>L!QI;U%LR&$bIj>&bge`(r}8rmJ+H$*R0L?62+1^xsB4T>gfgmMT^gZ z*V)cbG0bs9dx#eI?V1m zx~V#C3^ELC^<1FF`a3N^ekDZ}c@h8#%5#B9#?H|zhstv>AU zXt^IbFkBmaf>(^|Ew9!lypk#|E7!KZC)rZdGrI3u!uY=9Y1UKM8Rht#bBw6mi@VxG46Wi$BI31R0004tC0W5XEv)py=;H-aQ58rU#J%MITGy9 zET+amzV75?LIS{sR zY`};Su-T`r&B^pERY7L+Ee8ShJc4n z@6_}n5Vq9x&5qATT!A&uu($I0;bwaUjn`yP4F?IFJ_DR_*FQJBt&57zzc63XGIh&K zR)eP_J!td`yME*b9oSA4NtA74$GJcC37|6{jSK@xXJB}#;Hec$StIjJ%)(UEUDhW= zV2qOeL5hpZ40*IJ58y2~|6g&R{qxBWJwtVOP0M}hU0@VyE5YErDW92a%DRBLomlG@sr0 ze&ZF2vXGemyZbh9JrGDtN@YJEerc|c@uWU2#skA=ra!fGj{h1hou`zS+w#|qP&*XA zR&M<^2{vptmv^y1*HUpJXi?%jGF-_Ry>ce(@aEtsi?fZ-Z1fr;As4Ans9sre<~ND9 zwz`mP05sKRN~gaI@coft4x1h=4nCMQ*!qD4uZyih+Z$U^@lsx=1SOHS&2DY%B4#gM z5*YACF?aRns%9jc2hBvLb&NS)v$~%|SrmjUu~#=B+8?|8u&;K?J<-8sNBW4?kk7nL zm2Eqy2fkf(fpWcWfX~m%V0pZSK}GcovT5xnss*2IqW=4y>k%lb#rVSiGMfM0q%PFU zg*i7I)kM{=WgD)H_On%>FuIYUAQk72>|Bx zT9bp`vf*+{O;@ru2k`^W*Q+VGDX*>h{}}Ziu+Qqh*L+^i9j54b8jSNUJUO1)r=68z z@ZA;xJdUZ8O6zutHAFkjg|YQXfxPO9 z`-n+A$ym4j;AWM*FpsGRv+YexDLSSeyy-#M#ub9na9YnYm8NGwtvgjJ3K1viYuU}r zSl7diqQYlRhBnW|W*_EHeob3S{|W3m>Lq6I7JTx4{RHGF54eXqOcci8Zr|aXJj}2ae;MnYc7UTU} z&ww`crPoY$Z5ZnXQzt&RPV!k?#;Gr7Zt5+Hp>#B}oVWCj^6)lxxiPk0e_ZB(q+GG# zFzr=`Ns5_Gd9D*tXedTB`C@MZh`pNL^|17}Ctk)_UOS*NMXj5W-`p0j%_G_D1UC)nrT8jReO z8Q7m+5(f82z$^BD&odVP*YS)MrvAn=#x524ZS4>6kOCNypYRZ@6++kfy`@6 z8egkSr`Ns#Jho)kotw^+1Ip24=A!SQ(_@ha$=w8?e9*ys(Ls<}I^PqERo{Gdql)(#3*v8OWF}W|+R|My0j1>Mv`B z6!gx~ya#GlJ*rZva0Z~lkh>?eZbR3VNK3=nnI7sD)na)9dJzjMOk#fXz zBgIua4aSq$$$l)k@b6+jfywrlYwx^TOjhagH<8%9DQmw4tl2G?9|6nw{O*V#x9Xhx zy+^|Q!_Il(-KxO%9$QE4(_j)$w_c@t@H0)aSN-3Jk$-BP=Q`S-rr|o^twZ~T zWS!fmfEQ7?IeFy;X;U1SSyqh`(O!Ra-%CI!)Peg-JOwb@H+_G7r4}aYTYM#yMC0u?!P$ zFDwIO^*se0g0aH6TL!p9GVI!cw?`3b&77gWCA>0Dk{%-HF^Ss z%Rie7HO~K68%ybz7a?IUT4`p}-=j`cq!|eKM-WH>SsjF@OD2*}{vo3SB}?@c8Gogm zuI}a41HwzTkM4Ls^Lx9JSN+V7q~OP?zxGv)Eyuq8*P<5RO1KlCH&Ew!xogdg`jW0A`AvS-w8L zOoAodxoh{Gg-ao0P8Ea){GZ9LIKh{q2*H4w=HMRyWBbVPfeQG7N3G~rS9EaD3h`L?`<8sQw17vJ)o z6`^4S0tJT+jq2NX+fi4|I9qDU97T7l%-^?vZ1ksal85uffk{Af<$mP5QVIQ;lutva zSRQt>=K&R)a`&Z#0It>WFqzARma&VU=b_6OjH7-z7lVcPsQO2jFY-XamLG=e(Z0p_ zZzVy$s6D+HXZ`_FOy&24l7Mwq5*xbx#PxJTa-7Jc~W|Ab))li5nQ}Q z(8!`Fj80MWjPHY{>|?tmimfL$djLeML?Yle0`xWn$H4^TW~Jnv!uG3XoVFM1Ym_tR z_LvH3hpsC%Xnk_A+{K7g=$)2!0S)%9jl&G4f&4z-7j(USTI%7pN1J?_J2`|dp*4dn z{Ee4RS{?-e_epnLPOMp@shS28+S~_Xd+Doc_uBjnOQgl;bkTEU3`^X~w0wTsZloR= zu1-YHaY>310Zbo1O#-7Py$_tlTCpw>mO zprJ||38gyjwg(6iwq+l9sY?7`ztun~$Wi|C`V=I!?i8L6{HO5N8oj&0w5FlQVbw(O zL}lM_?`d~~VU*AP^}KqGzYzk+QB2^bGtVLNfD1H)n#Wt`p;624cOUBsaK8vR`M37M zcjQL;*_GLFd(BtmPaw7P2VJEAY!n5pXWl~52TZj_m|6!c`dUxecX3&3*uXAU0^iln z(KCNeo=$niSyF>)T}dg1E)&hR2O&Ao4>72NVYqo4v}WRjnRQ-VxS(BXqE0{(4|=BOPjLd_MxbXF zoDsz2D_1LR%iT7v-X}1XX3`bed$-NkzheGaL3#s{meF%i--y7^)sP{GGgo$ z>U9Ikil^`W@Ro0cnPDcI>PQl4x~Rk{xv^}q~on#WP zYn)X(+0%PaKr$p{0qyrYY}M=AvNeWuZBY@V7qDyXYYsu-2l7-M$O0igQ+y5P^vFP z-!~T5oTYAoEA%8Z6)=#VkN30OPgmCKNJj@VQDOH}G?5-6S2Np13wRb-^f|zlb0f_$ z_jz?bJEB|Xg`C5+xu)5A)WZ|BU)N(xkPDSLphE}NB1^E{+A8@mk_&uxjecuo3ePjpSzPW!zP+V316rMwvh{bjY za?Sk^$<|iQ!KZ%+GoTI}jxP+l&_1!SO#BkER?iJ`FBXXZHGf_#uBo+5m-~&cuBVc^ zeJjpW%5;r6Vt%VdzTP9NIC2-3n+wsvD<2U{0tbH>*VgH_M$s6u6+%*jZhTg3J0vkI zu`T|qWkZjQ?C@@PR+|i4dIZ1sW5I0aXiu2ykN*6V9Gj-zt#*>)xO4Hv0~O01!qqUT zdRE;wWL#$+sppL@Fvjg4-e1Oecg_G8Z4#(>Ij|e;r@HdUZ3l3i{1hvHYQN0~$ znoXXtRptI_%|^N?7RUlsi#-eqb}@{2w+=G!flU<4WRq1ij6lc@+ zm@OX$()wyPmj`V~pC!v7e|oX-4IMh%OfSVlND-0OT;Ulj!?Al2S&1v=_!uY6v7=o) z>pPw>&r7l1{Rk9FedKlEfEC<0`5_wkJ2KJ{nQ#2OkeibRX3imPgE{Pg!FeK*YY$LK z7U_6TBy{cS^=u|LRZXK-)hC(Y#^$CCK8SdYnW2G`R0iAW``W@`B>k=*uhEtcC*FJI zR7%Ot!ZpmQv=cQ8G)zVfu-x=(f0y#I*f%jtX_Tj0sEnN8C>iJQfC~6NbZIxgRbM#- z6pFE&sEi!rkeLO#M2>T~WxlO0k7CK23+Oe=v2r#|iAXJ202WB`_iI{yMbe-(&_RtQkjjQNWmts==Sv?#rs+M>9c#9qIrZ{vx8~anI)S~@j53m@+n`8 z##2V60k6F{N`x_|q7_pm8KZ^V9^mi5AGyTp7)PVN8TVFZhrHK;WrdredTV>TUg!28 zuK%Q8Id`ij;f8Q*u(>gH>)UUn2z5LfXe`+z$&e;e@ij4D7SX-Tc2mH0vn4J@@1}B( z;+l_$kapS{MWoqp3E9H^eTfsP-e!{xR^#WrVj|F@^zcG$92gV&nmI16KJ&zt^8PW4 z{;}c!ckH^Ex9g|8t;a&cfheBzrt!Bi;btmc7j;s)YOx&iTQ%`P+Jvgbmzxj!!s}!5 zZMDd*PZ4%q0`;*L38Y1T2S=(Je$9Ht%#p~fGwrfeL=8#aX$ zz135{Zn7>~&GR)-sSI`^mUyKYVV2F4gBJtzL3J7=%5Y1^KI{s4TLfvi+HdmOP`vM{ z;Q2J9y^Lq5LvK2rI{m%966%g+V^5RDQ0ujCt7hAIa=2>a>1;}PHXZTT8XQJ72`tX%+XZIm;Wvf_ljoJpfYXC* zGrgL|YE8Az2h){%y_S4w#ByPLD0Cy`DY{2>YP86WXGA0_a|;qapm|^!YbC?PM`0`o zXG*>PLX?$)r{=Y@4&v8*;wl`$2FM2+Tl#76!{5>`Fq&i`>FYXVg*o8cJti-DLxpgo zBuMcfiw?e>B{Qv{0%0cCdb=TG^JKza<3X;+=6qOTeTyMC)Nd)OufUy7_)ug?pT4yj z|BMi8Pu0llMbR+=7roTt-t#?`IiC0N+bg~i%ESds_}$oSh!NrpR%7x4PkiUL^FYCM zc%RF3RTWa&gS*rjHLS{Q<$$Zk!qIe9jQR6IVGkW;(~%5gqe8J{EzV?l*#RMF1ua7uNDZqjrtEo*)|MxOs(R=tl(b*1TU4mI3 zi3Q<%hbyAf|0TBJKf8#c_P@~b0W5ccy`!@g4M;1Y(X|=XvnlGIMk`h@G~b^;s>zU_ z2lnS#SRNLh&h^;rbaUWc;bm^FPuSUh%(4TX=wzsEGVtsQU@Efo=tXr;{yw z>DUAzm3Z+U~+>UJd3$Qjc+skz?B?J7on_b_2)tota!8_&A1yGU3C8$s> z9|ws~WA#2oxSZ9hSTn$-eZ>qOyD5w+ObBbJoB{S^pB5wwSrv-D-UomNbRPFc6d?K|@2ZrK!B@qAl{e z@&TvhdK!L)ke^7ZBImIA#B2Pt+9Z3ds{UCVa9pRBEHlxP6D#AH?(+;M#yQze!W};q zo1mE^tE9>B9PYzJWV5X6c)~&}5MWJM{M(ZZR=hs{KMx-`YhUW|cv-GE2L z!G$V2!v;~rvG!DAseFm#+eW&1-LzCWN*E~e?MNic%n6NnSjF5=DM&ywFG14w*_5_B zTS)%hn;NX63OfM=j!aJd;o(vhR`irtFEM%XOK6JI^&$}Li#V&(1xP9$@g2gMD<=E5 z0!oX^YZ_*>GcF!*t**upu5mP#AE`f@*oH}D<$xJH%krASGWTGNX>84=>PyF?G1irXLzX|bJ88=|Dk#;^HM!-PI+KE z5{!x`orU)02FN6)d3F7T?bn`Ds=sm6;cW({3jdO#YuccC(F>~otRcMnChZPnBBV4w ztx|R|cED-luqd`LpG)2|wIlH@1OxK9$eZZI?^Z;@ms(yQyEEZ6;hEbIA)YLiZ`=de zIjU(a`CIX&!Y!LB*LMj5oxS~uE|{wek`JFtpSsrCC+z8;BdV`UaAZ9kAJup?=O^-> zQZHN=OtN=p>s@-ZMz#%{Inn^CPrCcIG`jrPG-Gg8Wir722brS!0nWaf!dnYqrYE0| z&)Di#F<*a!&-oeMUxB47;42!T@&SM0^^itqS@?A&y7Y}0I^c(C5axTd+lRiUUS*@G zePYk2I4s!Y*juOZk5MPqPhSUfn?NFH#N^>J!(pn;0l3ND{nM(kvlGDW$R*U|G#r9O zD|*GWh^+XUYsILjbK2n`+R$u&F;ca(tP_{D*wVn_{-BG0FQVPV=)Md=ySxXzneRG! zeu;BcXKMW?U4p^>jb9ztPaw@6C#3c>)>&pB_A+0J%*=z$h~|W68bjRmCgU)aD=)3p zSjvBQ$v)Ndg6;%`R=Iv?|K;~>UNpx7RY&~>Nu?n-t#X7%LFsmECwMPwwX1LfY?B%yf z!W!he?Lft6Ohz?>Fk1W6+Wz&skFX{HdjQsKc4z4R=ldnj;yO+CbMi>f=C!(wqiq|@ zlun0!3%>5mW`n?Qb=U7tB6uyCd=})^Ermz&a&-qkXqhxtA3Fa3LLp@0Vy0s+@e^MolBewE?T;+^;plexi{{J&uL#v~k#1_#C=cy& z7U%yB3_O+h+ch9uSB&-gAGmKMg^*#hnLN$OU0^u1<(tdLHh!lehw=YZ1@FgX^-`)u`hD7idZXSadca%T@5-ptQ22J$ z$_D$~SG{GGPR2b0s=Z}xuofxaUO_zBCpdEgmLiGA%mIwU{5j6oX-gI=+=Kz@HWby7 zf=OW=sf=m#K8B;0J|sk6!cT`P<{XEfRhGVNE$<4u={~G^ew z1=olJ?CDVq3F*}V3zq_~J4o6=^X+V={h`h)yRaAkKDEdD!@vKe)WAOe;oq+hYVORx z_~gQEdfi5xgX#?T=j~)b73uy42nX@Vmzl=@4~ShtlGk~z>(*`lJW%b&z~v`Y4GbRH zCW__vydr(-pc)2zwJ#@6pflY)SSh4ZIfXW`Jfaf3lCEGKF7!QZ1UmQoFO6@B^7jmt z`JL2I=XB`1PqR=5hbdD)jh$VZ39g{9%hF%1>>MYtFL2}IYKXMyEp2n(U=75TZd#=#XZuK>{$?xs@5ZNd2>A+SM@P<_}h2(nOv}vMypZr zMTn)4{AEfSNL{x?Le$(q+?lcCCyp+H&rk8ggH;0SCu;(VJh0$QcU(ydz-vZ%Wi4UP3mpe$c#!h1@#r*Q<57rsz zyNxUue0c8`mwnTZVTLB}MSuT?(7Y6B;YJkSxJI$9I*`9DEHn>HGao&e&hd{TZAv}jh9Jhfp zh3FmcczAcKlZF9)Me%e)+z$hnVik`(vZisTdNbZgJsKsMxf;ih8uG+H9f|-JQQk?nzoiTYm@Q zviF4_*MT0RkM1I8*onNToPNcdikfJH*;waUv>uUX?K$xc0;ttI zbxL8Ib+5d3Hss5hXyerQA!dM6Mq_1Ya{trA|>?_tzBy=bw(~58P#I$zpN6|=ak~r#UB@z=-w$EwM$}}DCaW7!`-wa2K zfSbyVc>!W%?t$UZLnpepp_N9%e&5C(PE(GXZdX&7!)0E9c$(p>S=TJUFg*pdfe?Bb zJ}km&SoL2owc=fQO-HG0w6R%jaj7At%GTIi-W_5kuo{7daf=An+Rv69x^tXAe7FV6 zxnc-Hb!Ei`k^$#S(t9+jd)%#O_g$G}2Dck?PMj!wr^1w%PCwG|=VpM0B5`;kh>NBh zy0abPV>@PomAt)UPO|kULTm21G5cgMXz<|QBc1O2Iv$nUpI&D@2`*l6XfT_w>$K;? zn|>b~Y|^CmQYHy*f6b&!Y3A#N)cFOpPkSKgt)NeunXF`voHrg=eO{oLTuh=*P}qii zM>3h@Z06xt7 zpk$~Ztb$87Qw=m9a#jEwMMptw2RHY~BN;BNnX9mJ$J-tV$|?xUcr8@>)K=2{9D73-FWlfONY|UU9HKeP)09jKJ^> zCHXo0@&m6{h|a-wx{yg}bk35@-221OdF@sUOFMWu2YPc4Qu~~?e5*d_ZCsA;A<#;j zgNK_DlO7g_$xoTB6}&on-~8isOY$=eb@@cy8gB=yQWG-PUavio(E8PUsCzuk3jl3+ z2-DwjMU%ccKF%A~9SID|C@c37@O+|K4i&MQ-B#d3C;ZMq=p`^S9(WQNE2d1CEB(35Po)B z%Ge3!_E5E75up@s*f4*HPQro|5Wk6g>+_72zB}l`VYPb+@vT@L&N*%)ztRGIYsw~B z)Ll1_&DG+7KABU)$i1(V{VKOj)6j;+2Et~>sR1YkX_GlqXYobibdTKM(o6j)hsf27 z)|Njf!TaOpAPY$~F9-SrYx_{y|FuT37lrnx81yPK< z-^MskRflw`WryKXP}X6V&8BtkjR{;ytD#%7`=Xp0DQj9Jj4mEiw>8fvWN(evp=&74 zGRNIssS1ZBW=c~l>;fLW$7m?IBES~B4FhOLR%=++f*_OVC8&3aiW?kf?uzJBd|M7$ zL{o(b{7Q~9#~AZ(Q8h2^$g@MgD-)^0SzdCC74B`&h+@jcAru$OF zz4)<-WD20d>M@lNU)ok#B|p7dD9v46MOer-&@WsSVs)6V9im)zH&+-88GD8B{Yuo^ z%>hHwPRWcTKG1xkF4XAyz&zZ`r|0+p*y6W(~f&o9LZ?M_N5o=pxz_%l$Pc9`N2)+HQZP7bdQO(d_M@w$j@yvdSF6 zZ!I+=gWWgu!+6LBC*j|L#U_mvtPLaB&e?B2uoeJFutPb@D~^E+45-0V0e279Ttw7UTLE-ERvQAFDN@sUOrw}6Rtqw_#7AqqfY3!x z15Kg1km;|$tyuF6c6#5HW}o#)k5d^DCA6H~-12d;xfiGA!BDgxnYx;;q#Oa5$v@xa zG|f+_F#p7sA+zNaqJzAhXwirF&e$bd;?9)d)nTo+VFJKx&{AJ)F}NE6VFQs=0q;Hi zqD^KKt!dYYJG&WCUyV9`O=w0h|Mdw>#x()886Mo3_DY?VkP3TwF=HE=(HUiilRPCAbl09K>VxV4A`UQp>)-2PTxtx}b$c&xU&CV9>6*oDu*^#Hobd%G1 zrdGi8`+2wAS72hk#zt`UBzD(S#RUROnPy@zq&+!v? zQ+q2O4cuSYtB84ZHEF{R+a9m>vQzNWmBN7)eqb$0H>6>DbN<)_rG>J+N}^G5c2xonYK3^Pzkn$ znf|C|rL-~cs3z1fY`IWnovHxs^UYA&YE5N7TBez|h`LZ+&O7D%8}#gFGaHlb_~((Y zg7`&Y`p@qUo0%tfjM=VAs}oT0X(vP?i^ptwy&+jk^{r*ia{|!6yrF9=up>@DEL9%RJy4I)M{aPK3T}kA?#?nceb9d*2{Ep1( z^{3AVaU19{=O(yNb?AcLt`C z;2~T?hn^fQqQ0nO*z-&HJNDd=&KW(SuX^1vhruB!j>!Y!#bPSf$*}cK=KjrRza?>GweOgj23$o8JIxzIzVj2wn&EK!ucXV z&;uxUE)+)N6sX-*5;vi~`DktrDAuEa^HM%F4K8m;c~ooL6{(2rB&dDesQmuq6e$43 zFIorN+*N`LCtCv%@5GoYGv1P65TzY0egy2a$uQ!ZCz?mIGTRT4FiHC=>p%gy$mk3d z$ZVC(4Jbb+E8)#}`g!OE$3HiG|GU~cu(|5TflqWSMFvY5>(O8Gu6h!-q115J zI~B+%yT7x9aq493nR=TC`F=9z29{c>J9kvV^4M@=A*hLwPOQ`GY}4L=t3oe?E}{6%!9>1pMAAVSSmSeobGlq8g87gtQukdasA9$lW_E z#|W!XD{$Jo!ZBMlyM3sk9k^NTQN0f#bSvfdM|DU#3LnOUdd%M#-ee=m!JE}>0sRx? zpa_fj+VqvP_-V%M5fHutX*=x@kjiDmEU?>V_^g_)P>{lkhwWqn_oG@r!la!RjfiR* zzP{ouWWin+bBfjtg*!{+zgreCEdftKoEJ274{jV__%RCQj{UAsxW z$u3j}oL?4c$Cslkk9$3@4o`3?Kb$3!`e{sVY=2O64h!4NoHHA`2W~Z% z-`$thwCoF&O&INLoEK3U!W-9v8AB~{$CY?T$JRq(s5wIda-{%?C`FY{?=e=RP?zLIA8a*gn;&e`G#`C#fz111!5ygi~BJ zPH6g7}5e&;lb^(pj zBA6<{Vb3z5k>Qvh*11z2vrL!!NX@AI?(6&_?Qq%>ge}}f>lOIi{E6HhqR+2Wrzjj& zWs(Cb?17tGnSgHLP0xT69+UdB?!?5}8I@kHi%<@njx2X9e~IF6$r0j9fsY?|vGp@5 zNT*bgS`+3}s;uYe$f({abHaOnW*yqu)t2FOx4NGk_4s0zG;P9ZN>C%(r~7~yH0sVP zubBW)p>O(7?bo#>G>I1msBzy{FFQ#?#F^4GvDmW$$`-v7gR#mzT`(Jw@aP_^02 z0{W5^0_W>PIuq)&hG9Z|or?pe7i606-)ri$(mxwp#+GKcr=zWXmB#qoruVoF@amJ_n2P~{J9J=PY z&_F&&;JhYF?}zBlXNC>tw|hQVXV^E(c9fs^ASE$&42FrPQ?oQQah1eox40pEw!J(Y zV4pPGbo>dn4!T5uSqJvR~fLmf&K&IZ3>-p8oEzT*4-o>wG=)V<+GwMIr`AY^beo+IDmlqODIVu>i zn%bsPGMEz<=Ien=g|NB#Cl`2UjWlzCuGM+QMP_4Z{~d^~Ne=B_(fXv0 zQ2y}J{De6#V>0vy&6F1i#lw{%V0CDooEH6oL~wR&xR+(40HYU{ zR*;WG%qw6II30ZGj#XiM8LTg@MPP+<)O5Wy+c(Tn!oHO`<7Ym-7Ss&x=6j=I1-R19 zopp+|Xsi$ne8M+2<}ttyDOzgvR45&E;E)13SKz=o?f@WCvG!SW+W?0ISYvJo| zt#IF^2|&Q^YP|d@MbeX=t9zZflGM02%3|3Z*oQ0SJ-m4@wwN-pT5J~O4~VQ`ZxfHntaMw6uGUo=G_8o4qIyf zA8PR5pZ0d);H8x8h7n*c^LL1oe?;!W$b8;t^2}?!{ugZE;Tq4MpACtv%sRvGD^}nS z#e6^sq{0Gf#8>FMPxk9SFWm0%!`i*szOf9Selj)}XVr1AHF3sIZD_Or`|2RA6$Wtfu@$CEvWg?S-gm8IxH^S3wr>Jm4$Om5nlK-(4xT02zn z`kl6b|F~UG{~kV5%Z2+)TPv#@nwBkz)#CkABo5{v?iM@6AVm_PTISXbZ94Z=AeM@k zZMXN7KF_W?bM6(ky(p3$e|6?&y&-(v#PJi&l=vBIk%y>uhFgZ6hoei)z*(na&93FG zXAJ+QdY;{(Ze|j^QyJfy3Sj&Z@8l_7rRjsSX2BC9pv|*7#gK1Rd(h_}>-GGbp}qI{ zi#!BbVfZ8dFXxw5L=68E>wwwZ<5+F@M!JX@#SW}W9&fp?r|OIcMJqTQ)s~l%$Ow{E zeFG`WFO~>|4KX0>Uz6kf!$~WT?X`Vio+nmKFH;*L_cX^qhi3=|2giU_y1sPJYUu6 z-Ol3@u;_!Fc522DRLKsvlh+Gb&it&vsmf9NJ*TLk{m`;=OV_mE8N%j3{pOB^Cze~l zlUvz8R*P`FC4K28w0NZcogAYy&0bvy8!~IhY2C$WyBbrpMne+?LrB|{^N~_;Cf=~{ zrkEPK`DiFJEt6GJLpI+JjR@5AfCcLa?K$vI0jmDrVMK|;YV);1dKW%SE>*OFmHOT} zxyr0sf=0TY^&EZ}6fKzwQI<_rh<3r|HNSG@BY*Xd#6&!bwrJ0M^5As3z9p}=V3e1Q z5x%jL`NbvOv3g@M@aRfM<7ztDCl9S;B~|tIszrVSp(7;HK zXAB^dGP~f5-jsR&N!%ce!-#dqtzsPx6POzli)n>IFeXxmW@> z@(X~$KnvaR2E7UJ5OJ{B?K@jCts*KW-`3OZbLODUEd#MEit^3f2GKFl=!}Xoj;D71 zW%160_=xM&FmfzLv=`HllRZ4CzLWu zylisax1Ys+kzm!U%V0x)b(_^N95 zm7RM*tV*dqTZ3q-L?h`OvZdtLW_SThglL`K)}^aybSLfmo<1$o7Nk~D?tF$zaqHCA zx+X}a9L2saODD05wBLIkrb?b+yOd1Bufp@b8y;e0w5xBWJ};~$Xg;TCQW4!B>q^_& zmuQDRyXF6@M?UU)(RCv1^_x2V18=}@SRT0npnI@Hi;xbXujcWo3%lfzc~{r?5a^N-N9eRU_zS8*e2pfCwsue*kg3o?Fo$r~38 zp>1#sC`@XRlwa1Bd^6Urcp4sU>E^i0KJG^`6s@TW8U(boznbX3FJHz>-dE3tyr=|w<4pNwOL?g1 ziz<7mxz1E$p_}q~;eR_ZwQ&BT&4;sY;ywO{1XKeWx}7Of5FpUCs1@|N>3aft!Dg$D zCneELpN06CxF0?JNJR@vZ1PghGXHS^RgSj@4Z>ABT(>1mH{I%j=m` zydM0CtF36?`VoCJvpsDC7N?~a*uBaU#*s?F@H)nv>^h;J>YZ6DJc`R&Yp!Jz^JN}q_jiR*Y!DOG02jV50;Cu z165}@Yk3N!B)$%JWX1-$B^&gsD;w~p2e4SnzYO!Q*cvpq*X{+jZ|DFq`r!!nbXEyL zx9|?dmI(`d9h1h2aV~)9xw}^);g&w$CXX@Bt}>SJ5)%Xxj;nGOSOMBz1}?kGK)H4u z8^j+0diEtiyH~l_jF`{mHBW`6pBLKv#(lF-ncg2U#lZaLXLMHKH@M&T6mj#pd%6Wd zy6$iI4;gTNIER;Q%(PAB{|7ptzcEkFyP#A!6bWrqcfO_qhr63|mD9E^66pCFZ2(JJ z?BMwo$NnKil?>{7=3|@NQTzU%+sFOYu@0+F%M*NI5=Ls7!jVlw_JYfLVSYpQDJE2w zDqlTq0|&2&9+)pfm;5kB$e$dHvX=t^ILtzxOD?Q67RBYAm6wmbr4ce-lQ#iQ1w)E> z$Jf=RSK2X4moi>a3MWZ`yC=+0uT1bBtn~hV^F%d0Os;Jk3!BW#k&8@E#TuM-#1=7N z<{uGz&p22wMF;sZ`M|%Ias3F2t;Vs-b|8oZ8zC(61nmA`B53><(lj;ixjp@KuwYo( z_z`x$=j1aQ2@C$2J603Bg+!UkSn6XlY?|vI*x#}*SGToc?9^&d^Cjz2N`*akSxy-U;cQN5^d0u2R2V@Z(SG33RnK{ zSw4Jt#>hNy3)mYqX78AYu4=~*3e^bh?Ae+F9{|rQF5Z*5M7eJ` zvz!K|=?6!L^3vJmm!43+gTi53erku6Qi=nE){h_${Q##$SGOX?k~T9GP=f@=2gmwg z^ff|*^Ajvk;4W!rh=03QcWtawj*{u~4Uyk@v!BHc{BjGe@rNBwWR2GB$EsXs*QuG@s~%RWCYFpGs%% zH@bPI?4$vPB#2y9`}XnvUQmI8lozm>u89{(^08jei7|n5()4||rQq+KF z$nG@-f+ML0XMr^$f((HTjN;dnNX|OzHUp!&KIa&OJN~5%j%8K1@}fkmo>NG8(T2y2 zkSB?v8_y9o*}UgVx0Yb;xI#+LZOcGAuHlcI?tEJ+fq& zmKtmVg>cW#LlKx3I6B={Ub|-MOv!ki48)URpEXc<1WDR6B2@Uyw<))i2iz0~;Ri>> zd!B11AI?J(2{zVXpByeib??zL&n4M^eAE4{l8X-c0r%XJdYatS*I$$AL{1q$esVa^ zeDwAkt~i-wfm7ZSk>Mixj(DZ@T>b7db2oyr`|gb@tS=at`dF`Lq!|-m_Oi zqRk5C_3|oi&Asomj4kY!Da}%N%?fviaSnD`S47w5hVMg6+=$}NNiJ%G@PQX}@?Y`B z>ObsoR3Tj$=B}4~vgQGPcQi~VTt@w|tO#t>>u()DTVf?g)<8t`qWX?mV-%1@Bi=y6 z1q7mw862ou=S2PquO{*1ri6XR#%>|L3^EzkI=|%9k8xFD=I6uL6}JJJ@$)| z^J#CJhw|tarHe>xE9#!<(kXv@v(^IHqOoDMSDb~-qFr6z{;B6@|0ea@TC2nol=zQ$ zMYd9HL#In$4^LeMBr}`T5gM#2=c|f*bzy4DVQVZG=TF0ZX*?8LOTO1oS+h57+Ale} z4V-?SV|Y7p($q?iQToV?QzANzKq+*QbTVYc$G8S zYKLLlxw>|`p@f+l#W~U&JSqM_k2=h%T1*^sCTmRvn31?J8szs!eVI|huujW`8ADmRyvc5VSlE4-f~+ zUXU%RtQi+vGRwrM_FO<%&P;38XEe(L<{MvGt4=w?tr)BAmNb9ogjl5Ukm`wmOjhBs zjc=k}QJK?3ukp>>w_M=w?WDipS@=?&IH>b#Xgcvz#>)BEK3(v75BabSMez>G?S7b(&TwFZ*4I(Gd`m^zx46^7}} ze6HLh#$&lxA=&!P0`oFBGI@si%10O$SIGW|0+1R2tsDH=K&7bO?{dT+()OaHHg06I{zbw< zM)TVzGJQcg`)q8Pl1x+a31ziMu{9v9Y2{Y^NB|oC|I*7}JjkG@fX&#gT_& z)v%`WU4-1@-ms{R-BI9zE88-WcE@E;krv~XLqwa^$R>87Gr=FUR^eMJ?sg*A9(u}A z%J+FIhdJig38ww-*%yFK{A{AMPY4p1(Hzo(w1IW*t=y(Iqer_kF0$1oSuu`jL)XZ? zaxx#C53KzCw(DT~Lsc3K1x1SPU5@U)O|8{?zEM_L+kgo4L$YPw12bN>0&=eqQXxi_ zvC~^qimkB0J4~$;@GduB4a7#eQFz%+w{ESA1wce^w6v35Je z1XyfrU8~wv4Kz|~FbmunEBsRw3*2c8rp&-o`5un6eU{N&t~<@%fn?ecL#)`N5i7VT zDPBhCjkn@o#Eba_1LZ(9){>kIX8p{nq|P6TOy;2RIfLb=k7&XPaBcS zYS^}FssyM_c2{HvMYK;LoWHKGhC6@|9HhC|4kmUTXknnacf4mLxL~2Q4A8M0;Q!J? z{1wZqh0U*Kk)&zIc66v(DAUoQDxr+PHwR^~x?tHHFAWdXol|k@6O#@cu+YMw6?d z6vL=yyy-wtlS-&mtUS*v?8XBpCW|J^0YrzX)j=;Jss1#@?zCy|6|LqKmHzA~;=>4# zwNZkxfKu!U)nVbpqWtik68|g3gy$(%2Rb5cKsr&4&PCnXvKv`g^eO&onOJmuG{TLI z8Bp|~hiFQ4AtqUaj%<|;Af0a$PPt_+R(D~<*nECWybf5mwt2$|s<_Hr|J@Tr5hMZ%&)2iYwbZ`0E@mcel(KMsTN;r}B*&pKxYQi|ZU$kz% z8cjuBJjI))qRH9mLRU2;-%6fvdvg8U!BgERLA_SECDwC{$+^+7aZ^{f%8{lJNF3o>?gf(MB{X*R& z$Ioy0zB2l25IiWgfNjbOh9H1uZTXz+_WowBRFRv|Fcc+WlEhj~<23eU4ry$aBO44% z;JI~uhR$g;;fw!FiCs`?PSl!Q*aAZ-O^ZW2Etp_ApD59>8-thQ2>9~cJo@s60Mxkf zCm7>{p-;7suNd8OV!u+-qXJG4Wu~2F%+%K50L&&OXqohIsFCtWa1ye9S&na^9VsFH}p`?jTXu z?tDrDRE8bHZzKYb&H7rkdTyfEs>SNAmh$n4Fjo#ivw!BPGVJ(rjn_Sa9`J?h9SQM$8TjNn&e(>Q4q$7CfA0&k-syN2hmbHxN@(3kpB!m2G zUo%BZkG;l~uG4)NxMSBU%R#0l?q|iohq&{@6zR1|!ZQvoRkFJ=$VW@SVwxR$=8n{B z3#$@pE_#h|vNm%*Dx4FPRu$#9vkx=*7o1Nln*}H!WgYFJT`OGZtO+x4c zsGd18Oj%1*2`l&V=r{5qQH7Q9wP&O^<*7+&GPV!p@Ti2KLEEvfWVmCzGu!%g2HdYMzs`)_ZUbtI41 z>T}A^%IH%xDyhY94U#VE+oqe_*>9bK7tmZot1+i3Om`JE&3JOlHN;k(%NLxbVf>4o zVMvN>^7}A6KN026%kk+(C}${@Rb!KPWg4@8TZEyKH7te;)UTB0L!{Q>L5^4y0>xi>8$r7{tG9D66CROGPX{Hc*4X4zWo zgn93n-sCM>{Ac$%+gB-DjCPLGbTuLZDh3I*w%*u=bmz93HArO`P@4E-g=t7B>UBy* z8U>!k{faa;vIcIwSM)A?)n3JddiZ+B+<3{&b0XD)8CQn|Bj{aBcZ+tSq$UYyCyHUb zZG*a8d}WK0%U4z|20T4IJ=30>gRwJ-_Fw* zFm^d?!mS7R4)L@_l5=m*CpFy`@A(j%_ABejr4p=JkJb{?@vdXLn3$qU;Fo3}6=>;h zVtrVh18FPNGL&7u_uaoOcOJk{can>TBG?hefnU2v25rnO;&!8FTWD>4qtvGN_8KxQ z6bJsz0U-h>&DX?FwVZh4l$XqEE0@Mdo$+~J#GK&k*_lqvE)bA8s^|?^+U2s{Cp+}C zk-Xp$%`=d);P;Y{5Z@ey1FnRWMh8A-H>r`j6K_$#0hI^89%*qEdy$FbOfsV)t@7*8 z_C8{k>z0lSQTi1+kUUwwZiQc&t&u5~?X^(?10%ZMBEC|H_1ZTf=I;ciOp92|dJ~2@FkL7$N5TT0w-63QH3vhH3DkaD)*aF)-sCO)lE- zS*oym&E$?uy@>&|aUH}@KC!Qf`rZlX>Sz}{Z5{# zyA%+?aGnno5(DkUv&!Hy#Nl+Oc;ZCWas5YJ!!DmQgaD5>PsG(EGC6(sryf2~ngDWp z#D*pBM%UxDn0~@o3D+=`_~ig>;#lS@>u!PL&n4JkHf7#%9Y?_j;k`9u6%=p81r`7d z*yw1a9fgv?iF6(q&Ln5uEZ-q}=R9Jq!oHX7b1w^H&G&L*SZ$<)a-7MC;oatDMR+QX zi8mLRk}fM%#+0J|Mhi{LWGox~d;g>CTrmZ_sKU(+Ma4eHnAqaGaO5(C{H~0MDB@YM z<&GYwsSdIgq7Rq>$nL|Q(RHlX#*k;)sK}6DO!W-H^}`RGe+ifOABK@q(7W|drXHss zQKj$|^n3C{PjT@MaFoNP*lt?!*{}DoN0Q9ssFF(?LfMNrwd9g?V<0t;9=$yXGYp6A z!i9OW-%M{>)45*p+I-`(LvNG~yIdA~F?$2U5k{>~1Y&CkQ3j}85b_-1cIN*?2=g-}8z zs}tJN&>x(avyD6vpSOqaL_mUb8QaiJU~9X9wIs!>)aRj{@klNo4Y)dC5pmrU4xg!Qf2eC=3 z>yUC6J%(dLhwqrC#93q=nyuSi+ixAJJ?7o&-f>owGtREYb5?h;UTKXyU*%mq(xb;_ zf=)|lyUmB-InQ`4Py;n!vG!cXQ%jZ5`qg}JS^%oXNHP)& zr-Kbk^f3h)NwOq}EO0>y!1|2vU#;?*xPGUJvFkNRc0ie!AC$OECvEX*Z@#|PIwoiB zo1Q9$wb0}zME3I~`ErBHFWcLu$)&b^@m>uhYh2s->ui^-n7txLu?g4BTe4H8UW8T2 zbOsDF^f-*%K0}c%DG3#>28^!ltU7Kg&1={AcdArDnK&H0+P6(;HMJd&qj?QpYV)hJ z*ir8v~UW)*}Mes@#-mmXpZ0BNZZA`o@^H!Ke5WIF)Mv;5uFY_V+Rw?hf zk6kOPYJ~$dixt*G6bMf7;rLh!aa3Jf`K?E70U@sK@y(J$F=+4I0eHOrNze*&%48W4g^cD`z}89}YS4Y$8HKTZQnPIP0$ z>2-sVeCq+ub)S@LpT_-183!()BFzjzWHr`IK2rxIJ0bQI3S(JksKQWfJH54SM4*LC zCz|m*uhJl=c9-vzRJtyUhJGY1U>N&&-V3>hWE*?CAdOl0$X-|4?U>u;%f)n%LP{Ui zmi44>51;6>KHDP94UbR;-0ROst8F7VY7kgD>KI3S zj(DP)I$pyb+&+370QD|mzi3;E(AeJ!*tjY4mkWps`^Mv>|GuTrXq(gQ>eT@rHVMNiPALe%Jn|{U7F? zV0kBJ8HL5SiZSB4P7wKB^)cMx8Me#FG~6nWrbTrP@!HjNzfv=(j^GLRF=0Tkn>#7$ z@E!{ddyu^);F(Y9KiQ%6TY@hM2s?MUY}+r#d&Ps$A&)K~-5AKJQUiae5dcniN*eQ8 zD6ttWYM^sWhU_h}>(@fq?VH#&&HG-$=9GMxzF?5lCZ~e*|I+FHgCUoWV&QgV&uADg zTWuF1eY$#;!u9N0fbu|n8`zOuKzkMHWgu?{48rw5(oQn)?3z3yYS8gp=N!aL?W(z8 zofpao`H!`0mQ*fGcrCEwdPOiYH#nUbGh~F}z+YqBwDsWT;=N#3M|?S{&wW`ck0=6n zK%sqGg?4>VnO82C=cU%LTFOjR_282F!wWb6@WN5*4pa|+@WS4PPXsT10|�?C<0g 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∈W-jSAfAOjRv5wwi_i=(_FEwO(`l&EK7S`XRr{}(eEyc=zDdr!1^@Mvy* z?+*7lf%bDx_kTySa2A_LVM1k{h{F|f9!n>PDQZB~iVmz#8`>cLU_a)|LFhiZ5$u4# zA|Y=0(1*)S$jy}Bg2Q{w_$gCA^2;H0XpT}0I?j>eN7l&`A>r=8yqQqL=pSKQ zSZULtaR+F9jMkb} z$+G8hLG{iZ>g21Y;1-3B#V9Sgo02q+>VeEZw@xnVuKeo4ZVO3kF)YGhnqLkDb1!o| zTo^H=dwy|X1ikDfB`izky=+V=Lfi_Bz?W*ov@)WeTsYz{PC3lTxUm#plxn+9neZ;+E__~%8D|spDLSdukLSU`7k<9p* zSEOE-IS1&XTaq=VpI~?%Wid&o!|A38`=3#i8~Gs=%6U{+_qc{VC*7 zV+r{{Rv@w>O3U7uEO*hf@hhkCIF+5r7aFb3crU4gFs+S}tyg+?^sZ(v99iT$O}0Md za&IoTKbr9VJg3K-_0W$#Pv1F}FCzq?;fZG&A>*^P%bNXOa zAU+1v(bvRRRpo`pDl&{|%v6rDu{ic<`k|>AX7ayz8hNuoV-}b#>mgjZ`7OAMdr(#& zOp_|>D8Q}!Akp}-c4rl)79ecL>kS@2F*EFEvkavY9u)@$cNVQ3B)NthM3}jQ>T?+CUK1$W~I#rpo81%vpMc6I1WNd#G zU(byWWxESEIiDlZ+c&=H(pkXyF{4{BWO3!7136ZCo9@xXu8V^Um++`Z=WUv(%GQZAtv~)`_Hn}i+ZJg1A{khEm%WHr}`weZ_t8@(a{Pp?i(O+QiU zKYMi?Hglyb`sI45hVw(r@rJ5?y=SjfqZUZbCY>UwfUz?u*weg~;x_heYVPOSe3^3r zwfmPqZN-8-t}-lDY^hiq%^MlXbBOq=!4ace&FExwWw@5PSo8tzp|P>Cz?_WUo>>1w zvDv#jPt}FYCgOUGU8tFsUQ5Bi)1sz=w)YQs@K00E$C&@?{`mp*k&6*=Ka4YB=iUKEXl$-zbGc8g3KSXnH>fKA+=z)$&+Y-A=#gPr?%4%o6 z<~=Q$WaAVpmaKuZyyIKc%6Qdl5?nwkFV5W4yq#em{)O9a@w1rA{f^&4QwONrnJ+(h z+5gsCEP3DI?a}m$H=gZ&8Zoalvjl9+&Qo)GK6);J%FOz#RRdQ9cd4LSIxjxhWlB+d z<*D`LV&)qg%V+7b4pgPZ&y9h|oowj7PG+AJAqoz*rXX5*oPN{c5|Ky0@U#+`JZK(r z^R#O|!Z1}qvVLl=@uoA>|IPHVg*9%1`hqL!`+OX%n01rj%%3s0)bO9&?AKz}7o!|n zSVLB5M%weggebAg{gHPtl@+^`Djl3VO-HdgAH|ZdDCLFgM)+B&($`Ii?;ry7rf-|~ zA1M{sj-0-;H~6Z`Tk(}{4zMd)WefV4QzaJ-2Z_>OSgH=0z73d7V_Y{=HT!IjW{S=> z9aFR&b_k2w->lPz50}jQj7exWcHYmEuNt)>g;Q~#DOL;3OH~KYeR+Cd4vT8lYPNpn z?5|qeI-ZSOfwoa>C5g3-zh8ct9&OpzTiz}loUWo6ck9XT>gRW<5iIXw^fK}YY`nLn z2tuD5Rh)CH^;*LoK*QM_GV=fMyuL5}-Hf|s3P!hBAtq~vr(R#rojGhHDemT)mGaP& zUb_+|)&eAH#)@K+8xC_eR*Qu9_QJnzx;75iN z6XmXfH;D) zJqp!52~})*TdK1!@{YC29O^jcYFwf!3n^IuH6~Ehi9Es5vZ0KCILY=s3bv7y_LiOWlk4zEd52?^m{tVpdFz zUlTiu42ha6)0(ew1*#kb#n~0d74F<7Dr1vo8Kgozs7YPskyG9MoQ$otmj^vH6t#tG zlZ7$^gBd!-5=!G6b;uxN)gC(=DF51WjG$YrwEtU5^o6-Eu~zbBoFE~jf4ZV-A@yygWN?(m znM#Z5K3RNX4GMx~0#-kDGk`J z_W7i5*ngY-Qud$Gz*I%W$$8p5dRTV2yvoXR#YbsR1$mYx$?mz37_!lR+j7Y`7o{9n z>r**#%YgOKfK!>>*m3~|%jaCAd}rJ6MZM`aFI&t5F1rc&gQ-en#B)8;E*vB;nmze)_a|EYdM$mJV$WU%=<{680-qyfG0Dc=rySCb z>KOHlW`hZSd>8q2*t8xGfEH-zvHA&urS0zMlrF)NM$XD=Z?NxEudYM_u>MyET_hx8 z$X)eLb5>6hRP%M*>M&kCtZSVKuH73kFmUNH(SG}o#C16J(-q#Z&wc?xzt46*!ElOG zHavTgU1w8xklmh~p++DjjwMd81AxGepe=4pGo???bd7>lXi!jW0;h(mt&gE1yJ(#C zAnnkWPtlsTH@|9+7s?dkXwTwz>Pny+CM0Dd_05m!JCaj7nLN%)PrtPZ0PR-acmzNL z-ZCAqTLY($iG0VNb{OB+jnd?;aVk4xnPxoE88(1?!Wod zBBpgUeDEW8<_(hIXiZWX{AKrZMz&-YjY@X1IuSjr%)C^;^kR<6mKeuraqK>U zoC@(7BQh51wFw+?^Wyn<&w}A)_LXclJH#%vSW)#xtb`gDp`CZ<&eBay-*@`5R^HeK ztFx(vyclQ9r%2@38Gq*?ar~}Uo)!i&-fJj|GTUzuq$*l1WuP z&bt;0HC3i(Gv+xG zU%!3H;2J_kWi^&?(IpS|Td@8M*&3-gIcsres*$9AcQ3b=Te9JZU!sEUBeln5v#Jl? z2=+}?%K9VvCTo(bzpG2Q#)*zaLZuAWmhzOja1TnWscppGZWoaN6~##GsKq`r2BqbT zOO^UUId_Xz61G%H15GZ{nw8~x6FTybYFTZb^S@r}Va4Y?r)k#BOuJna#`dw%)eUxl z4wGu3X+4>rhJ;n(_d+Z8Jas;}l)3-D8U7qL?T6rPXE;k;A>or)A@*dF@aOwIZTDw) z_@3DO~7y(%-$eJ<*?^r2w&G#WT@tlWXLV%Z{00 z;y06cgN4qe)^f$g0eVLHyBZ<{>Eu#3EgP<+?D@?u8(yoG$fM42kT?&xxm>c~ZH-^Y zmcQX@_TG`53|bst{lU9BJDv-eb~!%??|zdp=_>Qc(~h8?IJ^}Uu->Y$m9-H=?tg7L z_1P1`U1+R4-s&$*i|Jfw#C6=3&voaiVdBhQ$W12n9_*_Q7BAoXXAnGCO+NnHmw(}n zmo`Z-*?V!qZ(v{q@^)W>#BvqvC%qO&DzPylyMZZ6xxuKPb$=`QekAn6|4Bzrf8M9? z4E{_-xzpPGY&tn_BBH_G_GEjz<7z*;=5lxX@IcwUqmKrdL(Q<=Zjhw0g$LB@0K;l9 zr1Eso^kUH^Y=_KrTU9Nv8%};170ao*Je_XeUuUzpQ!z2aTpV6KMNe(POaJbq!3$ge zBZ!E@w}{)B2LK~x!ZY-O;>X{QcNPwE*@O4IlKx}!xFf~F?LmqtY{;xk8sFT4P6!q? zv6iGlv~W+SzW*y;Oha$NLOV`eVW{e;`&GHlGq!pYU8V1{(pSO$4eSXn45ptZnb=FG zh8cvoYf=Pcw%cFi38r4*TZ6shT(u%O2XK4q#uFf7+^dh`+(@x;Zk0C2RJAg$k&Rl~ zY0gW}zsOBS8VTV2;98n=ks`QmiDkNej!nFT0UHR7l2TE8$ zf}eBxZ? zf1;cyKQ4$SQyPSt6SY^{>^nd`DePs62DFb_f2d8r`{OcL8?0`77qPRD!HE*8s{V-aF+S)@db;il{YAR2Soe<)6fdGiCw|vYWo5) zH5?msSAj!xBrMtayI6;eT1#jG?V21&t?*M+d6xPeNWSd%@|)DXyo1$wGxO=O$#>3G z5e>J8Z4g6LC>L^r09in$zX-oaVEOS5B*zC~${VmMT6in0u;n)n_a_3Rvl`b*;F zX8X}mkr;91GQGzQdEg3F`=BbFfu$@hk`<+iKso!S?K8t8RUSY3QjAk`Xwb4$CVbwk z|3!}Z>E^W#vhxa_o-9SHA!II1$p>an(d?NbHTR`jtUZGv_+H!Ec$h9LOszJdBkq6d z{<{%7wf>u)D78{c_{~T5LmIH@Pl4^u*hvB`iGr8*0{n1L}@!&Bme+f(ACs$(`SWq;XfSpbso zf&L{+(%{9A8C&AuwWt=`;(R32Vi5LP^uf7Po%W-#Y02)U4i#K<+1FIkw=qf^tLQ)y z(Mx&TVnk#n9Ct8U@8#JO^_)*lAKjL|)`tv_!c%qLouC4bZbN~tYp>N7>RTv# z{wNQV^_@(b)7-Yr8JOF%Ihfn_0?hp<5x|J0k1Idw5kQ0wqMsmwY~lqHfQTPNccAE_ z2M~>^6R_6oxgaM#=KfONzhH2w5GX(bFhV^RM82Rv@8EJeh{8c@Y)~L-5W#`y-A3Rq zcx*2YdITN7?i8%`)jmXHBPc!$$OIF#*Boe#1$qR4NO`TX^`9FE8og`;h5vWn9KNhB z5>k7<9QpqPD*q67BbH2iv$bBmqij#P@!2rkG+8jUsC!fN`Y{i+WEHt*Qd?5rMfjyo zZG*HZ>vivmGAUnX-7Q305m@a?m z93k>ofO~+lfr6f{GSG@0Q34c&P=+92vPbDaq53lV*@0IKF%50`Z};uSl&d2+Klxq^ zR_2LUF{Gj2T+h+e4v9(51?)rCX3i8TW_uo;#Yoju6~P6EZgP2e$T5Tp*-qL}Ac;BW zdO7JY*&meTD4W%}7ahcwuH3Kh86qDQV_uy4n$pK4#|;6<8&CGElf{5N8bHJW$wuoZ zlZ72W8>l_IT3N<0Dch;Xiu&s6S?7IwXE3{kqve7X2k;q>V|X>@qiC2GnIut&nFEJM z->)^2?AA(93f~q#wUQuiVX(|uO&3TQDd49THPl@=iD8T)hb(syD5WV_Jzt1Q<4B6S zSUz@c!EF~pAnQ@2WLjXR2t4(XP}t^^ge8*rmP&H7m7Khx$ky&Dkt&!G&C(Yo*IJJ+ z-fnuoDZ{F3$(v$v;+&39ei<*A9-O#IC0;$A%DL3EmF|UAe>KB;2%Fs_TtTOn7 zIy8-M-Z;`HNFN7{zL`+M5U9z@v|tMDJ91&IYm=fE-B>3xpF&B(M8e9HXcp`vxuPLt zeps$D)nA!dM}@#NEBDA?hUcmlHiA{TKr<`ZszP_;JQ7sBTgUftjXu3bf>8_@F?si# zDQ7mV4(0aLty&L0JuLH9rvUoa{H9elb-208!ezg#{o$*e=3V-%<&*8kaC)Wh5ohCG zqsz68Ib+%M*(MNmZeuTRip={Bz9dx1gr2_U`+AT^sIhE3+jO?)IfoeqM!J`Vfqzwa zMt))PX=3dS)#K2g8bM{R(k$uwmOSxCTK#gG+#kwTmLMi9VT_YeSJPZqN(O!{uY@*fv#KdO^2MKD>(#XvL)8?4Tye1d9)kV9Ao@lkaF=qj0vyIn-HAb?4CWhi;Hhaz5n zN|gMFc{?Rl(Uak7m@TRkG*m>;7!~~!Jo5Mx;%K_#@N?rP3C!Msx+U^03{%c2N(1TZLba_qc5EM<@wg}1ZwW8aaDDylHaCP^p-NoAlSv&EsS)9{R|&e#LE z*xc#L%$+=r`7ZZpM$5ed1j)jFEsFRX5*3$MwX=(j>Iw}FrgOKFfUY{g@zoygcudY& zg&mi4)9rk!kpreu*0glr9FRt=8V)T9=p@5oH)yqQ9Frs#_0?L*}W`@VIa4YO_ z_n6CdmslTsZuMkv{SS<)i0>N*8ZiFcXlsLc8Rsu3DwX;*7U@|KhmqUQ{V1ztx1Y*= zFbu_kjaO8rtlQdc025sH*_`!t@!c?R3(v+sok}DK)n9fUZf#6L_t|N0} z^qX`;AeST^9kzqmqgPW4+1d-Z0#RQGR(Wq69fX z_^h|YKZ86D(UNX^t#wIiMa+ln-4~00T)=RA9P=Vi^UhxnI!n25cA#%IOFmsR+kB|; zsHSf=8eL0aZDy|#g4Cbjs)JD^6&55P*OQY68$1&W1u|>0DC`(RKEWwg&J;+O=brN1 zf}0OlGu$)7ra3w7HF$UP5+YNvn&HJ<*|Lp8ej%^Juu5bZ#<}R1v!k~U-|qP z=7jeVd=VKiFDR)3Umw%C#3}Isau1mlx0y328w&jbh%Qos-&7P{Pi2Dju+L<-%*uNL zUe>xe$#=p!S`%Ne-uji3X1s{N#XWcEY8J>J_v=d_Q$Fg7yz z)R2#{&pKixtya3qa@a>;j*$z^%$-|RhIKc7R;cC}Ypn5K>*vGX{ zR?}$my#ePmJ8m~vn@4oYI%4`ZfD4DW|I&62z18H+pdaE)-JjUoKk};ASWg((I!9l) zP1hk^T3Hw-(v|J67s2i@r@u9+B!$_|XT6>`*)oN@Lh zkN&B(IhUR?YFm;tQhBp7#tJ77GcWgZAjucI!%a65ow0X`bJzlRRg&VEmDivm06K(g zIuT~6b7WaIa$mZI?dqH(UcdBc;6fUY8agp+@kCok`B&PBOx)>qO-*F{(rP5TdgSzY zTn4Ph4_ZPUGAr)1-X1Q}jIP`7eJFo&vh$!c;xMv>4Pw?GJ^IDLc;U19-K-r=O0i*V zh9PyJI=jahP{03eLgjl}1>LZ6cj$z|&m;tkgz7^8l(4U80iBVeg`_Q-q+-}5RO~N) zM?11v8{U+MUs8?b*@7&J)r0B2@;jltSgYNVW-N-lN=9?8-T+Pr4DZ58Cw-&U#5_vx z!b`EUB_A0BF&a442Z99hCH|&X0}W?e%vXgGxqLKYMbUdTT{+~qr45)M=Bg$y+vMqd zt18aZx{U>#XmShU+1D@xA=o~R(OTxctx=>-#K=iz>l z#nWB3m5`=d4D*f!qU2G%)zcg{*=c5ZqAV;p##O8}DLhdMpK@ZYMQuHK+ZucB|5~il zHe>|OW30Q%*LNh*9u_;F+n}Q14ov!R9k=Njchc!9-r@|kxuFI?RF8kYqA6}taR^Oe zne zAv*-28}HU_?BCV4^(Rxz=wsAHJLI6SDWm-Go(*z}M**eE-JB_nrl^Itnj)Ez%}&r) z(n5s=@&SG=gHqQ@Q*6VMmm8|;jf#>aMH^Mx?e9|@N}rADR$nO3%Dhzkpb{JO0xCt^0H!AKTxh{iSnOEt$l*M+-*diPIv=o} zm95Q|yJH2Rrs%^8`J{AIa5L;Hd?xkJNOt^J*YRpXcZ;!n+;SRBI%%At$AJ}f*zA4T z$+0%d7`WjM_`&T-ZRuP&p&cv~7$?EfT^rx@(#wvi(vgwaU8nq&lj7Sz=S!B{LkqQ3 zVDsI#3mrJTysy zsBT`7&Bmw%vfxEJMW=iSpUER)#C;8;l{Y>%oi>e4k?dF7^1s<|d_((@h95Q1^Qyo3 zQ>yowi;D}5LM|?dXZn6gdDlL!$n#pA%%*uW8^Ds4K#b%CJ`#GTfNEM|EQq5ZJ8jG) zD#UgZ#=wCQAuewk?QITBr13vnT#AC+h{&XHxRbkq`st1o4$kdqa-eB>Q$^>;TNc$CX zVtSQf8T`1o$`hyg$Z`r$l&^}Ex``dq&gU_1_k+KMwztkusANzl(Gt?-VGG`ls4kEj z+uePorRBKbF)LL@d$MuwnId4Fw?|Ike%>v~=^v+*Qz&Ex_?E?}m0P_OD)`(m`qaY& z=%ER6#yl1zZWiIV(*$kb=pD+__@2f#YPRibg=YH0Qwe3ko-x6icn!A~2+B|oi)O>_ zOo~w;1se$J>NqVR$upHcI;QgCp*nfWrNt>ymwp=N#hsI37;?cuQ7!IkTk++47U%ZJ z)*Xw@*ER|&L5_z56hn@1Jc^0!W=6>)9G|H#S=^SXtnDyTrYkj@Wd=vpQk*JQ5#;Qr zrql;^$3fUibiLeF%T#Enout)pmCXW!#g7#AORrba#u{DqM&$|BPQr9=Z&OAOv+*W9kAHgk+Y661l)gtU3uzY3GvQF4Oy)Bhpj)@ttg6t!hHyr zyF*~C2;aLmBr}`(^0T{?_eS143tp@JUi8UI?y_xlXMN?E#yV|$VRC^i`60yRY+Rko zWj@v>K)S-euGYUR$L)0Lc;o#->*HyyZp42tw6as34@A)dvOaJCH692I!FV^lgMM!o z)%?wD{5AE()a!3%qdy<57X%9zLMJP8bWLg^(}Oj;TtD*AH{Y6={s4hBMW1qtBrZk) z)$pvcDjdUWWx|yo^>$BGbVs&ej{u70Uj5tW zJXOcGmp_0N_iW6u`nTiyQmf!S=8?<7wW_7-?ANR%aF7c*i1eCxfx@=l%W&_Bj#IGK zLldypN1#WScg!jqMDGxkG;{w+3NT^`9pvy8M0EebujE0_f*>M!$CN;i;QvX8e8-ch z{*xG)1R@L&>4Nz0AfI>qiwg9}2BP1;zW7$(=F8ge1hkNyxhF7@XBl|#gs4*=g75yxe7 z+m{{}$4)M!?+oL#GMq$L{Zaw}6H9CNlGOykE>SV^q3q;2;&qNA0pxxC5AQkkyL;J6SVkig5wzKf3^U%ONoJzLpgF4OBkKX&ZIlfPLsd z=#4ysh7sT7&CT1Xye&VykA2ug%0Hzs{S4Z<=hxPNoOWj}U^`6?9>pzg+2k*KuNijD z^wM2Z_KyIDFzx+)tXOM%CeO;R8X`ddj_$O@nGyHg$>1DF(|qWhKbWp(ERQ zkyg=7RZ`2-C6e2Dx5#%4bU+lUqwdhwNY)Xp;FLJ4YCd3CZIXd8_)vl3Nr4GaR`Ge% zevB#||9-iL{^aM?ErZM0 zb%!+0anIdcFTb0IqjVN&s=8^clwe&|SnutjFry!zN)N>q>O2$Y%q9{vXxcC7kc_hS z9e4VSSksVV2-`8}=Sj49HO1_414`YC%i6?tCFs4IO11zx7f8ZOeMDmf<(^aggm9-a zE))v{X|k)h;}xGcqqVh$j;AvDeo35w9g*xGZQVQjxFl5;Z6s2zD5 zKOZ0x;Z>Qq_c(dJSx4UC!AxF^AW1I?rc%>mgRLPIUbzgFJ>Mp4EM;YrnkD}jyvj~g zDrs5RvMh7(RxuOLxzR6UiAdC&8d2vIFi_w1a(m=yZ(xlR9?~IpiTfVo!X@?u*lb7P z#4UxB{H2L6$PqR75sK=q?PiDYL=TOcn1@sZ1-`!g8dLPMbe6+&k6GG%UJU~ z$)=J1&}FCuhiKT&F9l+&sFNYsy>t$t6MXkzI`J=KSV{-ACcQ!B5(^|>o#V;gNDzjD zivLgsD5`O|o5$jvk)c;wq~FES3rVPr^oD{O%Q|^|ZvqFIqd_R3`)|$cqWuz+ z*Zwv9Bb0#FCW_=bi-`>{;vakSIbRyyZ6?@nJQ0*bvQ$G})JiGv2Yt7NMurV))bYib zqRD_0F!Ak6dlq_jdiG`v8E+w5L9n2GcIS{Wmy%DA7#{E}Bif?#XQPY+bY8(p_yM#>3O5IwP6X`sQ(2=dQ<{14{#LFH#UW=G+Fi zJ{OaBR5|ldmVaFJL{I1a`n^u7a;2mBDjD_y$LJ5KW%*{r^ty}j@cv0c-M+FpKrh|S z8XPKp0=0spOKX9%;1Pr4w*W?k+${2vp7Ql3?~LA`uRzd>=ykI=w& z#^Be+VupZft=mkX|J}>JIplYpv??)%Ll9(}&*@^-P_>xJol&fJKZO`5>(X&F2tL8= zaV9i?f+z@pNe!L5_xQrvnkDT>5VzgfeJEaY)_aGssRG;N=zq3SSmPkDxEnBd7p+3= zaisYeU|j;<*5yC1uGtZn+~9#bmfClUgC|2PO-~y~>*a7jV-BURJ0@t-Yfu~Rt`Vw* z7!`Y)Vl%111QQpFd2rcfPz!5OPe#`yE^06^*i96z=~Koaqe^5G`)sLN$-LUT$6iT+ zlRNFD92Z!jIkR!|s7q!SDCzA;7y~hMC@SQFGpw6S5HtI!go$qP>W|S(^mh^Yk|SHG zH$B?oe49~K6fTNr=8Bxfd7Pl-5{n(uIes&B!h(`Cr@IlzbmY5iGmgZo=eXGvr<4br)Ng8BW>DP2c`csG520VEp+C7S5-PY!@!CR&qc@q>9(to%^6>?H`G`AVLauI&jR?3=7ebtjG z>Pn;bOyR6n;vBo6xby>9t~m=k2w_z>X*HuFQ9(Uva;qmfi=qkP3XbkOtz}&^y8*pr z44vx>%-ec_$adqsTxDP!FkArHhN>bd zBKlHZoUQAv`QurGd3t0`w*kMQqNbZ-;_d0QFy82jDzPzlB-nW5F*!iT=0f^tQ<1s; zKoC_i9(tO3mz*lHdf_0*VeqC{NaH}n=r9Sp0kHGO2zgXLVWzjVn;=~g`Ijo^pEsO? zN3Uizr(eHR56Ha(w|i0HqUWZv?O{6!66@Isu=kc6`kT5isG3iWxG3CTMNC!L?#8fK z)snZQE0k+W7tmW(OZ+Mo6r?nrp29-L=Z74=!&3KnkZn;7U|h3=ixcZR2bs*MZL(a% zJq6mqv2{6%Mk=Vzt6MY12&?l)hM`lH^D_DOi_c|3xo^I(l^F2Y7+n{A7z*MXCR<>X z(x5O(1_V)A_541vL##3*pEk|**|8-g(Se_d{?b(oUgp7IY*lQdYEo{Mj(tn5(Y~d| z3r~f3*0kdm6ueLp^}<5+eJMQ@X*unQ;k;WgVytYkWO}V3%@8?Jab+>u%nm1z=x{mM z>5AWRcr%-qiLa#L?B$?hvKAe(KjHTLP2~`^ndm}ec@aRfci&ra3smAa370GjSA%sr z5mS{ED6+pEh#ldm9nn>>5*qh3=Z+r8NE63)R7{VJS7fayVcBFbCQZB4*c4hEvrz~T zkj4tHx*X1msJlJp80kjkF4ONTY(bxD=l52tHDa}@#is(pykmv7EY?l}+h63o;>0SX-BdrQFpTtrDT@MYpunOEe`Q5E}q$h(-w`ICa&pM z=GjT68cNxtJW?E3;PdUxnt-+HU~hS=vPmr}UMjmTd>?oFq@J=;Kd0tWtxRoXrZ}6C zn7S5sZ%GyP3qEHnVq0SBxEa}3Uy5DKxMS3&l6XcbDe5M1-mu}y!eCjO|6q|xOHa>T zIWIDrs+*G@UyrQpW_iwY2y&#~q+C>)-)c-B5WYp}XJ^o>3|WUp(PFy-#98`4JT55}n4Rc71ZVQL?u_Q2z71gs+XKe=I_ zDXnIIwg3AWtp@sx&f1UkMAFpXFld6x>z{%^l9AdX{#cdK9Z97?haL#EZ2l!*3Jc7= z<7b5a-Un5~|J_88UN5-HBruZldk%vQ?Y1QgAfS=?*K{%2 z9lbftf5jg)tkCa*2@GShbT+4PM*rE7!`?tF_mC}eDai6g}}B)6!o8iNe!%fV>0 ze(b&AeV6MxE7UQle`48wgyq_Vr*=@G=3f}ZyLt1Rt?;L+ljJ@s*f+yeWHuI`%RYUP zA#VI>;<$w7P&A~}C8;FMaS@ly_v~ZuHL+2foCkJxSDO)yw7~#d?j5wn5;*vYc=gh) za^AG0HRfb=N*Eq@b#0Y%o|^;V$)bk_9;@=fhS zl=BmUnzeYhuyjt!$ZRoY8hV=V;f*%|MU*efs160mJVx;^#<4_-Th{F3J9K8Tr=8Pg z$e0aI91buBdY_oZZN^tzc%C|FD@7*dcff?M4o)bm_zGMSE=+1E<~1=&c8!pGrk_z&)5B?X!kgjFq)UB~G&h2x(Fe9n6u!Ng%Mr z?;fKC3*PRJ>tZ;E9-_*HTpT}vWwHqq3jMJN|fv@zj9O|prsx zANts-w6ki?!p2|OKnEkZSoH~@qq-2oH_=dJQ`q*i=&X)LWpJ`8s3%q*_qySh(Ma{K zi^IllqP|&QWJF5ALSfLx;9w5{p?kgHo>TD*fG2++kC6QJ)rS$W^>z)0j*NOWQ>oV zn9S}ZX9tTgRvI3|B)ss|BB05GKq8HuAXbNndluOymISSkx)+A)0l`spH)*;IG^@<{(G+I)3Tp}$fEs_4s1H)ABKp@&@v~@8IRS2FCtnq z#T1)Yfd%9$6cxzCIgN9PD`T_!2z(Q}U&`Zq9gCzH4(Z#xLMO%=12Omh2CcP+qc60DdTSCUjnE37PMQ%2M@Ro=~AQFP(Ilih7^Fb9Y-(ms+k@(pe>!+OR_?FYRxYNm2%Pyt?~G zv4$xbjxJHK_&+zy^ukhveQ<~)?*1LSF)=`1C@nx#<#U$gL7ud`^K z2tBLsE2&>>csYHGVZWIznc{m123j0IG{WvfG`418Zr?@$BbIEMc!7Pk-pgSiq2@TO z^^*W7rqF)?Nnw!E4MY|oWhzK{^p0Lm!dkn$S6K7^t+XD=!`wCm$&*2H_H4{;rc6*| zPmps0hys8S>hD$7AbH%opEPI<(xXhlS_gw-`r6q&f&Y^f=fdIh=igN1Gd3vxk669o z!O`#&f?3_9jvY%1V&FBkU%(@CFRJceX?{Uw<8|k_OA)Uzr={#XThDrY(P06$Sf-=GG`RI$`XqgO|o-Ij&B#+tyXfmy4P0Zb|Nt)5ljmo zI%lqDUx`>M{X4$kf1tkiGUg%>yYIJ*@VD$5<>;28et!y}%zXWxC1-dcP;XIh2J(yr z_MeC_Z`&7Og3ht9jVJ$^Q1Jh>gu5;Iw~%|(jvvSgQoR>eD}X$+K%TR(jdpf_VM?*T zn56pQUrZAEFHHH~+0GCYv+!^2Hq!)bBl3SR$udl9vlfS0z)0!Es%kxBeXonr;q5;K zjo+yhEm;1&CsxZq0{pyjOXOdQb&0r(P%ha+ty5)XU(BRf^-TqnHpoY{57qa4K6e%Z z)lu&lHwrgdzRd(GBBFaJAt2)*iXp^MjZ?ebkkCg&3NOn-P^dU&NC^4H!bhs6o@R8W z$eH+TPGP7(3LXPhaNsBxp*M1irPof2Mj7ixY)X6~y)(71M``3mqQR+n5W|XH+DaX& zUN>k-tN~eWS*cU9`4END<$62@*c$gtEJMm6cADmbI~5@_PCDtl&NU&EKphl_%=p zwr2qDd6MACJj!b|Pdi0qF)H3(C{Gcpw5%Ukm zG2}faufPrCTPs!9dd{c;FS57FFKt&RtU+{zT1u3GDN2<^zQ!&(hZjv0?#Fy1daHbo7-VXg{2*~Xv^ z-sePV6R6n=a~@7{4!OeW6LrE>Ob+xeoJn38K4V>q$6|@KK}7QxLZIeGLhOmRt6Jw) ztsfCz7J#3{mr73y#54%TSXyGsf$d?Amh{m#mIg)fx88Qn#&Slh$9HVNwt`T{vr4xZb(t06mP> z^S*EnXt58(Pg|eaKPO>h0{+vvJr}UD1TM=%XV`$qSZ3ErQ&reKhkKI(xL|@F&@r2b!vh zE7u3aJz1x6IL@$Mh&#H;^z4%CQFQKxqe!Ojt+;COfMbLg==T$1$F>iG%YW+|HO-a) zOJB00k@n?rFTp!H1N{6!*R*;#0jQ zfo0^I0%;Gq>?WU1g%`CCgmr6dCx<~vT+>1R--gZYoDfo2D;S@tEec!NY$nc zIvs|gGCJLs5i;{o$%ls#enVc>T;Gd4WfVd=gusz#-iaU1w`+BqGSJp0<0MVLIWTNL zCtmL($sMgP2n~P8VW!j!f8>2mG2mQ)!Up^@ED43QGDK* zd4BLPf+`=}U3CTzQ<=}DM(`}~riNs535w-eK%dOG1$4XSxpyu1 z?=p6&LDyf-xwYG25U*+G&V@q$6kO$dZ+-&%G2}O=zOP- z{#4=l&CL3v!8}S+f9bx4sZzI%7s_Cr=vDu8^^YwcXp7}nuRBik(;#DFOXD<-1|m+} z>$yG*?vENzbCmm2u!j?X&t`gW`NCHeh3v_tl73Efc+Q{O&i2=F@#t5i!=30dh5fJn z5t+}`h7%&-hUZ8uSLIcwtWpg5dwpzw4ExlSzXo*@8wz^pCvNLF=aw4&)>?^JjSkoZ zKC4v(Cc>VDrQ+|B%S^o}du%!Pob>hBz*60R* zI>N58a<;w$Xlkyda-VAXsk85M+hb?E3g2OGu42<^)QF5*GNXx`W9y3; z2sC;LKGzP`dL*JupJLZ43cbB1UjTGzGQuwf7WNqTx9@QV)}>!2k()DC>vcAvvWpXc zZnc)*Op=0gu*lu>d5l`*Z8qwJl*g=3EzNxqiGt#GsZ5j>;f~Vp^g~VliT5tDXqh*+ z72)obaO8L+qYrm-=+#tQy7n}cqc&~b8(YdqCxtW**$z5TJb!baBM3c&U5a*MHi*X; zlj>byFtc26q6lJcLlQkNV@nT|vHgO+k6oLbpk@f$zQ%rMlIdAb{Fu#H*k~QF=D9T^ zvF3!juGX8{cKsS1GeaS9>#mt&$~^!BwX3jAN7SD-%ufW5QC)2L1@5qsU)m6FSZ;Ra zB&c(;h zg&OsW!?8m%rAZ2xmHLXe7_+<+&gpAkjIPUeET_F&&IjJeZz9FcRgoP_{O-%}FAknt zN+$9>!Ew*Zz>qm~ragGB_$is|zScG=lJefU)FH=(wh{03mXrgE<*0qK5!=rPEMlEK zWzAKxwrbd=Hgn-;7Tp_o_mVU=A2g^@gIs^3ayf}oDG$!9l{~&K-PG3Ro(`y%dz3i~ zAKsWs)mli6J+^jGh+Lg5r~|Z=Dp-x@U>nKSo*!>qvdZTOwN``3-md?cy|yenkv#j& znn-p!+dqKW%10+V{ILJNneb`V3_&Z>Ef8!W)Nwc?K0V!ocsC&{ek?6I;V$4gJJSe9 zr#%KP!A{W6_74j56j!Mu{AwtF-a~$nfBu7aB`e)Bc*E;P;Zm3XZiPo3UEA>1pLcZX z(^FF*llcFfz}q#i4geSsUH4P?-yq?zSS5u%!HMt!;D3afM3*6-AS@ygQ*&N2vIPU>c1@E=?ql|}mLx+pGumAX|u3`Kt_Zsvhy*ERBx*Lf{W=F)trXMWE(SE;gB z{zYZbC_Pqa_g4WF#of-(c3%25?sx(UMNuUZB52Zmo$r zSQ0y32Pl>vfw=#iyO%k6Wu(1MPr z2zRs4;*vB|9N@ApcjokQY+%aiN`cGcMxs1~e5dk3p_op`x%S{ja9Vr=IyTu-g8z|P zS2o?wP3!ktylJhALH{aL{Lw0|P2DEj*G+uqk?v4ed7ZgRvwG1D}gfXSl$mS)nt!81gB z$6CJN{a;v%+h43D=Es-ZXMjB3+uj$Bw&9THhmgnsXij^(Uk)?3#y}jl{%?^MVv^m6 zRGHm!2`4HVSJ(kmnzAyBx{8HF#X{u6v$4}PwE`4-vG;}^zjjZQt5t{0OKTkVe6JhSLB*@wB2mO#jUEmGQ;2@`L%kJ)RGUkpENNSPzOW1R_5WS%Ylev&h~z zdEWr)e-$fo*w+7(=chC9`D6Y6{0Zf|HSdX{eeI&vKqc`IK*b~y>Y#Z}5G(v$hhoC3 zZ}P12{N}+U0Ry3Wh>aTklqfaIdS<<&nNDk-_T!6vr;^i!HCp5B&dyTyik2F%SPXNkd?2e!#TP=u`k86Zhjx-c;L4TXU7kO1bMps?Ra;h$-I4= zhiUCH1KZfT@3))=QpbbT(0^On*_UBjvroY`rh@j9vgHT%{jVXA@75rZ&EMX5fV{sm z1<3#AdnJRkI3TUw-_~~TLj>N_)q35GR%Vwm?o#d4ZOoP(UjMmwa=!CxviHCLqh?ei zftb7vZUcC+{O(@VR_5gPA6FGx)N2br;Z-2e2KfYT1#hCw=X!a5vIu$MztpoCoTK8g z&@#mS&Y+0_o1Lh1bktWPqyoN0n|*ALmsK7UqEeHQ_C$gb(ThL)_n)=Ak~LjPW{8j zyz{0(OF|9E^6z}aW*rJ}5UJkc7MppRXu3}xvb=?L zgnTRig8%8&G1ZewkWrMx+dZ#7CYK{sv{XPwiPXQCmF{Pm=i(pP{I4rAfeb~NfGt-^ z@xaJBoia9LJ}lsPygy;b>&(FA%OrkZ3-Lp%WOGXa zs>j!aMbJ~Lbq+iUfvG+ndK~NWep3bycg-O!p1;^MHvGubs#gB_fn6|bq5NpG`6x03 z8t36o@mv!)CL1GqQ>7#7qeUqX8^B0arlsK4&cNS7Oi@&#SqO|$v=?Jmekx2ZR$vaK zV9!n7bwA8YJS4U|~q%a{9G{%(hu!Zzo28$YYG3ltz!e$PJ z-ZkPPpvHflE+W5~e?_nvcfBf1fqKsoAS8M-_f>A;+LJ4DC5p97VT=nZrCK{qv4w?F z5urbF@XR|z5t8LRnrd%-li|C-eB2X{HKRpv9t-U2#}@2V*o?y0Pi79ehixJVG=icx z>m7r=&rYtGemm~*z4D1+mLS8tK!!Ivju#T=f#t; z8V^czc*#M3Ts|z(;_F_KapXecAcnZ7rkHp@?UVD|c(1szfMZc8a@`!chR zw;SO|M!rwmLzKvUy03fqXZ*%FoAK1EZeCo9)-NEo%!NF{&#o9bBBut%k7`*1wBjQVBLPg|Chu^Xd`<1yLU4tlRf z>LmeNloqNb5fh<{w&S}&meialYpKyOvuUX3dP-G3TAO)lvA6e5p5V?lzLv26g7gc~Isb7@Di;K|gyIqgdvGgODN~q&st4dVjPO)2th`sQvxpVH!a$? zBPeNGI#Ituu?GGy&~l6JXP5cEgfEo|Qsaw$LEI&QvXJR|wMETsV^t@F+VE6H=sc14 zg}N=OnN=Y%&v&S2H?}*9v5T^O^vxDppW4>XZ`0Ad4I8++8+o`1VxyB*AI0aKP;9+S zTi=af+^zer)u#av#7<5 z^Yw^@ctn(nqOajjRGrb~2o+HS*0p_O2lD2`QH#3yg-b12pV&JM(87`43^ zCv80~mBwD2W9dY+ng1|1G;cEd1%mzq6pjQq^A#%7>h(uf$|dNSI}u@>>Hcb^ zbC~E~CFaMuL&yZF;Ai5DUE-Lj#POjf`6;sf`K>eb()ZgiLQiT8xb6D6F;Uix9Pu= zJS4UA<*nN!J6)>9l!hL|&)V>v9mK03(ezfeIV}Z#80-S{vGIO!5S_TVgRRC8*|=_g zASx5xYNXup5uiFmC{{5X-+H=n(M6ZPb_Apfw7NY$@jnr16(hsV=ZAgS;E`mIFf-i! zXpQOL$+y=_kT~` z-<(zgbLg$C3N_CN+M(dHYYOPW9F$FWLQPELNGSByg#0WK;|gVhM|pZGAAh;~@{C$7 z8Mk?76TsZBM3WzSNbGQ0(erupI`v}U4eJh$8BOomH}oy7Y|_$MiMl~^oRLW?6Z72k zpVv}eu$7GDa%?IRc-d>MRlW#t@4p>@Eo!F+sc3^3NOtQ5*TG6?&IvW!X@FDf=5ThU zzs?zoKbAIYw#;;#_yj?rcIwqddR)}-Mt(1V-}8+{j{wjqrT!{SN1+T#*rzCItvT7j z_KS|t|1F;~QHn<8!*R5ONp55~*-KfMI)2XjgXD?WTW)v^V5F5)%1EU;;#LM?1nWN7 zoEn6EUqrcina%q175AjzHF2`qtK6z8fK_6TYPpP7?8h%Vxm#=l<_v$Fx>xj#jxI=F zfKkEbqZnR7Thz#G{QS9`#yk4>V!g7kxo$W$iL-j{_uN}I6nwuzO8wSiN!2h_i8A9N z_kt3|K}`iEKobh> zrC%xq=5rxrO`FPt2>0%)%+#qX#E5J)eoX_6*V&5}xa>}4gE?FgMk%~w!?c_A>^h<_184C-my>+f}6kBaX+1b0CsSN&hIrl498O`5VWL6?; zsQ2m?L4D(YtRuEaV_NF8Q@`&weQq@tZw6!SH!;31pj+K;6s_H?io}tgAhvXn09{u4 z#)DU>c8vPYNo<*R9(wiQ?R4O4|2Ng+|7?&F&h0a~MslRIM5#x~|67uvfBj(%%#uY^PmqxGJw9fKT{r9A z>=uv$yAtq!u=Y4HQit+46fgEt|5#A_*MPg#e+{^+5*!thOWl9gqb)vtF~~IPubwax zPjqfA%SsX_H7x5``A~S~Z_@vN_B%NOGf|+(^55g^#{b=nRPqmi&VR6U{#F|R)8Gi; zQV9Xtn--WPqy4Y>>VKIxP1Du7r2;VXt|+uJbtAv$kNLt8*__i~0`{r?;LO(J-!qR=EV1Lz!NXCoHtn6I+ z6u(*KgB6gIb#udI7#tZnzb2kxTEk;sp0%)9UlF>Bu_k1t-yE_gVuREIvrTF@3%phU zudk47F{_YPgiYo^B_og$frxJKW_4H_j-7| zD$DsX>SXYJy@K<#c)s^CXfSPc))UN2xsoJHuQeCK6mz=y3?Mmch;_4opo*Jhhj&Yq zi%~I5BuGGa_|{IC^!j^H#sy8(JHGDqsgb8^ZDnHHRMT-yxJ5ZDeSoaobv-yLztih6 zQBf;pfuU--bd$9%S#)-ErJ#|fqIZa@k}1?u@p+NY6xK_jzsMtZj&||7%ec<}>pOnx zJl|)@$nu$+_Gaazf$%kj_iF#+{%K1EOmtW^EMZb#YeVnKoIP#jW|cwlleCi6^J;(v zY#C?5cx~1)bW0=BX>UfSX{S^5p{(i9)d)R7`BKgnKgCWHfKxm}M{ zfvj=hx;!K=-_;~-CbbD|P~3VScVGK2Fod=V&&^e}-(L z_6HPMRYsBBiLxak4UNAsU!|BDE7AHo=uZE2&fZA;oK{#qUV0dr5RP2SnInBPWqH{V ze(x2@^#R7&2U|Q^EDd6DLk#c{UpSY)t+^SSBEb2E}BS zf#|+FK23r=N|$?d4;{v)Ds+oRLeNN6_sx`qpDV@8mcs>_WMCPX#|H>}_Sg2kdH3Tl zBon_8Y0fV9zITE2`=h0Fpa>f#&gZxvdrx8$y)Vvb_xkb|OJ^bbeTa&{>t`>8xu#8_wnmpBCpc^%0*yh4{fr&R>8BCitC1aT7M{Kn{O+gi*b**|6V3hzCqVjF( zDRWvYi=z&{yXF$lvy-E_#rHE6IVDwu2v-9;y|@xYdpZ_pLnUVa`{W-^5O-(hg`BaL z&otqUq>F}9uY_X-OE*ec-jQCai(vzgjzcdM-%rRqg?Ae}8;VpVMRRQ@8~b=Hg@xnt zb8P_|rixx%3yWe5eMc>23tQ$E^4fgJ$kL-HEPJ6dC1n64u9F*aO8t1(P>mhi&NtOt zf(?DC;FT9wmUoU}&LzT3pIOpa``cU#ePM)x*V@YjQ%+TY(zuvEgBi$2TbZf=x4laK ze4?rncd0qgcvB^(0cvnmXjpU#U0JP4`+lhFL8Qdlv29f{dJJGuED~Wk0luu@>`*CY zcbgdF8F#v(bQ#KW{%kihUX<_ol&v00A>vUK&`FmRprLB(fG&RYb7SaIH#|9gGNq{^ zQB!FXVsJu8T}kxYGdiJ7Cr5$auw4RgR|8L{xnuKow$^G1KI#3>y)>AdLi_&5+YDtr zBk7^tRHAuTMH`}M~d@y8Y*bq{{l`v1@`-@6I9CW)e>L+Vi}@v7h$D?{lS^D!8PA5fZE z!_b)c*~(PU(?Gp)%3aZ)gi=EXAxT(uJt(+Pr#7?Lo>Nv99qFh8^U_9;7g*@xZU*rpQCS}b3=bM`H~j#mMyLpBY#nSg-2 zTdaidH0dlZgs$2|6pK3sk4nfbDGv#GplxO;smzUb;qPKnxR$PmW3gQWZ3WtbeBnw= zX=CZAJA4>o1{9t5<+Ufzars6o$7LraWkj0Fi&M+@?^EiBMIDT3HWm z68Z^`YwCIrjw5Z(xD}y|)_pK#)Id$DM@~Hb-#b*!vd;OKlUn} zL&9=D{}xArlvA+r{qK32H7}oK?=S36)JD@F9MW^f^WW6xX!s~B`-5OJu>R;*ZPXS4c}P1E8?8iTn}*`2D9H`xGt)e0(khEkdae=QUKDH@Hk{N+MG7rowRn< zem-Si2?j6Bvz9LPqr%#Ta~7Q2S(A4Pp$f-S+7tt%_pLVoZy5`{8S>JCnr{?_>2`1#dpoD+GaR+TTZMy3of6JqA9~&O~bN zlySx!K{WI56$iATCV*$I`sX37dTll%R=m=60L{x6uJ}?}H&M~mAtQ^yu|4s}MB^93 zyqZx;RAXJx%qmcRd&z_YB-N_GNyVax zL9+2w)^Tp!gzH6xict(BzgL^i#%#rjUtBq?G2YsZnpr|>+b^uT`SKLn2k>C6`?d_K zl!==uk!|!`JUm+KWs47R!j|e|QU!en*F`U0=Q_Um&t;Fdp+3mFnHded7@qDo$m|^7 z_=3h@?{`I04GfrfnfsY>jIUCw#6&+KcQ~R7AA(DN9vB?09NZG`ORQ_MisXGCz$AhZ z!$Lxr4F4VE{PS5S-g+;K101B_`N}TUYy0|#g1y=Wm=jvyf`l-;1?Ct07w^;4z=wp2!>kwldY4C*~JtVH2XFPC(FD)!4OJ|#uQTs&4MRt0d8Ljk803e zgmEP?tZqB%eK_(dCgeUWX8l^I1DhDQi}Be>MeaXUnBNCU!YFD7W1(qQanx>Yh0S>@ z@%3=SBySBOjYhtWC){{XySB>c1>8`_2VY%=fRVp>{78|fPTweK1J7~}dQf3rkL`8# z|0F8lia+QbeTKMfGK!wo2SyRVg}Q*Ub%We^H=n(o-&xm~2|^f}QT4II-f%5g2(#eb z@G!mv{0YdI@$)@NSbI+-Q>Cu6*jpuSQEwfhGGi5=IEf2agH9@s_ouW_WmQ+{vXGeJ zQ+@x7?g_$P0j5Iw-?}}Vwq;YSA3I-oHA-<`;8#I@{K|1M`H@dHs0CFfbG8DTt5GhX z9wGst?5mlaHa@Mp6ZmWcL;Mjr%xW8FKQrjtJz4aq33vm-inCl*t@T6TsBrsIFQ|KV&0XJJSu1Y zhL7&;z;FhbHzn=ojmwrQ;ygZR91y7c)jMf z@(g~Wa^I9;l1CgXS;wR4twyx2x8p#qY#nCk${4O>->B4P zc)B}@60knv1m1M%50{03dQQ4jVUyRmbOF|(pOSxGxW2}Xr=jJ=+l7d>*$GEm)wdOP z1%lyL0$q>>Dklp)(Yf=nAYEt_i7NY0OU&mKyEScE*)K?vdHAd_z3$aob9ZH!!WodJ z!$#C(dQ0P|=fpJBlwhM^u+bZI0a<13z0GRbS%Xz&?Rc;{(k%VLV@SNos$`lwF?CMU zhSAcnJU(>J0%Xo>(_&VsoS5uZ^?;G2flS-qkg{h+drlKpB38yg<{@T1d=2)m$8R8` z29z{T0#$#F-FtzIJ5aI!^kQ=dto`eG^jBTGUYdZPwNf z66VH9+Aeb7^kW`9@s>?20tmij~ZuST6m5F*AiO^ znnc&5R|VMiSQr197x!-r;J?7X(hmP`z`v{u|JP9l%{)vC3~(7@HB?cBWf$i7nxOvV zusRQOu3lEMN}YN1|G7-yZ#PB(P$lsHzf7PKcq7}*f3;Tp=b?XEtLMLf^Z}Wq8Z(r?Tq)b?T^tHnVsPPzOfLzg%Uqz%1I9!#{2^!d?}2JKg`f4Bl*OwGJ4LBP}!~ zZL;Ks%OyX#m%eC5xWrhqvMl71rJm{#VOrOqa2K``?UN2sPim&H(&cb3Z&S%=L+fANqNcId)P!6OZfcBk;~zGdlYG zSQ(`4H59lFx1KNVyg!^;FFy@kMqvg*vv!_SsDFASo?j4);-!rlh)x!$-&2!9TR$5! ztnV0etfu9MDfPOw8v>Y)^m^rAT3Jsld(xx%#IjNkcpum|Z~x%a()B(=8rb~a9Da5juGHT3 z^|ZELA+Nz;HIO^C!>aSq|H<2?kspLNX&_BOF2ouEq}f-pIS>oO9&Z@32cdQcUWbP# zE%f4vgck=8EEi!Q^mXBpK7J5-!XO{I;Zo=Nrw2$)&7@?f|JdUVl?pDMyJEjV(tZ>q zs%V!6p6LFr#^V*w$u2i?1)NRj?d7*aE&o+6_HMUeduzuFm8wHSBSSr0$QldXQF{Jj z6MuLweBNh9NjSBu(L}4ezdKt4K;Z-!BMgvh8BCK5G)#qq0i!4qiDmUZA z(R~1--w=r8=<3ax#>9jcGJpOa&Ksz;Zg7FZ8}|;A_0=tt#?Np1$vrrUg&H!t5RWRU zJ&!UpYFC$=*6xU~z_Ce13Sz^s>x1G5Z(Rpx&Vy$i{ zi*2YU2r=a>?h1)&fd1SfWCLns-=qZBL0hD3%oFud?#L|wck@9`ypwWf@j{NKnprqQ z+<#THV7G>@HI{k>lrjnYCiY*^ZpL&x#ErqdYSdcwJ*nAcswkIAR6?m;B3HBsOQGtq z82qBR*p~L>RCY{hMw)C)pu}lBy+*T88V}jwl z6F+oCkTFx)t?=Ee?|hR&%<@$pA#Q5>$zvi#o4E*YKKJk6x^5Fdo)9v36pZ2Cbwk}c zd*ws3z$Fen7v|M1W+^^CLo3{ZK8wsP*Nf5b%=gT1sq`Lx+%pN$q4#`=5;-#sa>=YeN}&B3F>0(ah_GP~sWy7wu&k`%*k$9444JLn#ETlP+5248jSdnAEgRQfg()0|O{HIsgu z1?etEGjB&yCFo~o!iUMb{ge^wa zv*|+>)@QPNxghi|(R7mLlwQ`3#>v*)nc%~`2Iq)h#t0@#Yk?E>l`lKjs3`j>RVw;z zhaFZg!BZv+o1*@MT?-Q1uMa$;_C7y5MbB8b&H_ByeM8?&st%la)N2oHjb@(J*-L@VQrcIURY2qz8 zeD^d(4NrHxGw1#QA5$qRUucvc^!=DW8=pAw-|z^2_vsWU!wu27t93MU=ewstdn@$M z8(yp|EIz|3%ZZg$*QgcIqfG5~$^A9okgfTAxe=(Vxy)wW6Ifq~wR_)+3Z1i(4?|PR z&D5u}eB0hRvez3}efqhVRv-1zc6y+;N^3y3V>bVNV=EfCoKV@ym)0!mPw*dVD%FHbh z$CN5&!z{NC)kw2&{W^1AQAZ`+tn$uqcMr!A^7U6Mw%AA6QwZ8J<>ef7RKDF;o^syD z%Yq1GCO{`y!YiGlw=0~{Ab!OvYDYwOEx=Y zM3TOar$oVB0Ya7j?es^M!~QiuPHtV^nIbDkQ|QJS5;Xx=c`+l&EXb@!%Zz0iP7%UA zA%lln0N@N(j6>P#L}a%5z4R@()&s3AF?YJaN|S?2MKKCntNPwdDcYij0z$o-!nYAx z4kcl;$^@0fcEVh7T#w;Qxpsha*&@dKSPAtt>8|YLIpMuR5~I@yv385M>qObh(6f6| zdH*@#(pkaFG|gO9(GxK&RPPFXOzpH%Ntem?opRNhFa}vz+34#sm^RG4=}|>(mu#nz)Awu5U@rT8(S*tdy}NjuQ)6yXqg*pkyc9W@ousEMP3_+p!!rp*aK?PL z+6{;m9vzj>n7J%qslA16osAq}|2o?Ng|{ZR_WoZTCQFAYw(e6y!NZ(jX8asXTPgAnc;jJERS1 z9i(%txtLhin?nZ?n)r^NYxp43l}*1sJGJY0$UCxA?>I5;mXmBx#2$aSg%mM~ptVrV ztyH8PUD8&}*mgN5$S{}*4!8 z#-&Ep;;JcgN{KEwlWAxZ^#bC4pN^kA9Cb5h^N^0n*vwcPvN9XTZ5+9WF0EPyU`;O^ zf-);mst^ycOKrM*A>QDNznu1&M(Vd4-FeWU0DET1QAYCS`{%E3H&)oWT<*O41a>6JVTRIsK3y6Hj>BhB8w-{i z6fQlUWd}B#;@ZEU^H4olb7iX5430^xqGRf!+87y5eSM=;YO1(yEted3#9W!e#PigX z>HQ$^C~OQD;LWPQe=lLIY3l-jmq?i5)d3RZIn_(av*4qW#&V%=NG%Vb0JlT*_TtuD zWEQSr7lwb7Kh#Uu;seJ=di4PPP8co+ThoD6uO`XW?qoYH)eTMFF^(aCHPlH?(2hbK zqPVAe>=kU#a3}RAGkrb)bxH|yGo7N;<;oF#Cu<=NqY-b~4eBKK7S&<=%eSJXaTJ`a zb$ZyDD!4GiOXL?_4_L%&mo)_!IFQbp!j%zYIB#aj{X^NtCN?bNjK+C|^Cq)HTaEcD zHJq|_PyhKh`!q2ja@y#H#;PbU@NVnwx|Jb*c-Nddede&7Jt+0OQqz$?Kxy8-+6#A8dP?^= z=tSWksc$FcoL_)Vw=|fLhkBRsBr04fWFRo#&QCoHsjv#U|5F!q6(QmKa0E~OXldl@ zWRjLSt$;87vS6qP{TcoWf)n4@aDNm@((@)4s8?$@hzMoLg+X|rjDm1m2C2pvRRGO3 z{8^IfQ?b{zTo4mAO%;zq4(A_Lhn+o!2N%2df z6CQQtN(c5Y+&vI65r|Qu|MiZDa9Q^LLg!tRYFiR?K@+D5 z1k)%kmC8v#`-tsc%+sA|$adBw2vMJ(qm{;T%Fz{zJ_vDfxH)JA3b6n}sP?*!vVX4f znFh}nKyKaiCcurd^MbjEC*Y4P_Y+n;lz<;6zO^{S2BjI6Jm*)Ib77~W)`%Nmqf*WA z-}OL7v)S?7C%a<5Ao*#FgQvyr^%4*y8tMejt4p~H6xozC)AiwNZJ~da&Zyq&kuZR3 zYJiNFpSU)Ul@Hjr!3aQng#J=WDI008tRE{^G@Vh$p|?Mxf#87yJ&|?j+!V3={lGIv z^*ElT`>wLC31u0-q+F`386BOymwUi5WZ;0vnHz+@(be_CcXVu|yQr}ts&rixg~Hg; z85xaFWH#Zk)Pg2FreMxWQt79ITGcm$DMe!`G)D@S;TbjVwsK{Rgne7(3A2>=dozzo z_}@v{`q8%xg@{yHc5_^skyJ}Od*z{rTX)>48+Trr_6b&9g149aWfZv20F+!7^#>7d zB=!H+15K~AvfFu9`LRJPnyH46Lym?T92F;}x7MQN-}J?Jnb&IKs>cBupgs1q1=3G6 z{YI|MyzO%rNwd^Q#==-uJd5uoJB~kiDY~*eMU}b&8s(b270Q^+uGt%o;Db2vW-594 zdf=oVdJPOXoNc{KjyjHcMLOVQ4H~4~3PjJpm~DIIZIOTS-A_B2hLr|9RYG6UDKe{{ zN8*UgIITav(`R0tkW-H)cvYv?HKeQ0Bzw?89VpdvvV*MRd6UA8OVc-nV>R?EO`hV7 zl3QJ}JhDy%B_(A|RQ2^QTKA4pF}zW?X5Ou>B_IV0(OV17pID=igop+;gID%REwqV$%&0E*tFtUMkReWa)7{l>CVrB1o2W?V) zA6R4W0vtCbY_py}#&db8YZruYidtDGry(@4+B5Au!~&gHb*)6!wCLH0tkTBDgIB?T za;NUK@Mcc~pnM_)Xv%b8)OQZ@S3U%kw@VBAMGCn*7<*GZb<(D1o?|w%sKZy zt5|>kN1;MUp56Yp>MC=Yr2s}q_sL~8Ovbx!V@}TK?E94IJuNXpE`&Ie&RY;KhD_0%QwRNt3(X*u#B2?bI0PA{*_1rBLn_QI{!-ivBJ{+dSU}Tl@Nfj8g0~r(^|J5?B-i?9OSG@1&$We zv|=yL<43X9M{hrLiYLI{GgrI}OTx6#dabPOWBw@Y6YnWV1=UNUCKOvpu=LXG3S+Mq zez%2*XJ`yAog+=+hMd00wuuuvJ#dcze;O^#WA0{vg%T* zHeo%lV(JRpjF>%Fr<V3_TIJ1t01}d9X@5H zde`<3dLz zKnp+5GOd0W!#nGoKAi&>{LJs3qHp|4PQ|m*f?*ikp`c+OEPcrS(;AKjt30)s?GMeL zVnDeG-o0bj#^UE~bA3oMZ|$qEd1i7M%(#W+Blp4O7LFuT7MWBOOcYVWif2j zwC{r?fm$HyJlM7yBbWc>%|pp7&FNdWQz#$^_9$MaSWuJW6-{&cx7AT3;hSeJuUFJD zil->u{%c{5DvEZKmVY7tz(YD9(L5~DBx&Lc==lA0$Pvi>5o#)qU|RWN)YIBbcww^< z9;%I)rCX3JS{73Mnml}S=?2PZj>n$1p?e`MJHTHQvtbHI-Jy`HeMokUzFO=O@tZz}5OLOUL+er%$!x1AOl z7KpNoJjQ7&#W7HmHLvt`{$o&(^5zYaCNp6yI}71}m=C!ykH%7Y5{7Q!M z!s~>XrbWgz3#F)LZ3L>ym^Z@mNP`Pg;(hNTO4s0V%I_vhs++jeJR8xQbBk0J-6<|a z6JiaOjbiReolEV$`63t`Nj@}GJZ^|lXPw5lWt?03juB+0*1a5bqgI4BZAg)UfUcMn z;UTB_*!Bx4i!l2W>4j%>UYHw`&cF#=8}3n)J5*!qsTK%AVD#I6Z>tV($#zBGbecN{7MC!%`>iLP{jm-W4ieHDCzT+bT=1+xKuWM51`N zlj~x_);h<#t0^CN=jGl!*aQ~vn_8<+9?i8QoO=@!x>jyey<*E-@FpF3r=bpcl!Mg$ z!0)hVDg&#KyxJtpKx4)fXY+1ZC}OnX4hds6RE#1j+o-|Ws1_%D9DC@>LIzvw%SYxY zl7i9zVH+bJ_v0eO31nrs^{T2^%k+Csq_|r`naVs%+#H7bgZBYW;FT3VjF(8Anlvl2PN;HC=X(SW zssZ1}&C)VC%Fxn$miu3*d+&eQ1z?$GjUJu-IZ%@a;f@?Eex*6(U#gX0l0GpFVUtf} zGsA=^+hJ3In=#kwe^pwH>n5HmZ=R2IZn4>Tr9X_{%Saz?GRXMTL8?v%T^6lV&ZBy} zliXXQIIjE$u&ou{%6~V%8AQo3a`C$@&~sfpA1~NaxMtk5uc_VKnv!Lhcy*_#CF^ng z0%sfDY|+&rs$Y|ovq@HOJiKw`KYNYP?OIeIL?OhLV2bm?Q7gow- zlNe=NxrWOzf(QHSwK-?}(g`N7nSVw+PfM$_kCPQg58dkn!-@+W@4eHP$X3$kLEB~O z5Cer2L&whzZVAZwGq2HtKb4XASvf*qErh+@89eZd@E=qEd<$ZZU)sS&eL|~@%5Nm6 ztSf&S@i$zaO>UM3xP?$5IY$0WGS~h}$zq?Hs3mm?*1RCVp{#w!7F$ej`F*18VAy8F z`ut>=<*1tf6}d@2p(Yd2U7~?Du<0i5S<%bfnBw|EU2tp;k*iA5t9TmH&P4s;1m|um z;g2WIoVf}SHsJo3K1SNiLP89-DnC_GNJiwpUopnlAh$_}cQ`v?fld?ID;2zrQiiRDDlgy3aWQ^w3$i?{ zf+<*VGnGD|UsxDIa;%y@^9yuY8&x@Z2V>VFav52eW#n%0 zcrBcKb+G6bImZE}7Og|)1f?l<8$m5)xnsbMsmj=n|Ni z-f=c^oKIriw4?98xTRN2P6@JzO*Ln;7!gs!t@z>oRgk;5Cz+(CU(~n%7e}-rz+ivG z3Ik`i^OxbaoP%=lTk0pOP1M`$U~b!l9z|&AvEtjd{~KK<7}LXS+b#4q>c;tU)J+q+ z@lR)JuhyWY6Pg{0Ps=|Ad!T1sNxQ;PhDqnM?5ysn45bn2uWUKQl#$$X$`X*8lW{BJ zfutDoMkg6*3WzA)yDpH_Bb|!G4*r@=;N{jnXZjZ3MH*1d+i1r9LN_Vxc{so2xgi3V z1*&baI3-LFF`<>9M zcP0)pa)D(`=p)&X5+@4IL9S)vT$%)-QITB3y5Dmkiuy{_*7Fw!W#sYJ z^?*$ZYwQ1*>o;oWLp_xZ$@$&|= zWU5y~pJprO!>FkYnu=RBM#DTA7802wX32t{b^Vu2bEX9D>B5<4g$jk1iV+==mMT-8 zs||6ra)w^3Dh?&f|-so5Lz1W_7Z8?9tVlDDB|a&6__UU{XYwR(RxPC4;P9qP)5#{A-i)=0zy>BfiVn7&*m zfOqdjd&XX89QZNDWj}tloWplJp~2)H$eyu0oW?nErk=!C7suw9&Y`CTpS*5+a<1en zoxomatqsd`ic&Z2xYpzL0CV?4YnYnDFmVEDrxX=7WMe^@4+r+WbD;6 z-hbZH+juU2n^P`-z>QEYP>1Gi(Bx=)O)t^Hi+ z%+zl5Hyn=Lg;%8z$M`{hWK13H=)oX~=&PX>2x(SO^ix@_oR`qCyZr@sG1jL5HmK^D z7D5xT(A?ojU`?+y?Zjh)Dp_-(-G@A z6RR6!)k7El(8EBaFPP|bdxxH|q%IqVXkTDB^sK;?aQD&o{JZ@+_qtoVF|L@#i)FQj z1(8upRGxBO3A^sn0uE zb#*!yY@F*Uwzwib;tIBlvdlua8@R3_=l`R2-*ZkrEHV49=$fFG@B@w zo#w}m?4c^$XlL!h2AhRT+iWiZkymBKjkxH8Vln}#p06&c44_FS-b39Q{H!bl2!~Rm z3oZyuyrojEU(L;F7?U6UD6N&vXh3J6VyJ`{ zMv=e5MVs11@PQyusDmlg36%JWsdWjw~xrKCho?^jV=Pat^uj zI1t<dOdp;nUer|XwTIbSij?uXRNSH#&DCeyHgh+T?Rr08Pcz)$$h_jCJuA^~M2;;zGGKipGUp3jmc@pH~do{vIdHYH|*|##v$$P+L zeRej{DTZCrgTJUjnSKl5&L@|27-x-SjZh#G>z`Qot4F(}wTWvKGiNysT7!#@#u`r~ z`hE1R;wjZlMU1QUF!Ix5Af`vsy;xS=4dZaOQm7Ka_ra)aj`TY6r?i?wJ2v*+a9_?g zOBXu=V-W4mUY%&E)$4{vq$3&YRz*gTAoRr2W`DMaR(vq=5Fe)YP)lseGF3qc5uLwc zwqN~|I=ihm=xUhVhZ0DYkZYVj=VL78+^<4|s2yp}nJN5R?L@1=_6dh7;c25S4pVgBz&)Z2OGp(@4JSs>~ zBK|7iywHa<99zf}XXTHcwZ5bO0bbTtkh8EGn@*7^SN|k6Yb(V~R--v3aCS0Jx%rd) zY}yd#0J+YC7BzmVsi!Z2$O_b{bjmcji7XyIvVAqxP4QBkxkm@UR8pBCO?PfvZIVN{ z)=+ZM&X#mL>)}LRkg1|#W@qC?Ul#P?1^2#1fy$8?Ym9Bs?}{E5U6JIUniq6G{oNWZ z6BjqvGO0x7t~s?lK&Z{Rzhus>`_0jup8a!m+p+k8F;{$tGF`T-B**e@VLXTPoS|bK zTC_WH#&R{ws~G(3o7N3uZ3dau0T^vdU11+Zvvs~S2P_+dbAQ(*ChehN6-kErC2x*f zag(%v8lyD@_pex-_-!Rl)VaYFd#`6d#Rgtny(Gone8F$`k@CNG3-AwEgsFy*Qb>yFi2^ppi3f|KR1Z;2rHQn5&@8<~%tp>&ZebuQ@X z-bZgdo~4FOP2v39T`Y)QdXUQ4th+o17-l_Ph~22?7{z|)vze4`+67UGL>J~k++Jy9 zYKhYzG(ILTWG8YX?5&IS-I)sCJ)nIf*T0;dAxx^$gkwdmX5D^;KSqIyF@}DgQ~ENN z!!zWK__^frAblk*x-BOk02mEalON1}n|sHy_ZzPNeZAvap95oQO+9Vf`NNASF=_(* zu}jPH^G*b06}wx@K@$F}cfZ$fx;CEE2A7<1NPFGsij2M#cW4dQKk?OtdY)xn3!RtYqjC!?nqpJ*9tQtWE9^0y*A)1lohNfgO*u z=7iI%G9i46#5mk>+*#20Oxn43CM!RspYP=}= zI!a`@9>K#tuU2mlEhL6Z0Xzu-&2kqhn9=dE>sse3>P#*tc41z83tkaB?epcV;doet z2eeC}yJicx5N={}uw|QNJ^#eDK~pGLISYpyy8G3PT7Egs#*H$bRbvhn2KQn?&6KUO z@fA}aFXX YNfn$N^}sUFfip1pm-WuuRn|geD1l>mG{~yI~f=af641bj{W?>KrE0 zME5)F<~h;z^jA2ZAcpX%QJZhG%Ns#EPoCtMXUoEvY%B@hmR%B*v_rX<1P@5jHI1m4 zY@5Yb^u}Bm(XlR$JtZf_n*~&$R$CEjY83#qdJPT>2z^tx=+X>vg`%}G&mpX>p&i}au(Roxu5kMb z`wHL9hF~6qqj}%Mx}s)EZm|72T6bxUXm3>X<0ivfQvF4Rv3FnSR)J*Xq-JV7w_*BZ zy&o!uF5Ve7#F%fJ-h)YWBc&l#ej8(mhyS=)-xl{`b%^Z3tYln}4;#yE97jsfNqMc%iC7gYq`0+2bt9Ri=#umS%9btDLfd*&ynV^4>M}?!X}CWptCgQ@RaT06RY! z9*Wg`&>k&o7<%!6xh+53B^fS(S6QKhX5}R~&MNKtLpYnNb3BUod3m-1Q&Nw(LdD^k za|4`Zhr{dQflZ+S_o|@f*TINIW^2l1?Hc6L%SF^DsdM?? z7$!eLv1;aa5+S`KJ&+huZIwF;T{Dhb$!k*qN6j`zmb_*w4U0abcHJJYV+KyhZO+zO z;_9-Q$gm06h1Qw%J(PQWwwQ!sZDLbnLkxzt`y|q6$1#Yc=3cs!+_k$i=Vl-vO5BUC z{6!)lR`YXAyNhIdL||Aw1@H$Q`3)%spv$dbFG_K0_~-pFq(`3dEF4nm0n$QS)lf|r?Nn;r=At6GJgf&CoY$I9J7}4=;kQj;n$&M{Shvn z)Jr}4P?RRjb~X5V;1QBm!OsLenw*fvY_8{nr1PgR=40IPPk_rFF!enF4m$OM=fI+r|Z(A(9UfGuiudky3D~55WUo{I0tyj2~-qZ`l%BT}CxUlV?|v zafKZuXUGhwfhAnhfjKzu?oa4osq{)2zt!sr`Six&p+*D;v#BtP9p^nSmyD=GAG6zi ztNMIAbiN2ilpnC2-slwIsTN)!t7F}AMz#b8v8jW6XJMZ=-!YqaMuDDtRR8g{F87PU zl^-B2>r-kSS#U3Bn2VLD-59>p$xMz&aRL0*=?k2PyhfQTD19VLP54?~oe3>{hr$D(q+bNr%RZ@O*}H>S%rvPhvfSN5k=sXVb`+ zh#9UBL*5aHby5)?*P4b>EFtcSveyrko)|8|8M2aA!`o5z76lmy&ch0WiNK*?7o{8R z-7a-fXEX3u5Z!h$_*17h`2u?*U1^vfVbwMj-P$9oQWo??9TbEK3j_|&zvCtxl*ra0 zP(o8>>_2W>XOmk3TMwaPsuIT&cv4aIQ80d0UM^40Y8d1Tj`ZR?QH*BrKC7sTbVYmc z=HRg77(cSBH_AGaWG(HskqT`}q^~J0lAu^&WFOC_(NR-v z75K4}kY@;nXdy0GDR@qTVy z5$a4)Rf1?%*2_H#!!UXqEbVnxUY2&!AE0=v79%M4t9d)ej~!xZ%>4<5;z=mQBI(RL z870SvU+B&En%_$~n-dPqHC&-x$FQJLXGGZrt_maoitX1#+d1SFq zn^|fviztb_Y~PO3*cGO-+SZkA<)?pRt@fL5+8AxV{rlQ0&t2AMX`)2Sqxk0fY1U2+ z{!rMMG<6Nq``St}YvD*Ra!1@0vpE4%jAU0zQ7yQO;hFkTBit7-?y`>I{sscJ>kp>h zvc#{5kh!}n^-dasLYY6R9il=ZR+f-#FIDz%rz7BMSs16dPzmWiS#t$XWL9lQe;>e4 z7F@g!)5=E#pd@27#wc@9;l2`yYN2QxAmCcUHV$P#)1*S5O5KU>joRJax+=$kF<^e> zG2~9>+4f&o&ypx7RdJ~uN6l8A=-3$GY2K#sNEr!{@V$ zOhTgRJ!-;i>Mfr%+jl-$M|B2H$C|^A++d0QeH6sWB@ve0G~LT0*(jQ*i4Zv6Gj2<= z;w4>2CyTZ~vi+@s+zTa>%R-OwYG>j~F=_|L>g@#0TVeTCvbKke~(C zNLn`0L>4rHW6|^ zKR)-c0e%~a^aUgxZ#*{?nGNZ(PB*Qtlu0jyZ9*8O=c?+ep{*7X) z?S?2WK-R%fO_!`r5fd!OqB!X4&_H&Y>)wM8EmiMPMtw@PRikik8A_UqpTvYBZ-$3Q za1lz}GXAsW3f;*wX;cV3`GH%1@cq2K3^MPeE=+wxc+7!}e_U65NFBFJ;FLv(!gu>`WxuPKIz=GF^lg$|RqK(f}8j z$&lXHqMi!di*;AJ}4!m)-J=*4PfXvya^) zNm-@~qD{IQazZ+;dE(9+kGPj)oM82c>w5dkhC}93p=g_M^95!iU6!43OBY!&lyJMg zhf2yUeXSb4N>)dh%yeoz)7oqgo$BoQC3l7D-27Go68Nzmq!b$I@5UMq9Voh=h(!t3 zXB%W}qAg86=B6Sa=XhC=vtyKz0P>KBdhZ;UXf5t)P;(>3v~AkcHn5A0!~y_cv6m^< zywX;lA}%9OrQXR$jM*BN>z$_e)#WdrmLn-|v<=z2vUP^k&^<>S=0S)`o0E}OaU}X! z$)8ihLJLdCEgawxpXR6U|LRWeN zo!G$v++8cKJeYh(QAMEq6zLD_8sYaU<8a<=&~sG5JQ~`BCXI+-yey6BxIP|R_&I}m z#UQ_qCf4wF1VJecS@^|_+ST9zj7+*JvNdVSVzhha${m>PACm-O#a)-y;4IfFzyHMl zPPI!_2$^Rj zCRnRr3uJE6>gifDW;N7=rFZ65lXf=^p0b=cVvH9{=BDJ2n8Kb=H?o)Pzcpg&Hns1b z`)CuV%up&Xv2!yXS;gu_;^sk&gLGL#5l%|WSUh0-9@;+~x(*cso@a(J1KqA8nrf&t zsKPh;Im|K432-CYt_E{{a$IKu>FA}1ym$@t<02s=o5t7S7bNn6=_XQ5K1*3VKZv_t z>}P1eK=8*|wP;61&r#*!ujZ-6U|F>@AB9%82-i#1EQ00cd)9R3zcL7gOc88H3HH(~FPubPUzoar;E= zseR)k32{kA2R?=8hBq1IZ6rF=?LS#6P-Z{j^lG#<;e6!ziVG{L zXr5En1_@tWXFrobv+KjNKKb4a<#2LehLyQWsz#WG(0%<~1T6?IqIDQC= z7$7V6Zj5Ru+$dCh&S%&vrbd;B)@rZd31b==+VJ^Ye%^qQ0X z72(^1Ll@<6S29F+v-y`SO`k`oqMl7r%uN(f5S_!*T0FTaQ1T@j5p@uuRg^7)iTo<{ zXJ@fTJl}7-$j>y8uzb*vLwqSv;ZJQ$kA7WAcU@eNdfEx^M96pis88=$uj^R_-e8bW zR69hF7ktQ&-WTCI?KtdA&Y(oUeQ~yU{uoYrh(5Jubji4V!Xu;FZ4*Ie0z>v}X_{`b zokiiHh8)J^$OL&hU8tEzKd-Nucpp2g!ik*+4PfC9` z+C+Y)pPAGMpLDtPXl?rGEYgi^0}OE&ULAn_dhz_p;d!Y6wB$`kfJR1l&4yz4j{X{M zP38@b`w5L~fDhc_J-A@^QCTgXvOlgpo{onov*AT3Z#3N})NRu7Kcj=Ar*Jyc{_`}- z!P-mK6oempv-9q9t0W4i;am_e25*G<2S~1rHg;IH)K`pPwb#YRHnbT@voX?Co|!RN z|E+^P-sRQR^|oITxiciW&X?v5mvi~36K)P6yPzyr7t>$Q`|Il@!&dHmP8>u))4yERlWC5Wy$UV0vavSqo&@ELo{w8ZMUfst9KfjXMf6qh0Tu`ju{6+IRMtle5J7go#A*W^g~^#?WHWXg z#RcP3N!%sOp#)t9!GmJzP%I&dy)5q|EJd4h#`ZWJ$>^`*o!k*57lQmME|zINr)l1>=F0BC7>wb%nN0bNHH5+3#pL z3%{KvL(X0u=OL6-EDr06ll$8XiFE@$K`5XCWQmu3=SI|p*oyX8UvevP5C)I#*X}kO zj^xp&T8hmn974>il!FsUVF!Fr)=$ixAX$q%7!y!8)743#+V4u~G8sW5u}L(|p``ET zMZ1jA(Xh5l^@QUD+)p28`sLZb`!KvC--V&AbL2*B-~_i`yXZo|A~DG}$F*_>(B)PZ zOyz2$!&I7AvD_&q^%%=BN#wvyHv5bn1(np;aGfD>3}zO)K}ti4CKH_;t=g7W7T6dt z2BWN7-HI#Q&XpDOyV|9}#tGvHc^s$YoRnZ?r%VpzH7J;E5m) z3z_bEF@ai7;b5aoqRBsHEU0ay4u5U*b zR-f#Qqp$?V{RsFc!cMq@T!}=n_U??_4o%b7v72yAwTM%; zi&iWD!-7C2htsQjG(lRJqB)(y(Og=?`ZTOn4zm3*!BR)qO4-PP;?5qh<9^g(Z8x&~ zP?BTs(K_JV8e`B!jQp+ZD!oUaggo3XBG}t_q&3cjzpay=UepV(uv}doa(=83Z0FXV zI#D2N;UKfEgjH=C2jOdg9K~IPG&lU^ri;h+NUo4Go`Vylk8`-Z3Lx+s zA6D$m+T7oHCm<1j&ZuYq*9OYk0sMc2o~iZ1<#AFVfzpOoFWQ$BZ6TqLnWIIS+DwB; zfDp*~{OD#_8s)-5OC-=tbBm>Ou(>h z|E|9I{2l5cF-Vk`Uw)7=pwFgg4w?0#9d%8&5DEq5frS?Vl2e;JZ%ePLURw7@R)PhT z_EcTgpVO)U_tHd7$X!1|LQp?YLXU5d9PfRq2Ypzns1(V2kmWD|AKEeS#n>~_ojS8< zum#yfJs;tt22nlHTA@zmzCB;QUnJl`BcSkIWqCNWaKb>kMUj)Qxe9mt3vNR(9Avs5 zLK)}clx5Q^a`n+A5S?(Zpun^tOR*y(w>@WsZamqLbg(ecv5mvHj2Vu<}85h5fvP0GAYrx$-9?p*>J*@ zbEQ>pe4Jq?zGj=17icrsGcIE)(#`ExsYOff0e`OA+I5v(YSzRdcQfn|A+bQ@KZ|{p0kb=PUBa4XCn)#;@X6r~~A;3p#&CZ+^Ld7L|oP ztzFsVbMK(`ke#AJg7wDFnyP8?SLUu`n!{ukHtK6v=lhoMQl#bvm zSNQ&5#82)}w74ME-QW5V*GFGyuqGNF^5F@agCI)bh@Qas>ZuwFetdBX5D2$M@&j@7 zKm$*8k=jC3d&2#yWqTbSRBC?N8v_A}rsggmENjs#E4GdB&Trkt!@(uwR0vO zJt*_^f{64lRr9$36$x}gPxCH4lmcCDOexvF7FObn0JA^b*t4=lkCZJWNlObE(@oCB zkr8;tKo08iQi6v>bOA!iu@I0b6+9s)0jvv9n&s$V>}lvj;7lncXfl8AP)U!KJpO}8 z^Bg{)U9>M{Av6ARf|Dws{Z(K=Gm+bQL6u^!qi&*g6j8eEWc!Y4Su_iMd->}DWN8j~ zRWjMw9_X@RO|@Np{X;(YMXkmpg^KwZofJK0ah93Bv$Q54xXw5{ayvfa8(x*XG{?a0 zde@Foou@hzvPA`tDH3GbFm!-LhU11OfxGPUr^nZglHAoFf_wwdIXyecKm5fJo^aWxhY}eP_p$ar400XA21i0mngBDlOEiC zy%4$&f;)D}ovAvRdGuA=1I@&GjcAqN+Pr?b4sS-{QrH={Ta&U%FT|tajT?w(w?q?+ zC05O8t0=xY=evz)G7Aek5WHChTU)qi+a`S;&+j^i zX>zfh_ITU14)BDWqp^Ga+tF1DbUe?q(YJm5+qbm=#fI9X|DSHJm%rU$WI(3%FGB=m zR{mNGG}km|{553yYe)$cQ~nhT0mTUcSYc^@`^O~I4<4ZY1uj0IdrtLV;Qq}EM?|nZ z_VC62;jkk@IlcOwCYgc?c}viLMsT%%V!sJS zn>V9t`c(9q`ae;(9$N{TYW|tVRpuyY^%owz7|X70_8*un&wplhRm}Y}aU2V{Y_J-l zS%hi12WpjpBFXh=^+GH=NymRMxyt^9$(5-7wB1;OwbHauY6ak)vb=E0!Ls85dYvB! zt~misxqzOQz+j11L+1dty@y=jh8F$-3i~_v+!&}<0IGoz&sEs=oPe9-0&W54C~%GQ z-)LSVj}xt)w(8Ft&sohK|HAYn&|^6L@!#=~JWOV0NI!O-9tz-a`1(4S6__ggLLwD5 zf22cTegh3>pmQj-J(-ijb`&`UKR!Ii%_04YxU<0d%gLGjjyREjpucDNpTZk*H^Cjkz6gQlEvs62ul7W?T)I}oR-OkUJ5FP3Vr$=k%mEV{B3o2TOta@-6)n)lJ{c=S{jX$sETXSs z6lfO-l&lf}Rds(=K|obQ3Q+PlU>wk9+yLka23(jk0Appe@PwrWw{%o-vQbM@vk9*^ zx_KTyzqXAZ1Wote?;Xf!tVs>%8A~EH@mXJr?2aEYzmY=2QQK_);PnH8F%c;kvZ1-L zY;T3aZG@_JxVFiL5v1q$jqna~!Ts%Hh_;%&6D6SCb*8C~fhszlGEtr^qqcWja%8)?!f68lyRr=`*b>#p=}?1Ga@!=tI4o zGwwNf@`Ur;;8G!sae3JOIFToeqL;vXyeRFH*4RD6kwA^W;hKjCLCJzi6S_=oWGi|y zfIc@NtbrmiK_YF}%*=jl1$jcEK)Ne+VD1wu91a_oEjFW+BkbaAu&&K;~95 zW>zIld9JXaEptvPDuHdq$q z?tM$~TvITDM(=m4E!t4mU;~tGcvbPMn)EDbSE3KBtf*3UEf3JJ-SVy057F+oBkjc^ zIal^YO$||=^!L&Sgb4=8a0W?#7q8z;)K&CURuyNb`|U&JQW`;qmyF7Zx;wj(N9{ok!5@;T@@D6$Q@;`Kd8_jF=4@2Rp2(?vJe4HM+ z1+m)ZdSD1$#J~RAWD5@Ik6d15MeX1AG_hb*Tu3TB3!?8%?pbj6^u^D<%7h~f?yMwiZu@r_M z$pNe$zrj?J&386IXgLPDvbM3obOhn7=ofe2Si*I_;pswp>xsi@JaJ6nef^W?4d>sr zhpi5~1xc$L{O-`*tpRtdFcxvevD#~=vOM5oR*&W**BH&J^TPjQ_nq$3o%N?4zz0zR z0HLKn{H0(}Wcc_G#({fsRxNQ0IhSDbAGSJhnyf4sRjCsa88EgWr7RmG&vc}5h8A$? zGOYaHVXc%U2v%GNe)tu{O2#%}M0YBmRW`_M^(;OEBdU-{eEz!oFD3;BM5P^gWfbc4 z;HHIY>x*8Ng&NC49k8pG-c)>^Gcm+SxqA}&EF$F^8m4cK3qkWJ2VfYz5*35>7c$=} z7AE;?hlQ#jW-a>I&B`Z~cgViijC>O-A30K;&*^tl8SJ9TVs(m9^30zF{E0O^hdwO+ z{kXKL{^ZxSm;FW9VqeG7bkyqi!Wz~aqvR#^Y^jgE*-lkpo!M^Hv7EWZkq*0XCrb6BHD`LOmO52Z#(!odF1^LeN+22u_XV z1C)rh^o6~Q0w@~2+L9(P5t`Cqw25{eyHX{u?;EKG-@od;@zh!wK4^(4?b|EG9c)j& zwK>H?xfbeOluBt%K$?_iewz+^;Ko@Uy|tAynB{0I<1-*(N8yrKY>_wI+dhf3XyGv@FDp+s1-7i<6;iBs2lq%XaH%xp-{4=lL zR{Xeg7_aIeRkG`T0iDDt$X5B}0 zF(1QHm-jbJ3rPVHig?pweH1or|A?~8Nk~3tkd`cL{hd~>hnK>Z~V&l?-3%?xb&IztS>vdkaSwxRnO!5~w^BzWO!$t2d z`m=$uO7pxbwVzKciM5zz%d76XZR+;lcS^h#Eu96_Xa}~b?QIs_sp>Sm^(3MLa>UZ= z+3E)ikshBmX1;Yb!Fv@&vr`!ELuc&~WMDPVUJSPTnBH0pxyw7l6e#l}>MbB=6Zgkw zT5`MGe_?3LFXpQ1D?{q!ncX87Sf5>(x1}3xmEs8HZ2YBQkUwpBDU=mTd>=+G3dG2>Cxpmy=SUS!hS+6`*-XFV+vIV`9(FH#Zi1+Nmj5;6rA zc=bq*wqR@`lbZ^tNx5%Pnw{~~bwwbg12R#wUZL(My(gX1=wO3dL&Wo?f56In96M!$ zI)MyoO zVB*S2EsE}gs?f+P;CHBG?`|P|I$b7T2CAtAMq}qXPQ7c^t#)K zk{=-zHY&1m{HGKk*}aoMmTspUZ0vEk=zrIo)|WOC67;l{QKk*TlXHvu%GdotLW|{QBy)3u7v;sM$wGr`P4RR@3jy^pO&}s7=pz zgsoGUD>ohC`p<{oxghQvRl$51H25x{GjN`P?WR{zdMKjFd9jF{Z0uQwKL#KMX+9>u z$aZpneDmE^l*Q!%Q@TukxyJX5&juX@`~E5D4s{y9YMwkdc7te#2K5j8d-~m6;@SVs zhQKhST%v zxXH6v3PSgwC-BW%qhiHadWYR)_YS_wyGA#VHP(s|7IOo;Vr<$t&pxcE?IxoCB6#ET zLZ*dOdbqpxV8RN+b8rf2q0%=)%(vi+HbvG`GilLnp9=$CE$a$B9#8Y>tq7j*%POLx z!d83%MO6j)^BOx|`<8WTqb%LufB|+HHej;FF-h>zLvxx(TUn=obG1KphOYlD&mg`|$cc=WgbU~3S%%ghUlO+i;^9-u`s_Ab|<|E;_ zw~nB!YC4rG%~jZ=;(v_- z_Z`TVZXsi#a>GtkEi>J;iWNY3@0V3PYYDwOl}c&Y$x~fDi8exQ{}#UsU*bXj{(i9^ z*FjNXeUGUmTUKVDBQCm9*$fyCh3_G1{-BwV_WC?|b|hCZs+ehbb9ls({h83b=GwtjaJ;kT2j~NH77ADwY-MgGJp5 zu#@gTN#=q02UL} z%kf`A(<0a}rg0CvA4SI|(N&3w;<4@Iqr!A%t4^6{fOXWma`LuKQNB3ofmWI|U#qTK z>kW$4rUqMcCCO2bmH62iG3{=Mf zbJu^5&ElGeX~_WQu8}~s=s%d!{~7Bg`G1d|{#RBGv_b-A)xfw|r-5rC{|5E}Iw%2` z7Y_eQ(*I`U>nDM0R=_0)&{+E)G@rk?*MAdr;EfZ3`*HjHbB^=(hnleCYBTj;41Len zLvi%b+%F#*>2L7PH8~O8X5D=32@ezri3^R22Bty`w)p5eQ`XijLWrs-Az=sU+Xwp{ z?n&AkZo+0F6b)pFXrgk_%7>cM66feM_V!J$*ILb{(cXA3p_Z?l&}AHe!~(7dN8}{8 zz2m9ni}gM%qre8w_o5ppt6HbkBCNa3@K&pov?R%oQ7y!6#QU?YB1zrh&ln%5PVH=_;0LB3N(Bxq4p#o!KO~KfO9f7q30Pphx zq)OnuK!I1czdTT`IRj%i3*Tm=Xo0lyI^po@5Z9o7?s@omq6FwFEmV=CCwEA7 zT#1}b?(7^xqjFUnGoCS9sr68=EM&SRi$J=TM=2J%-~1O)Wk#)xu)%+RDP^AKrZQ_k zdODJ@I$kXwYmvu#?9>nO z9~R-lQx3=7VzVd5Rc%Ga1BKcYvcfA#b*TKVIo~orgjhGsx7YsY$|X#c2!PGoZVuds zJEWUC{1mFC)PuogS_Q9$#!6zepTr|8?pb`%z4RPSPE0qF`Ka$XRh zdW&?@FiRN04849>qU>7Gli<~Eq6AC*)!SHlh>~a35W%!wjN`xg?v3K$Dmoimk=!}+ z;83Q;rr!K1z~sAPDd1@|UOHjt4D@3#^QJ9Z@35I4Kyi4!G&m<+wPQXvZ04@b|CUr( zF&Vs%iiftoMr$y&pILa!XlJ;TUuJ>KO12s@E*>a-G9sdD-MQV?hvPuVzKovJ&%7CX7iF)F@VFE9+M_7Y2{ zb_VH4kV|XT&_-VN)SmdsR2k6s__XA#{CQj3cyS3=zsB=bkoZ;|dF@qOht308a4i&a zaLal3IK2B4+By#h82bUa#Dy+bmd!z$C^dNOaEjWz8AcOhu21#8FdvsMK(S;-@K}_d zC!V00-1P^kWS5p*e(m-tOn4q^dzLw$9Gu(^NUjjpBKXM;w^00>Ep64jT&g3Wn|-e5 z8p|w@2~%QcDz_`!*pD3&E4WodAK|nuY=N=}@4yB^UPZZ1zTp^m+UvK=<{--$fmZ2P z&9QA}*#Y*F3&TBES$#KfTu*1{(A<7UlztYqM)s18Y0>bIwITvHXHXfrij>3{$}yG| zZ`Q$;%c(M`JHuct68kI1`!5EhdK}6QE&i546p;LhCwNDx6}3>@*4GKbXJ%K#;)aDsMWW(>t?j%C74m2%*u3{KsGxJ1})z#MUpx0+?kvPN>c z_1_w-&M!#+0ncNpwRGx_$@tueUW9|5xgJH99L<2PNEOOvdXJeH+Mpi_us@^UugdEnud8H%OvpSKO=6_Ise`q- zTLG)1csL|K-9oK%MOzhe5NV`b9U97W(S~(1#3nuMCK~TN+son>+286CjU^c~f<3KY zVLlDLlu~tsR7;}xTt^5GJ)KhhrEFT`qD?u$M3q~U6y;uqL3A)~ls6dse5;LD@O)`V zG`Jgbu;-4w?l7#iq?B=5PDbN9xl`xV2xUCZ$zBHeVy8BgbfT{3d7WNF)X6w-8M)UF za+l$r*j`jkDUYznQ5KXYZ0L3#sj;!)+eLJ>hFcHuLrK#^3z8$sqh#l?0Jcch6WU&a zTIm(O-)HyQ&X!4)@`KmgUSI+jdbGK$yb{G|VNQwvV~9nzw5AM2R95i#{ih!EQLNP&0Q47bpNq7;1Z_qGUHaL^D^9q2ouVvQ)-M4t07Ya8MDPV z5x&8CM1`giYs6JrIpoN)#Q7nyYDhKfX2Y@kSjMb!x|B%Era~qD5=8g~>;W)FtrHM$ z05OSy^pLUguW}Z!FRI(FrT-i5pyssN=zFvjR@r(~TlU*?g<W12W_n*f%ox>bV&KJ?x zoJEiNqiu;g z4SV`6Jse{2NZCh`H@A?`$$yX?DP=y;zIZRvW*uPkxPKTjb{U+&M14PL>kio5X%%?= zT0*j?A$Ud@wc1~2JJC>dzRja9=k>umvixzP@OpR%Sg7%3I*~MQX#8MBYc3mk>TaqL z`*CBRDs?5<1Ik3OzfH=di@#f)t}+8d??*EOfzgICLElTsmKZf;Og1oY!N{GW_K$$u<#Jt!VB1Wey-0`qkAROAz74pNhO)( zPt%Bwu;{HK9&@o-CP*L3&m?-zrB_;={!H!s+Qo|aEQ??(m0Tdb)J}o($%XtXa)wvO z^QaE?NF~7Tm-pOp6b{L#+xhrNjk5i2^auID2d=v|D`s?ux4DfeieqBOi-mHQ>uGY0 zZYYo3ns0wl+FIKS~w6!b+HXOY%XCwE7slaG(@^QZ{f`8 zBN4Sl>bj0>dEW>Q^V;)PBj1xGb$A9h7%#7u)7Mx&5N0I^hXdX0^emrkvUQ9j(l|bw z;_zm#65M*D-y0%tw6v-yT3wTP7A3;a^u+lv^XP)ZY`OD6C}@4b3Omt~J_}m4hc#d8 zkCuY}-Xs2f)7}atkuwq$GbYYJ&i7f-dRit8i0g@&yP8;%el2~`3B0(ch5P-8ZS9BjBvh9ce1=+63u+Mwq*EsSS6YOIy_ zyoNLiW2b7hGL5lwlu;!iiGolkelXXpy4#>g&-jMNCf{=@H7Hb`A%D@2)!GdOSXL^y zu>Iik9hYlf%LtF%Je@Fu=hHqg?qo2FbrK2tXg8$9a});Wv6igIAV!L55sUR?HET5vE0KPF{3K)S0e5MBY8O`e<$M zBE~f9>>>LbILH#+pm4KKh>}I}B|o=8q+Ip@<}_W-S7n;i9d4a1Eo#i*U9{{l}S}097fY|1%`z=dU2wWFcg>{Iyw{d+{@t`feC@n1yJ%IC92h+f;b z#oj_3rzIknAVtdthkWn(Goe4lCdBmkfJLa8Qt6d^3WfPyT;0QrNAAC4)@j!losd?3 z3G^ajhQ6b0p$n!*b$u*n!{;&99wkdbLY?x22QPeZmN#cAHH2=VqiqnFp)Jsmt=~!~ zTs#*-9<%B9-z#a4^dju!2Z$ZxE7{!)4IHw<$Q>x)QFc!5!gF+KMYHSKS7vT4#*HP# zY1Nn{Bnb17tHvr$qAiY=Hm|FdQS%(6QMw6Hp}Gw$&7(x}VL;J$y#yzw_hAOg!Eu0- z5JW-`67(Yvy+4e#(Mps8`tM5<%m8@Y7S&h8X{b9bk{}igc3+2{Q5Z1Gw91ilggB|9 zVarAo1RVAEb?|(mLo9g5uD1wohW z*C|xUD=H0YQj`H=&F1e?yTR#1$nXzyWI2p@w~L(_@c`9sVygR5-OIMjEmiWJ{;nW)ePI68znv~3ywtVMP2&^@Hxtc9qL3o@iaLf667dLNHvF5XacQ0Que-+@Y zxkkYn@ZoNGP#IHwWWJcFe%?{ih zWlQCrA(5)Sai#+!ZT*tUEN&%budr4;+W2y@;2B!+H8;~ zJ7(KrEV{O$&$X1nsnHKBPj1@E-g3;;>YcIZr)E7tGLg!$PUa^Slk*RRF zHNe~?zjko1ZUC054$;NpoA%R4R-0Lzv-2Ii$@RUk<@iadU=y>KCbQEd*6P`^Lmb4> zXKlm8s-W4C1?Z_|4&*HVe(9K5ldxT#`}-xi`}}X^-dBxxCV=*Ti-rEL5$ydUA##du znGz+x8&UtyDv4}KPg3d3PY1h=N9wNhd;e{TSaFO7C9F?+et3(3iu|El-G*YeUgjUH zxi;|1wvW4>m{CFVk2zKKs~yavsP_Dti`KVVsc4Rzk~8JEx0j5q6)hbnfoob0f>x8Q z1Wjb?(W?Rf&jX#m#R&h$oc4tUn3i$Je_)SOfFk~X;F+cWcVrXc_)o<}%s)ff|3Wj{ z{Zl~kcVzoIFk~Q5>+{cWv$lnQu$VKghG?c?S{#ACHCA1AP<-o+j)JeKERIyWF;;#XVcjphR;?#d z&1sAY!elo&4QHP`D;24?iH z9S*JKPitUrls<)7p*i@ibxy(9aTQ|iJ!JlKeA6V@%5S9!Bpe`F0*MAl;6Ouc;1vl- zSw~+J`qgi~F))!-s zX{S`Pu7}C1ud8jNW$%uNbm2)7_#x@THS9C7PV;H02a4xEA92M?U0WVPI`xi6g*<8y zkDW>`^{?yU3d+!yUJcg(b*GiB5@l)Ky-OAw;*Rq_*8-TN9Lfuv8TmThMvZuvSJJ(g zjk?U8*n{1R?4iynu*pK-k16AbBR=0IH#NuJy9A2X=#8E!y`IGrDYW4S-k{Q+dOC%n@CT;4T#K`BERMYh0%y0h|41lrg5Q~BT?=gvGM+lbO)0re*DeoPbiszC=UZL;V zj8KAn2s)W03MwSC^sTQQfolC8p_J9D;EVq2++}(V(=HX8pp;+KpI(=PtLHUii^DCt z9$h@v)cg0{P=zw*bfQ%ba#e~!w|eto*tMG$!(|6C7&G~dhvQ_*yO`t4@0zMzQwL3e`O?cDMOKWqF)leC}y zm3Q26aKa~Cd&I_!h?U9uPs48KRtHHo=Ik6D-arG@9-N_(oc|wPZy6BBwuFl&AwUT3 z4#5c;+yVp$?mD=;3_7@k;O=h0-QC^Y-QC^o4SVmi&$;iu_hTj1RjX?C4BazRU8}wi zqeapZ2h>{`9zew#?E$~zr-XwS=L#Px)T%6(mw0v!bzzLUGTN-Qk0-nFSvJG#k|brl zF>L6;ma6oKa1N)s#BsB2kTH95uxeKAT%ixtSA|7k)3;fIyb1Wk~psoV^@`K>yX}9?}6@MimFEA zwDet^n^A}PsGETFc~O~=oq{J5r=n*92b=d#uF{zt#wy%_G;=m3`!*jIL*j9b*!sF5WOpW^rytF9V;+a=}Zf_tw#NXb1H(SVSOtzm!UakAA68|;L zoaU>DsC~BV@`q`p^KQILo4k{;gI%~7LLZI+!ONjRv$5=wKC>^3jmW_`)AQ;DNt6ZO z!}$$JY~3Q!wXkwShPWJl3gqu1(GyE-k-gALJZgDQ^nSJ@~9n_El7bpx;Ly4f2&rO!VtsMHp!*T~qAl!QY*x zD!{A{=tL+b8L3zoQZ-8P9TxB#VnAkY5bI+^D{9hcW^Qm+5~H}>*TqSOil`0u?D}6_ zm(IvN)G6-7r&4CGZ0;F~Uw70LjOa+?2=i{1F3i(SrGl&!(XY0f!oN~$;y<7iOwv7{ zY=82=)H-b*T~xZHD?4#`n*#|oY;()MwEgh4CAr?BSmsQW7>1%X6dMPKO*t=~^ z>eu!5q+Az@fD^lzlpQ{_e)UOZei`||$)i}Lt%dYk=ICHYB9$n{5T=jN1ha2kuRjT06WIg9cf1aSRCPp~tBTMH%CgW3EO0cq^aH542Dl2U z3c7AN&~G1od+${*j_WY>WOG>Z4{tYy9j2~JFq&`e-G&VV3YbZ#La4wDQX2dj6Iwoe;|s^bVikbAEojNeH-_5yQmyBpd@8& z&y6@aSMQA20zVhgxc>dP^)|;fmX?%#f_PQ#_e|wNQZlcs*mK&|3)$g;$jX-Sz-6*@ zYVC-$i_?t(@VrGGHZ|jB!#A@23gMZOXMUn+lw@kpw!dH&#mgx-fCcY%B_L2y^^|Tz zOSJce6j$}b!`p7}k1WS)y8o8f7h0~LYAgiS>EE*+l?jA#q2tY1SiHlmnAA4&#Mci3 zhRjEp77ES;tr1%Qz7%^g``yHT;67=(M0nH-e8zvIw(oBd=7>e@mUEx`tsg~5DT_wN z<8~V1nn6ja01L+!%?WxkvUx%&E%(E83?f>wN{fE`MDn|HI~XFiYEkgJYkL?K zyCzB8(@uK4JYkk5m8(AcM0eZtkF3b4%dHkKcz^#Nno4VZ%b-$vUZY>Q}V&L zbXsWe^qP}sQi}?{==l#pefnZn71fbTihG{n$KL(Jwxz9vTo?B&2i1ng7`iy`5IZF@ z2*P`#6YfU4n*2Otp%9o%foG8;l)_NfOc;?_A;xqmEY@JTW|{5H&$>B_2$NVe<| z15v(nIjDl>GgehrXHZk3wt z{7njTR4?l^m0s=*9{JmIrVW+2OI>&TX+FH@0JB5;(C!RJIAaEUre3*0S{D}O;Zmxi z9RRvAW0*mkdqsC@#c+#U%e>R~l69C%*DL?0M;hp{mqRH1(K()%-_nRtEjUHJy4H$S zXT1pt5%=r*q1zXIaf=y4Wfty=o@5uwXEAcUz26Q6AVN!9R7^;Dg88HJS#2K-6~mwJp6;m>F+R8AiinY9xv$@wA9FYI#2<}MSvhT>ptK66@iZFBi8ukFd@DD-FYPj zC%>9YzCxJ7dqqfrO`B#m!zb>25Z6wc(WnV~dLsJJYE;F$&4<_TuWuh3ANVJ6j-CJA z8{eyGKM9rb?Ohr;GZ7eqivFW%?w|An5Xzkw>sn|*siVhI6(g6Q!LPEz_ei4wItmZ^ z6Ma@I>GPCE66ROVjgdBr1(SV4^>eFHPX1g_oHQWXkQaHhDxE!}t*W~~UR-ljA+ebv zVc#s^6d!;RKPq6m>WR&z8LH%D+tXP=?N+I1q2&xR+ekQY6h(vd+2>VM-4a!6zV2MB zdRS?ht`1TRUMwq;$kk-&pPH4GI|#@XFnVrk+$%ynHo(dz?DSAZq-D~(&eDszx0#A1 ziE^7f91P%CStzq;9evpfDmMCVpIBG$dCg-hXZj$u!6Zjxl{aY8wOGlrqrw%Rd|17B zaXE120W`~3E7^*$(gzPHtq)p|96w%=gepLVJXbclZ!1snns+U~V{TNy)M_2Zj5B>v zfrr3Aixty-EDIOpI z1Hoxf$#rbw*X3W%X5MOoJEfX-xUQ|wo?xvITgxgz`f|GtSaH>rEV!t>I zzpR#9td<~Qr}kIoU-HlHkT<4tPhg*g7C4{J#kF~yg0FW2n^(YQORyOLHphV1d82ds zr>o-n|8AL>nS`&W{bx7I+k*?0ziHQp|NAK7ZJUWS*a~*AD8jXI`KQHW<}a3W)!V-w z94tG$L@mD2GJhNy|Hh~Bzx)9dz>n)UWPZimTNFcND=g@Z`b~#!3Kj+WL}jenCS($L zT4<&1npEsL?|L0QMBL4#?sJg85C!-Jmw!5-3+Xa8oVvUg;3n}FfkYk`kC+@1>(1MF zfKErXun5wtE+FWCWSM3yh)NO4qJ(T#7vi z?>c7hq(ug1!`1$*LuXn-SD=S4hOZhANzXZ8wBWB5@BGjQF z7kxY3JaMTQFA1FJ(2)xm$^XHrXmz~dDugq@h`;e(ZPka<@-Q!Vq*Im&YYK7^{XQQm zKOK2QHqMVU>iV)0^)6euMuiO8O_G;`HH=3ZYr!8aTNfiMCc+@;CHeK+(#@-2{6!5? zWwE0(sqMQoSyu6=OhkW@dCQ=T#uHfyl$@ttb33C&8|GccX3{K$z3%dAnDXy9hk{J3 z;!N>28lOT|)f0ddf@axClfzTPCOJt{S7gUfQ_j;&MPEuBt zRD(4uV-ANI@+9MOkqnz~fx)3^`wZ<_>N};@o z(>4`%ml%J{`X17NTQcWI;RmMyN&P3~rW4cA5jp)>6w}Zk<^0r}${ymwMMeI z9SR$@q50ZpZO;;00H5!Crtguo8+CvHD2^6o33dQ|XTTdz)AG_V{iccEa};ZUCl0zN zb^57XzO>hUi`A(9Fcdoq&7C!;j={6pn(KzVFj zY)uen$R#;`>&MyqVuQF-w{S(NoufA}!I>ZM{@5Y=X`dX{uaG(0swsomIY9L) zXb62PUa)oy)s7iC0W?^Ul*@eu+t9wmRUq%>p3SIeO~9*#03augL<^9d_)P#cKEeC7 zJCms|Tf}l7=Yn#ALticzCrhclJUD?|2wtS*^T6kln>}F}z>oGR#qSy>^5s>y#MZHA zR5Pr5NDHGAp30r?4IjAIXXHE@cICgct3WQGI{dUgnhf7F{Gk^+SHQD+o7KA~JQ;1h zi&r^YcTy9JV@S_1A=}Y$YX3U$z^#>vQD+e2XKoIIKgrYF)z`+->V|(Rm#%gmA5^}0 zP&Ig9b_EfD_4$Fjv;Om=_Ay)fq1fYy{+d;Gwf-p-Q0j)$0UuvTU3T;t0kOC(!m{iW z%Q4Oo8Fj2!B`rE_F09jIfg{r?>8Z$|Z6TA3?>uamxA@QZZkCYll@s+I5ce0)VvoS! zjCZ!_1~{aEbL4uPyU&q@$H;You+lZxkp0smW9ouGRX4}ig3{{)U5*Au{DpQ8{Df^m zbgedDUG(z>Wd8u7+ZUjo3^98#*Q~QUP5ia_xS29ces@lPsfS*)hN$Ve|88W6(VUa~ z{npcNXEmrs1b2go%gtisc<`i2M$N_pIG2`ewmUx!or*VfldIxoc1-Pc$8{(~+O7h< zI}#{GE~&vi%BZ8}r!Al=NhfT6v6j_E~F3NN&| zQnt3)RuU_L>uMG%r6Kd@hCZgQHpDYxG=bfukAdNR(8MP%>f)(WRN_e(Q7aG* z61p^$!f=XWX6hBZ?D`f~(`+ZDb}2Qi-%0&iJcTQ!o7SftM>*iGv*t)T9lWj`XeeHm z39lc5Ij03=Nb;VcFHbtsO+I*V2Ht2`C|p&AJpZJ#B##_>E;n#C$Xr~jLADc5NU-bR z;=b_(xaUvF>m%Hfapu`SGl#pT45K%}RV}XJ_zPyrj&8xRHeD2`4rW#ICf#=cU2Scv zot+dds}!EqEsBK|@7<0IWG#98m|x*mf{w*Z(hCg-lwbBQ*?y*3ie|LTZ{Bx9%xdT! zw*-_Nehapka9Va4la%5Fcp@-tBz!EfWegRu*!xMve+lPoU+XGtt{0d}OB+?^K=|-7 zmf+7OB?(QQH12oiM@EptJ&DzR@`PmSF3aGO$a|js=^X3Nb9esYk-%aZm)g09p*vqh zm|gE~ZXge>n|Q{4i}aOONhjgm#53=w+hP*|sSCA~@+NS)ulIY#bv!N&>C$&>7ZaV? z2pbllpj#!N@@FhGfngzo-J;Jm+HQI~{p1z55@I>}Dto)E2SxXSvQ2kFPA}kY0>Mw_ zGAIx{J||WNXa8dFe`RI&QSSGs6yMfjH3{ujcA2$D;~^uM*FQ0(I>cmbU|E2d*z#C45d@8DxQ zK4&(Hp#px2C((!^Z<6DfN5wOP_|-4|FJj^Bt7I+F;LVS>m#2EQq78%SH%Nul~2QSl4`b2 zP_Ky}f>qw-`{RR4lBY3k-eBQa+udD1#b&nU-n`qjfT9{c%e;W`LA>w-Rz&>mS0n2x z#f1!0qLS$MFMffBh08UaA`2yt<(NHsn)tp3^%ID(wl%S~;!3?~gTL$1ixH$&Z-mqO z1#D4=Xg7su%jd71g&70YhJ|dO&8@7@w~yqKJzg2=>d?GOGd4w6L$c{px?r7ktsdZS z*?`H3bBT^sNk8`^@SPB)Y$cZfU6agiG=dnZVAAZzRFg zZzRE9_1M;GM*rax9(~hezwrqVyzvab%}02nB(8na^MLg=yAZ9a+@D`KTt#?q68lOc|5@vmC z*FX3>&rSck)~&SnS2cUF8GI=9cNYA{JKO?3R01C!{7p3cFS9T>3x0abf{)dvriz1w z8)%o`ni*!nQ%Jx;(*Mtj_WwHr4g#CSz!`8pu1(`Vgvh&KQ_o-7E6(59>ypDu`|;b8 zfe*!h2GgSd%al_&Z}A2Vur(nt?KdZ043$5n%Yu-Mp%9HDw)V}f*368uKMvNrCM4f&msHfvbEfonQmVSfJ%(CoY4Pc( zrXfx+Ds2_utNNq{1#owCzg?EHDSPg)r zK(?WfE{l#Ok)qx|l(suk7wi{VfA8%RUZMK)Oi9W> zilXkywLz*2+AC&R6F0_P3CbAsqf=>pnJ-U4-0!`~H!>8oj#HOo6U#z!{t}>SBkady zwA;b*!T;=Z^^2o_DRQ(3u|oAkUnfk#{2m)Mlp-vAQzx=2`}nvtyCC9j-Or>nhrJ6o ze@w^dd}`jWmBpHRX-W&dw|Lk+G|b|iFg#-;@B{(fh<00_bWiDw786^B$2PBa#`>BLVc&i~Ij%g1+(NlROV z#ORyTullAZ=4 z(9-#Vq+)zp;n}HpQkcPZ?jL7i_o}-G9|_L&LKdC97}VP*ny2KMia(L&IAc8UB~4I( zMVQ2f1~a@uv*Lxd+8@0~=&F;pr`LDNAUtEjJyj=bv)E}Rl-sR7g+rrYONbC4Nr6EX`D~!p=w1HEW-3i&dX}mqPw~{ z>Ciss-)p1D^P_mg^aff0gV1eA?CaE@wGB%29g3IOTB4VCMlTd(9k7+sYxasKs&qkf zHIXOZs>YDryGEn%kWZ3-KH?wln9f^Vqigwn<5I;x#)sPSbM&~;1gxN>i>-ndlTt%m zl`At+-4J=;QSLE_m~`(x7HtT$MCx~B zM2N*(`9y@qzb@7RBs;t*>Uk?wKPvWp$i;!Fp8&!6;jQA-1Tu?YBS6guYr|Rg-0vHcf(pL!;_8p z2d~`jGPH__wGDsDR%nA@y03vMd4Y$^6*B0vjRxsdB@To9F)NLV8gkQQ==5_1borx| z_)7KDFR^5QG2DH45c8t-{P2=TpYnI=rLz(tFG=i8Vjy1G}W7h<%91SFC*a zRr3TzWZgfl^EoP)us0^v*e3^X^1=&EW|H0%HS;8-%w6Uir++>_1s2B4z2e{a)pZC< zeCz(bh`B`Yjj@A+xQDoPdACpCd#^*VoBmNRhI@`ci~Sj;b#(^Sj%mmF*Dx$5#tzJr z&{O%o+Ob}V7|>*~j)+-&*I>KgaO(-J1T zRCTJu3Ra-DS+C%S!U;vthm)uMswJhooBCG+w{5l-efY-2P{8f4G=YPfn$pYliZTaO z$r26M<&HbV*Tw|vn!|BGaLf85SMnN~F#F~U9p~OUWJ7SBZ6%}m0Ezxm$e=>UizKrp z+0h!q2DL_ZA%%}dwVB;@RaxOOjs`dNk!h(A0NO|6*wXHr-h>4(-zb<<6L`W7>@=>q$Y-*qK|0Cx8eDSdnlQT74UU`xN%>NPOYEII| z;K=aEaDbXQaGBhyYKK?}UXfY@rU$s5KdHD8L0*xh1YW9wlR9C!qoMe;h_!q%Kern7 zkyj1=H%_By%%5IhBsI5vl=^;o(w5lUS@r;XfH_V4opToLkL?t7TwdpD)&F_P)c;>E zdHxt;WrHk}d$Tt1|L3(*8T^$KKzz5w?92JLHx&PJ(S+E)<8BxC?o+b>Ju~n%PhFcI z7KeD@qXZm4G9A~PQoH8M4D`BA^FB;xSDpd9IeRZ^C?~mXVavXsPiZoO95s zao)_wSuE{9+@U#yc^yh&bbmKlIjgqq45mz;f)o@}}P%cHPiLEQ;} ztg%dHNC`;kFqtcjj3qS@?hEMs+0+gLsXg7JuTJ(!sP>V4$M?>8 zipIUo`_1AfN!YL1t!%ZQHpdBE5bsuc0eE_ZtAC_6^^(_M8;-d38}mtM)QrYWJ0d3? zqa^manhy>6f3b<2l#2r_#T!kP_6{^m0L7m*n(2=VG|~%?CrUVBHMq$PX2s@c)yiQT zxpQPl?9C2MXOc1G`=NUWjDD9TIUU$>pZkX_e^80t^h5U$SWmSEV}k}327caA9IU`(8C4+|6*6cbmL8Y*6Q zbZldC*lJ6To-F=XsD%bdi_TZ0*bgclbpXS@PQ@;dq*I+IZ26FEGx5z0f46l`b<7Gq z+A%BkUXBGQ@hxd7s3fFNmlP@K)JmHlZ~PQS_FYss>jTzEob>`(0WWjII|GD`^Xm6{ zY)RBQY&vY?&iuu5w7O;=74uVUR>C(iBQZmxM?dPYT@KA(c9DSe*|f~aj%u1JK5x8a z3=ABpTN_mSFNe-8=rxAXA&3IGU1wyyms!!jS0vG*K9wg8$MD)$)?fT*F|j$xImxP2 z876z&gM@;YSXZk;SMpDd2}UC=6a@JsjrXe5I-^T(|4A7$^(puY2;e8Bv2K<=-J2J-W2}=*YOM1s&pO_zHD51&@;dx+ip=6Wi>foUQIo;~ zx(DYaQwzLTP%r9|%n@c)$~xD{89b3msF9-U3M&XO6#9YJ!kwc z{)@s>Jnh`>+BnxWCiaWguk>&h9#~qB9}b;LW~X&b0G`5tl!+1q?uLU{`|0z&0|OJl zGJeSmg+=c{sBT5p^S6f8uO)jYJ6DX4J1&R0B-89#c4`Bok zKI#d#DY8cttPf_`r5<}Ym+nOF!j;XV{=Li_eTJQGb}Q_hlLnzBpLx8eaAe6*S&arl z6u41Yg;}aQk}LH5OS8)Hor29CNQd^}hC>U)jQGbXV*0(+5{V`mE8WDoB3(*mnFO}g ziy8a$N26`XC5m_qy@{@eGLdJfM@)zJ7g>yW0n;(|)vAO5n{znEQmKKk!ldBpc@b8n zk!ky^NEXOZbWlTq^rG~pY0Na=QmUd#eZpW#(L$eLEv&euTjc(u$l`k*nZtT~anX{d zFMU9D^1gE1U9r$*c7V-MPkp2w+el1BQbkfh{MZ-!!v)hBZrbRX10_z>=;fuvOC^6{ zM|-Y;CeE+CC64w{f#|(J&*IN9%bMNCDlsuh^+y9#Ny`mg7Did}u1czfDrW;gVQZK1 zw~Icsb>QuC%>&3X&S`z0)aaf)P-(y7TO-rx80!`Z~#RleKtDOt+^0evR+^^HHZDC zdjH$&nU|cGRFp7AYfM;JOg1^N9QJdL8Tn|yR=d-L`q%f9LQ(Yc1y$j9dt0VB4V7bE zwr3AEt>0f7trNcdAA#Q9m;vAbut1kTbMBa8+qckIV1f1Nl>9IB8%PB~e1?ht?vo&E zw!oFWoBt6=;M~WMt35Ux`W{mCr~xMY1EXL!6-_|IR!6^JxLz-M0es}q97p{RMDD94 zTf}DuJ`Z6JLHd*16@T*TiAX^~*joap(277hF_ zX!o^w`QtD#vVd4u7+RtSPn@af#GERPehGT3pL-^=rILaDd8X;jAq0|BQ+sgPl0!03 z)y}>sstYODRCZE|R~xI^18jX=)_{VOF!zGQKL^c)emlFBo|(&MegzF%&K%eIPTBbf z+tE2xVhqV?!BcG}axC0P#m{jH$&(8&nly))OXs6wIx{A<_O0F3AJ`i#E(OenZfmcX zCv3%~YPI~gll6ESr+-*{-lZ|13~PamcGyG5mrJ&xOkm$N@EvzWuwo1MV{1tx|K3t@^3)wL=Uqk(IjCGblqa1E`I7}J4Jn)oX>F5kB4r2eon5M)~XJNseLMyv!r~V7USDX6?n>M#q)#a zaQL?Un_vamo(USV1Z2wzN;Ql~^XJhUynFWZ%7B9|q2|Y5MaNI(^5||AdTCGxsvB%! zf__(6H(8na*af&Q*3?ElsNrrk+BcU%x#u9gg|8+#^5-w6tEj+xhiv=uz-t@3nu+U3 ztqoAmz-`p3=;k0j3WDDw73R0~Shi^;&Y1iDq3yKOF5RSU)65m~!UwMEXXYZQ64MaF z=If73Pc9EUUx-ILb$+_oj{sFXuFt76!s1BHd^z-=4m=%@h*P|7Gp|BFY;sMMAFzdo zkU^gs9g+01SVz& z>*}a7z_}gcqW>7FrAU*y753fb<6HaX`k2LeI%p2R*fC5+Q)Um)uyaTv*jnr+NxUCH zBE)w}*?M(!Yl2jyb_pfEp@v_c%*P{`_J>UCDvP46f~f3X5t3G=tAmRQc_BNvi96TL z(7VP2+J6Iwtoe{}@9ZU{+fzy`wE9{*jI8Y_!mlSwKa6Z^-huJ$EZ)Xgq#%vcov8aD z3yfC(>pYnZ!g#vt`*5hHT@?hGi&DQX0A7C*be&7&ll~{-*mqGKe|Vkkg>s->!VFv; zC-JpYk>{QYe#cVkrjN!n)Dt-cO?5mZ#;}F3`^r}NsmrY-&8!~a$$8RnjP5)_9XM~= zYyQdKV5>w~>-IeJbx67^UW|5KHu1Eb$M%4zP;Q#QqY5;fx7-P9FZ~-)jHvWXKlR_w zR6RB>3kW{EHb3!c0YY7uPahOiDZ+EID0($v3#E=05Hi$@_|*c$6sfw(N5_p0E3f!p z8=>Gn_Uel+c@Kr66qRq%@Q%8_gK?Jl^Nf-4(BMpRs+h)aVTv#;K zxZ^plJiQ70KHLlRWmkom`yW2`6&@rtuV1L-2gvO2 z#9*FiZ0P;scJqKDMsCCBLczc$fWs{uQPW5KA9QU@G0OJ}f^Jj2qVSD=9R;p%QmMj~ zgDaypMH$?f8ymlkk4q^EN_QPi+ojzVA&Oa+k3w$v%{g>hPjlJbeIWy8X1ZH&@3@yl z>y!q?1XU`Fl!ZbY`Xi_xb;uF%vF&KZn5#xuB^rXC57_imx51fmXgnzn6Eo(|H} zZ*%a!U%xjc9%VI&Tkywlud!;8y(oA|-3~Y&pgusT(kgiOA{-r})MzAJUZrt6`9-Y9 z^twPLmfFjTMcAxbZ2{|5ePyoL9AxEdZ*|KgI0^i{Y{PaCSlq(P9&SBh!M2D?ky%+; zO0m0f)jK*qUytR6no1AB7U5|p$BXAbe(sRG+Eg?(HM4Opg<}M5f3(UqRPFeutCGfr zvVlorCXS$`NG{h3^~i9G)uNfqz6%I-U4sG)9BO_{KkT_&Bw5NSX0zYCFCKAL!>$#5 zm9CeyJS=3EG1|LHT@GGq0Q=qef(6aWq=-dodnTJjeKwL>c(A}_02b)McKZ&X5U}@c zVgh*L&D?O`F@7Ul!+jQUV3R#qQ``-nED3h6ObuS-{j12uR7sQb-=2W~ zqsa9$K=!FCEWb+e|15HOe(|~v4eEcEpx8}zsJ|$Y#(IhW@~Ni7{ySx0QDWL(?VPGQ zyagF6yN{$e2Gh6cf}AO&!n#p_Z;Gd_08aw zSHR{{uo)9O{ic~IoKouHsyg$d%k~{x2(;U9A+%Ki>+6k z)^Gm$2-0bAll}T{88LO9rWzi?+O_^_Y+qn+LZZJaSak14Jx9$ufnbfrkBLEQU#cWv zzQII?y%o8#<4IpclJla=la}!Zg<@F?S63sk6UrxW-Zkkcc9vUEw;ck4A!romLJ9WZ zty{BQl){ggnI)N=Dg&Osz;$-k^jlDD2}4Qec;aH(x%m!1AU^sT=MN5nNiK`wROzPG!30Ms4Ymjd$kol=F5L(2Q$8(|Ax( zjUIAM_`sHOa`7ELEMeUflJ2OTV(bqTNTmX9Hmh_1gCO>OEFA%Yxd5)jn)W8hf0yK2 znRy4)OWOp=q>)9+bz!CB%qJ+&xxLy2fObqCc|jS_DG_;H*+}>pWK`oM8aB$((z?lP zkBYc3#yo5Y7qU9@4@-6liOjMHiPwqcWL~Kg+j5!!X0dV&V9D>q(~CxR8D#$!K`FhV`!QbEu&=TBeAq{ z7QUE{$bL0@c>vc`AvP$=zR}DEQ|oBEba45p$$leGxbaoBs`F)v+`k3JDq%ja*VL~0 zz1c-xcE+^td4-p|?s= zPry06f5W|YMTB%T*Buu8Eu-oEuH}o-`LQC>Y9tH7rxl7hm+upgUu8E^4P%C=yt&km zN3EMr*EsNXY?OAbSji@;@F)yG6szBP(-C>U2~jvh8{8iiRb&|MvVJWjaP<j8)y*JBjlFlbe|gz)>U-GkrJeUYy!CVmLW!U?7S zZ9e{0b{>Uvq1<*rehcQ|n^QQCpma(CS@lycSp-T{I3Xo%zlII_U9=;iOtDRe(zaZ$mx}t$%{`;>*Khjb~i#3@ddOcg13u z07Cj^X!5!Rc4Dm>1Mk`mnol?`q8;?qgn|_|&B2m&mWDaJ6~AP@7h9@1jc0 zf56<7DZ;9aD?(Je`Z*-7o%%{|I?X7euIBr=z^@i~xeU(C^lf^rM@ zWSA9TAu+Y{D@|x#C@t+r#gSLqB;*7XkhkGJ?=HWcp?4!Qzqv0KVsQkjvfZrwPjhM( zn&rg-3n{uu?m$t_oU9Mi2)RLYKk)*&4ue*X=JfI&X#!p9~ zSPZt$?EW_fr2wIMeU6*HO8UX4sE0g@t5ty!l&6GFMwKKZ4cYua&Wp;zKu*-PkifyQ z1OUKErztY!a`Xo4YU}Q30W?im3RdJNo#aouv=Mwo7vh-#B)@;zG5uP|{K`5o;Fsbw&(q#7oJI185>2K5u8@$W`K;h~9n{ z=9KH7CsXvwawb@~(NUHtAc}iRRIM(_QgD|P&A-uh_ed5lIEnz|CrfaRM5TNpBH3?4 zC&WACcw!ZZ-!V*RDj^QBtq$H5#-q+tir_Os{G`9I&#>Nob#x@bzSbgo0*M*xNt1A9 z<7`hr-nVJ{hk?hf_Um0ZZH0bE;r_gnGc*OU#AgH=NEJpMOJ{p~a=iB;8baD=63QsQ zCGPBZTKs#fF1kM4`zRNS-hZ;$;V1xNrt-m@Q^k6SQN22kxrs#jK8fNN)+7fUHd?=VH=$Y`VzxmzvhjRyU*ps^56f%3I{75n~z{t6Wt}qK3ms`YH z$^P-h;uzMPN;B0aDMOc<{I5}oQr^N}Y}bQsSClxDXaQT01m5|{n@>t)k=j7nb{rO#eT^5zJ;(?9H! zEX2Wt`usNA@0W}Aqcif+s#CzQ(MJmp6zc7&f*-}N_!UWY*W5JfykGAu03Erx&TS~R zs^X5Mrkbf#XkYfEytlX98n|hb>-uXVP^wVQ0`#*>iK_aFe08fRV-`o_Sz&VZ2=XxB zg4*$*aOo`O6@3Ga3aio-tGofPk@=6}PnU9>Ft3r=Z0q^T{XmfC=(n*n-=>?SfjB(m zfPU_!<<-LpK~gq^f#F!ql0V0|_}qVRT#{07O)UMKi&YU)M_fArJjl8!fC!gze^6AB ztP{Yp2BLy}@n~l5YmAs@l-9a$Y17vl)9HtR71LJt^2SCJ%@AKbaX9+!%UrVY)>eWL zzbJ~lVULO1J$!=Y*l!NDVk0rtwOZ~_cQ(*V5PQhSt-NEdZK2Jl8+5zSpXm7vQ(OO7 zBsNVRbuq;5NnnR1sjuvC1j(o7-^IQ^Oq=0(Z!OXGkjbKb8=6mum=N<(Pl@MG4<6)& zCxT1-m4wCn6|(fQr_X0^KZ_x9{}6pc`nSTV!L({0tg^JA1+#U%2OXL*!SYsTBt z-CazIUuEv^a9;5gW~mX~4B&@pWFEZoN&xOz@X+Bu-jR1%Wi;tVc`l!xg%A=FKN)|A z8lS8OY#~Ra5;ZBzs3A^YY9=8NdJ3KXTFLrr7qJ!7LR&ThSmHL z=kLo?2|2p{4naq23&q&b{NPmH2BCY;5h@_VlAA*?sF`}v4dAPRw=XZAzth)yY&(28q-DAi>hO#tw z9OaA^--XO*E;E6(IYWC4;22)S70sxnK+U=l#RuU8tS0L)7I&smuo?@xYnF2hb~RWbLJH#4`7*>b)JPag(UR5$ zIWYn*FQE~wwa2n0e*sYk_xzC*)-qPQVyCH8ifUOV_0fF@;+3@?Rm{@bjaH#fO{yto zH8E_b{=t9{G4R;2dK#K`B&p*zI9ukds*wgOIbhPbQ7i`VMj~h*wzLLbKF*Go^0zaZ zkG70l92%uinUCoiabtZKOH5K2JRX)?xh^A7y6Y% z6$kV*@|6tuYfKpp&qV3H<>f{)c?_5@t%ICtFJ#}33lu2cU=7`7_Lp4`;uU^#_nkT9 zyZ#A&*VC)m(r$C?2pwozC$04cRL}P-$9I+&zz&q z)W$ooYtTz_O$x?HTt&SSrv~JCJ~|StUUe^RwWsr6nhT9Xr?uXt0DDCDo$iB&X8FUq zXN`N}WkcrYyhs-AUOwG)yF~(InutCu)IiQhFO+5BnNrvE$!DW%VP-j zLKk~c?0N+SIqb&WonOYacatHkWNtE!hQ{|6&0ROLJ3a=C@ZzhQnt$%@d}f!B8Xju~ z#lv=UmpDd}Rt5sEGmZyf(+u)$_k2}ree9BESBRO$8fdjGtH(mb4W%`irFiL2>j`cns`ISv&;hvG-%54MOh95qBxxPEgmL?PYT>(5&6CO$?e;AOwt zewsFRFbb5e)VUKz`PeQsCs|N2lvL`>HS}A%5EWsA{ABc$;+#@CE(zm}w`qszca4RS ziIS29t7Jt+?ZXvUf8B{4AnX+|v!?VkQ5@>m;OVxARclyp5<&PlGoKaKAXIDiPeSdW<*e_QP)dJZ{+AF7=!^pO``f!POz9W@W)W{JT0*LW{Hj6)wYC~!8+?v}mq-=NcfAy@wgx#$h42nRe4 zz{3W0uhWu+rPbzCvSa&;>>M0ImV}m*<8@6^o6YCCFj*9FHZ-AASv-a06e%i7)tOY~GYV$Xr6tLO zGH=L5?30f_z89yLD#*4 zT)vT=K{~>MhAsXr!6q z9}7wRK-}MPg18@cEI-=3sU61s^2z&~2_qmhgxl85^<>r&j^hfA|4Mg|gT`Ut5h3yR zrL6pQMARf(u37f{n|ETd&~??uG_J;J*R`o-q}!_&d|1;qyQHbCSAm@v`bA#oCfyCi z)<&(6Wqf>TvPG?I=_5X#$GRhDqs7?nEY5VD{j^wiAmGtL)4nz;SE*z@;GYN^FcvPi4-#|3HXS{$(BndCReB-j!ZIBGDepBV(U-@5eoOnUVps=T^4)Zk z4M);R`Uxu_qeA$o_78VOxwdSA$~VGi8^Lr_qM4+;OxmBkY0naF`T?yGWDRqx;~eh7 zc}1m+AX+K&or2$-Q|&iQBf+|G+a`Nsr)%>hBOL@4bZI6?mu{isvXZMt#^YrDig=1~ zz=&hNzFUZ+D4Ypd_rqs3ek^ z8H|VpGG;X_lQP!~?!Sx03D3DcoE{7z0q9xaFaHe8;1IKvOyNEN&y)M-pA#Kf zcZ^NZhOB!<{{vOV0ceY<%k)I3`5tnG%E0Mf{3w?Dds_A!&odB7vIa~K()4}Q(8s7e zbEFK+R|0mrgMAk#E;_x{c3G^D?|_zf(vv^QVKXPqW&J|aONE4Ow#j0?^`6L)<&E|F zK0JM{2Y$qN*lRADziarsFe~d(HO-5yi0VGoq2xz#&M8HGHfBb9n$T>OqMIOV%>rse zEVXpn+Mw6UaDm=cPvCR88;r0W|Fj%o);eIVW{20uRXK9;WWF$fzRS%ccZy_cKRSOb z#E3llg+3xlp}3BZ9B*LAUBYrd?oY`%p1fk1bl0U6ffMy}tB*F!2#-r?V*+B4{))Y^IQ1eiFsxX(!P!U#@xomO%Qda zIh0K>jM|>-+)-AtbuW?S@?V8WAnP(h7`#$Vs^1{dnjr+8UbH6&I4h|`8F2z?99{hb zcN5Tcj_xm4bWMNGeEwZ8q+iP6tu$~_n~#TxIS_wpZEtIE)6r6Jb1p)qo3=qsc7%Cw z=<}kK-CIGc%SCm~!&Rx~b+fM_Q$I)k;Lwp9`em{H0ZJ`qimgAjX&i37`Y7sNiyD)b zs32oiQZZ+WwgI(&XqIR_c_SzHIqxg2`F#3KdPF^ZHnzNQ=5c=_H zB!+q$+h#e4M`CJsPyQsh*S5-h{o&($%({Kg zq69AUMCTByVee=(J#SQADXaiIt`P)1Z*H%*QS-uiLK#J2&WJB;<&SuYxr1q`j*o6` zflKd7;0gJKz?ze3sR~YZf^-x1Z>Zk=-YJ^LcM@}Pr3IX(aHxh5^r$;bp&+4{3}Tft zECW3B?ef4Uf4R@I2o9t9lLnNRb?-~6^?hW+okSr`ZV6Bn300C( zbUGI@$+34cx{90yAY~1-Z%*X8(by{&XsTTZAJ-C5o6(YQ(t>oTPSf{=6Qi<;XY3=` zyzYR$KSHVzT%6TSC_1hk!>Eh~fh5T8B8c%j!tg-FEZ>iZD`{=_skcyQvS}?>B8~a3 zhr4Ok7bj0{U&9jI>tbaE{>-w&+TAz7n~m&&c1a)2RvF+Zwbtw8}&G z+t?sxDsJm?s?ii8egys+B9Hginj{>aFN@ z$hP{PwcEmU0xixwxN0Dc+^(>G$eAZ8a2R)HPM=kju<>+a^%yrzNje8R>++%)fF>*u zCj1?QCS;>WuR^KX&uo`Qua=s>pL1T%a2#E3GoMwX-Z*=rQCl_bWm z^`%YL-g~>g_8>2FknN5vNT;=sKTHv+kQ5;w0}z|^!uNLI^_#ug=7{l=++ml|NH1Ty z-;1e7b%FQ>80M$hW1E8wptze<8i{t|GyEc0P%dvGZv8^lnlvqV*4$&ThM)&@bru-q zZ`U-Cf_DJuLAm#vKVZBX-|f>QEMpKRc0P}bStV^lcDv`|@_6L$32fn_NIuq_d9CoR zAVxoWXwMWo3Glsb15p3LYcDdESPRjsS7!c=wYA_6S&*`$Fd5&X-N)z#9wxq|DxXcL z5EoXrn8u* zBn_Ndh6ikr)4==oXBueA%U*~LCYznr(X$)U?f$Y~$b*0F29yc+$W;Fq$iFu@HW4c0 zn`@nQ(;3kWESC1qMPmL##YA(zP!rUsXg(n0Z%!{JDSTgX!ge#l0g5w~rgjgu=pO<& z4K)nqyHAt)^X45liyosuf#1rC;gYLgH6#6J+;4wcHx>mx4i{8JM$iL$A6C8ZzJgT; zu;0NUt#Tj!-^NwGV!s=RDe7C=RGnw#WldPx z=s7?EfIB?=&(@!vuYII;#GF}=SS!sfaK9A|4K~%(7KFD?GB2Vl8n^=o2{Y%#TokJ? zeEZ}~YstjFa25gx7>$dVa=aSi6Q{;hc^b0-Ffj*p)CP)VWX*{yOpbpwuB!jjxT+M_ ziDHlVweX39ohz(owpnXSJv(W2?1{&irJJO+fWK;IaK)cOcku?w%ia5eghr&Qh6n+_ zcC|aod(xPNI07?7=!=^g_f}T~1bu98josqBy@|O|p(*y=K&v&Us?lP0pG7KBQ>H$6lt^L!*${6&Ldc9m7hB!ez|(QL=CtGE;F*Q^Z`T1tIuUmbnxNu_;jUyZ8Aw&r?kU*&o0i8Xp_ zQ~heov~iOP)|!*x$~PkCWXgOj3A8h2Mdr` zlyPQ2zND&I+*nns1r5HNtir1H=(JLDSBX-Qw2mKUskVYEa1}Xi4J^|VMmph{I zs-v40!q-A(t(8yCvJtx`(?f@R6Z=IVFIi=u&f7;7cG1GpFrJCiUeQ?EWhpxWVDJCk zD0+D4yMzH&Lxa`oe^>C6_I;Ofz$!7eEu{nBCGvkznUw$TRt19os_)ZI!vBlFl>avu z_8XCw#((SkL4WTHP|I5^UHYB9m;*FkZLnA#uqs;2{SPkm8&=ceG<^LrI8Y5ZklO!r zs;aPU-DLfZvGn#(#ONQKC8fV{maN}!mh@`b-a1~~F>F+5|GSTfx7DOm2Cr?Ej_bIL zw>?ggI*|%>F6+h+MSg;l7Xy00reCR=OQIm}vmeOgnIJubLz%YPg^k>8!NJIh$(}XNzRRX0Cr*DGZu@GE zk`XtW!VNDaP@U2>;WFoukd5tJ$kvP@TV#?xTclbKkhGQ_ti-Lv?LYp#ECM94C#i>@ z57~;X!0jIf4_Y0z$VDTtvKu@r2<(dSrql+zzZp0hBbG+M${nz~MH@JlJb30c*gXe4 zcFMsa48V(of#U`)+uNWb0#6f9e4G8A(~TkB*(UXQOa9ini@xg&L* zc~dl2@lF`e{j5;Wh8#?ReR+N{SHG?~NRzM>Wv#B@$rr8{ugTfT^|7YGtl56Vwr2V?839`M zw8*ZLR(#;g#f}5+nq3sSR_)TxT$1&w(r#;V2MHle`SWtqeZOJEINP|%Jyj4@sySvO z)$DUVEB*J2+2fd3H_Or*j9vbs=Du!npotpdb$rkv8#VU#ix?!jm+TGmn_|lLdwdo<}kZ4!wsgX{06S7C1X!{W=$i1z$*&##3aM~m)m`GkR_8<2(#zw|s#%3%vS z4>j;EBZZ-IKXk&{?R=*lP%c}C?JXXb(1Q#;AZxoyHnKfgJlCbPBD^u*w|zkcYD;R@p(+<^6RvTJ_I8Nqd@VH9 z96(?a8U5uJxK3Jmi|z~WV-OnJQ&v*e7%8B(YCEX?ODC%=q;FPYZX{$~N+(3*cgD~v zrj-$P@@F`+P0Z_4)R%9nIxRV6P%F_ih43;^zFa;ajcQbo+$Wyz{@{~Rh6Sj}p1J9Q zm&W=Ehhy%MhuB^A1Gy=ScB!gn^ft7<<5xrn!NB)L?~b-a@M}L~Co0u+Srj1^6OsMs zg~@Y<6&?F6@4fI!C&>C-nY*KMu6OTYF68Cq0zwsLVV8SdUz*<$V=F@8%vckaGGx7Z zSA@?v38r5JzQ1olG`RnStCh^JmDU$0+bRUkZKu;HXp`iZpLFb2h%=lU;&HPU5?LZ) zGj6=%WY)=7`opi5970Yfnej#~(URqw!`3hm|cOJusLNF+xWbqjDVE zf#3CGLw}fadAde9v`o(vmqv2-)6!v-8$USqA_BEowmia6-Jo7b=@FqQAj%iEkjEG? zJ61&fr*}es`Kl4Lcu8S+G4sv%9$*d=pFI}D!A~%)`yf!LSfo@+)Y(!LBw?UnELBg9 zX%DCTa5j_M{oza8?-c6G^ z7o@Z05!2Me$++bKC@U$fg_?r&jd+bI92nQ|c`j{Y5L%6#dmTU@0UkNu?0GEeu&Fje zX)>CV#<6mQu|)!QNzzA3UqaFhNU`x^!r|ll(6CI%P*FGnfQV;Cc25%ea>w)gRNfdJ$^%C-ZASW_|H{pHk1B(9p2;fiHICAd$0_ zPs1!S3Z;h@VU%toT3JJK*bpR{GW(|lt3;ZyB=frKAfv!eX?Ds9|6o9P*e|!M<*=A4 zWts(~>D9nk0nuBn#H3eb*pJ2o%7-sJl#2N$Cgk2%zr)QRgE5(S{pwj9OmvF-MJ4%{ zHq+C$7n>eI#wcML)QX&iW(Q5`Adu!u{y=2FG)tJqZojw^U~@ZHX7pG3{%8b0#pVVy`5J5!2+ipN-I7eW zWpAf*=v8#+Mdj`o{o0AOLg91(acjLBL`yB-UhEOiu7w!+?Fl&1mJ}E{Ti06e@>HfA(S*YDTg!oU~~1XL*aakl2vnBSmxnaSMI^ zF}X3DC6G7F@M?3ko&)o_+}Rd`M>a;{x@&dz*OKmK2QvNv`I7 z8}&rR()t+8`5l?gJ9^EiOZPcm^j(Ni2O}P?sM4Sixg_h*+4l{X;;fZeY0$Pym-Aml z9%>?asexo$A@NOLFEH4JEF)vW*)nT$o7Pu)o{>%9Q^vjT+j}>Gx5L+`TD1;{TZ_xb z@cYf#TQ8%}o!7$=p_|gW_iMkP)7Bwm_I|J}M4^p+vbfs&9j500i1c9f8IR7h9gb$n zHeTSDnk$X_{2s|u__OfDsI7sjg@TBgq0OS9 zBL{Q4lT>#xQ=maKf<{vIO=Eos5o>8)kWLhr_uf}dJ?~Bh&ZTA64oMJ`hF>{C(vu+l zG_I=HK!jnc?%}$GrC@kAXrq`7!wCr> zxo?tJC6)E&z2sKU;^u+xI(eyLK+>NGJyn?ihGDBq*QL3ofVy&vg>|`RC87M$@3PW! zBVw(Zr7&aP#N*S5UC(kA-2z`*L&unQl((CyF&Hkta3`8pw?J%!bm_YIB`II>dJ+)i zcBh-QF8;8W)vT?%Fs1mO-sIuMKcMEMy0)>(aKR<#Ou-PzJQ*MsRs9u33lZ(Kp+KB| zvX#@n*L$VHA|sCP>bvsjO9wTVCg)GMn(rCo+yjbnL6tnXBza9y;nN_z7@&NdrYpD1 zU5irOZNkem-@6U&GZo_5q=SLLNJwNoj{}^aONiEX>s%ww`k?M-p=`S6JLhi)R8ViW zi-_m^33~X7h6UMtF^z}wYwgrvzbAb(?yV1Da~J9uU=LgKn1-v(Lmdr`y2@dF9{zQe;F7OPbREr=oziA*ca?(@n91gMC zp&EvIC*ns>>buW~b@?S!m{d2Ig^xA(nvOIgtZpWfn!OO3!OyaGN==x38(**_c2WH# zp%FG~6vA@ZXqwXT(1z9Is~fp3Hy%+Wyj(TR)mjGgoleC1a2cHBw~m)?whwigoTd$l*IiI^^OYDl$tYTeB%rBB5#?8g0vew5fW>Fc*QtT_$@j0_tlmo_toA8 zpf*kayETYH<7KJdqs_zHp)*zdMFFM#_?t1SrO8a^XYGq8_LSlIWAleLoHVqXt49+a zCw7S_cB4cH@~buK7Yr-rD6^uP0NxrS2Fq_k2c?AJ*3n#en zGYjI3_%KJ#VozVbvADd}MF?^OrQFTAOG9q=wADituyl%i^)@z>8XIp${D+;yg|~Ps zY^zIaL=1f0RxI4svuc?I_w7Iv_}UFDjC3rWIE|Y%Cdv)IWJM<`Rg+R!QuY1H7#hO7 z)jCZYAEzX|C1ve88$^N}$Z)8V*P~kv+SQ62F2wr9g%&?+sta%WR+pjEC)R5Xtwmd6 zO(H!XPil(8!23TQcGha#~9!6K?AXIlqm$~?TTfAZM zUA|!&0xjD8p%$nsJL0;~^Ngt1(Xlq_l28<9Ey$XHi-U`SMUM4|i^< ze$+#YPbLAwCOP|p!pc!S}6pWhDsSb zDquK}i@5jot7|w9B|iJn_%eW^5Dl26ikbfz1;|g3Jd+L*{%Roi4jLl4F{T2tJCA^&kGq;PW2V6sXL6CuC+S95@AY* zLb|G{xpovtEJ5}0d`4ds(!;nXkA69V@Lj<183{BS6CDFCf;OKPrhnB{i(@zxoG%<4 zbZwDxl$MatQ_0KrbRG~t3Ep>GYieBaRw-+kSm)xD7MCy=Qk9nYV#efCZt8%LUoxIH z*h}d+6Oaq3X;0o3yKl@gZ{*X|Pz1*)Uz+Z{H*9qFSdDq6i89?PEjih^b#Hxt!0$DD zbJx@$)wK6u{51bSp}}~I()ht4z5HmRBvlF)U!Oi0q@a;OMVyP%)X+7``>+IaG{DO3 z!)kx>{*%;w>Cz=4$<@4Rr*wQ9_fi{ToiB&x?Ki<Glraz-+EUvwKAGK<~J!0<2 zxnRmW*-Gp3Ix^-TJ{P90Uqorm@$h=R6AyKBsW%N|w_3#9OgB+?9J_!xPeV|18Stb5 zJ{By;Ss!vNi)%M1Cihg!uO(f=BRQd#FPch1 z17@#8TG5sv6DU2aMk|4sPwE-9*fiSGvTG5S2; z2xF#~7B`4Mnb6W|KhpU5H&SyRmjuM^1TKRscRkW55D8b`w{a<5;(6%%jXz!rZ60^> zrV*r(AI;|Wh7~1ze)38nVjuG}tNVZe#k>_u`#vsDuZzRG4u8%5-G_y>4%#^@2y&nX zmVkHIJFVjlp6K0oEe}Io1w{tMeVrAlUAq(3_(jW|m;8n67^B#8Nw8IUY|yKh|h9-(7p*>67#3VqhDb1_?uui*;q;hV$vt10Xylxn9-V^CTdK7%hz z@Z9BqaD8E^oTL(_%-n?1xYpR{s5fZjEh(^(z#5uAQELHCW$`-5N_v?*M z;yD5uZbm18#A9qw@wekK6m=!IwhcY%%hiQLKgl!a|E5ak zN!sd68QHOYdO6VZ-Nf5v7|>SQ<@7fb8EKlFFG_HRFecNzF<$rDd8Gdn5N4;Zjwp>c z>ltIMsb{;3pM2iu^yu*(Vi9iYCuBXWbVb*-)TOeTXr{-p9mP}-{js-w|ALczmmKvGY* zrn@Qh&nFqw_`p(;RWQzs`uMZLp?9YwD46BO&9jpqlP+vVc)q+atd~gWqYHL(WHT3? zL-*~^?&Rfvti3i4<1=I5mDCq&!jCjqmJ9|)m$hHM;tiSwcu5WFb<3PKZj_tFCR|*b zL*qR%nu)@m-UVSRdctr|F(==ac#0jK1j-z~D`D`eVgt;i9+d5lermLe3oAJrBe6^F zomxgWism`B8~(x#g(a^(`k}hR-<)(=aFsD=qYz?RgE{u#WZ|d71<`c5g~KrMEVhY) zLpPvja<1A!!Qm)TFqW_!LuPq8+(=q)w&vVM4{#25{e@dFmeODs=GZGKqlfObb{?)e z<<1=P>|<*?{u5+tr_qwM)vLcS+{!yAuT<%?C;B>r_*dv)k5r+h%@<488;X_XDSKf z@5$}w#wriC`3)$?7_3mN zI#xjMuTR)n4AbGgBw30fuiw9)msKf8uITq-lzl^*b3I&(B-74Q`7jiO%G-NPqU(E9!du7D_eKRzOfd)zPBy|_6ECyNO;?;rM>QGmg+NKpM4ogzkO(mMn+ zEqHWLi)Wu;qQg6x!ck*>RRa1gEuHZ#ze0b$ZC32uJ}2|Ekk(LxdDrAZtnYWZuz^GQ zQ-;q|JkS>YjAz#)s#itzhK)>4(wRGBM}(zw0iI5+=*C=$k8t`RhPn_j z>sm5EAxLv{TR+w`B?f7>ELthhRF1aH;m&ILu)aw`UPF{xP^Cbl;PxH~|2>b?Ix@%L zK@z8o!OzR*hB@a7%~L+xqeAF{&ahSIhXcHPjHfy+odwoBb=5^BuEOgEF;~op^~0M- zv*8HS01ksw0QKB?Q>xS^dm-6_Lvv^?GoXNMMkW=27&o~J<1bv8-rFc{jH4h;p_gx; zFIwH^9)CRrK7D)#dyrFw-``Gxf?o9xKCV-Wk$vQj7@F%r^CZIb6+dYZOljHs6^Y-lMs#e_H6BCizXnVQ6 zm_t+@1G*Vr<=5aI3C8vW5L66G9wTH1&X;SH7(b5K|7&jY=n|W0e zTW@L53PobtUBlsm_=}}wB1uUegwmi3wPWkJQF|33?Wsm*qdJ47?2Zn~Cmzr+x6yxCbNze9gaX-F^K2h~{!f z@sagaeyx=Hm5Pah4D>=YxWaQPBYZ3*OnUu#R(sDjs5N^IFaW;| zUc80aw~uv+^~b!1_lJkPn?|}~&iAERF&QI~uYZ+l^HShaRQ`o!*C;eG#f8e)n2<+& zhT#N>wEEgJ3xIpe(t$LldbxJfv15+gi!j9LBCU)yd);%8#<5PR@*1%d?Sp+U!hOi zT<|P0qVjno9!ENz$q?*}>?6PY7+;xDMjpSuaBzCg+JC+Yharie%}nCMy(<-eRb({z z47xatd)VgNZ-sxF&GryCUV(nWRwy5;OYucja}7SzcdZW0hUy z*7HcntBV@F{>*-YKNJ9mrBgy?j%J>Psd*g^1Uu5ak_ za=>YMc5-pBu5S(4bTDTqKYa1#@qdi>W#2hAJ~?H^HU9KS2+{qTZ`<12e-h1}*mk<% zhJtKVUJKDkjLTzpipg3S93Gbv+@wM_tMuIStp$2^c<58^#{MF)?eqB>wGs2|u7@t@ zS=Iw3m`7~m(I{~T(%W!`FfBef(%*0B99HS11Xtqz)8=t>bI#`b>`>fjP}8O)wg*Bp zV$PEjSI?{&L1t>fVC+m_gO#DE3GHz@UF>A>KwI=ELrqtujbf7hywtSe%<#gHf`zIP zmtv9=n;Fxon8nM7xBGNSKUwbhzhxrT#6@q;J=I{y{Tbwa_xr*K2kZ2Ey?s(vC&AG1?8u zP>aobS?+NMHk)&k#H6dD{6nkmCdOuol^~!p;pB5Kt8W1E8DoEnFU@@fZJ4b6V%Q$W-sn{oH6fOD^Gy6z44l6Y+qZGq5Dn>-Z|;zOSLTn zef;i5J>l1gB5ofh5dE~#+5JFbqf8)=@{Pgk@u}13;TiI6wE#6KnZA-Tp@;4!9Kgy zf_=cXHoC}`hpT=T9`9n+)e@KH%pB(Kz1BJba1F;c=j_)k?>c6M8%}<$q$Iyb3&I%4 zNS7fU!JXXTr5idG@p(lTGQ!u>IBY4sUC6@ATI1Ni6=RdE`%CHSz`*jfd*#uK@+=DZ zGui3{;3apvk@hY`!Cm}J4NyDn+@jz*xLzA*De7LSGW3!a9can%q;yW(Z`qM|m(zy< zmMwPJz8^aBkg!bd!6(r2s52*(0tq};mwCf2Zyjp4o><5xbN4%kkLNid2}Q+Av}x|( zPCcC;`!Bh_C_cxSFE3ixoYTzm6t+aNe{1L3Sx!(M;lG|0>+|CMIcP*u;-?dW8<&Pb z7gx1N=g`hv#1xuk1VC8tPfWiPCUxHvXMcgVUJ zj0`lP0q#(HVy3JiVUcNScHHDy^K+?CnOnDu7bVj|PeR{3Y@WvXB=9ajhPC%Nis71D zldnuNxx^NQ{8WM)O zM9I%H`k`+!8x91q7AdvOzvRDPW>VTPBg%3?KtcH(J^}ac1&Q(fXQMyb1zw1BkB(NM ztCWw1zu;K;AyA=y=>FM@!m!do2(yBhzZzZpaDoJ|f{0sUFn~D5H~AW?V@&Y!8Y}aQ z?X+L!W=nHSO!0ce;@~1gE1r~N%Fst*FM%JldaZG)o?BwsS5uteCD@{Ll*ft1szTq> z0{#)Zr?WzXu=FxVXkxcCn^$sy&WE5-a0tKs$9O5RV0qZO68}&lhWn*%Ov$)7L)Qs32Ue4C|y2bW`dLk)ytXNbjpVmyZr-=;HwtL-zujGr6 zh&#yW$`wmVvX=GQbyFi#(~k!!>50T+sxo>NrD?0Gd953SR-y{4cAjB8tP7R&6omx2 zNn1D1R*1%yJG`}{U{&d$^c5&Hyk$sQH_ugw!d5f+6L^HFzK^uDRZV5R$yy<8OFfy-nH5SA@u8~98kE>@us8i_M19bG*eAotsgM!^$ zMTQi2K|YyLHPr}?AbbW(!chu{*4n%6@)d{dW9U5cyB6v?`_#fhk)_8U%5Oe;y-<&2 zG^}*a@oZQmQD(@{r6qKiJ!Yser@Ne;bVzQqFV`9*R~*6C2DvUJ@0uDqUighLI~_B&Rk66T1itmPy@N=jDk;YJFBTl_phbtwmEoi!FMpxbrl8-Pb(EbSUyX@@ z_AmA@cnwkwmMEzW!AZm;VbC;nnHTLBEE)O1y;Q#TiY$>^Ji!AhcB+haGG?c9#q>iZiXQuvQ)JkY|=5&a}sf8>P?ya^2Ce> zx3c>3Wc^z9WtHIMwC^0+>pKrO9q<(4kXapx`W>|E-3KG>AB0e%qMx-%**h?dkhHON zusvZ&w5{OL=-N9X`QUVHep>mIQl^Hrb=I(^Lf=s%x+7OQy=EkA%U0!70V|iWdXsgU z6L8mY4jE+rEw5CCxISN4?FyT0)?t$I5qZ zY%qHC*ycc?)GPe`F6tE(3**Shf0OY2ypWUE&A=kpy7l%mcC8$NN8I7CfTkW^XQ$>$ zZ0h>wL=I8Y?sH%kpWSd^Cq(3QVQUc?wYLg7NeKf_v$r8j z)W*g1s8D?&D>$UdpI#xuJ#YqSYAim^<}}=CAea8F!L(%RnE{>Fv;REh6f>=M==W_{ ziODZq;l}jKD{+@AY!+vox~6+sbwy1Epx&ZPvxxjNsk)@3;RGC-{h!d79vJIvXS4{i z8l726E^+30hZ@wN>DI%6LTUpA@bMGxX~Bv{koWGRig{x%-!0GuKJKY;`2_Ns9@EU?!a!F|QZv51X->8S<0{`E^cf`^IMd$pCH*C1q==KrS8wi z5Ssu_K(W7U7lXT;^Ray;u}9xyjW7d00GYT>-P=)?;(H`v*otczmp(WX&xlJN7QY9o zS{l^(l*}Y)bG1nxTKM1sEtUu(+m|$GOpx3;al%$LpBtL%UB0ZI0!#Y0Qut0hR(aJm z2xnlL$dumE-JL=5{C-b@MWIG)O>#~oVTG%$?!EX)BL0Jy_#Z0-3?OzF5_#Gux-;Bv zH|Wu}Us@lbJ^b^P05in(gAY-$=$m*$yuCKIB%NfjA!U-f_csI>EwUy<;?Cy-nL!C` z&oq5N3txs?b5)yd4m!OgMNZwhZ5SdDi-vWaz&DK@ZihIo!XOaliNoA>DX6?;#%Tv) zI4I*7l3qs}W>{5aBxw642>a-Qji2Tx_`bB9p#n-h_7CUp7@ig>F42HRIonEy8FJv$ zpRlF7S8I0x+e}l74f3OHZd&thZb{oqo29uS$+~h2Jq4aiW32brPF(9wN<+YAsviQ; zNNMD*Wz$0~p0cn-F*Y<|%PW=1RCJ?CtXjMuUX+L*n|cw`u3z5?N8V!Tz7U05M6&@) znnqy4s87dDvYNgoYfB=Ax!fhugnhmA`I8_jM^!@({wbb{g^sqCkYx7V0pik#b{(gv zWE`VbJ9aIG#BHcMv=v%mO`P~?1~{MTiB_ob)cm< z=m3X2yL(3eUN4(z>OA*gPI zI&rV8E^-;tCA6?5YZRQXWOwBYE->_Zyh)v9$9o;Q>2von*Y_rn%1k$y;lu6<)<~R2 z=M&jRq2dX&tfVQzy4>4;z5?B*PcG{eOC`QOLfhn)FTMx<+*JCVv=B%T^8fQs>dHEl zOLd0PClFxUvHuc@vUpGQa6pyRp*h27G6jkg86O_8KwOloo73@OdTX{7@Y2>ZtCA$-!t!OVR?ej@wOpM=3k7r&ZBO{dHf5j?Z29j_)8v<)df3&^j`=X{ZMvl5 zn{7A2>*MZ#3Ykv#{Cg8_M~l0f#E%TtD4l~CV%aA#is=?`+Z5OPW`Fr0_qon*X}IZh zB9Y(}3F36Qmf<{8Svz=s!c|Dl#we^D#5lSbzkPZk?mOZ{Ev{fopqQ`LMJ}d>M`!M& zYIO9WCX~fAuQ>efr;$J7l;7-Xh1)Q{ogwVXs+*Tqn(jMP0y~~K)FO)SBCd?(H56Cd z`f^AVVr=iQjAySH!d07|q|q<+q0>Pv{cWy3DH*NWXTt3@6$oufY~`SA7iM{d?LmjK&_$ZGrcga zc4vbZZie}apwUHFIHgNa2mgF@@saStC5ULYM4!xJMx#M?6@)npH&$sj6%zjZ-c;K9 zhJfk{KvYSc-)p#>jeD)(AXz@j*ZeMC`;|^n!Vmzc!m;1)VJN5WnGUC4xDeJ4pPxo8 zR@{Ac)0xqDnAO;BG#kI@Z=qQ{u^!7@)a+DyQL}IeDRHeacl<^8NfRPGOf5056WevVxkSLOE=lCtbkx306b9EqB(_dA#ib9bSFdiqmXF=TXOif( zV@$45KLwWHRxzwQGrf9ICvcoLvEe)DpMkfNou^vTqqY~%_xll7JZf9pqk~WD=lYo4 z9Od`&r!eZBkjfjkQ3biq{cQ8BS7p3ExL=xF&+&Kv%4p^N6ppR_3)>Y#!vPO5zS9v9 zHWr|3^Cw#0_t;x+uxqW@+^G2@C1b5Zo5c4${nP#2vwG_yo1t~Avu zQhdLD!}9WXK{wR4WQ8V=*L5uEe8(JaZToJmp9Gm^Z=>EP=^ZysObd^w0S2XZ2ZbXn z8mA+z!|C?@VE&E>&(|GLnRNTpmEoftO@%~)?+`DATRXDz$M&n1@kbHeANhtN zaE0$M0J-Kgj3C2NbEAxk1fDVdVHiLGq*b5gr~Z>Tf1@lioWz{EfL!nU`6~Uif{UUji@k=G@xCx3LJk+V8b=5U8KF31S`9+c1@dr?_&v^IKiyqDYN& z8M)Z+XcNCvc&SRbxxEI*WqHzu84CD>==;K;OKF|H|d^x{4GxKfY%$zfG2B^n>GTu$Q0qZ}T%dEDLAzEI;JsWuBO%#jEi+#U= z%t#VDadCq!;$A~g{_owp|^E-sWS$LFTn{+d(ZR$%xD}=?6c9 z2}&_TTqK*7PPNNTpxyPmZv+qnHsgne`ww429U@ujU^$^KO3BQL5|w%7Um4;D1)|`= zloZj{1NZZmg+)|;P^+C#g`j-VAfcr$GP|w^x26Wzyd^^fzFX7cUU=MqkcTN>jp}OF zA`LehwY6QF=+0lUzwI9reGP6FXfgr+(c}aaT4m7`s4r2m)vEjc)r2nsO)c|mfnz-L zrP2>R0OY^Enmjk6JAVAHtPu|AeGT$IsE~V8rm>}fB{wyH@#b}_!w>7%4S6Q}YG7}_ z_tVPm@9)v>i~N2)3t|lS9b&*LS`m23m@yml;#p4)G3i3B14gI3;JazHkS=V(O_?>tH3A@e3X!dE5>s>i}e(FZ25;R*BI7V z1jEg`Rkju0-*8dtb*m#g?jhckfC-{i94N>Be0@<>a86+63lT2ZS%O8Bt;xz+P5V$_ zvZ3Tt&WGxhzED`M@Unq`CX<34?o2g}z#?DL%^jkaXgP*72Z!;t*bIYRs_Q!zmEuDW$YgIdNh(x;b(C zKn4kzUkP32$_MvDHnX4H`hi$(%v?YTH(GEf$b>1@h15+uU^EW=L21)1hNDyYhx%_` zeqd1xwN34Z{Otdu{>` z(R9viT`}JZ-zmWVfeN935@6iBZ!t^d+%;AD|KG)Q$)7$I^nKu$&eiAr;v z*FNofw_q{M6#4$WDUdSWZ!%MV7f5?qs%ssDzxBfV)?+1$^1O4K((UtTq%@9+iVYW) zUPp514I(tOL2p4?#NoLp{s;jLrhpW&9p$_t<%+J@g(H(wPj zwe@o%5|U$9NS#~lt+<^DnWKJ`dS?W%aUBn*@Fzu$r10CAweZ}k?b6f#X42-nYKO78%ZH-Ie2b76{Mu`Fsp68orcO>Gw-DeWw>I z+}Pmn-6pQ`*$u&%G37JF!>?zw`(!3Jy~4-Fs})0Y{W#`!CUYJ*JtFaHUA(b2pfYycQzGgO^$%g1A*uSs>{TjJ1w)NL8{g+(hsk3_P-p+-j;U;QFt$=EX;tP`JuuHY z4AOCads5X|FdB@L{rX1Y)$jV(5rlK)+GPe1x;egjik&d4s=;TUm9l#AgDmcGJG(_P z>%qvp5|x>x$w)PUxi# zb5K6F^s37Gz!oooSh(4bQ;*Ms#yHC$SjmPRm-MPtBi3KI#;va@eouSqXBsk^W;g2G z`~LFi_ugjEJK!m$hx?V{%Te>uS?8dfvaJ_P)X;G1ZdTY}pd;SWxP$}$!HEsn6?4zR zLJn_YmBHSlOc;~C&fKaks>ZqOMzwd7{M?Of++KT&?3|Uci1SN&k*d8y{s&2AYW2li%|~ZZG1bW(@$9mr zUyD42!*f%e8<1{zyJr#vR3H3owa2&jiQesA{iPvOovG}fM7}eF?Z?B6SeUC*ZiOk$ zwnh7rr%_RpTk!0{ji_QWE?RCL)GI=oYaP4CB$2br(A`z=&1#E5{nq`<_|AE!^O(`n zG0aO0(`Y{kwP{E7 zk(OQGYrQZx!Rp)F#yzt6hdY}I`(WJO#dEgmb=1=F+tp!k*Jq3j1HMPGGTHt+BKESN zUp5o`>x9OX3lkkzC>~`AJ4+J{YxF$xj~QR6u$^e`S7l%NTm=ADZ<4cQ^79_q$G+AP zVcEJ>IUNB9Yu;Z45Y!{kfDv06VaBURzKO;S|L1ah1bxK%SMCeK^*H%27m)G)bKe(# zPyIf|qSryC-${64X|07?Z*eGn*chk1bAI9+6d$8qO#XEOmrVpz5vbvzR@EyF^%RC? zfom!+{i#RGi6^=B$_*~tPc|P|$>b}(Nn3qx2ew8W!=$*=S1*DB4&`JUItGz4QZl>F zXC7xW9dbq`8!mbc%4L|Qlg67m#afz;R6C(xe{$xfCV2CyWR7?$V|poTMsaZv{2A(* zWW!rC-+*COy;ddi!t*A$uIjVel%l67r0g>AO_dq&eIYjTQ*@;^Ht1JOuU^E5 zMwvEAZ4nZLT_*0fd6Us1ulb!D`&f?Gtvv2PgR2=tSdJ72o>0556R{y-hG?wI%^|L} zHwLKJ;Z0B0ELJt~Pzh=-sufR+A1Pzfy{@L6^Ir_t6rYcnG)oVCVp01Lix+W>LwCtHqIjJ!s>TXR^Kw$+U=%lcju+88=ZyPU7XMS^5`X5H= z!fet4^nj@|OZ>HGt}|-QcoK=$4&?NgZHWWdqNkieUmnD$ini#Yp7_?o#;sO;haU5Z zRY`qIF24At8ulh@SwtCc)okidlhed;LjL(9!%^O61dQsqT;-w(| zXFV!q&pbeIs=+1Ehj>)nwGvQQ66dW;8ObI^deR@C>z+&jfeoBkEz`8lPL6m`JaVjN zoIViYbr7r%JO_HXRyni=m~wEfYOR-U0vLd;25G0on*f<*9T>b1KB)^+ZbbbH6Syf< zOo|HbcU7m#2g`r#>`|62*7rtBM_>E2;GZi;naZ^W%!31Ydre# z)oqNqfmf>km!3TF{_A-MgOn#toZx>)VYLWD0B9TVk}`&+;1KPyNl!`Q%lceewbz19 zvcfF3s@db^@EDS1j|6nT0{Y`7K zz7KGe71@*L?2VHi8%fW3X%zk4Ex_zeNulMSBUmC5)uW&0imC68bO~az0S0EI)svBr zem(|`iGUI#zw4Z4E{fjKMb?byS+Bl;1cq0x(>82c8NIPB48Lb}m6^sB_o%tZI6&{w z24dmK@i8h>SKnobkac3yDeYtD1c@aC2e%jjP*&bmA37ZsmQ;lc+rsa*WU@+U9D8)Cll1~@>lvu9avLVXxnGakG~SlWrO|K)&(ZrDrZ_CD&AlCvf4 zQ=Jym3{}(#UIAvp2IgT(g)Bbt7xPSe?dm}^tSr6C^ar`8gx~g-CwNpFYrnjYYQY(- ziRa5_1Aw=5P0S`9 zEOoJtQn$K+I#Q4NRHn%#YeaF5zRtfPT6pmS+7JCy4j|rk_|kKTUQf;EXq1U@uzrQQ zn-m8$J+LU%LJA1p@HTLjir~IL5c`sYj;wk&mJ@M-N;tdAfqIVG%ZYfvL2-?Y-xiVj z(mXo>%r4r?X3v++LQF!i>z{{~yf?F*@J>7u?LRJF_YMn^Qu4A)PZ+388In>jtdDw1 za2j<=`b)I!Io_dw+?Pv~iWMtBPAMY+_8_5+Y+Y}&Lyh?2FJZL>Cb zQ#6=AwSoY$L!w}+445v3!q-M^9Qy#X(cfyTy*ZESg-zO$)1upjoyX^8LwENyRy>iZ z9+|gI7+~E(5oa=wGExMDW3R!0Mjbm+H_tSnChj?N!{xTCZ!-x zqXHW2OQIN>%e?fATZJdm8^tBBD;tFO*%G0@=Yn-McMFbz3>`eEr(%K*A9%M2lIW7^ zlqWnMj7bz-6vKNauJh$&1N@kR1O0AZM|Nrbx!L)Bfb2UA6htaGw;?5>XrbsiM-7FM z^m+%*9xozag%Y3lO9j?8U=q4}=Udv=Az6=Dhbrf?ntuVOoE&ARJB8XP6B+Fc+dDfd znY}({?>SZ8E#o{%LhsZs+Y&Un#CY{(eVp1zI^sXYt@9d39PLd?1+;ErdXby}%}Wu) zhi4g23rPolPkLU16ETtyrRpTJb)P&yDhlicgfC;1@Z7t zTOOLuD@7vg|82|r>x_CeZ!T;<+>-?5%t@qWsSF6do1!q8y#TMicjykF2aRBSshF zt@Kc0#`?yQMy=gN0yt`)zajuTjGdVfB}FPVd}&Tf(rB-=>t+mQdK)eP{WNdUNAM~u zG*Ssoy867;_9;FrR)i~=POnfj)!R|%%Mu;^ui}K`=8v?rbQSQ)ZyHNydbJKP3a6Zz zQb|DhH<#vbo&{7fLC4=X2%8>*dbcWnXwabA9Hb;O`NeyefVidgx#{5j>0bD;-6qgp ze~cXlzlckFSHeut3$hEHdzpu>j{Cf=e{MArWFK{i{w#Icv#4HNg5s|^8WqhS^}|?_ zONjal`85kV;^Kin=27uV-%OMm8!lflH33hn7$KPBdP0Iv2y5!yj?DoDnXu~fy#DbV z6uLk8RszGXR;iZzc*izqzdl7^@N95buj9>)StfWv46f-_&*2|uw1UVg7*3uz`T_K0 zHRk}cogR+%L2RGI4-Vac!5qet7(VBQ#cvfLy~+ne>1oV0DZ4Z-BFBQA$_giVbn{n0NAdKqQkA%gx1uygl&55t z(D1@63fs->{RE|DcN4|wS`jQlYAjvh0iggAf$BlM9tX1%a6Q9jvK+;Z8Ql|gmyWWj zmN>3yqfPbxu@+`4HMit@Kq5iQlwvaDq9@>w?RynKKaYK)_3WXCmq+A&2IEA-acA{_;V zzroUXrM6}tiQyiSr@!z`{sq>A?FSHA&xg&+6AP+%DZ*K_l5sx;*?Q;}cfQu3eGbHP zRr5Tf8{FK|)qjQ#a|j0iQRFQ0q@*=P$n3mfXt}yJPYQm5b!M;k!!OAhU;<}X6UR0I zE#SR=9HVE>`#nk^B1~aRIW@OX>Tk#Laa!`HoGRpt)UyoFqEHReB-gdGi2#lwLjqhP z6+epoi8S`PeUOEQFl6CZIHFKsCH>u+)3lFg#d5Bb<$GK8U)nI~j^X!-`~miP6nTNm z$DqL%R<&Z`mYy;Ldv@lCUBaevoI%yB))Fj&TjGXjbAH3)Xicdvt*$NiX_=>7)&9cU z6Yp-!PEJEbn)xsq$lKpr_P2}lhx28a^4oqIVtyO9Fu&wXt5Txg^>yi@MbtP-%fZ9w z13=>+P|#tT%xk9fI^Lho2wcdKD%zOgl*7}XQ`%yfFFMws0HBh3l?xiQdxhWQFE7Vv zN`C$^&oRWnk-4@oN~$BSmC2)pX*ewJ5qSZ#Sbg5IIqok0=-kU_I29B?7M2=yf5>av zQ;U@P^igsxD&Xp;(Aah$*T4f>qu&d$7rK?`pN5|F&Sf=Zzpdlt_OZru1{1DrV8!=d z(C+Z>1Jx!JJ)hE7!9Trl<~N#jd6h5k*U$z&W$y{f?sGO)n$>8Jpa|R8&x-6JGi|al zHyi|n$k@z#IsFMdLC^jrW8syD9)Zk~3mf!k@a0jwrJicGS}NUAtBQQJ)K{_Bk@YTU^V z^S}S>1oT>5AmFuE#GN^FCTi6V`hXm^kFI2*FR@caj|r+~j+Bh%E8*`DQHZAFaA5}& zDFHS^+#7>;&z%Ql_xcugFM1+~ITnb~!m%gl&%R;3W%5G#9qU;gy7y067R&SXey1rh z=JVv2Sz`6{6h;wvef1UoDLTE0Mf<|yMa*&SZqJ)KskNl+KJMRqw`$Y)tpyJ;?R@RM zPDP!x{`{G^0)e8%#^gKJLY;)pIXk?CQqk7K;-!VFuN%9xqEVI+!ta-GMs)=!@kE{t zO_4C_UYzaOFB%zC7%gnAFj9p*x1>it$O+2%V|BPjbgf&$?P}*%E|5p3fjJO7too$E z0KAdXvJ8@n{W$kAIeF2$@-~A?oNm6S8j8T@b%HlId#-5K&=8gsw!aZRvYQCXyKQby zS|RKIVnLMfJZ(qn5!-O~P!72lYU*8;DA6P~%tc^8OsLq(3A&l`X$0#u-X$#a(9d<# zPX6_0hX~8g<>!*CTxX?Q>OYL%OB_a`|7S<*;R)NR$6WP<$^3~_qD_)2-jYBH5G)Qp z0-gK^+n5KM(V77hl%8Tds8L@#e>j@U&uX6`C zN$%$l6KR3ZD%M`m1r2{*ql?@ia5f5fR-~QTxF8fB(jhUAVv#9FQb>a!l`1^3SS4_?@Dsm!fQ^dHW1tWiasctaV(kDW2iXZ!Lo%z|;+2)q|*aZ&Ijf z9u8~(#)*!088`u2LnR%^A^9Ww zTIZ4PR|T79hZ*j5{o+nuzs3B-l`ca{g>>U1Qjj8Myf8gJwqtYd(j%er6Z1Ir`GZ@A z%l^0<8nliF!||rRBw&o`N7k~mtV_1|(3i()TGRxh2NsBCzJFIkTHLqa5B=8-*FTL7 z`@8>XY#>BBFVQNhsP)aiOcBo>haL+{h@`4*Dj;6Wug#@LEB7QvXSwnILV3zuo z?5-2Mj^yq|xmr!m&RfuS3p|OM*=f**)?gV>*sf-O`r($kE!}S65#<|a)066v#OpjE zgBw7>@~+FQ;kDE{b1?f4`OXB<4$PWniGxy6c13VrxZYB(w>DV22tF>)4k(1iExjeC z1$YxmI`l~`mbvlX2^Ybyn!kPJZu#bE3t(JkOta!+<)kp7~8-YQPE6}Y#=@~Zp%@kp#^4JGo7VE_uBuXaiD zQPe4P>BbwAdn0mpaf%cBIz!flBCz7wBah(St8n72q5e=(q*7?suDQK>+`v z#-a2@r)pOaRAjKmD=VU&W0tkhJR8qK`Rsg1ZCR*e+$^SV9LI4u_t=DfnmKYnvsRjdd|IMkmR-sOt zH6fUPDOcUJKu+Mb@`O*gHpO|;*2dZK&IAJ7!P?f|(Z*KfL(%r+)dhpC)@i#b(>0J1 z_Xq@_sMfZ`0Tvfz^ER$5@tLD{er5jBpRF)iBX8QI;%~bKFYsUUcQko%`=*|uHHNbM+(@I_mLilCIuAa5acB} zeddRo-RQXZ=w+UYUifP=-@}6B3bIfwJPrFa_Ww+col|h5i3m+3h$8;#Qkv~opVzdr zV;+CCrXXF^Hamp=r=kei&reM<`^D-GyS|4lA19>6mYj(s9kg?NSN#ApLKBDrxcNW! zm6^#g3HaaYDaVYZ$j~$Qg9@T=+GX261#UmD(itn8q%By}(qxSnW9?VqW z2S3tD5sK>Jv^Gmo#1^HOoEpdN+v8M3p>&foqUI_@`=K(JJo_wRkR@oa{v88-QVjo; z#{!%0#=?3POY6Py4ff4@qYSA$Nyc3{VqDj=7&Yfzd|z7U4ySt0z6h$w4>GG7&|;6c z#&=NcUOYugg?UH?|423t*bci;n5h`|h0qs7H7kd%DslSd27Wvp!N&9aeh($kmm45$ zq5!>RjkasI+U!!IDu11<8DPH~#V^Yap{X&?%lr;jM_-(5uKMxRiPbrWF?uS=aTQ{- z&T)nRbxW_PoC1&6&?c|NsdJ>amA4+iUT->|^6wpU{jmin*1)Tes~)zN2=WDQv3lLb ze?YQ@tDjT-=AM;Ft$*r|@tp6U8Mi1I`z{cow}zJoP%%pDF8SM9`t#JwXjoR&UXS!% zy|wTUW4)EOkJl4=7)`r0m00+bz2T>q-LI#<_W4;Ar=_1Dd+~liMh;GqBDVLfxk!HT zzOMrGvp+PsVx-!#1=$6^8+V5!#A8Vcgm)8Eco*#$mUmn`KzB8`yWBP*pK(I~;9__P4 zg8*AZxVAVd^Acj);p%$Fk$wZ)uUs}`%fF`IdrRpC9rJ-z{6=+bei7(2>Af$M?h&cR3o=IrT6tos+rphYy4kz&%@SFb6Y8G#Y#D`E2~n z4-v6bb;o{qcFuCH18_BOCKl`=(#GkxY2FZWWJn>ZCq1RroIw z9ur$jaC|3?qcbz_S#ae{#V`AR%rcIHJk9@qdwzcT{nPWaGWzw3`9ZkGH|ta9(n&&C zQ$6YH*Bz}nX#gWGb;sGtgTD3`khRuu<@dd6ve;FmNB-n{n9135LLfE--|1{ zd0U~4-DP>+h-l<1Z}nWh;Wr0U$yNbOY5L-u_5R!4?lH>gsZkls?Vkm2kk99!-5o}s zVU`4=FYt4zuABy9%)Z+O3Wm9|b0^057VH3aL(*vp;DbAWq%4@aT)#C@fofZNA;xQj=f_%;x2+gJ$+cKl zyxYNm4js=+pqj zSs!0x(#j>}EBau8#bsY{|9}Y=2uU)A=gg3nI7d2Q%M=rOaYmTOyG!nwhHTc^QpU$%3e&NUMlK~)>P%uI047wc~)+@f!P@Y1f<-@DbJ&B;t@B!j*E zmM&EjGX`p)Ysr$&41Q&|;aAeOD6+^69H0GnCqbkBvPtvOu)Iv~Gl0FXRj3Up1(ozL2wado zLt?8ke5?J-xq^@2TavWWW4+c_s_MPs=)1ypOYsd$3P^`&zWa+1?-OlMi?5S(`3tl3 zU7;gOq4RDe@~esjHJFI)aaV7BYDTSm=$|%Kr|Qxn{VGz!>ma?^75!27l(@CdNuTx- zlEnP|Y=#Igh3kvx(}r@@Ao^)H5bM_&IJ?)ZF2FSf`3`v6*{gQ z=XS)`k+A8XJF4r&$~rNvj#o3fddh?=m0dMmHE5hT#HnYK1t>wxupbL%{;QzZXZQ-% zC};7SA#s#8974AlFHH~)Y_(URu8hiDvtCD7@#@Fac^o>|S$mBY8s9^08{Z=|wqeL_ zRylV1e!1CR$-6-49)?l87C{>9&m31VnK_tce zM7&ACS1sY}n4qIZV{U)SK{xqB!1!+S?tQC5lw-RW2O@Cf@RV&^#^g^X6H=Dpw9^Zn zAH$6T22D)Knv**MeQfp?2vj-nQ-cwvslZ`J|vYoWe1W96`8<)$vZ%I2y zx<89RI~LUouNCMP^AJrS{LX9#?fXTW$;Id2^>OhJi$&QPtjvE-#At02l)027MV>*o z<#w!6HoY*-H)tP1B#>r(WYU=S*YzQ+NK*_i z@w(^iV3!IjG)z8STXao+N2$p7hA4=+*M&2Pwo;>U4U=hA<>qe&oU=w}^mdW$!F$1l zX?5yBPfeNgpJh?9tEVC@tt*a$)5V>O^U-IH0$I8cwh`QP=0I-E2q{bvBXlX1B8wdf zj63Zmja6Chisw>m8hcD^!Q#6O)MKTV>lA|3@RzQuUiy>$dAY55wljgnuB(S@rU6&| zcxe`%9h&<~rbpfDuNb5+&G4YZm8)dSI#EV$ecIa1A>e99+<%BK^Bw68-GU za^G#5w6qMF>4cBH;_$$1Bne{r;cyyHz`Kjiw7xlGDL-+I-V|}{mF`Ed1NCcF29{e# zEo-*Bh&v8a*ip$I4hQx6>8X{NT@rkhWGlvgG5R>G2P)MA8O%k=QsM9wgp1hSt5-LS zEk;>8&-RPLv3ONntWH)pJ)-m3n%8;h*1cP7yv@Jn7sqt6=_i{TE$vq!)e2||FDeW! z;8Y97ZwDCW{?yxGjZS0Rd;Mvw2gp)+0eBQ97mI}cc>Blx24agWP-b|;gtRLReEU?9 z#yo7c+c-DR%r|KGeuHp*&SaK5!UUE#uUXVm+sHVsz{P%~hv%0sN}$!&%I5)j_P(yM zwF0}`gM;Gh(YwhxIN|&z;ZluX2KCnw{R%ixk_6*tK)|o6OS{so8Wf=9YKrUmB38@l zm?w<9TYb=&6u3P1yVL*&dI0JeB!E1JbQEtat&r`WUt`tG9ggO&4MMcty`&hvJc?mv zFRPbk7On7L1e1*pw%8C!p7Ftg0X;{HA7}PH5E0fFC+%!Em2a1&qnYI2EpQD=Sw-?q z^Qd_g5b@ROaeke}@O6;tiZ(R!cavc!_DN`Jo^@CLFuZM=65|#5<>F#oKQYDc?kT`a zxDkkux+{;^?8Wc9Q6JQzs zUW@c4;lK5uz8OpkO>?Oh<|px|fE9yMKP_HbVfKo}P!v|R`2zJgfp?eNrFCt--hV;8 zbncc7yFB-I9!=C$q+&8%iOUyX&$6R-|M_{8_8q4o8E}r9RYVNjpzfY(+)pzaOI>5+ z7LHEt?W#)sKbx6v}kDo)^;PGzgyqAnl`3NL$; z`ZPktGgoaomih$mE+49KigOXDy*8SsxSaiMpgF(mk0wFYv3&KfdgEuWQqKoW%vt_3 z+Wz*jlmN}`;cBW3NpdaRBCTWi4crV7_Kuo=NC9B)u%_y9sngg#E3SDmd1^J)dRd8R z*3?WV4*noM-Yj<@>$HE z;iIE(;~ZqaBsw5AHhYf#M*9&(qB|;S!K=mpYhWra6WhZ+SRx!tf^aJ+g`n_KS9%*Q z>ApfE^}Sgo-=1Xp$KJQy3ao{N`c>s~dd=G}Iv7JH3`X63i@18;DNkh0y}_XTARLF! zdrLD}G-M>It6j5jkuzLszo?_pVm0l;2JW=gmY9uE=K&9~l^PiTWyo77S3Gg3r0~zN zJr8ou;&&H~_o7?NT~JA6_RWQpnU!wJ9vgXlOyeVlY>?D)NHe?x2*)x_UsPjh#5nvS zt37emy+x)5R1a0N&Ih%tCV4ZtFV}H>gqx9~KvuUyL5C~< zWH^L()9$>62bj`zAy*8CK>Fdk#)ivj^|yAPu-uw%Tcc^y<43HWF_?}#DmuTmAe4%N zgW0AfR@K<8k8;JuJHT+Itu5H?nH~KYwSf{txV|b9-gxP7ku3W0$Lr zEYWG5ElVy*&SCfMrKTm?W~U^oNXky{hyLaF;ln%;AVG?hhqSwEr!55nKtv!A2t)+_ z`uCsnnRDYuaS$#JUo^INUpW3^5>A7~)!~a(a=F!b_u}t=`CA@4aw_Bk&#SXyA6;<`Dc2K$_>Hlm6iF z#j$(ZX@d3x7eKY)i1u~?_IG<9z=tPbWN!QDI|sv`Ft868>~p)>`wlTwTn9$11^$w4H{|B21iM zF`2EVz7ryO-TBQxf9b9mD3kMfXDz4*EvCZ+M)cTu_*w{6pdKP`d1KN?wJ50j)E z_VXjX2+7!iB$nXsNwYJ^!+q@qQE|+tZo6}SnumMtPlMIGEOtxj#GSOu%Ba*=(eBpl zF<-8DZ)K!w2sXEoB^l$Hw@6A;adgsY{hrrFave;5l)~M!K)uMq3~|r>&%xke-4J?$wNh7lA#3>jB^=AY`=%!3u9cx zz5^H^i{nD@V6ZBhr57b&`a)~m=e0juf|()Ie*D)R-7xw1M?ebWzvU0WTijuZo%#TC zgwVv!OLYR=2#VhTQYU_N=}iD>0S2@LAd2{va~H0hg%2bFqQ+7zAW~kU^c5lq84u|n4aiH9D7aXGIpo^% zt7Y^#6FpBnJrJ4-6)4d2jLUtQEe7@qsD`fkyY&{ZHTMB;2M}#qbDJcX}<#B>M;Bo z`}f4NCu{$~8_nwZv{^Rs8`met9`V|!hUK(b*HQXj>&fv8UB1=8sLlG0gxkTV$e~^h z4BD*Mh~Ke3ME>B*t|H9g*T5FnMIx}>9Ywn{JcHq56`!b1M{P{uJ@mVHccGH%s09F6 z5EuGu_#MWH;czYIulQ!~ZMbOq?Ofk;wzwVGe5RZ27rzlcy2Zrid$LtNQSI-cy9vr%Ne0+4g_x_;up}BwX z_V@vX?tR?bf2^T$=Az8Yc2Dog_4cDDoh_LFe;H!6u{rS+NG~{?}f? z7MqI zaxkRQ>vL321q(n4%fXzSgo`-wV6Uw)6`*v4DHAOmW3`(Osxsm_Kg+_@D1eEt2tBU7 z0=SO)qmwLL`)ORyVNB0qOq&X08VYtPSJ3%3Pdo6gLa^!H^A&SO+{`{Z5E$(72Xt~9 zN=G+Ica&qr?&gDM_QZ4BzWqUs&h{}d1a1t~GNeY=p~R5Ar^ygIe{KsPWcHVn^c%v4an=%3ZuhpX?Ld#mny$_Yn8`1nCc5E!EQhexko0EB%q< zs#*rzPb$P?Wx%LkawoorOYVnFe!Ke}$sT&X;K{n+vACouLv_g$oKN@9e&WPQw37E(2gNDByFTTYUgQDd`OzA*8v=%*&xy}GpPIv9aW(U|TGycW3GBSHmPuKA{)MKa$48^5JbV%H6KEW5nu##2qi|4giB6> zG9!Qp7zxUZ;37Z+MVOn=n%Kf!xN?HP->GuKv9s)ZS#i+#KAm3E^LPaeE#6LjG5Zy4{RFVF3cm7 zgz!*olRr91{)}z)Bc#7cdT&aMN}}{+wZ^_QC^hi53~j;DBMwRqr!gc=_d{!c_n`IR{kxCu$GuklF(mJI-&*ghk1d7-7ed-p1PSV` z!uS!nJW02y)I3SmbP`LH93Nx$6e)nxJ$H+CaC}^#gLZT9dznr?6qyC=fcvmw{4HC#R1OMfm~y`0jSQ{jbHkDL9qSgXZ@l9kkF-p$-aj1OBf-4+S}arK$k_ zuP2>RA*sbb1$rpXXFQEkRfu@+>}#|qjC<}^)D_-d1EBGuL4o+}Ab%I>NSrDeUV^Al$2LvQ`}aRpFkn(de(W2C9wy66L$uJv(V)J^;gFu%`&K zS&X0KqMqZT>W_;eR=aSyjRe-Zu+waL?NtTMrc76*ED{~GPmo2(om@GSHtkywecVrwN%hza zHWj%l=hEX?N_oM5DHc7PfXgBr+f=}%Wne=Iy32P(7PQB=>z*@N#Ys3vYsJB#9+wgL zyMVv0Zk{Nin2mZuF>@)(LNW1$o2?RR(QBT1!Y}RVDTZI}%Hfv{ORdB1`B)TY)r2i% z%oZbUjiUM}NPE;huZOVvzcOK^OKlTGVc@$0xy_V=ub8s3A762e{C&OVd0K z7l~Y6YVU1p_d%AIdZeL&j2RmY5M+JU6(-n$R-ii??>7g)Bp*tlFRc6V;2eyGfJ&hl z`^_i{Z{q@yOG<~SXfpdwKS$nOnU0UU&CkUrdOY*4O3icF`P?hs-7vUXlW!Ymi)*>vQx~4cX1@Fu4V$beY}&=1~*O5y2Jcastd_56p7p z|19!=EbG_pwF}b~oCQi#)dd3EE!5dRSKh2lPoI$yKNtZcy-0so$i$6C*Ip?;3cdCR zg(oX?-jCd}Gw-_KtXXi{z`Tyj&YAXCV#2iBHD;SCqnXoXxjsg8ffnfs9A{c&eU|LC zFhN0=MJb6CHbC9&WbGod*70YvPLVm`KJs;3x~Fpb4fO{O{sSPI0IzLt{?BCuBodq{ zi}pn~Jj;#(Ft4Fsct#nrp6Y@>m0`k_ivF)_`NV&39x z(CH64BV9HY`^s3@RxBV5Ns>XWB4w7_om00rL`|X7Cok(p0Vk<906nyuB;?Sb5>RTB zjfNv&^XE^Sf~l5fInKzpUE zH)2P-ITF_{W?d%ibB@t-j?pG^j0Eq$5NM(}P;D;G7E?3_Ct86S!YwuSlZwjOy>IMR z6?`K3lI>$p^c(Agi4(G7qHQc|Sw`AK5mnAe?yC7!n2Bx{>g1zMf>VWj6z)8J6&9k~ znmSo%ll)X63x#{6UxtPFI;u`4+GIvm$wcvP?iXX@UY&fj$(^d6k9)rsBc(g8I=N|+ zU{xJAe_wU}7<3DPR3t8z~Maz{uK z`cf+=H|y1rqH=y2F0y!{S~h#z6}YPo*3bBFBFP_KC5eb@6b|!nac)57VKl zzXBs^0zqv|tnuwh4HM6`clKdRQAm; z#zvAtQyVvHd`LN)n^J<$ufSBA6jd85YkZSj!%8_n>{nu7-AmHKaZ>{yf4TJtQ>SX< zp@q|?LLUA~Ok;VMwefDVu9{Rz=r6*?dUfb#oi%cf?Gt98kQrRm=WP}BZxee{T}Ygm zv|QHJ{U{h#(zRyIHmeHD56rFhSeVCi)@xy%RoUh0+%ZZz{ZnQfy929%YgX?+RmL@` zHo;S7SPcI|l~Roi&b ztSG7D3T1*?J^NHUPaa`_13y#LbI97S(aBMYGmqjBMGMy0s;{#s2%{jmv*JjNDMh>D zKGP_w%=oMyFl+G6SHt#i^^((uRoH{(1TSP`!4GhXM@3d_-Wfiy@i3H(rYo|;^C~+J zoDZZ%P}OXxF*WDmvLXLL8SUBR;XLP4WH;Z`b3P8XDACWMGxxXflLqj^F+2z%5Ng&) zAoN2D2Fn};e+J$x_|tc$!Q5ZONXvVRD<2|>lW;kPKEo~epK%o4l1>}jny)9}Y&Bnq zUwcuK*WLC-f{Kro zSW>%=r;6-JS@gvcT*}b!K#7JVNa#DqeAzheKZHd<>o|ss*_{K{rvpF4l?VOhn9181 z%ip19`GnClMxD6bA?{6n5JlgD)XMyX|4A=u1Vf)hQHFtg10r!;?}}v=A}!7kV4Y$T zq175JoC!5wy%}AsPL|Ycp>5ELphfqU4G~nVf?6YGalzJ#Wwhv$e-bjvD%w^rqD5aAyH637cW_26 zw8_B}(m;02X^87iJu!2tl2lTbg%>40t=YDJeF=7g9Gd0iqy8{{TvFxlJwHGXsm+D=Xy6~5H=}ml7qpo`_v;liyTW%s6Gs)5l6P>>dYG@|ecaoB@#tR3gIw6y^LVhc zy57ZuxYN%Fpihw|F7|>z8uhT>?X)d$$KfoP7DfJf02Zv<8;!wAcbfx?Zf3#4_oCAM zoHdn~arC_`y+V)SAS7qdYdPqR+s(o6?f%!EMK@C~`q2(=i@Z&d>MHd_mAR{ePf}^R zvXTVcRdHbuy8>#d^9Kxj>soer5=OzFFtDu1Ln*0lM}zdMDds*$5!fVxBCn>TIy^tK z?CX5FPB&n;8FgCL#QXw`g5yDK1*5Okfc8rD5E%6Ei{Dp{`U8LU&Z z&ca5WS*~o<**Z&`bY``-NoVC3H|ng=>PB6zzr0b$_Ujw9{j0Bd45Re z`5~S9AJV~|0p{Q&YRD#{X$Iy1wNh1i#_xCEt{-G3>&BuHXI#}jkO&)vJNgr>rDF#Q zYDLeeRGCUFoUQHI#Wv>0!6)besF+Ket--*36HkptcIg|1ShLw$LuC>-9tUew=T^mR z+HC0y+3og}S!Gvnwh*f}Tirr-TRv@8b=noPYO_TwWVi2AW)*i|Rm`x>R<6*w&7U&c zi1V*vo^7^LMe5q&DKqT+tZHkp;uv`gW>Kf^Q|1%(JXg)F%^L6Ni?653GkQH&HNQ4n z8dSbHe9F9PRL`nS7XcNnUY{zb*adObyxOdLNx8dz(%h=ycx>|oOV!+Z`UhkdqEI!r zHe9Pyj-GhZ+^X%6Z1bQ>)ja!Ej>%$>Ox0}LtaBqBzw@MdR{c?VvwjUJ0P0C|s;0y8 zhMz{!M36mIuJJgxs#&&K|ArcZ_tf}>5*4au(MCBWq)Gah)KhClsng z<7um295t?v0z7!&3xI|r=M#Sr;&8(Ie#NH%?fK;HzxtB8D?FE7$}YQf3D!Ca=oOQO zW0-L|hF{^tVe~7n!xRw_1#Nb#s*$4bO$vm!D`XTW(P{$2fNQB#=YR{F%Q`QgrlV$^ zJ1B2sYZ->K*n#;#G_MKgOZB@XcksB|{469=*=AiyNoK>=iF@jfPn-W&+ZN7>z{nY9 z-hYQh^1^91onEnSf<>Wj&U-*x!rXvyyMKPvB{^+Cmo26bXE+LF}4m@TM-`>>@BPAqJmcDf}0 zvC|th2)@0{Mx9Z!+i7VR4AkAi_};#i2H5gu!9^5UjEe|vwpa_`oj=^vBpQwEE=GgS z@9yYi&_DltqMZz5LH4)fQ=o?>rqq)&31)7{nS@HY;+)CqRPkmrCf69}bH?Oz#$=@# zlW^kav3Hf_Ye7~mG|WB&Jp|4N&^D3H+|k)NKfZiB1DdykEI{H_0CTzZqG_A6=x-3m zUw1TLSbKobsCXVHFpu(0@1t-wz2}T38^;gS;t$2qCX=}yKXbJw+b8B`Ru~|e?iQT5 z_99^7RFnr>mJPa_GJcdO$|J$Pdgx4o2cJrrWOXG|9h3M$>QC=+d*qD4K0%AS7H=NR?wm+5Lehakms1?3+4`uTxYZUzOlj|s4U0vUILf_+7|IGf(r~3I~>PN7=+4Ex-$MD=#zIh-^zoRmJxNy6FaPdd01L6GRui5)4CLNqvSS}dC0YJLG0=`nh1R1OY)fBZm$gCFISR1#k{79}k8 zTIC~E;UZ2v*ma8_AGgj21Gm@uK6cLs<6-CYtSg5o$^;N2AOGWjgC@>@{^iYI{<6Eh zyF1=8#X#oud_HVjcKN?iXKVFTY>v2t|4sTSJJU8;F6cj_&Z%wB)1CRwopb$ZJ}=c- z`}FiX__6H_^ai>!z5`;@Rl7g3?5*A2K0V!rZA$fbdfMro4{c|*RgQkA-wXD#RgQS4 z--lpdI4L3&W%?;LosyG*(%rD^0t&X%Jl#1vE!)#xfu24A9lKU%`vp2H+s8q%36<^U zt*sEO)5*Kd%;mjhH^HZPdsw!U55?y4f6DaptvmeIuoZy$d}})0DyOYcN46pW)Eek( zjgD-^0CiNl7h5SAXOlj!bl3(3PeUD?j;?yid7ifnjy zchE4IPKz!ojM1`_-BQTMySujdfz4R1i&p>iv^gHSXSUlaHBr~>&Q>5wTf}GXpyl>P z&Cj;x@b3Rpx`$$n%IpW{mytsS%aGFIts!6POzuLTI0ZnCPb*KIdbH2YRdJG5vZ#zl z>CbM@9Vl--W*jYx$ur9Iv%_pume2WL&-q{VznG`EGR2Z$MwgSd$MX_-JU5z?)o74t z40b!PmyTRAIK%AYX%wnGh?{PEPM!}fvgr!5u(IGYD;CPm#b1bX^{v6m3SwC?Fw

    $UDpyfmi%$ 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�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 T=0ByNzi#TUc1l1aeZBo3mt5N- diff --git a/build/old_releases/ABAP2XLSX_V_4_0.zip b/build/old_releases/ABAP2XLSX_V_4_0.zip deleted file mode 100644 index 97d6071dad2d7d0e0fd55224d6fd627977f93b64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914685 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

    S*dUO*NNY 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

    Yt2nP;b5-iynFCjm&NJ#*sUCI6{=tz7o= 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⁢EQ3%I1nhM~tkqPdPOMPXT9M9vEhU*|r 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

    kxMC=I4H{uZ`1*mGUib40;*{J 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

    V)IMEiMav{8 z+!LTX(rQ600%A|GqCeSFNO}>roypD>{X{V&EklBk!spnAHyOPIChP7UedAP<8{nW& zv|^=x@!X66NB2!oD3}Y{H(6#^qDZQ>2|W7pxsDXqH*#AwikEC1wU>INB>Y3mkB7Ep zzFna|HmO!!wAcv=liRu1G_6!=R>1Qf`T{?=Nv@UTYs#OijFiy3G480uHN`tHN-Pi5 zf1h1{xhRdZ95+fS zQqPU?4p#G6jrLe<(iA63+xXU$FUbI| z?YdNr=DU7l$$>;B^m~7JM3|}s+6H^3%-wVx&jc4G06HyU=I*5rtH<3o0%{0+#hy+>JV$IAK7bdU8l_9g~ zy~Tyq(`%;z_3HiDLiTQ4T@}Q+NzqsDbysNPgPqCyV+g6WM)(csw{}|Z*|6U1fh&dZ za2MeKy&22Qy_rkRL&5uy%mgBP;ewe&7^%0wR5ydv=;2TuA9n0O`X?SLA}+r87D z*G^nt#%q5@rt&!;3gdp&GR3{`vBEGDTm&k6n7@D912WW*6CFpX0rU`7)`(j=V1=?g z;aC1J-|S3ZKiJsNF*vDH&E0%AwxifWibJ3f*rrp9VhZ;#^ne170o1-#1KrJ4BP_Lc zs~%7?MQ!^#cy&Rle2O}XmE$L|6=sHQDaVlE2H15rXd2QHcQrOri9l0wLoLn zw!wc*PQ+J}v&6QOx%-H1Z!VX^0P4fBdzCKh10C5$JvSC?qRgL$}`0f7y?|hBB!s;bT*SZ%)tzjHVWR0U!L!XlbF}C z?vRwlHZxLke<0i8Th1Rn@jjg0Xw?rX`?`&`G>yZCF^4FVF~bXKHPaE5I(EaM{JiQ=L(o-G11F0`Sh|V zpk!B7G#v`QaJF~&$7MWVfkoi9L#*!bZ%DzwewTEEd+8n&SALWMR9MMt7h9Tc$qN*j zatH+%9sbnm_*_EB)ppu-p09}FGR+Mv2Js4 zpl@rm?bc$(*&WtEW5WZxMfrI(^16S>A79)O>gfN`JkF`FnkNmNQLuxt%aIMm>%CrL zhyZ6at$a+v1iU_*$X5gU6b9__?ao^k6|FpJ$;qaDPUZD`Et-uUXM+rfqk;+H?}~3= zqQrY`MX5O2&Z#Ob&b!a(L?rn9N@aG_seKlI?< ziu&M5u)`M>IU({cVyycnysLa>Zr>njCkIXDF5w-Vo9Y55ddY-|XZk{TJRm~2s5&_{ z4}g;+y)i~>t#v|LV`u5vn^}z|08Y7g`LY~fbBj*sAIaRPwrrC~aVAh5aPOSGLUzmcoj-ns?tuBJkl>_O zG9Vw?sepN(!%@euihaT7hfKmLYxHc+_SE9>b$of^^q zkQ2c#5Lb2fGOad0PndE$Z#r+owSb&@F4r|)ld(gyoUUp&m2=A4*@EOB*#LK$O3ltGF-~reYp@lpCu-f(1;Q$knNq09&~POf3XMNa6rjS<(xekUi=d z(IIKNjQ^*OAX7DR!T%?&Z_vE+v#ZBm0cNIR-deQX`#;sdUWHK20HVd{3}N#;N{(c6 z3B+BgMMa8|(P>3hSU3QFf*}&2rHk!Mf-3e(T_u5saGxMD3>16f4JQ5Dwl+T!sE!}a zq2RMqW`s4McA?{Vqh8y}&}_cSnc@caeTYUoNV!t?rVO6(u(|~cX2sx?J>o2P`B2dhQ-i}Q| z57Q1~NcQLaNhBf^=>#k42?Kk1J=4q6@v3f(y57p)yL>r6UGrsAL`~6KPgbsub&Ii_ z3;NYx7wYa$PB-@MI_u|+gCB?0n&&Vc>v8)NM47-Dy@WV5OY9PwW#0EC*w_hq*0|(c z?X^~z{45(vMzwO0bBV8PSX6RMYcd>ey%s7i$)zMcgT|?`? zIPVP|?}xK`jbufTM*4ny9AWU*(the&KF-MbHcMg&T)Ma!SJMpEuhtq^KNvPNS(RXq z7RGuUaD5{mX7rP8HL~$I)HxY%O&C(UruzIR(AHh5tZ*HSJUkeB2+xXQ6VBAAHRS7R zXtbs+;ZS9xKo4rz+RQDgpXX!11^z<$d2UNpCN~B>lnCvT?q#F`9(-Kq1UANeu)`?{ zW<>p;uD1QfoJF^h%78*i($6T78iV)l$iMxZQ&hD&1;eFU5Sk)A6Eq!bKFsz&LoEUj z8}n6$E}TDw-XHSPx5w@8owY@9h939@9j0AJ0?4tn$6xE?YJYQ!l zx;G(0ki~b1ESVZ?l2DsEjS4h=D;QvwUF>Q?g@*h_?hkO}s|i6=gvSMvfb6~65C0vm zBLbC|Sab_T6{zqBT-5|A8I{m#2td!N&_=JmkuM@rESCDcjH1&|u@zp&b8aX<{mY1z z+8W?Q|KH25`J-B7VY|me6IBl+U1>{}59i}0i`~?rOFtvt8kr?r8dxcC6ihToi7SI=}a$^`w5MfFJN8CK_o;;^2+AJ|^sYI}<=zt}IZFYPA=DVeu!e4X?IFAJ=je zblsD;n>+~gHDwi-b((VUHwZ{~d;az3yZk+^G56d2&TvM+MADi9=>djvr*SG6T9a1M zzAg-(=+gf~&Ne#9PrmIF0%z+nYb%6)u?I%0flWp-)v`=GEuJt3fF<1N_jr_xKWe`suTJGJ?S2XlBHfqe?&i zQ06A_VjzdvT5zrI$jtNlaO`!@^1+fugykB2*$IPVxnrGZG7|nLB+q#aOYqFK{}Za{ z^9a!eA-bjdu^1h8Sk!>KQ02f<^lpyOpRuPty>|+^r|9@N zy$8 z-q{MLyWZgeTG%22^UDAz*5C9wf7$+AJjXy zYy7|2AVmk(IDuJptR4$dr<2v&nfBs}IUZDV+H>DOf3B*=G>lD=h@Z)k$TnXpTRd5q zWZBIA{NDFs9HvE8Zq_!!Yox|-jPmm~2qvu&L0hgJ0e$jxgUff={xGl>k_SL8_N z-O!a08rxmJNUu;a`S6tPG=n%F8`Kon>Q5isZRS1O+hHY*)k7O#&2*77lbP}DYMC;d zXZY_^Og9fk{Ean=u=Q=kJv9wD|c6SLe&v+B+tZ~JZd4E^1cx=2=r5Wy7{Pm14i63PVur6{ z0Y?dd*jE5;(%YKEAixV@6gYXP4&65PE+G({J?I%WkN?^R^rDZVjrRT-pL~D=@lj|D zZ$FHm^qv_>9Mf(f+B<*kpS+lKytLKY>_HxHfV6I&60vLmNIcXf-n-gaG0&9LH=kzhT^S$*c}fNcwyMQ|g{u_o9F%22rPM$~)0}k^ zIav@w3^<^Q-Og~{X|rcxjR2!RB0oNaBrm}-MKP31+P+E%)KSPlwOo;tQn^Jg-_c$xCV(Lc~ERRc)juW1tqu`8kHv}YzFV7~k z#v`{!Q&Saka#IibYU$=tew3cO^<)tBzR)0i+iS}^&~w#3pKx~T$y+I0d0QX#?v1j97`4$(Zb+M3M>FyGb76ko1YbCruAvOgn$#!D%0j2jhRluvObq9rP-OKyc|jmWC5CEBjm|NgbbmTnau3Lhy!(e4X@C z@(^c~-9&P&?(E5aApwu?n+x{RitrJ#@^>-sZnXMgN7_-@<+QKj-lt}YJN3@=NzlJ4 z6!`a?X$?aVBb*2##er&bp9S%Rn{f#fWQ3-zvL9x@;ou1f32j3jkj?l7y0rrL7%uG& zVAMM`(ls+;6HG9I8p8HWf4m|64zj1j1?~)QZfn_BIlK!6+i}zrNrId)KD=^Mdb0;s z^Y8F0FMm0tP<5r!*3Xjzr^a}IaUXj{n+)IJcAF&3%J!Lv;AMmpj!F8Ae#a9;lS?m_ zVDu(Q--<^si6~*T?eJ-4=HIAs2oxY(SF9l}nr?Tn=KPuG&cD>HM4+P|VWvKAwRUCf zbDcPm_I~S2+rF0b+qLBjrEB#zK1G6zK#7Skybkww9WK3 zatE}AnA@s%Od54>TfOZGHeGB!Ubh%`4!hQy6p;RV2mHCdxFz`&^4wfkZau-VTmLHf&aHucY*U=)CX*@qRX2RT{7vbhCB1^R)E%%M-k^6um+9 zlmF4(HFb$Jfx%U>`c1gq(k;0T;%LuN*Zu^@OTqqIAV~vcVaOflaP=2DubSFdM4Z{Y zzGs`PQbh-4n}NA?jBGb^8!@Eo@7-6|)W3A0seSTKCrVixkr4>ndyQs8Kjq>w#nla< zJSiobrJ%?du4{PLLGG%!uw7W2E_4pdz()FmJ+GvL(*&XT3rFwpAeB?epPMv(X{$L+ zUqL6yey}J!{n7%jjL-jC$_6!J*rWzteWnLxh5qcZjm=SuhEBo#f`l+^5_d?~ewDFT z#Qe5Sn;UJ31f2i3Fh3StGabgLZXW4g!A+6rKE71~(PB+h;T?Vi#3?v=XnE{<+3eaG z>$vt<<~6yW5q?u;wfNNbPy?sSVo8u#astn%%BpfFfmQdCucO674$jtL5+vW)??#09 z^JsMn@UK5(fD|o3Befn&rxs$2=anAid+E8|&8?#JB|2I}H{i(of0>YC+8MJv|L37| zK2V3;?z42dH;kCxGD0T^nEnq zsso-uThBGmY@{&=i3b4FMs0*ddat)S{)18P_Gm2`6_)h$%q#%@n*sjzO+ZZW&L5Mx zw8&Gor*K=}DuO>H5BFPtSVrxR1Sg-&NOFJ2*>SicUDWezdIf-0!#x5SNp%j;eQoLbfmVO*w;TOU6Msg&zX2jK0^Q)J~aRu#bSSufO0TS_-gAX|iOldsqC z)-t#Y)Vnd7j;CPS6j4QLT0fk37S=I;G4D0u=UxA?T*AF_^NKqql@KdXPVk`9)_i|abiekfIaO_yOL&Wzg6SaMVU<-x-?Pt+oKNNav8T6kM zxth|}4HDp3;mqniWkqoM#P+5fwKZv7=mNI~bXIQRF!Y1@hO)iP1qxdpgEdATI)}(_ zbi-=Oog{@szF6lDXXQ)#X5!E9C0|mg!^pP{=ydhGbt@MsOfO8Om{?9G%uW;Z?~qqA zC(`bCrB)=y-aBFa;gT{R^W8Y9Fs-UbkOb7o@md9s{xGYMl`^#YCBaTklgUbb=en8m zH*9(3s;`7|0$|J893#(nT%RWHyDc8wjYGaw*s?Y=r@U};~4$#+g=MH|FZJ(j9FXm|T z&LW6sL7bp*`k{3f?>C3UlQUc)M{lk2VY4thg8!?GdF+2)CV>lKk`u`KA2G^%H6f)* z0<&EHp9y&`2Tz|;TgT}vS^MLgj6^1;;Y80LiK2Y^*oCKt=Td{rpQv{4RC*M15 ztrjmU9uq$K0#C$MZ>}8J5J#Q!_w1c%)D*bg)u4K52ti%9^VlDM)W*Vr~f!OymA zqH2Z}g$DR`ld4eCROJwo#MxgY1oE$)l-EvK!YF4M_9$of@bO=G-&VN5*~FOc+90JT znQrHaRZ+TUV z{hp#|7#b`mSC78wxo;9`n2m-R`IvaqoVe7@i@~4B2UjRbF4Qi_yleEtas+XmgZT$3 zmq@w+SUBTtXlxblXgedS2CcNrKCVct=AKIjf=vrO2j>u8DX)fT8EzTfAANAM;KuTf zOyiUOqpMKzNMG6BW@Kub#p_X`4`|_Im^cNpHH`IoZK&RIzD!TWrRsfaEfoAp;*xC* zwH}c17n$!~V(hi)7M$tAwtq?7?cPWj{*x4RlUN#?7V$3i7e3)?>dNdpL&Xqj)bDmyv$X2m?gEm3;9bvkI>)=Y* zYLj4VZ2CnjZfGJrACk^_KHiW!8=OOpe|?Qh?)r9(3InKgzdu5XEDtiDp&SbSqmd~J z?VCag1wX0BL&OUV`3?zzxUlZq;P^1_cYDH& za<~Ij32swCr%u*}m|VdU^@NRYw3~DV#n_ELgjj1~`q@{&ZB>VwucX+^SCSuOYBAN4 z#}0@fMA>5EBz2&@<*QS}CT>=js}o>e1NEYdh4sYD_8S6$it5W^9zXmCM8uaVmMp)+ z)cw|CO1RNfW|{H-3w_~&u%V$01b8570?@}5BZ!^z-QOxja0E()N2vc>DU3^6qEqj7 zDU8nN8%E@Y{TwoCcy=8K=TFLn%%Vs_fUB(lch&l#y_`>4>tL+SpsBFr0&IM(+cM=3 zfO+hWTdeV*@ONx_V=bi5<-TFa6ksi>yE&&Oy#XfHnOeLDC8yQ6SF><$t`<-4iD(Um zfVIC3DI9#-bmBfTw{f!Rjry$#YgiM-rllqdm}b-MI(b*Si7pwqMPoicW7{S0VqG@r z=JayWduS)qA~-_+{U$UfPgnNhA!v{vT?oekhHCZn%`!|xR>T)w`%N6 zJV;4;JO~_xvYD9pEkWWwXJEql1=^(wSEg-Tp_yJP!1C~%xj?(&EH~|)>-DK&#wK4P z#aVn$5ZunT7ylsO_mneXqKd`}wn3fwu&<)`m*9^8R45i5NH!)0CRxit*3B(%lfNqWqHX{Hha$AKF^o(c)C z?iv09|3|UHm+ubfZfMck+LkIJoRnF4RAztI-z)6)=q#F=?c>~8sy(87$<|;kbSa-{ zXMB7yJqYTS2*67`a$+Vw`t&!Ild&|Bb*>@7SO7tR1r+ThaK6C&-DnS!$4tPUuvGcD z6Ro9FYkp@={@5$_IKk;{FZrt@Th>DL2_ISyO;pmQ9Pm&~yQz8Lz{RG+7<^c}U;HT% z&_~o39(P1HE1?z}s_mM0VL7KNw-0||(e5@Of4&YMH;|J<$ z(uRrBf9$yQ9vRnTc#s;|_TuS2(K#?%Xb+6#1ap*b4}2CiO`Xa0RFWW>Cz^d{tu(@2 zB7K)12dGrcq+G~PMbQAC%hOmpr`kn~i5`U)#r{8--;{JU4D)# zGI?j2*>f@+M-lJqbKy7Mtb3B~ldq3B=9;sMV@P{z`>4ule76|EGv3U}^R>p?16 z_JE~Kh;}E0(ZXi`0Ymt$t^Fq|G~JIZv3Cp(u~me@-+^#lCu@({3RWjJ;m9K$NB<6Q z4aUPpd?mEl5KDOXZU`BUk3!QRj{P`2H1-D-zTJ&~#yphlhIE!pY)807jjCd1y);F= zLmG*yb9iQ+wqCy!$Dxz(sNt?HSJb>M=!1;fNT{+8yL}-2)4?yNTU$TDdUUVy)BU-g z^Gafo^z;CW>6}xxi{zIe10inLIRZvi$u1XPnT-j3tz*3cxFx*mI_-4(XoLCmgvw=n zgO|VoR)OruDsypTeo-Fg5h*AB^E8s^;0fKz8Q0BENtMumj8oJ!y(F zDhNt0GLwI7iy(wjL$1`L%Mz2u7l|Q6&Hc8hw>zHAUE#|!ZNt0LfttI7&0EE=(D3DS z+fL@rBSCYw5xuT}(@Fij3()z__WgDGBc!?I!_rOM-x?IMrPodvk1~gX;kL`STsp$< zSZ3ftO_KH$r?EWS=ngSP09%ahf+J!gryfyV3VgNs-O~bliq08U0zdS=;a9WeK6*Q0 zake2OL(}#R8c}Df zZWk2%t?MI=OK$-krRGvK>LFNHPctE;WH@VBU%1MP0#IF7? zj456ZG9Nb`0@fe<21+n)CjtSCoz`i=@Uyu8(*7!6bUURYl2W)z$`_x69dVQxZC42`qpaF1QfP0lp4RqXi7 z2e3(CR=YGZFuRTpx?0bU%c|Nh$FI;Qht}3fXE*+)hN=7VHY-8(;*aisLZE1;5;7)CKsGacFdgx7(k*3;J0^Lt~FpRmY0!=+!XoUzOnO0y^C*i6j7YdF&N-P~J+r zv6q4pWhXt)xX`h2#pZr_*nu{r*uZ_m3-=9;e<-Q)h$BOf{=y*GP5DVDsM_o=d*K zML+v7xfLXHvHP97Jpa{uo%o4ju`^}XBX^^C&A*U4^{l(mm@db02P-59d1kpCja(l^ zNH2Zt<()J1WXW@pG<~g|HHWM{Q|x2t!!)_yM0-SM6Vg@uBV;z_U)(Cx&ZGr$QszP+ zj>g|xBc@cncYb63EFSYWrQa5&6>AUZx8k@j`oK)R!5p+=)D-f#U8(&dJ?OePYQw(# z&HDn4$Oen-FZ_|<-RTl~LhwhQ=!w#ySvF1O!1Me;|C*c5C8~TJ%4g?Oy@I+1Td^yr_7 z=BbfTB=g^T^8eomcx(z@?#Mg}pg*o~m^DK1!RA;shaFv-d5Tnw@TBhS%Cw>?p;cSL z8gGLzoTcPBaDMb>Aa$yZ)rDDpCBS zC&hOrkDsz_PY3Cvp&)^_?AJFK>f8}v$WCpzGoCfyf1!W+(nL)b+5S5lU3CmDk@L`3 z+?awTzgi+E75AMTGyw4y<;GTcCu22PA{LK%aBykaWq#@W`uAb_fMeN%d%g#y0c*EA zuHSKl)zYl=6}@j2aPrC5ghI$Hx!Z3C(#bYSGZ~f320|pz7pwz!2_r)?JEZ-={ZPk7 zbNXg$U+@GN4VZW{ag>{RS^EYgVZ#pPm)v86(*TyvVFaBsq+Mz+^% zI9aPc<&u1azPpjo?wRE3@hWl2tvOXt^*q%|_HBU}FR5b2#Lh)t;_dZ|i$Y9x1m@7% zUeKS3?M(A0%8i0?6OHh*c7rVqc!6`u=EUtWyB;f17>#S&X{+l3`WC08+1+2Qo9#f& z(ZR|bS9OkSe}Yjig(VcjkuZI(Frs&@{bp~`=t0+vAG?R$IO=&+p@-T^p{}joZBxUws0$JDfX~J91DrR8k=qIL9sMDMgsJWdF)GKmOuPu zL_&@&Z#bxZHD8xaKB=UIMyzJOh06VPIg=FS*8=Np6<@WD%1}YRZKoE5;nfIW+*VS8 z=(9lMmcK&vqEbU`_No@#%;1aUD?oUd(ML+*v%1bZR|-6M8`;+Ad0AY)+i6#F^2ORv z@(dJud7N9rc-Gm^N;;bm7)kBGQ4b~DczCRh>pA%(ECd|?u>-%`;TRzQpUh(CsX)Ke z!@n`_vdRR?%J1KgFIQI7{h@wKqwalOz6ht(Y*heLu=KC&nG7s4wO))BeS6mmQW+lq zwNXpOEI>H855^anl9%vvI~)Qn)Q|^OAYW+xg50~a{L;7Sy9M{#CR(ngTBgpiO9P>r2lJ!&xK7pW;`h7h0CW{LN;_kj0Ryfoio{>U#7*v2BBt{f73E=+V1 ztPBJH=Q7vxa`7iA$tfA_r*8Y?LKi8XBglj3phbHH^H#SPMC|tz$xSj?PvG0T8+Ui8 zF0_?$#m=Mxaw5_g#)$!KF^tOZQTO)u(ijuJXE~~L<@R3*z9i|jA={_EQi(oO`KvNq zy&dNA{w$-gFQeQ__mGU*lu~Xm`%(SPs9La5Q(!6+A7*!l+lEkR7T!DGAM{$aQ0wkg z(M@=kMR#8q@OU+hOrDaA^L=XbG9(ZzmX&rIAro~iwAi@8NG}pNmbN8$iPT4O9_#4V zFZIS@&KMCyJs;d(S|4@2`S6x`;#J)WPxigJ?(}HVk)o zqu;!D38nNeTYveto+W*r+8^XNK3#YT2oF{V z%ftAFaKFXy8Z)=-K+?Dr@FnMd@9T#OnYQ}40nde8R`G`~!PvF>1%;<=n#5|RNn@!s zaS>l8W17DJ*};r>!^9SA+s>iyffp#oEV#?#U#~D9I+nA>OP$@`dSJMIIk0M zReZ+p1+P+UxpUC_ECv9#Z0wrq1J8lTh^x|fi>bf`_Jw7=e)dBag5#h@i7ofXgB_#$ z@Ri(HvEr8L)4iL?i`z3=$#%pk@K_F{0{-SVyt8C2L&wziHTeMUFBSR)+`%Lc;`$Wa zs{JpI`@s8s%$bSA6~~<=tC_OhdW5u!Hs1w}J<2pjMeydu9y4*~po?I$h!{y7SmsG_ zYEos4b5LK4*g7}6j$4z}Q~o!LE>-T?#*g`MBu**QMXQ;?ffJe`%c(6^^IPfb9cdMX zhQq($1YW~bF^@{au4qNvo0sHpUV-d5z|P+~F$}o?vYg?0O4S9&umWjSa|h?XSb(+s zH|qs4&%Dg)c|5m?9_G!|?QH`Y#f4NE5))!SK)AWGB4`dfh1PY^hR#Yg$5~wx_N~F5 zF5Jy{r&de*3F1lnaGH{qR%hLxO2&&>TuumPOZEZkv(x(WK%#yvaVETnOS|{a>yL6d z#N(B29Aqg|x>yDmfNBarhiTU*)0U$u1wYEI$#5~&^$`6(WKoan2-Fpqsv~m)0CJu= z$p|OHPE7Vcqi9eK^3B(%T>fy`4^SPkCxG<^XNG7h7@^)91(cR25(FJD0h)nsDzkX*U+`iOQ?7Gyiq-{2J-!6bP;%AhW4O|b8qU+3D zig^jL1F4E3gxoK`Sz5yeR~ELX8J5FM2NNWX9S4`s5*hNU-FQe9!2j}yL;E{b9sVyiA>H}e(POPEYAhs^=MzZK z+T8$Bw4%3l%aS-2Gp>Kx z3w*qR`J^5aGs~*PpzltLfrU4`NsAj`soH0cRkBV&J4G4?lo_f z%lp`0?BDiQeB;(SVXe0i!pjpdt;0pQPA(vrC31_qQgn}HiM*CmqcCM{2spje7I-yb zS>#cCgigQ1m}8s{w%HKb5{{hWE}i2JDL!3rcrdLyl5HhNbu5zAHC_B7gZ}sy_Z*{e z@k{?H$r#bQja0A`4gWTS5z;ft!Jwv(!RgUx(CmqXv%cHzKLXT;m9RR}^Grq+x9A+VDF znCiT^f#k%FIZJ^9#9v~fRVW~Wp*8FpW1+iU7lx?BA+c@9F%{muy`jyOjfi>+y8;2& z^leDq4oI5VR!vv(`amy2M-u+a(ahf|@-a7vH-w?SiwYe0gAa(x9030y6k943ATp?X zDjWqEg9?m)^%p`5h+Nu^{sls@nqqfa{og<+JM7>r7hTVDv7uNy62o!|Q7^;fdH9^q zzSfo$#UV3h>l%|wh*z_Bjh^RUB{j_u33mxT?U>M2wHXIG91l6~QU0-j@$LPSGyl}G zX83}o4?`duTzbE+Y`g5B<*``_Hd=-a{hCY!h07luVk0phO64xqzl$ZA{hh1N#@bL@ zldR^pxjxJ>;mSc{^V2oB<4%^Imtmif_WJH2PuX z26M7e@)v3=j&#tQPp*h%UywK85$3T5*mb^OYVG<)F?T2UAsbqW{r>rc%Jkd~XA3e`eZ{f2N0rCTa(h^;*+@b3@E?noY8)!H|z_}vGEQKCi?Z1W`Ng<}BjRz1c8so=R7R(jQe2Zx42 zqCYpPHovN*lx0W_OUgKt@#!xioGi)%1+ar~PIbL?E}%{UT=m){;#36tO>G~_(O8q# zg)DF*de%|aFob?I-{7*Bz4%y>CvF{?ht3rtMW9-!ZsosEvuV2=5D0ioG83Re^2?G6t~*Tyf5}(ZhZBGOzGc`Fsa_m z>`#g$AY>Z)7N#BrZB(22VtA}Zd|&2n+MANzW`2KA^46wu*|jN$@6@OnZ$o;9Bnl|M zleJlr)Sj6drW?jhp!+oe&Mw%LcI{=Iyf%8UhH!MA3+^nsw0js&wX25v503WL z<>U>JFTE6bcHlK3#lma z6SUi*mXQEY)zqnNrTjPmTjE!T>a|APKY+Zi@zo)X>nT~%DU31}oxT5JC&2KZi2eTi zBF5ixXE+F1;J@WJdH<&JcXgRBkbDW19-M`#og`g1p*5dK&fTNlyWIFsDn9_AH~4$K ztH;b`s4po#;YLNRjcSt(9fk$zj1mR~>r?p}ZXKOo&k@$`r!HO5F*vxdP;7IXwRfkf z)l#E&#Yl^zNN{s*U))8FNY6;W_GYUPCfz}Ma?RuBg_p&-e`8h2&WH3L{u26=osM1EZSbS5t=JP}dvO-ciw-4J7hj%``}fp=1zTcpteY5cAY3 zD7vRA%_5KNC_MVf|9LZ2M$>rPFs`UOIX*4Q>VTFy>oQ0wB?=A7&?}hQDR7So`N;=q z(=FQ&n1%OJy2>MS@vc56D&|#`U!t>oE0K*Ui0V*Ghd)j-YAMePZDCYLt2EI@Z3!A~t$!>EsBAFO{CUF=zVLj2`UcAr9H!>x2@K_#iwCWy~nk0>?gchTs)eVX+ zwTSG%)%KjmaWx6W=kH+4c3RuaPg~Q6T>!LpPUD0IR<*QN%vtXezMiq0lC(>P)QROz zGnu^i_Au&6VgvyOExM&!lcAS*KoZlMb=ndYvvoz8EcIZZGz61t29_5wV{D>!B|n-#VU z5UDDAXNGxP%(p)5ypOP6=ViU-___f9)PGkjGceRkuNua|$VUOr)QST~nQs}u?4072 zu43Qlw!7T&k6#JY3LQbhL>a;Dg&cU(UX`NJufKHP``|f{+ty(~q`tvNY0H4hRqf5+ z8~L_>iT_kN{}}fFzYSP53vWaeU zq0r^*)RHT;=EBOruXy9JAo%Ex?&Ujb>;olrm=T?5WQRHUFUXec&91Tv-wJrPV8Jjh zKkR7mQ$8ics2f&PCo!y}YfzE0)BFes=t6^ZY`}7^==i@yzz;v0#D3xU)b29wFfo~% zTfk=~L}f5L3gA@$=5F*^!^#i*JYy@%@HkV9z`?kaBp0HHJUN1Jd%z6P?N}-sN~_2jjO?R1WIr4V_Qe)m0A1}+Nt8Ds{@Ta?*TI2G6BuO3I5d92gR zz&((BYTk&r!JHz!8pk%!yX+^0i=WcjLxk<$FZEJxm z>SLf-WUs>nhtnY5gg1~FO{diRsj0r1ZpFrC#^^RQrg6pPrs&EoJ#_XP*f;E;2lEu* zYI%MQ7o(E2ra4Vg%%JaEG|a@;&a!|o)K1bhPtg%tEwwM5e$L&oDXYR z$sw6db}`r5&$jQ0sa|stD@|Xl>3af{T()ja9g(PNGgRP>Oj2_`BsE>K0DO?I?RcYM!%F04~KxBEBYovN;`uBV@>?jQ&Fr~Vpzrbzj+5W+;gJgmhtLYm&nA% zZ7x(bzR}!gK)ye5GgE_egCF1{Hf5A3VQEbnez%}tjxAGe?4s!Dji7Ua<0uW}5@ep5 zRwo>in&PnYkr_cJ_ru z?q@?hsEAFfY-221JjUpXB**)WA_LXpgB`h6nu{9`(|P1_x=v zu#}{sdi>YB1J?Q$#6MaZQG;y%;0skKwuzL0{fc@&l5C<HG71rOfuSh1`W+Xg@6>~jUlV)E%wXWCPzn#5qF4UL+*%C z_k1<^@-F<(n$Hb<`{GF;xt0n;7iPMt`HP2dAV} zf3aaHp@EDk&;B{MsFVEhmC8 zF0m!7IK9)_-k%tN?A8c8fvk1@nQ6--YpXq-X&7t)o!pbeC0~f^5mAK8J^W>!+p{X+ z^9(jW;X#(^2s5FIQW!q@DR^5)Y&gxWsIjjZNB#x6=VTgQ157XG7SN*{Pr>eQdS;k~ zQBw*#bJ1?}65_LFD(a(kX;)LyCvc_&V^?etw;nDqRcy%ZlHN)|s1Gd?^#f49UIFn} zHxQqFKDOxWf~%+x{PQF!m%Vnrex0qKB5t3xlm>iN^CV+gc!R^o(C~b>kL!edS|r)@ z?UBWGS&gZBSUlOx^spP$BUYyc%=9Popin*evnnzz=Hm6Pk;mWGs3us|Blr*2IBe1N z$=U9Y+{-f(@Mq2j_Sb@iuYC9IpC6~1SdKnA^qpmnPF*#+?t6#5SzwkcU=jr(8FYWm zo$;g*i6rwCGdmDp1_R50o#+IEBV=S;!#q*=3I2qHUvb*#pYVMV`?ICVuN`D`jlJ1N zW}azn6e#QKU<6j#=1UK2F-%qsu^kV9fIKCO)uW8PkLyT_p+Z`cQ}~uix^7rK;%wwn zj%3i127643+2H6zrt*?h^5Cejt(|=V8hhQ8u%-FtCtEx7Uk{d~Hy`UU-I6!At(WAc zU>Y(N_mW%m@hF44%|WvB

    a%p5wg&j_DU`K07#^>hHpO;krtlJfx!CKjafnGp%z zD#(kllIk(6 zS;P7M<)n2~Bm4?QVC7)X#mm;q|FI*f_uR9EQ!~eAbupYZH(BQacFaV8VlTgDYCY4p z0TqW`V99@a?MONDPMO$}86<3DH;-Xe?>$og)+XkTJUGQ{z~%_{MG$ z7iR<3Zi&5BX6Nc~XT!bngEr;`^kl2tz*Kqu*5MkDY`2v#Q5VE`*vXG}7k1@(nS?f9 zDBBgT`45q!7H5){Y`=FbzSV zqL=h&4Lft58hQ}<1)X&|}ipnZQ;eR2kh^$^yrV=`w7i#sfPsRuVudWABh zi!eapIgxkBBxzK#??vvjR-H9^%Vue)85m3C7aWSlLZn~&NiCc?VoTvTo9L8%IU39L zI5@<0QN=>yUxN?rO(oll2&Is>%E|Jzi4hS6rZ(T2 zpj6xdAs-IA6Kd+BF1?e5)M~MVkc3jp(L(ZYr#9XS%w!EMU=`~;S}BEiU(JUW^|~K0 zY1Qs_Q8WacFbWMrj;z^~8@kxe+c<^A&-hgFVr+Rhiw>yOQVu*c89Zsf8kYL4-#3&0 zi0z~&o7NW){um`Qr2rcZPRE9TGIy1EOmZxRT*xbqBu&BpdQTy}PX8NHyi+m6-6L$@ z$Vg`^GP9odMv!2tfutym5NY9WqErILSmxGXbE-rfx4P0@lIFXP<;M51p5NcD zZerjjmuo^;xP+S_H*QlrpnPYdFF7Sy!kYbz;Gi4Et6A-PyeQLRPU@*}+d(o`6&L<%%iYUQo7*2{J8|}*5WX(o!j66SoBbdO(5-4r6H1xQwotcdk~JIK z9GdwN`@>CNB1tiLN+~0m`z}nqvdM&Z$Z~?a@1iMoDjTyVZjyA!Ogp7R`mN0v?uyp)`r+vfK`YwL|x(GWU{p=KV~|hGFjeh(rFif z;*qPP7~;q3bIJX+8*uyLb_7h42{ySzt~IE>qkUR}(MC-Px(B+~emaj4p&oXQ_3hHR zKBJ^&Cl1QxFOJf1>C?A1&a8aHznX0RmVa*y!BSVEA2#h|P2h_cmgBtRMrrQWpj*X3 z`p~0i<*yy>%Q_50=Kb4D&_T*mo2{478yhOrP?uMhd#J-tUFep~SC;!2jA$=_{5Q*e z7^kzqdH4^OJ0~eNhE>uZi2XH2=dJ1o@5&fb?}@xGFX(u_hS}~0_Be+k{=S5+F1_cv4Va8y4^6g1qQGMRLuG2^$oHo z4PTnjL(+?Dm?KGDWlZc;VP>UD#l(@s)62$Z6#5Moh!|*B429l0i~i_z zHox%DXJn+uf8&RZ?Q9+VfM$*62J_bSD-#d9FWCFluMexMl}jA)cc0=-q2*R0!|^U3 zctjsqb-~J4qSMj1p&>*r!G}aPqopcohg$R(0=a)MUC1m14Yy?OGGQY71hNnTgIrc= zJPEcMJiQYhV^FZ5{8O+fel1v`iv!Yu1$dTP$L7 zjpGgHG%1EXiqh7ex{0a@BZ=iElOcg%LnpmaGZm-@_Rz;JOci;qO8ag7lAd)%`yEoV zzhm|C>5^)gr+A_T^{Sq*bJqUXkc3YiM+lPiMvrWTGuL>Oyyia7Fl@Y&Ee*1BFtL5w zLgeVP3gYW4bm0$uy#61owHh04D2hYgBMDUoylUyEP4p`%%mS+ktQ2c)c$ub?l0S(2~xHLRttdxqHGFA-IIcAu|4 za>{Nl9zFp4+PZ$>pj2>-{G3+bl*(g zSi&lbN-@cz{FkwqWNc{U9;!LfS(uQkGxeR}^R^h2!~XB|;o@|2Dojq7kJ>8R#>5wH zot-;(yD7njSKvd;#yY#cw777dLzv6B#Lk06XPOS9^Ru@S$B@IvuKmS&E4~jzTIV+o zObp>}qwQG!36L(RExQIxr;beE8?;c*2II2bqfK9EEW;NE!(?Vt*Yea0G1x=Y5K31? zDMC7}6-uXrQbJ1_F|D%`SdAMBmG^t3MQ1hO8zzR6S(X%O#s{SfL;E0=7ZWB_NBTcz zNBKnXaSyrhN&_R+6`hKd&$0BHM$=7f(B z#X7!oN*3A=-4I&T_fmT$^lmV8K;aKIKph+juME8Vd{Sy4N}H9nJ5u%S$HNG2MO$A< z2MhKExR^sCp7Zv%H3Zg@cVCCbEAtl8!uMic5O6vM;Xf*BTS&Lx;Lja5A8J;C5J;>j zT_o2=S*o35&ieXOLhCuL6!#U=^-A>}-A1lfQrS}&0wQj*&mh{v#GIV3B{~B#kYm=C z_Y`pXvWz|4K^#Hd zWWmS5lSvC%&rE8^Flo|}`UQ;*2aBS;pGq^ev*1N$KNF*`fGJoH3@$rQ0C&i$GTr)> z{%k8qk-d2?V9Q(0SIB;G`N|RlO!|)Qy_NaSp{sC_$%0z*N`JnsmfurE-lJc_#bZOc zxF&}U$}gW4k3EY|qxtcoAvTi=L~PnqGrj#&j@qIu{C8Eg&P>I{%U{j(>Fw25pLK&> zYXir#6S;VrCAH`**7(b3%}?d9Jxqz#kI3O^s*IIvcErn}CvZ;L2-Z=X)@l);1m?C| zpigwGr(fQ5SKEXru9SRNsZKMmMBaUass+7WmTED_@;3`R9?{(YTMAAnP^cLM6f5CP95FT~;8qG|2f%F#z!r}H4`q2gJ01L5-gQ&dTr*#~G zxhGkqi+4o~D1EK*L^p8{ILYsfgL*xj?(C!T1ro)76jK3Zm7zpy9p>NsF%5n$8?@sX zw7{N{Z_tI+ACBj7P_Vq%wiC&A4~em>G;dP{=}yFTvm}l zD^@5e-xO#xsU(MkGLjRsh#v68BqmN=Mc2ZaWiN-V_m_qY4A~S_@m5Bl3Z-o*W7v|C z?Bizos7`zI+5hI+eyDtE?)_`iNGEC0Eq7V9S45Plly5L$^KSBuV>p>g($Up!7F6y@$_C7;ls?xB~;be2dHc;)_VI9pO8y%CQg0 zV<5A8c3d#pD2rKAcPmDPXmuAFNeJu}Zx(SVF_d+-v> zE}kXZm{v62zFRP!L}@Eb32Jr8x2sK_H5=u_^B7bX;XM#4RaXG=Y-|2abT5(1u8^y1 zX~WzauP3d8g|PaNXSnqx(%3?Ht!V*fRoY0cVp~un`E{3`!|*mzmL;jN-Nys?I}x!5 z!Oy(2o{2y6+ol3i$6OJzGaGc84x%iUyTEAfba+xm946dYDEnv7C;L1Guex`dUL^4Tho^53^1f;^muwJ%802`(0`=n)ts>rh+1 zw#eJIm@dP{|TS+0n$&evMHMMT!l+5mt+Pz5^jw<>kh? zILwJJb3CSf@%JAY+o2zBO}yn<$Zv{w#!HMe)FWmTSd7a18nShvjkmD2;!lJ2rOn)iCYL{X=m}*`|Gm4cb1*Hp8#Qet+#mya9x)*`0J5$rG#b zvZG(Ehx3g-Hf$-d05L$$zu+#N7vj(a;_)OTpD{-ypMj-ki6EQ>@%a9xi6Ge+b{hTN zK4;7Bc&HGCY#v?CHi@EQHf*h_X`x#kQc6nwiKYxtIRnQ6Hw-n6*M2-ZJZq+3=gO(7 z!!z^~x&OO_Z^ zCVZh^oErOBcws66HfPXy=K7e(#t%~F?~5OAhjCq>InOlrv{2Cx9(;27P{z7V6s2+n8r7D|<;XAyE0aj`3$~-l;naWI_zd*&w>&K6@Mko(etz{Mf0OSKj=%bI*h`zn%R8j;pY6#xm zn3!@iY>?Kyq{OHg)Dx@W8<4JlUB`tTZTl+Iu(=CQah-N$HuN$ozFUr(4bcfIWgJm} z)Q5up;Pn-5{F~Yb+%Mr9TkCD@E1LLv#QtkKQp=%R6pQ&H?3^u<#aIEPw_&R7hPR{n zx>d_x*j6NNNBaQrAi=s5uPL^b;Je>X!a5stnWVo)fJ3kBNQTeFSeIh7=vGZ>V<8LW z8BRCw=SR=S@fvOR1CKZEOwFwWc5BG%baoFb-3K$}QCD-d%AFsA zC(#9OxCef4`lJiP6_21{{UeMO4*vjO%ALtw3}Wn)8rO~6+7CgcdG*a=KAs4(<})r= z4AP?8YRtgPdy{o%E)GvRbfpW@7LIb|n*-`u#gdSnB;>g$Zp1^@_#*ysO_euCEF?+> zv~6=amL+Ci8N@~Exd>wPpCB_6P0Bw5b&R@)xx3{oof$FerR2>QFSr}Ch0>VkOcaJR zEp0{Xf%2tQPjz7alusl{v!s5<$%aVCi~(ZU@PLfIaku4yVlslxN-^pow=lEemYr-u z2f>o^k#RR(zLSvns~+%h!{G<|W4@(`(2b70h1s7!A%GEC*s*tM*r`>_XVwr)fj!dS z0KkfF8~B*J_&2W?VJ(?2!u8WhZ3Cc|4BCRM?WB^dNVwlxGK1n9bWL~Kj>$)o+Ua{(Vy(OMBbTC5%+PU2;yl{)Ww_W>t{8)zT< zZ5_rN-F8en!OZB)_4R1{4YArCPNP-YgW~!4ObrIznZ{R*vsm7FlTQAK-?Jy?n0@i8 zdZ*!01FXX(@=2;^64_IQT2}Lz?XXzL>l`UN#i2j(SMUrOFQhu>GO8E)ByDsAJc0^X z*Yx#3&VM9BTsgZtb`d#`o}~B2>Yo+rR$uhTTBgNf;n;E$v?p>H95qxcYiOjSV6Tr( z38~hwnPQ+|_ZS@QRZDN!TQJ zRDI!CLm%T*A52V*2#c-^azNB~1ok|L>gV^=EjK7K`)daLh_*RPNT3YJjb_5mke+iE zB-7t?rHzPYx^rDpX68CYBtJ#tx9CJCTqPu|d_>Yu6cHvI|E1aGVltxNnthnz?dp{1 z8)#uzDknj1_)MmM-ojrQT?xU1|Azg&4ce+>LA3mOyv!h_jby$-Y(uUBv&7OQ6%Lu@ zUTi2?FQQDYfxAq$L5V=>yQprMmX~ImGZuI=%sPiBiVMt-r&Z$9p$`v%xVkNptQ*&G zQrSkEq@tS3dhti5j>VOD%3$48UMR&4>$cpTRCnKp8aYNnDqcFZwlrp2S3d^#*`A*N zE@SiMdPP9?AHheH?!Tp4=F42h!wk!JHn0@%p#Dp?9Uf-91os`~hiD zJ_B|ZKaDU~H;VGa?)yfgg;bMw8UTShPtOVtA};*-aj1m*8Kpair21G5q%+G11C5D? zTefvCw0u%iw>VRGJOG7%&Mt_+C}3k}8X24dyx81Uwz0GQ)m(A0ol;mz#Wz^*yBLqc zLnbY4;A9=>k+zOEQz!0C&THT#WS?fvj{H)j2^b77{b9m);mohgPSf;g@Zp=ht7Xi4 zchw(sBi}3)cgW>QL+CO(Ewq(CeQz9P$NVZYw-*m_1d>rm@GUr{@vzqUbf zZUg2w>D&cfn@k8@zg9>Sf_=T0)w{u=FvI-yCf2t$3a@DXIM<+~U4c6d3VWPYRs&?- zP(6f1V9HRv$Wld)s#bKe1sCr&bVhPm-@`psCwa`e&5ZlKk8&b%P6es};1g zM3loQB!@$Vb5BQjHcz)FyI-zTZv=+b-#j?O>uLxtF*fMsJM$l! z%vo~ISq&l#%W*blm;mk7Z=fSKBT!vRm$Da&ZVeQ-E zR;70Um{x7h2_@{`$Lim;?70uG(=j@@+kzOR#p_wr*R;LQ;pe+O!XO${X@nUM;P{a2#JyyZN8kR2wl zF?mC?s72u$zRU)yTgq3e(s~yr9Gk}_*tE*R<(0{0WBcRC^jIEk9`AYWK?;74o}EnV z`{T0*XC(TL#3S1%7G&vwkj&L#)?y@F<}(HQZk3X6!lfpSE;OtC4oT(R>Ys(4HNx*& z4y{Zz(JRrKAljmKXVKv`5$xJyGfA|GaeHcKjppR2EM#sJQWQ!@$1=YxB3vt^e4jPi zkt4I<@gk}{tGlfeGRqF8HbFbwO2$;wlb%}SNn=}L?q9SX<5I5Dw+q!ItI9Abiw>l2 zb@dSaR4Baxf{mZ(PHww0E*wG+Q^Px`o$}5;oAbxCUt?5OsEfI3dqyGGX2hP+n@ZMn zMkM&E5O&+D1YaosnKa2}Avs}vB6{!{wz4*hcZQOgsN0!ZRL-6+cv1SZ-kz0wg37&n ztY>-B5c%Ub_y%9Md(EG<<<^LxJtv_p(5c^0`>sTKxanEVIP3e;@%QD>6Z7`6)#sjd zVw7u^p_?8@&xqpdaLssA7b{68^vWi3lgp|A0=5o3(-mfC1t)gXl`okWbP4PZPTAXZ z7+fG*mp?m)@XUvoZwuBf551Eqn0)yLoZi`f+8^r^p)qOIz*tR^(0KlE?2!Bw(m>69>V$-XT3Yu+NCu^Q`-oA@>&?%0bj3rm z)oJc-Frl$WzoUzoRmsU!%PVZ2_Y}wO2${<%Z`zMb@X=RSbTX$)2ja@s;H2fVk!Fq# zX38ug9NA491-ipq$RIjQ_HhooB`buuCI8&EUX&BMsm)Z}$3E*3{2V>%ua#Z_z^HxJ z>-k3ebP&bticM_sUMGNP; zp60mA_$iHxB*At**#9u;DIA5mI6(>?IZOF4Qu}v`~c6vq7ryk|G4{bIPBoQ3hsVC5D z`|qW}jlTl)i)<}l??NH^;1M@VOK{zRhuUJ}e4xO+VuiT&Yt?{lKXa~L=yz^s^#w_s zl0Wusj86E0^ya~>x~%Y4tYvMy1l05Ru$h1^Ad7m?2%#rKJk7a9V`9u0AZY2OQG0Y7 z%cbr1Qw?9J_3|ywieG!!*1!;R;Hm;Fy$!))-;B{Sd*=aYXV*t8D;|%Os{2w^+w2ni zgcr6mR8fvG|Mu)~P57DX85p;VVBpi{a7DG>M)zT`h7!mMe)Z;sKs4=p!s8pSV$4fN z|N2e;+JiEun1l=RrI*v_cJwWtY6wBUw#TAIax;Y-Q<<*{tou2L?WSdei|B>P zXp4$r`li(p!F{FFJ6aQoIsHsDxEKgH!Xg`Nt_1<`-I03B z<0lSps>b^5%D+k_M@$6w5uL&-S6V3&z3OV=FI^c@owkGG;sLuBoyNh{w4YUMK1e+dnDq5IPN(}LKfiP~kqWwRL#5ICcIsHR%*zs&YPQ3TIGWA4zsEb& zzq2NNTaUeDF1-mDkm!)!1R}B1QpL~ZWSjLRs$By;%WvGz9_CCvWZTMBByArA->2}W zJoKJ(4f`Pr%j+T_@O9xu^0W(3pdM$$tzxMD1c#OkCId%ep{4lYe1>mclBU4hdZ+v`aRYWnQ5$eTbf0MM0TmU@i1y~760C&c{6@W{u7w2BLo5?prKBlnD|tQB8glwaWu z|0`h$wPmwL;#3bH@l}d3PHjv|)N0;qx<=p8rV(vJ zVd_j!O6H8HrN8mxBuT@dnZtUY@;<^X?TUEy!`Jc^}RbG7~vWH9|Qy#HKyj+v_;cQd% zhAjnFxTW(#Tu941#W1=a#IamcjU9Q`wy^@!no|o0-+ty5#^&U+pIoMjCYl8}MCGk- zO+_V%Z0;JQSrGCcnM*wnY?SkFnbT$IutFTsu6YK2#1FT@rz-VQI&-o!xWw5a8bL8r zZ$YppRIA&d<;I%5VK<4h^-dZ7rIMg8^flj7YK9;?N4H93mV~Lds0T-X^LMSM;H6Lh zss;K-N#4KLQ`^?f%8jdQl|TGwj)D?dv)A1uZk8)i%$1u|b3AwCbYwC&2E9e&2qOu8 zs|Cp!Zb84Jfu@f{;(!h2PWs^+3T016ho2;m);GE#6%^eg2uXxtkJHLDXwpZ^H}aQ+ z>2I~7(qD_#=--j)f-z{te8&Lf^Y{;36r%Y#lGpg*Kp7r$5`BO%8CjBa)MdG$4yK@Q z-haqsw=H#N5OlpO@>h##2&W};CsjG z%&*0TYKSID9

    XG37qisRlQ$C-xAU#6Vz!mR}q_x=q@B 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Λ~M!6FctQty1H4PALFwR|R^dYq>-H zGU7M!67H7M^+MU^r(Gd|ETSIe57n9R6*PAmu|^U~Ep3e$t$jokr)*qeXW?S_$uIr{ ztIxEmd1YagV0EQkHe_D?X?%vrk&1hPgCVUp{?1+wiTA~9=4&J?j=gSz0eWN(=qW;- zCk&ABv)!>*E`NH(j7d+)R8Dha$H7u&<3@fa>uHvyzV_=VMcSqVPg9m&+vR%(~h;F&4TgmHtFhqxxS(j$$P+{T)#JM(zQvMb&U)UQZa)T6o#g4$I#HG~_@8xURFPk`M?F@#vRNgWq+`RpgQR;QQcQ>~d zmzuG>9x7Hjx2oP+Nf_&OpR%AhzY|rH|7@sO>Qt{)^{$rI z-;JW-0PlvWE&=eVA|J16R&6~KiHjKS6_36Lc1lq^_~M>4AIRb5FfSv2mwxzw&0Ss^ za(l*HQdnPjf1`AKr6!DHeqr@&t~G)MzCoHBto~D? zQVr`hO}n}xVwZ5#=*SYWInhSAi&cWvaqRI%p?k(HwmcRSW9=QwHRI3$Jw*ILa%^kE z-AAIN_Dk75^lF2Cau`@!L-9}u-lD6CX}lXnn1kTFr7TNrGpq_ZLsQ&+?$SfGa3t&aeeDHwFom4;w5Y513Cut_Mn*bQH) z4e@g-MG|fBU+(93q;uT!kV@otw8naniWos@j6Fuuz41swr8t0qt_h4A=pyqHMe1Qw zIpLF<5QfNKmU`gRJuf#(`*C9T80XD7t>VZ;<|3^>hiETWPPltRFXbAaDzypfcrdA) z-Oj9fFbg{M9Cs7Mo-oS`l7x+qtxlt z3emJDy;xejsav}#qP3ft_2w{JJ08Zi+|xYKq=P6HdRn<^cjXtmR~ppsRQAm>4Jt(ws2(W5K!kqAOp^Fg`Q3{`d0 zxKMw>z7GmeSLRI7fj>+mqg&8hh_G;NA<$}2Fm9NBR!X3kTf9m6BX-<#?A_Eh!@64~ zcZiHdfmsk6G|%mvCkiP%GPI-tWw)ky7*a{yGH0tM^xVSC7QeXnXFC3=(D}0HdG60J zMdEo8(d(1{%oOe=IuT4#J8v*^+|FSlUP1Molt}+qhQg?Of}0+0sbAUw7BmM$j4yi( z5#rMe2bWD3OM`M$UFI=%^y=jb*FWI2I8p#B7L^{W=cR2m_4fSrt+%<;dN!JLU5y6O zj(cInRPx2N)Ic3T!;)>T8gtjl(H?qk+>uqB7s8xoF{5)h7@SgkE4j-<`?^gWO2i(n z^}?O&);5!Qm74}P)Ok3yx_7fac)5XN z{=jUbib7tmk)SEwOdPPNA7@CFBkhU{S+6d<7r-9gsw&>1q_|g1i9Vcrsx{6apKUzH zR-Q=u;PpkQ3HCJst_qF8YA9S=`E66knB4jJ>4+m01mRZ8+Oft;W z)AVt12W@8`gflqMK0j4)RAI1$eYyBrLQn{9H9mGJS2skhC|VuML5a&Nu9El07_T$0 z4I^O@)!HvqdY6>Xf03oX$W_RtC`l<*F43H{&U)t5|8t8s$iuUsZVISDt=@ObGURRf zTnZ<@JA*S+WJ?!A6|dM6C4!XZqi{vMy>o@Uueih}#tnsng{|J1tM0N9^QL$NYe>ty zPpGH!x_&O=h$v9s!OE)l)G}@cK^aMKrrcAa;P7w@#}#MpgjCB@S10)06w|GUZ&K87 z;tp7aI1|ooR3C1L`y@r30!7^Kxe?PW_VVLReZRM~?1`$u@?)LikBCSdF>G}0v}MF) zvg^kN87L9ch{a{HBoV?-!Sxp%B-X`c8g~!y1uCwOznq+^7tb7B!DiW%;p-5K?>4iS zk8jR-Q{E`s%SniE(tbjxP{dr{hD!5%_h`aL=XyEig8t7I{*S3RlD~ESyM=!o#udY_ zllHmGafxOj_$ITTsG`?JC{VFfzLcD-$8F>26nae(DC=ulx_q zI8v-|X%s%9oJDThpb5oGV_4mX?0O1^5Gc1*+t`M9S%#QlpjM(VrO` zDi30+;4LGeh|NS#D3@q9oYLdh0OspEhaTiS&u%%%OJ5IT-z50B?cwLnCLebQHm$g- z@~5{Nw+HiDy~s<{(sYMjpS&({`%h_yok4gim4E0?ZmsB$#hJca?ok}Sd|Th(z$L#Z z)dSj7-ZykmS^Wy8r4sM2?6IfpA?m9%u%|TmbfCib1&19)zHA}K{Y$aX>dmOCL_eQ~ z9+vnWMMT~?`-poX?RC~CX>4(C4xkw~ls)BOScHE=4{JOVHgwVl_IMfZz=&Q2iaS#6 z&MwyY-hYgBdg$AdeH|l#Pz<0en5wLKgN}2KzN8izp0c5|V@KIS*j8cwzwy`D;;ld* z=o(P~H^Q*!+vuUnqs#lx2CQmLDWBnAs9N+BW>{aFXUwU0tXdy7dmmB$Lm}v8DoG8h zKg@Wd1(pdS5irySW{rG3CXS1i=|KTwj_~%k(DxrU0N$o**cQQ*<4liL*|rA8jjuzZk!o(M5#0RBspOp@zI-sM{< zO34R;3v4mLK|Qr;rn%7)wNfmNMFQ#e#98}r_G&rimitr(?4N2H?!Y-;gqtL-YKFDilg zwyTHP5~+V=N%XJw^VRYSWBYj|RN_R76{|VQKeV8w{Z5VK-d*7N8v6L-+UBEM1!Rc@ zO_MuQa)es@n2p#rOVnPOE0>{b8-Q=2J>y=;dB`y>bN(7(2UnjjyA0d$uK8Lp4(1`@joy)38MdoG^meo;HO1W}TS?k8 z%1Q}$D>u}6>eOLs$L%&>_Bq?0aQsG1zcqd6xJEi~Cc9o_xuHCGp(&J$F`R1zV%P4v zIuJZ*dYR89EkRTBE05ntPQR;KcB@h=LVbtnp=5%S2yCGh$JJ_2v~l(Un+nQ=Ctj}o zuUz%HbY2-y0qS$fJ?IOsCtNW<8tJ+vZE^_emaiX4I71@UM(099H+OdnLMiTcm+v=s zkug1uG$Ws^Mm)|4wI+j-hM31waNgx9)sse_+9dRKiK}i-`F*&)e}M(0bMizrm~iRvOuuxx88O| z(~`_G9rbUEjIS0gZ#m?ug zn1u?IMTSkj&Q?agr6d>HH8YHnA`z|L3(o``3r6p4v#0f&&YhO8YvzX$m)$+ytq)0C z!KzlN)r=IV--*{ds~v$qO0vvZj}^Tw*IUh+P10*WmfdE6JNQ~9G~v}lul{*wTl)Ve zJ6f~nw<-sjQ93g-KUpoEyM(u(9qDkHMtDXBVJ zc8?E-n4Qmy%r&J!>b0dQK4w=xxWlY>-mNRbY^u*KS|-GNfA8|o+?;|wrX%ReIY3u# z3A*HX(9{WnCZrV8)(tdATt|N=<$rmia{ixK!%zQU`_95PQvHMf(fAMk$Mj#yt2odk zWrHROG{IINkpL7&=5Hl71xS3aoBjvJB@!xW4Dv;><7h-r06rJhSY3_8DO6&dP zm7-qxeaow+e<;QDzuaGciL16mDdG1KTH(p07)-BB#CD)C zL4NWbS(23@KlYTWlHFcu=kfcC*<5}H7#VYPzwPYlxyYF>eSMpjsOU7D3WxUXo1#XPosCANA z8n#+#CDid%8=2CDzlhKkt9Iyz7dGugF%w+=z7xou&O9Syc)iSIdI*^kcu)A8Rz7Z1 z6E|$w84cOUT1WR~n4(Ps#=Mn~A1fx#8!c{_*xWGBz^)~|ifzm=rm;${icM8|F?FYE zP(zhyk@3_aR`QzS%yg$pwWc)MBDMC$bWH4_MuVAb$f$j#X4JNqIR%ykYLvqN(;0)5 zS^<|B^~O}ayX+Fzk)A|~ReLib2e2jM?fdOks^`kJuTw*f_<6=-P0RVG{2$N}8|IK6 zp;uvg26fS?_qj~Z8eC~r7jNFRlj=)jFqU6r$QGm$tW19LV?ggQwmJ65e^YcMeL@(4 z+eMHNLxda?&Y*5Av{-OQ#OVlV- zJ8RcAg#UVfBj^Uxc~n~`=~&U!^xJidFS<|l3#~p%Ms`cG&}=@3^Aq>82kQKT>P_L} zObT5JTn^l9nm~HHiGY`$`+O)byVzJsLsHIyeWB37%WqfITg(yqKeG4tn1=0S zfDFfZ=z&M)p9`06{H+RlpG5xpNh=K2`>|KkHCTROZTo;GTdTH|}tq2(?G_ryu ziRD85w)<%Y3zj2XgF4A{vR)7Lc)Dz@T zMC-@vN;7S-EIMuVv!iv-#V(6u)QBm`qfqIt7H!gA3?uNghcol9sYpD_O`+V(F58|f z7je)FD>_Pd-QBrcUb`S?5Iu{~cy!_KELS~^?X@}BrecZ-Y(3b+hFQ(ge!gl`x%ler zbyd;)JxuxfXR6}$0LNjww~NcVOVyi!_dG-{A>SR*QQEM)TXehDgaN#-OB7+kkf}|` z(iLTS8w~w{41K9D371SZQ9?SngWz~qQ|7$i=*l)taCS27rNSl*KS`+jdgARO!aH(p z^xKWZ)~LD3;c&|%>R{o+8e1+8I%YhZ+g%}7Gr<fh#pSAezZUQRJl)wUm1?7U0Qwh~c zXI$iV2t_~r^7HTn#73i2hdyDzVslPgtkM1O_TrYn(*1WQuem>|Ar7;xQtEODK*IHD z!`5HzMn`Ro2K-ZR@0)wT)9GTfjs8XAo;|6v{Jbd&g+w~RAIbFv8np}yjCrTM>Fb|Q zRRaCwlktx9Mb{DeaMo1fc1+3dxe@Q#p=dNHqWQzmb(l!OzNpfd-Czs z4h{j)MB%3d0@bvGMKAS`@~xV!*YnAJ(VrCc1p(rqd&6e&+U$4^^y4+JX<9^{uxEe& zfEz4V1mC!d*%YN$a;D6RJ~8Eh1A<0jmQpi?JOi&C9{(4CYAnl*5GuAn<`Zbx8Knlj zL8uJqf$Ism>w%#pey+0;qL*>td5oTl0E2gV{-Cehj5+t8eiR;vus3s*ngcjndt6>q ztT*bsXCZ?~6li&g7|2P6i-v0cbC{&1*ULm=L{9eH^=3oM_WoGNYVX6o&j7cN%eA=@ z)p&+o7C%P()*R+ggc`o2{Nmid#E?|{I+cic)0}13vL)#bjt0+nc%is^MivJ z7o@0_-jo}d>u}O}jOIIP&ij`#Y4(436WO|3%1&fh%PjqrHqLdD*>2xUYuOh8gwB8lqHS zPZ;gIr`5BMgr0b0mcUE6p3PaYBxn>y7i#Rrm?FG;x=pJAH+^=bYeYVmgLf=`SC2Vm zU2&9fMAzEoIy*v+9;VmlRA?8*;eZ7 z>56}DAHj}=NKKop6jOnWv$R(PNIjHYJozP|axG3W=oiRvd7*^Gnc+V4L?BA9yGkQT zO>DAW?qHsXrekdBsV3Z>&;>ye{v>tZ>l#If*mf^Iok;s65)FyzX*%S$C>$;E&`Bd{ z9JnZ)2r0e)hBuOG+ zc}%zlE4;eeig(R>P@J(XK5C+wv?bJ4q$PTL^|Bd_EJlc?+_nbnLh78Rh9ZpIN4vSl z#uWFSC{>faqY(-Y<#Gr1tfX+;$KO4JAE+Kow~c4Q3*iwzDK5ykrS()R38$-tjqiBe zTA@@}mlji|Oz54dB&cG_+#hoPog*<4U;w^*xxodUUhdj|^lfAwJ(Q$TnuO2=>vL_f zPkD+?3z*Qoc^qT5v*GsdP`W~g`*SqcQg*HudM09y67#Z~H-A>W#gU!VBRv*r`tO>1 zqUl4jCB&+*=6&p@Ysc%lw)A71du+cH@LsPUO@rrX$8V-{Q9Hfp1jBuB@VJ_>x0)r{ z;j1U(?=`K7g;A$h>wcQ@?=UC6i1>)l~Sv|x+wn=a|77@adM1j=|X7!e24BWx^O6jxoUC=nW!#B(F=ZL?g=M4-R+Y`#zye153s zDQ_9S`XV!uSN0lOyU*Hlxgw0Wj;3Xm>O6351uJLSlPzU50E(vztemqPMXYyKJ8kH- z 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

    gk@g_{V1wh| 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�TFd%0n_aBBzu% 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

    7IHWZ9ec(A{E}v-$ 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

    rrHtDbuQ0U`tT3 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�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 He7FAtQ9SKS diff --git a/build/old_releases/ABAP2XLSX_V_5_0.zip b/build/old_releases/ABAP2XLSX_V_5_0.zip deleted file mode 100644 index be154e50339af4bea4a786e7b35a5dd7001ff279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996142 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 z 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

    DQpW6EA{mOTfyWps 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 z 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

    ac0Pov2Dh+RA_9=pv_ZM1?;eiSv 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


    mJ$A2Ro!b&dD=V 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 z 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≦uS8dN&_`LZlCV~9v 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�D@;O9Sv{0+0i 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�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

    9sk3_spLA_Z3~s&BaeZ0ABy_rs(M3C@e)#1KAl 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

    9V+u*3aHrkfJu(U2)m|*;wnWd57 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 f;IQ zxvZ7{q9>aFl4WQ3%_Npc&(zL;&6xW*=`-sk@2tT!w>#xpp${qEIaTvRKT?UO76$d!TDcrONwD@!F#2z@4;g{Q-ndoeP$y zDRX9Htn4)F+=UTB6J!3n-R5D{dn@QpP`DGPzWs}fM z5re+JOf_i<*m}>Zwl-cO`(>N-F7)B{A9qOE=}jWQf4{tESgs2sLFidVrKgaf#}MHt zL&l4%Dx^agywL&Ty2xcP_I7>9fU$b;5r)U?jdTylT&T4lc9yWW^V}?n3z%C2t7+_n zoSwm+1d}Z|tiL-G3B^3aea6NRII(INbVHj(`W}aO%qZab<$NKw_9@gUsNUMbV(?sCLSe1Plr zzlLeqd*M zw@e3ppZF6xpxCN%bGIl53MB$6Pw4fJJBT$m^FlK-8zVs+2h@NK7!@TnfP1A9^s7;o zO&-48_l;dID95CsQ!f#@*L|0o{%`3-e)SbuPUe+|taqFr_fL5jBQV)T^gT>M9jI$; zGr8x5@{6L4Ir*xORZ6a)Vv(nBvw9R*ItSD)NOJWTsPw@O9lIv6g(<0ZK-%Gehz#S! z{5VIuXbr0Zw_obn32m!f~tht*T5(ot*k9(cSETLgPOwnc*=vk_^z6=o~E-QYW>iT@=?>|nD8{}^SsK` zLs9NerK#M|Cw4o00C8g`72t0Y!#A*UXJpQZ|8;qLr6U&{q@LscBuq|vOac1@qS5Uk zu6hL8V3GxU=%{TeVtLby+UVXTqaTsV%?H^YnqHN6?_n?9S>LmW@H}6m^=?yt)PK`O zFF^)@N5SSeTc-dsJ8eEA*1Z34+0{?Ym%Z@?6ZIXweNbAEwZ;0~Wi#o2`*JC!;_xG8EDhj=G)|wertjlyeH_f{SfU>8QlHyemoZ+FdE=e z&jU3ebK9g__ur;_1B5j5|L#*-80BQ0F;nD*X2z2qG;;!y^~_Z;>|sYYS+JZXM42C4 z-^12lorceB^upRXs6yr8aG}~+m30m1<%y>X4ex!>&Rvtw@s6P;!mcr^scq7=5ofqY zxKP|c^9F1mi^vhbCoufJHFQ|~q<3m{U z$xKAb;8xjr#q(Sa&Zxb`*nXE#iYyf7R(nPZP3&Be68}1G^ScYZFng&N@6_W!d(O-1HQ9b}u;sY_$j#$g;`yg$gJtA(R{gsoy&u)dI>fh6 zZO$iEw%M&5o8oNukV52Mwf1p#mfaJSC)oNX|<8-Fpyti z=0*|v=l<9NgWsrt`w{qFCDNafq`Hjrn82uHmv9hYE-s)>t%?$g$GC$AaL82x#%Xg> zm=)@G;v)sA_3Na@S4KIP=lZ6&zL*LDQ+$x78>5_UHDYRqnWVe>fj}_AxxAr!(Zx{% z(}1K%oeI-Hok(3w)H%Q}obv3_;-Kf!2++L5HSMwZ`r6mfyxnK{(Gpe5u0oX(RcpVJ zqu0OS|9_r;WnC2Z<;~x4Tv&F~w%%X=n!9*~lzTsT-Sk98oFV_no|=+E1@qiY{cMQL zv}bI`YuKrgFvFG*rc~+fbuvrjb8xuG0WQ;U=ldAWD<7SL&ZQ^zmQP~H^;GWX++c(D zDy*BQOUX^1iE-a(vo9>5jj7(Xp2~T0?y6COIeXW8kgH*Yu_n}5ST-sYCqbzDxIk3K z)%`6#f{k4)V2V?|mqPD2m~oXy=q(V>Q6E~ft@C20^@dM2y^ECN=OahZ`x-bvlW1Qy zj*)l}?Vwr^tO5(6iPSZIOqW!S$#}0QaAxq!nJC-XS&?>Ny6zr|Ts`w9D5cB+?6t$# z1p0GrWVZZfuK-NwX?#zI^O!khjxa6k=$Bfa!C+K5_Gd-*^|U2@UP6@g1CL3ht@ zJ2Y{1?MvS7ltx>FUtchi6E@tZR$BD}PiVgoonEG&e1P3V^URn(k0@s_ z$@7w0I`}#!e6fo-jA^K0X$deZKTAi=71HEgfo4Z!gB>_Wsl7h_iK<-NK%5KcA%qNG zz#OjCT*Hj=rrw?r>r>Xo2Q=Ddd#-J@q&dasar56OPH&0^$gd0E{YEx67inTRseFPs zZUs^~9rQoj-})sCiWe}fTaDZ#mGu3F!<6ZY#Rf7$ESawuR?9Y|&r`$o1uUsI22lS0 z@TPurzL5cUZ_6#-fD8A?4ac_%3?=35nao zIYa~Kj__~p3ePbBH3}uHA;W4+Sb)7+G~mlW)?vBj)|TP_&3Ayfukzd9==Cg@A>=;= z(`1}#wj}n#U;2P-HbTRS)=L=^G|gAX4|x9R*)0s+O>lKx3*9*<>I2cO?8gl{vz)!^9n=O!&5Bli|L3n|WnVg7@S88oW)94BTooA_oHH@>Q+9ZJ`fEZ~1H! zecZK?pLNcxm~JMja0qhf0)4aQTv5bHH*u<%3F9N$ug3+6Rj^&Q>o@bov~PyqVhT6x z>GuO)-7~9F%43E!lm~dr1*sN)q04>T$F$+0B34Wjj$bDf?jnb7rFKyZcRSuic8;lj zzdxkV7S+?u>OgEgDP=po)O}mHzelWqH|L7$O__fALUj5Oi+A*K-zC6w^IgWdm$?7< zj?CE1N32WXV~E!R46tvbsM|r2ciJz_5#7o4zNk00KHj#~+Vy_!4Is@?5SsXN2V^GH zHNLZq3WO9wo~6Iw^fY_*3}-(^gf*M&-gEyXKIt_La+Q1@VI542=S;}y?5l3^ zTvP>L@6{(Bx-k>M`EGA{v!h(kiX;RycAosG`cwk6?Ht}w9W2`Nx{{M?F7#fdDN-bN z&%96T_m3YvOIA6%pW&Bas`w&vUSzk_#?~_Eq8a`qFkX3mWG?s zTK$VX<8+#tTScsPNgxOO=$#6;9Msudjar?E_!KkFP{xa8?k0xI4`hhE3sZv!-A%?daX}9+*KdQ`rWecfhnAIw;o@&>AhQ$=>isgs$KxQ>q1ffhD zyBA6k`bzzIy_GmXwl%lE)p|k8|0qI)8&;GW|100mKZFEQQ1M2}@;STu@RfUuthQi* z$AlB=A!!dVAZw!*K-R+mJ z&Y#FP-e{i=L(gIv#l5PWw6X=LGk)?6uzm^X@&h{DMY-4s;X}O?!Q_SIf-w~k)8U#Y z=@LvjB(G54pFe>gA~?UHP2YG#u);yV#MAaBhQO1uXn*LvWTl9$2|&PT(%o{Xdcn#6 zuA+rmwhXjCZ$WH}j=h#HyGA&4J5sOfX!EXh6s{i^IPTKT9)5~u5xu=LJ5dy)!+8~% z7BRLWn`O{*Cdq1*0jJnbLzGC2LMk+eqzJznGV`vF)n|!rO$&S9i>1ZZ3RfrbskP1Y zNu6yXfB!v4QQh{*RcCDdn;5Rdx!5OXSDW8>fKgMIdW~0EQm}t~nxolU?G%86d>)g`QKc1f- zt)xxkw(wP1=xc{MmS|*etjC_DPel_4;wDDNWW};$WEg~~y-$m1r2i5>wEzoMHe*{C z``ugP4aBF=HJr)mMekFPJGf4S-(BVM;^i#4E4|aBInCrbh~u>F;E)SNRp*0!%t0+q(XneTuf`&sFMu5^h3LM487Sb!8qZ)e=L-^UFjU>|4o z`&2@(8GiPE@TPduqnYTn!xBPA@uH7tajo2l@d`EPHaPM&MD@b;KI;9+;k64EFH!_K z!R|aUkaUMqbJk<2rF{0T_lNg_RY!|zW}a<%X37Nnq7^=$O499GTH0b0RnJ}MjF`%I z9wyObXI-K|O+OidX12{6PD$0N>d=NTWoKMw_ zP=NN$x=3ym$+8080bl-ps|!|gx1s9t|Bywwq21yuS>#PCY2PDNww$2|d8pLy3&1h* zvJzpe&kPS3Hnj2?x=&XhYG0YR9Gs!#>IjE!5v6CCe~U%vYo|7i99_^Qe&c7!5~{zB z75oPA#JLrgnenvVU+==H6P}Q-OYjbj9fr`}%Dc)=Mkin#uB#kiKTiHA2!!1mm`WhM z`5caoBnG61MrYAxiUc@q3Fv#OR{@vQQ>@wLC6iJDxgGVhUFZF(q^4-}lJ2btagH2t?zPo>8qt z2aaqf7y7+Rp+z#%DF!V1%M^^#^R(E7Vinr)cwQ`fi(eei$g@oM=}!W?F}*%XQ%tJ( zu1L;*UjAYZ)=0Uvvas@|T)C%8)|q4-_AM7U9lWD?TWq}QNb$#*#~JG(7`#FI+*Ng3B9twI3=EdBG%rLC^tV`b)^{`@5{_j!);~LGY;F;`5420}Jp2sVY zteau{zLeY3wSKA)*mljur@(XqQf@SjqRdbzvOLxdh+N#HW%y6Jl%yzSuR2@=yeidn`w7;6nt6oBLVpJ>IcMM zY8_`!b0APvG;Phs2IsWqiH85eO1y5~Be9ub-tALp&w^(+HPO^h(eIA7REZ{*UFFif z)1U!Pj3e}qdwhr5M}q3>#hqP+lz=UzBws=53*R8;A&f3tVp~io&iQtdn{=7m>2sP= zuToEsQ6lICWsr+`%O@U-v_Xr%?2Z91PRoTQ0M#kIP;g$q{-oTgt>=QtSEf!@BTiDA zf0qpJvyoN}D_LTSAbHhH07;m6vy8ItM#(`!fsE{w$;yLvx=K5?DDWLIC&>#c*Fi4IA7v9t-*I)#D@ zFvSd&OwMb46|_&mj7(K|lK5T%UrcJ?bcm)Vs$> zKdpxv$s{8ZHuy|UmzF1|PcocoX?JiHd)n2}r!bViZdO!tQ3kS?7D)Fibs~i$y`hF$lb{_q@ z91~&FiLcl(`xP_{u7HG5ogOy~gKeF;?^E%?L%jE?JrtW(7Y^hAK^H+$PWmEV|F5_F z>dcv(l^gU+2A`I!(0TfiXT`LbxAMptFhI5o8d1*CZ!UUdIx`Gc0<|Yc77s*|_UdkU zh^~iILZ*>_x&JrCf2 zr>aEH8ng~5MrK{095lCi-EJU%RXb=dn@s;xY|GQe)1^SWW6+r)ZnKlQQDoy5MXDqK zKm$glxQ2s@elY@hXnQ#zj9Oeo!0*y&kY6dTlIuk=E)!1EJg@A$DwFgrz%u!7S7%w^ zK?#Yw*2DG5hqujT16+P&YO@TDUkN5=Zu!rFl1=6svEJbrWhB?wixQe!#((KS#8b;s z@!#+HG_rt^C4YgGw4eX7lqmiQp8Ysk7e&-?m`uS{NQRu}G0(J(&~)eMKRgA$$@~&) z=&d@b+v$f78wbvDG^ox6uz+yD(rOazETOX~pL`AWEfQ?j!!+t>OyD zs~?e~OCb4EijHL$nB(>N4ZzGPX`Rp1ln-cG)H&NVegz-~zV93#s2sZjlRz?F=z3XQ z6azw@0B0uk?HTq{Jdy6;EkGR)7; z88NNAtj(RR1HV=h>T6KD8#i)h@eL#jD^BjUcQw49V+2*5s2)^(c3-J-gd}-u`ehUk zzROX50^RPvfO$tR{05>2))z3_Gwk*x1IVSA&C$l=*lWv3gL7E%chuA+(UFR0(+1)`z@2CeA($18H6V`u;w>sQoJ ztht#RN|u#{0}x-30e*o!$sz)}9VbH~eFTc7=sAmtflFKA&B{IK=5s^iGj?{7;U8zX z3*QgdPgOc1^k5ZsnyW=%f)mKC+OurWX}8Gw2xAr6>O5YkFA|PlFq4q5>GP`2x9jLneKPG3%@y|}v>f9vI ztC<)CfCz7Xx01?#s&23WI;F&c`z6HHA2bsfJUpMbiBa;%D78~+(u!&sBJ!3>A-{N1 zeg8gunY^kZY(%Fqo1?pFKMg`O&{LJ(q^7Vfp2sLJo}1-YPg4RoTKKFJ7FT}D{Eb3* zqlOvR6)S|~*;hhqQc3{*qo&BaGguh?>#>4=)r2g$F+ZyOh%I`Ib^M{u>L3oU6_pfu z=qKGFZPt=pIS=bJk4>OsrjeCXmxG_gN~S`5s@OS84fGI{^5&xSB%* z1YX6?pu?fqn%0fonV+;k3D&`e8eH@58$}|(lDz@wC)+Gvm)@otmWj8&lo!V3Z=1gb zYdv^M9h_|hHzo)c(pVxTRHuw$4S4BzwS}olt0%jL@haDf>Q9mMlSnwm+@p>~ZjtSv z+gh9+f9L1u-rHfc!%)9(cz1$CEdLPwg=;pf=z>XvYvj(1q)a67x=JB0<>i~6Na99w zs3l@Y7Xa_A*gAd1I^j#_;1%}e+W8T65oY>oueES%kMH&rMpBs%C?z)+W0rttWs0j) z#R@rDI_E8cdD;-4rigBgH4` zpT+B&et-MaN_oK+#-jPqO0#^sV83Y`@Qut7b@cl~GXAy5$>b&Y7U^!N+Bv0cK?TpF zPb6^uj&E&#z@KRU-Kww993=0qu;(nXSMDqir*{3IAI+YM0Gi((jSh&&Q-^L-ZC|Yy z2}-;&2R^}mB{nm0Okf!`0UE#|Uje#Jz3sLxP5Vz{OP`Xcgfb#fgKGP=aZ8}N6t_Ly zy3lwH3C_g&Di4KH5k{d^!zwbW* z%s5#G#{(mTGs;cn_^2&yUKvfUeM(znIl2fYI!zPoVbI3?Tu1UIM8YDJ6 zDP_P1&*!KBMeTMvm3M85U*6ssnUc{H9=TSLZ<0x{S-d$*xMHyuZi1}{d`Gsvi%Xml z?9IM*YdEPJlTH}FOjHg~;?bV{re)Cs0s3`-6&?^THn7E4 zbXoZpD7ZG|bm@@g$SDN-iZ}f=3iwfLz2WmZLq7@1yX_8o{|#3e91tCW2#Zu>q2q#8 z)8hi8rDNn*s0pyyVCnTM1}4om`YAEF4}@IgJIo0ELnYi-9u;_ z%Y=i@xzmt}rPIXZsrjjm5#BMA*SQGuTxBJ>SM3pyGek0guCM1*e0;o7Hy@JWkpwE; z-94yKg^slhk1M*my3f%74XUG|5JD*67qmn#334vfTy!6+GtC3IcJ2)&cj+Y}kMbJ4 zkuDuHTvQpdDm46qFDse+BJz#N@9XnPUC8wt1Ft@MmwWvtOfa#ts`heWs^@Q5^hs$N zH6wb5y)`6i3#fHPVE1?7@ZTX*8J-R&8=v=_y6P!kB9g9x6>sPzVlod?Ts<_{xu`=v zb5ZF2A|BQU{8jG?red}^7B7!_+3(OD&%PX2pT+EX+IxqcdbM>;#*}MZ`keaufj#dM zK93%BH~W51y=^Uq8~9Q<`b=~vgnGF;GWp0CfE!$rdYkloDMf+!!zU<%aa5({An#Z> z69$mytkA6_-e2OZuFh!-ozaLP0r2AI4=5@9r^*8xP?BqQM5x6%adulD#5hEns>(^R zseE0KX@_s#wAXL#?ehR!&|ZqofoK12ZA%L|Mvt;{h1aYn*`PD#}Up9TKM)mW(M z&q&7qK6?T7eDLzwFU8!Lrf{KJc1sbdTLAqOgn=0@@|DwX1g9`*9z0$%K5&S*+e_3D zjTsMNt`nb6F7)2UcJoON%_6_?qwfpm{q!{mCc@glu`A(mc}44}vU}hdC0>q|+!X&T zE{4pp)`=P#s6f;OBIN>8KZ@UBu?Zi92j@Q!L|dv3rs5DM)EEY3(WA~sy0UCPv-UZiVGs_AhKnX~0O(d1CMAjx>j<$p!BMgw>{A*Ii z|G2+KEf9{0F{dnP0eC~0%E1f~Gfv_PO~AMZ+PX!cz%H^+7VuHUUlF zq^Ay6Y#lx&cSjrgGGN|r>FcxVb9qp5AikV^uqnDv`-#N=Mz^FU`)iDEvGB>`9qroy z11S6Lb2Jx*gxDG1%v@W5g^Ch^+Uj3bgLPdR4M+mr<@t1M#(C}m2c%ndgTUJtE%lpi z9wR{&+xDGM4RIZ#8iGKPU~(X&2=XGGi8OcxQ5_yM$v+Gopj4<1tq30;A8~SZpJD{6>7w**NaqxqK$??ZMFKZ1 z=qCu{NEA2JK>n3i2r~aQOj-651KDWPwu@{A%tV==AK2f)xo{I4o;eTcxS3$^=_x5V z)GgTqeOT%-Pq(#LBAD|s-&?WJk&*q(EUFP<7|Lj&GuXdQCXT*mbzvZmcGt5IG(V?r zTfZouDKivtZ1--|yv}t{ad*zS!a1;F!PrwsPOH_SKT!eI^21T+b;T0>wH}Y@@IW+s z#`{1R;P1rI2w-_ghS&6l7PomVHt;{Bg9Vhb3H@J64K)}Y_LqASQ^bc934Ent;=%$L zezTsnZw=I?wcK0Ig!B%;H1%zc(z;xlrKeyqT|C(~@?Ti7@WKA5NU)+3$#37Z(Q_ZP zR*{?ElW)8sq#PQFsq9FXF2M)+v4v%sbn|C{zSqW`^)7;HyIi?@ia!tQ5^o5+YPur~ zo@lj5c!Y^z|DMzGgppXkmh0L*Y1n>HsUqN zuvEx_HgDa=aS83Z;Ok#9e~Uq!mS|O9VCB$@wG_v$zueIndq$)sKz1Qnk2JsM_RH#f zS{y&BQQo)Rmc~I;_L*z~ZvJf<35J)qw!jH=`F~7AKwf|~Vj-j%LI#RqU2R%x@c*PBB~I1~!$t^2rVnX}nbqF9TvaKdxVm`m(PW&p3Z$ zKuFiDeWDR+EJ%3pUxIk?OF+NI=}SSiSjHZYb1y4ppl%(S{jA${;Az3NmVTu@eNE^# zig1?W%4X4}10`UAkuax~fshbAIoj;@bI51?t@mRB}wSx<3dFk;{8!wycR8kS{ zpC4F@n~4$Ros%?2mBL9g^pst>(ULdm%8k;|09@B!cCCm?`jnJe0ocH8TY>R$j!%)G zOg$hKbZFK^r1?Ld_1}NeyY>9nxp&?+wIDRu>9juyGa)HLL}%;>Vw*x3ZUJu@^mfcz~ti&>x+ALw<|$*V_sd{pd4%`95G;~i3-RtYlRbpyf4JzJsuluRGqBe3`qggo~t$sMYu0x;uD@EX6dZDDI~f+DHX8OuH)Zphwc z@X+_${pq>3bRRF;uky`N;bry=^Oj3b3AGcYX#zIOi-2ZyMbCD_{hP#{5JZQ&A-V|@ z-`|qFT2l_-qjm@|>JQQCH>}DVQxvkLDaBFwQi7 zSjltN{CkSCzy3Nxqh>spC`Q?!J*#WmTt5!%i)CIqI0UTUzH2K}Wte%?)Jtrn(s*!A z>-4+^_s7W8CLF}l8@`EPp&4Jx)G+j3uM{_9{~~2ur)BCYcTNn>QaQ!oi-LysHN&W{wOB{VW-jQ!xlQ;gh*T9K=VVvu zqXCI@t}XRr?yqb-P~D&#=r6jc!~@Tj$%KK32tgxY9w1gZMPQSvh!I#rB-{y=;tT}V z7Nm2>Yphw?vL2^Ummdt#?oab>V)xJxypS^#wTBCjf0F*>_WU>387!qTXK~`cLf*}i zQtv0SPQ!FBBqg+r%%QAEdrf)Q~5njTwQI4AGB>^@Zw2R%%e($_vkt^bGySZvDQ zrsn3AP6}_t%axHuIG^kC_RtVw`pGrxs0I!Q@85H4S8V%t#oMCC#a*d*jmC#^T;*R} z!k(mkn%gV*iIA$G*0d*jkz>~YwcT7uKzRsuR%NKz ztOrF&?RR0IX8|%M%*22NG%ECc>NLa7ViS6?+RFQwvj^3u(xzwP*$MI+>nP84+eWr? zD96bT(kMVjZJBpTv-I;}oof2}bGVQ(25$Ds@+bI5YH3j%W?*AQZHP+-He*t^S8g43 zA}N68mqMUyKKAhWQ!01Z=^1+VI`dPXQp(@`f_axWD_ALVdOMPwI(oA{BQhTKc+3*a ziQkbR?O)D+V&e=2-Q^&CtcTf>&NBy4(r*CkV42bevlZh(j1)sNSp9(|oH3_u~WlscTe|1E3<@yYYeL0Y`{6se?%YD)3XQWOj0ewX2ZT5*H6ZQ=V=fneYr!+gvwJsZx%bt5R-U=E14wE z2Zr;@l_D95Q^d_Ae43@U1Xrd=Raed;Bo~W}iZZ}Ixk+S9omFc>rDm@q>K1$a8nZDc0*_ zrV7>XcV26$A?y;k-ZT;>{zx0medL^CafQCKMk{90tchh+>-k?daT89TyJd&`a|_YL|JRt-GTqD;2?WO*{Q{ zt^H^n7b5QoHmjNi0Cso)Q$REFtJrBByJ?)5kA%yQ z^`cXKesPX9FdZa3<6x!X?5vvj5T%@Szq{C5o37qNMnq11CO7bGXaDj{K;2n0z@+Rs zWhq_okxg{8kyVZ<4JZ38Bti+s28>>+vZAz;ZPX|Bp-S$>g%tfjaPqN0Ud z#x!{Ihn^|lWi0w}-^yRLPn)xwM5J9DKxhzlw`qUP_vD@#v#9v30AsXXCy#7d^7)?L#)F2DtdC zs}QSieK*p}WLtHd&RDBnRhFH!z7kH1#Z~w)7;dx+EEx%ALmKGBzR(PEoZ3+>YkhzeW&Z+W)B*1i^_Qq zm%e9OML*5>kz-I8qaY#69QQ0UbJ|Jp8b?u#nr!_DJ_8czOZ$MOBDvd-t@+p#y2Wv_ z7A5~XlNQ>!g*x(_91e4d!;Uuf`Q*}!GX#>M4@5w$gft7hswXUfkPv0)Sf2W}RrpI2 z6b)U_88>G;lfaI%SQm&fh<+(DjBY-$pe>Zz>r5qz`y6Vkb+sn}@3X(gYttKnIWfYZ z*wybC$6@$n)M)9>FO-7MYB;pjI8|1%NAf7tPwxay#o75-s-PHY&QfX9hd#@N!DSpb z_tXNU#y-m7xUjQ>_AltQ41ZPR3votQlA!?rW%JTrzG+b>ng&tssM>qiNj%kG(ry39qZyQ)n>NVe*4-XQ@3R4++e?x^mBg<17?{XQZ_O%;(FYQnt;s_HB)4pja?hr_@uH9uS$-k@d-H zt8&b-)_O}x95JB&yy=28n>afVmuc<`wqFqV0)6l8n&n_vV{Xk6`EPUz?6#i94N)O5 zrEPDWfokyx9o5a1>KI^@FU#}Nlmh#+=BGmoZX+Yu-!2w8(S_kn*`Xr zIgqPYnZ+}Dor~UYrEGCsp9${nJd*mnrS$&dSVJE313_p%K!=xo_2eKB*Gl%AuZRD* z0Q#Senl?NRB%|*PV4eBFf0G<(Blk-@$R58#o3{BI*Y zkSW<6!L>f;pGLRMA_-k<4!|Sh-;tZ?P`5mvF&6 z!q}eB&$H;&+z#NZ{VUi9oBx=obJe6^Vf>h!PRY%Y;1XSd5_Dt(6IO4|qR`t+1h08_ zjk#dXHhDpiC4boonI9;r(Aj$*QdcrI3m43Fy`e@OABh1Yj;)TH5Z#JhwLVb_8HxIC z=W7BGJ`lI+;+ijYlMWfI2T^Uya8lp&?^qpRSS4APKDX*&ywAc zgwaJA?vQTRbJx1Dq`Q*hqGY~(7p#%Xm?_aGI(f6-@;BkVU6W@r`1 zjSd-#7p65JCz_)&#j^ZT7XBRPILG+DNXmA2LQNkCF3rbiJ5>+n*V-L-DHLlunR;C^ zcQE`j;U00N1M=A^z4v^*LD)9mx;P%O83h3}*oA8qzrNyejC$RyBmRx0!R;`ws@MQu zK%l?9f2x}lx#n3W$ZRbvf~-~I@Xwcj`Y15xnL5y}O>t}JhZ}59a9eNhuR0JM_V!fP z<`*KxL=Y)86b+)O!G;6W`e#MUOAKhB6;AnH+#6b|&9V^P|Ksr7Z|t5NEy*zV{=zMG z-wYURqegY6mr^BY{`CxsqL3t=Y)9g7>R#4wMXzLDn>NdS(aWhTIsKK{3}6J|B9Mn? zio24J+A3oO7mU(braj-)E{Inbl`;2spmI~=l^lGZ1We|6&=|4xD`-j?Vx|Y5j_WwDnDY09{-g5IIVcd zmc-ye$cIBMIbA@=S1O|MJ=F$8=a2);F{8997Lm;TaHk>BCRrUL^{NTlNwvO|LQ2imJge&{Z&Z^~##gya?%frt?R?$$$~nOAW_@)B1@>(EJO z%NCtTcB9}6Q zRpB3l0(8{}Pr0Qt)8Hmo*j=yoAja%H*OX&ZO1;V^b^Zu-d(P|l%LPDPjzWwx4BbF7 zu+Wrw@np6N(R<8~eWXs*Ye@X-4o~n=h>B%hVBZ+~ac$i6f_Dn>K3x*0m8LZfDKzZ7EjL_c&%c%;MvP;qhA4Z4L^x7IF=j>ayf9eoO5T=o$uT-0rNi1WR}xFVT2d*C)8)mm%bF?qC8(q-2M z4J{kzfsbjKN4PKp9O~E{twT&c3U1b}mRFxBZ%$92Mih9mO&QH~3?ZO4)fjximjd9qMMOGOVN@W}cX0`W*ibor#ew`tB3Tp!vlHGg%V1 zO9jec9>1|+PyBV1(;o~fhP3%qp^vs#B2r<+e9IMvpMsg10JAJ-d*qp8YIu;ULv z8GL`~^alF1hZPYVjv^DL&mFe)+u5$fNduy(#{bVZd|-)x-%g1AH;bEL`LY8pLcX!1 zM`OgNc6UKcYF=U~Xz4#w^9x+34B)amZ;3U-b@Kx|2oyHvc`t4r8?5+!)s*L>?1^%ek+BJnv}l-bAzeqy-rMck8eQUxJ-6=wgD8kj%*) z&)b6Lu}tJ@ExJs@c5seLD9p;kjtS-nbVgF&0J~xD7wS9v)Q;QjG~B5JM(vk*S6#!8 z=jLXa?YW&5?{6M9tY2&aH~xLn?Rg~!#srJHL%Zs?2mWmExI_bEg%zI(5Wp16C)1eg z%$@HG?qf=IF25;9v|8G&4i?$pnqK#6ci2sMxK|BwPPH&>(zu<6Ws%O2sI)9h)FgLn zchL6@s7O|hm;O*+f}*K|NGr#OUs0Cu(s2npSC`+3eAz^Ke5>3i*`FOWe$hHSiC5VK z(9iKyj&C&lfJQd_m?64+>cSxkH_0ZWPcEOT{zEGJPT^0L9I1#`-JpFhUNxZ!(-ENj zSaXyW0%LR)~jv0JI5(Vg<7?791*WMQ6wqujGw7T7CBBR&^BCFT!!*0jYBX(Qnl| zhtGLo4?*Ze%M*IkajIp=I z(b~vFB1!88I=PD`+O26yh+2ffvgVF=X0%=!?EcgO`Fx;d?i6`(qX2Df9ofY%hlfpWRHU zQ%V$5xD1&9s`eA!(H8ZG!z4nQ`5l%rtcu))Y#syrqeK-|43W*zcD2_Rh>qiGS-xSd zffK{7uqB>KC0W=3^f_PUBDWBkGv}x3z=iG2q8}wvzgxh^?Me595SFSy8vfF8JsW~RRN$~)SO)9_= z2V@|_?8K2V2gH5 z{huBRmz$#BX+M#)d1mC8iEv@xT6se$x5Tg)#y10+vW=6S*ITo>i=`*dsI6@C5-+@$ zoX>y01%BK}4OtHL*?0L->SY%MiUJEmg*`IZ2){>x5g?^rqrKx`jkdxHc&J8OrBg3; z|5jo;OvkkE8OCbGszt=zYBn!r%xdt!8A)|un5$&93H->QF~!``+v>IMMH-juG$JnA zdOh{QUV6pdok}Y#`-EVkG4MrsYtCKcAKq_X{Zz}NBZS^{h;@s70)Zfu&PJQ1nIHD$ zhz~{9&A~fkO$ubu8`N7w>eXNk9ddA1UhPQ{+teV(L9kB5^6YOl=Xr_qI!nZEg|HQx z=>tOUcOFTKeFpy%aq}=dp0c^SUZD=9nMG~iD3Wc@g)GLqN0QDTQUgvfw3YDyb#t^p zHQVNFC-sU{b?DLH&2Vf(B4<*{))Ma^xo@kjBAwLbBR%*25`BEmhe zPeI0BPZ*=n#N+$vRY1qGjkJ+7>Jre#2r5$_x+Fia`h;uAOk6(r9G4O!vi<}9Km4Ud zUOEhvnW(x!S8SmH8D=EL2fF;HsyHn~Eue6s=0f#(&^IPXFlw@p( zD$HPNqG5Vpk?y$BasHodF^%0Y#G{=w(oG(S)b_)vH~PqOM(=7ggQDjxc4ha%bI^&F?+z@D2tWk$=gGmzT$3@VBC5sF5{yh%i&V48O|A9;y+)#5Ueq< z9np0{4g;0VDc=|vR2y5=3>zamCj?o#0?qJ1nqrF;ETDSa`~~Pu(s-q%tA`m5sPH#6 zh!$yd_o$DC&y;~zL;Nj?Xisbe#Eo57o~2d5z_b#Q=P~*J-vu6 z>X?@bL>q1YVGEV^v z4BmoS>#mfWdvbT^o$LDIFIL~L8|rxZ-Id$}a>j6ol0dYW>NB{J&#SCAk8Cfv!E0lu zgesTOR0tbtaCW<&!*jff2-g0I$i|?rA+7b8UT_%r*aFq6=;W;dT?4XK;3j>A9G)w) zS1LO9j|hC`*3?|yw(15hFQUhz#mD!h@H69`aT;C9FyCWWE!Xdc43qq3tvZFT3bCA+ za0uGR3Y2ohg|mf2eLnq=CV@XpL_fw`;I%Y7A4-FX6vo%WbN1|kaqR;P3d5Xz-17U&8%5Yz*PJl9hSG~5y7};ZLE~k~DTprgb4iuGC_d;N2BC2_2 z&yCK$S$1x#eH+Y2ly?RCM(ecwWpg$dfAhd>anKR(9^WJ+R0`uI!FB9Qx+OyV88LO| z<~5>lH*Cd58dsg5W7C?2W3}rEIf?izwdT(ACk%i$J0Zm_cf}yVt_bVI<6NQtn@n}K z(_$Ut@B}HcyKJXD`x2c1mS|^s`%t+Px5x+-Cu#%$JkXr3&N(5&k2x4L48R9|>6{#p zvbv~*1JbQ&K<=A{!7-YDbAX`#lLJJ$q|ZM$DES96HABvbVA?MHyYs_d1)ZUc8u2c1_SMB6v=7NKx;`FRGAtzRrR znXO^b&hYZBc#kqCZe@}0w= zNW+BxRDUx%GexMilY1qrNbhK*2SMB27pw5bT5|T869VqLA!DQ;Uz;~}p+|X;4EH2Z z#>Vc^E82WW2k;CB)z>R*4&WMY4}?5SD4_w0muQ{0JYAG7+0B&x25Bg%aqn0lHZ_Wj zCx1!tc&>iO@p1q3Yw||#Vm8|-hg#2@s$a9%-T_OD*Kep&j3^&T3#dXoH0b}RYG4t5 zTrpw1GYEV6GkG>D5XLE5z3`5hGojDJld>nN#g3s^U(q*~NxDDgC_GBlQJPLOhAg1R z(<_u-N3v@YHuY`$s$iRTPF2lfK>q4x$IR_a?QE<@%I!IuxO)G>kIs*eOw#Rb)tdba z$P`R}y>Rd#`=vzaz-p#Ps%=$jUV!Ta0@+s$mU}e^M)iE{(@i zD|cOMIEO7XnOcUxmO(BK8)EpcL2j1085wq?olcWN zLKB6Mc+uI)g*IY49gY+MBDBWaLB*IjOv5;}eSCrEovxv4x&;f9%0Xrw+(Ax6{G;>P z!%~g~CP*a|vJMjh$A9M(e~S*W@j*o$J69bV=IW+fr_F$L+wRb&2Z-}`^)uJG;p|1d z+tlo8<9CsxWw3;H;-^3;6d-|<0Jd8&>g4Sx`yL0Q7#Etfv#W?Qu!!6wBikoy4JDCKee@)g8TjBRcBk1OCM%C8x)D%$xJG5E_s8hF3M$3%H$7z3=C$nXzG;jrmH;1JNmC|BpI?> z>a=e-O|$iGdgtmJ(})JqBdlIWUWZkWiw$|aV$?u-NR`Y*cQcLcD;wEKAe%$XCOm`f z=w-Les486ZDA$`l7M~ZXtbepm>C$l_ywEWdk+i+7S~`iiQ-KQ*YBi>uBV@wZFS2lt(begQ!EG_s&T&RYx#tZ~C9 zTIFdq&Gyest-tVdX0t4?juJw)){?Ui6%6jKpY|v(7PjAp5Wy!_G(MIVL zb2lZav2A~I_1#CjVSeBgad+V8j*N`%0ey2gp@be%BXKGQlXs*>v5fMZk!UjE|xUh{_hom%Of%MPw1V%xY> z1$dciPYK(x(ktJO`?E0M087bf?Xc=_2oZ$nER=d!sbUw_@&KmDF&sHAP`rB8R`T@g5 z!o5~~RefXk==kZL+k9yXJ?rWw1oD55;5FU2t7f~paK@i>*dl`w_e^ODMECN-Hd4Vd zT?#K<=?(!pbKErSpHx?TZrT~a{yK{n?xQ`GBJoO`REBz+RBm!+#-wu?lP!1MHObuy z0cK-^Yob%TQ$HCUP9jRjMQmK1e<$-{_Rj1EH#GCR$$>0|KRTpVL$oE98l=)1*jedOJ|Su@JR3s;%*CFV(Kjd`^Lb2#`Rc; zmTAN`M)wBR1xG8%A5&jy@~sN`TEZr{@8HEYz>VXjTW!x;*SmsW)Z=H8Z~G0uU@g|~ zepGM&kbT=Ba{73u0CxasGd?I6%3x_I; zY=@d#(~02FEH{`Cy^BnW24yr&PZUfm(xr76=Hy{cs}nvU)>(F~Q^t4<#-LR+_^rvy znh^`h!<>b2qI#}>eYd`z5NEC<=lw-g7|zLbO0y}&=o2o#HDT&ri^sb|flDcu3EXj-b}i-d(BiZl1cGD*C8hNgY+vXZ2l} z6}zS~^RV@RPvWzeQdWOT@raa9fe(~|Em})|dzA-);$DTlV4@)p^&FaUB# zCa8q|Ac%%{y=coJoRnOEJSPMH*LTq_dOuk$esaCu(ej1TiTMxnZXzGjcEiiEmSGGz zH>Q`oCFUth@Bm&nX&F1mbKYvo#gl0w#Y>|m+X-?=8oJMcI{uuVuMrlQ zKy7n{Zgzt2Y4`#tMo|`Q3&&;%^<(h9)~Dv<<4scxK;ZK5c;)Wy?*dh50XLyuUo4ZW zxT`C_4Gthfv3brZec zp3(o={Nt@BAGCb#*rQa4!;QdPdXJ3d*HO`kjZ~fb{CH(;%!Nj?YeP8kz@BHirGklCrk zAspNh-#D#^eSuclL+szfO%?KbIf8m3+#x!cT@iTf?Z|OobHof7uU@#WS)tw5Qr})I zIlPEb9cZl@KL%kU%$H(`s=g^)7k|Rmgihs7DG58FsSbB?uTjUvA=JIgcm0QJARGdNJ*oBNk z;yZ^D-V!YIzcPk7N8>qHZqb#rfMbHk^ey*WsY84t(0Y2*{2}+Rj>sv#;_V4`T!(Yb znY}EXyN&TZiK*ia{>yLCJ#Ck;6aAZ(TShRB_af%*yI(C0C1GHRwJPn5F=xS;%w($< zw}KB#m(4NM7lrTHdeUfaP_kEXM&72@*3mGGw$SP&Qu*V#XlqwiN zo~^n%TnTzxc6FNCcrJP3nUc0h(b^~LtC2A7Q9MXI3yLOIY>>ScDkA?QNAP1)V}>`o zbP`V>ZIOz9r!Y0>4vq?U;yBY&00lKZ(I>2PKwFQO?;) zmuU&5i7a%n(}Yl-;Zh`!-Z?~yA*d`n)`FFWd8d)$MAXz*PqT6OwW~9ez8nf!c%Lp_ zcEtbr_-=XU+3b&>>E*j}g7qrXd&bH-qEJkkpRox*gcUyu!maEN_j3}jEF%dxJL{S3 zIPUf;0PK6{%u?+S*zQZ;H_f8!X|M(~Xs{wI*5~_-Xsj%j6I>pT`T(WN^eT#2JE9)i z>^?OTu{bSd+%iAFl$7Yr?8(Mvo%NP&RXp67hJ{2OKyK_t$~9OM*^4iBevUw3_+e8= z_%C+-ekTL&UyI)6Wiix_6A{YZN!1!e-vCAO@P8W<0eY5DlQvH6fds%_FLK*|++wsV zm4;mZJ-wX$O9C6OB;b#fh6BB!0oz3{_+)Zc@2PIj__ukwYjN%aSZwV4&C&P_UTX`N~Qi6f-&I(xDF+kaSjI8 zwBLx`u;>|&Lt1>UIhg{MmmK1*p0YxHyA0<;?RuTk#ASOraPVwSDWGFW6 zJ~A-*cD)IQ5JO@&=yr$=_b?tgdbM=F%%k6aeWGH=jn8ukCCZm+v0uirb24#F=U0Av zobk2Ur;HjfnkVd2;OHti>pDnb@4jriEXc0;mTLqD8gefE>R$9t&+gzlbOt(invI-uG*dzZ7B`tumASKt$=xLIri!m>3=3Pi{NL! zGDV@hC!Kh+wjqXnnr>VU81cvMkO@$W@$7W_6>0tntZI)-yzGT;uZCRe6qt5}`_ zS2&I?eEk$O$>>p-H>*64UYb}&oe59ey5?7v-HlbB)PA@RFG&5)JA)tgcql|WW0&O< zg>B?Zv#Olh?Z{bz+BvXI=oKn)ng5Vk8sZ{o;M=R`v#CFOEE(SnwWHGmmCeyPs1dug z|B}vrU)(5=lcf%dT8zfgY`Kno$2Bx;#8N!?-j{P*8@aopX2ifD%qNB@Xu?RiD;)V| ze$CaUC|#s0=F2lNb>|!y6Ptd_C^=>*z=A!MG-3FtpRujW@eY1%UC4f2CfM55YsKf% zR^35-nl+{0Us!=5qkSQtUX{=Hl}F_8_|_5%@^q2@YLoL~PHQjmrj~Ep_ewg~V)IqK zluq`VKBwENG`Pvzjb%80W!8hF_Vt7S%{oFQ{_M!#n`qO!_2VT`n`8YJ_if+H#jV*W zWD>*%{|S@ERSuX2{>xbwS-{A!&VH}@2<8v<;w@a~EoGO!M1$!dQ#fTCwiCr^b)o4D zQPY3KGwpTEE+h`fz}sifcSF(=OF18Dyn{bvz(CvHD+tx?!S!n^1imCNSm{_W zINxRrCbyE#7sqFkuL(1lCavN0ynBnmCcGtp@ZG@i?CksjTV1hbmp9|n+GQqEwJ~<~ zt>ae=H-kTtwNDzU{gB6fjX%n9VpGZs+w4kD`l}I#_GXZV8BHf-cvcO&a#+HHm}oS< z`!FmN3?jaHy2^!$!C@xvr8UjK9%tCSvh*XU?OVJn^03%_o+xF{t-{Tl76A_ znr1T6T|s2hfeIn8PHj7j!r6y8+_F+M(+E2DtEn~k{hnTUJ3CI6M4Y8h(3JO;C#xYV zdAeuco>DySq*JNwwl>O^*tWlKdfH478?9}n2%r44N~aF221=Vo9^(@`uI~Eza>#ld z)QKh$q$Mvx>$X8LLk!FKuC{_y_v_&_KKp=u9x8!~n`B165X#SR@i}Ms9p(>(bbkbn z>Lx`3^e#yQlmos^q_R8FnekFx;*s)O&)LMgfR&mZKh zY~|ixUpAOJ^M|Z`JqPtTD$qsUt7W{*bvqVymOjyW%~nqrbv9mt_8plz!{YWG;j{j> zI6Q}2hwmAON<)eW`I-HK-28?5Q+yZwoWKYzgF^6az0E&t_dMY3&P?JMgG=Ej1mTMu zzF~IWOCB{fkJ`@8Olj?ksULsFsz`_p_+96N>00`7D<1WTFI7HjYAxk;nAcKN_iIV8c35gWHau4FpSJ&N$-mBq_*Y3TSH&87K`u?+ zIS)m|*8xMGm4^NR*Vgs}9zIoy`W|&l0m9hN|2emGpewGU{P*z0ZqXSxJkOKQ@S3{q zz)XuqsldYnPElf1AzX3VeoBiwg=xHD>gwG8Kh9+Q$S|-lZ{@u2jFdKssyO!yd}9PY zAK@Z~ruv{XM8Z(uGfZgLt^70aSsMM+OLvxcaYcllXIVAx2)ZexcU$#L=N8> zl$z>SY1KeV-muW0On+J0aywnlY-zh+c3d{?c3NqyLiDWM-)i>0kZvP+D|g;5xnxhZ zl0!>TZ9?YxJrnUp(?M)C*lwQA%m_4PS}|EAyP!n`2=C~EX7pR8+a$Nu2!Jh=7m{TV zmQi;#o$!2ikB>rC?NYeMYL5f>mjz-dN<4oWY*U2)#1dKV+Q=Etl4HbCSM}HcYhJ4dd$0=8)>4u_HiL!wp@be0?0lCtb;8_4RlFEBqKzdzy;qFe?8T z_hvpQc$s_C2u@e!ao$Q#19XxKEUNR#>%!b!5~vlRM7`gMrT${tp~E{p0^}ZFnbI<} zXUVbL(-((}gZex(`CB(bj?Hl>ouq>FQW z?$bn<+teVl5qg)UqQaP?uai8(gAY$s=@}JPUtR(yUO(dGp=hx2=|5JmII%)zUHIGD z+xpd-3ova^IvW#rO3qIx?WPv;DISvjmqANKUMbBZE7Q|Aw)gv+!pyh4t z57QdSGJeyf>lC-kR)0vi`=e~kgn=cy|DkNP|B05<`SkK9zEKVbN*0=`8P=!rq~IuH z&JE4PgeqpYW?mt}oZOPlRUFS-#<21)D`BimWfK)E-=NBUs@}ijMq2*~iH4%R+DRKL zZYk*Ykw_3JfEgi{U}onFPCr!RPk{dBhsuOF?I%{9ccsfHvr>oRKml&pJWP==vqgwl zp@i1eP<8^zc#pwYgbO7dw9i9gP1>nS$XHv5#t_AI^#o*qS-+$xZ$%IYE-DGPbGZL2 zIk4kL0LT&o4v-6xQWprxk=w00WbBu;VI|-uZ7Gn?dS%dAQ&tq<3zDKR67rza{~h8`+OzIJcQvqB-@z51{$!tyF}tC9Qr_bs7i}}u zr&*Ykg_qTme0Xc8M8-XL!f;NlW=3qAt7#-iHm?o(x`f>C{C0Y#Rjd%X|I}>221@!A zif@hDwf!7-rZw&dfmGO{g^YzAEqhgVL7lV`bTnC-0ET!`E|S%We6Jf}n&4_}@WY+G zn@soD5KRqPHO8lan8Y7h&M7nW1PH4D-N&5MBykcI3vkr8isp66t=a&$h$}XRvzZPH zvSoSqU>;Npl-D<+T8z4P{?e@{L(qa2K82?1!X3d{G03g2{uFnKzx%#4U=?oGZ$D-6 zW2#D^!w#0X{vKj^(jJ=1m^#}{EKklt@24M;p*J-{_@(q#+gdk`gy+0()EoxC@Lv@e zB91V-ZLy=m5X|6wPHim4v={h%PVkBg@msQI@W@&1yPkfVxvQ~USrHm?BDq-5vzAUh z%IY}wuYGnjP9~c5F#OFVFk(50UbRjZMFhYDPGMX7C6)X}2PA~}u32V|C^LX;Kc>|6 z8}`BbCRM<3bV@3X1tyvKy`8-tj9>=Y`qI_U16<1EW8B?HR)2OJc9Xe2j%u1s4!Cno z>9I4<2V)1G0x`=Dq!pft15z5+Pk0{�}{&!u!(o>DjQw=MTGGZavRo3D%$qP7hV_ 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%0DPK_1bQjQH~(4q>&Ps z@An$P->1!_%+|%W6n0aa^ZM9QBvQ%*uVxW2VZo1q6=8UTJ}KZ>QNJqP`O~kJl?lL>27@ zt2(I;^F#p0Kv`O%r&*5RCI$8Zi@j76^icNAfb zUWe?h1_qRiGg>Sj?oxvXNi?Ca_3Ry(HC87$7J4QH))Iq=4cBS);8zXT&AoBm8*cBS z*w047JJlR1S1ciJ>9`c_J-KSxW;eQYd|U)tmWVJ;m<2#;e(^gM$^D6a3xv9}2P76g zTP^N0wkqTG5bY0h0X?pzO${RX7B4R>`Y)TrM+QfTPR?|)9ysc){U6q6XiPEcSRCm5 z>_zXGbYUA-iopHCA7NHhS$8D+@BM!>(X&@QH*;ZJ&=vW78r_zv9#O~EWH};s46KX7 zp6Rh~VlUDfS|#xy?)sVq4~YAx(IMSGjSkh{8XZR5L?)g37*Y7){&hHewkq#WqeE9v zo+=eRS6MOokNj)py%`Ira-we@6p5f*Y2?x{aCtVA_S}hNMIcKNs_xO0@ zCz6nsa`r_v$QXzB))j6R4v9tv2~8J_^gZX}4jN?@0F&EbT7LJoMm>31SjOeMQ1P9( zT^uXgeUJ=)i$Q33#Ws|`T3>`h+`)}!xc#26zv!eDe=B0 zu4rJiSe9pJoRu9%*IV|DL82<$wVg?jE5L=Phrc-gQ)ED=w(4N=kEi!{Xzk7Zuw(a0 zyRgJk0O8M-rTDF_IK>PT#V7YJq3`wobz}{0?zZ$~ z`~%T;as#oYC>c#K(+Lhzn7F|9Qbl%Wljsl@ED7H#kqv(w{q-S)3u^-y{hcQgr21QB z0V1$m-7E7F>ch}?y<3eBydT;Ws3FBMuRcb|VvE+ckb?VtK& zaVT!XM_2K3hZz2HVujMU!yj@+HI_kvXG}hr3gw0J-0H$RiqiSMR_e1m*(BUDd<%7drR*Ad5R&F(4R(fCFG=6x zD(lf<5shyHvmosEQRH^FTa);2mZq}=(Q*QT?l*0BdnA8fssf^CdkAJi_;7C{c9gs& zax^7RzV%S$em3T{5^$y#wqnR4x>&5eUhKId(X@3(t4%m*PaXe8{Df-ZA&%|M%r;n%Dylwl>_C5~BDqL2kPt70o%=mhmb(W$Qp~!AWrbo^<5z80% zX-%h`DjN3nHI|_v+mYvYBnH^y^DtFho>!57t4W8*bc)4;XR22EXW2aHfj-Cd@(!91rYGN5KI3Qvk zV<;T4oW!qM&!H$R=><&<7chftA&cuM2dsA)0d|#maDb(+HR3{=Jt;cJ0H98cRA`szWX(PjD7o`^G@ye9xp zK(N2q6KT`JXr-yg`aLMVofZ-h2U(y&Otu`>_G$+RfMC1@_JQ$^T<_mDMxEGbR}wM# z>y<^AxAqit38=--?{7aKYDe0qL)M<%ODmX817%#^xvAnpB%$j*bISGD^;4k|HEa!Q z86GSeIVnm;?MTeR?b@iP2sDP;7 zp&*Ho+ovweOlrGz;TmhHsOtDhI6&Nn--G55{LV~qDQ6AxAdDr-9dvgQi|NTH6#l)H z2>ed}*1G}jtP1#WY_|c06H`0P;|-1AT@cAq&F5$RlXsW8!N4ZM3ID4W5yInD9+j+z z8A<&0ksQDj#_+L}lM>Oh?5x6J_&mB!{%sx;ai=`Z@waK@z);*@J`-sfhb8C8feg!K zG;8QBX%a6}Xmt#%BS1>Be3Nlf%%0&j(LWu-{_fDZD@gs~# zP99^^>bsGA@`F1IgskW-v8D!NTO`XqDo9jDV|znPJ40qHP01;k!-w@`%;1m)qu4+? z%IbA85|8F2jNDF;v_AdChg8*+F(zecf`Gjk7h%UsoYSkhbF1V^F#6!Rd zb$e>ow|cf>`FyQ6_O#0>MxPIGT?j}hZOk3z0lgC2p`l0I{B(-%R$+p$=SOij?CbQc>M!mv_2_i&cUo!8ksF$gIyO} z@`D{Y0;YHqqa=6=DZ+guK0hdkrQIhAX&MO%*Q*Z&9S7)pGog#W|M04B`3gg|( zr&rutu-?NHW$~*D=@kzz*6E0qKMI4OZZ3&jeHiP92Lg`1rUK2c zcEn*U16}tjj@^!Cu!%!BN-Mrq$u9Bh7zw1_nEpJrkkr(Eits*0CTs-~Swkk^caQZaavHvk z>ijA*=|(p?dMB?ENOKp}n43MSbb=@=I16I*D4CcW4F+ugPytvg5;7pVRbjV2i&bH- zKDQ0%UtQN+HP8Rf0WJUME*}wt$yFw^B<;r?5Tx&O#jV8v=KEB3DO2VJ*C*H1*Luzi z;J+ZCKIoxfw4I2>nw#mhoXmgTCebg2ct)G{yPR zyg^GpnhCf#hZw(loh&U0q<=)-(OrWTICWgqY#MW11Op0g#Cj)L>^X|hBfL@mb-~N| z?SV6XR9$B`q)(E0e@6-y^za>P% zy9Vxs?s5Vr>5GgXknO=I3Hipf=EK3pcEQ-Lo1;GQw`@}&yhPTZBr!mJ!Ve(ATk~55 zKz;oL2rrp6FsXc22-xGo&GUDEg50~%xxe}om{D)~F*@t!l3$xeJG~DW{n^(^ zGOSUVHO}qU1)sVF=j$oElk~><6x(x*!UZvAd3lT3M~`|z$&D7W9cnA?pT`f z!xj8Iu}j<5v$~yjFduuCr_xZar?JEk#9b=tEc0TXs_r>pBCG?=l}-taTO&c#w^cuz zCbr@%$%tR{vce9t}=ZEtwwr0$rWFoug@r21qigm$D?ujGY8c znTD<#$~BKc1NEn16O){a#X$ObTbym7(W=LPLJL;8n!1$##$ThNi0apon^ba-q++)Q zbFAQE;h_FY&G;)`-%~#BqVb6Y*Q69cD(z22K>@i8nrA$eCVD?drm!ggZ3}AOC?wwd z)mQXV@#-2Lq3_*Up?$=gq=yD~JWCAWK3+nqVhJ*iAmhzv=}o6`MT(I?8Bk$22t_-NS748o$y0)LR38D&4IqrK%$#S>4Fy((?#OxG--OPFd0Dmi@) z&P&{W9_vD5deF0d3vvdQ^B~u(P)9dJkP33h?8C^dPrf=YSPr>6yw*EwxKy3zvdc#E z^g?B?uv)0+vO1A-I9t;B^GZN>Q^LOox*;~uNAX%Z@!Z>@m~Jj^bxPIjSSK+K8?y`Q zMunlH&%;q;F_cFodYVha-=f@K=V*?53(tJRylsDVg-^+GyKjn0DrOMoreGqvw1p~z z(CR{e$kNm@;99_2R-WZ_(CVB7ZDAO06oUcTmgVcRJwt1~j=%u87UH1Or1cw%_25YD z_k^peBbMsPoj2loU)M&?o4h$tlh3R(V-_j9c997#tjK74lKSSg)>-q@3+%{R>L!Qv z3KZbIX0MQf$u90}H&)JO`DdtEmEsAapASsGKNw2uZ^*b_v>^FW+ay!u6jhK*ZLoiH zldg7NwC_}N54M?6ZSK*o<_@Xlc_6SCdc;fh`ZT+hdO)dH7p&t%IWKmqTh_PQI(2Ta*E8hUbv{N-do#cGh{%jDI5IN9tj?!dXA#%z$BO} zb;vqKxlt7$f@$w&PGm)S*MQRzAryFMh0JKL>O58()}VT{b-bgdUG89`J*J^m0Ouup^hi+Uu}pL6fR{4!Y{Ipx;tfeU^Xm)Hem{YX5I; z4S$N>o+HdqK6MrKSAcP6+BG478@4bqUPnl>seIn^(v8N;{{1tS0&_Fx3SDSZM$~4i zhrOp)25f+`B{X1nUTb@Ik=Z=d3L(K1cP$yUipw`M?gws$^xgG-;!z>HqePSmrM!WM z#Mdj*i{!a_LnOwljsu4xK^jvOYcSOHa;R9{wIFSDr!`mBSYE`({D2_g6eQ3&x*n&V zpJtgSt`wPj$h{3&#dFx|cRr}zyMyBHiaMxm#H*X%b5oq{v>sDuwVcbS_*is_))?x< zd)p1wk@%RiCz#lvb9_DEzFp^bQ%H3QE~rd=%eQ)9cIo@hKTZaa%?328!Il<;pf9!WEPYl5U} zFJRHVe~@*4bofTVw3pMI4<78lZxCW)gPF(-dy_4oYV?5)ngiYn_WQY=c=+&%jBfd4ZJgd ze=>oW-Q`R8Yf;%gR-jqlc*O?yM#+@!`}T{{JmKWwkEvnv=rs^LxHP+Z^pN}lZQWMw zesalqq@2#QI!V-V{A}YXOV+mp+Xm^x-a$(ib)40V7@=8nCV7tFkuqad)$W`Kp;<(> zeHzZr9OKue<5v{mo6D=jflJECmNW}ev31jyBmMK%g|3`ID939{Z-2?_Wc$P_ST= zR`jRD&6@}s3C}$W;xuHPT^skpP0u?e9I4850svlj&qWgcMF*ZUhwa0vCp1D4L+@>E zSbk_P#Sd-mfuEm25Tw`G+pO`qBe7TJxapWNON~Li9XM1kd4bF_9uzcf9lQpnl*-ga z08d=aa|9czZE|H2jT+Mu5@{T!DiNFLK63mc9->T%Cp)R6ttHXTam`<*ODZ%pgctNs z-O4UP5}h?UI-A&jOxJSd@hn0*Q(K|j6V*~jZOkbOZOJjmb7a$S0~yv;4g#+xMG_}e z6lM^AkigZ;=+;w2<*|6<#^@G7YnA$$X^q77C%Hsx_QH?-oo3*a{oHm-cLmRn#@vj$ zSy$RH7mp2D`p)|qN6+ysVNjPA?Y@w#0v!}hf2f0kzLFmw-UJ`t%_ zvYk6CAC5QYga=-;LS2h?x|mn^-N?2+zX1EzT7(vY_X#g9m9xYr6IzBptdF1>tYNWm zVLXLOg5w1uz_PHV5hxybuFTs z<8U;^#+7}M$nUN+=vkWMQJ3@BJxYfxR$`nRA_CW>xAdY)b!f7!(4g5c6eWU z9&TYsUseO7>^_f;f#%&^Rejn`gOd{VqIZo8RnWtc8oz?whGnXt(|!+?m4~X`29o0s zFaWU?>Z+p55``7DZ&C;V8Hhd|ic%|E*YAkB_V;ux79e0Mv~@oZ*W!076XOtlTemIr zS^?Fegj>pnj;T{KM*S2A!A-_}FE!Jc5h z7V6nkIBVICY!{@Y-D>`-)Ml82Qgg*7$JlKJkA#0;-Wo%^X)xmQWjuhR)=Y=d2whm* zznEt9>^*4IZPWlL$b_TMM?vMf$;D40*w*H$2BL2Z8l;9gTO^Ieilsd*+x!|4y|cQp z+^t8KD)gCcmCj8HVz;FpU*`^6=N%?}-%!X9Wvd7KO&&gkVu?y1oOcC0=HM~rE2Lp1 z!kGI#pPUq}YqKQHHk&v+FGk4*c+$7YoKH@X*WG}0)8EK!Wlge)`exRl8D^Z0qL*lR z;b@kp*K0<>+9TDXqlPWq=DI9Jku%|ojw7?1?V+@ZMSy@6sKNk_I*KR8(NEh9QCnf- zz~%!D6h3$O#nDk}<6E4(p;nzx$QopN>WoU$+Jmyv^P{xP&#}ZLmTAt(=JTz+5mM(^d20ttT=wgpJnUn@q@}t`>U&)AS5@2#kzI>!k2LKqsihxfA4a8>LDdgrHxfn#P;^f7aym3y4SIqqyJ zhBnUmUBZcyv&L*!m3u5nlLwUZRS|pf=@Z2(sCB=Eb2fAc8YM(H(yUEufIL2f<~bXp zdHto6y%HiL6dmMZZX9Ubjg>@**IfL5q_d_#1!w)wUAl@2F8Zy^_=q=sW;vPgh-H2* zx4w%w;ci2lS5H2O%Fmu6LF{bI{cbORw2EiyvuwjZQ9!$963X?{^l`M<^|UWZxM{^s-zDTVkzOAV3C`t)Ol8Vy}UaMKAUa$ z47VTC)^HzvaA{^y*+9DCwU)JVJ8g){YaGXC)g7Z+EWK#>Moh9@ln3+6j)xR9e0nIW zn;f|C)2GQqKHo3$;o=FBAFNIMQ)o7aVvm`=+bGeQk6t}yGb3A*2|23MFO{9OQ8tFq ze(8X_ieBwNdH2SMAcu2$UbPEPb{nu$;G_sbG+3eIqh?3fdw zoXFoAG$zs^ma)!a+ZRP|_v{%dR;W&e?_#@?=vQ(VyMMbDw&8B6VOV$y+{N<4H_5aV zJ9RpEp0p+upWcu9ho54w`+ao7GAjjh@GgC^Xcy;x{-}w2zewF>J(~a{tPJowy(IUT zFEgQUkiih*UesR_no0xj6cM2>D+$;8HX9fI>8#&u$PR)&AmiF8Qa#j~>3oDQOV$c@ zq&GE!qfjPvQ<)by>$(~}dg@SkHb6NC9;w)Sb$;C@Ep5;Y-$*2Nw~&05F?141=f@7C z@qR@L-ZT_a!z@>AU^QAPWd62TbO8?+CwtfcP+kAoJPaXpV!I$|K|PX9#GlNV`KmE* z*f!ijMif_$MJ(xel#A+E08eNYM>1Q79kIF3DmZ|rjFwnSj9n_FR9_^CPSI=L zzpO*Q)o_Svca(deNHnIeTO(Q{vcgUrMde;@W-nVS62(S4v(l^75`2XuJaq)Ju9W@I z$uFCwE!^@Deppu$MzlqJQvw%W zAb^%)#oCG4fgQy{^?S?FIYfEq*>cy~EsR8S;Ms|B-lj#!!&qn;d*4btq0rF5Kc<$rzURcR+1Ep1OlUJ}*uM@64KZEsn%#zXd3GlPVb)GmWqy|?Em>wj) zais;zwk0K)L0^f`x_V@HaTsDL(VnL6WlKMFMu)w{$l?eEF^M&X= z1YW8o7bNv{9MbyoM`t)USnf-1sIl-iPi$b|RLLpYX^^@~>H#P6{a?`yiQ&E`RC6ee za84cVt;N_j28xaF43vXZ;Sj#^`tDn%5R7D6+HjY4CTl~PbdZ9M^x_y5kl?<5*n4|> zeT)qF_&XeQi)Ar9oSiNS@@dAK>`;6w4d1Ry2L;x@(b~FpDl&xpyvs-_ONzO+iG&p1 zOOxC`ZEqJX4#8F!+@C8=C0ckV4z~*L+|$FCL4aG@*3FjWE1Tg%LH=#&H#x6fl_^cR zo7v)!FfZ|`QaN5*))Zlo{)=eech!yboC%WPObv)>f_~0fQpRr{qQwOLmRdbFA4X5{ z-M7Qon^|3!D=PDAR_ADo2Oi8~zZh4Ys>JK@2qfRca-TFhlE2raKQSu2^9^~kGaRhc zf2azTh|_ZIg8fOlLU-#Fy3D_MyVif;TruhT)28kHHJuin=SVG%)#O_!eQf+Lwi9_h z=YlpA7f1>8KouW)et-L}c2DjIDGfAexIQm;@-FQF9BU2q-C%2`ha)Fm4Q4cC7Long zzv+q8a7lGQm9lcvr1nOk*bK=mGVm-O^SV&2?&{$2faqX4QS340g|;+(p~i(INwT@| zW-+18Pp6K+AiH_|+Hib=O~ao)XlntnX|whg9~B#}2)@4i3?srpXzHt% z!HJDFCsSU8pi`kY8(U;gSYnx+wNlIAhrGa=>><>eYJgXi$+2(>fM1Vkh^*>y3jy9z z@i4jYDfyU$AEtH4ERz7x!`L20uUxcNQC+=_Zedz$!gxbjT{Igv@d{|!?Zpevd6P)- zvMdj~Q=sgr@V1;*es+{^aN`jH1$&E$f&LVDH^Ga4;uT~adg?I$oHyE!N%r$R)fDI! z$jcDThJ_X=(e5$o@A|Zez3A}S_&xJ?YZkbVfBIm_7Zq=!aK(CTenwrqx0fOx{6*uo z@=a`$G)wOfmo;SSPS2kZ`!F?At?mJDJt1v}HiwZ;OUj4rkl-vtZAMJfma6(W!Lx6t zp{TcKJ>}d=MfyuJHO9R%!L<>sqqR|@PN;qW+U1bee8*t*4GWIspMVVuwPgl__-A5! zI69wGWWz7xKpi;LPalPAZ!FemXFT8;bKv9<-p|C-wM$*#29(+Qa)dcSzCS&4_RjxE z@HxEYPP~YX2Q9QDtUtkU5btob)A}Iq8fUPFJ;&9_EtpB^euFnAwDw-cG3t3#OX=o! z&EdDrXYRU}h^r1BimUfM)70a&-0q+P#5T$mJ`A$EU4phW)F8VR68*&sN=s5H(rOY zv-k~J!^C(QY{AT_zp>11$4SjIz8)LPkYBT84sTWIbVyd~gh&axYmfeB*$mcC{$BE} zb(!$)qR#_rq4FNEGg#j@91lotd;}Chv1)xmzebxDoON zeyO@}dAWNKih(c|1gk__lvemG>|w_aX3=$;vs%o}KYE))V9~Q8-()Pp_KH!CK8Li% zoaf-r|8N|vjbeDV@5Alu>sjH93}r6v>!EmJ9sb&5yeAAGxRzxZpu%;w-8kD5nkiU_ zQ?X~Q2?mB7a?o?O9`RZZoFsPJ8YoGH%Gn%=Ht5bgl;QGkh&GUM4cC+4h0+;KXA7Ze zXvKgPQ*dSula5iEqsiF1&E}|}rHpT*>_)Q%<@vRkPSO;#|FD6MHu>u`()Z=Wnx=n< z6sFBMpas?rdSVbGV}e!2340Uf89!H3L=$ujRV_`~Oxf6`(_Pk`?zzGc_QU{;jXi&% zz?ge(H$vjPzgv3%{(!=aZ6osHaBS0tCV|rS>Ls4_WZb^1i+tbsz6;iR>qE1|h<)fbux zAN;I+jEtc4`4Va8M@3`FCvYsZ@WV!`N(}eeF>t}sk!67eVQ0$Exn#;u)^yi^tH#s7 z*No~O`a!|C6+`8d_=|8>5CMU*De8{7E9W(1N@>)>I%korfsi;)ee*yS)joFra>HD1 zlWayZg`GELIsCY$>8)xd?aZg`inLW$W4E=#lkp2!QyM*%$QkTNnFVarG5p9P8-Z81 zM1U$()Ne;GMdWn{wM!2@ff24UyLy$@8Q2xBNG;Nh8Vl4y+TF-+-JH>QPW<3C;Ldc0 z+q;n}UvW4~gK9Ey=bIm*4`NxJWQdnhJG+f!W>pb8<1SX?oNB{mY@&3;on%l0e%!D? zcVvFfS*O*vsMu0ucvkd$eP&QC*O@-jdgHuasoDO6a{^FbaSqhUs$$F9<*9~!d?I9z zq4|iKpYUKJ7{SJ5h)g#QI@)$@$BIp2OVxloX7IUm1%Fh+(uh+D?%LB zD50!1j+LdchfA@9fmwF{Tht}@ep$?ih2La14j=F4&i5>Wf63y+6sNjHw!Jl^LCG4Og>07X%G z$he@Yk)SZ8mIS|ppr*aP-gAJw5SzQ_N{sIHz?|{o7Ki!n_3z`}8HS8GY?5dXBP>u!$E{v);v2@)@nLK}xL) zErasTQCv9ofZhJ*9l!@1)I`F}%s`lN@Z4b&*YZT9W)T`04MtW=0 zqnNz%Gd!Dm$ZANs-IpWP;!_t%Clg}nTzojE)rEijjxlv-~MdE@ZG*pWO(AdhN=` z;6gG^jXGib7(L|wLtU*-=wfZBpys4=D4_IlYUbtQJNrfp z%yLbcp+_((!yUJenltZdGHWjW;bE!`II>`BbZXi?sJgCowx4_^t5ma^O8skGQ;BPq ziLZ4a$c6KrmVX=^QYqp6OOzkZS*ZVlQ?u-JdM_aLSS72v$UQPgM92G9cof>#Ni~vGf2iJQPO3ClFdoR z23$K6hc$P;>UCYBFuNJvu@%U`y7HP<|SeH580w| z0c!r%KM^`r`^66#yL&l>?p;LS-Uxj5BOA#n~KdW2FT&*1GCg-Oz=^(zW8cw3{6#(sVlSmH1)*EDiCk^9+T; zqXQZ@{v=&=fXa6eqm?>h!YP*XyFh^u&WKiT7jO!a_>)G2)E@m zVhqX=<{avH8Q%UTdVQY&RGGLblr*9{m!JT`MHVe9OY~0W#eQD7E$UInfJK)hCT6Cf z>GhVFl*lGKxnJM!JHrwqlMPq>wveQ6Lr-pnpKfjgMIPJe7hZm0tE8pbgRFX>44Ct{ zCYu@nBsLm1;}bh;u_tx?4YgBtD?M7ob-mM1SJ!v^-CuVhmpj;OfP8*BHcF{oVe+HK zN9*Yjp!gnI$l5^s&l`$42S-pK+vcq`jMGAW(12|-zGqTNEjNf?WLB-iq)l>m5eKla zQ01npD0p%S#=GwA+POE$^~i8VLjjs|=li_@c|NS%{C;bY6;2u`M9+8~moU9i$wa+V zco1^4Rcy>K(3eH6k##@lg0<*!7ZY)rCaacCv7fQjAssdAOPF1(;Rm@nM`-AT|dHRN@~Rzs$INQ1y(z_ z2=+e^t`{BNr7;v8mmHPPjO;_%!Z=mbe>gVj>+LC zpmILWNnsw2|Mz^99W0%1E*M=u4QxXmkX163tcvw$>=j%idyO>F@i$yqwiKU#2~mg8 z)yI{t1daYeDO`i3+GIj{{u6h=bjddm_(#zm>nHs@-??jWUJ3lzZ_}r6BF!w1);3`n zMWNIuD)op(NLe_Ul^#c&%qNG$8~mhi<`r4oh$(`=snW6{7TJaTD@yaZM;7cSIX?xI zHc~r@rV>)t7QCf$2Udju)vCu50027k4x{I%q4H z4b|wQnKbt_xanR(;b!P%KRV+!C}F$Yk5bs_$Y}e0$-kznsX48o_$(27mp+C@yyLet zE0HYHtvn=4%GR^7(?w762Ua+}PD+{SR*E+C8G;4AO{3y2_j81*G3Iix#pwxTG8hQt z144rE2fHp%Y9gL|Hslv9`7>dh_g3)pJ4xPK6cU>YwLuM%6=obSoJv(Re?7_+BJ@B+ z6Q6%;2JF{p(yGlWN}H8Zg`*?(3@5{v;j22!2CwaPlBC~)N15t29tn3%9^(4h5LjI_ zpf&yoWDEE9DdWWGS82 zMqVfB!0ra>M7){tl5IY`z%6$$x9G?o=6H(E%km7+_wfEMm5j zLF-k@J+@`FCoCQ~c{a(k9g+&{EP@na+TI_fEB)2KTc;j0m_Kig{|VgBjH5S)qdZ8G zSFJ?A%y!;7Ow#6cRb8+7{pWToF!7SMyU5tS)ur)!m z|3hsJZo7H|d+_gs3;=lWwXKdo|FJ;NWDt@nJ7>)VRy4aFHEDnMmvnGuW9G?Nuo7;S zG%x?Pu5WkMsNI3dS>?q``69AaL6>g7sHh2v!nNN?6F_0V^Ce)v)kgw@#NCh2h(}`5WbbBLow+P|G*=*GkF&@o+WbBJDwUDv{9={ z(0eJzA3460Wo*+(cWbAyd@{z+em_M+{Tp9|h3Pkse+5(~Rw)0nk!`uA0izsLCsC!@ zMGHLL405C~o=-~KNj;nNwT@ZrmMj^r6^DVrx(;L=vUk$^+8o@^8$E{GY7n3ySGhHe zu?v0B+>qlKX0W7<@#2%bWaMZ6`B?A9H-7IAlyY@2amEB zz-bC~(|&CwxnK?EOE3AK@8K2?Os>y5xhhQ9PnNcdOY|qGC=NR84Jh=x0V^3yY!?x3 z9fW=Rw~A}t~4_UFAO)%=@;&7wF%99d4gC<;I5InQAO9ca(5*pKZ+;Q2pZS26cES3 zl1A_XIW>up)RoH@1>wND*?4zv$}=SaKJVVv`O$5n04?1SOa>W_z9dfSY9WmkeIcqW zX8j9vG1#{w?EZEGrI+YpIwg*q48Qh!h(K%PN~hq!RTS|Sy}M8v>~`8N^oTfRwywn4 ziXPZoU&{1PXg1VA)mYm1^|f!5d`IYO2ZF(lwZZql!IOb575K+E}q{7 z^?F^DfrA3tB|VeE*5A$`IkMF4Q4+udor6TYlT!bhq9Fn@C~`0FQxJ^GqK6ZcF9W^$ zDQ%ofd_vK}3U(Em7p8hML*lS~H$Z>Z34Nae&p2EJjILwT+&mJ_-?d=II$voBqIOe_ zYG-1MuHzWeG{#27A^wR12c8~s-N1BO{Vc&#emZ&0F!!&6fdV48;lBS)C;tkQ{-TqY zL*Q7OOW+joicZA9MWlcp?l#Wl(9fCFwBFr$BXZ!e^Ysq>fTdH$_`8;bW>8h^P_3Vz zhG^m4&l4Z^)%PC};J6*TOg~5^YjqnSznY|<;c0ASm^QGV60JQo+FY#HZZGNw8DGK} zepcErRo1(a^!z!W?wJ{84*wQ~Kni7dh-N;C6hgRAOcruQzXffVwDy@GTSwCFW1#?# z;Q-|RQdTy662N2l*CCx%C7fU1Fbb_j9S5szV3K8osp?!H>#(H__rFfDOLE(3<0>n* z#p))PCB+=uq`xn|Jc*rJ>jXcLR4;1RiB>C=_{HWEJ-svl)e}!6p=3#E9ApnXqKaL}y+eG$yZUBy8P}IXU*%DW&2| z|Ea`CxIxrd4(?71$L@)D?rS?r67=y835D~?c(p4{ytX1^m!iRsyz`{r2U=-V^2$;_ zUAyFhP9AQhKWOr_YMEVQ8sPa1wuR?uls$HFRo6wHyQ#K1{%8Ys%@wx+nQ`)*O|d)* zbpRU{LiVt8A_^Ap8y2jGhL6R4z;x3`$*}Kjgdh-oW@0ZUxc++A>kV54wM^~zIc;u^r zgo=QG(M5#nj2|s23{Co$C{4S9ly#lD5Z^M_;Q;38av)I|tIo9?cB&D}Nes^JP_%3Y zJYY~J+S^5OP@jyIz?z|weDYcjt!*GK2NjS4bQl!G465>FtDgtxGN#42H)A6G1O;?c zxtft+IDugN_Xu_dA5tW>(nHz=X@K3H*vl4W5yRf zw+VpTlR%dL72g)9%xPKwhgrD#uIgP}?r`hxUjt0NnT=8S(xg#6@Alr+qe$^Pah zsz7ZwZE>JF8Q#M;BZ6bS7qdDVb`+ef;wytl6X$-sUm=_$Z_7g4qSP>$>C8hm#*V&Fb)clIs=EP6S$!X1wSdH)lV%6LVC&D!PKy_d!_=MnQM>#CWFd zSI@?yIk>z`>v9%XqSyRBGn>Q~^y)D}E%1%RyytE_n->|axsLfi0PVpCSZ69nM}5IM z_HSk7BK#rm+`5O&RWj>TY@?EV-+BhifM{M(hOCv1%`31l%MAw2Njv_^sLMBzT<Z@FQ`XVKI$-vvQ*31=Up``dLyGpZ9jHY5pf=4Ld`g z<+b_|XrWb(?=}R*;i|X)p8nI}){Tqr7C`x&PvCOa@=5N=xn)N?eCv~!=@g`U*^1t# zxCqS#i!5CQakDawaPe-CezDrGfC)lbQz0g^rHdvX$XmFyRpbl8cn|MV$8M3K)=tdZ zKy$=j&DDuo*DX=eR>32yAm-tqhbOi7*~^eg^^h$a7+uXo;SX%jC}5?SHy51`z9HUU zbbjWM<&;&*8wis-vV*_%=JQnJ$jJ^pMTfxvWT61)7Akcya-38kQ6i9h z(~+h3_r2S~rin9zNmsXZD#y&^b}Spu`p}aYI%nmR6~z*(=+H#WD60A7)%w#!9={ZYG|infIL{?n&9Zze81(iJWUVPpc z?jFo`q%8b>@Q(SD%oruG#3*!~tl;+n5?i~s2F1G_m*`{Ev!qQ!g22R zGas(t#}GX7c`B+(3(g|?=0Pup&dXgkL#IHCBCI^3Yn*1WUxpCW{Dn}v>*8wXB_S_W z+$?h41pV4ITTTc!r}(^`kf4=~)HXn!FXW}x{*VT74V}ex z!&l*@2HL#FY$vDI1k&$RD<363E3d>4xa6{*G~RxGU#hx1T5}Ohj39_~{;}G|kC0VP zE(UFMvf-`!1G4ukU`E9u+fXz-FMbasTRFFcolnvS4M?;ov<+{n5db?_?_$ev-ugxL zz}KSH@&%GuNfHjjXyv1iyqi7k?2@qDnz?_3ee|h|@wEVcEJ?*~=$b&;iDJ7&(zriF zEH9jjnC8USS~7lAURHzmqOCv$E_ zMGFR5h*OcMCW9%WIoP+P^d4IZLCbs*yewvCNY)%Zw|WYF#nkR-_)D{D1uM99BlSl3 zy}ci^jB~2YLr5m$u0>OECkWCwfU^gpdoCL-%TciN-n(rJlNgU=IISPu1xz!ZKEtKa zSm%p-L_qLnkvIzx`&K)>h>OIOG~Dt8sxokeezedgI-g1599iTH>B!;{`$e;e zC`oBH^UxuArr(6lFUy#xS3W^ham6CM=$c*m7j5reSotr=i7VPYQplN9?ejE#vkH5d z>#yuH6)8<_r-%9O9td2-63?cntvfrxIo!ZD2NZl^@WtzSQ)jwz zI_9b_J*n*`W5CIe=Oa39pc7=Aiu=mkMG;C^6*d7}95u`Gkt@k$D;e?&7Vg$&&H2Qw z@JX)0zjD%BeO8LT>i!sp*1QK{6x5_<-X~tV6|KW?iscWeoM>*GkPZ$Qi@Re-!YpgR zx<}y>BC8WlP=9NI551-g4oam$vpBD*ONF~vB5j*B7;8oX*oq^vWV0|I91~dZ=A=2{=Ipl-2pZ)IqiOIU!Iy`w%q{(ag0_i z%YBTyNXn%3Lt;ZrcNMkWft<1s*&OzYHz8&H2Ji1!DESCV@sF&V7FD(CN_1l$;DKs0 zOhWLoJg7kWaptXoON=zcOGH&W4|Fco_L;lpEw8hwCc<6vnRDdg#6|z;C3keS`5dzb z!-MFs!ulSOV>f-5_XnlQM%r-=4#SlQW=R!Kajqw^&CFt-nC;P74fE6U8H2vf#_PO^ z`_@d}JT&mRx0VCW=~zUt4O6d&(4mhvZLsjbxcU8fjm7TKI%a;o8#YDHmnVFBm9g6{2^(1 zb{RQL<$2@#VgXf@&Mj^*q(Q%#%6sc~Gh6*1tC(4HZE!R}CFaCAYm_Oxm!bpLn(~Hn z58OD!isWMkUyRrc)qzW{jPqJlK^TwOG*)@i^K~lc#<#|f8X+D6M#)BGCvqyHV*SLp zlcyn0K!VEDM^>abb;QxNp~Q%<^+WD^-Zji(Zd&}IH~6ng!Q>IaRV0BiyxejyUn8(jKYm^51PRxO%Pdk zS{Cq(+KnCY9r+w(p=enh5!_b09Hw&Da@RiI*$)J0_8*3b8|nBvPFn`tq)wfH%{tyE zoyz?_&+0A|GinXn&9D9x3f{DO6R;__ma`BgF`ax8w=-qr(USHsJQY?YQ5$oe#HbuH zN79PV<}NN9xx&5o+h(<^_hVNpId;9fUj4V`tB-H}(zvs>v-19~KB+aUS@iLw;GVag zY1&^K@yFJTObUl7D=GhYu~Aq`JaC=s@jEi)kRHMwBUJi%*AY`4j#2J3nB7Z!Br zG0V&NRinS>XN{*+ml_2wuFg8OUhvgJoQH|lPCvB|$=FiFmy0=!tKpg2Jp@`bdlewk zs5C8|{V4=Afo`qZ5IV&vLG>}rM36b;$?j^B^2a#pc6xw(P^7A-1Ciztk}(?E+`WG6J@NTPN&U?&Ke-;>wJWSo^1j|sa#}FDv1I_WX>PTVFQdKLD9vrrSUQ>hw zGMTcj6SaE*cYF-*KI4g@b{M^rF)fnZ)t7w7;~jcs_NQ?AmjGk+t2ruBGvn3=w(ZksU?s&3KDwwudC{wCQF zk&i1w2FLpi`&Lig${E2YhLKnEAP)h%8KSwm3_K5wJGO+Xn*OIWvjS^V3+u*(krXvx z(hO_O5%r?g^44xk_zHvg&6dhY%7r<{)&`srP)m}1QktC;cPlneEy_a+?!l-p<(z8` zGR=S7h|C2p)BpHx=);cmPBVIYI;96TcjJ6V+JZ^ofN4?zip}Hb5q9{WuF)QkCTffBk-e7Qdcw>bDw%XB9AC9?u>*fi4M(# z$?DrjFWkY2B!xt@suNYkpygV#)=q!$4|A!$+cMIAuuf_;2`A;|QcDXxLU3txpJOMS zE3)9G8E|vE>Nm|VZFv}p4t-L}quR{O=R^Eo z-`$@{oUM~Lp`h3~?>PP)r3K<|e1a1EibWu9Q7-Zhra1B^qsiwV=`73r8>)95Jrq!~ z+96Dxaqm=8WgoSDye;36%?@3S_Rr=0ufFMjGdWNbZ1ZHZvXRz}LaonE(v2K=1h8*u z8!0-X5z#TKFUDk_(+_%@1bhxKXYHOagh}Q+o}??fj>IoC-+x55`B0;pHhf5+*60FK z4mV?C0W+K~cfTTXlxbbKPGEev(jwBL5L9uY^8X{Mt6_&b-}9TB(bhmmF6y)l4}!n% z#Cu@n-P@0INh!7e~g_Fw>*-8~p?hjY`s|^=j9G--=TD1(^ zQSB5amsCErss@&Mc zyx?#OT4st4?p{QB*IK+soOVx42F~0P7b!pCEtPqD>k^k^hsR1~T~9QT&vPU-PXi-6 zbMe_JTNH;hwFe*V*%Gu}Zs5y{4Qg<7LInmj7JR1Nb$d;4xjeeyJT;0(bL>}!jtN*x zq~8RZGhN=|jLMx?%KI=BarLCshY2GylR6-sTH`SbYS>=9OnxC96QYb=t>8+6zZF(;*_?|3)D4Z1`Dm76#iopn2Xe~^CZ=b zfvEhu4VmLQ-l}!|4$V~cyr{#^2)!3DXJr_6w1jGiHynBPEzD_9Z6V8wZ=Dg?`JIsQ zYsdID$ZM4T?)p&2wX2?z6suS7Vqfw+%js&G$L;#0mESI%rKFCjq#l1UPTjvSjO$_F z>L77tn{Ys@we?=SYq9>C@_8rye{p;NdGdwy&o)8al7FcB8(ymcsG;72A@%kG=0(O3 z?AT-iV7fVd;+FG!kEVVL&d2!^7h!v>(jCP5w+cgH0X}hJ=s2c5;r<_d-T!Qo8-WP! z4@lAPNH0%FtQv_!1s=pJ!wQkP6Uy*{m7`PRI z-lXq*XM!S-2$8B7SdKkl6$$DYVS>e7g_h&WFv*U zBnCA=#xi}ZZus=`7kA!t$MJx74|u=rLJ}m+MUtLGqpTMPf-G)j*TZ&JZ^wjrDRM=H&mNN^v&WAWN+LpwkhgXxvV=7})0b*0kG_KlC&@p+ztE~E;9Y>@cd>H zsFwv@L8dF~9t8jM`!rE~{v#R~p@`NGfBR**%T`DqGAQ5(?U}@1J&@@y{I1Av+S9+K z>XZ^VF5~%4fZd<|JvQC2742CddCRw&6V$xQhN2l(n+v^d)nf-MIfxmP~?IMx7vbD z?KAC}Gq5s2jPauPc3(sK_^4n=@4?`>lYc|JIOl10+~^xE+9vSuFdw8ot(@Wfzd0R$4W7XW|9BpS zJ&DWzm=t4Oq3=s`BI7pn8`+v5vK7uh+*~|oONkyRS6p5 z1l&1yigi?M_J8yOYw%J`Qy=g>=wstay1}6B;}@KD9#D%U3|%;276*?UJwqkQlvf`4 z4byJs76d(2EOS)Uiy>=@V_PoNLXhUiE!nCMXpZ(b7S23}d&oM<7W|A#Gq~2~MOOAI zYFd3=)3FRJmE5gspBnEcSY9M>2eeZ8UOumH6}bjKJC*(SwnDBA#G62f$$RLS|G^3% zDU{1#?YQY^6cNg}VQ{VTV0bI?u67mnujn2+u`-PJ76GWB{%Af}yT~w1n+SzKgxUimf2D?3aL%%H86vCR;@v5x< z>l;1KxkG)E5N2pZ#Ogm1(tJfzov&z$Z4Bp`^oKW&!+5|UKZf96XzF{$;dT~3cQ53l zP^;~!q0c*0%-=Rr0#C`+q5qfu$N&H2x;;#~`?1Hs$vPNw7CUh}f!;AQL3mjPNBGR# z>5t(HTr-Y@PpyptJ5j^3@ z4Lh!!k9)ad>9U}7fs&S6&T!%%t1!=_cVRqS<<(mZd`=;YZf)_{N(u0&dynH z<0Uncqv0iWKhTp@`rS0e_B{RUt-BJi>wPmO zKAW>yD6m#2tmNP^KBJeO|Ls?!*UCXX*`%Sq0$Ce0cH&+zW_P-JzV1W}(4zKWGkmy3 z`Hp_r(h}g%vD-&!Q+-2yws~PGLvOhRXu&>v$( z9Z9>BYnomzCKK1K`PNlmp;vMIr}g=JvmSD@+siB~_pbSP;*i1WSJ3Y)(|UiL%6o8M z`dxv-@FsZ}lXem&QEl;&T!X^Hy*=;Wxskx6$o`w>tk z0E2sE&riIc?ezIThLz}2YdBbRH!x&(aY4QnZ}$tg{D1TD{hubM+s}>uAY7Q|&f0%-mR})+&?|(1y|IdWho)NS*_9Xh z$v53fnr?Q0q-$5mvqR)3c8g%&)~9YnVfMZguqg5Mh8=yg|JveL9386Pyl%fyT~F3O z&@09bc;pz^JU=HBG!!PQHX5<0AJRDq04Z8G5(Dc5lFA-K%(Q@VN=J+$+J(<%x(;*m z%^1~JeTD+4+KR_dm5A-IFNck$Jw>mmUm+dI_eS3Ryb4~!?I6)&!vFl{O;F>U)GPlU zZ~EUmClFfCFmL&EFs5!b`Tr0{=@OH&6fQ)^>GfYk)Yb#kSTtU+T?Bfn9lk`XImU9y zR=-m=8Skr7QtwYVQ;@z`1>hUzZCZ$iWL4i@i8qo7g~ffj+?E!P3AcH)VBazC=CGh1 zaZG--)SoTKfMG~qV+8%e37tjIX}~I?%*Tz@d{Pw(w$~?bC>CA zTtN%MIJU2IUX6NhZ_Ba$9Z}|Q)|t+n<1k#EIcyOttUY#UTdf}a;%@wBh0X@bTHv;w zINSloL7wqm!;_+kAXxPeiA2Att`)jtTr@9)W8xqy%ygcd4UB}sZhvZ#5{Y5 zd$uHmW+Ei(IO^l1lE(b7kE1^{agCfVd~w6zwi}>BIAa_Z!^qM)tu&=2_DozPouR$C7w!5X$r3jL!AS&4S~zSnafw%OaNM!OyWoPgF=*rH6MlOx zSArb#^@P+7gWgFxjj->|oqZa-f2XJ=Z+lzirJb24d7t#U@>ft!*?S>LdY2CI{1TTX zqYL#Uvx|rC`&dR6BR^D4*u$BJtD*Ufsjz8d0PzxdE0A`(+llDGvqH3h(HaE4Kx#$z zlPigWI~0pUN_DMhL8WwrCGe1^PwwP?DiWtrv3>elTg_Xnb|rEefZER$qr;W)V*#6h zs={fw>$iv(IK9Yuh2}rJo_7!I@B&tkOYjn}KiU|6QuXI9B$9YIBl#q~TLZL0{BWY8 zzc(NtFrMQd=x;G2;*q#sKBCe?N6b`De)9h|+jJrqHFXx87~X27PTscq0=Z9xE5tM? z8@i~31<77FoRf|~4yRz5U|9cMogvuk(>8xJB!^@asg|HR4Y@1~=*FV=l$G8}`P%EA~}Oj!($$vmkiAL<_p@7@`q! zzgQJ^H(kr=w=jME^xbd|JT%Sv_avukoYrjS6u3YQL=cvhjb&2Lz);~|Z?>^Q<+!r& zbN(}wdkjoa3Vz&f4}IKTSIpW32=G{vv=&}CNDu>paMW__nWM~#XhUJA`P7l!b_6XNq6ZrIx~3Sm1;aA4`Tfg<@FX%GL6}8~ zNB!B=`s8qwDPPIOz|R!b&MRB1x?-zS<}J{B)gG@$3y7 zGS-?}cn5yoNjBKNGW&sDFywdVHku{7#do$R(7R4|4bH1Q0ZB#ZCR2_LiFfMBrvE zI#45RgBVbsviRKJ10Tmo$5)Yu*G_>q%U!Uo8Kw>Apd`#J`Jwe@rTzQuc-+GO3%?@Qh3jSo(7AN zzX8>nW2et$J|zh)`HlLk+W7f*Qbmh1_YSo)aTTj$yF~WXTatEG`*oM8@{K!A8zWAm zlB2_XmBo<9k__Z=mu#~IlC%X|QML(^iacqu354U?elUB>SyD^~-qa*fbI?iTw=S~8 zTu75iTYCp{!ke2IA={Hc=h@4oMNn()L6zAkD@j$4Ar@_+Oo5LRKuaQu`Y>9fjq^jN$+s0r+qnV=%V}}|P_RQz5!Eh$;Ae!5r4u-ZuplkTE;V8R@E^*-RTm(k<40H*?MR!Uw z(^Pe*-#vt5wxxYM43;&rm6~PAptt1*=j>UMYsi9KMdcAU*JJ#^1Dp^@CPTl!_aP{K z$GRuu+5NGOV!|n(bfoHQ_}btAnm}B@(7QJM(=@_%wED%@}(Vd6=@GP zSzwEL3_T>WWyO?=CM-@TFS*xP5a5RI$qV6Wogc*IwPehg*#s_M-#nMz2Ps+o(2hXzf@bFxvv$YX@w@imQVebJ#4q83Jp zJ3V$H;sWwoed8n%ZY$^`sQjee?GX1p3vsNAxlFcRBs^GWpg@9xt58p6LrGc7yPp$K z?!~FhOg8h&H-*}@fnEJa_mj8coox>*pbQh(hvOs~o|Vj>@LP&7zwAD8$fPEYyZ*`} zNez+pxWiN!rm_fhJmMhsm_uzY3ci+2rfDr>sAc<9vt)2b({S;*{CungHr(ogXH6Nc z^s^#l*NT(ct=*@cfDCTdG=)@CV=Lhhr=pC5et~ewECScwz=_Ck#9zb-ESrO$ zaH{pc^1{VFN$YQReiCP~u7#T*33m*^)|ahR>)@v+HlM*pex2BwB`8iz;!2Ha_{fcrzoJD8UxeS7mGn82@S=;Qng zwlCCG`;dX30*JDhmM=Q3@F2bt3I{ei(VV-2JOsK98>p__S|_r8t!&|GT#j$og^JVY zrLl2vbuk*{s$1Bo@3<;Ct+%@HnmlMF@ZY5$Tbc_u1urvRd1$8TI#CVEsiY2^%g5$c zaK~)r(?}cqUr*s^JpTyeRmoP>^k`8NIulC&Gr8TDt8}Y@n5LB6c|~BqkKf@D;MZ_NBwCjJ4F3<&XOBufF7uR%CpO@xH`W^x{ zn>o;kXf=G%I9>Rp*kyrQE#;;(>)|`V4;@Ch6!VhjTr~{X=8^>(ttZeEVlJ7Pv#j2_i+)Hx zFxW$&B)8|5OG(r{-wZT3vr9X5Txv*X*Zmn_R9K09QolMWQhfpamL%J8R&I30rYJSaBHyq{rt8RCm>b@S+s3y7<{rlh^!v3e89JD2@g$%KCk zh6=w0LpxLd6%0lGy{Vg`>X6Fn`W6dq{{JWz`V#s^7y$--0jAC?LLsAdQh~Thj7Ba6bI!(t$b+{vTSiDVG}D zL>X<^uy~9+?%ii_YO2;%ovE4NJ3AneFo3i}z$4n=9c5`SyOqYpMZvi>-)1=of(V~c zxMzNU!RtmNPC9=Cv7Rj#jwFn{x)O0dcz@nu_OY_%1tyzcWsr*Ws@U8uiZ{Bo)niYx ztGD_;!pr}?=*mmpTUrSW$<{LO%Rljh|4>=lhHx8b96@t&lq@YO;ssl24PYSzqRf2w zcjUDY#9gsgP!kT(D)X0vc>jA2Q=I?9@3-Re`ObI4b*2JJ{}RR{JV(6Y-f@LwgJV9M9vEZ1X%VUUfOc+tAF$&HxqDS z(_x33N?k@hd&r*HT&Jg@ehkSStHviU5`tuP?QT9mP3L$crsv*P%_xLr%?(U$4kQ4j zxm~Bwy-BO!dq}5eN(R z=N%lI%#I=m#|63yyQ?Wr_%?VTvJdb}LMi#6~Sg-L4Y;Y`~`PAy2O&MUAO# zxKemde>{2`ToG*2_+MIy|KrK$eYih4alQPmntw#1`RaDORX#PoC1hWX2_4LM%nxL9 z=UjqX1p$<7V=ut~X7}Iz8)BHPeo$lY;eaYXG>zOg{x{zYDj{MieMoy$;noX;!^~pW z8F@-QMINIZfuYuI${=a3e= zjruC1j(`oZy+iTKbjO-~fZNQK$D5373Ue#M2h=9-IW;I=Twl%s$Xc@trMH9sJ0<;( z$zsqSvr1aMztsPaS!LsZdH)s7oo)xi?E?d2gOHJE2%lbCo)xphd0mOCm#~h!AtU2} z%M%AIr?F! zPDHlQVIDUMif7wFg4slN**-8jW$uwcB|HJh){PM`umHG~R$S%5}I z11$G%G*t8nEOZeyTM{eWeLZ(|PweLV`jZthTmb6I<^=o^@1m>|i{lzgCm3uLwd5gw zl3odxre4*?qwOO8V7{Br?AEEj{^IdHwj$b%zr!(Zc6a@-sZ|w!Q%0~)o%Y^j<~pqY@0BrPt2gibf|d$w*e9ynC#Kf=nv<7U zrVoR%gtd(I^_NftG3CO0Fzb-in%x3v6wq7<1#aw^@b(ZmR3e^gszvG}c+{sEHH`7b zl|c67UQU43jsUs?ul#@cYdsgq|Kd3XiLlF;MJ0!J`^49ai!Vq;Ka)~3pCYE+5IFU% zs!JcGkfk_Pzc?yXRV)UW(=!Bc(kc3-m?V_qu$GML0oNwU0N?{0tSRQHLkt|nA(>7@ zkNKe$i|R@+rv38Vj^C2kHY}%OG#SF=a%d0~4q^>d7dk6+@S>ws-$HKaeWZ5lJcL}D zVC~@=A}n+EKZDp{)zG;@=I~Fu!h)B(aql^s4sSjtRg~Jh$HrlIR+e4yJD#D&? z9LoK2b)6mY^0T0Tvve1>$7t$Ek0I-Rw)x7z^J#RBR?Fa)b=%$IfUaDr?Mz{$B4@RA zUvcOAjlt0^RybXIn@6`sX#KGqUnf;)J@BT5E|O4(X57Jhi4FlKp}<}wtf56f+Rhw+ zZ{#QQ(vY;j?Qs!ade1lOw)@aLa$eOonijjd62(&oy*)EPE61kW%E9;!aIMBwYt0eU z!!!Hgp&0V@C1fqTm9%2J`$2o?(@cBl3*uZjSY7!FXWiX1qIPS_(Ccgu{0BuV{Usa8 zrdvsRGZd6Yu-Cu2y~Y*{d!vqeSW5t!v)~09kDORY!L@}xZEq;%Ngvmf%~|lg{vB7) zw_$f1-FLvlT6~~YfhjPdg861hT!O5kZ#_s2PzgYKJGcA}yaGZy@9z|5pH-9~XLh;Tn$e0Bq=pajUkdUT3VdQBq0dOP*F?&gh!nf}PPEr~ zxISOcOMx_@tlUPaHRxJgjxH{mZX#_Y`uM@#&5HHvr|xvcw+d6VEof8}_BON+k__;h z$f#Y4ryFC~XA1_5lH9Tq!mfr=EPr#|MC?16XBeP$oD>lq#akLN#O!R>2zk@t_`!^?p=3c?vGLi4~U(3+;&*@ zu1ly3^7=@fazz0fF55hdn3CrytUn(@cd9J975hT%Zjz-Zq2^?>)q_PCe(MPG!zn-5 z^CaliB|*vKrEgbL)2oHB$WdE9P-qf6%~>x_2JrTO*y_r6j9QiKR`UZ4+Mz6S&Ui5WS(k|n&j z*I%jvXadsh`2t!3m}9E#W3wHS`4p=W#ma;@t%)la(YIR0CpZVIY%O9=N_erTQ(t&r z;HF~<`}0}{Lz-P#q|%KEDjjLOHhOEus2}`BT($|Whcb*NJ!?ZA`>s+sY@lQh>JB3v zx6t~PZ*Mb(w0yBYTHNL1T~ubYX4=+&R^*SPVDU8!Wt{G|UC4%8KDXhQm=Z9qH2D$D z)@*MwDYsCBhm$SYnzC>i!$$2-W{m1%K1Fux&qetyX)r@!jsL6UcTOdnpSCZPLIa_QOuH0FykomF?W7VB9iUkk4g^K*M zht%pYG)xIR2)7SMwR<=}&w}KuSlv$fQto_19CQWuQeGrzWV6!+f^({>+*MctE z$!yICAXYedi;upj#WG(@l4um*!2RyIlt}phN8DS6#j$1k!y!lr?k>UI-GjTkI|O&P z1Pe}ZcXxM}00ElD-QC^wA97~SIdkvaJ96iJ-Y;}@HC&JoYqbTb?-_J{&p3GN_gL3=wvwmEb;^jqRSx>U8SOPeQ5S zhf^FAUK{3_uCf^RFp8g4 zZxlUBa(*PSGu4d6yMk|w=w0Gv65JkneS{=Rx(~)x08KjfN1wa5v$P*O)&h2Ea97J< zS6rcCC=MOoIex8;1J$dM*@gGej94?AQ&>zk;A4~a;u z{aLjIg9U}A=)ek+F;7;S^XHSG8&ZQ|BQRV;c9IANzHYCZlzfK#_BxE19J4TvWHVG; zL!(GRL}@s~1IMu7w?`6Td%*iUE}=vZM5@LP9LN(lGHz?tR)-gNaCpk61Int8_QU42 z-;pAWH=8_!q9uE)Y1yk2Q$#eRIIN)-HfKq_yFU?Znse9@-{c##73KCg7tWOOk`F{fbWa!@2$r12wZ8*%w5 zkF3rOe*oIZKiMAXQo`26;*Msx$%+rx>^^I0%^93}s3`Q-1{R2IH| zOMgharM71H7>w&ao4M*ed;w>|ygrw_V}-Y)W@|h!16@k%Lf$yNH6P1_jJL7aa??5} z`v4JHP=>dTNMoecmPX@t@}AH1!Md$$E|rlvL(3_Sr_t+bj-{hYT*kAf;|1!w07ty% zG}%*09R<_(^rG&Vbg~rPuT`XNj z$GUj$LfyZ{{rO)&eHksk1;p~0AN3EIqm}|fAjk*Kbzyt|eSsMbnp<>K#9uj>J$<2? z1t=lm$R>X@X-w^DvI1D^yHR#jf;6U=e~=d?L^?(EG;;^srrC? zU4M8pOIx)*ka)qt+JHOVx@^n3v-tUmqlT%TLD%Kv^K_ndO1Fs^qo=f`u5}c&$MD*br3Y(+$MK;o$`&szGe8uB=Zqg?} zfPjzjdu~fO06t0JZvPHimT>v+Gw=5O&ShV((uO=ct&QL7o!XpY{0Jf4CTx1g=+-|eCO?XKc-S&N08XVW`$-KJb1 z*ADl@lvm+hY}KN9vIXz-MY?EP({%e#t+)PMdCMy);mrng8i&^JaAw}6S86HmN z(VKwjzM!g60h-nqhSJ54VIV%!0+Z}L32(kM!1nYJ!pXN5nggAh>-%$e%Nar$d5(ar zRbkSlhP`v(_ckYGcVULk1~7XL8OelvH#FK=lwN6G_c_i*kE|+5 zEH75Bo7?zz0p|%%Ge^CyoFy)IS3DI}YX8UH;_I$=uh8VT3Z7325x;-M^tw$}NYJq# z`6YM;D%y_1*~K2b`2=4+2VrMfH!8|b8Y*i$efC6o2bD#N=(?=v3u@T!&15L@2GRsU z?|Q?q1=qpc2$&*q-CFc_ABa5(>lc+t2|9C_EqPzLy2<86bti zSm>#zL-rVai|hmnZ->ykth=V2;Bd)~yOLBpaxqMTCW7* zBYcMEfE?(|JNY&b*W1fd=R8@zm-tb_RK;-#+-=w~VZ_bRT96eH_hlYcNyoG-=6*(d z?&&InEW&L`^PXnU9KS=>Zb|!*H^50%<%(4r=c4(c^ro|=yyb`&Lr6SPAxRFjyyZCy zyV|<0Sy*5m#|Dadx9?1)V&Qtp&ah4wJm=uC;$g}QBz&%dtQ&`V-S*-{p<@czq4~YS znGiGdBt3_{EB$y!nov=H!Az` z&p`BR##rljKcu{cZMJJ=*^3Wh`x%9e^`l=JR(7`+obj(X&UA43~rr%`&cFVhu+)mmtq zH*b8txfZl1R3RGkZ`*oD!{TxYp77>~>)d>Fwywjn3w;t^eA{D1VokbY(%AGx*A`mc zp87$`SY65Adc=yMW@%#F(@={(!L3@i$c*bqp?pgNl+B=#qVY_~$ZXiCLt(-b`jI|Q ze%~=*1*;LUrz~BQk_(OTF24(~nc}XM`31MXT9;x7i8`C30WJbsP(Y^Z9Xz8R{o9a* zH<7rjpU7O9dkwK~5FuN~`|Y9Lf2+dne)c{Y*=ktes zTegv9!a~!inDtOYTW>oQH#6g*=At&|rj97iQ>-DLC^Icxmg74IBezo0tVrVV<$kwW zk`e*?@gn_mI3=t;^#zxxA2!3{eiI4HA}2TeZ8jUc-Y5Ju7@Zz2?uR!!wjefZB*#EI z*}i44HoDV6>{1tq1g5s{`_mt`(@*C*l}DbX@N>GtF|02Zwb)zYF$yd72OI3Kc(Xi3 zgf8CNTepy*vMn|@wh=OS-Gy|z0X7Vdwh-KHeHasxSS+->!Qd;O5l3u$jq-Dn>Ey)- z`V`;@@a}}o-rSkvQ?=4NuLQS6a22IHN5$D_wW&0~iJt~r8fDkaqpFT1R*#UDHP_Fl zaOrw~buYO#va}seYmbdUR#zEV;zrN&$sJ{uaZS9(gjO4X;F_g8i;IfXIZ$T|{Gh?N z8u|=;DFmkdoJxTFoV99>wT_b2 zjLk46dDb#b12sjT&5((?YL2sxf;DQ_z%u)#G1|bOrg$DDr7^}!V=;sm&}-sXWp^k> zzko`;J_w`_P+BqAEac{we>rY-D5)c`?rODZ`T4N8xloGb5OY6zZ6UZg4!5=NOJ7sI znxF3U_Zl1SZyCETEzgx`X>oDfHx11B{C$FVmC^?x39e$~=t8c{Vl*EFlnAya1$`W4 z)8=d%cm ztwT3T1|F#M1!4QaGF)x-dz$2zg9;T zoexij^s&MS9uu4fhFru0r@u;1tUo{WG10dldM<)>KqhGj1hI)FV=c&WKC4*ZgfRDI{}O8284}?x@Bu3Md_(kq{rZj^a9^ z+jY(!;|SxMwdPH3si4@=p4}52#8d1y=(@qyQn^S)5POMm=Oh_^z*9a%YbQ@G=iqs9 zNPbNW(wwihl$R7epMd4*zm+DLq1(T{nB~0F9{n^uK!v|imb#NJp|hk-zCpKdvM`&k zX@(0NO&ej0DnmAltZt_=RdTjlD$}Z~E+aa!`O(~dDZ`cNQtW|`!<5ox3o|r`qX-?z zV-?&%bd+E?jBBRbS!Fvskg@ZwmtOD(Dy|#X+9Ag`OqbAxxG}|sYNsR;JPD!>*kEz% zpdt5M`NP%go1msXueEPj3#-T?$f+ebw;V}Cs`>M8+YKCi`0^M;n`nq`dTB2y!}n`Z zmaAH3`DTH4hJ87vKF^8wfGP!*OK>OUj=8*kM65d+vq!Xe_73GmLYDZDE<1@$w;7#d zwqqCC;?f_f_PhZK_j;5eEkCE(wqR9}sQ**%!-eE#q0&G79mYEm8Ia zlgJsM4Wxb7C#KKS-)%TMUt|v%x}zDyAx6?TiOB7qa%^Fu8uB~Xui)RuU$e}jMLe@A3oQ3X*mi ztAinCX3b&5qfZ{JHy-HD4cBLrCdkMP7bU!Dp=C8kE--=5R48rY>%i4%_i42oEe2qsexJKo^!q-rg}nxRdH4YLe%;qqt=HjKf0twU%{fSucnYLWO^wK)6lZwDC( z>W;mC6j4swf6vposISU1o6;~h+Z=a(ig@bw(IK)m?4=n2h%`=BuOn|=$5koH$#r58 zmww);>9c~PVb;q6^V1xxGxx;sq&~ZiOe+5fw*5jswl{N?-AZDc(|WW<3e{1KyhZZ` zd&>%*t+{-83UZO$#-s6jc?pG02O#_$ZCzz*OJZ}n;-C(YqA_nEaVWCd7o_RGATa5z zO*g3ddd#qt@=spB9X?Ex2LINnjojw_&%-cShiA9CVf{Sz5fWQg+=fZ6_AQI1F=j>h zZsU>Z^~;{#vXQzZfnP@Zn3ES0o5sO!|F7t>g>Rx?~V0m=ItC$g3X~G9b-aol+F*jI&jsfxt zo*{E%YQs&FvryQq;5fvHQJJ!YV8!#W@Uz+DwWwkS@cL!?m^ik+Wz6DFDB{OQ--5{J zlBA%L97phnyg>`~`hfRQEr@+Q928~RgIOiXWcaGKz1Vm%eQv)W?8hR%aHUah%))KYjJ8h ztK=8|^z29E^C*qUt~%kbjTU2{rS@YYCi~h#E&O0|X|bAbB0nwGP7~5u7xSO212rm_ z`z`_%?h%0dr=)k>9qv`S+ue-9=4lKi1W&j(K9n6bG`SY1*DQ|^9bP6ooo4M)Fl|kr zG!_^(8;MFb8oJp=S+E25inkg>N4NR~HhmP)fOa+H9*{Z4Ty)W8VBHRjx@_U+>Gy?> zzO)?x{H?<(+?h701XN=p+cPbmwP_^*Ek}!nZ~O^g1$H}gx=ki>m1ZxUkyCU60Da;` zm2Pb*v#sTobLdJ%u;SDhk$*Lh7W!?E7EtA8`!zwJCab=yX zD8s@pne0^%GS9h5o3G@`w9F~Ut?M-!78T?cQ_Wk2Nn94|kBura8?TDb&`_lXy(1dc zwe!q>fXm-EkPtUq{{W@p6QeKBObD)#Eixl3`=L0{x>egWO_b;BVAi!${{xHV*+b;v z($OsaFlxV}_#hQFL6Kl(>&>lC+%1lo6moMeqW0)}+%bk@?;HnCKkv-`B-VH{J)cPL z?s@sn^LMi^V5klcZ>`d^jQNYv34u+=3oT&=pLE^Ho;tGiX@Ti*IzY)SskE8m?Y70h zJHcT;{H&SWk%|O8a1dGyyQ0sq&mx@qf$Rd$7$l^Y#$c>b9D*{DQA`FAZeI^by!a_I z`WGVX<*!|$iRx+FT61+9M^F{^eiUfIVA^P2OJDEBdXSZ+%Z>K2?C3c7_%3JIQt@|e z)+koR7qRFm z*)MC~swNTFWQeChGxZ4Ww~;Kw!ykClBNCx?jKxf}RoFDA1{S}5&B_2hK*GPkyDxK`oErI)7pkY1JwS-&J+R=xgJbJ_ZnlT<3_xO>Q&dN+)PP&0#z7s|~+QEqvS1Li|P@KA1z>n&BR?&7TZDGtbaQ=FsJu-a) zS766f+Z>Nozi2nnQiH{X(x8FLrd++godn0&B2%sN;gLl^7p1|q$tqZdeD|DefU0we!I5Jq6i!RFH4wF#;-V z7$Y+UCRwHU3(?B6!%tqI%9`1Q%<@vG_xLWp5V@xTx)9nchodD?M^rS8%i^4?yDL08 zY&=)yM=HVt5Cdd!@wYYkims6d$11W*TejO>sNUN()a54dDu_!K^u|8%|jtG~Ojv-IFh__?6F)ok7HMT1XeSpD=c65*kVoocy4){)gi zGn{7N_Bne?990^pQd%hn=*GdZ$hDfpMXj`6?}#gm2Ny4Ri&FT;1E*1YY4(k#!H$M0l_H8tl{ z_d8vG_gwa6hdO?N`UI4zQ-uE*{18;Ip!^umZLa48+nZSh?O%G0e7{V_vV0wtB-fB9 z=MnQl%uwOx$V)(*hfw0ae7W&knlo~)NuvA0{|L9bUQ)ZpZD&2eO~nWd8LlC`DE+^0 z3O&$ck38^YYtNC}kj4~;-;Q&)k65$}%^$MLn8Ppk0?anja6fI>tvR*L8L7mzxirmq zotK{0X0Xj?r1L-cH7D&mw^|=XHIrm)=Q=$wr(_8P<3+%^T{`tr^uY*U?)CauM`f&e zlXXO<70-6bmd~$Oxko4qS+wdQZV)Y>p;52zb8h#LEo_dQ)z(C}sl0=buhW*_Bsi{Wnwcx!^xPDNr`>a2|7cr0=tan3cxxUb>XbY=^zoyI5GZF3*QC3W zU|VDjgTy(Th+wmDC{?Vr(jK~Y<`oBT7+$7RWDUBb^om0T1NOI$u&aRrk^K-aD7)AT zL~@>)9;0Qi%hepxbgMLxBsX}54$0xh#u>LaZavQCM2KvD=&XM_<3WZb=T=+=`V@3T(#38fkq#8ufo!kqTu*f6u9!)B6YY+vy?50y^tQO{wm^2{>LY)x5Id4~7|x%;q7vSckg_q8?}Nbch`4g`CApR1BUI6U0H z3+KQxgPeIRg!PfbD6jB|^-IiVe?H&dmYsx7)#ga@b%9r&s&MS561yMj+k53iseDNg zWIrOy`Q|iL$%`sCN7|)4L)cgaID8mkWuoy@o^u;y z-49GiP~#WXFV2Fg0$EWL)Oz zxqNwhB>LIN>di7n+A6tAG5oG(b;<+ow!`PCU79DMC(sd3p|&q*362S=d*iVC1%h4K}?KNO}2`k3J0YbZ&*m1C6j*<8$OY1bl&t*GwDXS?% zI))3E0N>Vnen2#^I2gu z_{?T%}gO4Gmmo0EYMgu3JQADuG?ReP+!?$bG%LRSb86gkT+qa<~5 zavXKiw_MW$_K*u;fdSFJbIHj&p93+MKW8n$X#_^^WUdbcN@ov5@Dm_cTv_y;3HMiZ zyr@Of`5(r;S>@!&R!_DMxR`+iWp9-3%YqVh_ny4OL|HWW$6UNQ+Qg#j8IB+e|iiG``feLm5KI)>Vy3RBh0 zF729PrnbH_+|?S*Iw|^s(9}dLPq>|go2HOl#A~hL^&llXDv4k6Jli>JFYZiE&_5w< zH({z$KoTP>IUMMB(35PUu=moxgJ8;Jm$ubew}C{IA^8@___?QN4RBGx=H2>m`h3(c zt4liwX1OI|bX4$g*w+P|9SeUmRQZUj?+9|IF^tfle03auam^D|-DhuCwj=4q?=|yY zE>7L5&3OyV5iZff3_6!@iMbCB`JBtTA z^d{q!CT*U%#x>^dJ!}Eg2vuTkUyrSt1Q3|D2xFy-o%i!^BG$kT@HZeubs`)sH}Y`$ z*!yiCaKNSkw#EH2_b(XM!YA!fw%8ukxK@fqBd$)`VIC58UX3abC^N8W>CR<%1U1uh z#zpC6a1s@fLj|@aLn-SigXWTbq#Kr(qhkG%;QYzLoao_n3g--l=CnqniAt^4qAu(5Mui+i-)vz6!$C?2Tvb49ju={cWGuRGDB0J^5!KK-ZZZuG&2EtvFk zOac^451VW0wDbJk0=9q~laomboBXFsll`_iE~g*Z1P{C6+edA4Y)(H?S`(}^mV;RV z9yNkCB3Yw0?}(9;K%B+vT^RDIZscQEG~kbGoqK82BaiBTK3v?@mrgGpX2d$GajmP| zdTPcWJ#b*N(M}7zeD!{vslW-|zf}FswyCvYX$xQY=;*#zv}>c+AUpx_iNHhi&=>|5*-GkT8&7dGe;u~;e^i2HsPU)HY8QBfq(!hJQdM!pdV1HOtuZ=_o)rk&6@ zm5^2NZq3Vm<9klBNcT(FU@-5li_IF|Bu4=>CnVs4kzD9l{>(thH1t@+Bx7T|QM~n7 zcSpvq=`&S@R0KJIFZ`k#3kWObBl&KY_M3@-)Lya)a~4-~E($!(&AzZ>@Tq6r2gvNSSL}j+2upNqjf%u3fsOem$-8 zIn)}sKGwCf$lEy<3)9qZTnXBuVd~eFp$v=^{fRY>3k7K*Gh$bLi8E0eEi4Lgnfbkm zKG_$Ku!O@j{UPrwWHt}odYFFR`6U<%z)Ltuia+R)I5Y%_;Ugdy=#fyW377kQQ;r#R zR3W-P^SGU{-P_T=1tNOpze{wK7^?^km5K~)xW#??al$xf0#9>2%cV0mLw-W&0(ElP zMCW6rLR$0fxvWoW+seJeax3q4t4i>mEkn85N4xaAPNlTW1&4`-^RuO5lyW-iOwC$i z;INqGp=1h>szi3#xLaBm|krz%!4qwe>;W|<5 zyyaS4g;gor>`MAlo}NQV^{z=Ue(6h_C8yt}3r^fhjCXu-Y4`KNYTf(-a8yNODBuzF zcts^1*QRZcE0HBMuoR-PctlU!`YfqdnLeR>=;vg+YD_MYN)6q7nkFcAAz5A2=SxsR zs!l&*o`S}F*LGxImd+SzRC0b+pr+c)9{qIc^b5W^hScn7 zCqEX)O7+nmp-waxt*?CA-j(_yhhIj>^IUwyQUY>x+w(onWe^QtO*74lkeb>YG{-#q`#82k8>D`WX$sl&TSRw%LCp~RRLjyB7 z0*>VFSn1AE2EoHg{(vX8JNAXGqK1c0tu^?J35#WSoc~U_f)+yEWAl5VFTZ1C1BN?B zDW|cVurf@vsq}*0H=lB)cYc*tyk9v$^H@YGG9Cxx_ed%jHf=UopYq9D`aYf2g>x0q z3ELL1p}b@WAr*JjgeC;iD+I-p=1qmJTIMyT%Lw_ntq6gknMd85O*x1%qD}z?kf}Rd zUwql3><^AJp{0FxTneGMhB}lEsdc%YU#Y5Zydhuig#M&Gw(tfL6a>bT^#}8u4<4n+ z$83SKy;qv75B-0TCR=gu`TQ#tqi|a&fcXO@1*3uzm__dX^yY;~RJMOl!Be1fm`<<}0V08|aDs7a>bHg7g{ODRpjx2plq_ zS;Il^F4s`Z92l-X3ro35Ap3D*ie25Z{@|7Pozxe;K5&(?sbpf~40~!#J|!X%4Et+d zHq&qti%9GX3Wu0z6uz(%)fY@&+m`v#X&TV>rw_?j8p}^qN|+M1mOOEqkLNZl9R|P4&xhhpBk0R1!1&;FG@JzKd z_M?Eq1pK~sR2LX-Ej!4yWlXbQHbE3xlyecf7hUTAp216pW!jid8MxXs=jDE%hn!u((cqz z++O#K>ppZ-aZkFwRq7S;Giv`743Sg)`4?A_02bui&L4rHrGo5{L%@BCK3tq{wxyZR z&Qwy8TfCL^E~n~8(Y+cA4{;=Y7cI%i9O|GM^5(+o^E3hc6~_eg@1(Xr@!S5{%>YAu z0k311*tW*+U>wc^m0jO1Vy}=4RWMabchoXhQ|+`FQqC?P{Rx2mi`aH9*vQ|97K(}O zWSaWM;I=||n-|-F+n(29H!zeB6gA?+!jV@`dvV904FyvR-jZJ@3wVb*d;%l{#Se>i zwB3rKOX;*-j((UZ;5yx@KKk8VJgBw@yQcg%^;G80N5o&6poM;~X40I<{K7sZ2S{M^@wwfV?|uOeqdGp54h0Br~kTFD5tK zMHrFdu67>`LLMj94E&*YR?-d)*bV;#Gc8-$yfnn6f%Ad)!kp%4EnL<*NN=siAHUz9uXYqeY{`h*$`E0OsF4svi|)``oC;Grk(wQ zc~b%&JKXzv!#psvv@F zyeTag4%!(Wul!$zYrQ1o*`lMP%b7nL3Oi9hS^eQn>Wu3awP?@XJIdHYhX~jjj*!R?AB5HpAIZMU-ws4(q}0Y2xt>;I?f}bZ?7wZ!whQi7c;Eokx%C2&M1>CJ>C2OR^nXxi z8$1W&)`vxTeV-qgyMPkb_HZX&SujjGZJywi6jY9Xcb?0>T?*$X zd8{=#cGn2LQ=Ln}E+79lDZF~lRNbek(*JjP6>^)`#BG<`r?=xaoaTU z8342+LLPYF$lXSoR8j$MH+TMr44Uiy%}L}P?PYXkBNQ{+iC>++BQaDsn?mz?^t)8J z&nS+NhND0qx47u8!=Jc3*kG&np5VdCJk0=K1YBOfd>b)XJ>DOD4v%MzhYI2nGtGGq$>f6()0-~M%LrZa3Y*IR1Vnjl=$8Qu2tGBi|LSkV z(BFcf1j>&34VPQZXFDZC`C2Op{nnqrjV*-1_6^#_;T!Ktay+x}e-qwsO?M8LM-p-tkPOggR*Z z$&-@I6RQuUN=)m3Z?a+Xp0wky`ak7$vS&X>?!Pgne1^b(DXVCKU{n9eM(KA&q$aRB z;e#MUaAA4c;@=dJMu}_j*-+QQ;BkccoX%AIKexYuNZ@t^s;@NuE1zt=gV4O=U2sp0 zSM@OhneaN%Ui;kjD@P? zG2R1NO&xgMzPre3>@bbw=fM!+u~jUSz$dF_EKQic3fZ7aaOTI>Hk7~eT|A$jO4|P$ z-{rrZp3fNSFJ%=`!f3KT!Iw5Z{G2f`@SsnsL=mVs@cFSZUbM$l`^17Yj^TYGH+{!Ju5{nhJ!Yr z2b;SB-@`tW*YuTcR<)e3;)eF!kF=XeyoUNaQf+cw9-pn4poU)(=wp~{zfu`lh4tSZ zjF$0mu|Zx_8IQlFGMQ`SzbXFsBsU$mEpy3i{NL$7KR3L*e@kWHvfBkP|G02Z*k6rt z0>7plBEEsPF#HgG8=`=Lb+Tz!hC?87CTxh3v=&;ak52B*K-l>Vf`EH5+BOpSCzD^6C7i54jn^3)Emr5k{OfKw#BT@=!}cG_Z3ufcGpYD zHY8U+qq>|uio+l>Tys>%ane$lG0vM|Z>1o~u-?eyfy(y@$lGEvaQ{p-i4wx4LeaF+ zJl!$=^;J&U4f)Ku?4MtO|J|M5TEE$9AdAF4YyL?MKKBD8m>iCeb{6t5;v`yGjtEo; zq4v*&WztUbN{+a6Sa@v4<5>^Kaq_z^5!kHh8$U(7` z`BWF(v$>d(4a}MRI2fXl1yj0c?4z2S^50BZ&?Tx)JgG9=F1*LCrW@La*kWzkUmcWs z>i#KH7VqLm%-4`WH{rq({1K8@gRKC5oQz$<6Ud(_9HQ)NM3jC-gyj>G%C-n$>e)Nl zF$HqffJ0s8DJi~i; z*eG%=IU=HCl`h9^0##17jLEffMO!u<_F$e8=pM;|ly3DiQ#p@6(P>QuvZtsp4!bV4 z-^aF^={`9E6Q3R`|20Ej5Xiht zdI|EyOIa`L5*;FiWEL>g?KTHJlT+>f?`|Qsx1^oBsZF*rFtACc!rSUqcJ{QX54g&7 z@oI!Uh!k*%3$4{paL@~RXib2kvH)Ynl4&w62afA_N-v&{l7OJ6)Y<+1S!JsH zphI(}l({_%kLyw=o+`^jar!E+8h0Z1O!cE?(}By^Dnp2us*{WHlH1A6lFv9^)+5us zUc2|Jl003_y5cU-5B1ksM7gOLrT^QT_>jMRy-=dUw3+{4G%||uV?bo@x@@u7gK46d z3oD?Y2x}K&|Ga-`-Fr4BmG*~TLzaL zaJ=3>&3Fx`+ z9Mk?lZv17A?MHSE;PKVdw}L4Q7RpI140kziRFU}rAs^Lu1Ec#Hw&mj)=-blnBLsnm z<{J>se&$1Z;Se4qOZs)YzB4G~2&7FMy2{?ve*c|R3*?dXjLL2-OjwSFE#B{mF5BTY ztthDdi8}@df#+c$?yVZSDd%OF8N98{cn(%dL1R0OyqbGUg}~*Oos77xg&8jib@J}= zvyxIDH!I+S*No=EJ?X2=&r6&SAzpc%>D{%@vd;JaL`L|Fz~5`B%RTa$AvJMCfaaJ`ZY4VH^ybs-8fvO;Q9=Ov>cG#awu(ZOTq~s*lnex zf=Qo!VZxAaHtliU0ucQ8NJYjxJfiDcZ|31-2tKUNyn!g-cAQD_>G^l6g7t=wOHLU% z?V%pSQ5&CwaPtq*Q*9VFsIxac{oYz!M;ZQ@AF!vBKC#L=MBSn%Q1-`%zPq;yO5=OZYwU!ufh|H^TXPEZHajL^o?*uKVHYP-S_g zwVcN%Wno(RC5-oH=sNDDdx!p)8{P}}FJ~H*GqCIF-|ub(QVIwV*&j5ld4%!1dIJtV z;G)8W)L6I1^g9`k@e{)t?I^{)TgrGAd|UDUEie2iM?zNH$m9PwWd6-fs0>BOBd3#} zaeF5vw;mLP8>m$fmVm(&qQ;PJ_yu!j;I*)F=+yls36nA%M!u3M|NdCEh2KjH^ecm1p!~SmRdR z3hS*6fJMrkq1G=cv-r4z^55_HEj*m{{1}jLKioR5BWZy@&1^uDi3RqGpy`?Ikln7* zavUZ0O+R>~;j#5uHOW4BtT0!kzj&^r@!AEPKl+_352{k==6S~b`x{TCkH1QT#8MM| zwttjSn|@y3VEnaO9>E;G!O$~=$SAQvK1;4-kq3i>1fL#_iIB>Y-!TCkZ-`Gx3ExVk zyy4uTX8wBvnO%l}dB!X9{I@BF&>6!nol(bNnB3sIYXrFcNYp_{UDVvZKPVH2$s(ry zz=+yGn!OG1G5IWicX64UhhjU{f}uG}>u0E2uGj#xTpRCuTApI-#Q8&bH{7o!PQJKb zs{{Eau647k!#V7wVetg@+ z$PD}S4>B|6Av-LnzH6iHI)UeUCHgh$xbwV-gl#Ow>=B7Z{70%d8Vxjpdkk)x^ps?H#SoWx42Vx(R+>>XY{SWv<{6#Hj;~apXK3nH%X2?4^Eqo*km~| z!NK6Ykb5zrO(ra&exq-)tjvN4q^2`S)f~+d8<`(Yeu9B zE9UqC*+KomVxPsf{zEZC{CqCrr;X++f1(VxzWK z)BIFH86d&z{G3rph(>UPnz@RKXd_!qA4tWHjjcQ_X7J1nhR zJ9FkfHS&*R!slMn58Jg_53t`qd|bN9vB_1=Dc?Ky*snhZq_|HNS~Qn>_+r5>VQN6Y zE^D%qO@rN|jau%UPp4T38y^U=2Oi^)H3u3Wrk9BDu`Ru~Cz_G{TvvhkzOSvvf#Mh_ zeUoohcm7h`a_q88FOwacb52)v9sS~gLvJIoZMD<--O~3$*XB1JrXw5*S}QQ_ zDS=t+&&{A@yr7Kea9mAC2!g5Oz3QOi$Q;L$N8`|fQUaev=(KLZJi*I7q2N40;KU%i zRM&cIChEe`>E>|c>u-5z?65ipp0;du0Cw-2qCq;fs}Bmqk=|3U5Wr;Kd=BGT3*Wp; z&3liGXIh0v5kCG#Ru2b9bS)L&i3Yr2Ff>R%V>Z+hqE5JSzUsubfodF z-*$;zP!)(E@I~0})Pvx)Hl*I6??VFpvIWDQ+i2W~u9mQ-UVZ6joQBgNit$6mbU$s4 zr2<_%6CP!${i#X#A%}H-MXZ5et=%TTNxh+sZw+>;tQwEvde$4_eLY}eA65?6YYP;^ zplM%Yyl7hx)kVud;c&yE;m*fi$b}r-mSv`_+&dxFchhhoqn<5-@*rv}&8meDRlb}r zPP?J`UfUijL^fxKGsTK`YD9YLtg1C=Xrp2{oZZ^Qy1TQi$8B>N@c1HHuMcvvhMKxM zM#0_xWbwF(qO-d4K6R>BcjYL_ib{2MS+Tj^$3Qd%Jbm;^efHiBL0V`wk9Ynp+j=8r zV>oDeKkD|SNf%%b&`UG2c$=>dy_mWzwaCsjx&h_jUbFi1#r1em8Jpy~PQad(pC*E6 zh-P=MTBJI59{sF(6Tkgsu5ML@;jj=3yB&57N|Q8VsOcZ#nJg{Rp!~lk6qQHiVlaDXNcPKBb~q=yjREKR zQAzUOd`wW3f|(*akxye&Z%tB}gVTDgKQ%b7V@}PvyO_48%?&p=$7&!DWQQogO;O}x z9Yy(Bq*$6q1(bw3e@yu_w`-&5=XpL_J%(*i`qk~*JM*dY`i3-wqlZD#<{Kre#teTz!Nfi@}1E7q?3NE*7tY+*6^ zrpBNK9J0|d&@{>G+oU^an#|t;R5uHSMiH8cshXB!C=Dh}D7blWr!H+R(;8z z$|$y{(Gr^^A`QbzK0)7X+?eYfTAkKmwsgoql<~v52VAENZ-h~4<6{~Rkc-5pR+0MH z?2)vk&-GJDtjn5HIrU~!Y@*wIZc!GKEi&ZH!gJcg#vSLy&AbX5*+sbzNH3UgEEnNb z-6I%@fm&|w+~H8tzEkS7gJKSe9++(Hc)4~I_1KM3?K)`999g8A-92C^l>)xcOSs1RHl@MFn#6utQHqy~psh2pzjt9|sPV|LABsD0GHZjP9)1K#}tm^F^GOx!a zsA@aku}5tGw#P{|9Ui7zq)P7yczM_{xBOYZ*TuZ6v}iSFz3ps+3q@N(b^52PuLcYn z=qp@ElVkJE)z6?!E`(!yy^q&k2djxx&?NnpM%#%d_SRJ-PnhC#{jor?=GgOYh7Qq# zM+%H>sm5$7Su!mi*}V1T$q5P0d=SbsyqZt`A)2Ooxw5OhhM5Wtrzmc?xY>g-+qlYK zZDjjCMAmZtNeczMDA%}gJB2$kNQ1GvzQ{A@D7Lrqqm z;kcJzs!vWkcSP%}ea+hl)$qrOlCtPIlb5<#utn1C7TCj+*e4hwJZidRE^@*QE%N&4 zHE~iBT~gR5Bc&|muC_jwa2y$K_PxZT_dR66 zc0_7ik_(P{oA~f&oU)g)2z3?#)HY$+_PkL)f}-4=rK>5f*#IAxrAW;wHMaaf8i&Qw zKD|Dq?^Z|C>({?%(F)UZzTCg3B2U%gGB^;~wlzN}zm8IdmVPcSGO`HMa_#$&U=`AYdqsdbiV`juf`c|F2dS#u=7Jx!%>gd{*20E>OSG0w>=t{D*rdi8Od&*6p5?8foZnpKoxxa+2af?slh&<2VeEd>? zftP7gQX?zBNPwrn7secG45}%RHTPPmRyc)U#aC>*I>cwpI)Bv@oMC;e{pmfXHc|ci z0zJQYMJ0d5(J%`QJlq;_c5qFtjBLU%-@Kt2S`8v=+qyg!#=#sSdEL%Cif4FMOLBbzK7Lro6L_9n*;5jLu%gFX|WIB5;`$dAX#hfP^?yrRd$ zX|Udz&$A)VruTs+mu+^W59F z?~0{!b$N_Hzti2A&Fwl=p$bYGs=_#Bw6k@tyT)|qPfsbvu+@akOm~@gQ840bk`jog zs-LIZVfIq*Z2pzBzVb*wY$sjR0gWv&vlk6~8smb)xUKhH$y=&vXwPf|Wn1U(mH~HW z0Sr4|zn;;NS|6ds%m8U0n(G87aw5ZWX6B+TfQ|k1SSO4rF)%#SexI(TuKkAQTpM=A z*B)G=i~7&^Ux5-40PO<%P{fCjxykzz(M5&36<6?!{$FT`;bhVO0WI;zCiv|yza3(8 zCi?OJ1|~Zbt#(*|%GQiS1Fy>_T<`NachKgjeC%} zoYi2oKNpzxQ{o+e$w`3d>{Y@Wb1i$S4OT2U38?$-`xf zpG?Ct#ao8asob{%mBYlvf*joESx=-%;=^53A zP{TBj?tfw_{?j`%Jbo29(R?7_sQ(5p;`<5=6}~w;nJ-4D3s->R90U1_N0b~VCaJ#| z^9JZ$0e=uvwBjWcb*dQ&EFi(X`qonz!*+TOZB`gf=%` z&34TecO|~5Qr#C+N~rJb-d9S`Ip->Dx?AXjE6cBguwUKcpY2NPHvW>MBp$+=N&8bp z{E+k&OxJpg^8oqLV7^2ph*Tq40J$f?<=oC=A974YLsF`g-{e|y7XMkF!xI_=Bodzf zZdkx)BnVE=(1U=;4Eq4(3-BI z#(Gz~H+{In{m>a7yuPj&*$ZG;TMRS%WXesjK6PQ)ch%r|-Ri)j&q|7DQkucFWRs1b z>f+O4It=qfHHj4>uU$uFLCubTt+#R?De7{$MaKYk(SK9ng?wf@z4*6P^cSvQMrmF? z?cLCS>f-zl{zyK||6c&V34*in4u03NT4L0Y#(>Bxh`9vNfnT zJ{v8jes{iesYZ#_-dLsAMy9FdI_@UJiw~-WOtCq4V?~x{!&N4%buTZ5vkG@7jqhHk zmn9)BK=R6eLEipfHV4Cpe-ZRSaFw0NIsfE5LIK&Mhk)yXMBp=e~2|GX}VICLhSu(K9B(_v81;eRjCcRRymaoq5%*EIISaKH^z_V_=g zUO_0TVAhwas^#d#**Once%UhqnyP9+O-~tPca>VAo2C&J?-gk{*Gv$B@nLOg!Ez)G zo!djHWyO${45{*NED#%({1Em%f|HH4| z#a6BG_j_{RAkG;0WIh11x~Cb%+u;HbjjzniJHs9N|K5+)T@U{=a2&-ojo-m2oW&}; zf@UZVNcu{VO4Wc>A4e$H4nyW}=G+2ebHGh7Vt*itDwcALG+9A#7rI{} zoE`t1o{yQ1c?y?K=&@rUwWpuv4+C}s59U08ul)(sVwmr{>U7>iKc4-pU;NG-t` zI&p7rI`zze{CoY*j|Qu)UeVX}PmO*Jl-)PE(@nG)JEu0}86oFI|Cv9YsS>fN%snQl)0^TAQ>{f6HSX3HHY+bLz>TSfmpFphlM!7HqzmT? zUgKR;ot6KD{Ud(kFPJlY;nJ1$@4)?EMqx01^xVrod|rLih+_R^Vnb~wc$}Kbuwvny zN2LSUe@^T<8O^Rt0-ZK*#yFst99WtE{#-6Y;0Sz@ebT0mBKieexp4S#g$G@(fTH!< z&n<~Hg&wi4Y+oYS;jD-lan+89R~C11*%YT-0whC0;a2izcMBGyHA@_$X?67Ebs!9sJYb zgj~iy0Z{pS=1YY@uZVSOYkGkY8l+N&Ri|P1F9aoElG9AXQB@MN+Kegs?%v%&SH5X( z={S{aeNZu;S7Rfh>yPv6sgWk+CXNVpb*a)#{r)Xilm|2>hDcd}X3agFpmK5-o23h& z=g%pI9>wrtyl62Sc;^ankpAMKB&z+4x1#ra`MO@jGXb>xZz9xCfZyf}{E8;TqCYyi zTF#IV-Q=E!JiXikREYIr*y{>iZ(kuiE%vqilX+1=tEqR)-oFxKJ{ZPTwivMX9JclZT}7t}N8uRs zT%K7gIQAX#czbARX{Lsb!EA-W5ti$iDjsugrMC^bht4GmeX2QDX-3b+E^oO>zcX!r zqEo^Osq)$@SDzz38Tt;)0ttDL|v7{N*y~Bb>fS~z!@hGo#4>+o~lnrauK@(>pv&&K^~JuE4ikX z*HvY6=|kKc)!6Ig{VT3iuW|L*Q#xkYOk`N7eLj)5lD;$b{0rfz@Mm2AVOIUWZ&qym zLW*KE@^>lyNlIUw9|0SJOg-0LWw)KUvyg8 za38SC z_q$O}qb#?7O!@oAJJ)|McHEA=22Jfk85j@08Tf(RAeTFYHA+;i{~T!BT6wL_>xVcs z7i`quY+3u0O%pJd+a_r2s!mSTERW>yUV}C@7v_?2zAS#^`L%{Y_|;TXyDg|(sbcwl znD62G72O?XwN)hLIvh%Nephg;I@OSW=h2?^xcAF>F11eeubctC?O$sf?-q%Z`#%{! z{1?t@X6DDgIL=KBJDprD+hP3&5*PdS{foO_AhZurWwF0I&P`j-{X$#0wtf*EK-A!O zEP17@DhVxK%HYk!35H4>$Rg$zGTnVTPi`d+rK1r3d?);QgaQ`ew!QKjO)K6I65w_u zpZ*=xL@bJ^3lDkPp$}UMlVp}rM?XAFzI%+ufr+|;s`R#DLwAg>V3a z&90Xx0*{lY?Ur`gZ!EjFEtF#-AcR=Cc*n^eL;H-?&AS*rDn{|PZB52yDlesiEHfFoOm-CRlPt52v7`Gqz@99TYDX}^vXS- zJqNHM;?E3L><;<;QP1g6SC|>v$C1I9MyC{ z<10ra&M-9OssNI5K8ah5H`=VmRs1zmd86^bJh>w^@xM{}{xKL$8}h2@;RLJ3?GMlTEPl9$ zx~OnCm(I*)8pJs`_ge;3Oh7HL;+tZrpq9Wd)48F~P$uoI@K{w~KGXvQ4$pl3a}wr! zExhbcgiX0$GwF17AXklPw6503H4l^V@e>saY+j*_I~8_obwwhs#>?4mebyt(ao6M7 zt(?{sVW0nfHs5>i!i+FEUd=TxUVZtS~rBgWT;* zhQm68voV(-KiuEnfT;$*k?$e01wJDLvJq}|tp>7(!{LAH89?>Z`mZgnAZC20i6i28eeMBS~)mYxx5OCT9UdHI0tobg1b+P&qcF5M=_VN5oZBi-uoo6Eh8)2V$s)x z9fM#h6=i$Hu4$Wr3iRH8CHN9|5gn*kczobkYkZjCxf!1A5EzpSITDsN4mBM?tr2{9 z;k!2^f5A4S@9=q9PYJ3~ccA*0dA*XSzgTI=TV0jmbm%?1Wu-Oy0Cj%laeA zzNrVW^#hF(uB7k)Okelz*@LPC9Lfr0rDd%`p%N`0`ysMT{h=E#> z7N%5Veh)Rk_6g%xCLh|X!+H_7!Jt>)T>ZgI#{D$wtAkKSyU$iiP@nn(%FBh^e?O_> z!1Gt^{F|Gk06{>$zd?(c-z%^(xVfY-U~(AVZ9+2+{z3>#@zHYpDcS0=*6syAZ+-9q z@xAkwA)&2&_{1B-z3PwIA@sWAJykRl5AqB z!t4>G=U>pUt~y2d#e|enH{LzNdqLWdZz9i+8>Krmr&gCfuqNQtlot)jUGRRrWO2H3 z9?0L;=Fy&n7mc>!*))V)YCwv;FDwaH=~M3_GGb?l;c$my);{Rb)!1=WvBuQHLK z(IQKvhQEIe3z{LTZn;b631vQk658rPIz0qK4NHv9@PlwNr^UYT7{~KZ`A=cqRs|*L zRENZ*Z}||?o5f5ah#l#6Q#}x)k&z~85!&uILa&_BUa&1U7of23>bphS%POO6sQ&cy z;~hz_d&?8ZRyezTjt<>`oDU6g^+nk(XVOHMm@p-gV_y^wlr#tLwGqa-w8$5}ctO>` zjan*W)`%GL7;7{kuX-*@PCQSB%#_OJxP$n(-S~l7t0L=;01Ww$yy4>G-?VT9Cl&Xz zNht(*^8E=XiQSoIMJ9bbCvdS=HNdFwd9tb{n3;Uxkd|*8MQ1LPOqfNjB-k87(-l(- z*nwkgSH~>e9#Hdp)&*W>8}yCf z_7R0gk$eAcT(Oyuq~{22+;p7suAn)`p=A#%1Z9X0zpm z?WS~>izb~6m(T8*<(#L`pM(}XJ3zyH@-Z@em%_X$@$QqBh=)&Qf@ktuHr+BAlT-^H z(#E7Oj>kpS9H^9dPN?P%+%hKM!;&fhQ+1&bvnktcM-OEiZIN{9UdxD1yGz-oitUnO zu0Ginp=W17Da&7J?rt7g20o4{j^l9t?d1Cz1+VW1_jpQ#AmtkybKFZyart z<_ecZuoF++b;=r|q;8$#l^~A1BIc);0q+K#I$HibKV^SERecqV%cG zeA{LnT*--xgYH2BeHWL4MSO8V>=!rPicPk2}ykyY5r zta*|+SXZFFf3{{_xopn!i@-*GIybl|3;g+<((&Rkn+!e0hQ+bwP9-Y^2aTs`*0Url z1<(MsH2AFBzr8ThJm)#F2LTe89`o~k=dm{Yd>0G3X&_7fQ)NO8s8wRM zH(A)2w|JJ7rvz%4>WD-ce!&U3myrirJxxl0xel@>nMWPe7jK}?eyyl*GAY!Xa%2cw z+XNUvR5-}&fxN_1Ekq*U4+g1vIK)XIvN5iMq_Jma3`SDY3`z{eNKtX^JUopPowO?- z+F)D7uf-xuftw zDj8N1zfl`h;i(!j$Y>ANA!)9LyDr1Dz9%Wj@!hjyLA&dVaTK~3>qLF7@5DZ9Ww~G- z2c^38tXT!@q_}Bka#KU`l#3vU#ZN@Dy_*SOASn3u5k^su9wdaM-yKA-ltE4n$nV>U z)uR&7{+96r6PLfm%zXo}W99y8Z)oR+jqlt>`E9)d5o7rTZHe6}SG^L^#{<<22KU@q zyb(={14GRt7bUmydRpqy;c1{|4S{$3d%1<&v5GVvf5vy0EiKa!nNL!kq*S2#5HDQ) zzHIAm7TeM+r`xBzt0hakpR;x(*#)`!OBzn$mi3Nc(hcvR4l3&A^gX5pF4Rb=L&IA5 z`1;jOMYwGaT7{$BlWPJqu&!`6C~X$4BYvE6_Ovk64lFSb3mSV9?De;T+mvrxLobuF zMY?C$ptat4GF_<9GBzc#|MpCCz3j+CYg5{C`)I$b7dsv?9v_nCh7Jj@N8ah$9@49k zZ)J#Dlis4^YdVr-z}8CINdD6}1_Z*$jWk(}7jp59pZ~%g?F2HL=F-lThcsCfSO&R} ziseX4NF0^Ppv*?Bz@PBh`(nzH%2WU(HrK$BTzff}{bRBL(pko<(2) zEwh~@=HWTC0Qvq}-5i^vL`qc3d{`^1$5$CMCTGQzsu`1$Q4%Zry=>MyA8yIBc`Y>U z@qAl*87fYO0yit?LcoV%5@@0y_VT5C^DuxD!+0eQUf%p4X;-TzI7OMFZ=zSO8QpLg~C4wH?JKWmqzR=F>drNmaM(X%ofHQ>$VabnXtgEV79 z9=Xakan7>j@Fn3n&dzW$7b0#KmjPbpborrN3PSluuJ4Xl1oPlqEU)jnwDvq!zKc>c z(v#~%DJ$#HUIjqchQct-P5cggz$n&Nhyh(*kb39=WJ52k(I9t6S=GsWxb%qKh`>%* zFQ_9!H?cBIcS+30{g09-`g#WVSVhniCydSYo!P|u>wI@0a5sK@zy|Ip z^`_cH2|E?*gJTvNb7}O5CQ#>VG?6S$i|+ST64H%|(uEQV^54zUqPQ(r9gx)E4J`Zi zQ?|ww-mx=HxMz@z+Wa`51vyUX4jPyvFeCA)mBf^bGIPn)_K|K7pSt5ZTn^HW zYo-{v1wG1RBE5w0g=Hff&(C;VtJ^i%8p0PGX-YSaDpHrzh4*SIMKyd#?qi(KTxJX= z$LrH8JBXHH{au=A%aE5+RujeHLkt^*wiB6t{%G;1HRC26B584~;Pa>vn1Jm&0*q}L zTVdH$dDm;4kg$~9BxB|i&w9=Vf5H7tSr@$+$y0TF&N&SkUqdM;Yq*7}Ig<97PaEPQ zgV+TWnirO)Ig`1H_x#aq3!i+5x0l0LufNq~$`-(Blk9Q^Y*QZB+^?I3mMe|`HkobM z(i?hj{AVyMRE>NCYv7*JBcL17yvU%JLer>L%4p16C?DIs{MgkUj-W$!s_zWlRw7I% z_h+qE0?QJ2@!~nR=K6rN2R|-rlPWmO17=Ygi~d&5IU-Q&Zd?0&hh)!4~I4mQE$Z=?+~eb3V(!s7-^?ynMM>k6J{hz z^dSs_AcKlhu`N1G>(Lr-^}R#Sw<=pLZQQm+Kac*wEVW ziKj}gwpYz)Y|zb{ufumG<=xCWo1wwei$`Nrs$(iy&a>uGZ?g|;;t-v6r#BsN7;(@N zxvkVgnsf`c^6FJ;f82w5Gx6=ABqQ|*c-<-aj72GvIijO0p^ zOw_2%XAbHp44Q2uOR(57nwL)bL?dJ?lOfc9sTi#a_V%y=#Lolqe&_IanG)B>Z1nXQ+siOp zY^2j%Vy46N^6wf3|0ZX5pJ?l~Ne6< zx|sToIdb(u-$s()QxDQM$UO-OJ1=4NPRRvb{yE+yR6mdZ@#0D0@^`9uay!8<(DryU zrIBitl(q(5eK3k69ypafAxo)G=3fodel#(fwi(;^G)Z)Hc*I8#jhMj*vKaafSTkwb z17R~9=Jz8L0b;%E+E-?@tSTv{P?t|sC^0d!Q3}~S&F2-nes^jq;qO}k$u|FFQz#BE z+2q-`Bv6YLA7&}+En(8fHkR*eB z*6zWj@>3gSyKdx1{S^8Xo9>s-oQAoxfJl-*`gG z&-@P5UH&_ooczD_H`YRv4wetvHkkkKf_=JMk3hUv*!lQjR^P|pVdvUR16IgE-KP#{ z+FLMFjuXNvv&G5UBp87o!63S31=M3DFNu|HMnf;(F1gGp1Ld5i-o;EB4`bl;RnedL zgz(?;bbDUFOAWm7y8!E4m+id2Ag84%+}Xh@1cqJhv}t9Q&%w&Z5Jxw@guHj$(L`$= zzdDsrCs24~lobBKxyjxhv~f=iFE1Ay9ok4KKwwmNwMaQM;n791y>zH7qm9f>1ZEu^Vv4e1fn0`L%%Edd7N9uj&G+X!C~%XWGA!vbKKMW19mylPvDcV+X2gZ_=@!Pl zeB$A`p4!&17cd;YeA5sRyDWWil9A{oiJUG$)6cEcSs&6qfW zQP&xc$OhUl3cTVZIbVRZ-ef~=V9$9-A%$KXupzZ>YMeNT9k3z#`7NauLxLXjf4pTo zU+`IcWH)al5eRe#$VBv9^j0+CnmD`dU!{mStc8xeM$eMCdGqys^8&AE%$RR;x5oUZXdoY}MaJq}x3;wGSvbsqpcB zQqb{vM0hlZVJ~F+R41oN@9xx7t^U5!yuMx)BMgv3|88H@>J4fhgN@pvfNDp(2$-@k+b(AfSPk1I~2^T_`9$#2Cxexd%$>GrrH{@bI=879C$1eX;Yha54=Se6i+ z_{-#1@_LdP3Ea7y0dbxQhjdEd*w?)x{P^l#zTjH*n(W>s1~K2xx3|v0@F<`5cELDU zHF?}}B};bd@-98zNtf+3UZ+ob5%k8Zv2}gpgSL|*tt%9bjt~zP$KJolZVbk1Ahr%%d)XdP8ujl6 z#Es;yo1mr`HWw~@R}QuBwH9??UWs(^&GX)dUac>xN&#hClJMC-aHaaJiEFdhND*x} z{-tE2?2WZkYk(~ib&TDCSO;ze6M7$Dq|fS!7?v#;V!T1%rb@?d50$3?!ZF49lS^}S zu(_eT4|m5Uu zQH_~rgO8)U>suJ$0F?BmsyyTituV9n$0e^x^j}A7r%24>Nv_7BBaQ)VV&bT1NY+e9 z4pcNHx&h@IG}KLYnl0gN(Y6Z}KcASbe9v1m;S4TDMbEsHl_a<3A&i8%C+%zWy*BX3 zkU&4G?Q}M?_c_Xt<+g7;2bbR+97(z-n;9lSTsQ1ml;VO@>vlhT6eiB0e^T_Kqa~k%jxyD~ z0T^bpH&nP6-1`VVY4Lbe34N_ZT9v>&;cT}^JQj#IZV&c4sPkObN~lOcTfbg82Vj-k z9N&siuVU9Iwa>xD4Q^xS0ppiT?o6V_i%$W%4!paDc%JXt@-`niL8u^YyFN>TTb^=_ zBQo{AKZch#=v9HxLv|_v?qMFoBpS-trH+c`Qu56^Cx%x0ka6fA6el3xryneSQ08&V z2qnm|Dyb@B&_3ObopOMhZ`^8W;7-@O+*y>Mr;T&zYJ=-zT|LXNTMioABh%QfA6iXJ z3P?7L-P}%mGFmd1yylW_!cpv)h|Q~|#JS+)2I_v%FHfR^cnr)k0aB&g;otV1aUO+J zz=s-H=xL{E`w_@=$qTBXgRgWSJ6b<6)KVXuh*jN#d(N8bjxZd9_#ih9kvNaD%-^gr z8}zjf$_+P{TGx|C-9bIo5>-WSKDDrnGDxUZRfm>EVy0o^h(=D{zz4b3$zYGd?}j4_ zJc&X@3ILv6UJ_2D#|_yl@k*DXfl6bA1rKGO&%ZiGHZuCr4u2@w^fkkF%b|Etr`;o_ za~d&?X*!r9IwL+na#Gh}i%4TNLpxcQQbFEzW4GfEz?HDpKmZ*Dm$FU@Y<3!WQ`W5EMr%fES=Hnrz*NK z%jqy@5XCsq&?cJDajErAkSk3!rxkyCSq7ieI*rpA)p7~HY?s!%Z{aQ)8z_->S`wJi zbq5la!8WXP=0s$)%^|k*J6_8HX(m!KDq2w52)Gmj{4<*FR~jKMdhQNnvvJBucGl;C z+;>!;@KBRQ1GeR}+?4+9%{ZpSmseuXTf)>9TEgEunGvXm#4uoEU4CSI1~Pc;sAIhr z6q>WSdD2DWwgiE$ObiTok8m9WK*sdcdP2uMl)XL;=VeJfXr`fSKng9*2l@rk&m&($ zr|gCeiBy-B?6;&z{=oy14r0m1bA&(BA?KHqp~Sud@`1D+_Ig8)k5u1_Aa{r85#C#W zF@_D;$%`4zYe5JmYW+?fT@@5!x3s>7_|eaLpgHaUEnycec$7h@!KIf&%vK-dEt2i- zRL&U;;XQMH&L`1~4Ut9P?QgME&V4raFJeoJJ#^#nZ9(&9(6{$Wf^0@h_50hQvnCxB zqnX$bRxQ>ODPNEa-8jOQ;a8Fu;d?-?N@f%H((S-2(7 z!&S@ho5ar2`|_`5^(xs5u7#f}-#(NDS|2trF13EEuz_OU?enIZpg|&Hp?mk&7xJT@ z@_$Cw>U80?aR<5>w#NJLJ5XZ=Dmo=FYu5(7lpU0aRoe){cAPOF&ycE2lk0jwCfUSL zf8><_mMJQ|sSJI$>OiLfGEhSa)_u$i^HIhOGnYQzO=#l9ktN zAX*W>YjWD883}@*+JL(%o{?st!)V?-8MQzr_Z6DjE>p78IlkZX1E+!fA^;DwIPco} z4#onMn&HEY8m@{ecEh_Bo2UEJy^Yn29}N|RZybvBC3f~GORCOWl;vPy%LuM%E}bjm z(ofA+n+8q@yjh7=gQX?`8q|&4)O%?KTF1|7nDx z6I;GD?*c9NRAtSnGr{2CO-TBVEet4oH%}L9LC;2k?VGQzj@k!=@q!mI?y(Qv_)?&KZrRCeB`+RcP%kL++GD# zZppTVG`wvsa*es@Bg2%HN&W2^_6E(#OXEOF3Si-!zYp75dXbk@fml>Y=iH$0Ve@ z(eI`r*_wi3jtr&d6n+hl{s^F^e0kDym2&fr#YNJhW{RBDv8+qx<`c^Ev2dZe;r+#h z;WzL#BoZlRRbunEaX1r?0T>gptPYd;MIK@Mq&evavd&gPRX4blv00mM&RFSo=)<3y zb7>#SmZTReOmD-h#}aI|ru!Kux+)_=(n&NYg=IW&S&5sD&K%B8q#O1OZRBCkBHner zu=IN1Z0Nxr$M%^Uwh^)$;C4x}`#E3);oaEPN<`?YyKrD*pD4SPK0;xg!mx1rBP*T7 z$(`wxUSr5qaU&QLj!g?50au$&BMkI36rr~3B*AMu_;f?vzti(_YyF^4&2v4{Wbb6> z>`rX@JcA)k5RZKdajfG}Hm9D{#Q3d%l~)pkSM{+?3?GQo9ZFSxE7cKcdHym?_pPVq z)#n@Hwt895=noU1Ivy(`epl}hC*8~`@N%)6JS4J!Q-uiT;12<41j6EwW)UALktCe> zHof^fBj&?vI1Q4&+D{E2Qy`A&xZc zCY#@u_`Q@k23p`YcOt_s&UHN*b#?e~SBOZ*Hf6G!o2}lwb-8WBO&;@4-*f>(0o6(x zcgZ|EokTZ(57o|_Wo%b}HsWx{^ZlWF0JYfYaw|l@DF}^T7SBsi^T9E4C98Ip-afRW z1DZ(NmQi{Ry+j;kYQ=S@ZB^btE^XsRt(+MYi0XIbbeXxG3Ho$2rptaHI8%T!ZS53p zl@*$f+l6<&b?9X4^ff-ROD;AI^A@A)_$#joBdN_Q{NCEmi;tJINPj` zIhTb;WO_i}-V zJnYw^K6vn^mn^8|>+(hH#+XvZneLvN zJ@?to^|qBv^ihZX%*Q=MZ-;U~AAJbV!XixIvqm`Rxo4==vor9_ex<`7D7AR2%bAlYvJ~8b5luD=9{>a${WQj+x*weV~A-~LwN)v$6W)LU;3DKTVtb?>(UGZEs1jYQ2`mof^mSi zFTUUL@eG>r9xW zb&PVvozHtB4{R)EPLkE0fjKFSty7xM3J%MOhG*CvA@y_NbnwqOrW>n|9I_rH4_elE z@6>Lxe!Y0V9BuU+qQDfJo_*AU&|=K>k?jkN88wWQ5vu-Ir4iE^pO^CC*5JvLHA7)GM=anYOUzxvG-msH2w!aD4$fWpEtGQn zEzy%$k`9b&3NaLFKWag@qO#?UhNWs%JRkB8gU0>!S+eP3;WU3HTlvFqmDovgkEQKoSu=6glL!b%#b%XO{IUyo9!dVg>*O)?il3StXamsyO zC0fhwb>adS>inaEZkK59BInEj0c~?2MI7FbGRPxP%nS)TYSJfkYo%T9g5jGi9oeGr zq|1M#U!kxiC#JJsE-cD?Qm=&V^1$Moad^L7t+%Z9bShtGoL(1EIDnQ?q8ME1w5@a{ z5yiQQn5Ix{n9Kf-ZxSoHwK3iW(#Z6ly~9J;+W1dx`yXi=bCESn%o;)%cm(= zDN&h(ZqQ<}xf+}7uLuvm&E){w3fH%Jx{_`1^F>ij=&(3!-bu{KUsVUi$X{iRfhx49 z&Q4z*SAN;`zzFw9Z{`lQR_Z|5@c=xwO1i83@R(K_8Gb%qmm$PWCzIX@Goa7dJTMnx{(~J2muX zDd@6KJ+hZDL^d3v9?(>FFYci>KuLp&x$zu>9IfH8GI>3D@#FZ|6}lcT6Sghuw;Myw zXdJ3S-`S$3St+TQoH*H`*7E1=rM*F8fj(HJu;$a$J*7%M#PcPF->UDT(*Np3STSTf zy#)?A#d$0>O>`&qFyh)`A$)l3+r0s*c^jiU9Y$2*y5fj5gS=>h8oFD*iwjX4XZRy$ z3v&sAB-~r5pUk6l>Yh;qe-~2wu8rDbCP5e#XQL-bZIEBtTPj;lxT5$I8`j+gddZ+) z($pN`Q^bKxV%cgT@UVC5^deYdv2Z%=s!HC%M=$)V8E9ksV#Bkm+@CZ4@b z!-g(@gYw>3K*sawwJ8S5^K~tE_V=u(9rKtOR@m;bir-hhn970s;DfNAMztE0A#($r-S4-fYdGZ*%S z54J3pD*=$#8im}XLuR5VaV4w2npw3_G31zj+ySxh8uW`twvcs2wi-Ro{Gvr@~)o?@n zq!Fjrz2*!${+1?{(&lL6BA_4as?1&{Tp?v6XN=pjL=Y8TApwr$3;O8@U7Op$v&>so z7>g?`r}>^NvJ8h43SH>h%rMo^C@RDIAp3-PONNNZ!ZS@42arg_)_nb|o4WJ$A6YUj zhGFFJ^$P}7N(=MF?6Euk;G1|suoDb3g=Mz;TM|o%Gt51On)Mn+z{T3dKA9<&P{1j7 z2Tfp0e)Ur3n<2`(khM4savR<YuYdX^HI+xyS;KK}`!fB?q`}?pdmZqgW})EqHQT1KaQ#k}N0#tR zbi6*A4y2sFP!BjNkou92PZzl5QS!ZDlhk~6+voVKKM#4+eV1YA&6buo+TaA@MNU&{ z6^fxLS-7{mG**2Gn&4IgqoJK)BnI5kU1>H?hVr-SFynODe!b~+1D&ZJOTsOZt6(vv zsXG||(kjRb!sraYbI0DtPa{n6w@Dix`PxWfMVGX_`;gdt)M|HX2ASQxZ)FXcdBxQG zssW|BFp68mXZ^Ve?N~!$9?oWg~f-v0bwCM?lB(fdtWZ+% zM=VMC88v32k27l3Pznz`@e;lrM2Xz@=F~OKec9qj9evfM7SzdznXhNMe^RA1N!Lu8 zIe7l7qnv*uN5t_*LI|UR4C(tpgDTtLng2T4@I$l^kTTF;45bFl=2>{;!RszJb(~3L z8rFy_h^u^}4&Esii;ia)Wy%jlpFg?5{tlAf6ImC}RKc$gPny!wAYgt-3W?Ac^JPHSDUT3d(xc8`H}PqMMTdM_+f>ik4lL zqUgCDE$I$BN}Grz$XcWzh~eV!L;?4Px4m>z-*xK6`r2>~GzY(Xe||>})n@%N$K4~j znA3*@OIh2fVyX^4G1KMY6MN=tzdur$weCeh0X1aZ>v0w`)FHB>)Ahg$H zi|figh-LPo>8)Y#meh3>`W&52RVO%}9noH%;ENT>!>5grf@ov3XgAF(Hh6TYX}>xg zNz9lvhD0?nPK_CDF9Ql~gR%V=C{lAPX^id65!+G|aiT>dov4}o^-cW! z)!i|~@kc&34$RcTyJ~&E9dvk4O$_X}&y!44xl~tqk291Q5s=%<70-bS9sDtn=jB%o zGZoZR#`yO(W&2zyDU6W(ZEmdfliTNS!YwG2la4gg7V!Y*!cDEE$Dx#jLmPy`D0 znr8X#JGY48YY{bNT+q^ppMpQ3P5 z49RZpEp%vuhDsFh`m4XUSv1NtOg1p}gnIfWY25G~a#hSA>Xt4&HYe1a@Q>gYUKMnY zd>!0!@-9&Mmhr|gI4?=%QeLHN7eInGaJ}5(u)*Ek^_x8V{q}y(IoEZ5+*P&iB~_Dj(_P)GtE}b8V4*(pt*Y&H(ImcgcZiTl zAyuPb&BN)31KBa;dH#IO9R4+>XB&DuKXq-X%_sTDD%6Y431oWyv;2c+FS7v(sd_yA zoaLu@PrhpB?;OrK!&N^9JtZ;O9-tV z5zIg~%m_x0=)`%HVLkL9XfA{J*hFV5gp#%AZHz#SbxpNr!?dpFn*&V@Q{&?7i|u@< z?|sgkOo=70GW3LBYZo&`t=Ux5lBf1iPn3>_27I;vhqCtG3-R744SZi|~x?Fr_3`QsbL z?5=6AP@a81uQtKyZr|rf{lM1Uu~Dr?!b0G`Ks(3MowMMMVPYyip?lmn^VrXyHYg?Y z@mYpXtAVSi{l)B>a896?Y252e%I1M4#QFgYA>dy6O#!ZFf1Z&V=a40{TisZ?A0-B} zm+lj=wK4$aELL+nGyzJKTN5Pcd@>d=A1-)ztMi%)TP5RjuIZXt?=&Ba-cr@49|V#D4vPA$|q{AMVcr^1C+mdB)G5xjrI>Isp%HtIhDK!IV%HEPy#@7P}cW|+LQ z(ncj?`R|{psJf&2k0O(Ug$KFeH>f7@RFP9yA;+927H>D-y@&r4a_HiJVOF35A}G+f z;d!urPPADZ{)Zh2)$kkiTc#%_cc!Vbwz|_x$)B*!2V!}m3Z&{TPudO z2IaH1kGG4xVQ)%V23#t`mfB0MX$=efE38&DnARXzs?~?ILk6nH`wtg{dNa=N?R-C| zp)T!o@ihmH<%R*fc@#2Mi%N8zu7^a+H0Q(Hd+t^R0$g5D&NuFvv$TeQtFr+UiI2Wi zJ+xlgJoVNO-+kWn<1Q|A?*u>)%L>wC0K|i)E&pDS4dRYFHgW!}CgTDa8_y%JIvyzow(Dc+ZGkH$l8O zy4eo7U&pPFNt?&{DO*Zli;UY*Z8unFWr3iZ1(%nnx%2|_@K0T|$JxEj;P}QZZ-!Tc zU0?H;4K=f0vPKIw{;)43H?L%uy4>0pqN3{A5}hwcKkj#vW%_gr$7=?O(}NxhyU(s3c)VT` zX~#n38#hj3PvH$WQUjssbB5(^*R7CVE_>^64@)0fwWrUUq2&RSH6K}qS`x38e2SAd z6XoQ_ArCp(0YKR?yS?s|uBE4ZPIR?1<>H;iE}QDEI%L1>lb|Wawl>O+5`~3*9X$>@ zXRYv6Ugo%Fwlk>XthH*3&>#{TYqTLEb9!Bl=-3P|70MgvsA1i|b$BIb-vfib?!FpUWxocUvEj6Hvd$Cm zy_G;XVN(>U4nDmL_!pm~AtY1$dYHfn>-(+jBEA$7`+Yc%J_qhiSTBj6p{c0tEO!E0 z+RhKjkhOWu`4BT@|AZE1gs8SaZ;)CrSe`>wopNc< zptDZ7+kmgoP*s&CU@yyo2z?ZUCOj)-)G1fmr7A_vX^??^ACt4bD8ie&z&4e=k4eH3KoIBy0VYXeuJMYhZ@v5dEWqkAwb(IEU+UXg;y^^DGz`Ou8NMh!|0 zV$I8cja=yelEA+trB*KV?>DV)^gf|zZT{~`^C|a75k-uk{=T7L&Pb6^#hw;b1RVV> z8kVn9GOeubub)CfKa%tqJsBEaR9Nh4r!uzakd(!J8`Lds=8zONg9G|2CPf)9Xw}|o9LZ{ZRBB86O1avcc6udf14nfb_Tgg z7A6|P;z)38vBN}UnCJ}?{cQ&5Vd1V}q7F=KgNYF2CTEyvy&R(@&9Q~${0P*#bAiqw zA8Ua@T11r1;N=sTx&hYH7nnyCY+SIIF2%5MO&~XU?*%Qbz{X|^Q>($$;V`ur$Chf- zX&E#~YrDP12HytwIEJ~*|991}xA>d^p$PxiS`iv@7$IH%cvYuBctvdc0!vYt!Zp|@ z6mzu;@k5(QfI}?1?mOA4N`9e(B_$Y0ulwj#<~FOSIy8_?(%dWyylwN;gw_{fjoi{u z&E%yehbvP|Lfi6BJ4DXmj>%LR@j zR_h;*SSZ_)hz*_%X#*jw)@lr0Vz>L!#P>&bOBH5RACxu#4oDjq?UvozS)*`x{Oj}v z1{4_JVL*fhK!iDy!<=tnj^r@V!wl144lW2Bv1x&61N5*U^nNh>4fN+&+U8*I#`4If zHNyQqKQ|8Dp*DXtzez{=2aA$vD!)zE`3G?hm5b^%c{#_$*qn$CLhF)3JKvsU-mJ9) z(UkEhepgjdhi^uiNQSzx(Cx5B1suO)7#E-^Gegc9jcVH8WX+CI_@<{lhqLIQ~aEM za|T$>88?+Zrx(zjZF{22vQ^$9Ez{lF(3xp2Gi=*NC*PC`vc1IQ+=M7KK=A{ht=pZav`A5ZnkF(>;7>> z^YUhg`}OZt9$pAprRes5XI@*2HT1{R4Mi7!nHCdjXj*OeFJ!ZqTE|I>jCf?(4xFgt zZ+!%FA)6G(a7So2>Ymx&i>Fa0R8rr_p<%to!>IMfn!L{^ZmzsiNNv78XVuyEGW z{+Djc#2BrY31!uwNpG=R} zLRA)qsvgq8Ay0RnOWrsLX?C8}Z@0EvKLo9{ltMsvT7X6c^Ff(E*L zBuS$9RXO68eS;Zwe)Rq1M`%)5QDrExvEf%On(AQGbe>=jIMw59qVEdZt&!)%Gb)eS z-Z2E8tO^fH7+D#4up}B{-cST8Jk`oK=aT<6kRhQ$($uPJU zvHfhnRKf9=jCY2mTu9%k&G0h`V*fU|v)*ndJY zxxq)Do6;JVLfsQkwuxK;{5zL7%JW&LN!4?gU+6vgw38YvwVcnupQ2nCyDey{xC2J7 zQUJVgcMbOtDT7uJT+6i9r3Y<8r)nO~BiGVqeHx6kn`+82B+nC!_AD|wQdlqyVeVnp^ zQy9u;qSY2CXWhE;qtvi<(a}=24CiXp$E(bh(`o0tDz%~4igrx(<53MG+aN=GUC%V0 z85H=a^mvyjp|z-mcL8N|@cPEA`&r;kJ-D@TIRd=oeju)SjX3=4s8{5Zr zp>AT}boKEK%U#E#L*;9hBWxcX(U9>YiBejw9SfGb0>gu2rnQK>%16bz&LKC9b|g2|!f~(&$5F8ySEuUS*F* ze&;9CExmO7xC4+o0Nn{l4GC8%)nV;!29?d=M`<`@OrqC-?~2J?S*%Vi2IUlZR?Fs~ zxK(bg`n_zBO!cxTFH3)#!S)>hx1 zSeUu~F#8f7*>K!n^{4V7ZhlM~>e4G;c((#XwEghBK-$Z54f4}3n5Fk8zp4H{`q0exlZ=Y&6Pv(7QvhFf zc-2OeLqsC}q2_{S)`Jp{(rARaDluHy()ii(_c9^w0}I(<*~ff+ z%r8i#c4Az;Xlg_+%PxT2bUkZ$W236_i0b=n<}m3rX50emSL#w-h$%)dO?|}1V&|T? zqL?B#|5C&hrS5wNey$`(H%#qsp6&^kr6vkuShS`I|JjJ;k*{aZ`M+OglrNmrA`9!^ zwI!JO-jFa&=9}-MQk*M(%eR)nd!;q2Q3AugBaF})V6dF4HB9Sq*=P>>2FC6xtuKks zZ0+awNl$qDXZ7oc&p)GRBkaQ86PfYk95dBb&f*8mcOiInN34w3S-V`Z5fV}@7WCUb zT%{X)yA##=xT6I(Fhqr2W&)qKK{GdZ7X=SSC0DU5v@u(fJM(%l;uUn)&TH}FUZ ziCSwU;kFpipf!Q9Fqw?Vzs=CGKi%@)>cs8p{V}duoFspyG?o;*941+^8*tlh*ps1v z_mX((dC?Kn{S5+$6`2A` zbr?exE0P(Rutvnq_*8GsN#yppa+?wD!VJB-KI`3w9It;e4;goga0g3OI5yPLaBZXQ zwxWpGYMa)Gh#2m&LPS;oA+1G4jRz_xQUbS3ZA6Z~p0&(XkkC3Lwe;{vC84PPR-KM` zuP}BV=_}3f>YI%ZCx1Gc!zO1T%=ap4%VllqYTf`-K&-#DtqzV5L0q*5TL{PzBFcl1 zB-y+eaK(jVdVG&YkUjFDy_QQ|+i|g-x#gf!T=#xfjlM!@zcubPZ!G%fd01yKmwNf) z;U?hSs~g}%s<6DBMjT$CqT*`x3rAapW<6t)Q{BgXtJA;H=)@@2HO z9Iv{=>;+(!6{FhmG537Azt9wfqNh6Ma7}Jj*SfBw%z0v*3nynASV}7}*V*|uLFg?G z3Ff)@|30p_rbUJmyz-JdgX_^=TuXvM(3jEGg3M!3AM zkcy;#d!#*<^biv(^S7hg&Zmv6If^^;_Cz&Gq+`POi}$ zylW^X>ERFeZ0^MN;ilDLnar>on(ZqQmj3$5U6!yBfNpf`FMk@WP#XIH3nUZ}Yq5H7 z3_uO)m~^EzduNh7{oHzk(J|sIvKsc8(ZaWm1=?OOxZOQMlZdfUg#Py3n z=<{uMCIUdu9Q6TwgM@C_JN#2!N=&n^G;V*SEVsgFW7gI*X3l>o_r=rhZKxMHi$4fg zg{9c!Y*>v~1%$hlq9Lls@(sK?_O${5DEfT+mC>L1o`%jQN#mF~<#(`@iB3}(aD-?p z#{uF`olp@ZSO6N&NC8{{^cEkEk%pe+V`bWhvc1@3;Jc@CTalU%I+dR~)XjBDOez&i zO!oec0k;}928BYC7*)04ADFX`E=1u$y~n&N7w@^E$F=cdw<4942O7r!DHGHSkj|~3tI4VVCM>MoTRC{XOoabz zD#s@vrnmCHNriRk$G^u#*cDtD#rc%DAn`k`Psc47_)?v-Q}|cn4{aH;?8W%ff%YRa zga~Z74qTolJ0msjW>A3G1=X^q)- zn&EQqZ|n-OQauV3t2k91wvG(5yb3RswUgXkzGDe$q@b=o>uJ2NG0rg^#fItuD^=JKe?v|$1ZBvPAMh z@bk#~`}xavKU_|cgJrG_sYF39{;et!t>TAJ6{{pZgo4yT3n)ml> zm^CkE9lseH)o&UG>p3pdi9yWMTeT`XWA934j<8YwWOrX2!QHtzgt`OBKIA7wzyZeN zPcWJB$xYjv{MUJ z%6V7$X*YcAq|9-fyca0fwqZ{W@aI)w?}%f8^>Ysxf9(E1B!cVn@4a(|r8 zwL0RKkg_B#ZDW+1<>(%-<(|OfKC3zqPGEVez+jwh9XEC$tEUH6b!U~h-OF!@+!Cs2 z(bb(yqP2#24=M6HC8!Y|Do20f%N!Dl#^To18YkM)sh5Rd1<>T>A1EnZM-(^vDP%NO z11KVV0;z?Ar&Nm)e1OVI8ViWZ@U$IW#a`w-_3+?Y!f9GsEq#^r#rEeiTkoS-pJ;SF zy*>|qIlgXzKJF>koSx|!y(c`dxt8K_9#Ec1ZJ57+a<3Rs?fDwF=PJw*S&Xg9w+$BV z9#d?)w6D_&lTFT%rnHqXZz!_3lGBXMe;zMFFN}1)*y0BuE$ zv9CA0aD__&5-vFqsB3S*Q>3S_(!TLktT!dx;pDB|34_KxVBSKleu&z-m&?DM#)A$; z)1AlEsjrwcK2*kp1v5<#98HM%49XSIyO}fn96qKv$x$>!Wo=xb_BvU?=?JfP4U2}G z;k|%(=|ZbzUoI%ucJNVXTN=t_9MZb%y0QX+C|$!mr*8(JY0Ab4D(x?n{`UZpbm3cC zy;t_0+KlN6uLZ=su;qg1L(HOjQ$Gd5yQsmxZ>ZnW-po0f|L?Z44$O-5Zt{}46E&t# z(l+}2r9!dl-)l?00@w`m39Vyp!KlCez}DTHD|E{uqw^~URUQjHw+UMp!NZPf&%*enP!Dx zMng@hio2JK3X?X&QGrq~V}oF(DK1nR!QIQaB$% z+~c?#nuGHMysGflqhC#JFh<#gPhi7z_rjb@?YuisFU~grD)k06MnGNjm~B>V@l~wV z2afqpQCX7x;{|!ZY&NTrQj~hvoq`3IuSgEujgi9#Qg4C#+3A7Y^S3YG{kb@CSqW#p zBk)Z0t8p6wfBVyv*YIa>7f0gC*!zq`=9X~6!Gi6%7!`6Ba#r<(`43?fJvVQFVd|}a z)xt3K0MGOHUZ&oK$gqAS7axdESp@VJ3J<`?a(Eng>_$TQGx$?`sXVBn{qN(=_gjA) z+4}#xDS|gG)EXL+d#fDK%4w}Q7uQh#!D;9OdqP~;V{5(Ix$M!>3l#<5G2u(e&Q1+%i z9@LtNL}N?@2t9;tzKLSoLlJjnEtE~ynS?{$kFRy0xfV`XQHVbI{l>yRZ4pl(e%x#A zv}F_|%U>j_?o4A)Cn>64CvCdT|M+25yvsH^%HD^Le3@(9!2w-2JAx^zzHOuf&hePKz&+R5A$*w+hqwP82}bw&itY~ z&>zw{-gyj*{ga1$<#4>yV5l;z^kA(YBBzph^-~G|AR5+#ao$Sfke`0Qnm|GutJ-^r~#} zWTeke>+|x>gI|Cr0cV#I8I8v!g&cZ~lw>BZ!4JFn1IC$T_09POgT$tZx z!)SEPyk4VpY>rY&(OJnI#GNT5t|328ElUZ|GQ`ZtFE-P#vo`ir6vy1@T6qeZip@jT zJcVx*9%~aS)E$`2vqLgH=FRS-H@V^?SS73RjO(yzy=&U9=Fa6vFhOW{5PRWN(V1C4 z)#E5vX<)^MqZIV*^6)D~oe=S;da8-k)J`Yw zcb75Hv^|H0qdIqSmIb=ouDc^X|3y zP=nGwWs!ypM3-CWqkXTro%r+t@Drm30QhS9G(%A92%7)ET~W|`dAHAb#+OyZQQs~T zI=4;oV33@`yba0Oo>Kv}o@>`g9zZd0RNedF7$6$R6^sk==j~J9F4m@CVSDoQYVI;TpTOnIo)ryk=#U9x_ifiCTcgORwB(yLo z4-XdS@8l1Im3CFV2uBVq`YLsZ^8@E!Tm29xPqMD?zhjma-TCNTTnsIoGqW?0xnlOR zG@9`ij@mkpEJ-cJ5{qgyHI=Hb_%nr7J2WEH0!4=9X1g)9~zGj07f{0>}rH z6HG=tW#O@*O?pNvP~kR(la12Vft7K2-AhwhUY5BdDdrpNr`oY)2`e40aaUJJgXy-- zE2o}Ek7s&2=CSJAeaSM(jEMSqsjM=WmGM?Z8(S63;e*jJ<~DN^Rk1RZKXuZr#N(%o z^5$7DeUpN<0>0uWI0EFE%ZDGvY9sa{F%=_O*V;2nc zrUSTRs~arYzGv=HI9nM|;q=RvtbY^-cGJa)lQK@4>q_}F{ zdxPZJ3)@{Inlh>?Z;~)y-{z&%H^-x0>hi-?A#}X5^GH~f@{?v=uL&KjDm8WR+G%8v z>E5E9>$r2M5l?Ll?fv+gr|at?YmKRCk2y!>x+|mcOxItgzI!(F+0af}>`dV%+U*^L zS+yp%SXEvXYb1ipeCd$aUjAr=eKp>7s3O$&OS8>$^zME3zl))~OUZv8Q2F22=$bB2 z_T0VL-x%~0qDg}k$^7v+3SV)pr!genNadrGBo4;NpqUDDy2Rlrr2kPRXefO*P<>cl zv)BJlXN&d$bGgylmLS7hdEqR4K3!nzhsC^^Yzoo+H`_ zT5dfTT1)jBSm$Q=2urq`TsL+DnvZ49pE}k;wh4)jtDj1=AJelCo~&w)KB&1z>*%6g zLsXU@8@9EdtO6|?8Fne)ru8H(QF=F4?`!)F&ZYUQ;4WL|5ua=Ms%*Hiko>D?+H~tB z${xbBe&`WPweZ}@-hBL`;kWN!HAHnn-BwTQvw%J7+@r^nOAl@r&RjM*`JsX{x1ztS zRyMce6E42kfkO1h{}VAu>ii$;L_Ty(3SEJ<7gTe{+(CUrZrZq6qu-5~o>rGN%9)49 z`iv>lBke!wj}Iqr55?=bqqL?;UK!yv9pAH^ZvayqwEGFwbAjqiJY9=eaeFx3cD%fP znS6=gy~|Y(ZAu|XDX$`2KlXW?`w_u-S|viOHV-*?u{4;g=UWu0;7I6;iHhZe%Xf7~ z$x?sOCK;=X4k^APkKulbg*n7?eU|!yOMZf=JKOLFtxf#A(L1{yrL=bMKC?3xr=^(( z)+(}RAL8KH#bS-jQ+0Ol)1a}h92BzUk>*7~(-xZky)5!p7wt+(#eqIzl(#3QbeF~S z(Ndpq2@|yKAIj&H`HXFC-117YmXsk<1Ep($VFYw*?Yd}5Iaa;#{+!6XfkxVHX5%>}ZyPum5a zrXgaIG;NFxPvMJO@_FCS^i))w@uE4}7)+skeTqVefRL*>6>mq`K-MmC{w$Rp*7xVU zV59rsNxRo#Z;js<__$STxn0mHj?ePZZ3YBkXwttW*FrVp(4<+(aK^<;ZZOnYF}!^= ze!s`B+QS9X*!=YW(9Bd5MtqhxGE`=7YoZfmy+1yHDx*{lR1M=we7iuFZIH@rKwUJ; zM~pbmNc$I+Kgkk**;kKAEc`5Us$}R`1lngAGiZuDcw@ntwLZS}7zf*X{RRhbjRza_ zD6O>?Z;rR8#O{-18m18JyX?MiEB%;=AeyD8`t!FK-JMFwrr`icHTqO7X>v;ND{Z93 z2%Aw|r7q@{1JakS_;GVEA~EX7dFnaVedSn%{dOhl;!;bO#_Y3QX466RF&6Gr>6dE`8p5XP zh(o-~5#SiIMXA`>LE|U#=ZU8zvHr)4K@Lyp84hoh%YMLV%Y;Gs1hAea1x@J=y=ZO& zDg3c**R*qu*U@;#vo@-lP&`to3s8Y=dYX4GQ6}YyoysLCE@f)H%UP-|HX%V;I9k28 zwfdoEcTC+_J%!krTzm9O1mM{aKFN#vNor?yUpd&8A6)Dihsun@_f0$U#D8^*gPykgAo6Mp}!fOPb>fv(Tox4lySJ7L^T*{6IkPpFy zuQZBy$%B3AmRn(}E-%hI+=eWgQOLBy>C^YUbE%;Q0$OE&zJ?g3Zq-0fq}(Xy>H9wU zxqfhN(@I@@r`~;$(iaEnTxDj~!gLP|yWyhRzE*DQ>YS>Dc;s zD}m!2;5B`D5W9|yh?|Qc{HcL3YZYH}p?@9c7d4A_tspGA@zW;zu>c_hNfrMmCFLGza zoL`nl|L*Xk-%m0t<8B{;irs6E`Hy~eR7d2_aqVsLam*DRDBj>P3vW;00x{&Ebo&Srpq?tkekK$`(@9=?O+VbBuu za*P%T-$B~xF;VO8q`m}yvB3<`K!dwqZ`U$|+@!M?v~&aWYJmkJgn8E63|LEZY~AGk zCzpnAKWK@_S=a^@rgns>Q)~u~RXDa>U}_$inh>T&fvFK-YHwIaW%v$hFscwHdcv$T zV8LLP_^@GEz_bPU4z$ky$(V_SX^Qb3wC-0l8su$gS9xA}8r1$~I|u;q=`{ZPWlwqC zalQ4s$$jap3p9~mi=mV6E(#>Re0@(9mbfpGC^aOvft^^lrx`-`Db8yc;p)qSj`ueJ^}a|B&B?DThYHj2kuf@Rb4?nc6lRSo*|#}o%l-#J$je?Leal9^R$qJ` z#~eFFcoL2NpnNTIo??X-{Z_}EOz!DyEnizfQqzk>16Z|rnv>kkQ|&AZOUAOaD zg+%`dj z{G~RaD*_4Y#-$H3gevSz;-2vx6-dC79;CrjB9DiL+YO5jTRF>zxWD+dplTd zCl6EfmZ$adyI+~Crp7nf!Pz4iM*Bo*jV^nbnYzmwN$IZjygQGt4v14(R{yN3#=Q7N z=dpRj;xB~cO#OuNU+??Dv!eHe-=WSrh2~xCxoUgQ-yu7jhwz+AWsUv5LcV}MdoW|_ z%E;oay(kg4-h!uUDnvOLi?Jki^?NF~!ja3kXBg~&*HSkXS7n#jyZF|JHs{fp+>!Zx zxTq@`dI%=}br{8Y!Wg z0?+3qGU^u0#GzcRK94YahTr-a5!qsDw{{{3o-LB`+HI(;6Ny|KNBwGLcUSMoqnin5 zSmdn}T0e^UMD!?bi*FPkFtvDKUGk5_Q6gRNuj}FSW^t_~#d6Yoayb}$+0y$!m2s`$ zz(5|Jpiw+ugxag@{1Za91e8~g*jg>`BE+^YZ0*K%Yfd1dE_K(=kn_;Vk7fGRjj4w zi3~T(kZT;{VX5D(iIqlLj5CP~FoHkWOkegYCARI&iILSi?*G%ogzRFU04OJ!G2pJ3 zL>+0}-lLfD(+ay)+W-Tb4E3#iPOhJ{u%LtJ(JSty)`Rgrz6IE0DE8Y;={+~N*m$R!j(i6 ziTF!{Pf7l}szY%m_H3_9HB=wR)oK)d@fC}$>=xh6u_td&jic}18*Rc<#@vM(t|Uh% z@j60sqYdI21FGOxObEDQ15UBS*C-hffq{Gm{|x7}S}ubH)p$dKb=VWyp4dL`YWU|+ z>Vuuv{g=+uesd=kdIsXn^}M3KUA@{?A7)XL-Dq$kR19xp@NH0>qDrFu=HNO}rTo zk?$q$i_J2W0M0BVjDrb7@yops_QNu0RtL0~`fcT;YBMXy;g362-3Zq$W;AN>&(=O^ z4PuV!j$d+lM3qtOqkbWK`TK1f!X=u=*OC9d*8)ph<160rhEY7fNipaCArbGgIP&>x zr+Fh%48=Zi^!a<%H%I61C5ZCJf#L^EX5O`nI+E(uvfS%P)pb+l?ayPz<0nJk1I8zQ z;{=_368ZG`>5(HW>{P4l0|=hr2b|ow@28dZbKV&ZM^*UbPM6V%&wAh{X2M)Ko$W^g3%GREi7B>VP%g&#gw^){-F}12=>-laUqCfa% zXG~HS^R8m^CIM77>FlI#+Hr)Cw&g7Lo4rJ)+e$CL@s6KH#!xUtn8h!3`1xBVeu1S` zVjl-T-KzKfZeD)v=XlYSmElA+;q|phzU~9slMRGXWLjrDF{0O#xy^R{nI0+1dRrL$ zooLMXB&#h0Y(RpIbIT3k#i?;FaPeK!P%dd2ac*5SS9v2iK(TkPdp%JI=TZUpG_QDK zJ9)?QcRsILyQ+?rdoj0qOCY!h=l6IMyrL4$gh-i@zTqezs{}vq%g`X&v#jtC|QK z3y?%smBCvFXb>_;`_Hs*nGetWOe|#ui8@@ze9ITy00ny~oQ5q*I6C*2A;k~q*wDF< z%ln%SaP5~xs4!m_ip~le35P)Lk7d z++xOU)8op^gY4>uT)VXEOZw+t>LGer`=!t;G{>%-8XCcDH4+N5!fR>vSu}pYq z_NC25NAt4)olm(9mqRc;b>=1SNVLVm#$2|*Wf_lZQ13W^`?59D(#Ey!Yu$|n&4&TVGh2)%vfMkW-DF0%4_ay6e(3DQMru#M53}k zUw-bjP|O{X|H%aTGE5p1sGarmo)oO3IC*Cvl@u9v*W`SHtkGh!t5m_Q1PeEAznI=> zZq7tg!nCeFYZQ%}En0sPS%U+J2QLz3_(u4*+sBBdV`VDuB$lk z9Jkb0RBQ`^pJ+Zusrc&a=k0Ysl9}~=OrTXlZv%5N?LK_6ZIka)@BS(DRX@?9mTalD z%eGoC4=>kVjuiNmHApM+`eSvgRs0H@1Il=|qfj9=6 z;*5Z6l)Xxxc6@6#XQAr4nj)sCqL7D8&Pa5Qu?JSy{ZF<#Sp{pjW7(mX?Keb$WGPT( zJXt|s{s;=u~MBek>NHe z@#0!^F$V@n-`_Ub@|*h_Awh%ai8xT=#>@B;+@ckc+Ab5hag7=THi?cghu)a)_WV0NXoPBOl$OWl9f%0I%g0r79?M_UjK6W1Ne~~Y;22;4QD^PW~y=S`h4RPhooOMxD zEa#LuN_CJjRMxPqRP>f10Wqu@SqaB9l6pSKHg2s1a5*Y2@OuB_-YxeOWa2cn@?~rP z6VYf>S-e=8J-6kzc6K8Ma8HKnxjcIeI zhz5B0FX;3qB2W&5Z(geEx5Gx6Mf0qAiGI6x+7T20i+h8ed&%c#U)9c zM&5#ws%l8U3FcS!E(QB=f`~a!wEUkf=xf}?v)I)_{ z$w*Yj;pR**u^}28u6V)ZM7rlq(6>1r>(mvb4509DL<23+JqtKS#`|&ihkorJC54K8 zYNSBn;X|X67gdrNIyIVL8c}UDhH9U#4c}cI1ql9fIJm95CaZGv6UZa4B|J=Z$ta5X z?I2+}iA$NJ=wAaJl`h$=O-%2b?7@X+OqT6FdO?7#(``;zY{7W;A$(3VsUK)%k7&bU zgzG2AI-N?I$bY;j5F^~$d49Gqs(fuxhzW|fgy7M#{?0Vs)=jpw({s}A z3Q=HO(5E0~#edo|E|Bn#=gR9h{K|@W;Eukc{qYbGwe_L{;fBS=?WjhYJw2{SZqVf8 zEG7g_%b0P?;ykz5EUF!u8G*pRY+-0cJ)(8mD)&w;&^a`BacA{0xeh8^JJ;~FBO~(b zqx1;Z;oaX9Cj|LwQYni6E0tw968aq@D|cTyZb8zNWB*t`K1F+p)tckDXT|1mi`yl= z@p>_3Uar}F&-AM0L6YyE-WUvOjW}|xlzoG;J)z$SU;lZVpBS>2MHN=8VWi+4wEA&* zn(f*w%234m=~=`ueOzg^BDh-N+RShBZU39{)8DoMjy}xU)F*l$H$Eh@Js7ubllxml zWHzg!>O6$-e9>MtariL##@uJ_3j5lgV48tYXzWcfZ8aZvoAqWS;RCPFDg=PVyu%$) zamSnA{jHklY9Wv3EG2LGt+i9fLV)k9YM@jdQO_L?-6TO4CNTedrDQ|P>9vZ>j5hbMA<>X zDk?g64{s%=>Nev-hxe6M)>f7_ti(KUjDcf%hxc0<=`P7b(F%R ziv0~m1SXlhqieosTQ*rI=sX>-pJo+^Q-{a7V4i4bHM&n>d+zeI+%2z}^JlT0npbR> z&Uw=FkIctD_MTzt~`=5{4|zG$@QfvPsfTuDlIaOdnh$}DCXR+ zEM)zV3Ef*h-}<_WY?wps(6u)t)?%0)WO7#+No7S`I(+HiHJw;Qvnq2?%)e@d&PIs2 zyJ5%9y^%V_cvf+wIo%54`xSY>#9<4uvri2eDvyQ(L zPh*N2?0ted2zm8p<(VABEB#-hen)tYc$C^)91oQrU8R1AUJ*Q~IiO7{)M|;UPS+aS zEbd{diN;|~^dy_a=vU3F!L>K(ym#3Fw3DpxFfB?dM3bOR)k_`5-E4RyB z56OJriAS{ug{-vtqa4U!G9&F`ui#u5r z>YO(Qx_n%618ynPWN-1Ilfs}Y<(rL1D5CkLY-8e=&WKLiP_E_Bt#gP}` zgM+hk)Y4FIPsmEyGU^jrt)r5z|CYx6Zxx_7Ez24ATp(LXSdgi=F0eW_A28V5Rb~9a zen9WOu~@URlszgfN*l08)0F#pRw%FP@W z51mp`Y{!54UwNi1(bI8XBUkIn-d-86tO4KE?I@-v>0V1XIEmL)Y1S)Li8w0J29+Uy z37xadVE`eN1Y;o!JCkC*mblq#?I`87Id5nN4Vl?G7FV~rVtFP`5{Uz#=%vH{;dutW z#G&AG(AO+f3E!;T150ILWYOuGu4HQ0{2H=Yp~fHMPg`=|i|Z6?k}60w%`iE7#QT}L zr5!iC*2Cj!w7J~xJdsxDiF#@A2^`tP6D`7Z;l?>QZMJ&=d^GiAB>S!7*$?QoTq-8w z(Oh^c6|f11Yv&GgR5P=3@r@;}V8%Ac_5;>lJQLC{(PNcL9Y$ zzlAFUw{jik&fGbY>P{+pTf2^`kS)QMqT%VdD&8#4Qa57~54t@FDnDCozjW4XU8U8s zR^Oo$kyKc0X0Yt(R_L}PI|$IxgG-Hp)8{YB;uqY{eCnDNEoUKICXXRL(Y`MsR)!)j zROlbM*Rm+(ofMg}#FaFsv|GkqUC*JV=CwKwira(xDp;%xtvpHr+A1=#^RnlPOp)J& z7SHtr?E6*gCRU|r2rp7zb(w~Q3XTUU#I{#m6?NcOXvH*&kHS>GxCll01J@Tlm%iObhp5kdiy;I_<5j}mTD)hA$mi{8&RZnd5YG}z8RK3E za>b9O&lRF}1+(H=+q9ro5iT0ZK1jTojiF)m#Hz(8m9|v$Qw_3tp}7AcQFn7k50g=vA4Dk0;~Jsz%6)7KFR)_`)bcieN$tA(hWRu+ba5?XCy5=9(Q#LNGTqRb+Ca?@B06mETof>*_0C4iID2$4lR@31o61XlIAI$ zTYw`DOSUT1dyzCks@hvCM#tgR`$VTdXk~vwTrBAPpJDbUlQii^ZHN6je{0*WvwMZ! z6t=a;wN=hOLBf6UuI6dWoBb9mIX-)$!Jydb;s|+o5Zhu@3&RTxeq0yMZ#SL59u48;d`OV)aOc zaHqy6XUocl64}UWtAu#zR*6`3&!K;WEM$g+e(yuQ8+%h@nly}Zr|a)yk~Vk$h}pms zQ;M$Fws}f(`zsX?YNJbcj5~Cdc+=F7`gL)WlCo}8zN^)5w7i(aka`C3!b{1P?lL_T zJI;cUf**u<=*{K~F(iyInq|@CF|__^GI>8TvZSh(oL6&6p|9df&j8B*Fm!h{o6yjh zG=J)_acJS(|I@Xrc>f%@+ZaB~Tl~j}{uY;inHgVFY`Y>415nIsnSub+5SPuX-qw(A ze!pI_)=+M=)k|itwU{j|L^qp=23>1B(B2rInBD;zsnBcW^fQs?Sj3j2Ux)yB{7D}sfBKBLb9X7 z`Rmnm)I_5$hvsn4Xso9hy#g_FD#YC;Nt`KbWO|%e?DIohC{krX&}{m}pYCy>w#N6H zO}CB2@*Z!ktbC#M?Dz&+FAddo&Coy~B+%?_rgGbKjvZcUaA|;Ubs}fQlp~U;ZX4i0=En36=A2(?W&7{DR_?8o(-2YdBwF@^nmkg}zdttW z&Bh_3VpsCq=Rgdr5AWpKM6Ba!^UDQ}*EwzzqJiS?XoN1-)?0OhE-F)j zv~O5I2RXG16G8(QIB5PZT2Mq2t>UPJo0&z!M|Z*qlI3U}c26_KKoj|E#zdZZ$g7AA zJUOa-dLQlUyP()RH=d$QvxO5$M#jtR>PL{+FAHn*+p_mi21+boR_`PLd~(~j8&tbM zvdVT6%2=l4+)@g;^QmuIX`IYYO74wobf)q1revmZIh4sO<>KVvQnVj zh_>yCbuFjC{>SNy-01qzps4TnIVT0EKvr#!bSghJ1^(F6hS6x9@_zzmpvHSBs4RH6 zVnb>>QpIo&1Qm@BVH45;W=j=*Qa=18Q`x}Q1WZvN*cDYnfrau$MofIn_}lgeOhEmL zHy-Bf6Y)Ubrnxl$119t3(;i{`5C+xM&VK&u;i|ZxK67_PHg&DST=Un!TT`vs2WKF; zC5B4+xplA!bs+tM-TIdWt=g)M-1u8%c~(e#$kn%A*id=BTdJTTRY+!Ear!oJN6O>- zCeDd40GaK4ClEGqvE-bvlOJNm`Gut=vXD z^&eh&-g8YxYV{s#+No8qBdEl%r}?O?t8Q!0;f7rNol zy*?vU6>F`}Hw+Bq7E+0(f65*QSmr}sb5-){P2Zg$8E3f4^`o11rIBs^-ebv4G8&KV z8qPaX$-N2b$H@Ii-@xLSx^)?~opP$4e+L>7ko2Xt4WOInCn4rHu|}fAQ&&O1@6egA z0DdChajnz6IIhU*z0bNfEo#-GzUyuBRhRY^ncO|F$`2VHn?Dh?K>uQ@*c|#cApBjeh5sINt2A-p zM(q5bQ>GFq#b|=q$9cz{c*_2G!*Qdr6r-ztw_rGebruhtHL_zyg+lSipnKqU$1W3qEI$D-zkUBJw{TA1dBlYeegMM?KMl$?Cl} zDRJ$d5YfOKwH*hvQTEtO(B^rg3VK#2+fLxh+;|(Q+ul#;8e}~~47{mJcRM580Wmvr zGFw$7QSivFZ^PD|L23Ky28l3m*0E1_!716IcodvBbN067u!7h1Tyj*=?ziv5b5!S) zE|NNS6cg?%>2<%sjnv6xTiB5uNKISon(Wz~-OJccGPV4(@UgPD<}CH_IIoY(fsJjZ z?)WEMwE0{Luple#pk0@G!D64({M?Pmyk%(ivuD|8+cvIB&^AdNfpT%e(8RDy*sGJ* z*p_vT*GqmZ$K%KF+&ne)hm4)^7*~pK7xi%+1E;ur0cn3O$QI(Zvsi;GPL8eLLry*V z{Q!Y_1#Ei~@@)oq)rM#$!LN}rhW05u z@oZR^IwKNW)}o}gv{c1?QQFecau^&8%Mek>Lz#mEj)o-U_az@=iz; zg+-GeiCCD#lZNbh^1yyQY3%sNj=yR1aOr)0nXLcY(z9m48t=o#-PJ!Ee}0SOpnw;{ zu!@Kif~Na)OR?mvtcv_}=@kDi@C~>gAhX*UxjcKv`zeXJ1v+C+&>tD9)3WkBeB;vQ z!qJhDl413aepBuRK2wL@^ZUw+xxUXr-%0+#Csr-n4%icKk>2KOq)AAoutzKrsZo9LFQr^(18hEDop{JV^ ztK6tY>U`<<8$vXQ7wImb$E?hxN-4m=T%*0V5@aP+Y+h!?9V`+u$&{}NOoY&>rh84~ zmQtnwj)R>|*a)GxXkmMd=aEt(Qu^uc|X);pAlCUcZEY64uEDZDboR{QZ9BW_5~ZpT=3 z4QiE7==GLMX2O!%qsqo@2tysAb_3$E+|1>-Ox}D-Zl|M8T5jT{ULx*AqAAhdrHdnd zz)m5;RsEZV9=8{ib+(M#ErP!4@iMa4S5|SYCO!}r@U-in6Jd>&A&(JM&YCh*I02c3 zgGQX7UY&}JmDF*1O<94Wu${y@?quN|Ie~bLL1Z?LUgYM+1y}ff-VZI08PC_#lfAvW z)6%?;F8s}nJ(JkAgeRILu1&aHEB}ZScT7D;T1rPIeNzqtWb@Fo$S=!|NK1Hn-t!2bkM}*V%0a zjJsB57q^O~w{FB7X?wt>FvlAuSj$=qRvZWJsD?m;{ua%DiusBuLOV*EbYAFP7UwwPFj=cYW`K{TWLo71?6*vEx^=+sCOgJu{hhU$zv-!h7Sz z(9Jr^uv~Cs3Q}0E8pFXTXLxR;*b=g_nQyCncd^Z>9n*r;5e211f#UlT+WKsdlR|KY+MQ(b({IZ4R+iZOpbOTnLvnB{?es0t`3|cC8`frLDG!xd1 z8pl?B9=?Mo%)1RXPK#BZ!}=}N#}$nR@`n2(!oSyKte%{R|9&wv<#r@-`~q)t4uF-5KE9>NosQ8 zKWdmcUarzuxhz77YyhDHRr^h>lDSHc9TC`E+-%BPi}r0k`j^F4Cs&$+pC349pYuVW zaAOIMKga1dF;Lv)uMGlD{!2d7$PW0EFigQPf$VSylRxdjH_`9IH}S#bmLmKu7jcdO zYe5*~I0nG^_*<$lei)`-hWQM`Yztsn>z3~YP6SXkK25N_UZNT{M*=0eIF6YBR8C;csHfN?cT0gn6{6u6%1|L;xb;ZEVlXm z+JCr1w8NIz7%X*cn;MI?2KVR%a5t~8V;2ZC>uA#4Icic^()>$RjcfKy*gu&#+Cd7f zs$0VsW}1!$cmCd~y*KYhzsUOEN$1>R4gGlq9WB54EX2@Erv*=W{LA_W{6Kv=-Zk+z zj%5!r&XSe_vqiA|tP5(T_4%jm5q!ormyyuJO9;+RSxgMHD^juiX+H&+cEfO|rBPjAY$U zPw#r$@*;bl45VG@2pmN&eLeGga!0r?OSEp>#*Sj~KWUZUPsmgzZjO%KiL+D0B9e`n z^ICXk>RM&>mb--!|FB+cxbSeyYy9|e#R`PRvB*v6HO^aNR^mm2ukzr!Rv9FKUrT6l z(Rejh8Li;Q()y_Q!sNUsv4(T^8$LH7m`e8g>B=58HtL+vJBu4c7Ijf;N}%r>uu1&( zuwB`A4rzMXxB1Tv2Y$B3&qoBND58lRHcp8ugD7DSVeG3^o4xn+$hTF8A%*^XVHV3HcpXG73SKIQ9fUW>U|izZ!R*~`{%!?{`b@!iZeSh7(e4u&bS zxHWuo5pJAEQ><**T&0N$z$BYI`aB7REA9UY>E9(jKL$>iiFV|e1UaD)s$CIPNN)v^ zKC>5`*R5lR|1f5ImxSwfCsY7hK&8L%(PQLr42(iU+gGqrl5~ZFsEsx^q$eUj5!&8{ z)&%+ar4*BM@M%XwN6Z_6uQVx_;RU2^+MuA}zPG!$Ps`AdUr&A?s+t58M;w&8fyOmf z?yKF>*i>C=F8q_Gv9Q2x>dCx6+uZ1HH2fWX9Peo69{dcU0H+3xYA%=0HH?Wvdo^G` zX8%RyzJ10f&$}y(Qy!EM3EzkFN)Fl=Z7dGD`0DaJEl`@@`_pm*7*Cfgez;GEknO5MX-4}qnz z!k=lRY{Xf?R=^O!fNLXvR1>MEB zL++T$1G0mADeX@p5xee?=Eq+jX+706w$xNv;eeQVPl%{(r45s6)r*DB<)k;#s;+s2 zOD?K)|EGs3@rKaPahOF%8Pav{X=tC3P7ALsOgBd1eWT2zC~UQ=P?%W*mz*}4OQ=^KNgQAtH?F23n~Ay{_n;@NBXHQ2mjk(q3O8Z z9!}qlNOT}FEtlHifJF4mAA|y?n1SDf4Wq!yL~^YvXP@5TR?Tz%ZXU`WAl;2klb( z1zISVb5s(PMx#4=Ave z1Xf?7KvA#YjZIDATlgx6HbNGuTy>6C*W-uPwQd+IM~DBI4Lv7Fh1T!WTTi`V{WOl9 z(DD1ahrPX}pqjDgm%iJ_`=cSwn!;{gkVGN>4c#-Tg^?N!bb-mARi&R}kfGEQ{eA zxhZ4__L+~+{h`!hKJ>Ta2`NYj(&_Sbf4byKyPo8hpT%5KzUn$lyYPbGDT03PdR&RD zRAIq%yn+*ez@_LlbWmJBNopG=t`5`-SpfMrw8z^YJi$-Ci>Q1{z!oA}6bsHLm#0x1k3JS9fON?V?RlyBWOJ`mmQ|evxCV?xE55%eA=T^YVnjud zQNkDo`}aouiCnNwg&@vfYh21>v!!$_(QYM$Wc`cX&lK0mW*}*902zp5OONbNu*ITgK8X;+&_@c5gXgAQ4F84d;99f3qf%J*&<+;qY@YUWC&2T4@ zs=@1^aS5YQ4o_wBLI2+50%l?Jo4J(AWm&K#b_l#lJR|c7D z$FJVHfhBVNFF!W>t!gZ%KCJvWDk|-XNIno2*GdV=l3rGbnIizs`;RiXO%G=)YUZwU`C6Ln!pIEOY<9H9*lEglWj%EJeKq+81Q6en~YpiDOB&CAO6MfLq zrwF46ck25>ON}PVPL{GopWR(r0QV_TA#skjrcs$baN30O7zp#mjGe@13wt#r3JQC ziR|Z0+N@uQ9IiB#!u9?*3_FJIAZSN3X%T|fRp6!Tpk7PmfuaqKU-T(eC9{ik!c1EB zgG2ejyM2|l+6Cb%f!oSp$0r(maqcia=VL;Qae44}Kr3apihR-vQIm?EC$ll)Zgxcl zA8wjO)v9~JGv@Cc2h(?kmP3bCIcfekt&aAx+7N&fwMouqfzDh{U4hPe?4?!d9+qLa zGNzjN+#tuO>dxa6Es7~)__;#?pPVPeOfd(LZ$8W3V{PoChR!`y-R2plmx$9_asljb z9^-Qg%4v?r8T)KBTn~`L)MLZX-B{JV+&fm7${LZxEeeBDCACSBA8V#CYuT@6TM;cO zTwCOABzqDU+$I=Iil@<7OK&O3@^=4S3<(~ec1Jkr|Gn1DwnI+pt%WBasl;x(3B#;p zCtQBS!VjcJ!#i)}-XvZpt#RpE&Dg)yvR>pHATl4Xb7T~j#E{gGBv^B-Uql?+Zw zx+PL#t}_!_-3#ig&Bm2Am&+;^g?o@V-T&-KT*(&~M^x`S{h^L@<|VAH>Ik~~8j!mE ztHW0l47r~D6c2fGoOk_rh4+ZfDq=}i>mZ?Kb{SV)zoFToq;}(JP?zko_r9$;SoG<; z2I1t#lj-*@^auW()F(^bx9w+3b;&0=wc(B{A9+@IhR#)aJ(&P37CiC)tTS?Hw}4 zil(QKM)R1kp+vH^#Hb z#mv5!vY&WH9V>gFSQ&2ZpGWO5wGkgPpxPdCF=h0@FBY#)g*qM7+<81#66F&l{s#El1 z_erM;*L8+z8Jtar19dyc*oB8!KZTnoHvfz;mQ|>d3)G634;tJ+*xlij=~OavT9s>E z>XmuEoy<*^Hab*r`($y3+eBYS9!4cLxbf!6y9}h1mHyE-dnPD%;KKT18$AucPRYX3 zKyEUhHBDZwBQD=;g{d38Sca2xU7UuQryf0<^Fz7JV0${xnQ8)~RQ>*{SVtF#Vq9i` zDF!o3%@&tc4aTuWkYq>dA6xY&(XZw%Y6y|H0Mm8w*QDJkHw%3+tOZlnmpXSf0Uh}C_pCOgL2 ze9Gy%6}|X;*xV<)ZsJTjYnuypi>S)Q4NcVtvIk^_iRjR1Eyrm>l{fQ-(AG>b(b-F@ zYd#h%)U|;!^ykY?1k#GzDZR^5+0)G4TB+W1$z79Kv014S4&o!^T0F!RDQ6yT)Kl}_ zaS~s3uKGt`cJiuLEwy}m>e(!DyW6s;=p*5GcR_<+=<;-P6qPG@Rslb$Tj3eBj(%J5+R6q!XU!WAF zP1NZpqh3cMbv;n)jRpNCzv}y?GND}|4q8Vst8yA6(=jMpRf9$erq)=HtR~pGts;@J zbXpE69$2m1Y=S=oJA5ZJ1-p$fHEGQnTicpWL4lKqcs{BmwSGZafDhp8byLg}SvKs_ z7?_oHsls1d$jI%($b9=R%$d90(}uHRoO<(|Bl)M*2^8-@HTo+0=5FDi)k8E%Wd;ix zuNKE0)TK`k_K&()hCAZb=-q4;J-2sK+PN!N?QyjG4IRN7(O;|#wRhQ`ks8Z~Om#Pu zJ2)%_IM}q-9|#c}3YTo^AhA)t0m@zikd+CXX5BLJ>|40ed7T) zeCfR1%R*5!mw-B5t4AQwemlYU+|TkckfD2YqBc<)(XuINaqx@GN+@<#mf%n zTFkV*e~2D6oD)6Z=LR1_amlpHj_yvvl3#BDEk^`HuQw{sRWnAwQU6r&2O?0KAzQ~G zyZ$5Q<1I!epJeL+d9H`3>kI1NH7zV&Y>Ha`yH!?)wriSL*Y~IMU_EU(JQ8ckVf|^L z+t2Ufs*1t`9b=B`Kl#!fB+Rl}D`={B2HFLBl01%aDnsp;dZxc=&7{bi_p=Z^USAUO zQixsRETZ;ZkTHo~p(2}$P&&!=JAG)$ro0M^GGgo+`D`jOQxqV_cOH)=HrW{PLSj4dv7n}##r_wB> z0nGHheg-w~jaTfy@%|<7c%~4s^24Jpdc|yKXkYbaO}0`7kcpo5a1`w368n+#MLzLh znUpq|j;f|Ou)W#S#YW<^7~vQx&*H}3#>ZauSkQU(Ly9NGCA%_^PBOCE0-#rL+WsR2 zZ%`#ecv}L*rx`{W4kB7J9Skurk{7`c?oGbhuP!Sd3Zg*mGYfW6q_#SY5OF(qDogv9}`kJ@-W2_KBnV7c^dDwhR0yGtCbHI+c2u4S7 zjrxz88b`F6xZ{0pM=DXZF)by>-Ls!uQ*A^6_ZBg8mm!&(a#~3|k;YnzfF=h->y%l* zG0Bc$fy#>j$VwxPpsDnu5vCp=rM@Tt(qdRQ9eM8ikEM#PJ({Wt`O%K*WB|W3gYbTv za!*34B7iMJIWJdf-Y_gzO;>HaT&bX){Gw0=b2kk1M16R$000enrVL8uh=qf03d>4O z)k@G?ifvh`N~CCZuuMe(rJ&^+I_0`M#)^%({-aW(M35Bb!u+X5ai$5NXJCb%9i7L{9Iq`xBFvwo`!+5mfwwXP8)p&Xf$i~ zFEd*QJcAorVy)dWFC2S&HiI9Oa%W^wSt_)$=@|OF;^EIJ9tG)dslKw{Y5ecm;}AcR0kenQjW~NSG@a zwM*ODaVsBD_ME$*m@|@fFbvWfiqy2qJ9fEgB(AOJXuvZ3Cco)hz_Zh@JGKHcLAHiT3{{ z8AVCtNM?u6!hzm^=168Ao`N5mrf>7jCbcQHk_k8o zKl_K^3aeJ1SmZa)!i_iQpXbvb5!M0HANZ1gAt1he%2<1Nr)_oodHIoH%jFSEC-$Vq zQ!~POy7b{|(oN>ivPizc{sz~YGkMID8fn`isX8S#Ej!!&*BzF!n_g2n!o+jq}JneK)&@Qv3`O4xS zmrG9FZQ0pCvx13UGmbg%h|l51!?hB;?Y+te>{ahF*@ZHt#fXEF(U3ao41iRcJzpJe z4SPWijro^-Zi_EE`rv@N98F*?Q{9MpAv#xN-9ipKA+9+&A2_!%yEZFjbIk=RU##ps zg{Sl|iJ7<#T68V_I{W4kVy#fui}+a9XSMs`q=;;kPel;hbj-`sR$)i8>$e^1NJ-uP;0ghogXFXi0cDzm%a31@GJDA^?J4gj2h#UY5eHp$xINS6LlH4cnRfHA&|BvMk}%Mk8ndk~)`BK!7x)1P+hMRZpVhx6Dnl9FmvBP>;0V+{GEgSVVq z10R1_HqY}2mXO`@t`XcEizjW`PEpzYg+$&MV%3p7)yjM!{>t#9^uPSe--nidu z8OS7BwQ0|-+ps#2AW|0|G5+>tb!_bNs#dfwOj_fo6SSrJkBs809J`*asRl-LbgcnH z5?0TNYlVS^QwNP7)J9p3S7I`uDA0N7UR3jF;=AYV9H(D9`i^$jUf|a_ zfqqNzzEVRk%sYh3q!x2vZ6N^7x;#*;uBCYivlO|y02qyjiln)|Eq$_k8(*$UqL(aE zDr>2^9iw&FW2GY*1^#$xHl4&AMkyoW2tmGA?6gFk$wBH8`E!RS+w%r68_AjjH!liA0p#M!iWMfBBy z%7VF%Mj}tC=GS}+Q#ABo-UNmo8~&Zk=0w)Z5@#v(X-l5@exR9JY(%&F1nL9Puv{^V z0h>D9?$G0T)qqFYBb8G!{++=y%hG1svaqzxaA~oEtf~V8uHc{)<}8RTgMP*nlylte z4A_XzPxbnA+5a6}KDnvAI5Qcp(VKELjl<#B#9(w1X0|RJUOzIfy7|=2Mqjc%u!EJc zrX0N$PDEI%uX7jLqz1Jf!uNn(s7|_gFa=IC;Ro)W$V!jGof|NP|PEyz_(&oJ>yF!cd>JNZ^ffhsXS;ld{3#SyfY0f z_&jAu=+9jxyQ|AfRBw{I82V;s_qH2cr!6euH3Q|>F}>LH`(~z(x3>*`$u;^Oc)NdY z=#BY6IqS{IEvb)CcrWj}$?s)w8I)^QAw^A4Lh5~0qXcxCo!VrGOLljk+A#MU^FCTd zgA1!jI{W=ddU5ivLi~F9u6FJy|?b^LdN;qa3w{b7S*_X>NV$C=X5!wNIWQ zi_yL4R7dmv^ETHB`#TmQ;nV3>nw8^mWBBs9ab!%~A{wlpIyk}DeVhxMiuRm=UMdx= zGZbTQYtWU`kC7_IpwatP3Ja3M&uqemW|XG4F8;a zayf1$_GroSN?jtX$ik;Q(e;jGvD0P7_3Cf^z(??k<_q85NuJgiCfm`T>*=7aHD5Y7 z3Z<62nYZPYOAp1v$oP1jg&Dc~9@pYsLFKDc$i{Gsd|u z`Gz7fIRo#$cI%%{q*M{0Z(^%~jKm6CvQJLEp6HhrsBHCymie|;JokQw`TCE~aXcZB z?IYgZH$Zzw4bw`G9qh!XV5O|i#0IpCvF5B?QKHO5O3L{n_yVfO6#fR&lMzo@o#?0LH`X7rF364#+SkH29byYUb4wV#{Pqvgx54W!-o+D|F5l0uGo?N?VlFDeMUg>dgr+J?hF2YA+m~``Gy&q`Ik5+ycQ9I zw;#W$upSSHuZ^UPcT=v_*x~v@y`k0LEX}G-s$LzAxor+!p6<@2g(Ffaaw9uX4i$uS zJVb@5NQFVto>!?Tu_t7*#qnt29eG?zzXuzunz*P3A4M|hxJl!?x;$LTAeX(@wFiKA z;r9AGB0Pc4!;-gNS_Pi%V4=HFb^EsKr0Vq#K2v^0PHVJW?nax>D3J;~)Bn)4k3WCr z>d1_dK+70LxV!##xt*^@r)g|FiFyPNiaogB@G!@0XrV^;tj^`WmG>BF060af(p`mA z4NK<>;C}kv@o<)y-h&sUNX&&mPNEd#B*OIm!kOc?yfn@NVBh9Zpvm?RDn1?WpjbM4 z6RSu>?57`N6`_+VqXq>Z$fv5`n(I3+Bq&U)bGb$S7!V;KQ7bZL3&-rosf~Sz(^%fL z%h1rdJ*N23>qhCK(&Y%*p9`E#0S**cm!g_rwUJZwlL+63UfuH4WVBI(ZLg8i`Yr4k zSYxMM$Tisn&&RmaIE?NbN*m6zl)GnXCzx6;W7;)2BBU2;Qb|7#7=zoQJ|_Zsl5Jk{j_K#(%qmh4iB&tetom|VMk<4 zR`<<0udEue!3(-;bF*Bko|>nTJ=S8pd>$@~tmTs2BQud)=1&&8BCUC0HK;H*RhCu; zpOb`uE0qc)UUxh2Ob6$W4wYqXsyEArCUfX%uwX(p#QZx_nx_wsxFu6VWBf}xVyf2c z(a*>cg3odI(@Pi}2UW+vd3bm9XL$CAczN)%vV3`4er9#};AiPoo>T5LF4d5o*weZ^ zli>T_!R{d`6Y@@2?tC$k8wgHc!J3)W11T^S}LKuNl^{t>AWK0^o` zIwTawA$8Cn(j^cTEF9kL3rh#ejE^qe7(9a0-Yx9N5wCN$BMUFfU+`whd*k;uWw@~~ z5jA5u(Khl;B0HqP;F*uVHJb|qtag#*7&s2IiP7?hAp?d;7=SPY+Qg&@a|~EZ!StCn zG0*@Q2$#P$Xf+Gk7{c&3p)vtxCj`?6!E_<8whYW(f@6Rl78~pTE5Gs@2IqYkV6_I! zoqzc&M>NbO4c3ix194LdN5inP>-6lLi%F}@TS=p@^!BW@O2Fo1!u?k3ieX?>g=FEe zgg}*(F-^OAs1w)RX{g&`5Vz{#rPb1D)QYnztDY&~=#Xw4FQkRd1LO^8iyM78HPuwF z;pu-eR!yn{nL#JEcV-`6$h+d^FCP8t(vK;+M@-=nGfIg3C@tqwr&90`aul3 zcACIR>hZ|)tGVbpu3ApeVuXARyW#B4+D4M)<=;&p5x!{l5;y%{i(Ir=;|n@nOcn9p zz=iPllqf>uHVY+wVZ=}`DC&#S6mXX7ebBlP4WYwN+>++c&YFlmRvsUT(=3;es%5|c zCc}kqIWYcR6>*HgyxJ_o?#T=cg-8`F{kcX}4c+UNJ`~PToUgN+p@kSUoy@Cl#SUXi zBV;w9KUVIj+(w5NNI~cc7Yh8nI2-t9yCrE|vWMx1tM_9pwiJLj`^jM{xrpUD>Cppy zr*F0gQI0Jo1xKmCTxAg8ki_UE zc6gm@Ge2MRUKOSCYBjT$fT-6lEm{Klr1r)w?5Z(ohRymK#SC2rpy!OL{03tF|e^z<&oy4x#OM>8^k&lx?c7xCj2;@r8 zwFJKu__IB87h)-QX-DQd>=QXE;MYvxj;-TuDAw(J$;fVg@5^aUx@6;=kgosH|e1Sd@)8hZlU%D^CHUP;fT;r(;5tk3OMYh)?IL zB9d}h0lCJ08}IlYT(JE+m%OZmE=0)K;}_4FE6N!6nw0~xrZVcp4?QvEB!q>DJUR%ETBSb{Ydk>h0184TRj~V7}>N&2I;Nm z-)JDJ{2s+W-Z}l1mAgfv4Lu7BtQd}>xcbIBj?%I^eq#zD#n?^tnQp{&qKl%>8o`)2 z#?mpwg89KoGzXL;kMcsZ2Y~a9>Yt5df@dSsi);c`JY#koMn*4`(GP1^HB|pWJvB%e z=+n`lvxYOT7a=8I(ul*VO+gOQ93U;1~teW_ifh)PIlM+mq`xz{at( z#x-w1A3jGKRZP0jYWT5&<$3Vtl$gjRvl~e1`7Lv%;bM2e~6^F5Cfris(Qqd-QAF zL`6zZ=n$F)%Xb9O)4{TH(oB1DmfHEydG8O4Gu$?j7yg6eNuEVN*3Ny36HTgKQ(br4 zFoyEhBCRvGk>?*$)@U8z4Q=ReowK6K^qu(y+`^#ePe1O4!NU+ht^(hSR z%}%j;KyvZWgc5txMsaXn!EZPF9sdptoMm&F7o90qgWL_BL!E`9^8Q2#;oKvs$KR8- zIT&g?QS(--e4^n(bqsSyRd^E^;tq);qu!xVO(S>nqfzdSI=OHBMn(~m3vFSRh+Qm> zy1ybd&t9?G-dMb3rP@pQ~(ww9*nMjP<6mi~4^a?CO9gb{$^moHvx0fYewU`Mn z)41rvh!#Q(Z~mS7y>nrj@tgSXUD0ZoM_PUES(21YT5T}j*>`jFWmUF9TTO}U)(KhcTZ8ZarpT2W5R85UH4)s+;jgt zkUQ|y?s&#j24xy#)MkZNe?Z!R!hZkq(1v=}LLf|0{Z4_~R`WVU9`y_#Tu0&#|?0TmtK7Xouw|p5i*Tr_=;E}gI z(RG%edBwk4bU+eo&vBB>QC@CdU~7vhWiQM-Q&HM;ck_MM8~kipJW`xxe$AfABirjbh{a9!R9@bMHNh^qe`1- z3mE`jKwWB%OPLCk%y}}GjJjPkZPv=>G9VTzjC8}3AZ@Jniw-I4KPFoiOg8V)I}iRJ z!rnTp&86)g-7OSaw8fp`4#gdcySr1|-L<&8yF0;Mi@OsnxVyWau=o4D`#a}%&UOA6 zGPleX)3nHs9q0 zTxzeO#M`d;O}|WA>R)gDVn{M6Pld-AAv;1Hgz32cfjo1Fzu_!KPTg5Nn6)#H%nal4 zS@m^_LhbdJhYORrj$-z+G6R}N$$5pt7rlc8nckd1RT#;SGHoQIs=o2M)cC{=MSt3I z_OHTVM%DUrjTKApKbQ;du^B1bLac2ijt(j68fi&`VzXlKlXDHIXi)8`Kh=l?;myQ{ z7o-=vv!EpED84t{afU>MErX1hnl9B6@7h{d?S6>4W|MD2cPWV37xUMQ+QOMnCPA1wjqE5};)&EX#?!NxZ# zi~nc|*sKw}YY9Nd*IfTcOMt88Z!LkuW~_++hn7I?XhLFchZ2#o<1^g5mVkihz|-Y= zT06<=-&z8|b5#>L%4hLL%JgsY_gG}}o9SqGL6t>a>(qa13E&&1i9`qt0;^DG8s)gU zl}RE3jHIVymg+#5^OQ;7n4*JA-qyaty+%ayI2S4fCM;f5M3<@gngUJ6*JJ4dbOx6x zEe~zBXYd?#wxyvK!IkcLFz`kEw&rANEA`HCTappQzrDSG)BPy#ik5Noub2Q``+vm* z2zHU;vw18&`%K4eX(>v00a@a0sDOBCgDaGv;{)Z7l2CcpCG^wdd7JWLEC&b69f zT$RUsFZ5;(!Slqo@#NipOC(hvy?IeK-TcD3LjJjJG@aMTvb3nHGT|&EEk#w0hH9&{ zs$6iuihfA&;QR2+09p1Rlt+b$NWW80}`%)j7?rN)9ot+GX#x*^P~X z5lx1JDTP+Ul7l8oyYe_G$@6sS@T`{ip}b*0peUqL=)-eFxjJCH8JTQJ?vOBi=0?8# z%ZU6^6oP&IT&tl-+7{Y}#!?+<=l%O5ePy{8`eih$**&B60HTcim&g_N%<eeO5JyNpP&>PCpB{zJmK6fCxCa~A0=jnvt=tOt<^oe&zxt$ro zH0M>gQ3X8Y=3Nco18WTET|6MOTWZ_sBiNu{7PNYgwg;sRTEc)G?^*+A>)_NctT7sh zR)meTV23d{!x8M{3`iRU{Ewo*|5g(~2PZ_lPXG%p@fqwS06Q_kjRM@>6Rh8r1i%Sl zr;bnW?_(b{o}H&j{{3pV#{nZ}znZD-4fZQ> zJo%)*f{(+ined(TmFd!#9-(PlT*t(dPRXy38o$T@!wlBDH%7^yx`a^>Vo47?J7i+z zRz2|5i6fuX=8!XR^U&_muEK-ex?)KIU9W-p;iTMNmK|Y+yuI4lAV3#>$IfJdSo1uh$bO|pNEsooZ2+ogfC z`oS(?)@@~QRQNxKSY^Q`xcpp)^PFX$<%#f@mIiLR%ff3zPuBj{dGeYL|0 zW;6adQsaJmo{^=6Mlq}@D7Z#h*20c)tr_1b2bXJ1HQcdl*6Q&lTI+6AGXqg#Hn4v; z6~#4igzp^gbAVatnAe$U#YrMktE@Z&jK~$~Jy8nNAX(OKXj1A1%x@}xX?#Iz6mL4I zf44zkn>DWwfMk{N?mVEeO0WT0+LrmJ&26%vTZ#V$IgdnQkK?9KpsW<&EnbH@iGHe_ zfwGK=?J~3R4r`e5iqlM|!67}FqIVq3{xFQ^r4tuvk8i02cX6yeHQYFX)r|Etfm(Sq zT+BT!4~UX${2v$GhYg_&ZR8Oz$M9)1u-{ubXtn;1QD(Zq;wJGPSarO5re5^gf? zEnAHRW5cV8f@LRdHxaK&JOe!gXC?bzRr9QOv6r5)ZMRQt_bl8+^cyj6)PB}6tj1Sn z=1HN7u&rzjnX**bC0f_3c4~nx9V!l^-T=!(;fR{C4ZEe?s(PuDVz~x(b!iYzeM1Q@ z^AJm7dw4@N&z6^%d0Oc#F^EkfWhPyCyKas}#w1N^tOg#SkDYjsuLLWqWSe!9Z@83a z@KOBD5w-t^^_x3)9<4Rq%9`=6^(WB%3Wdo4&C81k^SY&Gkfr8jCp$*2+JaxFoCQ># zh1l6xe4Qh^lTE@4Gf^1&;)^w@-|H{v`x>}MboNMP697va)|5D3KSzXI9>h3%_SL!Kx*3n>Wz)NNNL-S`1EtV z!n%P?4t-$P@!94*CUepk|4`zlYiOI@vx9IK6*Eb_Hkm0-%7Y+G`OWlx%8~?;#=%>G z?I-)^LXvHB=KL_sSfhjFA|POt%X`Xym9O9R2ehHBYk5t+(NSU%5R#iG*CXgaxli7chVRZ6&~!tx^8KU8{z!YpcSFb!uQd~pYrVMsPG3K)hz8U2 zjOx6PCt#C)^t0xA31$`}-xj1J*(SEN0#c!>cjyLI5>k>J%9xrL`?nObYtr-VkcH58 zW5|#=e}67OX#Oa654AOhOD!E$C98d=^5RrQ(cOWY_uf`y_N zsi=M8C$%!xL5cJp%oFTzc~V$J^l9Q@HT8h0E%%bMYS))Mbtz(dcptTeGP6~)RGpRV zUV3|)lwGZI6_l)ji+r}d2PL*f8-pShEFJN(5*=IZUv2%qi|$jlrN9GYwUxQK%F~Cm z6fx-SU~Am>zM=^kX#q4vEnJOHmWY>G!Q8b>NkeByCVDi}qKYFjw=8>P?G*H~!rWatN>P zH*X^uErASLb4>`9&{?5&OR3WrQbQ2~haCV*W2m7wdDC2kUQT z0wJ^2<+(0__(P$ISF0GQh<#b4lXvq!owXtEQ_hJlT7J8)ia+f|k39Kobo@kAJ&Pfv zKdl5kGlK#~{}`imXfU7|8u@W$@+g(RzUv!78(}3c()|m**T0`%*tjAWz9rJ~fwQDt z`BDC1naPqnU+k;#LJM!8{y-W1z!wj(R31@$z(nmCCyKyyBK1%WF3=pIT$ES{&ug!{ zCoG>ZEEmF+Oo=_QQGSMMCeV(8`&pf#yPgLAV31jU$p!2C8;KWpv(O{%H1s8%T}$d! z-gEq9q|E)3e98GKl;g4}@`*?Mwp;D2S~`x3Az=@yp+cPfbE%#G(c1k)5psSdR7Ujq z9Z(nO+lzG>6;42LIP_QSQQ7LXl6_z)W8S=?j(gaLq z^;M-(syDUZF{I2?;FFbzuQ|(rPV#C@tG14x1+}U4qBfibVgp<@5aijH(&Po*vx9ZW z+&0v#@8wgqXouWev~i0I@b*#V0 z%D#tfyhBH|;$zKrAFlmooifC??`J!x2KN3>Ix$b!`HbP)gTV=@tMU}g7Y^|7Ya%7~ zZO)}`SC|DnC7-SpWu94k?luiHoyuAK(HMVvr;AKchZj0A^A=iX2U8#rE>@+bc7QfB!ZSM$F#BC(9*4%pr zml1fwWsIYO@P$umPh#9$8tT62==JydJU-z~n_Qr)>nZF;?MalW=+G!%JK{WHqGC8S zkY>)95y`D)<*5=~=My!fGsdQJfI>Y~&O(^BBIZyK;TMr3XTp_FqZ2>9)M?vRIEBUU zQNFo{FC{S^X$V$Yq*e3K^s`TZ0?;57Q<*fMvRy~xg@cbT!+L?XH|LqZOft9Kh$ej7 zp>4DidV=6^LW0n~>1KMASr>cUz=}9`3`ETY(bH(KOKMofV9G03SpEJy1C{E21{AHx zL=Pqui!5V^**dJRkW~yQPD$A+Al$3Oqkl^{B~)}!@wpv)$)??H#kUtXMPsjc)(Q*d zLahkO$T_)VSZwIDI=I5T4aBh;L{ukIF)|zE?C10z=FHDHz&_AS2b608YtL zwEU^d8V~LRRB=rtX1A#8tzDb11C~FihNH?zOfD=`{}?7pGS0?&mX3LF)efC6vk+Zb zx7v@u+0`<88JF)5w9u@lm%r)K5Rq7L9zvz5#Z)uRG?|IzazV?gvF+0$i_;s9?9v|* zpdCVH_vYtiYDL>>OlHv;)uWh|IBmqO4ADNVDAOK~UdLXcVr->Z>ws*03qs-o+HUCf zU1}skCNWyy^RVPczzgJSqRvUkH)t=W6!5NH&!g6i@^3X~7}AiP+Z*l5>y!YfmFWZ` zjs@j2$dKTh8ORbW1l!a-JissH$m8RU3pT<&iSuePQe~SAAZu^=rzxYy$^4v0B;I)) z^U+-)TK~O1H@S?C2s=_i*aGxLD(aGHy_Y_{jJ8|XoP|1w<4u*n3Ms6lzDI=q0!jg~ zMwHyxvqJ5dW7V`{3~`iehXbf63xH*Vf$Y;avw>`+GnpnTbxhuMSp}X>G?W0+q8KkR zg}1`-U1}%nLDO7ZGYgHWos6DzeL11}%q6#=x7{+tAV(~^ZIFoqky};~DQ*z$Sbs1l z;_^>hJWjfGgE%e0pUJ3?BMK^M72O4Sp&y*J9yVJO2 z)~lhKV}RnSDv=k#wjd;R3PwpB3DCp{h^8j(_FySY&8cAV-DL#)evH?M~uK42>> zw*4rjk4dDcURaFUI4oJ6(a#W&*NWI=V~M(kgBoy(6SkgHs07a1V{VW3Rg*H5P>%Pu zm2z@F-M9ZW&*jP-hMXlxM9`ze1p`IE*rK)0nB8%T;m&q#V5M zKTT`FS=;PK^5RU;)IkC$S6Ws!At7Z7GBHvhvs==l9vz&WjB)`e5Vfz~PsBqa{}s3J zU$}9#qyC*FZfZvSd$ekmffD>CflvIfm=J|1b^3x&a6U^2UjcU6Pgl`4$OPRlND_19 zYUdw3pf+Le|LX9SVs|bKk(ln45-VrRWUukG=XUDfTW#*Zi^|cp@f)!}{@$<8l~*Ta z3a#Pt^M!;uPvgu+m%V^?-dDNon;cJthwesh%Z{*>QnjFEcKO>Gvhi!!IcyKxzw$QZmeDCT`G%8Tv z^s(vAVdg33n>~AUH0qjjUv%tRrN$)8G8Oc>_}ch4aPQ96DM&8jEzR)dyo#d|mMYJ; zf3px{9AYc6T0B*VfS_Y|2O}u9p8E48R;-zq`EF)m=^k3;%}o%0q}Dsi?>!c+roE)#{AaX*eEYfU&nvdDWe=`IHPKU|%0_UneD2 zhT|2fmL(7|9GgQOHjkgHswv8gc%21)T7i!B`YOOg>m8&{D@WB3CjUxt_Gdb%5AiF$ zf~vZz|7io!VU%!$WDB%l^WyJn4>#_x@~;PYMtbTeyw9}obC*Iwuhg9}>OGr3bRQ`G z2JV`8&FLs*AB!2$(&g^!Z19$*iJ~w*rB$nj`^maX#8&qz_*Q$QFX4r``kh<}ecGkg zkNK9sP@$Kxf8009P_d4sTmsPjWHh^zP4dEf384_LjfQrD5hirIKdFz!p-)jT$Bk9K z69!}cko(a-vDyKH%sf2av0vQPc<;jbi*pI=B;oV~BmU2qBh$e|3C}x>N<4KQEQ@|U zTgBP)W@`fjyZy-O@ThC2y-!cZ$SBYa6X>YPdEuYP;+Ix-Zo}jW&MJK}O^MmV`4i+b zQX4W+QGNu4d_BBry5ft1nkl_@TkNhAH!^bF&Mj$uYZi=VwNN@83(TXv>`VAX zK9`AVhBz`@1nIg}I_?+*H{=d#{SSCoi|Dotm0DZ=v_WkT#0P0H5Z5B_goqQWB-(2I z7|{%2+SgFBQ|_@OUqMXBT%@?@n02pluD_GY?0L4Wf79NVukj)Qhzt9pjBlBn}=Nw;R?siXez?dQ-NzJs?tGxtBR zH&!=PO~E}AZ%QReR=(MT`|u#&B(j@YS2Dqw+%k=)K`}<$)(E#T^~{OsA`S z%^DZci0Zy0H}=>;j>eXa>eL8jR4g3~Zsx()SJ}*5-sey6SRizz_wc{Mq6)0sAp&w3 zzoXLB9*9n%as@M#dl8M4K;{;0men-D7FdQ%QwH7sP1i}SmuQ`YCh;nHNUQez5~nAo zab(tIv*C$@-D8=DV&ByX#qz86D(-JhdQnACW_Ju0)hTZyD=fq;I9qib3kW!COjYI! ztnR2PpI5!ckFO8YR6HC(Ewm8lxR&N}z-Qvn?&a6Fg1WI^N+<5E+EhU8uQ&q$3&JwQ z9X1~pG1oZl?7aL*EgkInl%~@Xvp5MxwKLlhsyKURp+?)rKmM&d9c#Cv_oE6C%P1?S z%lRc{av07Ism$0``X#&=2osMghns6}UFYKP<3R0Vsc6%@7cNOXX14aar;$6cvGy1j z^@*9>t%8lP$_LTq_)Q_XHuM#1V_-^!0%QgB;y@LQhShiV2)!rN&SVsAGH zvJRg3T1A6&z%@O=tq7bT4Nf=#CxG4)gjfeHch(@VKML%B z=ivg|jYMESF1T5O8#~wz2gl#Hutb9&!~WT>LIbXeHU)3T2%ZPQD;q@f4&Z4uMN&2V z`_9mQMGPlwi%}UCho2iJ7&5i_!jRCwUythVJ2>s4_WY{zQxZ;4?GPDPGV{&BZuO43 zGyTSY1E1uxFQ6&|ZkVAG?H}ll>UcnD`NbuxKd3KuwN%*SDp@de>AL;m{({ zK!{BJsa2c-vvKL@#5+O9;T^Mk7vYp)-F5n)*NSy14&;dbvDoyD*1;$msIG#R{?Q z+$Z6irNBjy{}KPh{tss7{tsry0*EC0TT{|qMka;KUV#x4je>3bIpIGk_pk?T7hMNH8^TZI=`gIyq>*3JGGp7vJbZj;qO2@dR*&<|)T!wsp zC64bTKZncqpdErApA0sadvX-Q#!L9H9Aoe|9|I5BoMjt*vs`Y~5iI*xdzgMkHX{^2)B6*!Ss(UrA6xnu1zlnBR*U0bt)K#|?2;P9S&dsu(rWox znN2bzgXM~}TkKo; zT1$D`kcqFBl%u~EUY$v@%Y|_qu_sgAleA75uNr*?a71$4Pgh^|FU7T|UR%b8N+pp8 z+h`~^*}7Nwwi)lv0!Q?n-WnC6UyUGK)cGEvc_MH32bM*Le8hbMqD+MqQfK79ulC-R z>DuN_@2~oZ58U8J>~pV7ew-(%P*|qOJw}>uY0}wz<*(cSrD#99GyUoG%%+3y759>I zw=op!S*qMm4Ue1kva;)0bXBg8v6Z5l2_wp@mQe17{>?4f(UU>w0AhC`*@`|buxV94 zGQyP5qkCjBh*8Y`Zt1)Aqvl$5xNIS`-b7KXoC^Gsj+w& zKp8YmFGYpyCT)PpLG=P4=;&KPqj)D&1{<-y^CV`|D{5QIwJdZH>w8mpB z17eA5ZuAR2B;p#O8`yD0UKQkTp5a2&dipJk#m>>isV+Jj!4)5(4F3{CFJI6;N|FU2 z%*r;-3FMfEhiT498li8#j{?xI)y*q>nf zlTlCy#+2Khe~!Dbb5pifZezjS=9)eiT0A5#Ziw`?OXFBj>*lcjtj@N;8(Gug(hi}t zLI@;?$aLM<3hPNor>gWMo~Oww>$sI0oX)lbMa)l-0!sp>*3u%74-}l>-JZq^r%e29 z30)&98`Un%H7YogFdjt0J$an;gml*o2J0KGVi0WnfQ6fQ( z=ZYCUUFwrCHn2}61jpW7CF|b3BT~)aGl-*a(MA>HOj^^2j7q*<%_C}BW4oKFbQ1IN zX!0kQE5R+3%i7GUCr<3Lr$N?;dxXG*_LjtKM)rhzU1VgmZx(lks3LcGXH;I8Tw1RV z7jZ4)yhr__z57CS7zKM0o^c9j5C|~VY9Z9FUup>IA>i1j>`KjKV1Ty(#C$IWAUnN!f}wmXOTz>KQK8EAqy_&{M&*_bbFjhP<`* zZEAgcNhwp}eUKJTuaEMFzj~tSY;DMFssdfw?{mFE*upoM$o8sc-;}P&&tUXC^B7jir@8Ns5`nQM(^jcnl zao4|lGnSk{EWZ05p_AxEKUbDMJWdiKe3z)+Qm$4MYrYYZwIKOsCh@_P%o6_*^C86d zg=@_jTQd)IZsXa)z1f~YG+fb<51vUWjlq|4D|$P;6#1AxOeA~{;m@TRh-!)>4?bVF z+n;jDD-w;)^%VIv(-zAlIfxQHGYf){pMkM!S{`@RW?|CwEm5yJw%mYfvu`_BW;*%B zQ0tFhvy9h=FtP~PZW!JCL>WSsS3`N)dr+g!V2ou5s_BdAG`U4&@M$3Qc(nP*v>tC^ z@Oh)sM$7ctIr{F{AMcmu0Ic_If@jH@n}-&CcZs8{iOsHxYVg!VU7Rifhz6jnMRSP| z5>9`3Jik)cAdfFzzl|VOoqcW~YHSUkEDZ*(<8(`niVR8i@8EWJ(myy5j*=Q$-p=5~XKKI3S)WdG*h>s=s?g`hZN`nL z2e?v5f2P8(V(MDJ)`NN-H}6!6>MEIF=!a zL9uejXeOJmHw z2HJR@aq88o{e>MY0Z58wpvLteaidUjF4PJ;!&5wug$%s3w#UFGJw^zueiqd6T0Cl> z#D@vaFLOXPYZu`Ii$aOiv2B1#q@c-KrWPmaHIF_` zcI(Z1*Y*}q=N)Q@xGKV4r&_ig!4b04`d6k4cn2G;H?R$iS85my2?9|V8kC8 z6^q~(9V=yH(0V4a^%?0@v)oMx)rxuyi#tZbntbimED1L18Jx5sU9?agr`;9h%QGd# zSaH0{>#9@?Hfp6~Q2oaXKU0pOYb&x=+q@;#lw#qStl_w6iuOW_{uO?SE-NW{KUzeAwld5E0%lQ8-R}kx9(f1Y)6A-IOHib_b~uiV+!yh99XfwXR_&(dt>vbfxPI}1q$ND^_+8*d z;nn^La2S{A+)srw1mjso6Q*vc^Q`HHXFQ(2mso2O>E|oiyG^A~Lv#{+gCO(G!bMY267b|d!Qx`)(T z=V+A;@8n8lUH=%l~VnN?^C(w(0r*A)wV@O)xk|W z#u}$$G$+k_ zTcc4wnwnxiy`HEQgp{_xU!LY;@95@Lvg}uNNr5yIEfmM<`Md!VLpm2rlKuO__0|k> z)yA?%6SdAfLt6`D)@d}^0uu5vHSA#j4q`4GkNa+hK}LGPp&EhtZGFIa#(}}W&JHt6 zaO#R+4F-eW0iwF^}NSMhPR?*>MTzVtrQ%{{#^I^+=Z`ry-r`Sm3H*aAoVq?mT2P5Ii0zbC&PvJ6~!Mwh#nDkB@D}+UUhv&$*=jcDfbKHj%fnUny*5vLx zNd47Jg?+OV!@EBzcAfTE90O@Ezlw& z*dILddF{g{LpFt8UuRL%E8g4MhG^6VEi*Dv11fgnLNRUcFkC9#xhq*J1p8h^l2Co# zLY1HhFel0!s|%Kk;K?kMEOWBpUjJ+Bct;HvkX6{bY+;Hx;t>ATImiAlt%j9A&Cd9v zbjOz4(pcg8C^M_P($;GtL)RXWzAPc`7&<3N6^hi#!zvS4IJe)mmK=WP#)IXC3yOC@ zsxULXJat~QofJnIvkPkG&CahNm4o5CO5<7+?$s(efc$iEOLq=5N|Zi(rD{WH*lAf} zl@xTi&2u-LlMz|W329vdIxdh*_h3qf?eSCQWBA$6(hK3;#S)Ll+V94TXsTA`1XtsQ z+e*-kQj0E*{(PIZ)(xUZ7H$;{)Eq;?JA1RJ-GL-5KMahM_T|i{lBvM~uVN-P6hHOf}ANy*wLr|KV zu#EKH>9}m-V(7^Uwezre_$pzmi070|gy(ca1wDA!Mp5(lvlXq*Lrs%XRD_vl3IRx^ zv56yW<-{Xle3vw`P?xxIJ6x*nlx?U{m%OZe@nsWrGJow? ziuaf{b?pj1!_*TN+sCDQGtaa)NRC>jKD;d4jkI>$&HB^MLX8wZVTQPs;r14k62g&T zTqeev5XCE+3Jc@hmfvT_*VmVj4Fl7~OZLj_nwOE9iTA}gxkOdKFRIpBvVbtb;<-K< z>Z8*#h;kp7fyCzDd+j`C`(ahn#QJSw#bj6tE`{rX%O{sjlBp@~6AT}2*Std5W+ja&}%7me=NQLUQ>5D}U z8qeMDo1vCG4WEJ7kWVM`;I`G-6)&dxz8x0h3C?pLdn91RL{VaCIg+a1wQ=MlaM}1j zn@wXrcUdnH`yy9;^-de;6${Dd1*(1@{d zc8Jc`$DxJDn}V-X;)nWZJOz3bH2LLEwp*R1<`T;9if_EhRN)-RW^b}>oJZ^*rY z+T5NmtD+29X3+Ws`x4klgw(&puO+Bm%S{C$vVQWYcU`nP$v3T8u+Sk3k+mhe^3g16 zF2!StH_$e<)+sNAA^PSGB_+VY?;0BwdeZvh)3J~#r#hygih5CjW_%T4;O&>I6+lB7 zMiTpJ2l&nf3Yp$JUzPS>8m0;$Z2`RC)DwBi>r{h&(RC{$5c5;{=+EqIg_pkU-wZ;! zf0dp1UHf>{WV#DT^7A8U)?oQM`=*T<+1pLL=&3Q7B=~l^_pB>t70%|<-W2;eVV}U7 zBt@wk2@t=I1?!%|&J_n@|E%l2b1;fFd&SH2XV#pEKp2>0&M0x=A0& zZB08k(&FNfl1_$FzHQN2Qw4gzQ<(EH#I|>0U54W$Ei!;+zXAcC$<~PBpkxs)!`dc$hDa*@;#BahkePz_Y6psS{DI$>vMy5tRn4^9I z$PGHkr&vo(l7U^$mObxY{NPx=@*S~JZFWi{#Qi$g zhr;CI$K#3#4P(?*!VVkyaZlj~H}?nY=@;gey^_LY{5NotJrw5X7B-MR!*twNjQ*Y^ z4$cmRnFKr2XDqN#G!@QIhjDP7K($N)r@l;{do>x(kKL`zpCm#NxTtSS-^)Q;wMvxNqo5HPr! zbmWk@NW-EKs7h9-@*(Os$!9tJPiT@{-v?`y%BGfXl(%H6uj-_`IUQ5D2cVy|~ zTWPfvDlpkaCxJUHK>X!S*Y4zdnBTCcBMg3>lee0SuTv7c^Z9Cxy-B^u%VPRCoYZ2} ztT3IqXEVp`18Dv0nRD0#{Yy8e&W4m)C1)<;oB$}VX#K^}Yq6k@^As&4wZbh1O)oDL zZx2mLvD~k3(RYBY1qOR>rD#7JW))(8-tBz6^TF2E>5&Glvf?=T&l#%^-6GzSA2il= z>g*k7A2MAjQmI?3rMTy}@*v!c5Q%-e?_S;rM*Vi)0z6U=^_7tAiCPn(bY87XNz2Wj z;RjwmFtH)w#HltZ9>FG}vr+!+y6Cb|BYztDx~G{}ovHq3Mj+lYMxk+)F!TENGt3Dr z=C9A%0*~sO*0|N<5~E!)#_Mi&7^PKBh7b1kXgg2a<4_=2- z8jgAF*H_=S#&^a})h+Fzu4fo*`z%`jPy@F+2z#G~~DK^GNL( zs(l0E4kjY_Li|(Ja1!DBc-F1Q9%zNAE}Cx$CNe5;gSI&rZ_y#>j^{-P!cD?*FdA=$ zzT+ZA3jMy#cYz#p+C9DAl-1_B4{~5l8-Q~#9iiD7WFEPXtCe^Bxe~W@b7%HW&YSh1 z=SDiDbY7kFM#bTXqOl|dkH(|6#BVjc>&Bq>VRPWd-3@8ME@KlooNGU<;3JKv$_Pl9 zE*3QuC1FX3R!v|r`-fYSA26W zs@S~|)dpA=qI)eBfR)1?T7Wi{2ZOaQa>mL@>dqYkvrg|r1A_0w_q z38M#GgKC41$x}YLdh<&+&2Uqj*toXRK$679{m&|GtE2`TP#h9KN&6Otw4Jz~=wJ{F z-ov)%XW4uebmThzAhu_EMrZ3w6oE=6NtfzHF;V!S<~)Z(!S*8mdwM9#>GR zvUVz4N!WS6`OF!ssZ-Tk&oo@yB%YYmlkK(Hmkm8)#9#f`ige)}aDIalzjyYD`LRuD zGrA+B7C23b>s0NRF@VrlbMmFa_L!dtP;Z-8sn^9r(*Tkns#v6{2w6{+fUl4_AX~!G z1fX2ppo1S}Ft%!CeAEx zm4coy>Yqw`y^)Fy_b+EG?cMIUIEt8=EaM|C6T{BPJC%LV)MTrubv9!#74oPNirNPP z!C5L&F69!zHMEuFu;=PRNSnaY-%8?S%Flw%pLMvA@W)*=i4IMo099tb566hKqP!op zGhFI7B@4>ARsaFFszHz!;!hvEV#j5G85{w?$v&zgp=VWAiFjp7j@p4z^ZL_XN4W3-kidcB!(SNL@U6Zt|--T)bE#YXy`Ih%@dLk*{C z=b+MFNS2@JR{$zw73uP(E280_lLVHq8byW2C)+D?a1b zU3P$mi94C{Oi!D7O$T3$^ux#Y!#1M12bM5bDQ-W<;JoIz`bzWVL?*%npo;*!yxgzE z@}$afI5zy}epbJXi&JAVIZb;9;X<44U&3Ltyu^h>z2zA66UOWJqYEPm5(WIYds$d$ zQ)FwH#zrfndPc(SsdS1*!hSfU5tWua+umIqT4N)30bZ+BXD{ER$$_xektkjoT*y!3_O z|2$Yj-ePZiWXe6#S`o2BS4nJbZCNhCygXxTgnSCDoUDaB>$&qvTqY7eVW-g<5uNdD zm(Odsr)CZ+Jf>vNi*Xh>lpeY8$jY-6I^{S@jwAUzF@F?OsY1JHp*T^q`~m&b$n$9C zFxCEO&Wz&#B!1yfZdtxE+XLeE$8HCSB(9H}{yo z=*5LR)=TQl%dPMmU_T}a%OXok!f(8Zz(DGkeF^UuO=f3a8Q&Rk2v}&s2&^V6by|0= z$mBVLF~#5{v9+u({}G$Gb^ZK{Ip)^zZq zXN}jgvx2kJP-EX}S>mxr#K_9m*qkC$qsR|^reN* z>gbfFfxqR0I|!yRd~_%&apUC{qS5hAn03|KySWiyJM%EjkaerPREU3rzCwEd)yxcT zxKr?UobRM9KUoI>{NVOZxbnVzCdMin6b){_!3|>Ndm}7(hCK(r!8#Oyj>W0LLqRCQ*ey{@Z-mS zSzFR_!RZqJ5Wl27O{}c`eFjc9SV)8I-`@*QU6BI2f56T64dG7-<@TB!-3=&;qt?}n z!V*es4Q#%>LFnaT7<6$`lio3Aq}#9V47c+9YU+pNt3qv^(Vr?O4G+&9< zD8#lqIt*Nv2X{qSw-fho$r{f`EHzl`tN}_Zr3TrcC{Tjc;E6ozwo^8?9cUiD`Q#vQ z*~wABiW6MHc_kW@1`aE+Zr|o&+qu6J1nmbdkAuU;;IINX90Crjf=B0L+i}jqH}`?v zqO992K=@{Ea3RwFkQae7Sf=5dfnZY{+yy6cgX=(n&G(rrvF)fF1gx6>J+*gq6u7K> z%6ZhV-eC7PgV0&W)jRX;C!xtCz^8xD7}AV{XzuzfPeK=a?~Jxxvn7QDIFPLl3JpD^;9djntGh7Gg_@=g0yN9qWid z4fRK*b3ZIjCTx$hbrbG%j*@d^YC`1k>V=A4v_LdWlS?GiRD36Sf*Es_Epoi>E?JR*gf8DxoJn@ zw0Ao)A1D>sZJ(IWCVU@q@N}!;cUC{<1m(x7mIZHNYj#E~PwYiYZZyq|PlOM*QWT}d z^XL3hT-+))#VYD*q7u@1&4*F+0+5^P88~Uz{*|rGDqZxzDRj9s5w_WS#2x{w_{t35 zarMF;iD2JKt;X;ReMGUS*DlN&U1^POQ2HAM6Ka8#4@M7%VbVwr*4%-vs5T=m8#xsW+v4W8oHav z|6xK+dZ~z8oc8BIXKFVF>4`VG{vl;=tre^?qrlBL52Lrrd7?`vyXnLVD9Y(JKLbsY z?Aqv3dIT^d$j~Vi61l=cR+Hw5v$4yiFMcLdcKmuqn)5t{a9-noiD-v|J1J+h|KoeY zN5r#f?)D;r2%$|&4{uZ%zLFY&#YSBx@Aa+HqKZ7-uZ%(CnVv zeiF&Ks!|e$Gek9>hz}iM_VEHWirg(JU8afQV)ER>gI8n``-tcJE&8%J1p}0k=4}?_ z_&xIV?>{%4-+Z`t$OhpqA^s@|BJ=wk1kA4ycyVnnXuQcq0Xhf2;wzXQPL@7$yac#| zG!a7Fw9ta}F8g)<>_Vwt`wV*^bf9MbURTw#`PoS2Dy`{Xqu4nE9b$bu3w<3+%I|J| zwZT@>|DoJs`2`9yZV9>oORW6ncgnn(+60KX)9nwc$ToK!9ubxw!1um{Upuyy|v03pbUtpfQtJen^29w(J8$&sVsUC{K zAsXVbCAz8)j0Fpbt|EJ5@vY)(F1k9cZx15&GC~fk}?c}$1((qT>1^_Vg@gLe^C9hN4~ zmsjNp#vWdo?aDU*rl$JT2e(r4}&naJyUNn zqED+2@8YA-umrv|BL8y}t@SJeNo~P&Z)qx)&WaT0DwWMe7O4K*>@VFG$CwKo#(+_* zx3B$(%~^~>t;$(JSIQ-nm5mq&eE@OYqVi&dU_5bI`%K;Ha^fJenEuA-ZEQ47O&Ua7 zER-~xjeQs`fiP?tuTJhb^@uHwhI-(Cs3=?_(8v%d;w;ps+_iTIg z$q%SQ?fjWB<%1|R3rs=E_Vm>-z0C_wTXI?t|7FQEbg zy!FY;XGNi&@nW1#xVP%DyA(;4y5>z6)3iGOSbs3KEl0`X@KwN`3)OHdUi(wyC}!)3 zyk{_Tbe8w_Qbo2^zv|n`Rkkxm0jF}BQ)sjQC-Krnn>DPOR^7aKZG`%*W8|C&!Oi}| zb;qT8Qb8kM9?E4h%i|*JdC0WpLcuJ~;Z`;){?9Y>N=I9_#^2Bi{a$g-=Vy0>{)Gd4 zXTLss(uVar31)6R4mZ{J);P#!l65V9g>DzAo^DNj3H4j$FTXZI60xR-Y-cW?jILM7 zG2)T!-byFt!)b|upNy!R$69SDyXjVS{A4?64n5g=R3CV;;zrV67Lk03YddQC>|{hx zh7aA&SH0-0edM80v?sLJhf*H5%BpS7=9U-SJuh~aIgb^&3T#XM=+>)zjknxP{AM|I z5wSiBZ-0VS&vUU7VUOXxjxQ0!ZJgy*R5;4W@TGQ_$A(=bOKqg<3F%MlhQ|E|r<(pt zS?Z?`tK6b4p4YcS3mr-a%;o{vtSRcOz2Z9^&t%P{&o(<;+Fx*weC5io0id&HypQ4i zk2H9D>Y!dsV8#0URrxw~``kl@D;15N;Z~?`1j_EOgFD2CoH`sC^}xU(9w9LZr+fk; z&2#Yw|L>)-WC5E+6ra|<(EQRyXI#kBxQ0!^nQ|j=ZHbY{wo1my>{`j1*B@oiLq|K? z79+^|NwF-iv6Plyd&EI|+ZdHKD#5M~k?P1YP`!z)4oNy+liNK=^4eWckZl!SVUsyQ zC&K>xQYORUd!R==z^E=xNm}*ws!p^|35)unFgfWg^i>(L%>SVO*GI=ZGBouye;fwZ z?*bC%7(!~HcyWl_Zn^TJGy1Xo8zJI8jKfz%Da1Zq;)Z<6GokCuaEJr7JE} z{-a}oPLi*a?oet=N|^yWhy9})U#w&cq+?(+Rq9Z)<1KCayk+QWsl`j%P40(IZNmc$ z-3`)v#*AQL)EphM-fy<>H%O}p8Jk)`2$z*cQL@I~yFX!@GliZ~ddJJUiXknJ)w*bv zx`LfEm|1y}XUj;-;k}<^i_B5t`y(?$*>q9L2=n75wJAnCXsivB*o7HVSo+FHnX*p0 zn#0eA7lRRmt4jrR5VJ2>nB3;dn|`HgV{-mcGwDFy=jo%GFH&*q)r&dH&8}KXWY8$* zxTq9iTQWo(vpb4;O!(AT&3qILH2dm3Wi*Pl+AiFOuC~E=#RZF7ulvTnyPPwRbV36~ z-25>B=s-)3KyfzL`vxKJ?4fUYSAB)Mq;9iu zQ#&7-KmD{zXno>{nBln-IspAF}XlcByHWmxNpq3%K1#EHO=X`a6T>SnZ%j*=>R~?v)i|E+vLe zGsLCOC?L4s&W|BV;BK!XjEM)F`tKLBH)F-j6X0ZHvv^OvgW>*GD}l%*hN1@i_xpr7 zPp4FmERJ^uKnNF>o>lcg94Q5<&r-Lnn4 zb?Xg=%#()2B@!!%w4Ifm? z6B))zHO#)omeZ=d7sb9MfWnu&Od1$wEQPDJi0c$QsnCK!gm>HFDGNlO5y?X?sNUdiYi*MdT02get$q2IfndRO~(3Zb77BBUJ zy~9U}qM>hWEFbGAjK-liRW2=xwiO&)P*C2A*RppMdiv1v5j9Me|1u8Ebr|nK9Ex_~ zy8V*?h*!;;lbVHit6&nmK8&vwYZW) zMZ~|K3Avt+dvH=x-CM~1%=2MPqro4241d}kH$|jLJX2o(&mI>KTvw%O{0-t-bUFrQ zkNH7T>P`IE9ZTDPem8u+M{c0S9TUl;*qIimM1dW-3<%gUR7kHe1?EjeqijxC2E~ue z)C?D(=FywXtRkoGa3h431KX@w#d3l>E;uPqn=h}A(h1G`?86#>BxBSrpUC?O{#h=75*l5k#7!h}O(Wrjt9VgcJ+f{7BbLD{Z8 zRMa&;8^Mm|p@J|Yeq-@GA^z@HZesOQc~tQXU>j?} zQJxB!;!;*xCu5cQFomI#)qp1SPUDp+79&En7(BvpLP(Fs)HIDg8GO(Pj8QNzC5-Ij5n-atK*C7G<{fxGR*@Xr+WR71bH!@_k7aG zAnmD2IRe_(l{$u{hV2dIJ4&SCmggLdXT=fcV4JPvTiN)xdK%kw`<|P0w!d9lczC^@ z9)INZc;w>g{Bz-c%syH#u**PY*Y+WD%`1Ovf;15;h5tgA4rUXX(Z&jAm)|yt3UA<| zCRd~9Tz?!ZvmKD=Nu%7H@=fXd@yk~ZlL-1Y}y_NJcQhTScO8r^G63{ z3|GTLS|C}F`7@zO^gMO`l}w2A<)dvjUwS9j*l5P)OgnNQKJjPYh$`HuOApodiuoR< z&vWV7Z>NV>ITfNL*iuhiH{s$HLAI>1q9DK9o zLEtirqkz@Ke^`L>tOif`{sBJzKe(I$;Ls7+-2!&Kvns#SGtc}(?cDeewX?3QGCaO0+;o`8S6n-bbm8nOHcI6|0^E4 zazy;~(=QBdY%01wfUPBPf0?+DRng&np?8>wmE9(knh z3YE3Lx~4dAnK8|SG!ndRU}3>aFxkP(;)qQGvGTfX1%AfwU=}j?saAt8Mijhk#o%QF zU$Q57eR#lO{QreifiK;u0K8VS{|8c~p~1R6H~kMnmGTd!^^Q`#(`>(^RMr2oV+(+5 z)q)o|`yU)C^WR10J`7yO1Do9c5Iep9|K9&AJK*t>;1vZ&Il$eBvkb>4NAQJ!JB_m^ z*zX$+zm?t(Zv0ohW^E}Enbp_iOo9^e;WLou*h;f2AR=Qa-%KGOpvpF!;3H?G&S%(# zUr7tJKRS+~w~;SRACkFt9HIMe9yHGhp&~VO*#zr zHdM8vSzlrqTjyjmjunE6BG1zDsUlq9F5fui?Xb7LjZl2{uKv(g{{0yqU&NX`4r}o|hhe>%!$Dwvwn&4oE%>U; z<|0o#DqqJBjaxSE)gR4$vVaf&AjXUMR*$=-Cyl4heA0ZW$3BksoBr8Mj*N@h*2JG+ zU~em}*2Y6Bi-4;rp*cJ$s*2ymJ~|al0(@F&H^f2}vh>Tx*8M--6&uJLRSjqr+!tSF zK*PkbMinp&8iNv1M-e|zR0J}-ASOIA$HUP{3iwBzVGCZEJy{FUw0t!qa?K{WJ^0aI zJN(?M0!$t7d$QI*Zv8h$7`lk@%z5xFRYcbPHo zU6L-R;u`&F6HGKn?Hw*>NP-Da za>Wi4f1DgYgvseUq`Mq*f9CYW%%CGXhu{mTamu8#LA3IDAW#>ZhHjnU-%R?U*vM0X zsmd##5ij#*XO$%PkH5J?AhNdmEGd?S8Q8kuU&S}SOgGC)Kl94W8 zxVG$rqkm<7o@_oC)rFoJ!5TN(Oemn6Ie# zELeJbOe2MvrK-c=%`3zln@W;d8sX2q-!gu*H6u_{=|YO-b@-lgm8u4}!K#i2gPC!? zsdd+i?Pbe#F43rBLF2+&)D^$Wx8Y&F%)%5iKL9>J!M}xpv+CSHG<8j#;qnwcWIjJK zw_MC2k!){li*i}UGkdS$N5t3mNA(=}D3EtfRu`dQ07qrNP@YiUE)UrtEfsXmaFI%1G=cxm6wKC`P zTrJuXoTW_GXv&V#-5n=Wl|p`0HmJfn_0?i#1feB2C0V!se2jLfAJ<{B<`SQKp=u^q zG&35^6M^z9CEvQ+Pwp7>0l|bBV^L@2FetjPCerzRa3TnMRM*ToFxrA72mYg}c z3K{BBp1=SZqx0kHTN}Fsr%Gjr3@4CXK*8uqOBEfY@%*K?yiWkt6YX;208rEuJ~49N zNl+d*w5M=U-1Ooz!_(+V<(Z`6b~I8SP_*cpR|it^z=z`{OA+zL0qVMplncGUpS|4? zlL)l2-o?bf^kpo#?6^Fei-mDlOTOJng$Y=noMTK^gDCmxzJ@vOH93MCtx^$>*Nh>! z8`N{z8)kx&NTw~gRmF8dh!wOGfsi)J?COVrQ^Ilh>uMt`lK zFqbg0rivb7S8eD-t~b`4bmvt`?!YIrr~8bk#Cr;D&==v&Atxge84fSdL6`$|_CRXS zh z<6`k}Rj-`zgbVzn0?fdf+`WYMunH#9ljyIL9jU$&yua2OD^76Zm?Uz}6jMmAW`4@% za!3vkCfXmckZ%qjC~>iMVJy!wOsXDiBr$EA+b%%PI8i+Y#k$yj=HZqK?0KHIn&!G8 z;5e#Xu-NCa6}6uu187s-Gg+Rlt5k2|1y_4uGDx?foOLisn&Z_lGGCoOQooH~)AW7A zL=W;iP|LIV@!)Ht`}UG-`-9sY1>w*&b``c@B`80nO>L*-Bm2_16~gJQ?p9|`{6Kq| z%&tz;3eww-dX|HXc7Xt;L}zwqAfu}}o0`E-UXjD!tW*)~Wc$|rImL@rk?wceYrx-` zGY5K0B!kryGU=?-&(NSEw-l&)gDepI&`7^bq4r`OM2+r?_hf~M;UXJ}+G{=jQzcJeL!tFrH(4Tev0; zik0~kqLo~{vT@|A7!4H4o&uGckuG`l<7QIBEor+J=1~r;V|GV_k$guBY4v^Pz@74L z#x3@eRp)I*ec18vW_aBC^|yzNK@KOSlnwA5V1@Ib+*eN4pQ(lU97MEoDONRmIAyg^8vkK??m0!K3 z$_dVSb!h^BwR}B)g=FDoykYd+r=mI)dxXnz>Dw{3t#ftkO1F6Q#OF%G_M(q%@?z33 z#~GLRtC$9~Mg&32ZyoLt_x;v@Q(2AQ%9?+iUwrKrS^>o5imY}{&6^9K2E8f|!}as# zuUo#|)$hcI-nuw$q9=OjtF3*Pjv(YnbLix^pcCjB?p=(r#4P#2aQWCiO^I`wcsD@C z*;JUM%n~;guEf&~Oa6k~Nn%Vg67RFU91FU9zLQz|=Gj6N0w*o{wnH>NV)zNrNN$~7 z_u-n65Mpq@ljg|1`ojc*SueB4E~Ugn!ZrdTvHm?fa{K-LGf{P<+V$q5JyLDNdKBpj zApEJ+AzJ*^tAixxA4Rf)ra39T|L#T6x_Yq03f#O0e=USYz+vYh=HM&HbpS#w(MW01 z5L)ubN*gALN`Ck84=u!H|J@tIX#9%z`tcQwc5Bfp4WPBzU{?EF#cLPGA${oe^8CCB z`SmpQbALR%&!_D2PKv)Gyge1?XA~nYZ=O}v1ZrX8U%!_gq2inN@bs?xiM?J5x(X-w z+}^cYdpu!mh-^^=XO43b!G_H;5y;N9Vqdo@F?sx=5$i=d`@DEnUBjJPnls>`+(f_F#T~90cUFOTLMS`VFQ8=|jZ?0NaGQdu zBUPEw^tvVj5@Js1HT2c+9a~2}c9JOoOYq!A=TVDgdp{z6t*kJ4f}JXQ01{ab{T}%7 znS1F-LF}hS{>f*;^S-^X(K0L8MM}qZj~D<}G#-oT28`vsSsaAG@V9d^3vQ0oC}GCo zf&@i!w8R})*pZP!Hp7`xnJfZ|-Yih037yOcWs-7uf3}o{j7j1h8+DCxSjP%+0O4c* zS#i_e@JywBXgTVdMgsuP)Tqn+Cp|*U@Id!k z)kQLG_`X)_LDKndX-HX2DO6u8L|KTx!HnMMT$IjVL4Le|$B^mDHq4Fawg)FSNU-dh zKKVps%k-#`UHO+6B4FO{Fy!>1h5ta8`%LP9pn=-@hYjIUrwlR@)9ppCQwE;a7t5_b z!9Qp)h5vZGeuPS2v{>)6u%K_8(W+pR0qo?;lRl1kf141T{o~0MW!@WZpsdyagT=nxEmFDOO3wa)E2YlLwAPQA zVWrPLme@f6{B0CIvYOc@u!#C|6e4HP#5fr``q>2C#nv8OT$n_<$DfWKO-=*aTEYSB z&FvL3j#m$}k{AjU#1^@)S*bquM?cU*TQx7(B2`dVumYY6(0Rt>=O^Lot*{RoD%t}I zJDFGhQQJ1IFnOl>FJ+JPyIvXOFBBGdRKyKR-_Je*O$wNx=-*PlC+~V?)90^re-#D` z68f<5^9Nt4l&xgY@QhhtyvqB2U-;ZQR7@Ut19IaY_0S;V6$J zSmu(CUEW4yo2I&^qUMpNk*KX6Rjz8~hYn<%9^S4Et60&fwY1+Pa)V9Vl@bugKt*)&mN<)e_4C5|Dox5 zXBnCYn^gaj_-KJ=pasv6Vl_wud}jv-G_}90R(&v3ho^1*pJgucY@HYT{yFbQctip^ zeS~0$+}Afi;)>Fw7N6=@QW-I62JcH{linAuGt{daBT@7E2)BJiwS=6C*Z|g1z$@g zIE?-eqIDwn|H*swj*h+KYUbe8OZ^W*CikCxT>lFpoBS6cYyTG^JN;+#7R~$WgUed| zFN6$$ZPz;ekA|G!KTPP9cNvZvwq?uCb0;%2)bHlopA+2oy=$*dpQHZ<)d!aVKgb8rbcl$>Ea{EA=9}4-~UuTIzITUkBVrgr7nC z{dINnE$mt{E9q7a`kLw#E9rnDt8tbVdRjoNmDwrBVPV6cm)Hm^BdN0dv`6*Fx<~Q* zx(KVp;7?0n*Hcxu!=`7dXmpsZFo8MX83wPV!fvL5e@p{c?ehUc^m4uolz`1ZMz|Fv4rd{zUWBtKZe17*WiEr zj4wiG0>W4d&8}Im=D7ZOcP$FR*A{+7#VsV4BCu;diL+$#gXR-fdbn5fc8(qWp85G- zw7DqrUfC>dy)$`W(5>E{BVnAO%6aK(TZ7YA9xw}Aj>t~!zWjL{NH^rQRGi>2v#hJvHZFxLeej)== zd>rC*RJbbK4aAC`*Dg_Z(1yFNtbXN+iUji)OOk$}1zrJD2RjL8r6))J>LTRWJr`Sv)wS=~^*^ArQiW^IhW&5_WDV$LI z`Qo?)xDZka%S>>X2A1+{ZFm$-ohcL*Nxx3>ws=A{6p$^0qDKIOB~jDdr+GMqYK+C5 z8Gdwqowdao`1+3Lwu;aem0F^{G!_g&vd|NHDXSi>;@tWU@l0W~zwVBIsZWA_{K7qu z3od0vk0n2lg(s{r3x#f*y}cn91P*+*>WzbLH>z({sx8Yo>%${f*Bo#Y+PQM2rjQnM zLcNE&g*>!URW9alJya0cz9DC5MGq$^o#XdN9C9-38Of5>vN(ct<<|R!qt+TdBb$=p zT-=VDRXATPWW26YsNi}fKmH-Lc*E5#08Kj_zmL^Q#@a%px+Kp&JpzI$|faDJ3@g?xft3m(}@<#xrgWe6A3jWcjp*P94Uy>Y)xJ z(n?-)p!%$OF{4To(;GoYa)z$t(KeL#;zmpLnTGZhKenThoy;&Jp;vklJAPYd$Y)J8 z(qWTn?RdMr&Zn*Q_pM)tZN?RxlI7e{&XsIf)y!}Hk>IF?fD4|X;FjV&&vf%H?k$zS z^2rx!EFBMS>7vM;K%mShD+O_^fqYugq>9oDJswIsr+}TLTgr z0#N8F!j!P96K?L<{uKsY&7wwK7Ghd+15CgL8jwfbKt^qp%y0P9+v`kmp-B>BlfOpY z0H$WPl+`*G0BvIrP64S+BX>t{6mz2z*Tt`yXq2y6pBlHId2mU>(6;8BPW29BRsRgX z$49T{L!l^%3*FFzm!&CR*@>#_Ifk5+qWAt8mqx1Yq^r^W_D2Qli$?Ppb4jiBj9dRN z4dzD$%l316ogOwX-%+ZI`!RIx7)QK)weF+)Rca>Tmq>h}`x+kBGm%;Vnd^?(ZI=F; zDVxsWIE2b1gK6ZRnI`*Jf1j> zWwqwSh04>QJjuqD8Jrx}UXotQ2FaS=m)yrp;i(e8nozAhj38smUEzhdw!m8thL4NM z1bNdZ6EP}D$qk}evWE$JdT_kc-xBOhalP{MDuCU9PF4Jf76lJ^<)ScS?$=A6CgeJ1 z#sJLo)o2TSuC;jc8KU$`vSC7%b-GohkluL`frB^zgAPsU*9Ehwa(r`=j-|(=#Y6Q% zSQRlgov7bNfoaBNqw}tT({vh!9axG4RY2VX7P{zrGxcI)szwQwiddTtJaTi{*|~=0 zbWxA?(VXi6^^i*1(yyvVgz6F?@s1Y9`Pv4P49Dh?hnBFD^54o^u+^jIgcmopehl#s zR3b`abDTiqI=$4}?pY5{+Q^MfD(iwwfGg;l+54qfd_s}RaVHQpq!Jd|klbUZm}O}G z^oW`WNvFBt#$yarNY^1wT?Vj*ZDrXs6g2l%gX%}-}3Mw@&try3) zS3w$|M^shGwXpG_nM=TtC+_eX%7N2=JufXseB_w8Fk=qfswBsGQ^izc|5{dP{hllwnMQ^qy)ladh6acv|uE?RQKq zGzJBy+~Hc4qMT?&bC_sb?#-w`X#ZI`o|$qsmJ;*)$l7U)LmCNu?cTf+Xj5}iG`Q^4 zD7rb+SK@F94&QzZ!^ietPK$E$k z23{GaBLNNMK8sh?o4~nS_BM6%L}6oK!v=HW3wkkW>5+^}q1Q`blIyf^lQ-(!19+L` zYD_W)S|Sm}s3|uGN^0&!Z~C|=DTG5Inef|XZTYgkYL|Ku^(Uu)S)DR-g`|s?vkQ~z z&0SI;vo9gxD0}^O`%Qlyb+~2oHruFbE=w9~pahXDvhh%Jrw9+ev+U@5KiN;~`cd`$ z50^ZX2&naG+e;*pC;|KF@b$${RU;thNb#()BCln|PBmLg)KFDLnRV{?h@(E++=}tj zkIgZXJk4bTE6tlS<-1Fyfzjw~gYrem90M*LgIor%PQXR&muKk%H&`QY`!WMmt`FQi zOY%-Q^xE^+@%g`8vz9tWMZ}njm%* z8Iy~BU{OP5?dg<O3R~`t!0*H&|)LN zOPhCTtSn=?e7l`d({Reu`?#c>5qGGg;R;1)ZayxTFvh!NQYJm|jQD%W}g^Su)`H6v&TbEuY&t{Iv4QE?%p#3!A}ZO3zno&g_@Omqq)W@o2fVG4|!GV9Ev zWHoy3#`l*!8-$@~&mOQTN3OPRXZFaM&m$-^CYjAFxXg3fb|V$;w$SGH4{pjfq%!Ie zUS@AHSJjAKDvUWL&P8rWD)0$r7>wLQ9uxzwL$O|qdD1Z{#2b#DZ1r0Kdq3_yaMAse zjrDnyMg^Mh7%Ix}aGA7NC{y;D8W6rLajw^@Lq62=Vf%^7jrucb=fn5S3_Hj8B9SLgu_6%pk-HRrsCM9zD1?y% ztzE0hmSw)0wJc7Z`l)n378 z+KtY9O>_fL^>(r>bkqK*4Bc;BD=mHrth|AG?I<|CXA?&}nz&_IAB*MQQA;x7q`77W z3SK5%a;___u}TGk>LIKfo{x4Jet?)+KWc<2LSruZoEcTPhL;5^j?A`-!)p{39*3P4 zM@SN6O)L(2mrLd*R05@!q^$*DhH0^ya{*BK1~n$?m$6BKDRgYRUj55b+%PN_MG?9{ zO;X7R`~vOR54^ESpEF;?pzgH9e+eNZdGIFZ>a6Ct2cwoiz0L3gKCEPQfjlJI9CJOw3F=Ud>6|?B7YHlPP9ZtM` z;ubzyXcv)vk!^kZu19{dQkc;0$`ov}tPzzZiVP`misQe0<6qM|P>T%q$i9rZvY!nd zBA#^;x~&mjyzKsd9f4k@k_f45i1rR$R#=K}k*c!W=`3%dV_66J2x#_n`cV&&8Sq-` zI9;G&I^3-sa_U7=w6xZU>oo{0AqGW?_kljxy8H~dcR48i^b%uxj6|JLR&`}diY1VYfrkS>biafJ=gf6k?ZBi#J4mPu-};d z@}wCQ%Zp7vTob0HDvEhfl>I;-E|s{P$A*p%Id-1nz>{M56RnjHd)0Dtrj~uM|L=1d z5H!6~gQowzeRsk+EkXJI;LhbEu3)ojKm$@jsbVnE z#FX(-?KS_KmVhQw_)ub#7$c)y9oE^>k@eeRhO8hrjA@Wy1i}-6pkt>Sca{=9lO~q@ zPo!!n!+7Lja$#bAs=_*9?UDZB9_x?%EENRmj+Exjs$y8*V+l?pl=@rbYeS>;3E02K z|M^t6%_oH<$H!AFv_8nLI%=k_!TrO2ANNZ}(8mk?XbDs7sjn|j!BjWg+&w$`1t)0x@ZeZY1AO5f{al0pvSHw4+soDOG7=_i9tiG5ODt93bsJ z%qebeD}=gLg2do~0$rtC(D7@shCZsW@@db8saiDJ1QYM``wi zwW@)4&>{@dEhk3qTNVzs7Z1ns>E2H~ElntSblq2m>!b|P(uYA1^c*jtPid^;QkGI& zt5RFXgOM-pGn&YVC>PWtc(5y&q(>5n9g-!CHpru6!Ju+CiR0jA%zaCeCJKYo?duBOtc@)(b$o9RSzpU^lsNx^L;3fOPYvx!ur8c)8_$p!u#*uVqj(rmcJ5a(I&^ z11pgg_Pd|mo^kUw1nlS32d7G>q5uJG1UKnrE^p7n-yP%-t{Sg z@FyDjT8(mClP3fJv&ZrO35j!qE3|@(O0jO=mV&1R59dDmN6Hc%9DZlBe@AuSl`rT1 z)v2TbyO%tTR}z=!-p|`^->x{nz8^)05XK>c`264XHTIG)g^=)zpy8w3j|q)5@Nf{@h{M zLybFPs$8m99Z=XQmwGau@NEiKuBJ_SBtq7k7AMyjTW>ymw1sPp1%g!^v4ydxD#HkQ zs~B|R6lqzsf-V!!qbiPy%I~zQ-pnc2+U1J>_MM(k7 zMG$w=?wF;p@E%?$JsozCchVC|h_tR4?mM2wZy7QMbLRrj@Hz)Ui_+ zvILb&?NX~O)rFNvrPU9m?}%aZlIOC#@-EZ;vUH%4S@I9ioaxpqH!UB-sxL|NT2FRb zzt?6HtKlEbsHHf3 zot5?KZmo7=IUG4r zvpHx$Tkel13Q1lAjh>JGZ)ve?`3Lmp;g z%?(dJ`-mPwgvQqZ3DFXWw(?OXg8vn05_*UHaH`j5!arTCzCO)jxG{6+*g3q^Aq6j5 zPS8^Euz8w8;vRk!>0#%8gno^s=AoszWUC!P$Z#~3VFH9ZBi$B2oop^L#tXMqL=K-q z&q!r+-{v!nOc24wkJG+j<#}nQ6ZMWIA1|Z2FM<`nRGDD+qv-nP8R#+ImG*5rj>mWR z!1I^f_i?I#LuBq?A;fhutBd%QTGlvWRFuMBw2F*=D%@>b)Kn#%0B`;4FTH4rl|uFB zwg*7mUGAK>^$!q1tXhsd-}Zp2444TM$+2xdl12^`mct?i_T|KqM?VeS1MxCBQ6!PO zm?H)EyTqRl^`~xSCyJuyzZ$rg9xo;|U~tPTV-C1Fep%ESWK);|__*X~^bVLa$az+O zEuNRlf5}Zvj5PBtTK0UKyWT#&SgSDb{3c>}MJoQ_qLkN}gZ^}#bnVja4+$)8Zypl? z?Fj(=Rw8w~l3cV{1XxJW3Ys9})F~-LRk94d8n?&wrdIf0VC*F&=;OnyaBk)%wsB}*1*xQ-;=D`hFr<{?T{IaHN6!n3ZMxMT zs*}8cio)AoM7m9)QtGa2r=3`S;MZ~IJ_L=~-c}Zib6M&diWEh2ZMvPZNJ7VlQ<>(o zVGK?ad&vgj-9~{is=K9KMD^P*VP9W6C=@A^+I~AhZKkn_+dt!Ox(QQyXZ_{+J(2a( z>Ye>@TemXi3&cgKMxV1)XNaxFHKL=xADMj4DhcXh^Aeiq=yp*=pIvt<<`v-x%w%R) zX|b65WMq$PfTs#iS}33_1u=m47AMyDTtKo$ozWsIiK*ZIQ|Qhlnx|fw!S0j#$lMCcR%}1t#2&AWlA4>GYM$7P}cv`Iu`9 z%tf(0vp;K2 zmC*;c*+*uE%!LXu^iOk1gEhkYu2IS(gO3y!hww{|7mGb@hH_jm2Vm2<4)(W<(qz~U z@{GbJP-CjBD)hcwg-81(&}qQLlcu`OWo){*R1gNWG6pMlWxgO)-nqPacyy?Al&ZsA zqHk#2cxhct@oHqOGPyKX-&Ap!?8m_H>~~f<0(P%`Db1%}r#Nf#J@K)fxO+!Rjp3e~ z$icXJQR9wDKsPsDQ&UFfzA)xb=tuc(5$cj??D-<7nMt7zubwM)>=kBE*z!TA8_a7K z)3@VWSJgKOWp=pxq7bzvUl16_OUVoub9hnlTgixygHN=7SzM(j@Vcq2geFV>$cqA= zryyvT9GVyVh|~$;?=JFRU#F{GMV&dOS-Pu2w|{&|{WWK$=w`5^G&XfKX|5e|yO+RI zpmbb0Gp=n=8OH_H4kNbrV^{mL%9wfn9mjYHU1Hs6WN})o>kfxl*YxZ(0DG#5?gsRi zc2oh{Sz6_ELin(EtnWo%mgVO4jZ9B6ZbCa<7JkBER)lc^@YdQ&vFKdQ@DJZ>&7EV+`bRG(`FPYDB_Yp-aoB;^QouBf}=&osWIU=zFb2v)GrOU&C$sA8x-- zJ5HXRpuEPclSkI51)3u|Cd9*|DtwRO!JBv{n?TEJE8e^q^}e*A9}X;)f<{ePmvu4B z^wO7pkm;cjKPVnvRH>uDO~B<0V>?KaJ}8bYr+wZQ*+h=%)4R@-zu~~m8;&i&2evTa z^OiPUhbAVZJs0yMn!1fB?aRf-$^j&bl9!9;v=W^1E|rvO-sGoW(mt-RG>>lzqrP}1 zm#REX+Kd;hfq-bW!f`b6Y;rH}NFn4YWCI}QzxzfifX5A%kQ*@y*RvYG35#^)@}e$tjVF0zf10q(aU23M>;R;>c@skgOaM0tsnMeS_ya@wt^)PjMww zFQrT<`9Qvuw>QfVD&(k_Q@D<9F=4fJ-v7%vjbq<@>dpkTZd*)v!muB-9*M;aKP68u z8E*P3K2o$dPuP|Q>O!7Aav#1Oav`*O(6 z^UuRu_msQytN7}rCt_(t3GlG+2OsMd!uxKqrv9Rl+9G!%oGOKWx)CHy6nf&kqcmxz zx`UyGtv|Cl;a?(COb?HTjOVSCK;?D^r0|#=3wes}1*1R6-C_!NK&}XxldtZHE<66j z-e@Lp!~ZrB&TX5jAa@=5df8rwH*4Njd4;h$=oZ11dOpEnh862+qZFJN%3V#x(|=`5 zx7~RaRc<@UgOP7$?f&TqzK^G}Z%wlr^z%8C`;5lzsaPu*+HD!){FS=Q*xwbtcU+D$ zBl1(n4c+;jO3Iam9HSf5$Zs-sk-8ZQ^9#7byHDOqS$-O42zbi85a@0^h-2#;Y)@hn z?upEPlqW=UHE%B3OkXW;$(z!MPsrqKN!=VPu#N~(_ZAvdMSj8GeLKM2f0EDb`9e{R zwl^bQ+;PhOn4;fduWC$gyX(8aC=%=L)@uIcTfUE|tBvKXso>EeN@ss7jyptDJ5kJ` z>T@@0DAhMJ9!?pIDft)jJveOpH#9)yP@FwIgFih@!k44j?PL2UrZ2hc5(Ok?fAp8C zUMLNbN_gZzK&M)@M!7fD6u|(xS+7M}mG6KW&U&{2W%>fuG;ReCf331q7aU#Ac}8oK_+tDOWa+h&5-qh2_B)r zU1cSH9DBHO#`CU3bF7qxW%`NcRh}T0o|Y*?r?q6~MaHxnyX3ZWUy8Sa*`g{X*}PiS zJK9?aSTA5K+Xc=yYKt7tV+x3AV-{ZgR#va+SWj~uHgg}cnOy1A6Z0UNGVIL9rco>R zJXPwzU~|>%0^VJGbhz|p%oVY*qvorgR%pR9TCqzZ#@&bG97x>%i>|+niey{5K+zVY z@x~n*cXxMpcWB(*y@AHv-JQbSY22N{-Q8U;?7h#~-+A}GA1gCfM6AdfRimmh=Zc7l z?u)>c;1-?1`$nW$IoaWUXs?F%N^ToOmKLrizZMO>`@?R<5@G)pIE!2rN!F}0kFQn_ z@jN(ToMf}zf<2KSvo~BtIbYr7APMmLwU&?9;GtaQl@RF-6{U}o^*lOx0(pwlHi6CV$leCx zxmsgb$4U9YV!pOODidH$#}unyY$Y=@Q%5Q+Oc?ZOG^u^%GSuXxq8~wgAUlckGFX9^ zy4<-ausMo7>Xi#lVEe^Qcr&cK#qGC_Otq#oEOs%!g6A#;8*(2cVC3Qm!blw zzZGNE2F;p;x?ZUpDVteKjx?FskKyl>3X9lYymD&wwyEc>?Z@4TCyo|r8B&|0t_+*D zK~{ko*^S!ECCUk$zNsQdDYVHeCiL&wD-RO_0T-n-AT+}LKTv;4ve}_-$ekIm75{h} zRznsEIH1sF-hbgVCWmq68;Mvo8wz_afvjiIxDMblT#}wYxF;Kmtokvz2*zRewIiH` zZf>zgUfCc4`Dy^3hRxBHWaK`$+fUfOdSjxV1Yl-*Kj@9d5wGSKbb;T&7HzKZ3oEBM zTRZRQSfEsAQ;Ov(@40<(=X=Wn)eJVQng6ZukXsu@5m^Q7{*Bgiw(hg;l;Vh18c*r) z^7Z%JRezbHMKIw~zNd-L5t8*yCllT>p0&A_a&>T{Ep%AeXXi4fb} zEE9Gve`t;_l8e~=)ABWVB!`{aM7p6ged5nDh_T$#$ zvsPuO8}fg?jDU|^O0=*|T5VJkn!i{kb2j%B7s*Y`;UWKOk@vFpD+w*EdWHnn?EkV% z(ujQr!PMm-3)PdQI=rEU@~u;zj|4Q{-ExPE_#GZi(96Xcxwa=k9X5NV6{^Y2E>I3$ zN;}_N(GMCdn^n}mDSA!(Re@cCX~!`M(}aB#upIFZ3YTp)aKg*7UH?&my&tfQ|E|*f zyVf`L;O|^Vg}-q=<%54qu9g3;v5x=$PA}#C8|V9frI+G0WW0;BCmL28ElUMfCTr?a zD}5KT4RHTK>;5m1rRDo;tatbyBFnOiwi>I+?mGeg@FWgTHS<}?yr1#k&v+|88bsdDaQ`%7)PElzRHt|EbIO$;ESXkOsUj=` zmZB^Jqxnmb%Oi^?C8t)4Pm3MsG>N?Ou5lc;wRQOfTy*X!HLvY7TIp-?nooi{Rbd8r z?W(~JO%r!bE{lQe&RMA@t(bS$4^Q=Bb>mx$I4wGsOy3(A-Lv(vS7KK#rZwts22azk z63c4D0cD;#iPjRCkrf*@OYNt})2uk$$7v3!c4?%yiN_?*8L5w36pZX1mxwPAnqt?8d0o84s2g5=z)s*J z=<({m|4TNiWv(HO36YbY=(!jvyMwptSf&ugDxJ0{g$%Z!I|uS*ySi9WP7}L#zJL-d z&Et<(m)9}($pH?8SeVsk^zArD$nONB`}+5Bti zV7=B9(AWAE^SI~}x|pf?crcfC+{%X0Fk zukNu~rrefHW+S;3N7UQ&+i6n!d%0e&AL`3cSE{8J3WTiBEMi+MbL-hinNp03rx-DB z5~N2LAVIN=Gva2+d4|B^UpW|6yYJu^Q3QroyX-1{b`!T{qr3X+5!c-&rCJ8v{k1~ot7 zqRzkSg3nV{zJ#KQz?qP+%->eguWt#YOn_=lDWVx;w@h`9lk*I8fL{4=Ko$6#cN*Lt z`Rf4%Gp&DoVWbncJz&B3A)baO?r`od<>?VgM9djxNky@(27nZPW9A;0qt})tE%s-A zfk~IzB(>0E?j&;5YkMj>u|8->QudvwQ#Sx+qvy2wyYTc>tnxEbgbLG9_1cE%F~vsj z#aTT5W)2ubLkhT7_piekqY43js%tUn&9P^PC_C76R|VAwKV@s^U+P#d7jDd?JEd&` zl>wNm8j)voi|5^0V(X$9D04lMYcB+HRoKKcdKs4W^hDAsD`YBTKOgz(D|+%!U^>$Z zw;j2b8S0-}UI8eMZ99_J%M14hU)8-lt1t3?Vuox_@@-vovQ#BE|Gp`zF8ndyCGA_etEF|V;T2{i$EXbWDB-D0o z_JA4zcUkkiJY|J9Tu|k6IMc0F9y$C%&~L1%zaIBc#`I@WVZ-LL(_vc3h_QI(65WNu zpM>q)+h3l?CsPE2J}23wqB0k6pY{ODNr4FB8J|GOw`z!-opCeg&U3R}Anuy%CrGmJ~=ry}IE`vg;S3oI9 zc*D{v!x$^tY!MV;o#i_z134nDl1E9~d?gw4pdb&qVDr#42A#TZ2rYL0#5)~2RHOrvo?2d~#ku*SVLX?l@m|W#p zIV0gBJmfsiE`=`mz+sd$n1=y)a?OKhDs? z$h~Au$Xdc4?%;}~G+mu5Xz16jF35G%U6Nzwe8ltd6f#f4MF$0g1=M5p<{&^?ty4cg zLqf~DWcu^VK^VKm-MaXS)Dp)V3TFVm*5-30)r(*mqgo6NJ6=4f8XTu`XBz$8E>3Z& z(sGHE6X28AZw=XAxLNW6@)qQBm!7J_r#|dcXO=2*v!Ptj2 z&qEqmU22vXIDqPrqll_PyA>Mv8uHp>5B_vde|SsIvxNir8FI>_T8Mpg0%wQ2zFU`b z4-+VMuENMh0_97=-S5Ud$zs5SaDA%z9G|uBrp1Dy6CAlmFQoAu9pDg1E|!LmhRdEH zh4#T=_6tOLY7e!>{_APU&bUQCU$Ns4=J62EDCE79s|__db+R+|>|VzUAr}TqXGT?Q zK4sm75h>oeq41SKYYkG;vgfUb!*A7gYlW60_RwVmDJ;Pz9h;6_!7kz=n|JwFNHyPP zOVH%oAvaZv)t-NV0z~k30KCSI)HT-`E-F0PZ*)n(t>5KO{;Mk+zb7u>-loctgI=jAIwEo`d+#qm0la^v&i^VpnM7KO(HEtNT7Ha#YZqglBIR~Pw>4V;Fphh>8c^=67rQB>6znBh#j1;Q& zRd?eVFsMf;lYw4Y29Eos*UvJXEXYDoKFTUWG0G#MZJABKJ61|m4KY_@+dO|X)tO|f zlvanIvQvz~74IRZD$YizRH3#F`su}6I?Sn&SyB^fU(j^yb&ew&=fvSOAOS3L-O(sQ zEnE@%MiqsDO0plT<B9Y}&gn&k*$_v8I>G7DL7OuCBYmf32FI=vL{NZb-06{>$ zzYifw^^;o0J2%Y8g(zy2{8dBD%}1q&F@~~dGeW>ifvUxEMvkp2c?un7i&}!&EoYra z(uZ{I^_EH>rLL2Qx5dBMGOp@+Vi^8qWxqKsum!mg%Tq3y0pBm&pDA%fU_xPiTP`a8 zy;d7EON>`t;$q8K7zAG2Iv$F6jbf+%jz3a`xyzG!l}M$Id3U1ezzyZSu8l(GUW( zlFjhp-ALi8jlg7r zWvpS zDMY2zxLN zZNFhUfM~es=W_=487BGnca;&RL(s?wmQ!ssdj5R#mK`)z1c-pjSpvfI3+D{IepQU>$O#Zp~xbC zHbkB|5&Intn|@{9lDu>L6-{^z*s_mqzDjL%O-cx)5CW<;nkm1!HiP%@VEY4Qd$ntz zR@;fO4VMdBYFkIe#g*7;6|4G9`ALK?XOCH)oif^d3GDQ|kx)X*AiXT%A`NT3As*vx zc;XpL8nFHR8DWo=oZkZ1E{RfnEM54Vz$*b5gvac+*7 z#F>zow=3s?kFW)-h=sx*#+7*o(_3{vFsbB_YuWqCwKQTvRp>~&p|4xE?5Df4;>SB4 z3P5S>d#?vOzC6A*iKuo6hOxrMjCNfUls>%FY{an8-|-K6J}jSBw_Ymr0_L4b8Lq@l z&-+HSbE3k?y=yDeNwrx-g_UU4*GY**#M-3kEoGp*EZ;UWb2oO7MV2k_PJkeOOaV6o zafL055QT?m&g5WZGNXl z%oMj`Br?oJi0({^??-o-!wK<3*yw;;%IuS|zH}w7)fy(n&(ma-5WWW-+#fG6L(hYM zqUxit7Ib8vlZR+2|Xv0hOl=c&OcQ4XhVd%TuQ z$UYoK1+p5Xm*9JJgtF#SKYb~w^zPUyA+-%#TdO>U>FomybRCnp&{XL(4HAb{;~hFoN7D@O)EoP@S>LZqu)d5qG_)SqW(9z$kEDY|&8oJV02&1xi=u~>3{TMBLiDk%^YspXFwBzt4 zidiYqmLzW%m@HD^5DIj25Q<;i8AAb3vt7U!zkH)?XfMrFMAxXvP%SGc-Ake`5Ibm7 z4@LexK4L%C%2D|Si$5jRV=yXZyg zHgZEhoBQ*UUOX3gN8W}ptAnzb(^9&!Hxr*^N~m70(GWa$!71=mefskuz*Wi6 zIc$cF=R8A_GqK%Y8jK?}o|!RmULIf(A27#nV--Tgl0{5rorqlOjALe%>`@sowpEE@ zl}Fxt|K1MzC$F`X) z#*G^ScO=;y*nwS6ak$LcRxW|LQ=9aR>p-<&<+1_`rQY#TdF{8=mW6Pt#HT=e>A;EH zhWg35*S#L%b^hu@<)S$DN&CBT0!JmBr`wOY)zUE&BWp4EVoVPIMIQ}PzFS~3=5{zc z%3Qb-Zi`jE<~Ni=ul0EFh^zEx9sh8l{3n>rAPfh9a9YJeBDZ)uH;ev`qT6eu6Izx$ zZs;&s=J3uJ|HSi8iLcr(SYr~a6ySpg6k1on*hrr5o~=JFu&jEn-gs;ZXla(4Lys&U z>YX))>a*ijURNBw;@E!f^7%FXR`FqKYA0G4F^=hePUD;7)_mbTe7h>wY7(cnG_K8r zK^_GuQ)JE}#9gz(d;VZK_#E(*8pQlxygCE@m=Ib}?z+Bm6H1k-W`ZaKt$s z#7ty)2v_BM^=%0I+@-5ct3^MaYw`Z3s~|c4 z4Th9wcgHv9DmcGZBYN+r9^S>bi2OW#JObYS7;@QtRets8mfA1V+4kYbFV z2@Ag?{Cfyl6S%9ewxl9_Vr7t}xs|e}s;=Ll%Bt#)lwuML$Ezd{R7E9y_0|3ppva!` z$yDfc8lpN~KN-_NfgJ@Qc3m}rqaXhc+9#F=@1sT2*ScQ{0%HHCH*AYkw++@CjA_tU zaGXvo_RhR)hlwsH2}BjBJSovB(Q{~-g7~BnjutpDs?Z2k!a(VP0@0;2FN2&pBl3WLmvii#ua;{-gK`fg!}lSi z!K@z)Pl7Et#H>d|lBwCslZCVR<&gLB$|A7niMMu}aF;ery{K*yA=`k| zJx-QXM~9O0s5!56>W)Hrs07xf@#lsF^QLL6h}Jep-S=%@Uo;pcYUL1FaxRKE9OXC} zi1=_N%nG`13jm%9GoYESwFOV5v2(;V^5dF9 zlr&CMvH5g>K|qpsnr5j5;4(~v-B2TbZ(xpWxP((ANn0P_KmmC(4x3o!y3{yO^66?q zag0N&HW-`U%vkbuIZi2LXtyVj4j>g%ZRWOv{0lW#A?nIjiftCID|dC+P4f?i#Rxe^ z2z5qy!PlcXHfhsq!YNLrih_~&ijpYU#L!jI$c1)92X<}WM}g%i6XVGA#`d|cG3J7S&FB4BK0 z;l{DRaz{_H)p%@QCV(V-6E|PKsc;VC04S(cD8QZr*2cHcW9zuxr}dm|^{mTWoRpf$ zGc$0!iZW#0aeT=CNR7459mk}8l7KC|?6h)ag*JYFNUN4G{F0TDt29nkJc?5ovytHF zY~xnX<2k}AW;J4?u)Lpi;@o;l7P+}4+;(wX?d^DTahc-z`dH@eIQp2Wy0q1fX`jgv zjOw8F){W}%>akuNOcg9b6HCffM__$Qo7m&Y$0;@4!td;Mp?%P4?0Sf>oU~Do&|vsN zRWHzO3F-|1VeuJB=QfFx^mu}^8h%XOFxu3Jer4YNdv`${&ZOSt-?ZQ}b_hW}tiHLv zp+MGfOd{brfZC;(Qqlx_Ijy;ioXq%c_S8bP$%ArlZK8DP z%~`h=xd)LC@}0k$ul}EYr6)%L%eM~y+pqK=W}W}ruT<;bL|vzxzZ=9lzOS-;SM$Gn zmtxwb{?nC|;a#Qp_ddiw4I2LH*)Rpu1oIvT?(fbQANj_o?^EaZspj8pF8lPEN* zANZ%@9K2QeswF>C-IngVxFZ84L`~o~BI)Gb?7L{wlb!bG4nXwle+OZugrJJZMVY<) zQH`FeI%q0h%D7o;5sTWDQTN}vXNJDv9IQTeJ6s|iJMO8`y{Tq(K_+l^(IjJjE4deL zuy5wGGIsD=mOcP$N}qtSqnL)VbI--xz7=N~IPtfNT4GrF(LnO$R2I>pBl6ZE_z% zI|3?OMu2=Q6dmT2+AT{hPjqvhI_wRigi66?XuRlAvX@NHH2qAKRC>;})$&Tebqe}$ zuV-0<<8BSuCW^33U0Fc~;aa%ENss@+18)@t<0)1v5SKibpXijJU%cIMT&yM{Bm z*j|>HMW5OmYhEgvd*Rydu;t7#28=BYX&a_yu9dTtc(v>hk3h!Uh92=yjb{yW_1g{> z=384xK<%Wy6dt6$e(wC~nl7oO-3jrn9QCjQ9`&ZnF@2)95-`Mc$2(xQ1H9-2Dytg=S5X+uIG~6c5&? zND9$6-z}4P=F;e!ASGBdfXtqQFscI?%6Ll4rNj)mdyf~~B7p?lZv2E_gN9BiDL@_V zN{W^jss<_1D;r036Nz%N^CqB~70w?~TN=nrQH2g5H+tj3;>k8h;@x+`ZiT&vQFZT; zJk}NJB!bZ!X_@#Ayj?+}QlC;KDm$EDn)mwDezuiT)@uR$C0$^`uwYVssBVGFHCbJFhgx+8AEbw5r6f?=p6JECowH_Xsuh2u0$Qa^;5DofOSdY78NryU zCl)*kuLKW*K8FE|+TpPg2ou*-J#}+F99_MSwie~yA>K~K?zCOTffMR{_q&hW-N{t| z&a=x?u)j(D2+)AM+YhBnzgq`yp;$8tN{K7#5UG1M?sF3I(8!V*tfIesseah;OMA5f z`i{!uXPZO>?Gf+%rD}#7{!s>w|5^B4L zr!GEo@9#VXk_7j8=)4+{Es|fc46wwuECyo22ZY?>Np!Ew>7^h_DqmdHw09h0EUbaP zNylA2VexNzB zn>YpSF~8E!5cpTk*5IdMpO%+NJ~H4YTT>>}4m}18o1_i#h$t?T{&uiJT!aS z;*WQvEMG7CBhSBZVT-idf4$wb?Mpsd*=Sg~`DSl(03E~3$rV<<#4zLFxdvBb61C@g z{f8?fH;@^$$;)pMOqf0K(Z05&3o}95vwMUGG>%cZBJmZtaYlzR$=QJ`3@2Qx$oWcE zJAFKullkzHPvVFbd!v%l);v5q z*LczbcVySr)t%+qy##Zz2Xn(-OW2r=or|p&)tC*VGMD1$Bwz-5wpBfUnxgrf(+W&| z#O17_Q_8DiF9T0xRzC2V!=D`dMW<3x;O*Hxg2W1-f;K!%U(`@YUkFvJn|Y41$Qbjx zY{D9I_Kvac+E0Z;it5Jwe9{>0%v{89`CYXPkcyB9VW`uF8pYl^d9cLZ(hez?wC22B zQQ3Gm=c=UIk*P}@XP_se5ul8jP50^X_9$?MY|Tp`HstNnj_Su zSoROVy*gudjwd$+F1!d9(@b0FzTx8e6}b$@r_5RJd@Wr?i04Hj?V2ajL|f;BPtM?2 zlpCWIaoDxCo&3~$a^9pz*7P7$Ci)|g!o?wioQIXxu>wgdBIo9ZBeSq|%^jOL{&>_)*BOi-2e@T`@D*d7J0gZPbnffw5QX!# z(tG{!hc#=nCl)v;IogW1q8p9PNH9~&SkO<_dh$KgYe+brDk&$rfN?KNIliYvAI@{B zurqa?WH{o4i%>s*!;0nZMkhH6#{fs}CM^at=Q9;Ou@bpIi3*VmYuI`IQzoctDNn+w z@?0^9xO|&~V`Na7FXX3k>oC3$+hyId@7Q}aQKN8VJ7}KSGt$MG35r&nwDZ)ZlhF{t z5__{MM_bjbR~>S@KyA5Ur*iCwpJu46qadJ{A5p2%z>OC%4;;*$9sUNhC>7s9r+l`4 z#|0`wIOw+9(rI$QomJPJ@qqv5TZc$vPJ!xij9H#j!yD#Z%V}+b54`zIkv9u=edd_2O8-rMo#s46q6BOPPlLtelGEy-HNSg;0#!mu1hTDR zjZzDKdMowf4%Zwv={!f%jg7#WI;;xU0F=UOf3>y({A)QS3DT`Q=&~~@30p?X9~AAG zKSxT(X;Sxt8Z#)tHQ%WogI(SxnvkHhnbR7AarGSp?erORiWeX7Ejsq*byteaJ**_3 z7ORKzJsR0B-ou7^m*9mrmT%WP! z`c($AHeibU6Xr{cp(lm;pHia4#sHZJWLNEI=zX7UE?kEFgTP+69;}-EgD(8RYV0X5 zRz(A(TaTL0h7b2nWT#LOrL;TKkcj8hu*Exj$Z+GA;8j%eVP7=8?L}|TvsssMAI2$6 zc5($NuX}RVP}}jUt|w>$@WNH)!~8-jdj%=2_+=BE^>@TB=A+6VTtT_2gL=1BS?5?Q z&`~Io^wlKoDalR|iTh(D-US5S6#ZnCiQJK@q_?m!idHPBS7p>`EQt`Z^}hhB3_jME z&;Q<)BOf!vfJ~Bo>+$)TNsA@Vmyb`Pq_LQ)U!ep=!d$N)PLoi?`vn42iR%&~jqQrd zUk@ZA#B7VNW^s87G@|#oXBT$*unFSK|deiL9&pJIGJRbI_?3LZrE z)$`r9HmCR1`y8|6G;7`9F)in?&Iai3BjUp|xXy6;jukoZ?`fc?K5`s>H6^W24}=qD za#h*x^ktv}FV;_^cK+}#Z+5EYjebx<(D27K2Rsf zrGv+{n#KQ-d0h9UF(m^^iriGowqgny@AqC$m;p%ugKE#l%9RkUDogola4u!R_Cija zvSIo5A{ws!&Tg8TXj95*@8(TfBxgkkP#Q4=~ z>L1S^=CvtW4BwJXm(HH}7z=?_=mDdg9m%;$qZ-R89nvYgROU{VUqvKQR&QzklLxv_=e@x5$Hy%ojMwXo+^MA*uK{}{YN_68z*6F0M(2;}b)0|jqJOxH$^ieL#6%wy(kSn$-S?^cyQd_} zwo@UdUFzZA_>=hGrSIYYa1>>~$C>$?mXz-@MQ5|FBMfWXirTD7G4) zn*6&GzRGIN4r*6T~YMc5yuk}`vW#A;(Dr$*fg3;`Q^NaM;-6$#tAD_%-glY!|0KoIy$|^J@#|j(bd3-2>3#X` zG>qNV2S)WinjDsfM?IR;pPgB#JgIcT62*Q5hwZ3ijRr98$d5!gaGy0WA)1O6>?rb7 zLI0H#Tbpror^!hraIyr%Be(9OTJxS8Q1u!yuPN)mVEW!L;ht?N^+L3Cvcs^_Sk3YD zY{aYr08Uhw-B@ir?vZ$;r=F#!LvO8`m`|5=+vd#coU$epU-Z4bSyf$SLZ;h|Cefb_ z-0i8C{Nh7{tIvFc2iTuj>8uIxOebV3c#&>BU3sm>JC;MCb<|UzeN=W{Y70DVd|2qYN5g8#BD;QKKM@Hv1X*$xwn{u9EdkYl4nrsYtP+ zz4IF{SBaZcN0q&*{ZV*?yR4)0aO&U^NxxaONhd7lW$>2bU@q~)OcpkK9!8U5zbkkL zxMJ@eb-Zb8n)@Jm_hWjEy5-D~#M+1*Wt{bGMxpg>LOa=Vm2CThcSiey&SQa1KmJ3( z0guR9rOvx$u}ZYvlxsL`Ry`=K{(2P4vqs7E(JFtpWmK5LRNW>{ym8D)Ub(`93S9Ql zdPx@=PQH>#W2nB@9Y;xTherslNJ<ribyLv(jse^2m{~{yK!6e~y>cY=ej4?GIOQ0J zvmxqq$)@N9mnxQ;8!g~BPV3U+LrC?I$OudHXOC-n%}0OfC?e@-BKG^XeCqbV7({Iu zU_v4iIsn7%jhVY6#{f-W-wK-(_8w8Sr6+m5H^^54qbJEZyL0At3yDfSMzy!>Z~~_K z<BCgz@N*D>nU?gKX6rF6M(uFF z{iZ((I(Q+Y>crd+v}EL_t&lZC5bBb4HYgB%^oCOD83vKb)$7S8f*+x(00&lae6K}VNLc)Ht*Mhc=cZL___q&AO zWApb@oo0+D6*qe60#g2r_ZPx~EZyJx7*pe4WX#rFy0RLdfK=VnDu#w38w-QqpK~tv zdbCPqRJy?!DxpI(-S3Ge4~{T3-L|AP2=>>99psXZN2K-*WgxCi31~D%7P;&(Frg?C zFh(3o1oKApGt3v+Z4*)Ae#;cDyleR5gk1H^m>JyvUGqx#)El&|6$4=`g!5;cK*YA6 zkKjXe?PB8U`h{w1>wpT@sS2!%B~HO6B#XPbp@FXkmL>)P_U=@9vMI)Ps2- zm1)cUO&4bOuaL0SY-!5yoab-xBgD!&=jTq|BH}MSgc|zT^qtbvdYgmIOWELvcOpL> z9c;3XJF%fg`cf?Sb$|cHw0CnXjsy3(E{7$-T)%Ux3C~90>p?1zJkYEx=^GMhYh+)|n8F~Ehb8FC z-q7|V6ZYT@ZGiGbgIA7ECAmd6#Osw;+8|633FK8dD0qZD zP6Nk4^jGxctH+C#$4mHF6;7U2BJI7kSXa@;u|F3B?x2ny&ilMhU!Q*x1EUwdo@u+% z>tA$M#?Q=Fi_iGg$6pmj5mrP*vps%aN~IlSGkA{hAT)~yr$I)f@QU4pM0cU&0^jO% z&%RKKKDO3g7Rgb*fLux_Ev}O{9}%!`$|KhzHIFDh7Hz87M-kO`@x)5OR7v*X;kD4^S33FT(B) zAf}m4roVEz9c}Z5A02qP9ucQdu=SU^Cs8a3*03{_45BDpu~WYufLk~ppsZvc?w5=G zAdmlA<~Gq)sI#Np5(Q=_B6L@Ek~Pvl30r#=T?5u%bc0lPx-~{Zio0$Cwi8C=JtxxAtfv#oJXvFLnAK2k;^!r}Q14=8azk*ODUm9`!#(adB{;x~@=e|A zQ^xJMs(UL5k6+I$t02{Fr#{83k(L6i z(C73PlQ2H`%V%yBGY;+pOP}B~_F*|k`7|%SYsG1L-oiE@lo`ENZ#2r~2OexH1C#(j zQC(O>)ko`FuI7L$?rv6nyJjGmB(=gajt{5|L|v5};(r6;E<4ep=QYDV@|(&tLk3 zoi$l)A5da^Wd%On`e0anvESu6rj^1vr%K*&kRnEUcgJzZ(@zP8H4Im zL8OEW;qEBS0>!ABV9J-45mWAEcWGa&o*Ia!0XvLJsV+%Y0bM}rcG(uq7)^0c*{VBf zr5^@CJ?erPXTCUGL}}dcoW$m4m%2S-3`evvc8zJhj|Q+yB2sEh3kJB z+8Q`&fLGY$2wf4s1Bozp&l&wW0!8e2q4U;x;N zJl!D2$zK+e;qN9r6*EDIIb@joA`$hg~4fXW@RQS0~ zgZZ-lvZmqM5f~vN<@1~;CXCC#a+jle;IkBfKm}x%#fc*$57FV)X66@0z_^k|=qK&s zZN7ztjk-C*@QhLHeH>ubp4&W6c-+B>bdp@L4 zxG|dnOeqRSs}uD~qMuejPgXgeCwbaPQ_t5VnQJ;qW@f0Hwj|*-RoL#% z)K~n=Eh?sse2gXEX?w?db1rvjBgtPI#7?%UBvW z9&Y1qX3-j+US*o(tjmb0X22buzOh7W;Jz=rvq5ZX^Gh8#fms%`dU~InbV_YIfw4p{ zu`~uR8@(&iyQH>nk>6e6-X}Nf#C9CM@9y8<71Zxbz~7aQ@5-9@!Lac@-p{G;E1bT( zhX8qZqIq`+e>Y&h$4z)QB>a)uM(KVJiEf42^70o@q0@A{fb}o$M%ytVw2&Mcw=~wn z_jJ)XG|-BoT=|l$G9mTv$&A{>?Qc*)!IN2Z#cw@H&*l!*GPm2q8RfEbH!gIdS2@yq zVkwU9ljC9qhJY8(=L!V=`JhFy=)GLC2kpqI@3ZQYwB?(xOK+4JVI>t3xCahkrU_Jc zT~q&|Ft%HX(kS>BDG>e}NB9p?@R6zV^&?Z|Z{88T6|WtXwie67fYUPIOj%fevuAVq zyZ(b>#{K_IG4r2}cps@Vk?&^kcXP4TKw07c)&K{-o8B+7)c!XP@=*hf@()$j&pJL`M!VQpY`(47nByry?QxNk0 z@((WMt-XV#P<2Xd*;{UFp`5BkhJyD5Sf)Awfcxvun4|b^mHF5h*ttV@GSG#SYNd>* zS`})e#D~#)u4OeTz-q3enc9^2!iz3@+wj|2C(ahdYX0RE$Og?uE|tceu9M_0DpV^N ze+}woSY)dv8vwQ1amz&~+l+Xv%H1X31_PYA)K6 zvXBkNcAa)B7N~5Jh!dNT)$IKS@$&o9eTHwbPgfy*tVkH8&gOLEE>1E}DsH8p0OuKi zzA#L}#g-}kggnX-RmeOL6wfWNN=>OYGG1=AJtR(9BfWxLPcE9d{%m^e<_dLyf$cmy znXTnnzwTf^d6S@}ADLUPFEab~bkU^~pEVrGNHvVs#8uw(sdBRRDD*@|Xmb(Qxwqk% zE*w(}L_=QcZ0hxv^|9fj=MAOd%n$I*w`ZY;-8D~t0SDBjyCi3J~5iGH(`n^&c zd5X(v7Q`$hA*o$r$&IEQsRL3^ICm0AEUx*I%Z-@m)64QbjJ=~6O~n|N{q$xL!1|R& z)AoJ#)0*^JG50u1-h+;>;dGKqZ{>vBO2H~C)T*JU)iQU= z7%`_yn-kO?aWSUXiq@|7ju=NHl;nqPE2tuM+Jqt>d0m4tD6R4S9Du!Ke&ey;R}zL3 zpCtraC`r7QZsY-9RdEq#_w!Nm8?PoT6;qbtS9NXNEQ(j=u>hiRq2;WOwkof(sxWsn zccDin!@F^HxXeatE_|K!MI(pIA8|c0q zB6_D*9(+3jxh*5evl{4j$p?Z`GWQ%isHC&0Go6NTp~;w7mV(nigJ`YH1B z&mUEr2)7r_If1oDBC8Ur+~09=yI0pdmfR8G8(GeRRERaN)Q5QRUn9>Bo?$9KmmcMb z#i5HLx#G#33}a+T)Wp;2M;mg7+^)CJD^EJZ6D;-x!_A{1S1%uS~+Njd!^9s}k>$rrdl>c^ha9YS3Y@$MLGIabJmZaWUV%L+HjdpGEFlxB?qP zbi;YR1o1}eE(|9dnphajs%$Q2UA(Ii3M;nt$s#AV^<<%f$mFtmhLO-d^HK{NLK>_V zC|vU|M4Psl`{V=H;@$&bqw;3tEX{v_OW3;Opbx_TN)hXB}RLRJiaK=N2Yc>?9x}_ow=O*UBxlnWN zUXh6-b#tmVU)=p(T+iB7vCrZz&zXh9gk>17@og*RJK+>5*@a!qky;mfr3o7KE1d}Q*W zuZU2p^b#T8_`tndPxp`49x^gfx%W{vA^R!RUTv@vrzCNxV1EU|sg7i+Ha@_Xuu#`3 z9~xlG>4FV!>?7&zNqZ>~BBH=)IiotNruFB%k!8+q=dZn^tf~~9@yhu{?XTmFyVL0* z<>MXoGV(`1JLdCuf9Vv^C;@A;s+8shFwV6|PcSHIjF`0DN3c~BudTV9Jx4|ckEdn; zuAjq^Ge_7qIrsTlJ2A!_xo)?m*u+{`9dl3WB8Uh5CWz2HmLI>AbhLa*R0ZE5O04M z2SNIudON)0SA!IeUor;U$e&HNDA7IlIxmQy{PfY+3Je$|5Gf)A8g|0f*lhYJf2L`h z^88uA?}s{N=moTkR4l^}X2?SVU`&smI|5PqA1E6lX1*xmy4NJQl%;HYhoNufU1wyf zuRE!oF5M$dx8Yzjp7AjVKDR*c#KsAh>b9L{Kt%I|_)!r@kUO!(vcc$6~ zjd`mpof|;46#R(=UqiJQ^cEePU5JMT_ce7{yc0$GYdN9~SXv;bjP60&TY{M3z$*0o zrNN&`_ntuBmH9Cg2`6T_1yu6-OqRnGO_rE;r(;i&qqB_1_qZDsF_F0q@uz`ka=**5 zdAA@37RlSODP6(~6nRI!J#Tf6;M)@EstE6j81)5H&&jm}er{6kK zuY*#*B)4`9h>jA&EHqQy4Z72;dWv74hHP(Fe%+_fh45i&?BFYKsu;GaG}=e=@&mrLovY>rrKqeH2kI3Nowvd8mq5n z<%u0I|Ni}0BuoeRu(nS`4rT{(^9gh11&&P6jr?YALtm0i!Z^O1%x*fz=i2`4cG@&P zO|oBe9rNl8n$$yQ#x*~$`WS8@^iAZsPMwN>8$LQmxh0%Jj13oOB}zi!FvicqN{3po zj7PxG%9t!vwX_%BTo+RleJvV}<5H?O!b5@YF+Z+J>t>SKbrSPVa3PL@)y75r#hXVQj zXdMg<)sYDZVM;Bx$RI<0hKuB5rl%Q!)7)1x>`u=3(YIXg{XD{k3~aN=-sMZQc}GCX z$WJRHq|bhJEsj9DAwb3M-6 z8!u2EZZUS;7Cm}{p(1M+mRV@m1F1{-bayS(=g#yBsngwK4+Z=rNL3Tb@^^QQZ?fcl zj~JaAU_EqUIiJM^W+ZJ@j@Cl;n%bA%UtPAlp_K}Cvx@%yhCrxn?Z!$0yj0W!Y8~2; z5RqwZwzj&dzp|cMm8z;5bMK540I!^ZbQ_;WmVCPUFkk5x+x`|#u#w?-H@W%Ed_#+D zkoUo!wc>Hp(DjjIeBGw}Vm;WzNUltt0S-AEQRi!W&5O}l$PKo3_oHcD3raJoTFa(3 z5eI+B>VRvis>MM-#?<-7kr1gWO<4?sgqqn&J!`GD(yaJd_(d88%kBvNq?t2PXv5x% z!Ci@H3tjZ}5Yp(r)()>(=;=d&jObnhl*NqVAX>lfIQp%hV?Ks zD=~*gmbxbiEJ$lUhg-r`ng2P_B>n{bw&FLy@eGbl!L$WR&-pqf`2ExLoq6Ip3%?fE za+`GFOv!ylfI_HSEy3i$f;lJL;oveZua4Q0^h=7Im?*;y%T=np_N{bJw`!D1JSb5o z_Sjw%UlE`A!=15}nqMk~rx#@Icc^BO1E<|_F9x@jx9!+A+}W~#yTh4Xli#4ge5E@Y z{|prAc;tobt~LU2*ld}uKfcb1aY`&460=3% z{+44f2BpoDI^CA zVl>$Ij|5;(01q&UpuX;(9ELc|IKn4q#az*=T*|{eJgOXLt+y$*CY48%J`>6>SH223 z6A)sP?VXW6Np;(CiR*JU>errHt%)danYshC#c_@&mP6-gQez!pZmoEyvR(-SopjzR zo(Wecr6yqPjusnwGA3d6HE5R2=o`3-A!)oHk$dY3O_dU_raR5KZ-o2{x0;;nErcHU-?6xe3uI_x0&CElMu_mNsLw066neg zme}_*+drG|4DW%!-gW8kx(_?zyAJf9&Q<8|=MTR)t0)bAmI12wIJdkk1D3+?at`J; z%KJ5;-mm}gPcFbm9>CQ29NkAB6RRY(pq}#Qk(6FLA)dnmsyRl z#uoWCjupqi6^F6-h+PAwT2J11m~ptJZFHw1?~4A=BH~Rch34#cx`RB@R*9>1pxSo} zp^a~iFn=d){8c~X@D#6ce^3v=Y;Gtj(@2(dd~*5^fb;(YsC@J@yDi7GbDxH3YC8;A z)_ymS|J?@dKNt_k98A+k#)`C~fECHRN&jyq*$?Vi<@YJcd!TpE+agRmjs3qJCt;daj{eO%`G=Uc?_W}emUoZ355j}p+2*s-r4)^$_AA^*&kyDUP>1<* z)BiTyFkL%Lm}bs7AC#(igidcOo_0HoIA)C%GhRghUM=-CKzv@xGk5X6P%>!CH#nX1 zzw8J0guE1G_e}gqw_zynKUa^p96T-RFyd5f@RNyVOXW&{9k8(uS=h-MDn~^Vq!5p{ z+Vup?3t>M4HKIa!K8{Pz4i{y+5~ej*bB_3xxxpd7ZRA6ZrNPa3ahU-P-R>pD*5as! zin(-_ZK7?|AuHKrO*esxLEqykoRe7kAmmkVu?pEYP^PFk+nN2Su_8fOCEL@jJF0~N zihYR32N7iAGE29^QiL#Z8jh&KgyN_o&wy&KAHj(-)EQ1YXh#NQ?l}Oh?Fzx%i=zv! zywFp}u?xAfd;5`Xu)*q*I)o)m;L4(I&(Up+rsvjZU z$(-qe){RRagutsOXUmr50_D;NVXa*@>Uf=gWf$X2sFpU(=+A*f@r9%p=H@|-50=`} zLM!QaS?fbCf0tQ4WTKUs6~`GVPoEYd%$1Q8Wiggj^*%;xBE3an7WBgc)uI;Z>}~d& zl*HdC#KT>lePTzo0)r5gFYZ}M-L)%cS^{c|(r%T*7K79bXUvi1EX(2b{0oJNe(d4r z?tTOVk5um^H;N(snl1;FBJtpUV6bQHTfPf=_2Y)NLZ?|`SQP4 zmG4Jz%Lbl;+M?)Gj35XBKb4gKxQz17sn?`vM#+Q3QR$H*c`Z@mOYdE9eq~C+9posv z7%?L9gozNzECVUhy!XI{|KpEqcVOK7`>ieT?BU)skNA?=+AS4Q#v|NR15~)npADX?e$8Kwu6`*vdGT#S3MIb+Z%B`Q_U&4y6@i8 z?il`bFhIYaE9amS@2p6G4J`fOwq~*$lfHxi5PO7;TPrIM=82^)6BbxGH@TPwq7-S> zOTy7;wec)|q^nj`?vqcoN8Fy^f5=~o_mg6w`%?DC#xe3zLjX=KC**Q#>rT_7f2P}_ z=$fR5PC6i@>=|s;A_Pvxhnzc>NN$Jki{fM0)g&!>gbMflp-=FwIZ7k+>MK%C2ST@H$toOa@f0wcKlBv_sS}9(0I}JevZg4(-rtAZ zUC2w5Y_tV+kvWG$SQB52UzBUwi_229Zum2sx{J=Lw1etHF0U99@+97MYr@nQJ=>5D zYDED~z3>Op%AR`&V(44nmF)4XA6)AxFaiDgmp%0n(eCh2TMuU#oHq!ouAx(R2-71N zN)92fj{COa^C?x>tRo28-8O?|EzO(pu0)Dh&uz&{%S7AvOQNzDBhuHI)0 za4-7Y=EDpsSY<9esdv-Z)xmGwoeA}R^ct&LSej&Hq3XjC%TGdMTnAgcx4RArg?p9* z@odsBqF3CyD0ptSO25cm+@X}kk4>@Fb}pbjDUQe^G_ZeI2Xi_4+!cQ37~kL{d=liW zupb65euH`3sla$y8KrOJCM4n>dQzndtD};ETFrTM2OH@nob;HaH!zmdn~v^j>;B9l zo@5?a3TCdJp6TG!K57w}WN0$!_AJ(&7%#NPLR=Lwya|qFIdmyg<)t|!Z||8r{$#x` zZWKe!=*?mRI7%bno$B*LDfpHI-f}uT5#!*LvcAWM)+p>6>9UsEpA0h;J|{)}x#Xwi z;MF)R=LxU!rwgS{yG^5r?T=Ju@WiPga>)Pu<`%Cmx-HdbpD*B||31b$@ta~gp|4d1 zW0X!Y+E>pS{H06dqt6kc-g`^QCVeY#>+VdQBX($XXync+ODTu+aKV9!BM;;M&fC~JMkIHSO}}B{^Bp3Nic70sq|GPoy&Spd`J{-8ZyTS76KMU}JpAxL?w7cz z!w;d+*$n%bJB6D*dEB*SVf>((qYVJPw1sIH7(^l-Sp4<|TSeGa!$yz#a}-`1ySqZw z{WnvQ(=VCG81%PVzOsDZHII1T1J^_eFjCW`L7Zm9%`p7mSb zDxOT*=R>6R^+^qw2-puS}y@ zu}@^j`Z_8rGloGa0L+JFDzPxw_Y(~Ko_Vznit~B(fMNEt3re{Y(WsJ}gKv=};aZhG z58YBf3E5rB&%r6PJDp{ zQiKC7nmHt1!>oft2^TGMQlwDwprz54IzRhDES3hv);F1sciZ#}GfEZcwLAq#Id-`^ zSB$0BTOiIKX|FlXqw>V|cFa{_N-q;}41eX?p*O3MP8%?vu3eTotU>2+A{-a5ndk23 zxH~>ssy;V5o@WqOZcfr?CL5h^GUNhxc_VAMVLwi?v|93#beg&{(*_|;)vbx)+1str z_PjmOzSfLRUo#Ym6c)5ds<}s8`V{V-ykw?8mfC5dc$7EVw2U0@60e!Mr|1rLs#eCC z?gL#CBvtM}h{UEj}H(vL%h96G>awRv-@RL%@wWC`MexN zBdt6gCW>z5ZTT9^ML-$U9f)=?EPS)X;%tQCtyOAOkPC)tib|gJ85FOnJ0frSPz1h> zCZuMQk0F%g($B3@C;P5!(uvkbS;ik)Zk5?AV07*_FCJ#GQqPB-Z4U8l{Y(yZo38kRr)@0)dlN3-MtjvmSaZcx5{Do0NyRG-XKB3 zq>B2r62y(5jt-4a#G@-T~Mic0Wjy?pjB3Nr4c59k9bEY*8e z>+tg1-&pl0WTGrblCNraM;s^O-oq^W_7mN7{9#MuZHKADQ{#cUFGCC09ncJBj%)o* zuvJ1q#&2k6ma}L)?h@XQj#KDzEb#QOSKgP`j2@hJ;ZX(*QEZa3fbtKPfHoA6N}r3|UOKm3 zU$&-DP*scg{%*t0a9D1%C?&&ZSPnua+ed7(^UIzkJo?(jG zC(2DoCDSQEJE0<^HG-s+2j%1jdfciWZ?wSn`C%x;4yJl8X=wn}w0p$1cUG(YvBYfh zq{d$T&)AWYX+kD9%&sY_@fjft5@Lg;(g-6je)QZssbs zQwZnL=!e4@FW~-H8(-_Nw#v|1a+PtG6GX|m644zItYZcrTk@sX)CqYSqZN6<>>9NEKpZcjU9YjC1 zhF*TVZ63#J>cD8S4qM)fei|HjG1%sgTxJnIO(l5ytM1?IL?cG+e{$*+<*o@4z7e8O z>LPM|Cc=})CsEA%foy6K87zl|=}u0x5|+kJC6~@xoz8etB1)-NW7HX0e2@JM$-J@r zM33$raWv!fLU(3jw7NHvYJb*pHg?4Ty$becDufOJkOPKG<5IrGhH;PFFNlbFA59kg z;L>Ftf1W(uBheR8)mKl#IyZ%3Pi+&zu*8YOJT}y{?ou5NRbcE* zt;9K05R&=Ku7qLEphK*wAAy}s0R5HrZPRekWQhvw?KeMY99|NZ$eQ%apiHRKsC=YQtcS4zPGY)QtBOtuxq(WCjxzlea zDlFtJUiXUXxG4uaB?1*G^*5+=rQeYZi~kNNY5iG_J{u=oS|yZq2l|^r|?;4}aU&ZfJU!+5rwIEv|Y} zlz?XOWc}5*l8**A?FFkoxtvgYu#Phmuc0!P!B1(%Ic`&sM=kT(H%6WBca9AN+L)Ev z;wF~3mxC&YmNW5t#*4~EX#s8wB$RbH5he!iQhuuh?wsudl_v3OZx@6waH~TR-E~Wk zTQ0d)FBxFJ+YnBui&ux-S%6T?`t^%1-ye6C{mL3B?1}-fEK1tQK&8oDiG+~I8QC&e zGnJX61bDSAcO}L4HX}K6WBy_m7f*ku3XfJ4SJvOhl3zYk=mpCxF=hk5X#VlSPOnKw zA6-Qy<{10pw4Hj=8k!EojI?nqrI*l6v=835%bG-v=SNSkF`8+8;4Wk7CNbiQAK$6Q z*}}z0^zgKF!X6ikVcJ5TUdSL5^};f~e^1Q&bIbc$u} z6I8hB*@k?J6I$vu{ksdQNXrbe+&B8&j0hhatotaehX@K24}m!XI0t0A44?S9;R-x< zqsr=9XzY6Un_S(OL@N#^?8+EiO`5*E^@DFU%v3k9ZYh{66n}29+^C)>cb-Y;@DX7z;6qmRBj}?cDQfUX_TnOzZol}v1k+gu^*`r) zvEQv42pK|gs+5Vdve->1@9~HP?_oYJk*Lr=XD|Y1M&n9I*kVdRixm-bZVc|PrmH+% z`7Yrl2md~N*sfH?n`s(@pe^&CjS`LAzD6b`ibSA!WIlYN_x6Nrx*X8-{?icHcNQ?O zA8f0VcP`RDG_e1@vY^oUZSrSm}4v2+{_d6i~t?U8S= z?ag1coG=V=o&Vid2Vl1>NMU~4{KVa)$aRfZAD9KgRO~}Yc)dLzst5dO#u2xz$5b0H zUz`(ScWi&X@JQK~=UoxY4v`dTnk8!_{G&!2^J;0K4wNi~8=falyg?l)N}_N(wy#i1 zd_T#;Zl8*K0clH1A(GSLB#Vjn4P|kO)u>^8`FW(mEZHtC9z1x4I2%^6l`RQrhhBpT zFFSiXXNSmuK0Qg=ByOYo}3AIOv>R(;R z4*AFWlgySMrb66|>j_4DdVxw8SXdnq#0@HMarVd;n#HM@IpI1|OidlzZwd65M=3#v z766t_e{v2!z)tVHR{$o0W!y~gk$XRDtX)|NG9ah2RMt7|nsBe&3N-kXZLtFOZa9~7 zxi-cp^I4(T{%R(w{NmtBYJ54>qePmPW~`+!^7=JC<6y&HzFjBT*q^w)!KePw(mchP zt6(_A6??si99yr2TZ&6D4<~>?!+uW%E_HXIHbTxim$-Ts@HqcgKGoeXNAYMbe1<+korL(Yh2v=UteNzG4nX~o-m^0m%rexf%h(0X_w`G-q zq3Tq6Kh?|YF9ikGu}U^O?T4rB3NOp_#u6r@tgwZPQ^4sc7Be)G+3Giqs#`~|z_SRq zmHBIk?{ahR%M3i;qFU9=rZx^f)(^O8U^dvk6)poBrr4!sNF3Y=tSB1-8mpGILotUf zRhCt)Dtf|q>Z#tfRPWKWLNJFui8IR+*p4Vm!NrBU>@}Z-_k9@dF~?sV~D^ zY#3{{QsSJlJow=7{pkCJ{T}Gn@qaQFPqbLJZ{H)h17Vul-pv{RZw}x8vlFS=T`-*zc|JhYd(oS{hw?^4$E%Y>&xmw&)-a@K}ve! zP$rcPjABc?O9o>5-)YeO@aIX>v-A;hD`n;jPxNnV^+^aU7bn)^r%KyZY%TWs+S&GY z+3kjt;=WJXE7PYb55vlO_fh7=E6q-PZ5yg^b{L19Vp$0;NLH>1ejFuCSUoFX`s7dGU zVVnSh)hws_OW`I}d`J#npAREzOM{uOWi+H z6Z9{G2ipS1>C!hLzjAoqzc9I+tzfXEgw@@p-4maN*S{?9gx0@ zAwA(oR0J%i1gD9lRtEW^%l8t=)6e|djJ=~+O~r@h#s>w)O%Xh&>Xaz~N6Rwm1zh6P zya&$Vw$L@V9m9x^827tYe*IvqSf`P<$+>O2^lgL7_A+N8=2ccxeNjp?))3=U&T+j} zezUV}bHaP0v)&6YGzI)#=bv2E{htLRa&JHzp_jhQX-t(W2RL9#Jul1rTrpd^6_(Zd_Arc`X_jnOZ}owD9Hz8$fd z(+t_x&I5+(FB z(w3<}=DsDHi0WKAa&;2o(BZ;6F~a26;@4#^;RTB(EP3T#E)!U8wG#}y;Sy;Mw`dA~ zJK564o)frz7oT@*RI&7=uI8bZXr4U;xBL<@t z7;F1SDpe)Y^p6n%Zq&+#$d|;C2b&D);u6NQ2Q^fS0SQLE1b1~k4c}UmGRvD*@AdCh zM}KBQ#knj)XG4vFTyvxV@m(2iXVn8!M-M-rAXmACl3oKUH>c!;4ap_wnv#R44$Q`7Q)wqVeVGd9A~u7Tmsh1p#Tpe-h#`xQa!b8j|}q4tLgRh289g?u=pi4zN4<%t2p);4z-M4664 z*EpW;62_O?Y%jl(m7!%g;?ZhpPC9s{=>*C|IGxpg=^>k~meu!=Y!4Rc^bl;uuIch7aJ%I`*N<#IVrt`L~Iqh-~Lt?y0MAxnts-I`~m&wBPRwgZd zTy8ioW#=FpH7dhQI>4S-Jq8It@~gpfVdIe*fc&{s-dvrFuJidgsr#12uD#4@+ameQupPTdnC9bmf*oj8eK|__d^bU}U0{ogT`#MV>>o;vliG?z_9UV+;Fi zsf$zqdeO)suQJ!;wqDOAIlDlfv_uo5Yyr>460qbYsV1n|k_0Y$n4FMQ+5LK?$*l@= zU!imyx;!w3LQ~>FQrH-mc`lmikMkg!<6Sk*Zz=%gv;!B_jd1i%czt-Bk}X^cpVK(t ze%XuxT@tc4M51jw4r;IMP9|-tHJ0H4_JZ5TU8Y{!L>Z4y!@YU0mo8A>^t$#d4sr%) zG3NbUWJ0{_ms5mWM~Y}K%6eoH<~s!*I1)^5d1KwE}}+fV$_;qs5a&KMlW@fI%}viE)l9Rbavd`5!h33q=jg$n*mxXAdY7bfCWd;wH)@cEyd}GNE ziTG~4T6@E#u>}kVG@Xkw1JCLD%3f8XR8L2#Zv|SmWN~N%vZYA5iuOBdbtW9<5_sk| z#sJ2*FYkXa@Gz#s&GY|#MAb6?Y<@UD+X9r~YM7l_(zr464^l!B5^(wUMNjk-fsgE$ zAh?kY7zCV@Pr^Mj3g#s_^CdsNv`2-O<$ObkEA)l@_DzIBhEEof^qc5+$Zu)MZHRaf z8*-CwPj21cW$$=(%eHAb_?KT3iKi+{NA{_tPFptTO0fS2fj-VXb&(es5$4Nvks z+s}G{z|R_k{H9ziOdR7%M`)_Knt%Db^KTeCiyl;4-g>;%^~A3(+CdEKdXC(`;MgM8 zm%yt;RDbP(9CGoQlO8~GTgdLgEQaO5KV0J-nf)n9i$386U*#ph`YDAKrJutoaz4tR z0CVNBC5BcKz0{_IQAr_^g=_qi3~MID=@-2Ozl>xLE-)Ls5|ibREg03sudQDepIt?2 z8MWWzLGBLxsSf*&pc*QiB`5+NUH3x-%#d?p=BcjYv*P@Kz-Y{C>f&e3k^%A_@{U14D$zMC&ZHpkazbHP}8~&=MQzdX%_fF0Nag-Exoi&kxb^s+C z#@65#I}Cw*M9oAg`V<+g+2kxy&G2n5nxYw;1J7>`cRBcFbvok;ZwXn`4|aWd6ZZNu zQxE?*mCXrXrha6GQa#M{u*-B{DMiv1IJ<89VqbdHG;3N41>xCW<1KX+li9w7 zGN{+J5VlpHg_Rs4H-6oYoqgK)M2>I{f%1nUnE=UvHOz&v{g?Y^5$Vtdk%u#Vl`y!e z@*nhl)^`o3iey7yFM8BE#s0B<;XI4>6ft#tEr5G5? zqN}3Tj``RZVUkwCQ`S3!8oI+LejNaxDHTlkY6mi22OXEjOL1=wcbM>*nzK`{Zg{fh zo6((xY&Ez!NIkx<$uCgWrL~bx5p!HF-J*4|KHPSJcikznF*twZ;|pq@l(xv=*MBE{S10`9Z)&b$oIE}FjQPp-#wS5o$*%)q!aqZ zOXWQ-OvJBT@J&8WewPX~B1h0IO0XXYj}cJ#{w#QC@-pW~AwR91OQUY~rGgEx!L>4X z_aFLY9m>%(&-_;r!veO)*FTjBj4PUdAEbMp@Dz>_h}$R{wqX>`zIp#mz=luj?-bwkK37OtQm3Qi5acv3+URk$EGXii24LT;0M{xv`Xbzv^5Oel~g&>BzV zZ)WPB82b%Gf&i*E76yrcfqi-)!9tJ#!C(=F5Ls>ZZ5RZn2_Ufo5C2((u^I7a6!$Zmy2+TvWYe#r7=5+(C@6Hnc5P18j z*xIenbKJYssFe6z%5$zJNd6M*o(dAqAAk&wiKDcwEM@LYGaz;rNsLxXL`xi~tTdP~ z@D~&lR~8_Y=rS-|f|JgvS3G_|OHl5+1kLN4>@m2&4`YmJ3a$$aV-*`TgGnGViz+SK zPoSsYBqVC#CzSB1Hd9B6iLXok+ac7TOjd0ZjG*LsR9szI1fgcMGK+8N!0#mJ2gIV0 z>daIZJ_S;4JvvH#ZRG%TFF|UUsX;V$hzK+K^Z>qq2Lru+V|KoO?<^5cGTrjTR2RZ7 zD3X!EVAj;AVNWF?6=gjQ7!vXKK}PccV9}nM#m{;W-)3f?Uy#E$XaiX=me3K&(A(du zZ@gy{z-nhK!vbmc`#Bi%eyGy(hfR7F{}7C_`23{&RgjmFPaAW)cCvbrc5ddkvuMgX zLs_l&RAHva*sCDgh;dWy@#KbU;A znZ<=2FHhq$b)|_SR+$=vmApU0-iW;m>$jk?UXroTz4a(Dx_fqAz}EybSZiFwQnL9v?2J*{=L3OBd6bYp_yT#I1V- zv$t8PYqT;(z4GljDq*47u|6(dmojpNm>TXdy=SIeTPkMLifrSzVQ+kN_rJ{8?hQ$! zSh4cdWmq)LbVOx6OtiEcKfTw;_PU6M&X8fW?mnG!lzW*U5y^L$F`6&3@v9iktJCQXXld^t^Ug0jZLws>}x+e0}}B{kCT zpkS&ED^j2oJXIW*<}S^ek%$7X62GBFtm%Z;1%#)D<+uCmrm%n1i>IxM>4OB%*4%@( zC5a0+^;lD%tmvK!_MY`|@`ENFYah_JFr8B^o0Wq-6RV`5phppL596{sky-1?2$yjb zs;FLu!A4%xOI`q#vS(EOuFYt|&3UmKR;K&crE6nS7P{$jEC2x}VpbX6d-149_xvUo zq7ma%e8agSbN-tKoDE5#;mxezE^x+?@MR(ur=KB+X3+DI)bTBL+`8Fvv9s?$>v+4{ zR)MJ|RDK8v&fWZEcqij5V?w#|dJRC;;nLQ|pGb4Rgl?o1_p ztXxmX5twJ>crrFjE|kg4tGj^i?Jqn3xKYQ&fmno^IfLY=DSji)z>3egETCKq|5&MM zX-?oiFyeo6#r^=Go&_3=g)gjas?Vt)J<3{72SdQb*BPIZX`3B#CKPTXFQDE(KDTuh zgv5`JaG;X25@F(IdfXlCR>rLF!L#t|-GMTXXnyW<^GsS&FO7W4-?MOEN12no84I(Z z+H^>hEp1s7duv#}5`$sBQh}Yaik<`RdE`1bpV2yx#=krt>CRP{YgKRD8LW7}R1P=< ziw(3N*LV?qISZ$Ly~*aej17^u6MAH|p(`dAj|GfYKyDTK6%H2zph%~H45Z>K%32=T zkvI2A#N%hl>Y6!s*ojHM%UArjg$hp(n4%fVckC=-;^6Ety>=N8+5sWwme;DP7Vx!g zwGXswwZi>X%*!LXsa+LXnGQ`@Ra8kfl~g3_opozYw@cPe6L4zL^Bb;FHC^lG+S^wB zQOEn&p^mr8fwe&HqwUzip-@|=L=}OprK08PY6upc23zj5>U+fJjylx+x)v}0mgU;+ z6+^AFouZPIvJOgy9ni{x*Q-VAc+E2%>(?5>ZVGP4s{q0Z1O*B>r|#wElqvm#B?mh_ zM>q@~mC>}eH=*9)X|lFcfDLSO5+ddVSo3f zy7Z+xb&8+N#_r-(Fu$6e0IS?l#dwtJzZ77bt7+#MZC*|wg6r%t@S9*va-K9ibD;HUMuz4y?zWy(!P8SiK?!7@OwP**b^YZ;z&5v z)H%fWR8ZvecM>h5xl!}5G7l8YL*yqFazIJFzb}35yFL`9?R3EG@@n(=Ys7aSO2q*}q_gI)ol0x2ozcY>XtFLyy_|Ns);G_E}1nBhDik>bzWw zQ026-_ATs|Z|zn5Pw!uz*_iv__Ze50ra@KWQedq-jqPVq{L#JO{1j?1a&tGA95bY! z%b1E->*?jWJdZ%#EK}TfR(hM2j=;F*OFLMmFvBDyZnm~pWcF)c#0cnc~07nCH_!t5F1rr4m4K@`7!9)w8Dfd z%Bbc~P?pInM?|+RJ*el9vok|iNCf`cG)@G3#EP*cwAW3&>pjCAN)@H?G(A);IOl3! zfL_}{+I>&8JLV8vs33KvkrU~hP{Ij${F+goRT=2Q)3SL7Ti_6^OcsccYv9K_$PA@05^xVbj`;nZuLCY{`Mn))YkpOH`5bq zm%dOgraPcdrbDeu&jf6T#6#7Q1TOB7x8de^<#Kk3P%<`=!tcGcbC|{B2oi{-1vk@IXP~L8!aOov1nJ_ae=x=c zBq;mzE9j?BpAf#5Z)!FEcOT7|>Rh(K@@=xfLW8YTDsQA3DMmpZewD6|6%H((mZB?4 zU~G>JpfnU#PpDqF9j9`IVul@%zaV@Z^Fs3H5>=Ol9rvNvlpn6zx=?RYH zwhhyu!33lFhUUR+Y&mx(i~9+sZjjTK>dzuOz5VWnXP(yXqm0gQJ4Jp7p_HAB_d{x^ zM~{afj|G?@yW;_kWxt7hzvyJMz61wJF=rsOd9319t)YnK{?27M8Oh-P zKAgm^r%EX4-S890({KwH{F_Or7l$w!@&BRgo#QL%mWI)piEUdGClfoF*tRG3j;)Dp zO>EmvCbn(cc5-*l^PY3w?|%3Gu{yO%-RWQNuGO^)1~_ODbsG)31k}7oMd{y35lg&% zX7>4$pxA1DVDwNDkLtt$z#KGOt)GBPAnRDylouu^5~4X^b&T$2QA9I{9qM zKGo*G(u`_2jV#|D;vHv#+H+&2U0xutg*l{u3_oS;pV7c0MJ=}NA?`l@K~MUn8`ZS? z?td6A=~gG7G>3&oB;bTU{5p91Zrt!pQYwz)Duz2gR_$MvDGRkEyt>0YJu;0<+J|G0 zr@3bJ3|1ghc2UZNnPR@0*q>5~Uvgia3~jGpLXrC%9=O2Vfye(n#T-lJ zXdZe$#eVc0>-H}iPZUV6EDYJlsg>>onhQgi)o7jANtNbiv4dZKX&Q*Yx9?g>)JQho zNB0(!vUm^KG$BDa{ECdq`Rom0?Vd%tRkeQ05`22ZnsO=r%_yEA8<`HY{JevPJ)YxV z*B!I3`YA3YI^?n!WN!_uWfGhEcZcgjoTQo4E?3cW@Y74}lxb9X2ji4RlhInj{C_xE zubHsDgB6>#J-RwEN@djLfhQB+jr4YyxczVMSwk z!m*MZG($PK);g(4!FoD3b&^s(rE+W*T&f3wqj??V?%NS?(#dLnfisj1*T&fwN3R*d z*EJ&0TW*I_G~%O~_@$_lj!dZ&a#uEK5zffQ*q$9=RpKf-#UlIa?DTVtv@+hFaLu|T z;f}hAWv+)}iaKd)I?B5Ms|CUd@|P2)ao?Vv@^2F^8c7&UJnrDXs(p?U5=9JC-<2O6 zJI%S*+=7^v8=4JG-8CEO2&S#qjL9m=zs=!~|IO8fSy_zxjX^mORbHSn87S;sM0woe zxP@&E;}@lTPxgbfT^8coyj4H$BImN^0aER~k7-=p9O|2jbJ+W@_@^<04@~I0HQVoZ z6?c5WAg_{`<_}QbXB*0{T9f0sKU+l3OS;1tmRwkSFi%+x@fYyMOQCI1+SH-H;RX5T@`q>MG@iFU97It8U0u-1b$}_7eWkz8B9s3wOv) z0`dgpl5$5!H|zJ*R5v^C-@dM#gpI{NC_9jS328wEyrr;IhUUM4Fn7qr7@+&~HSe;W z8Y}HsiSF>qAK`JM$`ERTyDO6 z@&6`^Ck7tti`XeSODLkxFL(^wnSyu?0=L-6j7TX4zq`jTlOdlN=;Yl?pqQ5^xBK@% zl5F7au6Zq>fw+B~l~*ZQfDig5wIUj0f`pj7RYa0R>D!C`PWSwDbw}4xdKy<5dF!`z0@#`EH2VQTETy-yYP+FD8Yw>-)gVRlFW~%_!$BmGxax^>k zU5k$LV6=0+*dU*AJFBX$Kl*1Y{Kg8Vd4 zOMRdhSJ6w|3D|k;3gF>@qHIw3ylbZ)yiI$;IHsijA7Vt5^(dediR zvC^Ez$*ldeft9+If@`I{_a-K!)bLxOk7nz}-RW+yRcHdsgx3$n`&#nFLT9L<_&#vN z!7X&?mtep$5x_UA6D5kYp&xyp6zyWK?ToJTZLcrl%zUCW)tjT9?_qEJRGlRV)$8dQ zb7oZdBBOUcbf&X|EzGp-#~Qi^zwvi`DPijBmGgDZa{G35L@ETQ{xsPf;T^o#1Z$X0 z(?9hxc!gZlfRp8~f6Z%mA8m?+x>i71_xir1m0{L_W!rGKjbFZ~Y?`sfC}7>TwTK`D zHCI08%>zsYshO@VGE}KUwHCK?)=-Cv|S)2KIy0*GQ#_&N+dwVcpBgz%??@v^B7p&%ml;LwESLwR%gf!``wSG(TD=#Yj zE`t$gbd@_KJ+6r#e9|goiFU0wMO-`x*JjC=M8s^2F1^!xp$wlZ1E`41I&k@A?W9$+ z3sbjS!#*)3bPh1};1tptE0urMS4Hs3GJQ$x#=E0zuY}2N;=C4X039(rZGQD!xhM>m zV1uzXPM*aKmf50@PvKs-RuEio_HnswogUE@mtCJBw4(MtF=AaGwPvw2Vb_a1zTmJ` zRX84M1Ki&}Mtvj|$ zw^2%4bxp`=sbGsR%@`51x7%eCPUd(xMlY0tPi!w+ zK*dCzrYmqLuG3>p_|+e9@?C|6>((1h%9V6Tep8(M!PpteuiD`(B$I?l--Ny|rRJ!A zgYKiuDTes|)MA6{S%s!CYM>ZMZo-!qbA@=$3ASxD-I z;haF(hl}IvQHEMdAK?_%$3#6rNM#(8fySe#k4Y={e{bUNw9VR38~5d*I*j3zn~LMw zReW&~*jMADJ@t}>f}zqBD>t#+2)mVwPy0df~AdyaM}J^|LC&Rq|VPFL9g`P z>*T`{RyK#ZO%A77d;u^2A$WROuM{QRMIQUh7q%nzscr_&bI+k502{2Ipprr2JCDB= z*pDmbq=zl8L+!W6Uqg2KCqG^>n>n`XYe{SBC(&TlQGe<{3c^QSYY(mD$xEpGp0Bc+ zCd`lh_KH>l;;0zryvZL+Q}`wG)~_q}&K4;mD|a`sLQix2o9uSM{x#9!t}w2fP+$f6 z!qo?xR+j(hV%{ETxg;+cPF#j+4 z(L6+kbvCJda)S0>`H}l?k^z5Q&VI2cSu~PkWan%aoEjvLk%Zo{(tDx+sJ*C-U)G*_ zd2!(78BCb)c0EhJ7SsJcrfT)B#4I@Q$SDmevKX_HjT&pNZ+!^0YMd5QSkPn_vPXEA z!__N`I33@+VjVt!>8vS_WV7;!3QK2Z4MwN+MM^aAR5~^n(m=yg!XR9VH>OO%c3t3q zcufd}(~E^7j5B4BGrHPiYZwa@nHwg{0xl`}nB)0~Ey#)L0W_vl7R zMq*8r2UOzW>o-C4`C^Np)1aA!xB;OyCdfdM0(c!EiK-*>&@|9e2yZVdbmy_VQMlcf zE{~|fy{B?;*Xl&8Sycr<=zYN26E}h*7;+FSX{%GmmHg6*YfF#wM8`M@%doY-?rna` z%y}?hzvbz~Ud*E{`#tJI-2I42N=+QW;lb`+3$|6;IG$~*+P9hIJfkei*`wA0DV_1e zOsuEZ<+YsqZ}+59jTf>|$=mCVNH{gE;gS_Xyxa+oHxmfAM^A8m2#$(4ZVmCwGMpmz zCUH0ou_si;842INxrXkcW0XXRJQM6=(o*NHW+`Y=K zR}6<9ywg1j07F2$ziwl4!FbnB388ti&1$&6FT|W(ED}+pA70e0LPfr&4R_Ay629R* zby`jf5bn>ub=2V#1$G}Fn`8UDVuNB=Nq}Y-7UUL(ei=e6EVcIM{pBy{K_f1Xm2-zw z758+PNM}X}=jb@uwC6?3Z4B@K=T6Ugq=#-C06m@6hT_BiJNBEnj>HCH*p%RL&cSlm z5r}3or6%5@iUfF}b?{8G1#<##RYLlc4kcDu3HthB*8BE)t9!v2fN~K%Kv^@be6{Rh zcqd#L!@AYPDN}Erre$J-$qK2eye=Hol51es^ZBoeS0JrRCGWJDLFCX2sPqI_gzO&} zieC`PCE1SEF1KG%HAF?sBi9{}Q#J2C7{A8P6C!%wj}c=Fj5pQC>BteFlR!c=3noUR z7{X;#Y=-=1<{!f2{3gMgH4eSIfAbrJH#!<069$LFTk=|0`BC*9VZ zBAr}`-b#rO0Z$77$rK)gVA|0)fsoN8yI*;ku)f}O;nlJGr98FKi~PgV35~I@i=o1Z zAxD_O84Yzg5MG58Oa;(MjmrK7A_7$zf%(I(uy~39%n0v?7h6`u7oPhs8+73Z9_t5j z`GWj-$l&h|=(9pn3|}K#IWceKf4J>eRC(ldt(kksM~9!k%AfB>2$z`S5}VsG*Y5O{Dgohz(j)^0qdA+135F7_DdxP7uLtEy$MJD6tYEKKP4U_w`j_G__vBX&g1=uL&kZ>) zAGzhC1B`QR90Ia`HD#UOhEE!mfn4(BKp80C{@(w<*q?~a=jEqI2ip(-BhqCLmi_yi z4xdpWGdSep52rwqXnK&Zs5{@0JG`AVx;IezGohfR=thP0Tn&rm<${ zzakjd>JiCyswQ5;KP$@pvfDDCP%Hm}TJ_t?ZIgyO^PCw&F1+2g_(ExaSmB)-B=;BO zco)pkcp4JuU+{fznGpt*0;6L2$9NQG5B=B9znk{_KFxGexmCEOT~g}isJwgqR;(Zn zgpU~e`t!m6iiZJRz4$n$|4)IOb}W{BI8a-Um+6Tv#f{SiQkN#wq>D= z!Z!ZqE3z9O>oGbMG1AQL1<81jLzeL81MBPO>-i$}CeTx*3-!yYC5nE_v)PKcq7K0i z(f4MmZG76;vw3W$`9UhAYubankyeKjW)ggdfyV5a(_|55&3EfLLa73>vqsSFb>i8g zC@nb_^ti+PL}TdZR07#DU+=Cs^C2$;wWMbp8xW_k)(mj-%#K1?1AK~3C_tu0?X@C)?x7zz?=Rzu7Pr4ns}@Xl$xll!cN<56gvUUnedK_Rb6zIx&|2|GV;`f+ z2(5Xb8f$8}mE0;(G9Uit4Q(0X*oO7Y*uMF~{J6k?R#2VSD3aHZ@g0IJ8*u`O0ZjL; zQ2`zLLaYX?IN@M0n=v4|C8q)hY2ff~_I9K3P~mV2Lw-TtvN^i*k~H?kw=GV}0X&vCdaVhMq^) zhu#U5XYZ;eIpowd)ziUEmEx@69#=M(OwAGBLRq#5YdNy_pGZ?^>_9ZG@+S>I{CMvU z4+$75NgSlZz;`)x8#qPX9_1`RB%=^}z#!Vo`kQ<(vgFGefc~y5z7PR9UWQS6xP&x? zu{N5bnktf0k^6U!Y@Et^R3qO(*A|&V(R5EE!OZXPDHuha5~X1XI&MH>ND8|z?*|U` z<5fh97ZE{#6BQUihrDz8HRzT7v$>}NE|^XL7Kz<%=y1J_YPAA9G^x}1a zN#V%>vg}Q};YE6z-pzT_y5x92-w3<~N-1i=>80mJGpv7hjD39qX~ zfgTFX0wxu8+jFWVM_TWvtBM85F6>5dX1H3)`%7`VIUjWoEWEI`X!b|r$23o0C|!VF zPWgZ%9+*x7N0937@Q%kF4cUdy>^ekAD~^Zh{d2vk`y4F?@i!EU7M9^H^T^4yIb=#j z$SHjS5|ZVd6AFK0p~bmpp5?BG3&TaxH;<{c&L4~?@d~$x6rh8M>;}QA1!X~|z9XlZ z%B{_=v2+dT6O+Fzp6&+O#By3$Sr|Vm^G+ywpHE>txG7P?&Up_{Q7zk|MY;yG)JX$A z)6u@IfK0j1|2Iv9w_O^9AC-X413t5fP|ga3a)2UFIiFpKR0%1GidiKj{$2j$=hJ*iz4tQS1h$gHPLgARmT_yw%$+6>&-Vd#E_ z#XW6~$wclUjOSk-!`qngOP+juUWoY3caMby3qie5d5>ze00zue1$cP-mRxK0;o__X znGSg;`9^-|IrgXl07Y8aK{tyS>ZA51h26n8zroWWWNRr8>M+{WE6PGK2Q-P>QG|gq zY9OJ_#eNrL>GrqISJeyAv#jXJOjLlBe6&r`e)pFNFB1S=+jW066*S31;G+!8ZXcS< z;go5jufL%17UYEY3u$dOC3LcTi$XP9Mjy3)wQ*J{e;9?79E-GE7pyJ4_Ot&4(`e*G zQ`Fb@>7Ha>=Deb>8rZ1F*4!3~{MIGkdG0iYwl10xw?<)?u0O^i5h(N4UC*)o(nC}B)}9`*u=Vba<1 z!+qO)*E@kKANp%0ytfKZN*pZ$0bvxET540Op&5jdtg=Mtk==LQEK~t#+Qjsx#$pj} zMDXw3=%~lXV6=4DsJ@+qg}+vGgZ(-;DL}pXWxAZ$&>+0Kv_F3R%hMiw3ClFn&|+%YSHUy4`fCP%<;{AF|?=|+59P*>7}wa`V0nrQ5x=T(IUa3*Tn!$_c7 z*&DKcxnqbTJK0+DcQtfILyK0Q(dTvPF8cbOY2#9YeO@6D{qEOUWx;j@^Z96Z=vq_v z{O8furEfO_;s5fRJSpv&dP-9VBV)uD?f?5O3-;0FbzOZwm=RnYj$xZr0dOLS@l_MBcg`2o=-!_-=$@`Qr z=mvGGH~#RQ{gdoCh^GK~#Rb(B2>wpbT4!UC5vRPHEyuKfBIh!PdH(AQ(`vsOir`L~ zW%rQq*65!~!7dik$0Za4<9XY5LFktb;_-+lPE;z`YIKFuXq3lq5B*r`!n_Z`cc}O6 z=yc&gnhrx?<|2kM#|G^gp2B4P4?o^ulcErAR63yGtd?Fl(uBL9?;8Imk3HnZ)xkN` zix97;9#6nqMZj^2$&{=#l-EHE{&$XbqKxa}BjfB}{6oO2SP%#;)$_GRVUV&dHPV0d zDK+43MB3bvf0N?qd-L<2AG5m?vH`Pt1?9!JwTbFAEo-ymg*Gzih_pg&2=hRt>i58V z(SbSXROHpA{Yx$HkRstq^zKP>Y4lP=$lKKMptEVS+(54aKVp|(sY!FIRh$xY$~jH1 ziE#ZMx!t2pZ^yk4?kKOMlS`t>->y=U4jX&qz%JHj`bwKzK>S2g!F|-~bDNLiHWn!M ztb6r%WNph;cd%V9u^7tfGy;=YSv;V%y09&eS{`;@=hqz;q^n$v(*)&2(rl$+?c>=4 z@OR^aWRu>flhuGdx7KU|Vo&?uXeZpbFdJ=Lr}bY|tpfx#im+PR4cKBe)7QiR)=Lq) z_klp55(qdA14tWDfZ8G!fs+y7hr0HUDzje2#A0IQqya3hR(u)GAzJ}GLWL8 z2h^4fM34ay>Ol6BY9I#+P__j)c^L%C!2>7DzzK}=!WqWDnl-eGo}m9X%V*pXJJ9zB zbZTH|kc}T0(l->RBHR^3KWSESe`a*ao|n!q`~pHm((Dp`4)5m74>C7q%TPViDd_d-!gpo!07{UDgdO;!8NZP1+D@d1p&=~LE0I( z=6oO}^0U|DnJi$dais!ax{>3!CL*re7_brn7(CNp+jYvrvE%xGI0B%T?^zYj{pYcS?1|_8TdfQJ;;ETg0BZ3#poa=~d0vXLr3k5r==I*y# zuw0$)q+z1r`GufM^hU4kdWDQ~OIM)547BzD7Bta_H`$mJzih8Y*5_U3_ZVF>kyOl(KRY$F`PSf?Z&=#S88GmxEbq$jTPb zu=~B&im(~V_CyjOuu3x|9lVn9iBh#g*`AME^=~>81L9j^QxO{@f%vg_APNgOW7Ga* zNCeKzVpjxK;~5&sPsZWgL0$}mABsik&Zbz4FF9FE!{T982NpDojuhfNPVp>R9gm`6 z8H=NKzH~z58CYlMbK+NDX-8#o%IMIw_mR z(JJS>r^W4*NT0AK+Su6{$30yk0OJ7f!t}Kzd|&8T(vPc<~*J6uogn0}VYBb>_NXLda70NwafVH;Ias z&|KfC;co*Rdo(aC-rr6blaYHbzboXg@k~hE5?9vkxGR34f}}zOysFWMJUj5lmp)Rbii^%vkapkhMjLihCs=efwG@b7UwYS*t%9b{zOnSa~R`JK1l_ zjWBw>T~?zp7D-EAa&+bG`@pp`Fn~o%gRDHopqQ|pk&aMdmI7V6(vO>g$0ziilBpEF z!~66C1H_&VLFk!KZ-@I;qjM}{S^m$YQ#XtUpra-$ffh^VAVV0UtU9p zNcwZyO0>HoMN7fi8q>^7wnvTL9#4oFud$mova!$-$BU;U-Ot>}kzf80|10Y`f5d9# zrwc*A44>07Rr%Ucrc4^vg6f>O;egWwAHHx6nzWHRia75zp=%be`aNOYm#+%(y(2Sj z1IXfEdxNYIXd)qrWiK!6QJ*GG(D)r8Uu;4?__pGrY~bF0ElEDYjBi3#23}fK3CVBU zv;5Lp_;EixA9BnS{wuQRwZ<_A8BV7Q;?>LFYS9PdiazwXS_JNU%v{K@>7+@ijFO0- z;-9Vhx3HYpjljW!EL4vrYzH7!g5{4Pb@*|H`FokmG(Vv`lJ#;pe6R zC}yw(wP9Qa@%dtr7gf5ll~y3eY+Ca4{w!;pOCkE6IFI1jy_Zb*&hBC!}1>5qzYfg22IK zO7-5R$JJAFeD_6AtUuYZOZCI!X49v~J_8NjKR$3cm%_!gi)Jed9yzuwf3r*OBe#F3 zc->i};{By`*z~n3^~=Oa47iIa#o0AGcRj$&T(^^gv6#j4Z1{yCnnnGHWpOvj3eLT) zFniR~MNGii({g*lqSGlffxm@APz`7i!5*Q`;p}@0}LaNyBX zF)j-tvae}7b1-96MO`A^J%FU$hos#`Ubal2^>F$- zz5E3f1w`~{(y;Z8d(@_Eorr!k^P~?-@M31rPo@OAMz@~#sB5LN%&2S zNCR@1SEL63>Vwui*(z_|!)8FCdOhqy)XchkvJvxqqd0<91Nrqb>nq#~%tu8ao+|52 z&R3nW$3{Byjaf%WnT*|)>{&?R*tQ0fyG{Ed2%gg(klePfDb~_cjEzhiN_nprSWm)o z;^V^A4FT&mqq*94pk>p7DWhoG^)b15j`cCMkgJ%A<@IsQecNbgdy+w;YIqFuXcVN| z#$%h^NNn!og&MY@0U^Km2|(_ zNXpb)jE}H1;4RdK3!i=o96jM+oyJO;IZol3wuye-Io&Vf7V>F>&nMkSV z;+y!(VX2ih#*OBe~@wMsHFVfQe@d->91_RzmkvvT@*!2kT8}+T$V^n zfEMDe!><-+;<(>5#N#4t6rC7G7e34TsN2he$(6`BLzLP#)1E)iRIQRv zu-4R58hY(A^p2Mdko7~O)>ATD+D6~s8+bf&HycFu>}MgFodG54?Ea86@)u1dM5tNGYnM4CB`{T*Yxlz-@8Ev+oz%&D4{ zfxDj^K?df084`5id#!xEOS$m*nFSTkS0-Pt&;uSbasesYl(XA1cPg^hv?q~RN0&SI zA63kY-#C~AFS0WXH8s_`i>A-=jNWRzN=FPGmE25LG|(%J_o;5yydvwHeo(Oy%(Pnn zyk9j1sPCI@=Eg2&W2rMS_8MkbZ!GjEqqq>;$|o-+8~e{)8HDASL(7tehT4UqM56_@ z%oB%GP=#GCvVKcpH+&$v4V-&`PRz}@FSLD`y@wqgY&AN26&+va+Y?SbRi`Ln z`_q-S-AWRTx4&(l{F+lF7E2B;v9M*KZ?k6)cxlM za(O3XGmgBiV~0c4PEy*X6rurW5O()p0fisF0%vD{iM z&xnVh++KQfzBp2mR+vWMFkO10D)6RceYZDNK(z{`D5-1e&;+p#4ZW7)n2>2|nEXaz z@W^mOYNno31n3wk&cWK#v_W^mtWuY^&ZYJcrt$r9`?!&1ZHYFP>Vsr(I0? z)w#g-Tpy&v8j2f0xuwU%-v2@1c$z{g(e;R- zF#Tsqw$6e?2J!#aMwxppuob#8ku26I4#Ia26?qHBlZ^ap7Dr)DOj|Xp)NiRrveaBw zMZ^I86=r8~h%&)#wD|!4Iq4Sl?&45)D(uDGTJ3@krnMiudth9a=B9o$^?}8@f5%b5 zA?bVz3oMT>{(1pdAvI-p63VgI?;6EpJv;H_*dbC&`+D_)WwHSMnLEKQY(1;qkIm6N zPG%}sSW`*({ZHg&yB9|w07uB^Ps#Unn?u+M`1WsBqL_t|wyX@-A-ie#Ms#P^F{LA> zaN)Rlq7x8^SuVhO0KUvoCU{)_>F%)-tP;ee|I)gk6bCR z(D@fLQb15h>=-D9__kn~@a*tMQ^h$26imm95Cjq`(`C+6fVE6NIz7z=jMrVhqP9Ux z%4$y3aU96AP){59*L$LG$|vMAJ{tYB`z}E?JV`%jB=7Xr?%mGeXNfae+wy3hdOsBV z0A4Qr-T|+YiF)}%ff!#|x=atg{qM_iE>AYQxeMI&@OtYB$a>pw%BkKw*&|#v>e~tL ziyvzS#5P(fm6UWn|-$ft3O{6unnbNnS`;(b%@xv`hEKZsD7^_B%Bf-QSW-dY;l?{@eG1l~nX zIAW#1b?)vcVa1@$qOibR@cOjcQmn+MNSUa=G;DQQiDa(Sz6S!T7OT-L4tf_zBG?~+(6ued{OjHN4AopEZj_0FrgwScv%-xAU$511nJxmw&V6CF< z%sj!l&?$qpe`!@A;||cl)($*UqCzW4>j9;EWAS>C8Nrf-jVAagj7#k|(&zms-itdMjm|Gq^C zGQ2@3?|GAdsqtm?jtdUxP`P~>b|#ID^dNy2?~VP1s+L2m)4MGNsc|hs!vlp57c%zQ zPnH;+S6+NZa2bq>Co{PK!exEn0X^e+)@YL4EBwhvMuL~RbO=k*_b8Xxxtd*nDg4Zx zhcs4K<#SB>3e%u9cWD%GdysvM(FI+9=MmHn3H|wcK?6?laiH3}@wiJ5(7PvnIw1;C zL)OAjf1Y$^WaMo!p~)r5ICu5=VC}jltbQ^Aqm}Cw$fS0(<+mG{>weaVO%*|F=F8-# zqj&ayQjvpV2$xRe=Ii@F9*1UD_F$rh&^d*)eyj_*7)Jk#^A4kFeEgxyuG=<^YbR8@ zs(CoGvtW67{Mo)0gc3X0RP8@sA_fp#Rv`SCzk?*_1PS!rA-^dV#i0t!#2HiuD3d!` zLCDjoWS0x&Qz`ex930l(sk>!=R1o=q4j4+V<|X5i)$}{nJUKbF6N;_E)MW}dP?9D+ zqecr=h+qltZt-NtTedy3FQ+!y$HY98ytbI<4oWB>B*VJOjyT#VrOz{J3ZwRP`^fns z7Lg&$k;b6y3ex%-46EeoNH3^B7{j-dXCGw$d0ex|!FdCpk3xhqo=ro>@^ zu)?*~F4l34j+V2FafM3OA_x9j2QS~Bgdyo_6Z~|oPJmyzW~#UbrLDP5j|?ezJ30wG zFeqgT40bi&rqtV^t9^~#`W#|LiewTa`&Rbahm{ixTl!T-P+cp(Kfn^Tf#M0${rw}s z{iG!9IXNH>)*4i;e1)6V9%;=PsH=NTYe>3rrfYc z_MNP^c%7w)Md!>~=C+nH3)~6G=p13->|BtibC!HDwIW)l7OxAnesTBCj!s8jO!&?;-O#WLKJXq%hDR!HU2p&~$WflxB8p$FHG8M0 zVsUYK-;Oc1$$---ANyFnOIB|!jXO=tj4Z1ven*kQfep&3@h+=%JDF220Q{~29S}O2 z-exxI;`sv8=z0>d=Hgjevp(N%HUFV_KD)C2Pc^s!fC#|KiOJ4=3<$Ub72Joeg|9X& zjSX6b0Rg(jvB5K@R;=dq+SHg8EFj>i&qmVN2xN2`1WM2XMY(@n1*hxg#=oE_?Vw-%!}0er_+tW}{5L62E3x9bpZ# z7tQ(yTyRJig{0?p*8Y<$`GM!e^@zGG=6gRVe-%hvqai`-ydw0Qc!cY@Pe3AY1@o@JxhlH}NEJm2oY4r5-qy_-{eDB%mzJTC`@#KRs)afuQVX zJCl3b#>+J;MYcL?dBsLX{GAeJLH!yEY?Y-uTOx2mh~C3&pwuZ83t zdTOc&{PkQo=ipYLBACXiTGAbM0v=0N%nM5`$Q}nDgf;CgSK6o>q3lU)ahTYU8-F*) zG(C+*^o|(-NCEW8I3cMct75CT`y$&;-9W$+2pBT}`3ycWy+Di<5Mb2@G7EkJzkmQZ zP}j_-WIvGn4AdoU1kkiaVQ7SqJ_yW@+zXie_M^+sfE^U99z=T)A|_kn^+l0}=aBz* zepnEQ;2&Rj@I@EA?I&1f8rr(qKB9Xs=z5QrvKTW??~1z?e&!M=^O8H%la@pAnvS+- z3uh7IRBdy%P!)&~kT$Q3mJLfH-GvRV9mCz*DC9T*QK&vwOPcMb+xYUw2cYH38~AS{ z1W?>Wq8_jid`(GYl3LD`j9-vx+|ztW`wm9%mnfVgkYe+T%mL^JQXXIVW7Yc2uh`3r9ypzg^Nu(CO?8QDBrLlhkjUpw8qINH74HO9j{5Mp9l>Qt>cmQk1e#GzAq@scZ@(? zTBGej?6aG8?F^f`_fh*`S%4F4fq3{%#0<1PdL@*X>L`nr5_BC?h*p)Yi`djYw9YjH z-$gfc#$OOrDb-)#=zd7H4bUKMKf$CKxT5X(lLySd$EzeKM3#F09)KxpmOxxKB>Js7 zsO}}3)C(aW0TTPbaj#Qf40p<&N@SKC(@>`#%NZZ!)(q#ALm6CU@ww5Wk-GZ!I zt_h}XA!BB((A~`mBdSgA^1^#!#+^p7B@Z8rxzOD*s){F%_g-Y4rNJZ5`|yv(;_>!F z1};bU1qAlyJN|iV&%9Ve#QcR~9VMl&Ij9!O>BEsyWD_=Ph{RK2R5{LT#S*6}spNdh%Ks@Ra}ok>1juv6#AR z;`=YzY}ZY3Wa3C|M2$M>L^^3bL)g>AMep>A`QdrloB{Y12OwLMH2U&duqEPTAB(a6 z5(jnH@%om_Z>%L>&~1#`!p?{F9TK@&8gzronqr@w&sU9JOjur>$Rbo5g9BwV4R!7f zoO#fxdZ;VBPU&?$oG3BjO1hw{F~tS<3|?1yxzsF`4tyWs-kO*jcN9z-F640%2`1@S z4ne)x^YCuPAQp|^KYU%l^_1dXf)V0*2nz1t&DP7yD?40tP%@7GGHKy)K6>iU1rwFw z_OzU+d8Th228<>QaU4x$PCEbe9!#cngE@*hudn5H5nXLw-O4D@DrXXm+DfPMg5S!F zdOQmB>a;ty#fETwktmta%IU4INohPjrOs&Pehgx25tcr!52#IBkyZz*uR0iFNOgwe zcxbiE436Z{nju>l*?TkgNZ>YUFDxOUAt7BF)ilQ|auXhB)>Uy|Eg#F9zrx)Ic@la= z{c;h6$n{`vuF^_=el-i*v)~QWPWy~wX^3D4%2_9yVaR22C&c(iv^BmAKcJTFC1-Fn zgTBARQ9RBo0lSGn{UGFQW|E%dD#Jpr#j{eff30e`{Hqy>Ww>&EISg)ogG~%mhxEs^ zlM)W=4xVa>(I!?zUJ69;tFl8Sj{SHyyW||6xUwnB=&XLz<}%ywfJXfu%z;Xu1FdK} zE*TEjq15dhxniBDQWucs8uFXN?bVi{*W%hrmr`0;b#15mEvBed=sNX=+S!0Ba5QKA z*6r$nqQ4cB634dl%Y4oFCVaF%K3N1ARUk50?*ARF=@HY*CY416*~@H9xb#UGGh4&WFS_8J zG=61rhN33M#blH9G}q00+Hol{&j}kU^#`boor-M@&d`OBve^DCIZ+t5h}=yOYB zcDs|++L8oy&XT|~&}M@_oGTvhR08R5XaVOO1=C@0Wu6@p?bSHn)#SnFu;7GHRO`UK z#=F@9g(s7_Sa^FvES1<`QbxJ7Q6w?yE6$&X=R~Vy^yS(|$6aHiLI=G6{@KAyxqMyizqNG}TtXOL*@8Eq@hycGEo-6JE;H(8inIYFn-@uU6^l zsfFgxnc#SY7E(G1CbZIhvh?*y!DJ4zf;Dmz{piU(EcU5E<|US?(fsvvba*1uaoIV9 zW4H5C4Kd=;;}m9B!wY(Igu!U1|E%<_&4>@WxN#_*j9W;I8Dl7W zUTfqYL%BDtv>}k?Yw(m>Mt%f{-EpW(q6_Zq0H{i9F=9@#g>Ci-Tv%ORP< zDko=~Gq|m42PpL|tgx_MJ!N>pjIKIuDO<4XHhxiQSA2iLdLy2=4IjT!7oJentPCoG zKZLXkr@gD!^FqB{3G;jc|JnXTdu?R9bSJGSVlK~c26s~CrK;JkYZ4+V$8&Ij$fx)# zURx~HN%e9MU@N|_%piM(QTMgD5`)8Jwte&?lS)GlY!30x2Heu1=0#9sF3A~=O4oC? zqb8=@cQ^wl;t$7AnzdR&;ULNhx6V}(T)IhjDI0xT2~_3%Zl&O?Dza>*sb*+ReV1MaIW4Ja;S(p3 z|7ta3u0f7ugI<7$>7ucWLk$(3gB1MNELO*Hy5jzeyDyJaec@qWhQ8{H=SCMUPB@+) zQFa&K5-x!^@B8?}M_Ml-2{QXTWBAniMX|VNjjffu-?EbEi+|)`*HQsp`ZPkkzy*ur zA+D0tR>uqS0TSL0_kbq+-QhO_Zu}HjfKNRVf4aj1~41%n>B7X7T_e znX8k{CCW#@*39fgmC`@uYrx?w}{R*CxJflPRDjiL?KR1oq0dYQmX>O^^;>v%thQLvE# zn6ZRyQvx??#XWQmeNcvXnXq12=<7 ztYV7Zj8thkMU7*&WZlg5zZP^?Wo(Z|`0iQk5LTJ7At%m@=z%rcxV9k{QC=v;%t9)Z zQ$!=B=W%2v5OMHZ21dOiVWF3;1cDu?5Va#EERzW%R)`V9;gORpLMQx6*y1*Oa%#KA z*kj7<>0zWzq1VVsrKX%1wYJK6(`~0zS&<=rBKkEo*+Ve;sqXP=r>Se``(J7AsxW7S z2sYYL%+dwz@M2g8u=d9AhEM@%PGoQXT2Q>V5qf`3S{{izdmO)epFnoZeu3+Br{sCf zLm1AOY=Bq}Nr@pCA-a1e^j*AF*%q^y+?n5+nxqc-1y|#6l2aJCJ9SBaJlE$C%+?uS zMpQvoD2r{Yz=OiexWGi9UR~}&#RAD@M*Ho zlJuuT=Wm{nv@l4>0M7^-mbcH}CaTn*g_c@Ci0k;9n0;~An)=nczZCzx z1)KocBBp((T+DX?Y#3v9`32H*0YyX{Tc>q+iuczf9pizInvy&t%|Rpfxn$F_LvSe= zj*!bsz^iImiKmhzf=OSU#}K(UN1o*6R8h}Jd;m6H^M{9$S*C{#)3h+!Jx zhQMJ#{D4~qUyzM4>1Mz3&3l&90+Zwy7c*)!c(vQJ*$!)H3vDHKK1eE;nlNz`VLbI-yC!sMs1ghNII-Y zJx^2e^#N_}=MV+2g?b)-9t>1dyLB%d*8ngTRigEn#keUL5?y!P;;!yeKM5<3Z+;{l z;7msjZe{jR2x3PUyX{;gTwG?R<5tbG^WN{5Xj4Jdu{6JATt41?9=aKc%S}u>f1ZHx zbZMiXU>qKHYP%$#-GHPv1ubx(nH3s#p36BM@fuC~J)B&GSdC^uSe%doa0Ce8m6O8< zDqFwiKbf|mp@T_sOZC;g!a89DBMC(7Og#h_BJg0jDF#acdPTe{SlcUET2UMN&g zCV{_I-?M}i2yQ_3l<2Dy!Bgqew&+(Mfabe$#b%=MvXpteclh#FhXyz+G2W)Z?{>;5 zkB&~VR;=8{XJnTJ2tGbSxXF>s=KMdH=TUiw(_7ho>IfQ0<+0{rGf$ zcn>Pbdi`e)EfVXL70%E0b>(ZX4@lH6_|%4wh<<1jQ6~4WVU!()5117}lTI$W$dx zyGZQz`>rnEG6F^(S9DU#%~DzF)Mp-FM(R)4i(hUICL*yI%2|+3*$ke}RCI-Kyz$WG zh0p_bqb1Y0Ypy(_+=_0BLH77ec!b6)O-SuX51x_Ud4}v5)E%V07wtECKo-YLSQp+Q z)*M2RNycJ7y*jDyJ+x9WX0@@NkneOylXg~fP1c#nsSR3MUu7E))LivTGlT<`dIV^!VUTgw7 zFDPM8Q9#*XZjuW ze#QTlxs#Ar$GebFFOOBK?0tdfA!W?6C+5t!l*;UJ#2b?0|vqcQaZKVcm-AfuzVi`Ks54jG!4|VpQt>r96La_ zHoj0SXqMK*E6X^F*oaHn?Pq4|i_oxa+;Nh1!K{bJ30lE;>)M>@Lu-9~F6V2~f14P! zZ8i~I-BCGx)}H74@IB#T%fL>Jb#Xxq8VbQ`K`Cq|J%`#Bk6p!RnG0*6Lhwo{9Pf%S z0|YdUomj_UnF7FG%h6Xs8QotCVvZi~30C*-*v6y>8X4cpSyzqI3sZI!R*{i zo6)xCr&pnE-HU-xLnZKVFJMpIYbE-5&;%aN6h05R`zpaJ0iTDb*VXrbwXfDvNgVo* zi>1!`f*nqfA2UE&u#b547r#H@A2y{(tKhEhM79EA23MwwAK;M4(7w$3!QZE!N~c!2 z#tO~IVHa5V5iJAK9psdS+l$zGxFK0{sxoKAFK#?j!b6`QCK=ZNiAj6=3qE>mQP9v~HvZ>iq07@{?`10Vuih=@SN?*~vi=Z~;6!8<1T3k5731d0oAc z08oCBzA$hG@)_L@m;9uw^&hwS03Zd~Kj+7nOxE&eBxl8$CV^A?5F15k-!EgUlQ|o! z7e}U%aKFqhlt`{JxO9-{2q#8@av3rcf^m~GGJ9>+4sWxoi6O|1Ptn$Gsy&X4^yGET zv?Ea#DW>o8Xhuq1f9>SeF>Q!ctl+j)tV+tdjV+az5ID5v;p{r`vkji50istvd!Bz? zBVe4vrqfyJR4`%_z1ii%)xKfqlF(J2psrp9ec(qfB|ji8Q#hF zzQ+Ln*r9Z-u-tO`inNfW$+Wp^7*8X{Xn_|c-H>oYIv=$V$ClZLz)Cc0){^_w_1wF<}Hw)L81=7ZH^ce8#obb0wDF*G7%I zE$=Hd62|IMm!y)%)|FFh#B1q{2i^zqbV-O2##)TFvG@dgcQ!<%}6dWB5Yu@(i&-P#P)IjW6eu=sZ_7R;W~ zFP1aBX5>|iU~_u)DbzfIl<~5fnHPsjWm-99g&lMcT<6|Bjj<%JOGenSvFIO@EYsU$ zl*KR9=GXMr7FesLZO$29eq^S%8x@<+L3qDfeNS|4aN7%ddIx<3sX_49^O4}pq)?_@ z)>hH9(=^CLW39V(2iJY&`x-X&&)BFXO0oAn&|u|ysQQX!XTM6W`jDkOdgZb5zH~!b z3u^TZ~64{Y`yx3t^{ui{+gQN0di4q_&4d$#OaHc+0b1R|JM*qEihW z+{T_SaGGj0>(p>7DMk%Q9vCiFjw?{Za#zD?eax^XQY*z@^RGiKFo;%BRL}qT9@mi- zQBkk+BJNQ3s&ThKD^^N>i>5PfaBScJQn#y`N*1YdQ~o@WyLNRC5q=DAaAcqqra7s` z)6Ix-mG*V5|MJZBs+Q2=4oj_8wLx#f{T8{e(v8||8O<3xD^qt7`5&Hf4H=L59dQ8EHFc^w=b>!|S7Uy{J#}1*?}FM7oX|*( z()+NoRq?x0Rmz@0p9nreH@%JL-xDo8J?!tTUu7QbYwdr}a&0kthhaN}+>aj#*sY7r zE()#On;V1{-u7Cgnp*tsaDZk)esHEfvyIe1XeoL?ziErQ5Up!jqM$BTF)T0n*&5i% zcnLtv{6)zXsdbuVb+@bG{It#sXR5*E%wicAj&@T-bl`FDII^WGzWQSd zxsZTBVqMoxH;GlosBu?>gBO5J?G4UTpzN+Dg35K79y$YHAb0QnYH&DkC9sfEUm#?O zFlaRb%TvHdyT;KXhx?MizP*{ENcn-Xyl4O2y;J?$yfC9-A``^zkNJ+H|}sc32HRzn-a(1W@jo}Keoihya6&S>JI9m;;5BYiNB+SY`IqRE9$Y^R~poj z+&8|9_Z${HulNl&_XiJ`?JW%oF3n@L9sQDL#r8G4wZe0a3mZA%#Lv8GQ;OuJ{Dp!; zYGC!G>5X2b4Wt+P8rvt|uWs-n>)e0-VbJyX-bpv5QH)n|CXdFM{V+e=ljzJh;9?eb z;R_a)=-FVzp;@QWHQ^X((!3lP1W)G}*;N_vD8Hj$-sC-VocWRgd1E8Xv&EENaO=Ip zz9+e}z$jIg%p9r$UDzQ=?p4qgbBp&lHGeGRApdlX07gK$zbmk3Xk3gi8>`_)3U|8@ z=UT~2KHaI2-ESB=mUdq|K_9U+L>Bdzx7m;YS8O?WmVhmuE1JhRdq4=r%Z2$l0b4sidwIv{0bTHFYt(fWyJX!lCk zop&fkCiND3s_t~y2t04R>a+%W1wtGv6l^J0FevIcIWC)EvpSjVV1m;q&i=|YvBib1 zVK76}k|8qb_SMj8+1D~CjY;VN+wksJX0Um{+NGN}^>ce?mLzjPV_;qe_DaXgskkz( z@kI9HSuxh$*p5nLZJ`bx{hl~CuknP*)*aElpINnwbA@w19j!HD>j18Fsl^f>=f=)1 zxwXl)R<4ixT?Z#0gaY}+EAtLk{Uc974L8Wpu$c%77c_4={m2D{2AOz{-dQZB)BWR<5S^`G>*?$!#zB3-1U?`GRA*7%B>8ed%i$0Fdyod7R za}flt5ClO#{NLCC4L1}HUz;TbyJ4b%G?lmmPL;IZ>Dt!BR-~|kQihh_EcIU)zxi3! zEsB8i%|lp_?ESGH=MZ|LEq#rA4b_UREWvbhfi?J1^}CR7Y;s0>O;KA}TYK%d@I2)2 z+g2mn3JH_lNwo8W+t_0VDWfc(l!NkRM(vre=gJz{7eznG{$?x2Yu#D4`X^@2B=KI{ zi~dl3eQ(*t)k4!!=DvENQnH{{d?!$>m~(=Y?YR`LLu}?!r7A25Dg>ESJ@SK%kGJ3l~&w4;R{uP9u!(paF~%Z zMNMg#gH{H_&T#ljRHX#r+%GL@6i(WAOjdc2jf1hNc2c|*ILlTEosY?|dyZYV-v^BS z8-Lf#hQrNdguly#sgSu-l9`zH(NYa2CmZbB$Mg1bYv9?bL?OrBB3hJB|3c8KoBN5- zZ-9&Z64v4Z)|2a+nc4AHuJ_||uejBdeV^QxWP{6Z0S?z&;#L1dVVq{x$jf2_6 zn=_a5q-jBX+*f{B@+@RvAmawTeEc`cE<*3{h$n|_*LC2Of5qv-mqMvlTG7QGDLaAvS!`#*Xh9l%0N~p%~IOC7fl?mS$CFQ*jXj6vO)S$`T4;LoM z_gJWM`!z;O>h}Y}g!6ytuH;?GYV9|Jd_)UMqdTtL@?_j(+5QT6#T9(YC_8)*Yz1E; zH@ZZ><9?m@vKj~iv{DhnbAmcJ)eF)#c&dbhoN47}8O{wqHT(f}TS~YB@o4$m%F!reG<~0@m6uq}R?7Nt*(UgF{117(`wNw6rW7nq^U^r zF)dg^bOk`zV_w{uvwy`7*PZqSaZQv!TvJE$xR)yj+I%dsDt$Uf^w}QquX6 zd(RM!$f#re13JeL7y1eN+we!ygu4|BZRH7rI-P+7xa45KEAMm1kLwgrEsp9&Ub9-b z%A}^OlEVrSuxT`Fw;xN*hr^{)++z$ZZi#ueyF1n943T)|Qm1S6&#{O3KhrI&I_I2P zJb0(w=j}Ym(`EKzyccSSx+coT)OZ`da%enR5+{sl@=_uXEn^)S^63>i1jAI?t>aC%kTvGNS{BwP|YjzdUlGKeVe!cmia_`ZFU9a zajj%gLAlReAhWNDdXqkg=1Jz>tFuw)!M}bX#lBt=<8H3{&=?V+_T6FtdGbwW{X8+E zpv%f&meQju{C*6oU=Izs){R4>MG`9AvsA;P!CbH(8&3xO1dzQW)L ztYRj5XV4lL(d?^W->I1wTQqU6_U~J^Aj4XOdOhnpny@yi5|Zwjbd6Cru~C zl9kktc(owXiCQpWTUe68LnP##6+6L3WYJFS{wdx?kSrf^{PyV8ySr>d>Jr0zFbxzw z2WW0SjPIfXoK;D#U&%gPG9OV?uREQ8xW&HOK$0XP_7KZ-I;Mq(!=Gb~Y(nn4t8Bip zbmd+Bt39uj7TqY~e`>u%Vx85&3FJ=f733y zCgjyRhq0ZH$i~+6j!K*t{LM~G0T#+Uca~q;zw~dtEL6aA8`n*Fn8JMNt5YAJoT`mgpt8q7Y8^IjwnGsaXOHMY(Lq@ zGC3NW5mY*A&fT~|7{6HwX_U|$I(i~eIx3Oyy?qXxDQG=z@Q_e75~hN%mUweRGulk;`O@&=<0gw<^Mv?2bB_tc z-$_{p(KieQ$kds3vk=;mFpE6lYSNj0wKt}2D=)(1$}KPOW1SGnirm-AXgR#P_abe` zD>9R3ZcxMYRfJQ^f$Vmkl@V-E3niK%f6x=rh9>3dKO;WH_CiSB+ze{Av@K;-5*ROI zykTrhoZ+YjO5espbW%M^6iI@fncv*CskhN;d>Fi!9dXso*rZrQtkJ zcZxajvQ|Ap3CvG}h6e4< zDiXeC2+kOnt~K>k4`gBm?0^5G z*&m^y-+FQvX@uH%Z|4G-vDHPAow+TZO!sP&ce|WP0xN7{CVK-roqnuI%vwI)ejAd)Vz(xYFPEJK?)ZRDlJ%h7n z+HU9rs%sF@o7L-E(3tbD(@$M&?o*YkagY=h`RrjZl|(+`7FTjRi`tG zZSCK`rR9#b6H-`FJ@Qr!Q!sl`qync zLmVUYCZ2+jT=HC4iAFjBhz+?k{^csn!KFKtXY zuCZuq>(AHDu}67xIs_l3{+;$GNB{Wt4A!DGMcH;6CgGZSP6Ai=fhh8|=oKlpUDi3c zX664TjJwbN6YDAXkGt>FzlR2-y8qJvn0DcxSkFcv3g`c$`R~dg?X%s=9Ne2`Y4Hjv z{?Yx8Q#p=Z>-0bEd*Oks5I{*!pt20W;F%!X?tKODlrwP6?Z<(uI{ytKUHSAy0x!;~ z1jo)|)p_2kuiSP+y%DXk-}69vmG{%R`YqW%>UZmZ?rugi4cq6Ns!Fd<&{QyR2$rd4 zMy}>oSbTN4zB--R&;Y$EP|pP%-$!&uPt7(jrLLp?$c&Pe_am92hGyjYVWdVBJtycD@^vw??+#zbGV`IbXw*!%%EFQy01Q2_O>uhxa{A&02f@%IDI z~Y<4NW;)S^)Pr`;7?dF80iKd2hgh@&$TEYFJsVSCNX7YK6LjS5V+5sc3J$FeO^9MoAN+GD%l_^&s~#8M5& zDkGbWRV2hBKb&}V|Cy(#kDji~pM-6l?<`Mb#JJUT4y;gCU8-D2zH9UsK1gx*p9An(ebjED=_hnoID$s(%CjmPAzw{NPMETvC!eNcIGy`^Zw)WTmkX76K)nEZRgjw zN_UhQoOWdPZoV#zM_Aph)Fa!4RhHI0DgtuAeJFP4=Yt7OUhr4?=HCxyt9GfT%t~-~ z;e#h+K89l|<=Eo*EiuzkxL>v8cc@}%E@^Ab(Wr9DUkKj}t_eNYy$;F}*MyOg2@R*Z zOrobG-0x4Fy__+k+R~uBKit+OpEIcPvy&2)j+iJShv}3#YlLIwf3@89#l{|on%^d4 zI|xggy-8>vPeq>>2YkrRb~*kezfJMd8KR}9Vp5TQ{#Ir_Nl7xFh2S7;{g6){u@b>7c_ z8=HS!-03?*g%y{Vvc*~8O_9ZQdFZ2v9CWJIXB&|eahPhYUCepNkwv-P4e8PHX9e+1 zbaQuSh@xAMt5{>)#jWnNWjrpH*+JCah5N+$%acenUq}z9nox89Kzxys5g}Q^$y3xH zWdeJwUn)nquqv`uK_Mi4?Tz8xE7@g2Ihg~AT zYTaX|#O9X7(Q0*_?jQ}>Uu=3q7Z&KK+iUduSoqPBPf$v9`cF_Q7SPSx0EZyWW~8wZ zlbl*U1)|=*8xYTe8Ms5{xnS!p_>jG&9#=NXp11sIWbVj~xdzUC4erEXnvZhlActpA z)}T%JR@ps_nl~ndt^pIGzm|FrsAi}9P{<L8UR z261nruU31y`uVE0r_@g@*)f)sL!H}JEYT@$*{(&n1tsH$*poqcmJ<`+7sXYFWKa&U z6p!7n^6teh4~wuTEuPs>a4q_yc)N}?W5kJgk2uLRA4i0akqwJWscW(yDp}-8*nT_W~&*S-LU8=7vo(`&>umnoytr zPQRjn4pm!ehJ{t1n_5Th7|bS8auHnLOZ}~003mo{qN(Q22Y)BoYd;19t9aI2R#Vb% zed^_hL6ypyeU7$;Jpr=|*6~3zbK#I!f(PK<>1y_{O26-?JG?FKeC7Rg{`QrhjR(Fv zv3!8&HJM5>E7?a(J&sd&t2A*@NUVCE0y`W{@+lJs?OgI;PDUw9yPI8`Y5jwOa;ANa zK}nE18k7r00GWcjW9k?Kb@RMdq5K~*^$d7YoVaz(Td@nWf~(bx(AmkO9F~&oW8`ld zg4RxDXsMyS+jlvRSYf~SF-6tC+)$a{(_vZAqR?7UoC~Efj5>{vDVqgJX-~%9hqN&f z*FzL-C~J7dC%WHm<3Bq?j!a$q>-@Y(?H?^u%Bz2`F^zBopzJ(h4!~4e#fVw>S!i~w z#|+OOpQfrpIi0iSem7%Q-w3a2XB2;#3*JJH`ZGRdmR3Xf)RvLT3bMk>&L#tj<~2;t zZ0t2m-Pqw7O2!(`0oob`u?#RdMK?8XQxRZ8iUe97m+? zy6o$=xfeaIx=9H=ktb-n-*v=xg$cp@mmrp(+~~jqFbQkuB=Fj-Mk%iDLCU#K`(I?^7LZ&D&>YB4WtR3^;T%A`Cyxi ziBAP%ruKGc1u#Ri&3%v?F7pW6soJB(B(>H%xv$e0C)*oIvX}GBsxOS#&)%~u4c`~) z7aa(e3zm7;e%POy)W1m_pQ&=Fu2vx6m7EFI<3;slFUu6X6*WW^|1p30{L%ue2#-X8 z{O{&4ZF`8O{3BwqGKRVXN9mNZZgNO3B;%1GvjWxC4>)B=I+r{{R&*>eUkL$Fe?w!I zgqG8m6S|W3M0syfZ(+70=kfY#s9$2>H258vmKy`j_jj&qJ0oNb74gKvaOSbn3+#=D z80IrrbHCyHjv(UMO=dK;aQ>o9E*vSCr%>olacE}&Fb2T$ZJN$#>vXwj>D}tJOT;QQ zDx(4p=B{w}(r}t|e&Iq-SPef(70JqNd=rLnwGLmu89&6UV3~ArUL<=s3#{kOH^~DP z^ETBPMcMaMN~vXOv90T=q(_@|{Ch+<+#svdVADy}Zpj&_WEoFAnUiuj51!y&CmvHl zo=-T+RmrGC405lxRaPWs_6*ewJM8CSsA=gVi#MeTmO{dqzu_*&{LR#AIR~@~Wss>8 zwDqtjagK0-*iW>F@qSoG_YC9N9lmpeB4oT3w39edA7yzNO{R)q8vj_$p~bhwndF?& z>hX?B_~myFZhHa9R1x>>$?rN^qoUun(n0K+lU>{zUP4RXBH(Cu?V#^O^(`_3y`ZpN z3PK9w4TWB3vpQ;fvUKna-Z{S3Io=6cSavFpetXLu7L>RdD*f&<*EQ-&){**T%U{Sy z{^Hu_mG;)9nca!F@(2G})QDeqX3_-&8*kQP9)vygr#Asyu@srfZJ4UT)WF!h|OBQ5)(>WgjzUuu2Z%hmhI?o+T{kV5y=u1g6@CN)MT}- z%AqHy9h~1`Qoi=w^oX69Gbz%bUZY=UQiH5M$(-evDPeOfs8FWTtD6f+kV*tnvbn~w zKnt(1k7B-PuK4-4*Kw%TM?+P^)=%S-c0=vdPXz7K;Lfx z=U#y`ubm9Hf2>v=#OO_Q#oL;`x>=VHz{$5L;X>CD9*;P(h=kZx4n$ei-RPN<=CQui zSZI!488;O<7U48X3|B(0q1Wgqw03Ce1W0l1g$wYqsPWwRtG?sN4x~A%c7&0xolg0v z<9l$Buj#f72@x~MHUEavdbW5@%#2qq0VU>SJ7_3-d%d#AiDDzI4PnUnIQCh%i|sDI zi17|tm2`_lJ|N2dushZq?2q?T#d?U|!G1SpA|ptu9}rZx)iR#kL9ieQc9fdhS;P)m z0-uBs6lM48u;R@ku6k9IEuCf5U|1XER?XX~*{9npa>W`4Athd@u4=_Tc1& zvx-Oogmc8+J0{<`u#Y!e*D+zulQI~se6N5mg`>M-0CscQX~e!Z zzi{sl^kh4Ds|(ZMR(J9Me6)+vVPA}wZX6w}?YAb^%Rp~E$y}Dz4-OjiO6DNTDH`Vo zPnTB>W}Q77x{=N*n!0$wxw5|Pgs(WG+Zw1D0aigfu6O_Pi=h>1YuElK!oX|ov;YqD z>z53z68vYx6%Y!3Y4djh3E9YY3Kh7527dprxk(j?{7~q<#edS7#Z4A|!}PvNbpW`(;+M-Ky<26!c?`@&2ogyPlSabSsVmvs) zi|cRhTG`^ga{E4xr z)mDI<=~0riesV_WHz%l{;Dtb!DVlqA*yviR&yBHtg|xY=Dp+kLcE) z;Rk=;%@nx3E8!ozGWVRBnfQ(&A*Y_5kr+1@NWx#eP6qJ3YCw+0lsTufYf=-UkytUa@L|-1%szg zeg$1OE4u&GZM@M;ymMj(Y`yZ&{3&jHWmqfHba4MH%E;Lov#Rr1gYi>A?Rr1}4Tv@W#2T{2Y9;^$(SVeM&*F{xKtv1>0scR= z9$SqXT^lz(9bEb&8Q5n3O(8sYL=N2k@!!;CVlUbJa^D8@?EjUzObCA$5;k-rLw?{r zZsWyqf)mJBxF%D}jeuT!;>Idln^RV+9=n%*{=8)rJH&2YZv9b8lhKCO5L-h5KBwP~ zWz1iN6!6v*>P~QD#*MACK~Gz|eV>J6mwFty`u(5cjI8tjxUfEpGiLucL=Ac^TC?Jx zWahQQz*TS{wc~#ZG3MjgjQ|CTKkGIAQ|GZ7&}j$5x7Oe&_(5xa%o-Wg;@PYXJO!P@ z|KY;2Qf1q1$o)TESQG!_Tl-%wEH0o{y#Gm8Ci%w`_nF0P@jsq8Q6OrkqZU97hi4(nK2AmZ#A=KJDWX%CA3{5L}(1!YWY(TXU4APnj%gC8i zI^w_sCb@>XkrflO=Js>O5tm-gOg(1c7#H4cE=A~b5bH$?5?_@|VRZ(;gVyJ$e13W^ zKbC73-5emX`fW@)B(<`c@-s4$()Na#jSNt+U(j1#2%MdKGH|A(A~$LSxmF^9__3+g z_@;UmAlJ$#o)(D5SpcGzfHO8pd&SQv%lM|`l$D64>OU)fCH8`5x!lGoV(?FOlBtG2 zPiC_m^|8!*7cv!4&QeixZmXK>q=O7m3h5$AP7wwLmVENzUVDe>jrXlH??%iyTPlxQ zXrD^qlZ)qriY)%d8G3rb6^y$Wry7|Hij+p$fecJ29)!`3&L15_J}d()$QceR`hK)j z(2C%?c5vOjcg6r-b)f)HNCvJMF;A|vUw#(u0Lagxg!b#-Qm<*Hh?$yr^t4*%dEU&wT(1TTvJjA|l+PkT zly&PK1{GL4-+6-NSUW#Ga55?#KVesgQ!a{A&04Kp54B?rujS@6C+LxDI&9!KZ**Zi ztf37^Wgp?o0MtI~$^^V3f^2S3?ULK!mQTlZn_6{K2ZlQeWFC@u7G&SLU~N>^I8K*t zn_iKq;m#qAmZ~CYoxa&Q?j}T;tP6r)GDwCjUpR!*Tzyq1?tYJrl!G^vQA@QrtEd|+ zvmAXVYQQMMB88-_L7b+x*(a^}F|guaWGjBjD{vt$8FiqRJkMO3r;4OaxRObWCTT3+4g!{9=#jhRG48Iy?zEYafrJXwNonxHyW7Ir|rqn+4{xZ6* zUlaxoGS=32b?C_n0Wp)gKd+CoVHt~r2`|Apq%Lu8lJj~l5ypF4Wps61DQ+}{tT+mK zP1llg&3|h(fmeXswhNWg6x0$^)ErW_J%-*8jeiEpe*yK=0yK*KXWz@K`MkkO(DwCK z(&w8eWX|7d(nSUG@+4Y82nysi(`Z`3*cnn?|6XOzN*TOG9fe!|`!DVpJR$^n-U@6Z z*JS#!55U$sPbY2NAYyg2B?z^^&uo|ISg=9+a&FUv~3$I(eHYe zuC3P8)hgeyc7I~B6baHYc6EKn;1HRRH_napo5A4*d2O8Rpp@j?&20!sL0pBM#m^eJ zcEyk!51m2kcN~ht4slJqYv-fXsFDS75s7NKOy^bc4*6hsQ$M~-0TqO>2&N2DgMw&x zQ3m%Kppe9RfoeB-@<+h&(AwkzX9A0{Nycf;nPt&xcq>vGwrY*r+r;t5x*hRDke;)bSGIs+p!Iuivtu1Qn@#bU)*iM z^$uQnE?RkWO&n!4jbK`)!M8h1#JR8+Rk^D-#$gHudp4e(RPg6IzSW9!~$XV7RZ74)|zNcTKoa7gn&wXynj+E~6@M<))6wsF9wr zVmNUp#+kHgC031w%Gl-5cO5t&b?Lu)^ zYJ)so$AdrFN6?bdDCO{HQt$e5ytgY;v84P)dHz*b$=U3FAjISEKD+~;{ve~(29`#< zlo8qxj(OYCv!qrsaXWjK#-&wXg5kIAyk=?pT3pR@#aaXQ8P99dW`;4^eGzxdTC+y@ z=7Wp5#*>q^E*nh8fih=X4$R1<%`_Ivb2VP)Cagt37~J@~z?%pIqZ>U4JvTGA`#$Rg zi2-IHTL8f6wf+MCm0Py_Z-g1p{**kYTGz3#fqA@5A$$dv+( z9M`8n`X`6i91wcT0peEv1(gAzQj1Sb|5EqK;>7%K%a`)0L;xj&(;NT%<%0WIvC{iIblK}Q=!`jN)id?7D)fuF8qTTUbTsm^nJpcljFiY zQFq*}yNVLZ_ZPV(xskl#T+TZD4B?`AfFE$Rq)7CY7J?bE+HpVFZ}I%>VFO}(=+PVU zpZ9yk5-kgyknO9@P69$T8{;DXcUs+J?G#JNEFuOdf*xt%uR&N!B63p@mq;GWnSTo} zhd%%ke6h^5F!BDU9D*%NmbK)aAN!UqKGhZ^IfZ4$t`#Rj6nuJVrhp8qKQT+F1I}ZA zL!Qgyj4@d+94>i|om#mdSe@JHHX4CTsT9C!eI|`17yAr$%b%B?(W4cUyR!W&$B6lQ!^+R46hx5)VXWcXEq>(b)hKK2ZJ<&q z9h$ZXM>F5iiz~0&#?={IWpgs7gC`U0LTz6#3E!ni#>c{R1VO@9ECy!kKK{^z1<@By zyvlTLZ%f9?v$c5ZCHs^gTGuOPk23fZ>N+zm6dFVhP$1MuDih!>YBKflL<}2DFgKa= z1*R%gR!$|wW0CU(HlJW=@mR$t_}%I?D|Gqsp-CsFUcR2u3`K>pFd%=>Od}P`e1`e$ zcdFB0PkO1Kd8VGfwn*g4W)TXQ6mJ#`T{f%F&OEt*RSmbcahi3svXQy{S0}%_LknGk zW7^|(`%T80T{aN={2>&S?Eu666rB~;KGGRUSL-aQUS`ar$!%yYeOTyAFhfIL{!fv4f`FSYSSZ{nhZ$OJKDEst$E z4~rQ?X;ty=4XxM2wI$iJBKO<{2#jHj%RL8J>663^9HR6?$?nB`QJv!)2WOs$31RFV zL=`0QvWL{3zJMf$&}CVNU`W~O2ao|ec_zAxg{w4%=7}L06faF7pEFQ{kFLG_iOQ%g z?OfnJ*6lxcli8pAzPl-mRyze7{6>L%&FCXXURfQc82PXn4^=#oL7t=A*2%D8-w--8{sq zl#7LeTF>Q$UWCPSnQuw|qn9VW!u!zE zw0_1b(f9=*+e-Fw=jHshu_X13bC0(kyg>8p1~Wg^cO@O?PI<-tH9KJRW{*(A6%LFC*M61rQ2=+wKnw z(rr{|v{AG{X|`%z*Jtui{ndWvugPz$%EbdZ-so+!;?&*+cd+uIWzDtIFvO?nWN|tz z;wjQ73zWFq`fleA!4|XfbyWyp4V+kXN$<}4rw&@d1Cd}rBo=TeHifKy2XcD?31=Wc z#08L(D=>Ai{8JPOhzJ5w9f8P`ztX$Lz`+V6p5X$B8$XFAKq4HFhyx@f0tb2zZ~)J9 zj|OBw1dcBNVm1QcKmZO5;GBNq?EYU(Aao9z{?hzsEB*gAiJ`iRl**Iy#I(UQ5d>im z-XQw=KZX@D*^6A?XNFuiYG3WSHMR&Vw%1o)nDG%x zEB~>HHUF}Sb8VUX!k;$r#6k7bCJw8(*S{5B|ECRvQ!&sQP5#r}q2qsh3pVUvHr7}j z1z+aPk5&3f)_DJ8tayNuK!auV8GTcZW4AI5*W3;?S{eV-r$O`|llpIa#sxHBjzE$q zko0*@AE33(1xhWzH4Fbwik{9tDSDqSjen=;0d*z-!OsF|DnRP=KQTKv|2RB8JsS(a zY5&7`i>IB1$HlAes?KMi0+^_PyT8DHeytsIWaI$Qt@R}CJw&$<=bg~TAB!iX%Hj!# z-{O7~5pv;lQmFf(P`NCCxty(m>_WO{;SvW8DR!JAi3wmM)j@C!ij4e4W@6$9&?=OE}Dp*?*S*atiZ6|G%UTzR?I06{SoB)Jm zMyzT@R^rE;23V=_TGx(6vR%vN{yO%HuhfYQ!O^^FviuQTdw%d5Mwv_5UgacI_eWU5jXwFF+jBLa4kANP7GYF6-7o9JHawLKTc zGAI^Bhi>*>F4m}m=F-6zc9)PK{ntvqwe8tADedVm94ArD^6+op08coa2aQP2ZTTCv z4uMy2oC(wu^6Ev^6RO7SBU;Lr;iD)_%xO0TM%W(fi(I941;VGP7?^mow{zcU^+N1e zqK5M|tEWIkb1~uElt31BE6tEZ@Jck3U*1tW4+X#1p4`Nym9m##Ejkp5+@`wN@Hr{T zsqpVvXj@9-mEiZwUfLh=GzeZ+jKkX8S&8*f6`@<)#T?5;nAC^Eq;nUL<7fBR_A?hH zS||_3W`(-rT$ACIIH1GkQ1wTq4J&3-^#T91$hAkQO$x8B23w1;JQnc=A{KR){<20usoH$jryx;+H1lvFLL1I4>JH9|sj&pJhSEjskX zB6+SS!96-N=qj)3@YP%+)7DUwda_V}C5AgUOh7yG+F~>-aBk{Y?rEL3phL};G*QVy zgtsJ2)YW>dtns7VT~fL1s`ZV`r6pt+HbbzYxBtqE^<#dR`Wu~kHIuw@nGMA~-ZdD3e0BpPfD2b;4@&W7qU4LhkhOKMorj9neqJu0@D&YT@Kxbl!R@SJJ|6qP;rG%;?)G){kj-CmcxJ2+OtS6CQ| zahJF#EAQmbe&I=}aQlHFzMp%E!kwt*K;v4*+G9O91J_P|0mHXtGRfDKgf#M;ffQ+w z9%)(T`wsE>8ZGpKC9(f+U)AoYr$P^8rDd{U4F#T z{__IL?Xs1KHm+Ki!A@BBhk4+O!R7gs#o$w-&eTt>+_hkb2}o{|tVLrNp@)H@Y4sI`gA1&MfJU|SIP7lilGFOp8OqR`pXb@ zXKvE%0UhU!Mz5L=)El*>qn8bz#S65AXIVAxh7-ES5pJ^RH2I9%86i0A7P-L|3QDh% zed6m49NBwHPzi~Q7}J*EKGTCbwB|_8b4QpqwrWc0b{CR`p~ry^!#UF?y#W!ReHqz9 zARafwmA%2?vROEFch^rRO8L<`fZk4vRX(+-0ZWOhCMp7nZn`u*K}OiKZ^|)}hiBrD zQ*?idfjigzIwL0G?;e)aT$`UKNyPFVmNxVbmO@L=8J6mJjH?6eL=&g$#Gr%?=ES3r zmg^tPChZJcVLfg^iHB%zzlokou?(kFP6+CnGYO;mKCw^_h4N@hd3?Uik_0Q&QEQS@ z{_zjUC;9_qLGF)$(%Zu9!vXb!T)(u%hm+8|s`Vp&11~98JO7f^{Ig@@Mq|xvw0o8D zh62)?X$D)Bj$R({XJNX|A3`d=USep0Bmrq&Jrafn)V;*ZL^4JPMUEMgUTQ+HzM0?gbDwDIQz?}IJPZp7)?Te;1=8=xCM6z?hcK+ySs%D z+}$C#LvV-S?lcaKySwu>d+&4hdB6LPd&jsxX4P7A&AFlbZ)LZbW=NOb~p{Nm~|zS@Lr^N=UZZ+3X7f<3*e4oX-mVM90>&*@ z`6wf)q@yt>rvej%jV&d`noCRvsf!ThaL}{N7y_VXLfE{=K>bu-V(Pdh@VdX?+>uUC zvib(qpyj8C)o~vW6Hx$9- zm0X+;NNCahcuqvlUZN(fdijd-1vr;InsWaHvEL-eRXUP0H7PP)DBt93UshOik=e=S zCYH{yG@CQAIF%r#h5$t6%7Pgk7xpC>52i<|HNDGLoaD+tc-SFil6}lBk@LA1V|TSm zMf4xa@MX!TQGMxbzNp-72pQ6RG(S$6L_Dp!l~JnPzLi#?Lu}BLbjbDins*-l#AnjB!N~Tvp zD~Wx7rYe;v;yXJJs-6jtt10Pjtmd$rU88Btd`tReE1&{tH8J;%v5fFk?Qn*HKd(b< zGqm4&vT5ROci^dAgqxs7RCNI8wTX0i4e7y)TAp>g*JusFaxCxdxxIK(CpA$ua4hUm z?xw+5XjvU^P>C*5xi23%C*<_q0ilos&a`haq z0>^26lQiIv)uX~cX-UH7Dgpcf`Ju?FM}^q%vJf%0?xvL?u;U!#rM;K2T6@~u77)>| zk~VKRZ-7}ik$MB+d|tB*QRye!5CrAq@qwB^s1g-oPNu1u_lMTK>jzW9;4Y^|3&}Bt zVkA16QQ*@_$}J4NDmJyirg^oUs&bz713?q~(AdM3$N6xDYEejk!`^pkbM}EvPjhRt zuP|0CZiGg<-r+Zk{w)eUzftDJ8jTx{AHF9})^GKC&#l2$VJxWX1b^Y8ytGhs`h=Yx zisaCC=d@l|%5wZ6)Zr@jrYGm(cO|a@p^|9R_ZFGQM$O-yJegiW)sQ&2fPrn610<3* z1(pX^Gd*dv-1wiQ1gvGpSID)cLT;Oe-zqD78d1Vqs0;jjDlR6bp5s-}st@$~Ig*|e zwmTIBpieP$)bYD676|cRo{P&O2D7th;BJ}`!r1jD^~(z)1YEWs-fQN>cCRwil}7eg z;Dt)GOL1sfi)ZpCLdxu$-Tt)5VUG+@X^3o77itASdX#-K9f_-dED)wOe^VVpz*RYW z4bA+1SXnjx(|!YTuqAiL;`is;pI0X?!MgYfo^5m;4O$W(r%^dO66?9Dw?CCe7IFcM z!;T7-S=@|4UcMJY&W)p&SYrbo) zn2SSKxKxMvWG=HP-YUJB^BeSM@teu@YMDaX35_YLGI4j(0oUASh12bSfF8IVwu2E> zednns@FyP-caJ7zA8NO?CA>7crg(B;_qB=PT`eoe;P2XQX}|i{*<97IsWh3GLHop6 zcU6U#h?fYy;FDNI1z%u`XO%=qSIG}(4)~VA=j1a0WfvuF4NZoqjW5Zh5F`eT2EXRV zsjBD7*G4>tSG6>ue>uvJ&;v@7OW*6}>nLDYHWHyQR&K+ew7A7B!p68^!B46~vNeRP ze3whEkWUNXyZ>^~v{i>tbV7j1Gwv))no=>n)Jq=_shZ-MI!!R(AC_HTmBA(@$_2NA zNk>YQYJ;=FMxNmyN}PoVkmD7Q{CY{}=G-BC3TQ$4?VtKvI_~aDPmE*Wfg?1O0?^{U z$NZ`OX06QUs0~Py0zzpc&OBt~+(q844l~!0Dk>c)wxF5ns)qJ7;UvkG@tRyxHnf9q@d-ZT0jpAo!yhua!+O}zLa?p7AbZ9GBlRdQx0 zb<)dlv5LCy2~KT@<(>CHyqDnE_02YmZKePch^~XQo>2rTDN!QP`ja<@lhx-d;adoe z%Sk836WGMEugB9&4Zm9`ds20kM>2PANvRB$KZ?KFiL*UUupRjtswvBFsD`NR`Q?BT z+leNf%)-9*ph$%)=!MobqJ;61nT;;RJoO~A_gMNUywMNOLL@`$&5$Tvy-h+hCkoPg zdEzR?RfDu94Mz~26dma3`b}vWPY8_f6~jprg})rT1+#V(z1bV_ap=O^I>g~D;fcM4 zb_m8Jq?rW$`<~AZMEv6=^Mf=V+}~s^ycaNtM0}(YjuN~u`}SU!DFGoaA8bM7Gz{2DtTZ+R_Ktu2iKhh-exN+-P!&5MfYc#0T6V&tWduNRp#6gR z6SeVsVzYdlu=3szx*zGTUR8;`wez2meAh2d1h74FPHiAjmYyeq4N31B(?+kdlgt1_ z(K4F45_)lQ`3q!s7$(k)_{crRz}wSt|22{thx2m$@?4L{A|?j4m6hK6(@7%+fQmB) zd68ntQY0 z3Yd53))|*$^a+FrnZ?-{fO|q*{lYU`uc%;>h(0`^!oYcL#4xfILIcsl%6C3n-zOwx zemB(dlLM&jUvgg3!8vKF^o^~Kx+v*h<~Dnb;kw|_ThX5X6}KsD+?sS2M;+A@P zU`Z&q;Pl=8kjlfXnxK!avgvZVyZJ;$bN-r-B}Oc5o>TL5owzS0^KxG0nR9q^DS`RG zWgdy_yYIU3!husdWn$#6_nz2bGQf7Eng{!5X-YY8dFuLn*TK-nxX_>5?nlu0=Yl4f zokYjn`uT(VXG3g?C$^FC zsa&aUt!aG=RcMb<1x@4xlpE@ayy(r`;y6-B?b5|cc4%+B!defh^x!7!J!`T?Dx=lz zAe)H8C0)BT@cl#_YG!z7V%x;MWI2f0MyN>6U^{pYFNZhQy)h8y-jWd=nKy1io3QPd z-k6DO$zVU+8-EcE>~|Rhhi1I-7YX0uh2H$%|3iU%e9Ig{P$d2fm9Pe_I-`E_{|a9jk$`#5j!Gtqg5*||XbkBzC*mTIx8P>h`ihI3+xZKj zJ%RjGRfdUqG|rsjXVjOt>Ph%lZiUa*0VaxD_rEn}(ugB+B1ExzRF=I@{hQ>aixrW8>?_PMY>_{T|-BLolyIFSXeWSeM{Br0oSRQ?Ep8 z7UMeLf>%$R{!%T|%>Enn_4dZ{4Ud%zp3WjPAvg=!K!8_u|Hgm)SEdZt;qV}E*i&cOnw>;w$^d7|f;0R7!GCG~{n}IW@h?te-D}2c z$rA3{`;#6T-3iYBR%A05j_P4P+Iu0+^UDJk%3c)^CH}(+MiGzjLE+PCRv&{dsLF_yNzk zrzdtY(7iRGAa*3RS9+r|hBn1CLcS3aO~Kxz|1`9q2QRn0Wh(86ZtQ$zNBy_) z1qyf&_ZDXYUdDLyGO?qw$2IW=r-?VUnQ^nzTGQJ8ME8S$rC-B?zaqF=#}W>~-G5=< zgM~uY$6gx`Vx;Yaf+3hSeA4|MkRL{xvHn@CBS5{)cVUD@H$%1FI)3EfyZT;RPd%S# ztZn6qzKK-g4QJjhTAhblrr~qm?>66`E17MlTiZQ^vW}Q5eem6v*517Wzn(@OU)8HF zeU06Q7y^nMqL#Df1V8RIzHsor48^v(Jj=JsjGHf>#e-DVTV6frFX;~jYc=*zscA3) z7Mj|$h1x^keOBS%vV6;AR>~9>M;41m!|RGOSS8ckx$9DD*y?J?&C!b3EYO~MuTf_M zEo7$1t&C;iaAT&`(jY9DSs=({Gzb46g=OcPU^VLY!&qzN&IHEWhzT+;*S)OJn5X>+ zN!4CYYY--DI9_tzF)YhE(Q+KG6vHh>nway>xk~ewCeb9!?ofb_eXu}mOCT&ys?GX> zVzj$*9HstjTaf!agZZb!xmGuM^A|*=#pVjP0?ddS;ToJ*VC5NI$Q?4Ma_HGc`TG2U zMvc%Evh+ct^LdhRR#kzjbr)jf9c-3j^ELFcUgF(Pb&|f<(=&qMC<$3N?^83m?I^?R zx4)^-Xjoc=|J9_)^`=>|Ui#E^Nh$m~KzH!VB`k+>?L)mmzXjS-LOS^|pzl?*-t)-6`R?r%aGjNJrNBmpqhvCz&ks z@0My`SGybe_kTp5mxdjN@No8DV{ZzQef2a^g40nwkx(VqTV_{A{Vj z`c8#dW)DsDo~36`?vEqV%ZJt`Iej&0Ks#$z=CO)JqLuh?9n7zy>gQ{i<<;-q$aolr zUmc#|-6MK$PWS77xE6F8`%44S%L1N5of$i6jd@7bf@8ll7U57BZEsc};neg|6o>Yt zei)FBDlw3fa7%I77V`8y&)zD^^GY<7U^7}s$Ub6TnYG5Ub!x2d#s4U$1Tv3VLd`<-~h@YHIF3aT(&`! z_W|N=b;{FyI>-9~CRdis*P-o9;0vKaplY=H&jpRDtu)$FxU-pF5VxIkNQVt=IrK2} z3hI5w0=k$B(gkNAI-U})D}Gh2HjkxLgmXBzTqaq$vFhqGeTV0d&5t0b!9)jVb2b3L zex;;jMDtFADD#F=g<6$aORl8x`V&7)9&E(kcb^bL+Bt6OSa0GAKesLAcF_A(!-r3n zMljV-V|xhh1~JQiAEQkuYa)6uooyYzU9xEh`U3@UV>ac@=J143B|h)Ykr1W@u|VsZ zE=tF>1>YYB@67XaT_q_?55)mc6hieFJ=@5DG$Ip2-BxAVjK4>luSQ9CEa7IWTMj65 zt<(J9yCuUWu=jZ5-MVl$B`3lJQZHH5aA-xHq#a?G7_1l7!`X7gv@&H`&h8V-B%;3_ z45S8HYvT`$kaG8x%`IZ58k`4GS4iuG^{}BBTK~!yUT%Hq$G5-aCeO`(I_2=dK~%1s zOvLMB0=$lCe#36veni_5E8jA99_{6-Kdz(FD|!f3tJi|L=_MdpzRhQY{lhGk?N;ul zu2-a}(ms36i9cCs?_{Dqe|T7WQf^eBZ8BI84s2)YvUqC2Us)~GFJo^6*0juk4g{D zYZKp_tB?n#Av*&ApfwrlBw*;QRu-{6i#KDJNbs~7E|k-Uv4Xl;4HEh|6;FB(TW)@g z+F@dEPq{V8WW!JMfs6jLzCpR!qy2CtkBUUO+_{zbW@F(J1Z_i&WiwQ%*ahEKugW%W zrgVnkp-X?SG9BvRt*+abjvlY~A{UUl{Y)Ji=QzRINL1?RST<=k{wfCoiM|)D0qRPw zr~PTR>S(Q5@@$6*y{^#{FY@i1Zn+&yE?+AZ0y13f9;-5z6?D&Jdm@DtX{wqHThLnI zz9k);%)pkfah6F)(1P4} zd2d#RNk^pGg2P_bjY)+BnH1|}zimUJw*7#Q=SA9~+Uw8t-k|vvKc(ECg3t(hi+w9Z zX(OXhif8jW$Q4y-Xgj)3qmMRik-||cWhIf>l*Q4u?}S4XFzq^RoDY!Z=;90cGGF0t zJ?IY!X~5r_2KZ^qsaLd-P}T5m_0o%h#@K^QbHNn%X3-zOH#BC(u2Xtx>^&^TcN{F^ z8bhO*Qj-9w>0hDUBlB&sq5}EU_MOKm6U-1qNrq}E1e*%JS#e4=j)aX@bScBdS{%&f z;mNk#B=CJ2^=da~tah5tPO$U$;R$Ki#(Tfn!wme~owQam~cKI=$ zFC#N!J2Yq2V_O3wUQ2b!ucAJTEphS+k;{^QR86$I8K_oqT_XXI)hly$9M;)io>GgF znn7Ih;YPATuz5V@`CYttv*fO)RCnBP`Aq?QY z%LQwk;2esCZ?tN^g#`uu-9AVEhz;KT@P)#~Ojt3k=T}!>4qcRF{x8MMQj#j8(Nsv? zF4%K?FUT~99mJ67=BlOGWR7#Zg?4N?a^~IDrgrRc$|7sMhl=>b#NVOs%hZ)ocl$htj=$d_(J!7&{^7A1rEjSLQ=5X||&2BTap4*tR^{bu@R!)JMwvy;9n> zBbB)Lr$*Znw)2YYnZPP~Hz|f-B!_x26`!h-b)*wDZBL`G`s;OY`u?SXu6p;OXcq9N zG5wli-U+g_7_c{W$%55uC@2Bq^H?$Ga6`#a%EgjP?s4h+Vr2{NOy!FS7Y&;=+L?5d zZI4<#2JLVYW2UO%j(CqxX@-rxD0l;E73a&skaLDuQT}miBr@=|5hdGo_`?M!+Mo~z z!>Jc*!};QqS{wk2=T?aJO+1%CWoFOWYIGj-V`uAJNNrBqO=XZnv2v)9$=8^C+it>K zTrSa$6*hbtg|fpdmIp2S*dM#lFw77$!vBYz1CC(jOUV8Ca~aMk$hpV=%n1_4^8e zFP$f`(Uv|MF}$M;UlIqZFuy*}5UbzlTQ%})NW6?~edvvvpPAc)&4M*0N{xIL#pBwl zp_{zqAn~<{z~u?CmFc;Ne}EDFn0rrD#mh;KaG#t7(CZ?>;LTO+V;w=u=-{gfFD*K2 zl-`FLDI2yCyRbEaCa2@Astp!1qN zTq?hoPtnv^IZS@Gxw4AWIb9@Te?ZVoaGhQ+3bV2|#)9psZl)QW-lVbA0=mzhVqJSK zdB#uGmRZ?v+rclkHg~BnZrY_cE$%PTG3BXJ9QZ0PI_B@svG%3V(1}==N{(4HLXd4v z9Q~MlX`g>IwGFvO$m%|_2fotQQf|BCYod>RqDt?&spDw5e|~w))dTOvbjiCIITeu$ zMZ8s_8O zn2xN)G6XytRY+uTd0m)?HPbjy1nd!SS)5^o-{y9LW|17ra&8H^vXD|`w^FkJUsY~) z+Zgp!^H!_|#*AB(sSuVMtz1M7AhBAGLZAMUx)!g-i~0F)m5QOo96|x>yBwSLHn9nW zq&!34#}7{1^Zpitm=?H_^J)mz`N}0l@`>&fd{V0T+&_hpCGVCBNS<~FZob}x_wF)_ z3Kj?D)GyY>5tH!8hMZ)mZlsO# zI)WbX*o*~X-+D1SGn1;Q#LiLJgL&AHREwK&iBWUPA>Tcy2|5oen|)4T2ctb zEIiJE>HL|h7CZ495~NZW*>QJB^p}b}ls%U`zO>EU;-%b39TjiDIw$|-`tpXE{b_`v zhBiBzf!1w-u(iiyB(Rsg`TY4N{<@ysrsI)+Tc=Is);#+~q@e+v(hRoM2?PgE8TNr= zvK68R!)5^+F|d<TRHW{!{fP-h@3z zpZ=ZF52AV4B?g-!Ld4G%EJO6{jQvxrAfS1(Rw_Ni6296{C z4{&_uZ{Rr6|JeZbAN;#Z<-hp%jKA^ktS8)u^&7K|r)5i_nw#yHC4cetAW2PTwG#f@ zaH9f9S7%>@zrwN_67hC9So8QL(23JPhyE^g47Fk5bN zcd&b_1f>3c>L7@)7mCVkoTwboQfk|Ax_4AzB{FD0l2a%tz>FKA0e64;*?(^^QIW1r z(zxAMvD%_sFV|dAWu<6tG7_)9IO9OH+bNtqRe|9JuYyO$rMOAu6Q(IOFVP#IPPi3+ zraTWC(FyyWo%5FTebelGY8_5;98#xF7GtROHv{e~CL~SC(4{!Lu=FnqTYoTtq>^ z?5gFUF2YkMnlFE>6p!xrMXkMYVJZPd-82F4+2VM;k$+aDJrg9;z02}WoY5HGSCvtU08=o|1w-Bp*a-K)}K~9YF{C9pjc4Lxgc#V z>tL;zRGlX?y(ny*8gVfDQO1H^blL*t}xOW+j}_a6_0ecc|8#hjHHway?(fu4g2Rs=I~_7C=2M~hjE zLqUxEC0A+>=+aT!u=Eyakh{6M?wDt0M!_9q=2vl!besGm3 zWYH&`<@^?*8Yo(wgwFQG^;q4YVxN8#xRiJ9fDHlV$gkWrI@mcwh1(xL7l~pCARV6+ zmdA=Vl-&dA9G+IS3}@J{bS$=aclCKB>Nz@6Dd(XJN~7m0;eZ)xRIdT^QxU<6hdV=^ zj@*L1+42rVUp-LWKG5KQH6jVwi!;c}yHrTULVeV#{aZOy$(<0k(L3hwa&{d*CbJlVKeluoVi37DjIKt z29|Q7LiI#U+}+2em{rr`NQ-@E?M;zfD{j1KylxpuA<}U11J6v|Z?s2Ccza=Ac5@t5 z7m|`+n+4m5SFhXEMz7B6TPB@8A-0f^gzuq0hc4o0Uw@+3ky{$N>|%SEErJDc2*wwM zWbi;4ms$U6Lvy2-_X%qUg%zHZ32P!H;E8Sa#h#*a7KQ|?i;ZPO zlmy3ekzESf_7Q&ft=J!vGwpdS8CGM_SGIb}u&oAVxgB!RmaXACL&8C9xv7kKj;ebS z-TX044&cfGq`9$Ay`!=2JfIg{%n}7TE_?FcOuKR**#SPDs;<>iv^M*%b``mqy8Au0 z+U%(PIsB+viGp11p-=?thIBG%@be`L(t_5OCBgvh(yME<_xO}zCx^*PmnPBBLK9~a z(K{4hKUn}!M{~u4wtCtJqsr(r2CcgSGb;jE8%_?V#;cq&)UWvAx!?|Zr&aMcT&_=B zZ-4T?x_uROSM}B(*Q@+)W`v@6v4sikalZw8X@OC!eQy*Js-l)iJr$e*N6fzg6+_ou zKsZPR>2cJwiw8b*5bvGtRqo|Kn^1a4l#7Rk=1F4QLg)^!pY*3JEUZh?b6%zE$OlCZ z_&T~0I0?f0*MUxXGT9o_RCD?#P0!v0Be4G+{%@@aO z@=0TMJiQCV2a83=Q&nmuD{-7(l)Z|3~clOB{i4bT2{7@OIHqvMBU*98$j~(T2(ulL#)i-~(i>tfynTetS6+MN4 zW30ekwf6v?E-PCk$tP#+Xcn}@!onG@D?>;?BULur#Rr|HT-ET)ya+7)voqHtVLVF$u!!tE7 z94#_MA^pecX!?vZf9Z=WUSI@LZ|L!ya5(kg?N5PHv);KIYWGXAbi^6F_R!$|g(H|n zWeh!S z_&-VZz7J}ZUg_A~r%oPxM2&lp%mCjfo(Ns*Z9+Kh4Jn_jOPR>~ZKSA#BtJJAT&rxy zkjn};ZqtvLs5BLJNxMsMYM1BbSHwn@#JjslJp4$Z-kGkHkGgAjsmk=o{E?sM%)hhwBce<~Db0sd_pt9|*Imi6SbaazD=Uea@(@<3PrQQN{?mh_UZj zE}FAs8{=n@&dK-eGa00}Uc-lPQ7NvoBF)*lq^qHd;3-YM4m3PT94+4<)jq3Vo-5s{ zUQ2jo3pcIaQAmRC*QEjFknqB)5hF-f$>Of69BtRI7nT2Upuj2wp;oro&+ICs`Cn1p zTe7syy2!K!KA^H{uNh18cN0&svq_F7s+at^L0Fn`-b}b^XFO44J*;XVJM`ZE3X zWU#~pYqRzQ)}(>_se%gBo2H>FTGSs!Z-!|h<+{66skKubO2ohK9q?x)rpR;p+m>v41qx;pZ60kiKT6huX zibP-qH5U9lEJ)uq@-|lmB%CmrZI52yUictst80*B*E3$6pE05G&W=Ly3{wmnCu3M) z>+49YrbRPktebBxUWW2HN<8VJ-$<^?T z41E*?42RTS-kwPzBrr`pb^dL?^yIP_nElnpra=3Mc#QtrcPOdhtpAHnw6cBE?tIO$ zx=S}7cf6n!&Ou$a`uKf(pL6=m^ZjL&ChFCQVC$FWrp|jz1xgZ>Ph#RILSHl}>lDz| zr8#beNd%vpxvz^a6=zE~T(+qXRiOV-g^q!hbF%+J89;;?-(yx}Q8n}_e^EW#MNK_Z zu>_}-O~(+q+WtzOdRiT5K*k8IoenWtcI4hTQr73#f*=U9DneO0qGF<>s$l{sVc9Ro zNaoyVBjQDZxi;kjo&I9`_K0|p@VGPn+oSBHGJs9;hz3~7CN3`Tpm2#}#KaZCffB{& z<>rm@F)1a%-`3iaFrg)CXgV19tf2LTB{Nr~Dq^W0PMhzdS^Y6*+5?@)zktiIxkySx zMolBkH0hc;x0>e!r%Hp|xD5xy{BccWOq>(k7}45-H%`(awWF#@3U6 zyovh6N2v1IT*=;Z_LZFA{!JQM^G38a$C_f#srBPFrdo8*B2-3W`&?JtK-~dA&|P0W z1|I)9+ELZzhjJ$8R3)JtTWi?yV2LDD`-N?eW1FQsr_QnM*wx}zSThIxugt>r6QOe5 z0|}&CiQK~lTcc}TGc@OjC5?RjutIaB{_OU`_xS72XixHn{L-R{j+nba&TZ`0dNVC& z!T`yL-ufrRxbEqhkU}a z9V@z>#4@?nBuK|$P5kuC<0ud_>}W)?CipXB-m>W|XZ)ER$pShp>A7=lc$-z*`*o5~ zOX-!Sj(5MM>MB3ZO(5w36J+OoI9nW29wO!`5udpjbGyef*W)e1BQsqn=<0DUy4|_U z=?rDl^Ck>^@Q*Mw;76L^P9(?)GadBew^Zh1Xp;^ax>_2tOS|zM;_a|5n-b0-ZEzhK z4c3fn!nXelU2*&-1#SBVrJ&m}>9KzEw-~%hK{JE>NpH9b$T!?X$eTp83D_U`77FzS zxEKIu9fa zA9XQ0UNL|FprjV`!a&J+lA#_y7T2dmpS~DB?`HcXm|GiRU~NUE8XH5L!+>(jpe= zR=P!hLN2(i$@0s!F>n1jB2{TLJ;`UKq*|U87~MAmp$!yV(-0QC7^o!#459Z7onhX#lbmr_MaHN#_)5!WjCH!@Q-T)$u!XpRmI z$?jjKNqN+!^Er3JeGXKRmKqwpwACv4y3RSg4z5;4!fhQImH~<$eX=L)XAm{7r@rzd z&mBLLmQivZVBEc=;ZU+RQ_WxYEb|Q)pOyC6ym_R4COuW9+FZA35oq586lvU{LIEnu zq`7rz3$@4A$b3<|x^($(3T!Om*)Lr@m`!ah3Ps&(%nI4zZVFs1V%dErL~Wli)9LhW zi@-B|n*Q3~D26zmj-s}GLrAsN5XWi1)ilVd>^&7JYRv6D(JU(-Wuo?lKWpcd2v_gDS9CO!5|e_FQWs`P?J zp4pk@`D1a{Ku`x1k@gdQ>~$e0Iw~K;%Er&o+yAiNWdgh+8&tQebXB}_UJz#~<~x-P zH}%?Q-`)d3*GP~o#QfW)F5#r!9%9`+UgV*>O?it_{+IX%%KD9F=c5_fxO(4@_wv=j zUf*I3DUhbb4lkYBu@!_W8iQ&r-4SLWG)s8{2|GABwx(dnT&bTfY%WJUqDz^*^}^%k2dTYLABGP=#HpFadpk}9ZwNIkElXB^>idz zZVpJKH7(}Qdn&8mVH>v=OZ#tf61(k6an{J4jT-ta&Ru!?CCXzo4don6vqn(mQ~BbG zv25i^nydXP{$xl{V)?>d5XF*>RJIwLhx_`3o5Qt3A?DQUzMg)aZU-8> zyLX(8zeu=*M7Wl}_P^1xbk03|5gz`Doh%8!w(od+!Y`9f33Bup2MHqdT_=5?W1=eD`siq9mqADSMpv8XI?$uka9I{@EfvRgzR6w9Q z#(t4`t040QM`>q-x6XogmA#{RgS2Og?ABxGe$aPlw-8$nmTbIIt6f+}3$O45HsK!q z0{#vM&J^>$T~NB1@sf&5MzcBlT9g#N%`B$4;pQ}(_wMG z6wpGtYOj36f@=j;7V&dWOv@#m;YvRL)@px4A26VnBf1fmPEF@<-qAUSXh-#%GYJa& zTCUs^Cbs6dT0}kktbujd9Xe2IQGc|hwznov$mST`Gio$GbIf~}(|2jx(-)0}WAW09 z_G;ikD*@D?qoAC&yu@n)1z6tf7@B0f^&)EW{<83>Ox^CLgXHbwAJx6fmbg*zDZzxk z3;`Z{1>Lwb#F5W4F(im24{0BUKjC6ULv9)QU^VU22Ak#?>+Sw`UtRmk)w9#i@Ny|w z%fME=z)dM^(!#vU5)bvdS!- z0kcPhWCzN}zlTw?+Gna&+DNhOV-DslUGkAlZBB+qD6P{Tsrpp57aLh${`v~Hy|0}H zUB?FfhmCu~Rl8XDrQn1IsVpc%{y+q`WVl$XJGIu6t(KF-W|I9nM6IuQGfH*@qDu$g zv7-W#Q#6|<<^CPWVNo^VH8;PRlDZr|rjT2)+?6DEmn*kmRBPQ#%!DP|_4unPOn|#- z+bW`YSU)cHjD}{{y!O_Ld{GRoRxLfocvmltxk>)U<3)AhwdAgQ8q=(w>+^_*NJ4$d zIKrfuw*7#nzV_%zwr+z6JP_gosK^g`gB`6)(@^<4)#W>rA>VY&vi$jDE-YtQ%&^ORm31-5X ztLv7YPb1tF7#^{8!}4`yu@;58qtw|K_?Q_ZDsGuORHMpOw-h%Y4?0PU3B;H)3bGjz zP^hhsT->#mH2Rzqbcopv(JSOO7Ya3NI=+-EPP9B!0X2|{z8c`e=u*5-dP&|M>(!W0 z;21eHR*WjGojE{Mx%Ym#ThxFXGvomM5Grn!+g=G9W4Ss`RzKIu85i-}+=JmnB>2eH z^=ubX%bHvc+E}pU^rvxC4%nW3{IPm8^a*Ao3z-?`^O#P(@lOz+Eiq z+5%||dr&#Kr*&zZS7@rK(bFMi{#?P>b*?DO zYLwF*cipJTbxS2bz4U2e!hkFoK8BmD_rzBg~+NrmA=jh*r6S5prs$ z))v+0Y>#ilogQjo=Q}q@&3Z>tqTS^S*IMxN%G%MTLnXSX9cfnOn{T0X+>1HE zyW&&G6E{}5GtY$-!ot|&#B=CP9MtYx{7yq#(y7Z{`F*RA`%Vu9qh9%5w}XiX_a9g# zz4$Kn#avU#1rL@Q1#ol=&GiyGK9(GTaPm!!b!s&O*RBaBlQdZiF@?=oB?lYwGGrGu z=)@;yjsw(F@YI<2vfmHvuNEv6k$@s!<^)d?X+#o?sYmFq54dN#g7TbA>}6C7YTB_% z)DRsQu_~$`CkriM-C!s0gHwyotBV$IOn%7-rfAHMreCd^lcAP+tIO;GFCM$9W<$=$&5wuiZDc%E1|OW=E1mefMBO@gqVE*V9lUf15=!%H z+);~stZX71m`c>1+ZP7l7v$?C;L-aMUAJB=F)e8@e>Sh&^Y%Rk(ejI2myx`_X(W8y zi9_XY{`Z~PqQeqf&R&etRVkdf?+*c8S%jkK^gIc;FW(8A%Dbx7Lf#)eAy)(QJ{S%E zP7oeVf^$O97QjSvdao_e(emBrdIZ1fvq(s-mSnW>nBPFkI{w(%DzhtnQ2me8_XVK% zsV3Oe-||1Ya|I!cy~ecyi~|TB?9NF8Ikv0%pER{{!rn_IwVteD)z^B8h3Nb&3)B7_ z+<#|r;6^S6?8dEkAH3nMS9J?*oZLFMDm!Xu+fidh%ppAFF7wylgb029O z#6+)NG)y*2sKiw<$MKQQtV%Aejm22Fd9J8FOek5E!cAti9dERPXaxS#Sf~gQM+r`O zZEEv@k}8DOz$ChN`X>4%zrL0#g;DzrbRmf^y(1~-N3rebN@J!~lH6PkI-F^@?Z@{? zTxK;BVvxQ&#oOwM7_I%nVlkXj0`S0^YnIgY3sJ?$G zVxiIOVt-yvjd^HQv*m^hOyV+4z6}K&hHBFXctTXEig6UE-vz2VTRD%(U?Q%xTS_JcoWXy=!se27eHIvzV-^1H{U~^x zl&+W}SDJ28H|sPLu1v{7r)hJMV*$jia8|BDB>1`gREt)jG2A2eB2|o8<(sa6Q0xM~-e z_koVT1n8QEV`4nEAp5$yI$`2^bQtJrs8F1s?ka4kDf05wYU-0kOg+(3VZa8+Z{v_# z?B8zjiYvGTz}A)~T~;jLuRj<5c_cRSt}>~WBfR3%P^i5QzNZ-B&3=JXl)`A%+ZhF7 zX94aBTf>A*?rRO6X?;J_#H^F+JqQIE9U^tF4<_@Ke|y0UQL|HBpIbIXmJ+KE7R0DB zN`|ig-5aI04B4r+8i6ktC?mwSI}K~4*MnM@l!8Iz8gV%JXl+AN%$t~VWYRm#fSGcu z!Fq=xW&gRVr=bafX}AzQWgDEJ*0bS_evzB#7@1XzuZ`S=6Q2msLi{6{b@w*Ba~JllwX}w9}JudS?q;tYX@ULzfUszEn_gH{FCDZ z#bwofyoO@F=BVq%<$HYK42$Ko$@Q%&&Sqoh)6=b~p{Nx-$?h&3s;k!6HQGgpQByiC z7g3y`am#(M*>+U-%yI1waag+&6KOtarA<;&GsrpSeevRx@06pDdca+8a`Vat+livt5#(G%Nkj|5W$Y90P^#!GO+yeDU4ENlLn*+#vUyG4KY(I^C3;-@ zU_Dd;_S;xx@MQTxFEv@bxGCh6zKXkKkxdz%mnf0Z#zC%fe$7E|s3GEF<72Ek@X{_u zJz~cN?We)hmzP}Bl+vMA`r3gqVXD(|#ANlW$mH}O_-ipHkZsPa*dzTxz+=JqZ=bTj zIYBhCW12}C=r0_U3q|fQOjH@kh$O6fsH2j0oXW zJyPFKtwb!jz2HWRQsnZ%YW5AzrQc6Ba}f$Yp^zZ}z=Gd#6Mk#Rg6MFtx&oHy0EATQR?m($ z|GF5)ZT;nO_56S;km-!#)#OO{1V=a$^D&LIiOs#XTu-NLX(dRlqbKd;G_HDgpDKuB z)F#*Fv;a`Vsth=ch!=RQ4SVGCc=^Q7Qb%|Zv$MQ#pG|yQ;E8ojz!NjeW)5vJIJwk$ zDcYI;!h1bgP%Q!!^g@G54hl6XU10Q&POJA`hRaD;we9|Db#gz-(5Pk79H?t8b z^#`)IO`aMNzX?Wei(1!DI(r83gfF&?uGH0ZZf_UX(73!@8`!z`LS?0FI*dm)_Lt9J zds^8&K#tGZrsJf=x;5el4Q69EBgr~SETi?reQ~FCDkUtRCGd(-qFC!=X;54yzt%K@ zO4Wqvpo3)h8zFd}(%yTzK?1web_y;v6MQsrY&OS~0-x%erO}*2msc%p@*C?|!HGJS z;E}aC_|P`BENQPf_jZ^DAGqH}k3~%h8!iQJhZ6ANCL7kq_w6^vdo7Xo<4gaCj5bs* z$G^6&k4mhS$cgoqIWoUGMRWVRbpIm&lI-zfs;~va3CG zDuc|C%S6_RDmG7+9={M6U(aPn)h@NMjPE)MOtYBQ=xD^taLG)y);zh!7-@-=Z{K7M zAvOQMSV~LTe```wVde+u}w{uKG&qEqFwf47i}`A2_h=5IMF+`nsu!_I%} zPtp9{FAjGvaQOi|mHJ01a{q6oNY%fTBIz2=R;-oSYi%b>Y*ct=tk+$#|3>i~gTq|F z8*zg(t-<$}2)>jE`_|1{$GW$A;lbZzFq${r$3g3D&)wIf8`!rhAhae8KFfbgE|Duo zU*Lrm-nCn4-6PjbVgVp1`;5(@i|T9Zx5e0;*O?!AbmGk@i|kMn79A_IhYPa!xQPJ-?2Jb~a)1NJ9^jR3qx2e#3Duz}Aq;4?bd@6aq@ zgS|r3;0ZocfzLl}qL;v?Da}4WmxH_IBE~*&oCuzavkzEWE9(1%{eUP#mMt8?#`UcnP9j4oo>g-X=PB4bs;)texEgN z&hRGwaLDLk1N(2Y9cw9TJb~KF*g~%!K#2h=b>mOQkT}?4)Yy0V@2F7wk}(r#ValqJ zKW~`$e&g%RN(9c;yGMo);hvu)i{>=4J zD_5zH3d?Vk%ym+xJg(UGl1npO0A2k-3|_uz<-%7?uu#sn<|-gbFhiO{cp^}EzpJg0 zi|5Wf$<+Oj(V$gybew=>_gt<@@~{)o5C?%6--P!(O6t&FEyBtXBnrO*a6#h*;A85YwVtD!o&R<;+uzF5NSB zyfqw;j%tVrAR_z<@$?*-xQZnhC(7~b_D_@WQGnC{d1Jm{xGP-Sag0wSRxcSpU{i~A z4`a0*&KJ~K>HE{JqS*zSfH5*1a&qLog#(H`Zt2^D0;z*5rn-6?{{sJ;I5_ z(EATqR7LF5EL!(s2-^p`Nu?N#2a~L{zoYCI_q+q`AEGP6xV=H2F7<(SJJU5}#```a zHQz#M<`Qkc_rT~EtHjTjwbM||H?7pqOan7{U#I3^L1?9-ImdxIs~ZM4gp)*f+~VhIAgieNy?>-A}q24P-0?mbfQe(@NoL;6pMlk2B-E_5nG2Qfy*k>po5A66#9I#kk zrOr-ns(J`@NJO?qa&I=LsJ988D158`jRd3KaARMgiPOjJheqUjeEHyAn;EhLdAPy> zX!SLFHyP>Hl{4>z=B<**^3K53jBu?rJ{l0sP{TCiPj3gWSmTSDxwPSE1ru(BSDNZJ z3+hi$GS+%2Tp}@qGqjz^LfeU;c&42SSoo8ZU$d*7?&LkFf337HQMi*KYHAu&L5DGo z&6kkrgvglqverbj{!$3Xu5|7#fvH0V<`bf*fe8o zJnjtDG*xHsCZkDvVHaVm=eCOWCDO_*X&g>%n<|E}G!?ZS6fz0e{Z;HZ-W!fSo%nFUya z8{u%wZ}qhMKvAineidEbCfy%Tcpu<2VQp?#(Ra;6z=M<=m2HQFLpvo zMifnJUnBYy@P&hT_0^s=>OS2%(R_cwVk2%t^0<87xAKo-{g)q+VnCL1iea^L74?$& z3YP?9q?3m%r@9O(8XVik4ZJeS;FX|P=MdEMJ_YnYdbW7l%q*p!pO?R!n&&B@$NlKx z>(hOXv=mF{+*DOp16=EfMRDsW`LuGQv_E8GxsD|OeVo3v-fqKJ!SP^a589%~k#r|4 zLhoN!PLMydULCZ`o}|r-EbR)Zbsn!jEYA&@Gie2Mq^x4Cuv#`6+*4@={z54jA0T(^ zy+jJUyj)h@pl~ao*XFPeea%teW>TMSa-O~ z_$y}kQp#s7Lhs&J#W5O3v;6E@#*W_r9_^7Z=Dk8(kZlMv_Ntgle!%WFzLC;JxlwR^QVz+hmtx4OL;GTiWkwlkS*onZ5V~*LmmNRm_al5hvfb-w080cceRn! zpG_ee=7y}+BSWaz6|0ko3EK#trMO;zJA^;}P)A3`GEzBIUHC3EGg`3n&}T9@w0nIj zy%Y1)j_a+icpx);KJ6MmXD-2D*V%5!+HnnhcqGeg6Myne0-?>xB|!GSN)9K`k7WL( zX#u&|)JcN$pFee#-lYp~{98i^D*0bQ1fH-M0h%rJpT#BgFd-Gckrb;17?+|>b2TAX z({YP#4MZFD4pOyU!+4xzBcWXpdmJcT#riPQgvQ^SF62;aE+c(OdhB1gUs_1W$R#Wi zqdSNbf_AI-V^wq#G*z7HeB{iSvW(~Ltdk_uvhl{ewhd&p#)0=t&vo{lG5IEgoy$5q zrt5)E^jx9r&|+sclv*1V=IHGaRw%aaS9yf4(NQ22eQ`Pvl`Kw**0l zV@(daO(*+SD!ea!OlHKxjtJGRR`<~QfAb2`iP^yi#hZy$$}AaVb(}D zPUB2>qqi2s{mD2VeOpXwQrGUUz>3(A2SfAe?#GyctIu=~LPM#FCjehSpucm-1jQd< zt>izmnLs!Jzv+65=Y~|H@+K)M>?RD|;LXRrHx7HvVu`eApK1 zYvt@Jx)`RC^Z}tx$3uz0M^WF{kv|J+p0O;sNgal%c8*?A(@hK{K4a{EbCiv?Bp$aE zG&Rb%pY`FXzPXFpX#1wn`Yjnj8Zl~Dg5|zV1?~8ONv^^>NU>nvc6udyu8APwvj0-C z?=t0bdBBa&F*6N&+;q&*62*-#i{>$!8p4y(vUYkYpy3sT6XLYuNz+MyOVm_*O+5bA zT6<<`-X53-;;uF8uXWxd&Kcpc?z@=Cl@tpQ+XIm^@I~eZ8XvTIdd~@Z$dV7cC#@y* zC>pg9e4^k8G>HIA=&!P}DBQ3a#G7|ls)`5$mj)8{Q_`vDgKO@+{EplGZmCZYkJoL4 zpxql@!QZl*uD=4%Iem+Sx&fpeE-K+t6J6|yB zIdeP*QrJi#S^3gjqS=A-#LzA}&s3Bc?iNbVwbK@5b8ZdXx-2%4@LxV-5IiMn+_*We zJg4o#ZPdndwXCMLRVZv$nnEfC9;C~0TYwh5qAzI1D0JTC^`S0RKhRZA553+0-Z;kI)de)*dXK9$biF z%idQ)WnZoD;^5*_qpzu2`){{&+YqKYKDcw`iZ(BYVfiu%ABYyKm1>HhRfFov-&qEl zJFFzTP-_Au8P(D~y5fD6EFfumjU#2HnzIbr$^~}sFtu^{gaa zW#Wb_qsMn40vf*hN%_ix>fszRFAu>NOFlY5CBQnkyA^LEH@0)awD6td7)8x<5O`D4|R z?-yCtGJSWMURZ#6mdWzB)7WSU9|ilzFC9tqB;6|CuP}p*8VEIl7{rdlV27TmQQ*9@ z_co_sL-Gtgdx*o-n4~{ECr#+|Y~+2UbEk;Ogm*t%2E6!v-loIC`U#dr@rnJ~5QGrh@m}0a|J@s=!MrN(6iotY@TR)qqa`(b44g^QPJot z1@rD9bq_<%hD#|!k7G_6Zn`gO0Ik9MYBEzs;WB?kOjeY!pO@dsXydb5n6sKGi*?W& zXjDs7dC%-RyOOMCW5#)B`(u86{-Gt0np;)UD~TeRUn98xyPAhgnH8Yz)kkEsiS-g|W;mT&BPJuy@QK@JJCsdan0t2_#2c}OIOf=BGb#&g! zCwvyEOaNCg`+GwcP4&vq*)A+~$)kEV7-7?E>Tggo#(ho-N!5W~o_Yy?WUnO^)bU-7 z%K#E3s&Sry?^=WL{nMiux7F_dD!XZQoe&$cdLxdFLw4Fh*_M=os2wdbzpZ-#>-Yw|f)n=uDo$IrE;hFy1!Bxd~(in(EqnTW-ztB=+P2 zQ1km;ws<*4$?SEJ<)*KyCNczC72MCJ)48D8nU-rCM-Ln35fRuCI)FdYzU|1aI^mLc zJVP|NKbthBJOK(o7TwmfkMZ0-OGVSd+C&WvfoT{G_3H(_$93R?^_<=G#?27;P;cC5 zZok9=-cTFMMq`-|8+;f;V5hS&eM^XXJFveUx=S1%|3cvDLFjc-{ENVAJ7j?uR`|?{ zfKIp`_=)6W;8}qKo)A16VilSoPMBEt>+3rKL1E&Eg&cv!LY&bN>qHyRuHW8othg2l z_0Q^U9JYbx$W~5W`da+^%|Hqwf$vycr%GjW6A-;Gn=SZdre|LVR={H^=`R_gkX?)yJ=w>RB)fxmU%6aH?? z@}Ih!D|o8;Pu=a{Zv@|4DNY$2{0~O2{Xayzq`!!ET-GZkZh1>n$C7`G-T!ZAmKJb0 z{z~*x3;1#}>{~Y_xDK9^e`EFDWRZ5k%d_65D}ZH<+YDz-d&?Eqm$%khA1Kz4mOcI} z2!sEqE{Px5_0DIx@q)OzDYBay(iAT#8$sS$##Rw|VJ2YwsJrpv^Q)cIWSFUF(Bi4l zrwORVmv*+V2n8JYMK+iy8ASp|7d&+L*HzWRVucnalFSuz4B>La$4G5Svmv8QFL){{ z&h3&`C)6$B)@)PdRcWwxk8{=^*<+U8nhkuiAz?=Vk72=M?#7ViL_4&ml`fgB`tN^t zJ2+MP06iQq&we{do!IN&2V5DuLD z0c`N#ITm;h(ZJADtlGfu?Yhag{vyyzmcO;1N-yCUW+uLy=fd*b{PM$7j+DBI;cneb zl16esajcTYM@MnQyU&nhwP!My=`jjaXRPkYS+P?+=ut|QGP{S)fP0Z?#Q^FE=;Lm2 z9FePE=PEbLFw0oHd3^Ql?k{&=Sx8I4)ny%Tk}=O{$>ZBBI;%K;<+nh3QRxlxDwyG$ z8`!@~8r;7&mu5CkCBvKHfJyDc}-e>f;O3clM9Ad6de~+b>oc z6}_~nGQPeLrwNtH8Z)1ovN;+#+5wBLFrG(D{Hzcwn&V~GACqOyBW|UlBWl63z3p@i zF2+LQG{O-RD_C2Z4eND5%kfo7OC8-)itBv>W9_ml7KJ+f$Cq2?H*g&P@60vqe`U1u zhpm^sxe*4$5jr1)Z~>;-WK5T_)vM9!_)rNW;`ng_Vy$I9F8~#m+`sb)5`LANvc>%Q z?hIK%0Xn0~Rr>tH+4>R$95R7>bP1mJLN-^%B+T(tmE)_}V%MVzp6(y-{&E4bpCEGrCNxUcI6Rz-g!*E5fTR3NAGCoqt+A~ivzDVzIX_W_k6YH>8CP(0( zJ>Sq*kX<360cClhk_S?zYe?=HeKkzGqwq*W)Rc?NxXH|hWPIt@5{wm+#aralmb-}A z=#V9p~swx-K~$a7l0p4kNny9uCZQBldA94!^xUrja0b^euKosf}FFNTv&4|&R9Q> zRY2wnY%`FNx>LIJ(%LJZey?F8+a(OFtO|!Td`PIr$m^w46*AjryU|unL@BHlR;YSj zg=X81th6pP%B-51NkQ=CQ>JrU{J88iAbQ;^@XKen)8GpdHHb8E799#JoX-j7b?a%@Hz^IaJs!iHnw zDci0+H9u%9kjJs6T*~L7~I5ekWu3h}QZ1_Mqe=-^*d6MJNzpS4pp6gsGajTtin$GQK)= zA2L%#afnVoeDBVz)oUuWq+A=|{lsVf%F zp+f7*Jnl-IKE7wxULQX;bU^B0_^Q}wPgESypTIh+q;wS1)-FL<#1?^6s^6brpyMWC zVQu_z6eK;|%w;MUzF16+f*FEgoTd@Z+Q@q~*{`|Z3u&L&Ybg@${E~Pvkh^Py86dgs zg*QxdmdJ}O(@lCr&07Ti*Q+b-P**s!cBY8gz-yG()x`I1AW)C><8;k)8T_WHjSl9q zw5H-C8P|zm(nx*QN!&B{C^B($#)eRbK47;ZR$mkY(=62+pi=u1`q>fRvjvY+>)6wf)RCL#aqP3-0OVQqil- zqFGAMFAH({{>KpBlxe(ygME(+wFE}UaK666mHLh2a^)#6y`Z2ZO$iaXYZnT zjBeU;om>S=xzt?Y4k_D-CL?*1z$!`~ZDou4q44tlp}Odr_6#yol}#nkkl1l!G4oXF z@1o2lzPxcDTJPRZCvse1kjJ?2{?$lV>#g{9rFKwil9_Tz6nE|-U zCpcBsA`*1JWk>6%9$5;E+GFZ#ah^(=9OnA2D@=Bz&9_N?#PYnXhz^rl9Zhk=n>_z$ zDp{JouCI&@VX9%Cq!E~BG^x4t3SVkHXIAQI1q8AN)fdv+%FSS^! zPYWr6l)GYU(PBGfwTCC;Gi@tNt0zbI>k_M!ZU@{=myw$u^M&H00s!#VJq z#7?&k_bk)#V;38o$#tbcP>&F}ied<=kEqu#J=c#%+?!m{B%b_Czmx*=;((*;l;>`TpuUe5Ev-aaBYnzLzO+lC& zz3p!H5aawJi`4Y>r}1K+PhZ~%S&+uLIy?XKhKsHx;$KocF>#D%uHrmZnbD#nE`RXLP1$n!kB| zom~K}Ss0f@OQ@8@1UwKw6QMSWQH>0FTZ8T`KKy#hosm6iH1@lmM9bK}k&**3dk{F7 zV9EP5s3!Z%$}s&JC*e(>`%#fF-@kt>=T&~bo_KKnhfXEhG=IJSsIDA3^T@4SK#Z?a z#i5T?l*PU;#jMf)fze}ZZ^qfV{+i8X-sRdoKb3+jx&tcFvpWb`g4*yGTbX3YPCwu`{XRL@1;@sWmF#z4k8nKK zX=Ccp<_2{ai}%X;3BS&)P0X=IC;Otjul!aW<@16^UXv!G3xf3nW`?$$S)@{? zNvIBZ=pQ1I^e)%gEz=^PQ3aH%Rj5}Ms0aWV^ zzEWR9xySe|SHpU8xZe;MlR6V13Rw+3LbePDEv+STE9QFporW-1<8FA12RXZ${-Sd& zMAWb?W)1ICni+eav2TV*jc_j?F?I?qu1`9{e!*E|vK9K<8_48Uf}J?%ZMd3mq&&pw zd)oz<_>`ph*l6j-+U#}c6WUS>bIQWVeu_oev>{ZS*{{)jcbTnz%iyF&-r&R*H+aXT z`um%d?^qUObv(+980+J}Y!qQ8s&^x4lP(tVt}TH}c5ay-X4dK10-=Qsp-##}WnOzM zmfglLf#uvR+onuWhNZF4wpk1R%vO+xoTS&KghkjFE7CqOq1~@OnVxtPiBW_}dg{Nw zbU7Jen4Gn6d`Sc;mt}588Hjzsf~NF!l&pW4;5!;!WJiyGQDMS(5S;WrpbE(+9S;_a zt@@JuvA``Xu8IZYqxHRL84t`Xg2ad|wb>{W#;U^lN|KPfn1rKAqR!f5z|nx0l*b&| z9-40i(2rh{uejVOimdZOA*er|%uu2~G6OMWn;relYE7`E@OjkVDJA}SQvoMgG=G5c zRw;RRepv=xbk)Dx({UGn!ryfuaWG9hsD>&X_ThPF0Xv28h&OQ%h2gg3&of)+4pGRx z3}m@NpI{cHv#;DmL0QP7rOGNx$*}MDZ3UXaw4o<}JUVB%NP!o_i7(UgFR`a~u8tIy zpY({r?5#^Zw#$jxxG!*;1Y$|Kq`0N|H09ZWZi&zIPZw9Lw%UL7H-w;mMLOU8uaFyl z%Yr%Xr;T@fS|tPz$V)=VzXUV#h@&&{Jn71~sw}yK9jaih$*5I|Ng}-?`82cgF&{vz zU!vENt>ReBO~eFd??{KoYY2(NM~EkUU?;PqwGI@%p*F!9e~t;tg2^}9obH|!7>wJ& zcCQ?&)U^4mE^$B-M|^7D#1@%YST_Vf>HTd-6i@WgVo-=x!U*zSK5Q+y8u(i^t_~QO zB6KRgXHOZ;@2@5KI1t#_?%!I{evey`l~6)yoZI&+g0zALNP~omDoM}8Kpc0N=Oh?~ z&BxR6sZ*ui;Y@R>IWnC8AMOOTdu5Tfx&Fa75^L!OBZoJ^sEsH8 zcva|)R&W|_PB|!(vLkcT7tZH04acl*!Nj%}(_kEi8=t@ToS9aW0=S&J14V4ZEp_HEdC&ws6Yh zrhUVs{9%&ERJZrkp4SU|b#eXQXC!!$X%RoIzocV zVyNr|Hk>|p*6sPCWHLao$M`uZ@*jo1^s1(V+RA5UW;g74BWjemZwT>sGa(p4^IZiI1Rc1WvRMddbN_xD)(#4fTE31YG0>39xUD!cBp;pw2OS!L_9UVK$L z0WRH;Bg}9%w;8jOHej@1H?^672N2*5JbP_KZCZ{@w(7gV16A7;VpGgB zrMZc{zNEre@W(}|xxa3M=y$go26;gq zy4qQL?dS!#bTZS@=1cR4Ih0(PsZ;i(?grwXm2u^*wcl|7RK=6O>9XJSWfApJ)QoIMR3hyUh*_z!Ir+qSDX%%Op{=)OZm-~P{U=uc`q~5_ZU`6R)zpP$dj2ENXM8VDXe1So++sG zY@d&! zH8$pwZf76hsCEjI)p|64s>?ZAeDDr?mYaP!+&2ROAe z2-hLJehhPLXnVB{-2#hBHi4?YxyE2^4(DKPB7GX#gNOQESG(cYHfi%EJ36sVLR^!{ zNO*kwl$OUCDR`)k4^LW$%B0hug_bi72YE!yl#qy9g~w2pF%s`=1rr*7xn&s~0y7B` zuBuPe0sBQHja^p0e)m3s{Z>f53fh0tVl#&fXhRREGu>CaOgZ}bOa}4dcb9604q5r@ zbBe~+X~sen?JNeBPdbpfx!6Je~fBs*}1{|Ksc?tH|5WMKTb%;Mj>g z1qM-KMdG``RJQjdmhK-kL*~SAzo3`!m(`O7%l&jisd_63(Y)V=q*A-pNw%)zGDtHy zeD^ci-0cSg*XS$L2)a>ss!>o^0Xor1-=1zOcgc9&r4=hyCpEb?$1A-GRHNu5h@aPDkIOew`cFdu3A8B!+@SgJ!WYbCis zUF)=cSxJ7G3;^v=>%n|aYH0*8StL#?bpw+t*Vx%m*U`0qp*I|6nk3vjXZ0j?W``h$$5%* zwqhA#K8SI>Cueg?>YYfTSu6FZRoaPl{53%92J+D|>lJjaq`9jy3xpYV8p@KR1!DWk z7A`j1drg>abq?Azwxjd}M!*s7W?=j?d4^wp?Y9K_{dLR~mJY=os+gZ~nT+9WVYP z(*reYgm>F_SVPleuwynPo}7t(%>vGQj<<0ol!Q% zy(8VuZL`&d7(l`2F;V7s-1nFl*8axvGF zmQeU80BmbHjqzCt7Mj;58)c(9T5eSf3bcOjCPK-S_xsIK$^d6K8rMLrQmR=34G)&R z)m&TkQcuVs{7LfTSL*hbCWWs)x*Xh%Ri)?MRdBZr2-iLnsb45esS-x-V z?0qdaY9*W@2wT>-+fW*6PHk)S3W?rxq!WEVS%i0(j(J_zI@AR_ECF;3O7xwp{wS(Q-@OcrC~wWB!SurgX=D9Lj|yVqaY5QT*6V zRpwK{c9C|^^YahW{QDXv`NlhC?ZhGP0G3}`LH)JA85s zq6bxjlFaY9P>vq7W%|*y&;g}Ym-@#rq5n()ou?MA!d<8o5#kb=tJGj;sak#+UaM4v z)^=og81ffT`v2yd#fv!jZj=plJLgI=K7bf59U&I-f{!!Ywt2=S1ik$ zD*&9E@A9I=Z;^jHm}cE)WkJjvdq>i@Nb@tyq*x0)KFK)n*?E4C7`0V$<<8!*P$)UT zn5kh-#^2YVxF{Thr~f!Tf7>i)o^MudAK>_%5XP3tD-lg~(p~a8AIE#cHfwC#J7{`8 zgi&`);y%2qIenDN_@{OLO=5x;9C;h=85T=aDcl&RHu*Ju(hP)FC8fVs#er46#R2T& zcVg3)sves?2wT0;%$Jdu_Fb+mhk&>qXa|?Z7!5lIsJ&xF z38jQvI4Hwq7DU~FOb4A@i3|Ne=a+);zCY?pE_K|~g#?x@#31M=&h=9Er~8nm)ueL` zwyBtOhlCq?dX~I};~%fkdAX8k){K1)AgxFjk`eA^6Om!MeT8b%q^isq;d+%RUMM_K zuhK&6{_Wv4cY;n8qHgrFC1fK(o5#G_>c%I+HxjJ;3ig-k|E(=r<0@PYeEUJ)yvJ0k z2b(8@_AOwGiw>FSJ!ME}fH*lRlV2Rdx)=czUjOfeUFrqb6=#g+WFk;ZM_u7h&_A@7=@eW*m+u8N;QM;sP?*-ykK;&EZ;t&ptC$bzh?4twG*={bRVZM9Z1y z^j)>JMPwhj!Om0JGtF7IW|e*%xAh_7xJfMt3Ca8Co*sg$TK(Xn=hOq@;Q_$qEYh@h z_Oq1E`6~J9kW$0^tkk~1!>4wn^SiJ=cFUed`%U4V!ER4-90%Hyy?mAkXGb%M1&{^4 zp@gsBxmM-EU#W2ns8k(+l4zxNJp@63CORJ5X!{J?NFb{QcDTBg)-H~ZTrDr%*XN=N z_BNeLG{yEJEvAc74QIhZ0UhOeTjz)D)M$&k_CqPsC=HwOu;uH5C2fh>u<2_f1uC?l zCy`nrfiUepT#Zg*$6iyO9Xubuv z7oRBG3V_MjPg*9|-{&3;#6rt?Hr2-ix|OoHV9=~{*YCXN%oT2R_Q;zU_mAosk7ryw z@hQ~PJvX93_D^1f8AdF&$0p`w*LI^wvG{zlrgLg-fKoD8spNsFj_IsX=b4Y4;yA17 z&A0ooXZr|Sfk0h$< zCC->8e5K2Owr{0Qv#q7q9gJa^td$N5yM?JGd|7e7rjA#bDts19(eEo{?dU$K)?@7` zqRiTvW42WDf=lK*j4pfn%Em)bZscp?<97fZqGl(tUgQ9ovp*x3*C|SiVd}>)iz-H| zAp12nis{ji(e}5akAfd(nA%mSB)+eH#HUDa6MUMUtoX!~G?k?3$RpGEH@S0aDVK=e z9Ji0P$&tdez>(%%f8bM2m&M0@EtPob| z0&|IndK2_1QHOC(5*Z>ZtL=d%1kuFLEyv!HA{v0EMh8x4O&-rK^~p=S#3ru&C48nl zSBe8$r#QS)J8b6%ZaCHvB$@Qy|gycS$1#4;eOy<%S5)(vE(ha z4vOL(w(e;!=jdq^XxzV3eP^ib){L8)Ei(0Ia;ZJtPGzoBPuq|OW-6gIf zl;?;?ilga9RP6$83C5fr1Azz~22zCgLg1b@9jnD0f-y19k8kS9bZcJyv?2jC#+A3{ zM=q9D)DGg}%v2ag^ajb?KTw(HXR_>*2P_E+c>oDUr9M;5UaxYMvn6judSAkG z$Dn04wYnYm6~mUJ&th3(bwC(hr21lLv}<`pzyoJy({3@?rN#uD$5kes1ubm*M;4K*@?lhK52JT|XyWPM&h%$eWvk3{oW0S`3bL=O8&{3s2y6RW>2EYm10&c;1vVJ4y^T-7*9Zd}95@J$ zpk?We+x6ZcJ-aghKcA)!Z_hb%tl%6<3mj^`E(8qWPal4|ZgT`;S)m$G{A9t13VeNi z|Kq1o&gW!0oILN6$&n0`{dx-cw2uP6(OqH{6pVlut=I(uzfl6Z8$%znPHWs^RX{tc z)5nNYJi0G%2hH>t{qFlJey9Jx@K!nXHpV=&<@PO82!HjL z`@fZs-sH)r5t`b-%R1oYaqu$Szy0N0N^l*xClQ*i|6k0_Qd|eky}t`iZ^fqEf2&~s zk#yVpn=|=88t0ZPuCvy?<<5V#rJMEM&06Mrt2ljJ!<$w5FQs6r0!Y_j{+FuxHStY> z%|S8qU8OnK^w_|s;k?-F@7i-4kw-OgB#zGJ_sT3byy-Lo7GfDooMX1W znA1mw@ifu?iwNcwv(x-X(Ji*4h*2lU{Jr<~%$Ccr>n_ThfKLs82u_@#sAqVSBsC99)OPkiTX|+4#_wy4T!D2~Y>7jVVP2l*n)MgLy5y$!NHI5FT9__^=A)m z>vQNV$#~U_cTPW!Z(Cd*`Ak~WVqDOBv+r*PfNfm_C$KcPG-8Ttkoe;=wr~#u~MxZ_I*_^Fed`{i2Q_NYR;@*W4!Y)ZgHIlua!5lFDxZ(oOz#UU>-vJUI#R!JUrERUsQU&& zqoM$LC~j@i_Rj)QMHf^id1Eh0UrX4ey##11I(CZ%Fs*U#6lKBxt?hK3osL+u^!>G| zcxt|3BH-3x$6ZM10fNb69WQU=zDiL-X^KHOcpr%zq+rUHX(!OwC(*EvL^wqq=!k8M>5TUxARV>h+RLSS`Y6*)FjycNp^E zTdK%opYH~>)2L9bZvxqGs>qys=JqV%h&i$~_YmWGIZuXDh8b4+qu5|^lkGvW4r!H9jn z;SLwMYTqp5jSX$r-F+oe`ibJgAn>8Q%-kXhmMfr@En|R2cUT3U&^F=V-d32WG<@Pz zy|}7cKhD1#qLjx)jxg?1>P<5wPh%#K7dV| zj~$x>t(uO2PV-`s;bK0432~cS0(HCBKJ2&RTrr{f0{3VA36LM4Gj5a2!J3HqSab(^ zd?KAuV5Qk_2LfA8Xzx*}hg6 ztstCgOiSry$t!)cRD(G9(jmo3f>%8u=V0yN9-x^kwt8_+uq$_^G%lzDua!b&GUaKQ%f?qAzc(r^QGQ_LyH}GF^VyHwUd(C zA>ZSE!@|Io#ozRi_|+DDBq3U`s(kqT`03)pjDL+J?*oy!aZ~1|(HPU3ElRq3(}jVDe~ko^_@n>gOm>uVE|kx1lvHkYr?@PZ zW*%e&2Hq>B^4wZ)_N@~VA71l&3Tq3$I<5-VJSY3P_l^i#Wt;m5&p(!(x7L;sytGeu z4eGhOIG9@_s%xBJkF%yj)Vg65f3$zC`<#B-^tEUyI>9GJL>paS{TXrTTYRiaCeG?I z(KW&Ns!M&eM;Ny;2z{n>czanUw~tceX3!83apN`$2O;I#*NEW3Y$Mo^3BDcjQ5l8-0r z;}laKQ>;bvdpXv=H;<2XZbAe!$szSuujDDq_wM?LrFRA7FFBETn?sC;I3{sWt8~=V z6%C|1MK-mvaE324x3?Ob3X&#Sz7Y*J`;p;LPxUl(1f~#i%){1=Lc9q2b;S2UOTXE3 z3niM-$t9#|jvlVsxv%g5IKxMPz4Ga72rYN`ju`t?DVsk*-rp>eZuDvNtsDDXk;E6e zx%=$c3toE`pc-Vgb4lkS~bNL~06Qhd6X`%IT zS5KKi%;zxS{+Gq@%2%b~9m#AQ6Ul6@yt5RU^rDTpyj<8+<|c31`|*OwO)a`6mt`z{ zg#y;%+X86S%fQdVmTa=h``8NRTJ|{}tPmwv%Z(nq5Y%W&two51q6q|+suHnzxf+#i zANzx8YHm=myeqpr1Qkt?*&W7yXQclC{v@1Zx94ZQ9^GxPb~}Ju`Q+qMTF9gv?6Zc z>})&#B4lMXJIRwDfy&iiIWT=bz6oZacr108VjXDtP~CGrt3ZmO4y@x@m^=|vVFqNu#HPLh+iYaXG)A;GOCTq*qe70W$^^jiJ z)lRLM(|D$rm&4N6v4bXz1{2ukt(h9}gSztUE;cHN6jiOk{PzWm+>r7&0ceCu^PNEP4(5xd-`W zvFjdqBkNgfe_z*tRO2EnGs}vRhg-S1pQY3YQD_3BB6-&_w&fW|BH7WEYcIINeL0{|N(ieHN~>v<JCSadkT#0C$hn4*1b345h#NWkBS{Syrz9_qEoX z#oO!Nvpm#b2Kq{RH1O22z;EyV1^Q zwT6ytP#Ywy*oj>XJ$K`3(w^#L!-F;68hAi!dn7w z=DqYVG~NFRgexZy?qm_gg4I)i=ws5-;)i#C&sxN( ztNN{%B$52SitR`!3pw1|1Xl+Yk;?TGv@%G#vD!D6C;G>Rg_U)L)Rae_fCw$@Fe%ah zL)l-3#no(Gqi_-e1QH;)LvWX1jT790ySvl4Yl6GGyEN_&!QI{6-5pMIXFq%I=bZPP z>-&Dxs;XJGdR^VHX4RNu1Xl=lO$?YfVNLbTqMB|U!WJlZAw{G!^~tGjQDL%bPu!w? zDH!s_BY5PVey7}q_g-qhvh-xU4LVW_j#5`f85Qa&feljypVWwYkVx&c^4Dp9<$^qd z>BuaqbY=h~-ZxDRnFr+Y?CWU~%l==z^q({aROC10f@0vmeUx%*6=^wa{8lqyp+udd z$hFZ)OpDVF#{;a)lv4Wi1fv#j8oX}oWn)c(8RTQ&+|dzKNfB0QZ7^>1RninYboI~doQVNx9w%^G|9*pCphvQ0@?e* zv)hvW5l!@&I*+%Fnd=(q{FF+nQUy0cpR`*$x=RJ-a7eBM_QvSRhJK!uxlP1zqia4U(Z4t%W z2wT5#aS*wGtp3KUhaE1_doqzaHsw(BHCkZOZRZ@Fer-sf3!s}1Wy^kftUI4bN0~dO z_2TVBngw;T>Fj1pIYSD~j+sKHhva^C9lW}4n1V7p$i=|(nG4A>+eGfC>Jq%`hKpc} z!}_m_$GQst+Dd=tNNxa+tFf2MX#`OjphXe7p9Ju$>BofmbW`Il<1*9gO^f!3B3YIR zsqK=>$c*_)$Br8hMNnPNbUVi0hX z>1|(x(OI8<#SP;yYQr<~Ego;4Et7#fxofAS(L)|xGx1aRT3f7=KKI~`IH3sEkt}0; zT+Aio?w5^UgG05XI!^Z!Y!DFyyY^V7p*Y?`M25itD@-1JAqkDgZZ8x6%-^UiuV-fS^F<~ zE+)&qY-pCWx;1O6beE``C+$wsq&G|}`ilE`*Z4mQzL731=KlYzm-a^7o_grFGy-nU z2RHkHn*;z`4#n6u920O2xZsh5e<3tC1=u#&hkrK^-gX?M0b7dTR;a%_9B&*^Gn0R{ z*WR{7_yAjR;LaA{Dgay!v*;@+!L~8m_ggBp|6j6idH?K=2wSWV0o4FZmQ<%4ul|DP zrxvGgPx&CZ#%Jl@xR*Lj2PCL0`giy&rEUT9B2ySNj^hd@(B#!k)V!g_+#9n$Y215H%Q8j#OW%UhV>7gk~-xAXU-g^w#N+W0@prO1fcp7vj3I z6ziL<>aE>e^v8 zWMFUYOaRFMjE)?4rxptj3oF=kkv|?LVjEeLASuLDhJx&NR%df^u1Q3zkN3&q;(m6a zQ$^m$afNkHvc!NSBV1WdYNv|~1#N3V-4#1_Ge4GoUJLXFJ&4Ek){VAzBxs; zKkmKgEoijd(I&Zo)kP<_M@Ij!HBm#43o`tBf4H=UhRovQ_=tGg1)`j@GDm4STmQ^PB=fJCa#xyjG*g~`vk77R*gq5%6_k^{f% z$|;GN0mA*fb3#2;Jp$bYS%B@-uw=!_LU)wetXU{MQ`y#K{Rk^Xp#VKV!oOl`?1#9Q zMTMbt-Y<2&0gW2tY5d)h4_f5mkCzbuRy5M3UPp@!H#ODr;z#og3TDU(gvqR5RraS8 z*b^>XQ);~2mgi=+TMg$(fCoz@=@$bCCr#daFAU)_@_0;@%S_n-Wng2Lcw-(mZ;Hc_ z7_Eo=eB_ZCJxAq~wk)Qx6~n`QkkEF=?qR??T0@G`=b!ljNV@?@G&uNsA6L1$d}j3? z#iS~S6kw`6k<%Ru_Q7{v=ui3#lLp)%Hz!J7OTzlTN@jd~y1)Cq-=2o;`u!wVh@lOF zUlFvG6%l)5MwPI#jB*xJUqRS@^xo^ol+_IiQKq?6m_V(6l;}*?XA$XpYHqU+^geP` zyJFNPv9!`8X)JGqJnz6}xBeczQ@g(x?Tzw6GE#!T=k7-ClsRaS#%wx}Q@d+K8=-~F z=C!{dw$+O}9^hko5rL~H3BR+rqYkO^hj(g(bKZqC9VN*VG?O3aekdACQ&(xna{652 z;CpJjfBNaR&2RL^%Iyy>#7fnW0*_5)8dY)u6gFp4NHjz5*8;a8}Z*um3GRJ2*!pfmr&Tx9p&%}8o4hN4E&>%J-3~RwHLfMa` zq15s(6H-PI*Kn0os9)mlzic}V&*n1O`N6kglU@XrbzM-7#4LBMw2e3no zO!8L_p{BD{5`C?vg-)S>?Mb*-ad)Y&}!^m)~spLXs8a&X}?XaV^~0DS;-$uMZek8J(1G7mZFC?xDYKO#E$oyuh19`6#*rM-m+Yqi!IfPo&7;kI0+C-l$3-r|?ZShNfpBvA? z4_Qt+FlTLV8hRC*MHtxxvqHBblRDLIJxPy$w>aJhF7x0ymK9*bF!y_NNacy7o~#u`alS z(N@zZl(Nf{`0Bf7IB-tkvEm=z3-S?OJbRJ@sVz>li+6lk-`*cD?S0PU0+&QN~;xKfY_gy4KNw)=G5EPSU~iioV@wNJ+ga=*corjlfXr-|1S zvm&p=+4ym_A7L=6(lojRlk4KS^zaMlsoV6v%zee=o_)?68eQYgSPxyR;waEqllU50 z(=(1u*u^Oks%8F5cq1p$m5p99Aa9zgwFh7yQ z2Qg>h#(V1VKxsyJpTbtBGH&~Cre;pK62=l!r1M7fE%~*{7WtDmiJod~Kemyt|6G(n z8Rb2dE}uM@3W25@!^jYv%{g!ZRyRo_BdJbJ*t-vuWW!MT`LeM?<$(r+UG#gN_;C&MAW< zdOD14U14mjr`myD#qU1&4|_<#w`p5N)YFxha*qQ5tLyCY=;po!7A@rkE%?$_ujlmMJunm5)C?4Df7PYtT^(UI-CC zmy$oJHb6z%ZIDGt3sIBo{3csK5~OYq(k8~w3Cr)w%dEc7`hbmAv45_bL6N#1MI@KYR6?x)_4HJ2aAu5~jEq=o!5=?CYOa5< z4Z&~N2BXW?AYp3Tae|5TD$E~;;kTJ(oT|H));AGPy5vN0NWocwt9gn-asF1J1|B)# z9CQgw64E#^EL!r~-h^n)*;Dsy`uIh?w?$MOp>|)g$FxgH9)Dez{!7VyaN#udOYymd zRSV-FDLO|-s3vgYQD<>W=(S@;8_0s=+lQ{?m-&Ni01>2rXq zc(vs{&Q5qyzhh>%dZChw{CH4A2XuWs`YuBok4hUX)NCSE)k^j?`68<+8eu7EZoLa8 z2@#gULep5WD7$Rqfi-F9KrS>~m)^lE;NzwzQE?gvBW35ngRxTAG<$o9DZ8One|!f( z-@>24{%&Uy>stDvvU!E$tqy65@;GJ8`zLivgY1iH0eGfc~wgd2TPVCRyk-_B&1|6r(vf*?Kvk|2wil z>!dEw;SJf)c0reGxD`Q~&Npz!N|JnwcWpLQG)bH-BJl=n5Kh+Ro<&(|DDB%GC2Bp5 zScE#9;k0x$k6+e3yexoEJ-gRVcA=L+*w)Tn%@!{9he-SGIq}}8(t>$E!R2X75j6tU z9dF^_w2J3GueMi?tk+)i-Dspj(KLHamae`;uZSq%CB~%Mu$B!YF1T6UL1D96XCAMzR zz~kT8J#fJlhc`F_3Aj~jjnpQ&6Kr@7HW^5O*ks7@JRC1Hj%&7&TwGU?O#yCn|S-b)!Knnb$h))Er6Y6N!}Z% z0l4juk8RWRf0k@J76)wI6k^*vj=?pw9QrM-*!|raF#8*D^M+pdpNN`~{|LCNy-CE4 z{e?p8fKBM&-ar4+QNQuv$byUiinHnYyX)|eK6{edW^0v&nMLU1$YO*0Td2Utw#mK7 z@c(d)*bf4+WbUr=l-vVa3KyLYzSK_C@BifRMvRIT5rRBwY|RX$$xmVp?5#8-Ll_h8 zBf3U>pl=v(gzx+Hj(|YTFUVHNSj7RssO_?9&`Z{UnD9ZU1Y5Ce)>`I8HBmsTq)=md z+VSq;w}sF3Poh~&}GPhi#06(lv_#vRcB56Q?SiM}o8!BC5a+3vm1 z;Br*nbusB9_BD{I@nKc6_SqBBuQ^ZN!{_Iy3H;ijUCB+3T{?08GdEqM!l==MYOKlk;a*v*#of>qWC z9z5fpPA&vo07w%o+qYkgGOIZ?^-tT9zC8HjuIXT2!LWtR7-uszs)rVSis0hARIqZhb7w&Ku_xOufGT>KA6s z$uH@|sW7u_omgS2d*gWih{_7?T7QP zi|?i@?XS);{1j~=$_{uX7r77T^0=1xI>epY)I{wK-v#*srh74H_mzK&r7e4jmQ1wW zo!_rlC)K)W{Vcj_R>y67z$RkvPGD8MAn{RN774KyauF`u?MoDutomkl4U0H5A2#0F zp<&ps)alC+2O7F#Z)zomTV8>FHq@|JB_1!j1MoZT(;3jCp z7LbOrOWlSws*E$=&vu_#4f`B)3A<@ekkEpT%U=?9YCxi_+V&8?N~=;W9CkN@7be-& z=~Utdn^KB2-ar3PvQ=#tOv(PMnf7=v_EbN;zZ2O>b!4_X7@x?)*`k5>(AivC)tu)X z`x9;vMXJk>_U=*mF|P1#^O-OG+vgsB=v|Y#D=LP?tWD>$4b8%O9ddU~+BZXRQ<#;c z%+`51v)KQ1%xCOs>BO}h);0+Sl)06 z8H>mMJ6e_g>lXP*Fx*0{+e|C2cNAh8WH$aMp>u2f@C_M|JwHNVuWejPuCoY??$aA% z*~csvLrT2==m^#v=fQm(zeg#e1LDgv|4QB>h(+QfSBMc2%>lXdBK}5+eMk5s$wP#v zaCMro391a;)&2dZcwb*n@vY6y(b3U+0BmV-dN74Y%+pGIa^#uqIq}uJP~gLdUeGXDu99bc@{C z+ddwd3ixHGV~(k~ za_+3K7|?>gmxrvMqijOEHl*G=%53)&gRqNzksEuQ5vVqBcCk&hQ<=W=8b7JNOfJ>&$RQq)s*rlckhY~Ia3Qcycw*49tarUna8ek z{*JDIdtY9me-$LTUlffne~I{XJYk85>pexpQK!yk&HCeKO}Fa0!WHq1C~DKE!(VIz zH`b0~bO8~i6~YZ@FRVqA+wppFi-XEB*;b^<8yJCeI02{&1ch8Xx*ljmwcXBy4;#!U zsWkD6%2i)^=7Q_45QQiD0!DzjC`*dEHfp{k1_1WDX;~|^(EejGWtXK3qu+>E zB1{72hqg`Zq*a`VN**4KOFR8TOEY4TmiBZPk(LVb-NSW_=+^Zm5vj70(lV%k)dS70 z^%+efn`~P(D#*H;geANjth%Na>cYf^8u5zwea$UBIyo6sN4m+DfV%kH*ta>B2kq!K ztkf1^>;4wqX&0gD94P8*^lV%cDC;;`UIbsX6;CsoXuyUhX*r;^l`copY! z-CO&T;@WEt0nHP?nIAbyu9oV*WRv_29{>Dgg>0n(Kk@z34uy+3DSu4@j0ZbA%6yWo zaC(m<0w<4LKJUDtm#@hL{nhSt&7PDn;Ny zK!@Y9MAkw|WNr5SX-e>3T%u`4*Nqo~VP-A$^++na(I}DYb7v`ZpOtLm(3h&!dqbm9 z1Pp2X@7cRoag9^_c6)d_EbZV3k=>OJN*{B5 zDgl{ZDl0Po205Gh$WGg|&W4%FhhEFfP?(g3fQsdWrr*!sax29Yf|@giG+ZPPO0VHC z5y%Un&ZmJVFxgWzxR06Y0eEW1HR5H-`>&a|!w}c_uB(~XIHO8-qQH>2&tbnp$6>y!3Ot(P` zd3`Pl>HrCcl&ar+62+&$j4>xA83nmV39LP7x4H>idyHJT5lij9&^j? z6@FDYCiE3^MkTK<7`Z?(of+0Jx+JeIX}Gl6Z;}#5n@KAP<7=SaB9D^6&M|(S+?-y=je-Sa^Tqodi7K3FKUMa`_ESDP zC|{bQj1{)TOl*y<`lrG+WUNT0{YNE};eiIKl4O1&_AIk5RQD&#Ro|q;6}r#K{DTV9 zSBeI<#too5DZCWQH$%5))SCP}j%q38OZ3P5ft@jdX%@kmq92)qDOdj}dZlrK%548b zYC8Y+iXh{J=i5|^UJ~S;y+at;haZZ?EQ?flfSUE2h1^H}hu9?aKGAi9iv#YWnfa)$ zHzqO-QL(`cUV7rP6A$6dFN*?kWS1O7xG}7aONdaDASp%{;ZU5;L(A+;Ric#D?t4ZT zmoP+uJ))T}meVJhyEM3CQcI%Fq>ZN(h}QV0q_({VU&=f)K_-;RXiUUhwN3*ur9Abf zK28u1p))_~jxkS(Hj`t5Xzi|~f5W)h-g#t9^XIT$+SIi4=6m#D__66L>EFA=%c1TR z+u#t*zHbroAu#0o%B!GzgQMf4;uKyr#TB!mWao2R2~w=925E9Ev|*NWDz%adhl~tq#HO{QqFgm65$7~JP zk>+fHbEyfs*{S-CmS#CvvO_>-xLwFp)*~9mcL}^c$fL0HQcRzMeSzD(9`oEKkC{Mm zp%zeF6v>pWu|YA_GD?o*VRPB(GbpQaMsW$8`M!W|C$g(OM)Z)A-6!*Z`qs0-+M}p) zeiqIo@V&W83>uukj4wJC&ly7|s9X?&jRnPKOFyzN{_6p_rVi(iv8WoI*awv4K{L`MYce` z1jlz_cHVGHDlCo7X8zC|&sWn7p3Aqe)fR{23UP%Bw+KshjUr}{?|;qy_7QM=*$QCuZ8Z#e~AUzfO3#1zm0`Bar#_}YJ-k_l|= zQmVWoY{~9Pj*F}@t|J*6ES%vNsmyLiG7<_qxu$3**x310{cP#PWl@&@F4{Lm@IRQY0|(?fuQOuwSjy}7E;Z~2t9g-?UQgx@RJlm+^D|*# zKFf>U^mzFmWkp4NxZl?V=5q6=XUw{Xm`?BR$z6d~huY`ndRRU}f8tI*!bx9cW3)Bg zNzs;#UXf0wEfj}47>5Vei^+dHT6YfDq+uA}g>UfNYTA3HvVq&WPOuMI>Fm6xG`-n# zok}QWlNcN4<*IAWsk<6tB$~h%vo7`ZkTG2N^Ar6JB#wQGb*o=ons3o-bR&}xLTNVK ztg8w1o}uT9E`1=9mzg{aAImZ;-jFra3rd%Tmy!paAkZn`O4}bAx69}5=UQ5lZDfLI z*Z}#4!&DNn$#O{`iG_~G#UC`uqzaP|6RVQIw(cf=9=-0SN8%Bcl zCk57&=Ih{w9TM1Q$fub|Nr=-@v+3ybo9{xIJt2fef+2iH-9^N(aFOhjK3;W1@n0qs1}nm1*e+! z?T`PNg*l!K?=v_Do{wW{Ek%VzvGPe9+X@Np@1h5@E+%EoQY?fT+pDdCM0fYfHV3(2 zv;7RrJQv+(-CX=sUUi0=KDK>}BkTnLI$**|=O8FSGICjIVN{?{1j&|xF~p3$cbe+C-ARl*tWl@!GaSwe-aA!XPDICa6bt*5 zlzxSvA6mDW=TJ=S1xib2lT?fF30-7?3mKA^pxrU5B0;;)n2<>z`~IqK&<|M&Cq2lv zg|7|gqB7Tmb4fK_rV8C{3v$qp@Md(F&93(>w!$~TbmVq+cvJw}3;c&%yWg1!>cNx7@ zt~z|KWHIL1AL2bbSm*qc7gSSD{m^}QA{tYmTU(m_!#g^4rn)XdRc>nnQR6VM`5;TK z*d8zyqnt;zU{q6zEL`4fyU^w6MXkkSnScD7=9>1Um5gH~Y074y$mx^vRFy#!MpS~W z@HsA_?Ntycr-dH_PtmeO;jCpk)(BPVF>-8D**Q6ve@=P^PMrUsqlB`dMKGc*K$jze zTkdc^nvXz>_XXMDYl&MnJY(z-w_-kJu6nDy43R9Q0z(i(-(iXj>-W&fV(aQdpi#cP zm%?b7}3uD^v$g+BkR(AT$#coywGyAaAhx7S

    4%RDNa=#$9a3;|rkSV+`)9gYoC%9T6O_lBU=l2@5tjC44k-qsW&l zjLElpk6eGXdqwj@)xtnFA|Ho zV(F7(Mr$0G_9;Ykz0WAQV83Ob#$w@8IhWyBG(r)+NPo#?bgV)Y5POUpgI(x+q5l3? zoSReAM+D!XBYNOuKn_HyB`Q2`|FtmHwpbBMv1$kkiJ(k@7xEX1xJD!k#;y6f1nOve)yPcPDoLrlQQ zu%!X>&G9-~52-txV2IQhPO74QTyZadVHJ;-Zp1+$KST-q`9NKwV+_IV7}7AbNEQOo{0i|dC=q_X)I410k0UA0 zcxk_k))`)EXAR8a4B>za#V;>n$LwK;FHiSXdP3#|gsP8+Qns*Y&^J#A~$Sk@z+DE^mDZh)e0h^OHemgC-%6^|Sl&9rD7~ zNVlje>OjG|#WdGt8Ug{EnzKLex6_F%zEX(#I~xzd5Frpcl^}U!8mb6F(Llb>LC-+D z(MLYg()TtBE{ZM6);DuTnO=r(@y39Uh*Emxey7VQmnOxaiU6~`b=G;w&6I3 zt_>bT4E}&qoBOk&rPygQSLZ`TV*^@JpGg~1iToc17=eTl;FLu|qSd-MRJ>qO*OTliL^O&hv z_!9_rCW+RiGp&+l@br2KBYIPAtGs?t`sVNil z6=FWg*Kls>k)v_(c6;Q08Jl{EU`Dmw-9>PLo54S7#7VlziF^OXW|QBYT+j8%q?9i+18@j24m0f#+X<*7kM+&x11Zv zMlU7oXxdtC>N|P7+;4fMdT?N;X_c>|@6<0<5uI35IXrV?<9T*J z4^v5nN{DhUg?4WJ`LfKB-#~lBeu}ls(lWDzBYE zK|zE1K{QUOpHp(;WMLdXFki5!rS-Y2((OWVF6@#TJ9hBeFyUjn5EYJ)!PH~IXjXrL zddpR8(py~b+wm92BwWM)iz4e=TrZye-?(1y|HW?iru*;~*L!0BPh9WY30@O;9)rKf zbq;T*YU6MXq2MXs&f$K5O(obi;^3+~xO4GeHCDo9k8L!MH+H)hwW2~b#8CT3hySne zWbo>)({K$fZ^6dkWu?H)J?=)!rf=tMjnhk5x2dlK$GC6j<6q<4%2uPBad97S@6Y8W+_IJQCXCzD z^D}i!6aNQY@y0ZlkY?4@jAFzE$#|7oOg0dgTc)ZL-3#HjusM#Ds zJRD&(d6lBdsB?<;ltx?lP5tNsW5@&HJ3a?ZMKE&SemBCyp{%J74PX~z-b0-(ko2#X zvMl%suVB5>aULLc$CZIA%Qygq$Gch>I-ygeYO?W!z5UhQUW$wA1kKDoU%8Z{rc($b zsRWG<r^(6Q#`uh$=9hMOE&O@3z|gU7e2;#C=T~!vv#;1EMl{*6fsI1a4@6ZkWvXSBN1w`byh3BkwwaHDilwl(X=&gXf5B6|UVG*JAU8vj=%uYd-x{f{J~RmgF|xA?8AXevQeQAFrgC)$DWTADD|?XDC*1E_06NDlHB+?vw-cb% z2vvh8?)F73wM0m<9tl4nL zL4CZl513uck1&$ZzdN*6#}p3^S(*Xf@C$APngM-Rq^;H4;+f&=3|dvYj>knxYu4TA z%2s#PqdTk%Yz4lHPRvy?)rU^3ePmaM8Ni#M%T2H5uE?R@79SR&#fm)<{yuAw#d0KS zhHm~oUWNa{oQk`skJFc@k+M9Ikf)a#u%L2*bPk1j8$Y01p8Q&W*B4=qUn{-BabfkNj{^xB4kLD#IRP4#N>kMa(#>4V9 z@5}-ZLi1k0NK=W&pH?ZCkp`NU1?~+mB7+BWyBS^S?$KZ#TrFnqrE1gK5`KA@{YQEh z&>AOlwhDjIdTc9dl7e!~&pK2!gFV%5ZOwdguF8XHNSXQ5uN$1RP?q*S*^OfzBhd<; zjCiO#t5(@Jc@2%qT9QKB&L>>wBKH$DLRt$@t|Jo}v%0E;i*5bg8Dg|}pvY>mkf2po z`UAPOO^#{<@wxn1RGRsWiA&@icp-xs!rb_K>C}FeG1;QpSRvHv7@_V%EyI%VstncU zEwt(0t)_Uwt5=#3;OYO?6|qK>BGer@A-rLe_W!O6j+i!BIRMZ@h+u5IKPoQO&c zM9V5CtRk=%m{UEPj0#%yma)uLBv`L!huXdRCUZD$2X{6bBp86N0I4~UU*g0y`6^hw1(yU!^NN$Y|BkptS`tSq~ElRml(9%dE7zG%XNk$M>UX)KnyQ{qPlDZ2x@eOI3P;s&aDWWt%dW?a`<3J8&3sAZ zs25)$)H;?>njEz{Jskg>M+85hv*LVPR2j+BU^a#2aMDSnmB7QPJc>ru?{h2>U!y%s)wKFuE}c(d11vXNtM77R=jO^=w}I>gll6-SZQIMXpjcg2=XGrP z7xBVV1C1=Lo%54AV+6ARMopuIj{x$9RjrrjLT;)y4^19&cS!sd8XkvD zLP!^f6g3yyJ4h`lM^&)VhegmJ-VG6+|1I=1-CydD(R$_c>Sd$dF_L9&e^S>AMd%@W z;qC3^W$+<|Y{^al&cS;*?hfbTPxCoCu|Ue7)4xXu8(BoCKCFoUcaLZ))-FN zj%5*JwP%InZ(D?352JALh@i6mUhgPciI8hN=;g~DmpG7!z7Lz%Exvq1NbV zC^Pl#`~7g)9hau?+VySYZZ`?r%oE2z<-Oc2{M1=uE)6F^L>Ao&P9NoBl3?YDs4=c| ztVKN&EQg^wR8!@y4k}8nhaX1TF2{_nS7DO+%zm~m)7zz;Pq^2-WF*2yqoozfAS2jd zOwq0h=9%R$iK|7;@CDFe&C5tJYYiL*ja>SCfCh064TJ!coHwfxHS7{ ziTSmcJ_xE0PKKdfWt}tIN7vb1&1n{xsb)~BMAN9Cx3|t8EM2`morjpZE)w9WgS|Fs z%A_hyS5nPasH{khrWh;n-G0(EV3q=9V-;xBr(mLTJwf>g7{sL%>ybKdP{LYgp$1{RGfpPU03UmFr0==f;#}$2{ZLz`^IWZ(_E}@ASi`!g z5|u!(Z0|-hrRnMAV%LDYeo%G)8m~6nbhChyp(M_=;)$D*)GXG7cFHX3cTC*!NS31D zSw^ALPke*IqcWp`S;;!FqDqdLSd$v@J;joqFNjyNSC9j~dz0@N@zth``lYA>@EA%i zdbKO?CCb#=hAYGXqhk(S1*vmsmQ*6b2$w4&qtlt_p}pB3@ADHP3ND3GAJ&b3aZs$X z*&xNn;}{`zHNW>BdDh0sZD0D_@#4}#ja!O7&9E-@QZ&^d0C%*>)|xoDgd)3|;mjSp z=e{H zKd`W0!zQvi_YTjydHeu=$qA{x_4S%Mt#tl?kSz?~M}|YVNTqH|`Cd6Tc7e!UApm*Vb96A=%QrBXfjDX$^tK_#Ej z3=ots)uqol#b1{ty6!Lzfn)TCd+z|aXK3O(vOp1J`rW5?rzsaw8MtqZ}PaZ>D$(k{N{-8>XLG)HQ?v zixU;$S=@c+X-%;>gU`YbI;6X`S3-+z9zAK@pxS4bx{FjNaR4u%uLQWNYbFNBuuQco z>QC9pk#K5z{sT7d^*kQaJ23!V8f+tS{yJuqHvJjw;CKG!LZSrs6(R?0H{AtRM9T(l{P9wSjMd3x$Gj?qR^s`X8dnp zZG{Do&F9r+7JL3jw2}jsAm~P#f9o**mw#Rh_V5=c{+n!*C5g>XIf*Q8ilFb&)oF|nA{zcV%C^jv z9SOuHGpJIm8+PV zpkTYznxx`v69(d7-%amFNEZAgosOup_7H{&Q>gyr@iKl@EY*9>UQ{3hIY>ECBG-rfH(bO>wA4V7HiQJI3!dLmRWyH-@p68BD-v)d;py@$#%PHd- z1b59keD|A6F^mhpJc-+gtAv>kZi+P?7#12NfhKL+f{yc>m}Fn>!}s?j>$aWdRWBLz zC_mDb_ZcM_YTu~Y%2ij(FX5Dt0(#9XVB_P0l1EH!CRJ?Z>Z^Y) zF(noCNo>M6iq9+!CB+3M&xrL@&&YOFGXp+v?fkH0l4x0C!oF6NXC{jks~>flpgfkg z`5^YHz|=!;a_dT#M{Po;am;Y(=rzlFD&ah`7)r}_F;K_2?9d8G$Vyc6Zj(A8_>peO5`uvN1= zSgUA5YM&pQd{c<;F!fr6iNPEHeZmKJU{~4r(*U+o2yQzG~Qe3Cgx4ExishU@HYgcc{+Wk>P||GY6Rvs1&`w zld_6nPp~5G+=&V&k-IeEa44-ly+S$%kpAKF!XNp1a#W2F$H#oP{nA%_RcE~ku=LJAT*(-&fU*1ulKcq zM#y{(HjzCuCo3k#&sX$5s31Fc_ey-bA$CUGU4G_X4E!A4S=py-9kbJ>xy$u4`pZUJ zvXR<~P$I#hAhJ?Y%>A*o+Q~EJeO$Fn2jki`h1(d6`B zS5L&sb}MaIiEg<M(i)WcZL%r*4E|DGz`o*k9{jG{) zjnwyL&D#2^#WhtZ-5XpbPJ&8kU1>xN(7roJ`I9R@H#hAbnu>d6A8gn6?%$}-P|se`x=2ikVw`+nZL~)~8*?~U zRrYoi3Uf0J#drjCP9I4FhmoPfPVrAjlo*sJceoGSSYyyG;m=g;*#Oq4(O+nGVaHyC zjUDqb7S`N(FkyT+CFQ$C;F%MxGgt*e`3i! zjW1?)6`Au@g7*t?&BpxbvmmK(-(C2AP2kICoLApxlv&|C1Fv(#`W2xN)Wx9Va@EE5 z{U@IbE0p<+;+)Nc%>|>n9!dc5y-xE;8`05jUk1_9sdj!=>*43_>Fkga;-I`9S!6k- zI3fP?o6CCp07W5tpk2I(lkc#mW5M=8L{4MzPu~jzYYDdv55zjf?qMY(rvup0AwEJ9B142(wxi^yc>EhargGg}JcpI(VwDLbtv zDmAF^`b&aS$`$(`W*|33%?yZU1e1bQ&=>m^QUm4~2mJ@cQ|l{L1@pN3IK@ZOufBkY zJgO^gmtoDW32*0ZCVmztVR~m;-nifd`Iom-9;$D+(S-8%pDzXDg)7t(ThTR`8F6LpvykfxwuilE-HYTrYE9_=4YrV{i3EBMHHv+1SPqxSTE-pYV&a?JoE2sd2r7vadF{Kx z72S13n<`^_qF8yjS>s}oypyMi9tGyzYUbtcn`5UyBTa41lDAr}LBQA{wdJ7svBW^!Fq&G(UAOyZkww0m23b5c7qq&a3X*58X1ggHR~77GlaOaA zGq|**?@m+gs*CT4c=GY(z6{Y>xHIQ$8lrtCzP}zNIrp4@wTPrLv<|MJ(;c2r;Xmv* zXmMLKs7mJmQ9!Q0mbHgck^rq6J`+9geO}NP3wh*m3h}hxzHpZbC)S7hP zWr$PjA49bs6;(7^8t|y$V(v^mzE1IBEBj($*sz2((UyR{BrYc|oyUN>8K>oKRhqal zP*qQstl)N+*Qm&Hsed1@kGpzZ*{Ha9pC%xC zu^)hMjvYoGc8NGoxh>Ua#%y-+IeD0JWk@JF_K94kzbbO^%dO0kD(tcuu@O7PH@5D+6ky9Z#Ui&Ti;0QyG2XS2`DLa|1CNc>LoaRqU1k;>NUr; zz>nkBc(5pYfR6&fEG9wqQPI_+5g#K+8Wq=rDGLiy(fKM2gbU0u}v;K8d6sIOGqh{ZVQ4I^6f%WT#?TJ zm`d$wF;wU^E^GTZZCLd+@t@Zp;nKJcHs=Ls;);oES&3sSQ+xN+&jW^Loke8hsN~o) zi(fF~i>#yurn$vvBV2+N<2x*EzqRCv_>#=U<0((_np{v*G7Li5=N|jM#vj)1nnoIdkPah{UNo#*w}v;WXk%jvX{2BMHw!tuuyITM;S zXl;~sZcO#eHDc*v!$k^=X+FvZ+lK0gKKqiGJ!%(Lw$wxv-7KPOxltKVxT0gFbJG+ujbf?Yv?n%zedeUKQ2Wbj#$#Aa z`@&x(f&yV9EiNvCo0rNz%nc@ga9X5{pe8Y%@yQ^pzL_TKu)ko{&)l)vSuONz$dcPq zO2~4oVUL2++iE#4oJrM^$nUV<#G++%H>kxj8lwt9&^5mm{Ry9`)v`-P#3O9uQS0X}ft=ZfCgYr6OeNokgv?S)bv{59V{KTgO5d4ocUD*MR0k^0bS*&<9pei#b&I^Aj#^6xLOMy=fw3d;Q&X9jfO2W@Zq>>DfK6rM1}* zYjb$7!bEb!&QH=_(T0H?3GxveG8H2Um!-KT(iXsYRK*Y>-R!!<Bq4l^&8P{i8cA>1sNoGRQKxjm4JyEl3gGa468?`yzJr{6#+i;6@ktf3t*s%|Dz&xOE1;oVx^PA&sO;K7o``+p z{mdFYM|xqvLH5^W?K?KXtC{`_%O7$-RBDpS+kCT~Co-Oo4SnCVIh8SfdEnVAZCE>rp#Q}cP&;fqAMcElTE5dW|l;-)Y znH|T0px>a|R1(RCZ6+zDAKcp+0A(p)n%vv98g*S{<9{`EQh3B+*DXmWGcYctbTmE1 zVsy*Ox8V*uW4ZKD@JY93rF->OpQ!4nVkRQ>mbz~!e*BU+XES5=0{;EsS_l@(GB62# zcm^=kobAf<@KSU>-}19Yrt49S_h?i(bJ_n>nT}|YGK+H1;pbgmYe&~6b>RobUJ}*& zo_Xr2&xaBIa%FJ?(~XQ<1KS`AL3U>in>t4>$Fe;OuHc!fS#RSRKFx%S)v!w}%UxPR z@vtjQV33o=c$GjPStM1G#UI((a?P6Gl1hEdyUFR|sx)LTOUi)E({YmmU@qt1ud%}pdfrq1rdzoEZlgfe^vSOBBvpAA>^W^;-d1esw2H*E zsflO4Z17OOdbSyJ`rtNU;%6sbF;9ur&C8em$%StQVkb`*=TuqYO2kxt968U&L@S2<(uSAG%zbH0bocdkX-2J+S2xs+QEuoC^Ab0g~tz^8TKwf^f+J)Hn%wE=L z;NPf)xsDdiP9V=4hA!NhJftyElt)L9`$;9K?PyXx^#siAo_x|Y4V4Oi`6nPK`#sKv z+P}9pHK^WB5jx7Ef8elMZQVueeT)v82(744OR85DSnwfE?V*iK`0)V-Rf5CjT_BOs z$P=E&`!?S}r`knBvv?;8i5X&#blIk`)W&oko;FtAKe66NfUL%q2Z)U8x^V8UHE$S1 z97?q*%(460^Voa@#MU}IZ;bsRG?nrI3FHq3EsMW#ob9@l zVmt-sG6F!At_sMN@F@Q5N>A*AoIdZnd*;RMsGUB6u|VPf002RlkcZ9m^yCm138L9` zWkuo>Q1l=oiVLeavh77$QeO4_GXn`Rk4a?yQFNL9nwP{X2YnU;0@TNA`-As;uP*O6 zbF)3I{a?5Oo@~YtgL^8=*Ls&m`VQ!q_4*O)+loGTNaca#c=p&<<$r_{qSgC5S@Z5o z38c>`g*THx;B|hxBA?BV`X!rV_Yv`K<5FcuK?!o6%D%;hz?JzMxA{f~>eAUVDYT!R zz@PN;>pgQe90?hkQeyrJ={PzR#kf3HP>(`7H@|KGPaUpI=}!ZNU@9TovAikdlvpl= z*~B8}RSP73ME6Zc`6b)f{aLn|M5;8kDaCNssx{P%1b>n3-i}pAL&uvu>D2?aVmzhz zS-xl+Ri$R7{;;ndMD-7}BlaGz7x#o1>PDqo9tg8C4c78lNTsyly61W^p*c#R8tD^J z1{qa5o+_8^Na#@C-s-{-p2gTvyWm~P8?nkt?gO!URkA+K;odKJ=e||~Lk&!MA&T6k z1+#?sabLNJ)pJMN&3Uk-T-pX2V5?k>TkxlTzCHWC+Dm84%Ex*GXYb$0GB30=B4Z0( z{EPN3b|lrIK%x#N#*kn4Pmo_&E9Un0iED8TbV@W+jimpk? zD%H#Muy%;vHZjdg!A5r)d9S(m+X;I(K}U7da1IgL(-DY$L(%4l%w<=DhbHl`v~e{C z^}IqLEMw_HgHTDQ{;uwK^}OlLPaf?&U>oMcx|d?UAqIz!#+y4E#qod`0Hjle2XE%qi&D%N01T+631H~;T zew?;vk==C37_3CEb8Rx%4I)OX($pO<>v%@I-g61jI-zyL?La9xQ}`9>%UTpm=WDd2 z)*T>B3$qtMGLdW5*l?lk85(TPa~{mCdwW5Buisr*c>kY+zNTGKjG%wExOoK71Cg@t zXxU?H#cEJ<-nO_6&L2JBcYh9e`Ykblt4iRpxqq1|{v{8KcKBDsRiqBT!I!a4 zVtK5YrsebrfZo0O53k4h1=?WPzjwOT=r~{?WH5e(V=HlYnKOxnz@rP=DJ(>ysRiZ2 z{tt;|CkYZY@15Sysn-;G6RFX$D>IJ5?~6VGM~Ok{q@pp0H>K8u9MGg!Hf3CF9;XH} zFU}Lf%GmX+GtROo-P5dAqN??gryGh5j))Ltp3)TYo(gW+|De_W2L%_l|6fd&Vt~G5 zUyF!EMsNqRe;vN4{_6mSdH+8LFmJSyiuvFKE-U6@ZyElJ!IEnX&IbDp?=}Hv(*$mJ z5C-(ofO8gb|2VL{3EX!ET#uXh%V_z=a@qX`xdZ3+;PHasG9P$d+w$YL{pKZP$AnI^#R*MoBQ~aAG z(lTxJNmsmd?~kTy_!dmd%NGTs9vcUZ!J5N;6{2&oWxbMVeR+^&ns+W&UF9xW6-$d+ zbT!CQ{84LID}L}a_0ZR(sp)BmrelE^j#Mh;s><%=Ih}*Yj<;s%DW8w-ek?&^CGz@k z;m7-I)?>GqSCyZ$HS4vlRm}fj9w9qk0iiAbJ~z@ZQ@nKiB za6w*&STA=d=+hCg2f^GYIu$pHKk>^5ePl<_+f^4aCwPJ5zs9$E zRttTK-2L#*6K4Daw7KygHVkb(m91yeuWS1>iO5pK4X@CA2 z)ePKJ&36#ltV^!dNu7hkjn$$=?c}^qWjA4S*j%DdcBs>v375!jbh<2#K`XLRVrUm% zEIcfD%5o}HYwG?Y*+3_NOHE$iuiB3a$ZzT&HhH5cF0E%z59rm)c{fXiW?A3# za_%p#_0-AF`Bcg;1Q2tj+V=t9;Wc^L7-eBIkT5FL>%G-5I%5#aI2=ggzk!ZKZZLUz zM{hWQYt)x)YpA=b9*_Nu?4b;%x-mH+S2h%GtGCO!Jim;{W!ykU>9U~lEMSId>(h7m zeH}Is!52c8ppN=4(?mv0r`jEn1J^dm^rEFj<(i$FS{_FS?~Ry$NQ7IloO6+DaAm^h z4UNO8=ay#)!stavYy5GwENSp{#UX+5?u?E2Nb+TxDWiy1csh8jRu%;WGotNtoMu>( z)?~UfTzYaI@U#;)n^31(l;JU>C)!9|MYZbx$hx5$vw%ivpoDCtqGhAeY7hcDy&bHt zu2NgXF0=_4GhB4>UOoQhD}%=PgKL@2X%}ur)Ar|QBl$m=H;y0j-3$;;qf|-)-4$8O z+&j`p?^*!)=hTOk-2OpPcQO+};bPy+Xc_tE^V7{F&&-Do$x}6m^tu*M>xWW8?gVKY zH6jaC_o(1KlJ@Yc$+ny{o$|XKwoUNAB`}Xyv~^BhZ=9IQP!Bd{DMTDCckS^t8R3?* zdc{_hjHgh*@al;~nJaNO(5wp>TTV1*TigpW@0d%i;0YGDp{6 z5zrQqol78hrIYV(4Xd*UO*I9mj$_KMBi!3cM%bJuvTz5`bRvlhk0A}uzMDhEv-%4Q zvHf{)%^*8@?n|4Y@HHYv4;0(kMKK%PgA;CE7%uyjd=)``7!*dmVlq)O$d?K;rZ;3* zl1fa4Rwgaes$bqyi>PP+yGCHCApiL+0K0`JLpi85JS#uxw_9cDC6*9-T-)V8?3hxU zO!y6LjppIxX?n|=RfH-+sIQ#ZB;fBbDt@e|q-$1;49<{)hEE+}OfNj^wJb&3PX1Mw z;s&yo3U)gFM@(-LEtJ54!lK%=^DITwyWEwsEIQ2lhN?M;X-*sINFHB5PB_0L^=pM$s8qL2B7LHWi-fNBzI z(v?Udp5fzND3Tq8!k;GiZJGLBy<~&;r?nNMhc}q>r|aBd$}5|xaW93(Y@zR0?qOX$t zIOnvJvAAO*Z_k?4iD)YY^u2pV(qt{0vJ&HUO}NJA!jxlb8~C}G4K1|H>55xA8_Sf- z2F?5(RXgEp*S@pVu4Vt0cnTQnC2Tppd=TovQQ4r!W?%hO`GdS63}tl0xM(#VK4H@Q zq#|zSbnk|#vS!xmBiBVUI(9ppyr3GuaKH=>yS$5(Z*UGVk3B$F>r?09*f zdVM3RP_qZ8j#C!eIJtc0&$5wA`hHzGj}m+$fGy3Pc zuE;X8i>0irm~V+C(}Q7%lL)V92SVs_{~A^wQj2q_t9s$1L%bi~T?iAPs#Iy5t3MLZZR> zj?z(;Ycry?WXZPQ&Jiz=eXsI5wSqq6JV7#?HkgZC5%$oIiqbQvQP!h~;996o@EcMV zE3~KkXJK%HrJf7P9cES0%PD45WOsU(d`rTqpBPLUxiX^r?z*jvSIc=SoX+|x;;CDD zNEucgh53oCoPmMM$BcTDNaLhA!xPYck#Tl!0EuSY<3%Ngi_h;+WD<&>)LTWLY=J6`PJgeGoQRRw`C$MG&gpr%y_Vls>Ag-1b^9I4t$`a#BHby zImEggiXG_&7Kx3R-oc1HjXfy}^*&DQYu&^tuU@eY;VV6_@&z|^lve-4R=LaCgl?p~ zbn40d8EW?*w#sAjMdvAU0rhJ$>l=14A!3Dvx_{Uz+0EFZb8IkqAp#Q~ZsFSZ%McAm zQzHk;8F*$;t?jv=5Z;1o^18aF=Kg(9+iT%43FYXw{M-w4=>@7unEzZ=V6;m4Xi8>yD-TiaW)<>t(HRH$xT8)tTxo(dz#AI?0y-K+a` zB0G+I&lFZ})ML?mIlsI~v_jSWx$DsEmr+}ja!cEmoVfEvQxZz(en_>cY;#v5HstSk znMXELP#V@v%xUU)qO=MeRcB>+u|ThdbyVgAZ;a8xv55iQDQozH&8#BSbAQ`cf2KM! z#@=0~bTidtm#e}*rP6fb*woS84+_O(Y|nPXpuAyKN5-(~6`$$@fw9cio8r2@WG=ge!_DMf=iN$JJP8V> zI~eCVi6r-bM4LIZY>7_LH=NVTf=+HG7iK!+6%Me#Q&QL2AJW+CTI)?MO4g(5o1SMl z_dVUb16w7Q^gR~!TaH5(-Cw2di&jjVuClnZ7S*iv8tl75w{KLJlr4ledTd-tz>`3L zt;fOGgU7O9YdW}@1ql$h=v!a0#2o~-hJp){-J#nvXkcp~xS|Rk$N{dX$$|UBfd|in z4OMUBP{2JJ-o^!h$F+b9P~etB@YFQO;O>;*wYDf4p5K&T-|P9Lv2FY($nJk>bs`FU zLRtwQsF2Vtw-!lxXF`n!_xcL)5eAZvSijad;-*lD(Kb1EF^&F-jrXg$&v89Dx>}_Eh5G%X@X{+3RC!(csF`38x6s<>}Gju4wC`7MJI; z3;(zHw>J^YH*X#l?60f;4TXD)b2IoCn62#p;n=(UInDt4ORQJ#ix#op-dE7ba(E*Ci(4XY0xIk5{EgdkX=;SN1bJ+x){y|l>w`{| zh?=FWZ$|AMW5&$+`-e~N)!aYJ9*&WGo)7~HMCWb&>R(-N9!JussiI<}2(sd3d6}_7 zlR~dPi;}6T#e;%MVpQDKzMDCePqy?`=FJ}N35RVmAuzS*u-29;+LvHhxY5N;sM7fa z+meWPl@M5o`>JWI#lhBb{Z^w~a)7ibv?_vGl3iCstj%XneaQyP7J^$`o+{oXniAQKoXCKNqsYiTQ)&vuL6So z{bHIZ{9WyBlPV9|D9o%05uJGv86f1!GL*{Bj=dkGbeqAV$ee*Dry7r!zJD^kw{g)= z&YwcsE$aKe+(nikb-*M3%pql|7~7YUKmP@TA8 zFU#kzGY37AR(_FZb2rX1K9_j23EKUuJN&Hu+1b_KoJ1)S*SZ;|f2pMXbdoVE>i!b9 z6ibY1`J-K8hFEFosEicw=#@MqT3T-cE&{<0HL=uE^^n3=-gN+g)GN6%Dv*-OjtwqKMT1>uO0$ z#%y1TB4PpRc-nn0D7$W&uwad3M#To4)LKf8BzLH)Y_E1_`yuVhYpEilqMt{1XoSB4 zKm8FqEeIyJ_9I{aCRRU{iOks)0E5jatQKd8S@eNRAlgVpzE?5S1`F4#f3y5%1UZytUipb` zPdR`qUV&?93i=X$$DU0y`_8!?n4&!G90Sk;&tM8$q@!O3qqymC#AV+lH@NmasC_*~ zVZ5b7kxjgYYNQP6ETNuzQZbcwyq65iXc|s&Mc6Jt$V_)Sl};?|<;MMa^2m?cwJFF^ zAe#E*T!NEk^pr!H+12d2{NnHrx7F8dcQOWZv{RbHH8oT$*jZ$4NRgsO>{DS zhKm8_RSOc1=w1AgcW|7Se=K?bAn?8ZWj?fFk!aDOKGdqT6G>GZ~|BIvA(2 zn&{buQKgk>dbf*vo-cm($Xvkg1PX29Ivb8zC`&Rv&MecoGMhkbj%4mbBOeDCAO5QJ zZe`9r4hCK=p_e=fsN%OL!A9#QvcB)lk62^AI|?4DX3@+%{$i9jE?X_oqkYix>%}3* z>Tay2b#7j~Q+5d=o@b3Ue-u%;@$47&10B_XWitJTSW*&VG3Y_6!?B>i?fN68;@eNWL2+gRn1H;&S{Bh zM?TKpCux4jz7c?AX?wEIp%Tbg)wj7VW_BPiL?ujaKYm)Z( z9I48K81wjX^jc?p7-(IFLepmrG$7Zg*3fM}61rib8xpP?3F(pNJfPFxx)nNLIfAJR z>)bcTWs}wK5@+0~;9R+Oj_K}k?ybj+1ROvMZ&?Mi;~}ANB7j1+ra_Ql zJ(lp>tNRI?O!c_X_Ogwth7BYuz|~Qo)rZTf_!NdwR7_QBP>h<2mupbG*IKg!k0;1A z@fd+)?SwP`FzE_^k}8hdA~epT?Td0|HS}b4H|!t)yGa)4)Q2Jw80X+Nms@VkBk8wq zRU?K`LNx=?D-#wavBA{{zco94O)~NzDQt-95yTvmcdx(LsXl+c;%r+^5?$IbG+5Q< z->(F9sKeWqV^LzvWzTDhBt!nP)Yw)}^<=ZGh9K1rEmyN$zeYt`k| zv9N%prN|DaZP(=@v}RxqB!$bjYlswtz0WQm%YHs3%cb{WSoQFF*LVN17d#NHSc)u; zWWlt%9Uj4+DDrL!#EsIy=EH|?f!+>RD0&aPH*UljS|*seo8G;%g- zW9Xs&ai1(#dF_9*zFzFE#@nw&qL+z)@*H=U&^3`Mr=&U_{xXhC51$gv6{6HrW)+Jlf3#@RP z+H&O^QI3kNo+PM!swD&`FBWROLX}s6VFJYqy5g#O$qB~$ZZpJy6C=hS4Lm1b)2+8& zT%jkTr}FtzD$HsB^24a%z$*M3i(ALV*k^(r&~a8?*tkcaiO%~A*8a!Wq*5GL!eaIc zGmZiSJ=6s;d5|nY92eg#m%P+il^y>pCh~{xVf{?jdKW8ny`4@tq^nPth8qzXz5|Fn z0*&8bDsJ+{w~sF6MXmmc1_Kd{2awmUT~joFt8n9rt81V2)W{vr*UP`TD6`3|j-0x?{C;9NgcOlsQ%#|QHgB(0cO zG|*gHJya}DaasbOz_tyZ-KbQmJ*>z)S~*ir8_jKBPeY zHRTT|3Hu&9nfRbQ4;O8PKeUGmLI%!D%!V~T2V9sNj6VGd?)u($k0BQrE5&wDLfeaa zgx6CXw7Yi2nWTB^k!Gu~sWgf>LjElIdViZ9pf2ypJPVXR?j8(xuo6iu)b@l)NW!iX|T=bzP@a6DB^z z4Cnb9-|Iq>jVBdH5Ag@dElvTqfDu1* z^z;$h{inma^==Y49=X}*R%~%C_CWM26Q>8rSwLB8(p-{Lb-ciS1+Me0q^-n~Qr9Gt zJGq_F*RokWw@5joHKC#5fW=~u;Nyq}%sU`SJ%#?smIR>v{usZ0_yDleb6+CXR`R9J zWK_=L9_SuRdVtf=VrU_>wD2}ge8;d0=-+^8?b^N+QV(PR5LsZq+1YFvH*O-qb`Cvo zSINX=#5#mGI~BP9+d|f6-|P05UjB)^(-lm3QT?&s88wK4n9m9E*`RGLLI2%PamWJ<&s)ig; zhWeXKAjJDCB1sKeSlT~o8Jus0W}t@$5f-5xUVl5bn`vyP2W7SQx}ix_9_;2CVEwm5 z0#NI(z=AK>)Btt@WdK_@8DO6jY#IhTf^TvNx!5*T_WTye-~p-s@eAK%7JV)HXlDOL zWBp5F5m@loy?qP8k_C^=!nO$pw}8D)wVcJWB`>MB!)njNT6?PO3X4?>bnvQg{4#0a zkxF2HHXH2E&cHPQ_y1}&l>JM6p$dFsqF{eE5A4tWOX)!s?3S9<*PL)1&RCf(JHD9J zIlk>rsWRUr6#mZ>UJ1LWu7iQladYjbK*$tl#7+NrKejbit*p(B$hEnNBR?`crhB5PM| z3u22~u;n-m+*Fc)9k>_;E}()fG)Ca2H|z6TA53uPs<(b|U`sBz0Bm0pS+aN=@HUS) zxS%!!w(Pt$^?(asz}CsPX>`G(<#vQN@)8!4>jRS(XDe(wW%cgm1R#mm)}Ts%=zjd# zff*1MVgKkjWM>5n8Hf2oJ){GN^(DtiUAN`;CtYf0&Cj?GB=WCMr5uwR`wg{+hSM6z z(j`aCGrm@#-nhc=YO)6|C0GCCJj+WaTSIono@$V}TR%dr@m442lXTf*G zFA0X~OuO8Wi1loLxjStMID70}!AXMJ9=1tYp`K6np3G=g37t$vb+xs^iUK5JX9MP; zPvXk~@^JmhZZT%6+yTs?E%Vs`xmdRBYR1IjMgAfZlG;b>j)WWXmWYYd#IrAs$DYu* z_Dwev$&W+smoGwRqhH7mu;fCI8ibXv&$vd{n%T`XY5v5$qdnitvR++2Pg{O<@5O(k zl40lcu|EFKZ?~i&5Qn!u3O|x?8|r>iEatigmg=ZEM+6(D(@CNl15IS(8sF#rX=OzP zB!;W|FB}50KAoFyY=R!SAeW>QLl;f@HQw_W&MVHw$3qu;dkM8)eZS7`c5pGk7Do8Ruhr4dvImUFMIR1%0XA^MK#P%01!*&P`0KCLGVjiEO7JuA-FU? z*;pOU0^%|lozlxT0+-M~=j7m?=6VGCowrS=k6&xW%Sc(nZk6%M9mz`N=9h)AEcP8H z#jMbRKoFK|P-PE_*jUpozCT_Tl%s}~7m0W`rrB(W)eT8aB$vNS^$iI1O>TL76VXB9 z|RGk(K(Ycn8N5*M~oM}p)Rb@GuXK86XKi*Bs_Nh~( ziRPI%j*`%E$!)g6cl|QLh~O)BIQ`_=6#!vE8V)1N2RxAzkQ%T5KRZ6!OfpW;;gyq&pGEMB{ytX z)}7`=6d#GSDMZ{)gey}WFD1PUk$_TK8C~KU0KIm52 zzS?@t_G0G-Ib{)!PVa3~k#hy-Wso87gd;-B=WU)vX#)hsKduI0u3XJXZlhOxkRCTd zgESVK5w_$k@spPlmjhg{T>c8K%6?~e!dX#~Z6SmG-r@5cKj$H?p6{(f`uvNfkh>nM z!Zlowv4&kUoFYwEE*_;SG!P_rR0=3B9w0y6JoDfD&^WnHA*$joKqWgT6pe`pxx$zg zjM1PwpPTvw8Ls8L@ZNR|&)^QDO;fbVTQ)cCYb>#d7PTJ6KtaL)j#-%!Si&&;# z;hpo604A)hp_Go^!n*$ zBQM#09GzYDRaI>Kl;kqaCB(*8YsWbv=bIW0tW`39z=@h z2fAfi^LwRcMX_Sl-KkDx{UPqU!*TjP&uJ0OazUGWe^kq8b&()EC{AYrU1{N_so9Oo6pAIADCmRI z`nBXf2ARl~{@%ppsnw_0M5auggSf+7T(lF%yU6#7>eNYo>b2`s>+sVx(-lzS5uu~a z+w5I~Qs~9}L-H6raWB+m9}5g+fBt8P=;}gjf$txD4}Kx`?J|r~q`UF7ad^{;49eO6 ze6kru3l*=+KJE=U-ULS9mBZEQ34db`%0V0;izhhN7spaa`s8!fvxH#ap<#VYGjZxb zZ%9k{j8RyYcbq^)RfoIC74dRlrg2-CZOEQHQl;4~{2=r87e}_BBW-qEH{W>Q&Y|tR zUe`r=q9CU&E5N)5O$aIZg4zy>e?)CeskHv4l7N1P?lz6=;_C!->iX%&t(4pfIcnq6 zuZL&G#tt&BnOkncX}unDzu2%%%3^?$nzouZn+rf8auk*h`itkq2P>d=T&*;;J_`G` zlaLYI=0bm5bsTLxQLN=HTO8JT@$|J4Y$;vu1Z>R`*_|tb!&Z!2udeKb-qOdyihb%r z!bv>z%bfLNlI-DwW-Oxa`q|&#Wm6=OR#m8Wy`68lFDpN{Yve{lsR(wck_FZZ_Q_DQv_JuDRL@PXB^RmionxQZf-m&|PG(dH zh1e>u`PtB=A$6*u6Bb285mbUfupa(YX|Y+hB!hAV7C13j5@qtd^RtVZ5r7MkGHexm zf6WqA*cHvk-~4GX=WM5ol_qTa9zmBt2*Bu<9RFypelC1{&30e0ZRve_h#Op8UqyHd zW_Y-jcI#%zIL?5u%lDauqeWM?A#-|pJ2Qkxspyq3|2N`OY#21D~U@N3Gd!Pj`3G$v!FTXB$vQx@>9GfnNzdAL*_GRYI>h>JAOQJ z{SaDUQTHN(4gc-;FU8q}8Rcu{Ye@E0fvykXh^=*LUKsmJR2O52!8@wf@1Mel6pZ-4&wNR9c{frf{3kpn zHQ4p)kT)itUzj?{pyDrZJK?Be3GWTK-9{!?Q;7ctA}^5X`hf72j&|=3`FqCoG?``p zuU`63?v!lu$P!&&hHs+)s%dXVjDFY`ZVE05R$9Ud|2G-`h5wuG47CSxl?I` zvtgzu#3*Av4Z`~P#u~__fK0Z>j09lMcWa3#V@*`1CxXUts`vLk4-cgI9~MtHTLMHg z6J9p{2e^G$j7mqdpqS27wZ{Ag+`bm>Sar;EyvZwXoi{CGa7$ zy4FZJe0n*$Cqz*hd7fO*G8?H8mEfXddfG1m0xvSlZ zFG1`22Hc+f3*3GK%!{=wI$Me%SPx!6LjdwF+*KnouD>9dj~-6~GJ#hi7*$a^KGbV; z+J7pBp*)Zn4}ZGcePU{8a)PAV<8Ke z>n-`s!KtrP-8Q-G?7_gzMbDcOfJG}u^-z4Pue(cu=bppwfV`ev_oZiaq;M5~w!vU^yfa@IKItRF(yhhr9yH45=Y8|~K zR4;1b4^D^{QHvh{{l_riga}UW0sTPm5-i}Mm*8e*izqc;@QUEoSimz;fk&QLMK8fF z5!c~>d!vC96ri65+*=&nRQi^{%}YD=?*HJibt2Dz(f{+5%l^Ts5E8WWaA?QBMz~h<9amS$&gskA;D;wI@>OJpcD(XTCQOoI737RWdBiye(|1LCvI}b5{yB~g z{Cn^lZ2uUkcDG(zh`mr}tWYPzId(jG%m?#Qu9&P6h5b3$9ZAMZzEc>quN2Tm}38Y7M8w zi(ZQZ?ncXKORf7HZU3A**&4$uKmQkhKomAv*50;19a<)S#~Ptrm{Gyz1?DTE$}@h@6{*XlTZ?<^iA$$K@AR~)J41h7`aTB;LTxHzHits`cGWYuNTRGD z+zcH**kLcgj-kNY75W~k#u!}*H&;8et;X=>0+fdC4JdWeRC8f2OeA;rX@+VM-P#qV zyU`~fEJlK>K+A@2nL!?{Ixr%@bL@F3t$Ch|ndHiGY0=w1vYx6bNi|+-5kq^?BKdOf zo3|YpX|8$5`+Fy?hH<$y-e=Y$RjJKjmq`-i;?((yV=-N!K*2$U9<_s(tBIK;E}gHb zdg!|H%eh-w4gIS^Erlv&ED(NXk_9>z2pcbEklcA)J*;Dp+>y&LpJ!H<4Q!Nh(v+Py z9G53uyqbxcbje+-9$=xW9(JfQ!AjZ#H5xNgW|);}w6cWuDPlxWA1f zq&uc|e@J1oYgKSB*cY8e@wO2;v6_Fn1sy4|E5^FJwF-|k2(0`%(XM)*W>_e(szlB^EJxzvkw|mi1#oRl2&Hj|IpI` z{cfw3A!sX=F9F?`se3T@u%1}+e04A?xol|+b*@IOZ3=+Y(8+_@YRIV@NFvyYq+GE` z(x)tZ5t)wljRI@d`+yPs=P_A}pFmzVbbJK5+N!KLQhp(9cbf4lT16^QdhdA->%8C6%abb-P#AV6^U5Zr^iI|PS~LvVNZ5Zv9}WpCU)xVyW%yTiA6a?W|)d+!+E zkM2=j-BoLkg)EqB)~uBYKI&b1&zehDEoXTLBq|mjye_DWUkje7TD|q$77o3)?JmWe zmnXK=0DaAK>b@7tUz&HIM6aYjUuuJz<3T-eTqe;N23b-rw;@ZnxnZ@btlc$SZ7Twr zMZ0YT#`E~-?0>67 ze}Oo+Vpx&2)-@8C<;;b?Mey?u&zogbO=>_r8d1e?0YKj)hMyPxSruY3FmM0NjOF#G z`s4Ud_t<^CCtHfsU^{*_y6Js#^#Rn3tv=T6IKh8w@s3HY7dgRcPiMIoj_-%|QUVidhl(aI zk0|vD`x-Ym6{KG_RtyHLFgB^H)vSzAyEg@koR#uJdeVLTHZw)nw?K>#%w$Fx0=|F& z+Jp%1PWlV@*Eh))$ZtK9oBu1doG7h1$+r<&*Ly8gEJBbilCM4(E+G+JW2#Z4i281> ztK2Q?gWBr_VELJXt~UrfH(aK8z<34y@Let=M`m36c?7GcYH+2VhS_j;vg2svcqsJ{ zpDptnTA?%x-j_C-MpCF*=u{ z7F3FY*HNx^C>o=E4pc+BHHRq8eDoi1G4{fZ_x52v+heUrwH!*k(kYbJusz+kl{MQu z2&ECGBkwz;afMbj|8PX8W`C%@i4%IqB81cP$YdhUXCSoqZ$DGvnozs7WK@RY4 zD&$G$Z)S<_D-tN$i!0Pnp%&iYRIkFTr?2wjtqH~L?9*#K&;$j$XdB|^@FuHo?vrM8 zGVFy{?gzu}c8oK!H%aQQ0`ggrUkf7SC@cmz2Wf0@?WH##iC^n&u882z6pZmQ1O!)2QeX2fDXex2iZF)En zT_*wvgNvzzAlvQ=IpW2d#oX?w^M0(}O^n=olcr}Ns$2R;In`j4R2Vvm14VTJ4f2Z1 z14YHu&cMuo+zBL&stKT0?w@aG zBQ9g0U{aDhMiaW{o;&r-%jXGX0`^{X zrZ%hXq81F+hTe`B(C)K|PWCX_2i(wbH^%czm_@#iYnT|1U=I=Q5G#rniklp>3e{XU zRM!2boNN0Fa3fYKR&cUR>^XZJJiCDz%x*r3#AN}|+DO|*(@I+6=YNWe)k@@5OY+0t z&}V-0Tjs5yr|R_C!RDS7aQreXpnITsg=n|C^rPEW^9MV3qUo63x~<=Raq*@3soT(4 zu)r*7o+X%3LjTvU1!};+_A|!;fhx=R!t9JzmeySNO38zc$!oc#aID73Sm^+9FG-Vz z&4HuMC@nXvV>4Y!yQrjUtU0a%bbR&~&hGU3E^HRRXNgkAIo`}xQOc$vxptgJ zB^sd>HHn)0r ziD?4qxi^6^~Ze~G@fR<Y8lZj>M_o@tR_Jxs?5%(SDeIUI#>D+5V7i3@|P69c=&p@T1_ zzj0&X<1nOYD~%C_sIcWk7vOQcGZjopO7L>s4!FmPbAWD&o>jpw)a|dSP2W~wpvGqw z8)_AzRuA$h5bU{E5(Wdk`X@I-aiaB}x)8B^(HbR#b> zFQ;J_fHpg<4L*eYTZn*dABi;n{9UW4$JG6l-$jNUuh2*t8Sw~P>LAqJE%9KtzFfc$ z+2Pw}*rN2&+sQ^))hnN9H1TWqR&BNW*jqXVW|9orDMieizEu*EKF$G}Kp&P8CjXym=&PXb{oqV91=d zD1{h&F4Zg-G^Avxg`s8y$c_y!VM$cI@=wGK_;P)!-@1y^HlM=q5IqkT*^pQvr4p4xa6Q1PYNo%-8gtOt|cuQNP(SBCr+pV zTJC}X_kEc`Ly0U0$fkYEA9FrA7Apl0JP6JDPIHLYn7R(H`C#PeMP7~-;4)?e7S>hb z#+AD!mJi_jR9za|PCpogD`B?@9zJKfO5D0@LU5{3yLIAMX%3z`E@N&7Bt{zRg*cdx zT5O6BvA~BW8YJoXa+P-pN}I1-$0VxbS+Y)s>n%ztD@~jwync85rVRJ3m+azLX=oGI zVHo#76}yC|>xpD1Cgm`<-{Cr(`bI##kh8HE4cld?AfHQXqx7Sz-^DoB`PkTbBuku~ zG6q75t%a+v)+r&WqQyt@0$}Gdi?EZoi$Qi7y4} z9>xLN?MA`}AC?k#0D+6y=jch^JAkh%rtMN+s|u{JQ%0;_+bzbOCztF!sTfyGJ1u5B z2Wp%bizoRsztznqs}ow%43{9*?Y>!$Z__AKoxqag+f>U8o<`m#9#c!d`ZSZb>CN&O zTiV&ZdHeZ$uU%v?r}e*g;jPP6OkezTFvCM)c)x`RhZt9Ta^{JfX9ty7sMScG>7Bp6 zzNZSz3r0NUM?5idWe;FX4RP|A08#r0C+D-L6sR(rA5iyKRb#xQ>T~Sdw-LMosauDyCzgi|Tn62yG47KM{xL2xMenliAwp2$Y>cPTwRY2zTE| zA6BwhZ&sX;8K|xdeZ(L$SbrLWXnELj*w%6#FG64~_8dD-wv1HI0FMapNU)4tMElzi z<{xF^|65_t2p(^x_z>WAD)_7jct7f|a`BsLG0T6Hi{Bc^xMkvOIm&?j*L&Nf@Pn@zqJUMpIn*LD!L~X~7d1@xxW# zIOBjQDr$%Xk*tD;&S5EtF6+j-HHP%cviW)U^g$m)6Jcg&UVk?w*1T}k5bm(uz|!h9 z$g0(lX7^I*fMKFET-;jH@?!Z~wy@){ORB?Azsj*cV_=c`X&Q^nB;Ne#<#d+p6*wW- z%4C>fwsq)0qx{D>HMDlsOEtvdcwcrkzsy8wpRny@^YQt<8R(D*t0EdDnSQUXZKjmb za3|Lk9d+Po<=*m2pQ88HTE@bNMZwU{e!9@y@Oa3u$2`0=IaVsUhCbyAzy2w_Hg`Iq%PO-*L`X?=vGfXkOMz+nSMy>_-KK+&T3dmoGX z;Kn-}WNmWua;X_Fzw(OP_ZOdCI=FKTucO#3Sn&e>-jEJ^t_g_|8 zE&U=>lG{4lek~eI?+yf2xT$q(}Ige*j z|uOJig8{e$mpQ40->LHsl+D*p|+ z3!!R|jKf||&x7;SZ-u)M2T@PYKcdRc21BcuS(a8EEQ9(=pXPJ6gp-bo!&MD1R(Us* zsI*)JorTii&J_R%ns+F(WeBLt9z*i`KVXgVVn(jhJtg+Lg){(i0Pe(W=CC=zP!!kl zD(rR_2^kYy3s8RQxV!%^?&%Ru-b>?0ko+dGq=S6M0^^q7IK zC$0)&x@bRnGb#cKy3lRN0SY}|L)EW%(x?Ult0+HyqOyaFh8&fXxlt+*6hDY!W*#Zm z$Cx`hK)oirXi=}u#UZ2PpzIP7MFs|u0=10sYHv7z?~JVdj`593c7`=(hf7a7l{|WZ z`xC}_gGTi6`W=SK4B_zBUC#OClz@TK515tBLYD4>xM;wtyd&2Eb7kgG^^DBU+H2@n zM<&>uv@Z66eV$qltFt5K$7=mBSL@Jc58u_h0Z32DBWjPMnBvqjn;LmymoBsXu0d+x zk;f10O3{AU{sF-fI90~#kFk#}?|8$!ZB-xahgHQgE+fr&MDbq@c7c5rNAeT+Zm-0-)V~@na(N_PKZ6 zpnhG|7C7lh88c7+bs=oZzJ2=o>v^JuMpe{26NKOw&J8a^qHip%jj|cU_A0 z3RT33jk|WtJ`{S)&rGqG^wj4Cql>Q?+ssg89kr)!VvX1iT(b3E-tyHj>#FNhJ2ivw zoIV3|G5GLXejgfS=$SH&@a$q!R)O{k+v9jA8?nh55q{8JHP1+shjdc`V&kS&b%AFc zq(2FH*h}&wk76c)h!T?ft9F;^rs28)+M8@*YKX5nEE^1!Zc4ulsVO&V)uz9J{#4&r z@|6#)Y~~ZX#WqKRwv38ne-0h#O<`L5V(P+YN9Zgf)K?Urtq63PbMQb^U_?|!zl5tr&||~xR<_@(q|s9a zXQ8=k``*?BDm}DZr_Wq)-wHY;0x{jvrhVd+F1R`~eCimhWptGI9=F%_cmd(|#BZpPNm1^*)R7f@-ZelTT8*)57JLru& zqR(*|3h$9>ZnnM%^&~iJh=(f(p9X_`Ac0?PA(8BqqfB7+&BnN`66xxsf2U|}57tE( zxtM)7a@T@tI`HLCP<4HWf7)JTnYP=1qT5%{ezzhtdg*9n6yr#(WKn>$oMP@%v@2XG z&zao}a*XdgNbC7W+5ke7aku*H-?v|8hZZ@39opZ#`8K>oiE~Z6Xh`HKo5aQWVWRcQ zg5>a0^u4R;s0!dq{OqER>$7BpH=>NvUDkRPpWri3`~&ATS&LME&$*a^QMO;&u?>B) z;;zTjubx*R6_HX|zWXVf#m;>o(e&23onTICl+#=qk zCR`5jCAP3!9pmC><-DW~+3&AIGNJ`Moyc?A0$dr~nq4PSxHvDd|#|pZkRDWARaS z!~?RLjftf0@z|t1Im@QHN&eOqB zt7bv?{o@^^Bl?4*)x|Bz)3hyOfQS!okIA2Kn!DP0ZUQ!d5_#~cmG&3JyQq@shx)gvOMvnXDK!N2VFQLG=ij*8!cm?b zG0s}*(>kh4bq=B+HA1RWrxxIr@wvi7Oj+Wp&wSmaTzdptf>IGjZm-<;NSvmm3-6fz z@f(s^=!2fzy(LVi0nTm#QWdWAF2cIFhe$KgGLcQyTg}os0|pSaRhZj^LTSOSTh`0~ z_X-^Wq~CGw-i$w;K?iP+9l)f*y2Rc>+A00SR2>Htd-4Gq&pWelH~9DzKz@Tw5ap; zlL{fx`lZX?CuPv_Q2nXefS=yq(3^9nu9>&oW*KH@kz4XU;&qZAF(f2dgh zzVemlSZl@zM#Tf}irceFDZ+s0heG{AH?`7`oP+B4dCF`|ba-FnTs}INJ<_1!uLPz@ zxC*t{5vH|ujo_pIk>?Y3}>W%)Vh?maGI~==MUpar1VcGn$K4 zS5Sm6|2f@Yg`PE4DI$j%3^v#*)V4hs&`QjkV2`&nyXmkw8j1%noYB3aZYZ`f7c%oq zu4+y5(8`&`6=G~3F9s~MO?leha+}!lyoMjGpE}B#ttu+5Xr0%aAB?^~F&!feUyRrf z;JEEH-!ePdc*x3Mm0EN@@VFAvD%tF>iImzx8kvRR+4eGWu&uiaE=IA*!(P+YA2+XQ zazvF}bl|a5hj@;zi%A6%YTIP!2QS06uF`*QU2Azj>$<|{hBH@ZI;5f+CRxLLX6xFlQ|ead z!e;9zA1y4FCiYW$YzkIcW=*nrvKDb18Ep^CQ=%5lz{a8;D^Z>Dk>OVDu%(ElI@oY* z2OAl4!+po8;N&B322m4M16~COmSCH@nCIlALSWAVcVW0h}}3vd==Db*nZH$955%&|>fZD+$5>|Ha~`#~g{SQ$n6fgf4Y=?-ZfFt4GybP?!tSJr0T~fJA=~HPqwY0Sg>s@Q!zwMl% z(TgE0_I{}lQMJ5$5G7~x$6Q2w{jk^hNh5M?)8_XxGA`!N!wzU^n=8q=?%uMLr2Kg| zn%nCk5dK`!ILeV(C-8@tjj*JV?Qx=DG5ANNGO{&}eYD9dCBBW*h5mD+5mksKQv5bl zsg@05@z4F&*O;TVSIV=v3>djBoO!L;Z=d$yd|nPNjdTtcrc2#{T9fu`RBf~!tX|w@ z3NappA{6dHu~pFkY^PQ>t(MgH&u(kesTQzjAeQ1TDU zD9P*j&!;oVtx|6Lz{ers-r?!rlii7I$5EtJO`Hom@E%4`vmrd{9%_Rc>?}rumzFa; zO|R3aJqRuDUP``u>W2A1a#4jP-&P{4R9LQ2xqGYM88WOWHU*b47oQj@;m57EUj*V& z7dQCa&l3QuK&YPQgn)N`XnePx0Th5B85I&_5Hjl-`ic%`ck-G0;p9vFz)&&tBe_?+ zCiAGN<4y-Nhhv!N`(|&19!|~Of}K4gtp;YIm7KbaNjH23phqn4U@7HcDejT9SdzWt8jyY+b3BmFY_R7LGz!#{H~Jv%op18;y@zG3=VyFKy)%>}o zaQDZgt%xAJ**YX_18KCp>>V)<7emW}CLGZ=xlYbq17{iIIW(Id$-mL;*M&ktk?-S6 zxPO|pUN@&8?-)3l?H%e3UXbU^aQ}g-L-HISql93v+zC{7C)iw?N<;E=OWVsy1PMHw z=F}4)X7z4ejgl% zhb88-TS(?b{hctnQBO*W@req--O<7SA!lezlqz+T+(q}X5E%u97QiS7D3Clnt6^2` zX8U+i+@u6#U=emUcVyOfy@qp}%$pvF9d)Jd_a7~_cO+N~+<(~4QVG)RzLUO4t{fsA zl2f^sT$KJSRSRUm{q_Ai4i}S?M5n8b*H! z{x(eFiTwv6aIPWMn+ze4o&z;&Xujy|qBHGwLs1I~+lUCa9wrLh} z2w<(Xd7)9&;L8Cag4Yzn;Tgl<`55q|e!E0kR0wtV(zI0`_cgRbP^6O|gm`^XKdSpk zFpe$$JJ(y#84juU1xYj$Kf-k+ZvNesG-UrbnYc&++F&z&TA>lK5aHoWb468NhqfJN-8iVL?{0;e zNGj22j2nB*6cOJ19Ic3`(m3N9Ie)=5?v0oOU{Ue5K1h3#15DBQkXrm+Do5FwlZ;sR z1*PKAG#y-aM{7%I2dF=A!dT2KKuc9P>j*2&Q^n5-3hCgK$0y=0C|LJyozeOlQ#>`f zk1OmH0`4qEd~zYKy(UC1LQ}nze;I-tyFA>K4$D6*?xcL^rgRI#5x5~2&QjeUt(K8M z>liU5BUL-WxSD$*0-dhvQa{$4o;#GS=@5ci-(Q$2DDM=plyn%=h2OY6JXxe60!*(< zat1k_p{?TMK7#+@i)}i=J;P*j{_;Rg3twGC&{2FR?ubkoFyCmYGjgOegK6!LsSBqY zzOIh2r8m7%<2NvG?*VB_lWv%|iC2@Z%Yq$W*=`GZ7z(yEhSkOxw4>2Q<2mPLRy(of ztwvy!u3%MNc2#W{4UIvBd)UpV`nsH<9?(%NjtJQDDdXp!p7>Z}=LxI7KR?<8!Vzy8 z@Vw~RHBn>T3DtPsRt+$!%0}AU4%8)@x;5T6L*@-UM=yQ9_oVZoI)lbYKt0k+`5hq6 z0v{m3pyv~FQN&(Z4>^25!YI26^pL(DuA0`oKI&OY4C?3IC{ElVc@BI{tnsL|ipFJO z@5S(Dcl5T60RloRhS64tZiK7J=C*LXw3cZYdRcD1w^PHbm-=0vjag`0HPHbP zX;kcRh9(=)iYQ8^HDP028kJLlV&;_hCpJRNtQh%h7ZSU<`P|e@wUn0 zR=80YSD~S@IA9>goS@iIZJam}JJx8n5Sa*8o?dzQ>75?`g^O?FnjUjI+f`ln0ZLh+ zF>8^}e3h2xeM#Dli!nx2x|!nWbx_M;!N<5>bPuiXVa1MlDl{s^l|+qjGV9{ynwW<= z!VQ+bl`Wr&&jV-ewv>1bl?;>+eB%b#=tT!$N0$28csFsG^!kOui@%zIp2XCenm&x* zlcXsxxfCDl&*+V<;TIEDjNX8Fe8+&ZJzaIPCv^MX1RC{7tQ(cVcpU{Qm4-PDOPkCV#9=45X|D5s8 zg{+!QZw*x#rT7u^E@=7jOuNC~6&cHacD1q%2V0!@;jP{kf>QG8TIRox#F^5Xt6Gas z>lNPUG-HAh5HO!YTBEULzvfBdqFTQb&!t3*>XtA++!E-EkN#W{$4A%1p2ru#eY+&+ z^x1p$HvLX$*EED4Gl%?m9o3R&XpgYxlo#010K$r zw_v6`*KdI(Z}0s@+k~X4v@A!*b@0eoFaI%`tyDjh0@sIb#;FEHJd^S6%i|!{A=q5r zoUn6fTfD|h9@E2EEV&K(mE4RxWr8Kgb0)fs@rDUxgCs{;NA~P44Ln*gEt`4{L9D^; z56q>Y3wq)$oh1o6Vct=~S0iUPl&9}xn*HoV;g(q*uz>A;Ny!14wC*zXGSMXr_1PNc ztRTrfTJEu^vck>)BY=M62mZ z(_J*VFQ2;@+j5Lrc`2p1?AW+Uc{<|)h*Pq?;``A=R=PF&-KUu`826~r@s(YQqs3J# zZIl(WaG!r^;E$G;+;qc0f4oY5pN35i9zys}Iwc!rNK; zmDS*;849Qx5(l%d&kcE$JcAklJt|Q{!sEB1mYoznrz^uWgP5WR#LbLX&Mj3bSZpM$ z0H_0KUP^V~QtW@n)&8zo$VbMTyxkfRkU71fE8XRP z5X0M|+P3W%dGRnnKK959R^?3ToQu!eo3T^z!Y+C0(kl;cRG zUg*oU*rdlgLp8XA7Ts`}DGsV^@@B|@Q>a!8P+B?n0Ah~aK|J+4^5=a0u6h2^aiUr8OW6Nl5>`qHET1_4Iy8ZKrhQ*)U8ue87Cu=J+=N0BaGU?+Amvx|IrE@KD2J&!PpY#BWk7e_U zmz0E~i`CI_%#X!iH|=9leYs_72*$$!b&}fze+c(A6HJuvI9Z@LC>m~VVz}c!0Y%}^6`})4 z&=wqd-Y)z$#^QykneW7T6x4r}G3^s#IZKbrkOO70J{MHsWp-#2puBESYP1E6$87Bi zB3BS6Vz@l$nH%ZbSl_B-6Q!O?dA~BXpL|WaY=T+H4)o)ZJ$OjoY6kjU*L<)tLGJw? zY}<#nHAJ5QQ~cGxqCfian@r0nWXXBI9Z!-0A3B0COY>sauAyWk+-qmNV2QTK>px9r zXmq{E{>O7O>HXrk0Qvhnmqs!E1LC3}Vx~YE-)AYA@D_AH+FT9Zlx+o!1qr26(YJ6e z(TtMO3E1aZ>Fi8A{>Y6?*2{$90*7gP-ou|dE`o3AP4F?32)I#uWHf325?nm1R7 z%|x%OSp>q3jLg(0xxe+>2 zx2-zqg=XjoW`{}Hn7dgbSRvPrGw90c`y&nfk*8y?F<6z+HNlf?;^sW>aWoXHVRGNr z7D&x6fSlfpxtawo^pfZvBOeI!aC;O!OCFOsjf&qtAF)>Yj2?fRNfL^aG2$AzojgR8 zsoDFyIihzprq4a3He;t;5Fp~pa{O}|YD@^-LU$V;k<-`7x=qeH&P&?Ez0O`_8oo*X z!ySf}Vu|7C7Xg!nn_hmzVPgkVe;vtD?NL*jU36B%jKR@v~#B*>Y;b?yDj8egbn{JF*E=Mopx4a~Nrf!p+f8oV1UH!2 zEE-y>E!8H1{jlJq$BbaV;|Ta@8a*qGWyYJI_3b$3=|uIVm&#fZXeKO;?tgyI2svo9 z9Ib4|oKZ@@xd2r?xJ22@_moT@dd2bDr|kPL;X4RgBK+HSoMrrP9hyAYoPldt-v578 zsR8!>_G@{=?`r-Ew;qB|l-dhgCj6Cljo<&Pd87QsKD(i+JKO)K!mhqZJt@@w@qd`! z4LG6+9DxT;^j0G$$+~ruk7MgL{r~Kq&IsNv0$*B)b;}X-SFH8_t>J33s#-@<*W+Qd z9KYnb$JzGw+vr0@$*O0=|53m>VtE7UT-Unk`Wc z!G0i==6V*fzT@Tj zp##lAes<>e`x%DXy1Zr`If3nwV(4KL2*@|_(7taKZ!Cs2G`T{4gtS&ZC@Uj(%BAd0 zmG_yVp$WP&*uNWl@)&4yI_Np?RrU+8M3HxGEy-Z}EWmsF`dZ0#*9OzPZAW;}O!RoD z=KF3riI+yp3(rKei96nE(JUFhdE3e14&O5!s9#RkW$a5QXN)#6urZD?cpT4|>2>Po z*XDI3HJPonGSsv`oZ4cdQ9Y0%%-W(_&KefN;)3FzXbzdha4ZYqsVGeYOL5*jg3?$mTJ(|PIr;Oj_3VpNTej7#ma9!h!%02VbsZq2 z3O~;9hD|SWWQ>vSXDmKi+05ujsO-Ii)1i#x>mo(y>BIZGx{f<B=l zozeX_-5K++v+^PS8_J)KUMkTNv*bN&GLhP@H%E_ay zgWzWEUzTw`^0{VGIE*`U1oDmo7{GW3%fkm-CVl?=>oj%kQF*3ee)5*0Wln5>a- z7sD7IKQAzP4rC^{Pg&Jt(f|n@?ZV!i?U_gU8ZsM^r%fI%p{!0s=_^5frs8~vf~1p^ zd2u!pkUa2aX6_FpbXltc+D#D{@KzpTg-4Tl!6g`;(*hI(0n2?H?#EI9Lbn}6gM78P z3W^SeDxm7tw9}E)EPzUZXRv}8ho?!tB1TugQe+X8%0ij2HKti#iNP>Dd0N(cX<-ofv?TT ztJJ>JP*-sZ?s!>Vsq2SK7ag2bwU5P|jjfwvEPj@#PC(%bj=|u{uk&uOIg+r+cSXZU zAn)5`jm5e%g+I4Lp1X(ew>H1p*dg8kynKW05w9j$2VaI?-NE7j)=IU^&phjU z-?u-HMO>_ZNvoXfPb2Rc^*mvnC87w}@qt z*u@ivr*q|-2uPHJrP$@0!6Aj$tl%-Qwsxc+Cnlcq4Zd@kDat%Y zLt&+P9!YZ)xj9H`64HWWih4cU2U_15`G?aBVHs{w)pb^OglP0FtEK1*+;GJQxkA884z$z?&@ROC! zCm+~|-{8BSZ}8oooj>N!|G{@_HGW&>jXY4QA!MpW&Y~q`iD8g==H<9l?40?y3x8&n z>`R3~6B(wm1tU|o36EJGiE_VN`VUqH2RsaM17$LKQ}lOs!l^Equs9&_Qh~= zN2Xo6eU%*b%r}}3TvWQ56y}jpXrwpVI-ncn;7UOY!xSMh#mQ<7h$`E^;}5N~hU42s z(93)__aLo?xOam1DL22PLlTXJl{!SmjtX=d;%iOtkiOr!-YDhDU|=-Vy-3)_Gtp`! zIOa99$T&_R4saMbw-~@(FF2efbRh>qba zk{JU~Ka#M9pqKvQQkZFH~*CHr!mK37=fIIjL-bE);G4gh(AbR2JD4kVcUn*RY0!N#(vzK$x z4M(Rh2Ca^(M+KV#ua5G$W($rrx$(&H)vsLIiHjHF%9E=Uufz9Pntvy}an^7Fv4{TT zi)NYF5za0ATHAU6B>>RdkOYftOU$J^i4%XfAk`j|>;>%!8 z871yzR~YQ2k40F-yOz4$#C1Yo9hJJA<$BaOmHoUvGR!lDj{yAXodJ~ogGo1R00`kWFMR~{@WAzJo& zh~10k6N|9$c#(fQ{*X0V(#N^k(1!U>UsDKxO>6T18X7E=)?EKnY%5u!ScKpKQl!AX zM(;&N%B_h}lpy{hnMLXU!6L00R4#>!dZeNin#PqU?`|nNnPDst1ij#KAw<{tz1;43 z@|6<69=3Zu)iSi&iQc5u=#250OAfVT-9P)go4acR>s(`juN``++k^} zEx(gUY@mp738Y0GNWdbDPGS+{WL%Exxf5z}UX-3YkUe9p*xGnAP$#b_loNDoHmT%?of{Eipik(O- z@n8}E(R@lG1o|^0y#(Xym+vn&Zuph1P>0nw4jf(GGz;Ysh91_$A*T0394emcn}U!J ztoj~n^ctO}_$R?!SXi^E{(VWbAOKczq@YRhdTF6A*270zEH0eWhg(YJu}X>s?aWq@ z(L(BH$YZl73r$x(@t=41eWO75hi1N4KmD2?s|THw`V@1|`oSwgozh!6MR1$>PzF zwd`{<$KK~Gy)i;h?g?P@blRxg>@wTnLWY=j%gouqv`~pw5ZlF)c~PHGW{RANn$Zt9 zGneOdL6rnOtcXoy*Yamo*c_Zg>zOdCs!1~}6*UMb4u*@`qtw_@^h;lZBEt>nry0~y zjn5d18x?x%xK))tYFbfTIt3;kKittdW0XQhQI2#1;L9iC%K@{6e2-V$Nvg)ro_3?C zBU$}Fd)W{YE7JN$`cD4=1rg0p?dDZmaLG+jhY~IgL)%Y9c80p}+c*^ljmRUozg`ZM z4|>jiN1EYN_q0Y$XS(?60jg!p)2)ydd=cD6v~VxE*jIB!&{M9FsFf`$ij4gMNUi+r zlI{>pQn#ajA??UISDsMoBP^N3#G0;v9+e%)wm#sQ-g1y>?o>G3xqc(ZCd zDfZ!unP{7E@8yZ8iq+sx6;48IfcR7E%R zcV&6^iOLcdzuQXK6j@I(Vfy7Ej9LXAte2elxZna*@p58Pw&p_nsou|kE9C@!}Jxb0BwH>D$OeTdYt-BD?o8wF``ce-=~aBHJ^HjVt^t zG^h$Edon5$=w-A0^7t-?tUn^axwo?L?(G%FN0mACn$CYKxF9(#I)CD_CYS_pchw0Z zWwy)9QrH(TISN--_eY~zXk@pu1c@tVU0?qd}!* zHZS6+<&pP&@xO%;D`+LSr+nE^Mg-BT_&iRA+z+y2Z;I!@=qLBy0ZBrCARvfG|ejvo@Ma*MJQ=$WWu#4P0qB1lX?WC+q z9ywV3a6_3VkLM(%q9kromVf(&#~Fzek{v;h zviw3^v_)aN(094hSLp>eHBB@oWrfbRv~qEEY{z5FbRhJp7^Z?#`$nWWlcx9db{TWq zNF{P^fdkKG^ms$Ot3;D3zquSF`zhSL4;sURH^|S9_|CI--NM`eXo__=&=w>;Rm#6} zC-m$ZcUaH2?D_thE6j<&_Br~n|Jh?=%k=?AwH5X_v(!U@irMmFYTK!5Nd+@7_N44f$wmD&G?)#U33q#;? zjgRbHsu$)bxgOwVIW;Yp7qgKWeO-N23msf1jg^D7e=V!WC^0H4!;-uuNKoCw$(p*O zaMHAvWkdu6BV&|y|7r1dyqhGfRdy5&Kf;$Rb?zF9iQ_r=Fojh*%tDxJDWr324t^P` zpyAtz_=b2i7kVRO=!_Wx&uEdIHBqNj$YQf+$k89`$+JZX>zKZ~E2%o2i$z}RlvykP zlzuCN2LLrd%D)SP`eD}$+g__fAd?(M-*MP_es_spy@`#R1$bJdU#hNeVE|7S*p_Nb zEMHh@EO-4=(CcL0CdRk?Mc{zroVRJrdUC_@CpgNC*TT~4Z~LWC)B@pu*)*pda3AGR zg{1_$MgNhxcJWi*p7Z}?j*CpjhaDo?`TF{fUjUH`nL(XN>`^f%sbP4+LI#tT?DOxi z@|0L%dJy{V^>^6cHPUQ>!1~v7o{-+oV)}|ya)~M~?I8#U&D$LlK&(R?i4XO0iRX(1 zLz;afaQ2nbYwry=yl^E+5%j{nbD}1o)7VJv;D^vyiSD@;RzW2u0 zlK?MEEc;5v;2O67h5p_&u5tGMh5ml9ZpDMsA^&aUjDGkA{Y_dZuvS~8)mp|l=PuSQ z`dRiJYy3;GI|fJBItW^-gQHphzXDrn;7dz`x5>cUGag3E*l%U0jm&SF*ItfpZzBC4 zRB(}VhX2p6u0e|qKFk#j*8#!3i66aW{7a2_{*REq(G%C!&c7{4S6O`3z9sRL6RGv zO6pP8h1^=|AE-FbCCko04FjVXM_1X0fF*$)kqz|ktjMhWOJYkbZ>rVa4N>*WZ%7^| zc&qjep`!vD0PvZ*H|UQYytqjN8wPIx-W!^y4)(;q86VX3V;>=CSsi!GXd3Gx}5PkVjEIPM{ka30k5 z-Mb8LZY|yZ{9ScH`0^p5c&4UF@E+bn>as)qWjx??arCdwb@)Fz*CziTo$D0H?P1f@ z70_Ht&YRA4#AFJyo1OiCb*{aZ=ya?K!K-`n*=l!0Gi#K2C4^Nw7;RwH&h+nM z!(f|fOee3W;geUL^SAFS$SZZLugm`rA{>s~9anHZuf*U~TI32tQWj$uTM;K=F5g5f zFTRg~wVqxN1Lnm$4__V~g52Hg>5~O26B1RCp+Bscsy8Q|ZYND@A3kHhf4V38e9@*% zcecCwbCC0K@#3 z%yYP0CSw>9KKDngusROD_^Vv>+zlDJ}$2(Sf6y5s%)amQ0t=aAK3 zx!_OPN03L3O65|A;4!5_PzJyL<;8GWE|uVH8k0BaoK>W75m+yk1}gsQ6`O5bsd?Oq z@4AZL+{LMP(~Ni`Yed*Oc)0%QMd0=Loxv@9^A2YKpXUz_R<{S*91I*_rJCWi4}{ue zAW_%QxF81*=?kOlz(!(^X*=4mQ6QVVpN+-l?>E@5adUOE68L%7CSsOQ)G7Ku?7U?w zEI4>J2AarGGz~U&Q&b&;+ms&aus77tm_d@Gag;~hs-N%<_+|-69lx(aZD_vfWF-fAr1Vfp=>gAHg|MDal2;zm$@gB ztXVWCPH$Ty;zkZwDE;8O!W*8x5}cWb5^gj!x)ZLhQjO&Wdubw_8-dLG3Ooa+CP*%Bd@b-`rGs5TLKFTjD(c^ah(yQpNPAiSPTRe+`@ggvx!YYD9OXzvMpjX7*Eeu<*V@S zA8LFSg;m?Uf9bsj63J$W;@KLoysJ?ctUN11e#+cc!Px7c!XK3y{=Rk(6vL_fbgY^` zdcOF^*85#8$6}}%_6GOSzQKJM(mHfONGVa_VW#O~^R6Qq*K&`=B_(zjJxY>s=%vQh zJco*7H$O+uag7?*T)ueUNE`F|%>l3m31nI~5p+m^?}GPet`cTb6%sCwNIeSsE3<*L zr$h@g)51v*KSi^K)i|>#(92Zilxjzj-2%zYKh7Y>RNbI1(X+c@2$)ekx_OQ(jLQ9o zt#{vKPQ*j>cnUKXYT(6fQD%w<__^q=@D+41Td(@}r|&xbM!ZPCIsK^X)43;q#xd`o zhZmZjN*VExf|lO_eumd*k;*BJ3>iz4l%Y2p#%;T)yd@~faiCTudv;&tGdB%(S=923 zt=Y7X_&$&k{M;cS3=2~T!^L-#4+diJRSwG?sq?)c`n4}eZ*0A&TKuzr*m`ep-$&Ju zvP${$aJA9zIDY@YeJ+ka*sJ~8FwX60bmKgV`MDkP z|May-y&f{sF1&Q`?d5Paa;)kRn*YjntuA0EJ%y~{_WtsR}fv;}hyc@a)XphHUyae>k@+%BbOYLb3f>S=_Ur zJHLh)DSM#CG1H`{8Yq{)4??H?wb6Q1`QsPm+Q+*XC+LF!Lz0_v_Xj)Hd*UYBn#Ftl zaccc42AbIPGx?#sRQ|ZUT166>MbeCd&^;eh$C@DtuKsY8>2yD4=zPfQ{yy|xdiK#` zL(gAHhWFKynqqp)+ppu_Rnvao^EzK&T-G@*23aqE>He`XG02z+6^;IfZ?Y-D75rkZTy3`iOXF!`}+|eCTgWWsUK4R6JMw zq$i&wN^*I*bM&`9bpSG#o%nw`MVe;ICYymBP@Y1?Q&5G96l&Ly{NE}Ye5;Y;LR+8} zKQ#TUA@&07AnQ(R_~Hp(P{lob@%YX2V`_I#;Yzv9u4hyAbh_y>3L^q zXXuyk%pBkSWaZrnl?If(1ozX4LI}qdyo@GSOO|9~&#Bpz))FvP8+^8^i5r9CPwD}c^i4g2F0ND` z0+S<&s)Kdl>_<9l_1i*^f_8ls6Pc;8m2~uZ6-~&l_dTyvRNVtq6eumxF6sQ(fcwsJ zm|*?|DD}caei09@2v=e>{P8+v&~FK(exUxrK-vDzLKH)G8Pu3k>JWS=YwRw@|87l3X$FMxLX&O zmw$)d(>wLOP!)-#z!c1L%+ssF@anZbj)tdpv&(Zk#ij~75F=hQ1%ha@etJx5+(=x@ zAzal$Vk&p8AzEyXGFddVYY9_Znl!VnOvP8XTX@=VXWYr zGjQwLp@A-*;uieuii_t+e=_B)mTATm6)<8*S03ljh3q1siC+r>)MIW}!J% ze#S#&eNVSRw}d%Au(#Bd+-OgC(7ctQ&vAN&*6h)8<772((b1xF)mkO~Nr_Q4)}lEd`&&2dhA+`Q zm)W$)vPkYwrw)RX7FB7B1ROT6DA)b_+r?bzXf~?5I9dZGjv!2WSOE(?;KW=V74u%} zO7(N497%)4kH+S5Cnw66gC*Gfr8*E@g`+b`vUF31PK(8#4(v*^rT8e*^r(y;Q{ath znavs*CwYI35^bDB>i`yY!j6=*UJ_2c!7F!p;f?@m-E_XaAl?t z(6&wFuzqIGO=WwjjSghh4HZhj*2Rp*#k%FG%H%{&MsbUEb+`E>D*q~aFCI7#Qb5V(WAE42sI4?e@vR`s>y&vr`aIc+pG>bQcvxsN9DPStytUejd zcy$CZ=&F%WWJhXL2JU^Wv!q9|cy>_nZRUjJ+}A&_g2NX71= zzxn(=Om=7T-N0+=Fd}oNQ+dDe$bJPiUHuVV);`R=4ls7T%d+Qk3$w^6>>v$o$F7-aU5M+ zT!z@TnDdvP5BgRTwwS!(P}` z;<5V6&$XUD-Y#Dubxx3#n-6 zd^#KD6fMHlh7ba^1%&-v-IIr>a+=wEysHPqblE(bt0nptK7?8u;>r;V(U;pP(Zh!V zWg9{d49I!}gD^mq5hNk2#pCn$KzXe+;?DAhT~@p59lMaa$=jmb27}>$)c#MCNczJ} zEQ4_z=3oBcrJsF2z^@B;8tvKLB^afh+bvt|*~Kt_3Sy_dJqmPN3fA=M>mg`edsvB6 z&{IH0h}ihfPXB+z=$!m4!?M#Bd`4{#kpGI&ReFXD@!3(W)rnZ6^c~%&=gIC|(Hl&@jk6K5}Ue36JhjfbMh zBS%U^E=N%>O%`zcwNZLid2k^InWQc&`z}nUrrzpn+Z;;M>{-HGdFx)4;$^g8-S!KM z2V5KeTb^4K)4u4Q{$t?bF)yO}e;hi|<;X>!|HGmC|Mo$*kYU}b{YMgC&=U4v5jsb( zE9LNSdvvvb+oH3AmlfckTpZh`nZIPgH+G-|IH2fnle{;e?>|cVgMT~X(ST#&z_CG= zZMLwh%QFswuQUe-EK)s<9*zG6`Z&RfEWlTf2j^A*f1oVzXI*ldDcPO@KV{ShOYBzf z>HbrL`%z^`km7&cIhS4M#W7(z-f>xK+#?$0(1YMJKMYRb8^@`c4+^s=Z8AP`Nk{$6 z6grC_{QCNX%|xak)^ifJ=ZH*bt7Ga-bxtE;Gz^8ki6JY&ZQ1s5PBO>cqrgA~r@o!< zHYS^V#n3w>=9`n}-fuvSGgcC7bForE1m(-vahzqOdH{H&fJcaB=_J{sepgRr%=ZFN`0{>B^`@!00!3Vaz z!G3P=xj?W_jJ2;s20TPr`-aEiY+?5x8}7lEXaoLps4WvO1iUZ>4nWN}J_ z2_&Fug8x$Be57MV3r(HcYOF?YmM8N5;ExYB$cMIBm(uRg4qvJPoL4%{%ZIFZSc7Gk zYH5eV5!gY>Md|w*g86ax%Z%!(b~t7?NntK^1J%V=RELWy%a1i7mRK`A z;<8#c3_oJxUSE$*&)Z-lOATN!;i6w2ZoRsn8d&a2PAhmP2gVdU=ewOA zubU~%j$kpN#uKQoXFX@WwLWf$7EEJNtlsv_-V(Uk8QUnfV5J#ai5v~LcgtNHx+k|_ zRk1>$WxQc@BmIVsqyNL`%q#|jaQLe)qYK=9DG?64YRq-W)aNCp^I?3V;xRz*fH;~`QnF9AQWS%Ed_Ksupc-5*60`B~uDlesG!YwYO zHlJSiQhET^3nQ#%SHp5yfLqwSMr|NV_SkQtjNU_ElnK{uJN7Y&S9~}9&Q-ix?($f? zs@nnCL`q&?t`(W+fYY;>8y*s0o{h!{B=n^|r(I8Hn7#DdIB#5Kh+6{jEm>HJ9>;oRoC42g3DNedeRmpeBPa zelk2<2WJ*<29^Es((bMSO6b$?~ajSiByr2#;$ za7!C{VXuNEU1=TpMSm4()al;*m$JXRD1nC?%9JWeu`qE%oGQtnjZ%k_0SYg#ZvQV) zErj$jBkre!+$?CXwYzI?Lni{|B1L%!?A|Rqg~>ro8l9j8Q*0&J9!x0@!@w+I9~>ou zQeCEQ9s4Zo%itZN(8MCw_JtnOeG7w0)7`e?U?9@XCf2Ci(22eSN8Mp!x0>217e13* zizqOr1x-+D&`_4UN`#U?-N76ZO|{spgr<^5Q8Qh=2UCu9k6+m$N>$eHx-qgrR!*~c zH`rRikU#Hw#E2@XK>aLm_2W@WY~p2Q^t?G*fihwDCIL<{yeGoidu2~n5HP}s2}TrM zBjnt;o@QG9VV**DA~X&Dws;VioSQghANw*4FJUDCUNJ(UhM5cng{K^07#n-K0P(}U z6mNJDu*$FO=*0O=)5?KBoG{N1MFLnk1HrwZ`y=wK?`#4}r`XCCu5` za$%~do#VToR_?jl&s7e$2b)zYp z=JA=MEGt;T#DxQquI99&g&Pb)v6YNS?klK!m5^oyPcz#quHoBoM118&_F;~%5V6vj zd^8vf=D82r*$+5-4$8qWWpBq!- zE6$Xp6@MX_v_bVXwDZt&WpCtjH(J?HV`k-`eh3rL*FO8Po-&JUAL1nCAglLT`3IF- zmo?q8$CG2$9*mtgFs?>e+3?<*OKB%DH%i+dmiz~sF82)dpe|9A;h|gWjL0dlQ72>4 zI8>x~s=Q+SB3mISJiwZOb8e9Sb`yqNL2O=7ph--9-+U?|Jw*CBz!Fvn<+P_u|Iuo79_9EBPeT?K}$cN_I66*t3gOe?sJ z4$tj?X8^vf@A9h)zh{9SvDDyx)rToPmx+x5B^n}_4*Co2+~fT5}w*Zq@aZzm}SaYJV@+*)W;BMU>mr#zdN85&WT>G(@mhn zZ69qP@K*Wyv@>43`^)0&=f^3O4!Iv`(;*_vkBh>S-|ST8X4z927un40UHtdX?X;Ht z&3Gf>mBMe)8H^_HN&2+7f+f!Jrtvq-r&6dOcLhnTB*t))J4YYa8ql*OF7ba)xevOM zBQOSLvdVFD$Tegbret&PousI}r|@tjFjZ7V4h!yCgYHZ5w}>3NCz8!2YxAi$PYMTa z)e&kEN!|AxMM-HVdpI*tn%baN7wY-i-}+SK-}@k*uH*BqNEW!)dXiQ{f$z_E)%kpW zl6Wl4#G%`G)M6r$ud^hh6v|pM65AFas2nmlhrH{(bG_2zm|oI(oivXp!u$w> z%!dA2KrZV*X+`MR=ms~7J5MgNXnIp5{nmc8#rQYc^g ze$nETzo&AHdVbf0w4~zDa!*#3s=x1Z1%3OKGvEq|A~>5o+H`A}yIfChV!gNX^eIxF zvF|4|PT%_bwz@O2*fV^XSiI(6W#@sO+txl_3FM<^4-iYi@o@O7?JzTQjzJkHcaXg9 zo*}ygH%7F@Gj55&O~D801mzK5)K@ol(WTd|xU@H%Ae9SsKJvn(jjr20olxDK>cu-~ z-5oS=~ds%hj-2yfSJvpp;EdwMc=vW9~01TLVIZxNqK_gRjtWI_mjBL@h8t` z^MOrWW$$x|HiEhG=!en`?8?|wg3z*95p@qr5@e-J%c^s3?YhD9WN`-2#~rKgZkb3% z@F4e6p~PL~x~6`vn4g=MRwe5Ftni0uWC`%yn6REs^aYY}SX^K6GLA(NXUNuTO7=ON z{*E(LY<2Ut?&IdA(Id?3NVx|LYJ)iH>bA<9-t=Cht5uAOmbfB9M=|FRZ7PaZFbI*- zL{_d;J=0>9h#}|@Z38AkwW81;$xp&CRbFVIp>N4Bbu|dL8YRA;T8Up-`$e~MS)Y~1({-o(lX+vTC)J4E~`NcX?RHH^GH|7 z=71G(;P_gs++Nsvkd@pC?U33@uK%sN7=-mzFjEqclYyM>b$J|m~JRl;aUG`DZC zZf=ELSqmx~@A@YfB(fQ3^0H^W9K!TM_>X)P%ySM-@FNaaL=OX!>O-0*hn}+-9M$(Z zBN?BB@q4aUbyvULPBz;2gs}T8n~m0nGS-ba&cWzaGpa1M>^5vtZ}K_~_@7+YEv!0R zqc$2=iMP=s&){+C4w(VSnR*cV{0zb*<$<2;`N~<+JIk#Z6QdAawAIelaUH@*OR4-R#=( zSz)ztBy`lC`LLRwtcl^|oHm{(ZZpu6en$2pMbBLUn{@J?i`Ru&5XR{;RcO@8PmX%! zM0FLnUxmi&+N=C&Z}a1EW3x{UW_wsUoN7oFgs_Bbhj>GJw()#6qt+0XqQ_2OUCGbY zg`#%S;QkX$n`!kHc}9=kaETcLSe28S%hOhegwiwz>zeLfdo-IAU5CmC!k?j5=c!i= z!H8EP*HYPp2@p*?;4v_~BGU~-VnP6SzreQWfrD2*j%yeScc2LCE zLnb@rMbQoS@oss%X~IX{Jp#$u?dTNnN6Qcx)N-YYdjYN>@qnbdjq=oipTI)7)zkF%WdF|_+F@c3Vlnx^R$17 z8MEO-sb<7rLHqi+qs0_miQ68wU1;kMD^n#<8?ZFyJmm&svst~)-Ne{aZkYF))8QcM zn{v6)IHy75c1j`3H#JKLDroJ5TIazOZd+!_-YMxO!7E3p47nznQBe+w1eSd`9_D5o zJueyJk+L&mNK!_uIQGVurO$#6AvxNC_iBNMsyJE6#C^d!g%XhsIWIj)OUi_BCr+tb zCy@lj&L-KFEt^c|cf2T_nYL}4SBkZ^Et|v^+bheGL6m7%MvwHO1a?;nJ9{5q1b}1A zSws%%JW}DcWhc)YoeJA~|1g3eSP@;rtNs-en7*!+@>{Qq;}h8UElHfaA6OPHk(3%% z0c|2?vJv@p!nZ5Xk`>UXZzhxi5Kne&!bVQeup5TpHQaDIqpJ7b^^nnMay0L?K~C=3 zjhfuNyidPf6jjRoz;~}nQHnQ7G0&8X)FRLl@?ckeRV2t=eVw}^A`{-4#fU97$oHV7 zS#tAf)T5ErAVWVfqL}bO6qBA$GDB_-t=1xd!=2L)(`zqHhS}}*eVS9Ti;+rc zA1T-LT`?^eQDQL{mV%L61#Yo)-p=mS>oAp6T!w;{mIqRiM@X)zjacdNLznB7-`x6W zqJuA%`FnF%i=q9@x`_CYF^6WiiW29BfD0#E99%wi=g`;CAE#zRo7_$IL29#gUUS7V z29I)ow2PwgZEih+qf-=Bk6su$9)b=)fSk}@(K>!_g|IFKWd)a5M|L> z)?B6Do*H-7!H;#EYMyI}ZrH@6awK1lq$CU!PFFLBdKBnla|#@@&m0f&Y1>Nbr}4I{ z2RtS3%Wm^(+Af1{K_TYz*N|~W@Tk(W)4h`VEjium9E@KETHBw$)yVFVALk|`Jfuda zRT4Ih7Kf-j0~SiVUE!GuH*;!r;zZGswiZ*#4QCfjMY>F8Cpdw^tl&R7Gv#RQi=BVC zbkMM|D=NpEvuij#S!z-+?AgC{SkiA<$YTmzC85AA?szyn`%UCb@RG)(o1~b>|3oWp z6LTGGwxDfe_?4y#CAJ`FOkf|_#*uS5F_Lt# z-8FhcTvoBogp0(^aXSXQ#J%B~6{WQ08gnR%?F#AY+-_dkMO-q_?%8F7!W;6+@5l-> z*^_x%yx3ENqOstI>ao3ua@V0kpaVcFOV*GclwrpY@!8uDBOeBiQ~<)q2a!z37xqI> z#I$A-3cH;?QR~FOBbporPNOTCWVDj>!e}-ioZm7xj5GWQm}uwTq+Clap-YNVPSn3qO0-iRtsf1T#urOT`k{6jC&Q_3srG}WEe5FpLlc{8 ze}I)Z=4yl44x3nUYZRtuD79Oc)JiB85kxNd@CvyL{(zNRcVO&Sn^u{7>}!~Pb(9ep zPw*ew5@~^GlV25CZ(zdmRmu5p90tE!h$L(^R_w{Mm`w|myX-@V;!|BC=>}xvT#Dav zcP&CPfe5w3&{T`I)bF)G)eEyDouPYxPS~o6Fi`aPyx`D0#2IRl03FhKB+W4+@U;@gGu4inSKP>r}B5K1+E^ z#=Vi0W7aN?{JoJGmY{i&&dgL?PV7$CS;}*hs-4S1H{Nc87t3t4sy*0lua-zZj!lyC* zp~MicaWr@TcHt=S;IE_BGijH(c%6!0r;>U|mv9~(k1z%*zy)gWI{q5)a_4)(khx!V zvUZJraDV#>K-97|yRLKkfec9Px=2Pj76jkK%eax(fd)3p_cd z_-B1TS^i4v{Ml~YBxO!ay)oQ2uBQ||iiJ>|Y)+~RModsZc#_ryK0VB6-O$}}hSw~` zklDg`k6l!J35CqT^Tqwhmr*OTGu_tHDPU7(715#vP-F>FQH{Y+f&a=F>?!u~ z_$0tm%OfF73Df`)_hkMVpB)Ou4_F*BWvN^Iin^&BSUI2}yyLLFI3y9bQ!@?87|>#% z5g{0U=azOFfpjg`7E&+2`hXQ5F@2?BoFmjIUvluv_Y;YCpWQ#q<5U{myR#?K&z6i- zP%;)~cxX-G0~gT1eXS*T0-9TK;Kj}x^SGo||GiK`%^UOBz6Ujs1T;W>oMMzvOPN>6 zeUMzfKq{lo++=vx9#RGS*5(G8F++ZeQ!^Y!h5Lt!K}7qu3sZyDGe<8aPMhHA^U2xM z!`5qx!suynrzz0DYL3x!>u$LeC+F!C3i9IO?rw+OVm%55U^v(%UKK$8QFM7rzOOW+ zYl1yt!@PB4E__EYkBRGoZiMc-n1B0DsI8^gMdO=eydd|WC=h|!tLT1fox{YI$3qmb zDxe<7e3~;L%8bA3(2}-MjJ;sKE*&u@76IdaV0VUmL5DZ?-HV@57@)}lDy!P>ZVWb?y(E07()a3V8MowqX=C8Yp$MrC zG~d3zxN^jdGP%TNBiT@a&U?_<0*fV5B2r`X9dl*L9e?TK&}ub+wa)#{&q-rHNX&I2 zNVBasKv~=7ON5VMU8l1%hg#aNnWwYKY-s)VLD4wtLOsfL5zBJ0wcy9Tg;xUP0d_+RAvi>>YdCOG za>KCe*tZ_b#*Kd|v>p$cmB-en%1TQRbi&q&fw# ztK==Pc>@4J*-SWL@pk;0vjHJYR6P!HB%Rd9%)DjUi^=M_IJW9*oX?}{bZrzmP*t&r; zv>g1a77Du@sV?*P6$U4GD-FCQ4c_VnZxMmF4&98FXO`4fIbTWY-ro6q2no5>llbqw zZQ`!#x4?nSKC_=xf^U}!`@{Es;hw)TS9n2QS2&oMGl+E{TeFVb)gM1g^iZeqKvoV{ zowt@jOr9e7_Gf#xSke=|Fitfh)B8W(m>k}xZqTi--cv~xFliobY3v0=nSI5UL z4DHUrPcUhgRG<4W(TAH|sWx1wRlq=X+S(Lc{a!kG(;1-oFPm8MjfeabY(W2CozT)Z zqwhb;1CHHb!yRm}7=h0vywR9{H$>ID{8xG4O)!+@&F}|%P2Lm=zW+~#;8=A@XyjO7 zwP9Uu^E|{F`Rwa&Nj9h;{C3Q6enpj?+0ixBLjwNay@=ZHhkim}f4RHk>9+j{U++BS zEc0V8LU#C2*@IyiVRL~t#W3T*n{rx9XCBj1a(fuhDlKV%!)o6qKE6iiq0+v!?3vbz z*J)<}jugXBye>Z0GxIpq=Q~WT=W9j+RU6fMB!ZvuMd*>%tnR11VIS4=7leVCnv~s( z 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 - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - " Initialise instance variables - formula1 = ''. - formula2 = ''. - type = me->c_type_none. - errorstyle = me->c_style_stop. - operator = ''. - allowblank = abap_false. - showdropdown = abap_false. - showinputmessage = abap_true. - showerrormessage = abap_true. - errortitle = ''. - error = ''. - prompttitle = ''. - prompt = ''. -* inizialize dimension range - cell_row = 1. - cell_column = 'A'. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method ADD. - data_validations->add( ip_data_validation ). - endmethod. - - - method CLEAR. - data_validations->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT data_validations. - - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= data_validations->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = data_validations->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - data_validations->remove( ip_data_validation ). - endmethod. - - - - method SIZE. - ep_size = data_validations->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - - me->type = ip_type. - -* inizialize dimension range - anchor = anchor_one_cell. - from_loc-col = 1. - from_loc-row = 1. - endmethod. - - - - method CREATE_MEDIA_NAME. - -* if media name is initial, create unique name - CHECK media_name IS INITIAL. - - index = ip_index. - CONCATENATE me->type index INTO media_name. - CONDENSE media_name NO-GAPS. - endmethod. - - - - method GET_FROM_COL. - r_from_col = me->from_loc-col. - endmethod. - - - - method GET_FROM_ROW. - r_from_row = me->from_loc-row. - endmethod. - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_HEIGHT_EMU_STR. - r_height = pixel2emu( size-height ). - CONDENSE r_height NO-GAPS. - endmethod. - - - - method GET_INDEX. - rp_index = me->index. - endmethod. - - - - METHOD get_media. - - DATA: lv_language TYPE sylangu. - DATA: lt_bin_mime TYPE sdokcntbins. - DATA: lt_mime TYPE tsfmime, - lv_filesize TYPE i, - lv_filesizec(10). - - CASE media_source. - WHEN c_media_source_xstring. - r_media = media. - WHEN c_media_source_www. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = media_key_www - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. - - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - WHEN c_media_source_mime. - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = me->io - IMPORTING - filesize = lv_filesize - bin_data = lt_bin_mime - CHANGING - language = lv_language ). - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_bin_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - ENDCASE. -ENDMETHOD. - - - - method GET_MEDIA_NAME. - CONCATENATE media_name `.` media_type INTO r_name. - endmethod. - - - - method GET_MEDIA_TYPE. - r_type = media_type. - endmethod. - - - - method GET_NAME. - r_name = title. - endmethod. - - - - method GET_POSITION. - rp_position-anchor = anchor. - rp_position-from = from_loc. - rp_position-to = to_loc. - rp_position-size = size. - endmethod. - - - - method GET_TO_COL. - r_to_col = me->to_loc-col. - endmethod. - - - - method GET_TO_ROW. - r_to_row = me->to_loc-row. - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method GET_WIDTH_EMU_STR. - r_width = pixel2emu( size-width ). - CONDENSE r_width NO-GAPS. - endmethod. - - - - method LOAD_CHART_ATTRIBUTES. - DATA: node TYPE REF TO if_ixml_element. - DATA: node2 TYPE REF TO if_ixml_element. - DATA: node3 TYPE REF TO if_ixml_element. - DATA: node4 TYPE REF TO if_ixml_element. - DATA: iterator TYPE REF TO if_ixml_node_iterator. - - DATA: chartspace TYPE REF TO if_ixml_node_collection. - DATA: coll_length TYPE i. - DATA: chartelem TYPE REF TO if_ixml_element. - - DATA lo_barchart TYPE REF TO zcl_excel_graph_bars. - DATA lo_piechart TYPE REF TO zcl_excel_graph_pie. - DATA lo_linechart TYPE REF TO zcl_excel_graph_line. - - TYPES: BEGIN OF t_prop, - val TYPE string, - rtl TYPE string, - lang TYPE string, - formatcode TYPE string, - sourcelinked TYPE string, - END OF t_prop. - - TYPES: BEGIN OF t_pagemargins, - b TYPE string, - l TYPE string, - r TYPE string, - t TYPE string, - header TYPE string, - footer TYPE string, - END OF t_pagemargins. - - DATA ls_prop TYPE t_prop. - DATA ls_pagemargins TYPE t_pagemargins. - - DATA lo_collection TYPE REF TO if_ixml_node_collection. - DATA lo_node TYPE REF TO if_ixml_node. - DATA lo_iterator TYPE REF TO if_ixml_node_iterator. - DATA lv_idx TYPE i. - DATA lv_order TYPE i. - DATA lv_invertifnegative TYPE string. - DATA lv_symbol TYPE string. - DATA lv_smooth TYPE c. - DATA lv_sername TYPE string. - DATA lv_label TYPE string. - DATA lv_value TYPE string. - DATA lv_axid TYPE string. - DATA lv_orientation TYPE string. - DATA lv_delete TYPE string. - DATA lv_axpos TYPE string. - DATA lv_formatcode TYPE string. - DATA lv_sourcelinked TYPE string. - DATA lv_majortickmark TYPE string. - DATA lv_minortickmark TYPE string. - DATA lv_ticklblpos TYPE string. - DATA lv_crossax TYPE string. - DATA lv_crosses TYPE string. - DATA lv_auto TYPE string. - DATA lv_lblalgn TYPE string. - DATA lv_lbloffset TYPE string. - DATA lv_nomultilvllbl TYPE string. - DATA lv_crossbetween TYPE string. - - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - CASE me->graph_type. - WHEN c_graph_bars. - CREATE OBJECT lo_barchart. - me->graph = lo_barchart. - WHEN c_graph_pie. - CREATE OBJECT lo_piechart. - me->graph = lo_piechart. - WHEN c_graph_line. - CREATE OBJECT lo_linechart. - me->graph = lo_linechart. - WHEN OTHERS. - ENDCASE. - - "Fill properties - node2 ?= node->find_from_name( name = 'date1904' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_1904val = ls_prop-val. - node2 ?= node->find_from_name( name = 'lang' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_langval = ls_prop-val. - node2 ?= node->find_from_name( name = 'roundedCorners' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_roundedcornersval = ls_prop-val. - - "style - node2 ?= node->find_from_name( name = 'style' namespace = 'c14' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_c14styleval = ls_prop-val. - node2 ?= node->find_from_name( name = 'style' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_styleval = ls_prop-val. - "---------------------------Read graph properties - node2 ?= node->find_from_name( name = 'autoTitleDeleted' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_autotitledeletedval = ls_prop-val. - - "plotArea - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'barDir' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_bardirval = ls_prop-val. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'invertIfNegative' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_invertifnegative = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_barchart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_invertifnegative = lv_invertifnegative - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'gapWidth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_gapwidthval = ls_prop-val. - - "Load axes - node2 ?= node->find_from_name( name = 'barChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_piechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showLeaderLines' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showleaderlinesval = ls_prop-val. - node2 ?= node->find_from_name( name = 'firstSliceAng' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_firstsliceangval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'symbol' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_symbol = ls_prop-val. - node3 ?= node2->find_from_name( name = 'smooth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_smooth = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_linechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_symbol = lv_symbol - ip_smooth = lv_smooth - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showbubblesizeval = ls_prop-val. - - node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - node2 ?= node->find_from_name( name = 'marker' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_MARKERVAL = ls_prop-val. - node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_SMOOTHVAL = ls_prop-val. - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - "Load axes - node2 ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. -* node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). -* zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). -* lv_formatcode = ls_prop-formatcode. -* lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - WHEN OTHERS. - ENDCASE. - - "legend - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_overlayval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_overlayval = ls_prop-val. - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_overlayval = ls_prop-val. - node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_pprrtl = ls_prop-rtl. - node2 ?= node->find_from_name( name = 'endParaRPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_endpararprlang = ls_prop-lang. - - WHEN OTHERS. - ENDCASE. - - node2 ?= node->find_from_name( name = 'plotVisOnly' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_plotvisonlyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'dispBlanksAs' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_dispblanksasval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showDLblsOverMax' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_showdlblsovermaxval = ls_prop-val. - "--------------------- - - node2 ?= node->find_from_name( name = 'pageMargins' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_pagemargins ). - me->graph->pagemargins = ls_pagemargins. - - - endmethod. - - - - - - method PIXEL2EMU. -* suppose 96 DPI - IF ip_dpi IS SUPPLIED. - r_emu = ip_pixel * 914400 / ip_dpi. - ELSE. -* suppose 96 DPI - r_emu = ip_pixel * 914400 / 96. - ENDIF. - endmethod. - - - - - - - method SET_MEDIA. - IF ip_media IS SUPPLIED. - media = ip_media. - ENDIF. - media_type = ip_media_type. - media_source = c_media_source_xstring. - IF ip_width IS SUPPLIED. - size-width = ip_width. - ENDIF. - IF ip_height IS SUPPLIED. - size-height = ip_height. - ENDIF. - endmethod. - - - - - - METHOD set_media_mime. - - DATA: lv_language TYPE sylangu. - - io = ip_io. - media_source = c_media_source_mime. - size-width = ip_width. - size-height = ip_height. - - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = ip_io - IMPORTING - filename = media_name - "mimetype = media_type - CHANGING - language = lv_language ). - - SPLIT media_name AT '.' INTO media_name media_type. - -ENDMETHOD. - - - - - - method SET_MEDIA_WWW. - DATA: lv_value(20). - - media_key_www = ip_key. - media_source = c_media_source_www. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'fileextension' - IMPORTING - value = lv_value. - media_type = lv_value. - SHIFT media_type LEFT DELETING LEADING '.'. - - size-width = ip_width. - size-height = ip_height. - endmethod. - - - - - - - method SET_POSITION. - from_loc-col = zcl_excel_common=>convert_column2int( ip_from_col ) - 1. - IF ip_coloff IS SUPPLIED. - from_loc-col_offset = ip_coloff. - ENDIF. - from_loc-row = ip_from_row - 1. - IF ip_rowoff IS SUPPLIED. - from_loc-row_offset = ip_rowoff. - ENDIF. - anchor = anchor_one_cell. - endmethod. - - - - - - method SET_POSITION2. - - data: lv_anchor type zexcel_drawing_anchor. - lv_anchor = ip_anchor. - - IF lv_anchor IS INITIAL. - IF ip_to IS NOT INITIAL. - lv_anchor = anchor_two_cell. - ELSE. - lv_anchor = anchor_one_cell. - ENDIF. - ENDIF. - - CASE lv_anchor. - WHEN anchor_absolute OR anchor_one_cell. - CLEAR: me->to_loc. - WHEN anchor_two_cell. - CLEAR: me->size. - ENDCASE. - - me->from_loc = ip_from. - me->to_loc = ip_to. - me->anchor = lv_anchor. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method ADD. - DATA: lv_index TYPE i. - - drawings->add( ip_drawing ). - lv_index = drawings->if_object_collection~size( ). - ip_drawing->create_media_name( - ip_index = lv_index ). - endmethod. - - - method CLEAR. - - drawings->clear( ). - endmethod. - - - - method CONSTRUCTOR. - - CREATE OBJECT drawings. - type = ip_type. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_drawing ?= drawings->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= drawings->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method INCLUDE. - drawings->add( ip_drawing ). - endmethod. - - - - method IS_EMPTY. - - is_empty = drawings->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - - drawings->remove( ip_drawing ). - endmethod. - - - - method SIZE. - - ep_size = drawings->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - method CREATE. - data: lo_hyperlink type REF TO zcl_excel_hyperlink. - - create OBJECT lo_hyperlink. - - lo_hyperlink->location = iv_url. - lo_hyperlink->internal = iv_internal. - - ov_link = lo_hyperlink. - endmethod. - - - - - method CREATE_EXTERNAL_LINK. - - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_url - iv_internal = abap_false ). - endmethod. - - - - - method CREATE_INTERNAL_LINK. - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_location - iv_internal = abap_true ). - endmethod. - - - - method GET_REF. - ev_ref = row. - CONDENSE ev_ref. - CONCATENATE column ev_ref INTO ev_ref. - endmethod. - - - - method GET_URL. - ev_url = me->location. - endmethod. - - - - method IS_INTERNAL. - ev_ret = me->internal. - endmethod. - - - - - - method SET_CELL_REFERENCE. - me->column = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - me->row = ip_row. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_VALUE. - - ep_value = me->value. - - endmethod. - - - - method SET_RANGE_VALUE. - me->value = ip_value. - endmethod. - - - - - - - - method SET_VALUE. - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7, - lv_value TYPE string. - lv_stop_row_c = ip_stop_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_start_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - lv_value = ip_sheet_name. - me->value = zcl_excel_common=>escape_string( ip_value = lv_value ). - - CONCATENATE me->value '!$' ip_start_column '$' lv_start_row_c ':$' ip_stop_column '$' lv_stop_row_c INTO me->value. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - ranges->add( ip_range ). - endmethod. - - - method CLEAR. - ranges->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT ranges. - - endmethod. - - - - - method GET. - eo_range ?= ranges->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= ranges->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = ranges->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - ranges->remove( ip_range ). - endmethod. - - - - method SIZE. - ep_size = ranges->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - METHOD is_security_enabled. - IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. - ep_security_enabled = abap_true. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - orientation = me->c_orientation_default. - -* default margins - margin_bottom = '0.75'. - margin_footer = '0.3'. - margin_header = '0.3'. - margin_left = '0.7'. - margin_right = '0.7'. - margin_top = '0.75'. - -* clear page settings - CLEAR: black_and_white, - cell_comments, - copies, - draft, - errors, - first_page_number, - fit_to_page, - fit_to_height, - fit_to_width, - horizontal_dpi, - orientation, - page_order, - paper_height, - paper_size, - paper_width, - scale, - use_first_page_num, - use_printer_defaults, - vertical_dpi. - endmethod. - - - - - - - method GET_HEADER_FOOTER_STRING. -* ---------------------------------------------------------------------- - DATA: lc_marker_left(2) TYPE c VALUE '&L' - , lc_marker_right(2) TYPE c VALUE '&R' - , lc_marker_center(2) TYPE c VALUE '&C' - , lv_value TYPE string - . -* ---------------------------------------------------------------------- - IF ep_odd_header IS SUPPLIED. - - IF me->odd_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'CENTER' ). - CONCATENATE ep_odd_header lc_marker_center lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'RIGHT' ). - CONCATENATE ep_odd_header lc_marker_right lv_value INTO ep_odd_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_odd_footer IS SUPPLIED. - - IF me->odd_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'CENTER' ). - CONCATENATE ep_odd_footer lc_marker_center lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'RIGHT' ). - CONCATENATE ep_odd_footer lc_marker_right lv_value INTO ep_odd_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_header IS SUPPLIED. - - IF me->even_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'CENTER' ). - CONCATENATE ep_even_header lc_marker_center lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'RIGHT' ). - CONCATENATE ep_even_header lc_marker_right lv_value INTO ep_even_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_footer IS SUPPLIED. - - IF me->even_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'CENTER' ). - CONCATENATE ep_even_footer lc_marker_center lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'RIGHT' ). - CONCATENATE ep_even_footer lc_marker_right lv_value INTO ep_even_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - endmethod. - - - - - - method PROCESS_HEADER_FOOTER. - -* ---------------------------------------------------------------------- -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size - - DATA: lv_fname(12) TYPE c - , lv_string TYPE string - . - - FIELD-SYMBOLS: <lv_value> TYPE string - , <ls_font> TYPE zexcel_s_style_font - . - -* ---------------------------------------------------------------------- - CONCATENATE ip_side '_VALUE' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <lv_value>. - - CONCATENATE ip_side '_FONT' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <ls_font>. - - IF <ls_font> IS ASSIGNED AND <lv_value> IS ASSIGNED. - - IF <ls_font>-name IS NOT INITIAL. - CONCATENATE '&"' <ls_font>-name ',' INTO rv_processed_string. - ELSE. - rv_processed_string = '&"-,'. - ENDIF. - - IF <ls_font>-bold = abap_true. - CONCATENATE rv_processed_string 'Bold"' INTO rv_processed_string. - ELSE. - CONCATENATE rv_processed_string 'Standard"' INTO rv_processed_string. - ENDIF. - - IF <ls_font>-size IS NOT INITIAL. - lv_string = <ls_font>-size. - CONCATENATE rv_processed_string '&' lv_string INTO rv_processed_string. - ENDIF. - - CONCATENATE rv_processed_string <lv_value> INTO rv_processed_string. - - ENDIF. -* ---------------------------------------------------------------------- - - endmethod. - - - - - - - method SET_HEADER_FOOTER. - -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size -* -* usefull placeholders, which can be used in header/footer value strings -* '&P' - page number -* '&N' - total number of pages -* '&D' - Date -* '&T' - Time -* '&F' - File Name -* '&Z' - Path -* '&A' - Sheet name -* new line via class constant CL_ABAP_CHAR_UTILITIES=>newline -* -* Example Value String 'page &P of &N' -* -* DO NOT USE &L , &C or &R which automatically created as position markers - - me->odd_header = ip_odd_header. - me->odd_footer = ip_odd_footer. - me->even_header = ip_even_header. - me->even_footer = ip_even_footer. - - IF me->even_header IS NOT INITIAL OR me->even_footer IS NOT INITIAL. - me->diff_oddeven_headerfooter = abap_true. - ENDIF. - - - endmethod. - - - - - - - - - - method SET_PAGE_MARGINS. - DATA: lv_coef TYPE f, - lv_unit TYPE string. - - lv_unit = ip_unit. - TRANSLATE lv_unit TO UPPER CASE. - - CASE lv_unit. - WHEN 'IN'. lv_coef = 1. - WHEN 'CM'. lv_coef = '0.393700787'. - WHEN 'MM'. lv_coef = '0.0393700787'. - ENDCASE. - - IF ip_bottom IS SUPPLIED. margin_bottom = lv_coef * ip_bottom. ENDIF. - IF ip_footer IS SUPPLIED. margin_footer = lv_coef * ip_footer. ENDIF. - IF ip_header IS SUPPLIED. margin_header = lv_coef * ip_header. ENDIF. - IF ip_left IS SUPPLIED. margin_left = lv_coef * ip_left. ENDIF. - IF ip_right IS SUPPLIED. margin_right = lv_coef * ip_right. ENDIF. - IF ip_top IS SUPPLIED. margin_top = lv_coef * ip_top. ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - method CONSTRUCTOR. - - - CREATE OBJECT font. - CREATE OBJECT fill. - CREATE OBJECT borders. - CREATE OBJECT alignment. - CREATE OBJECT number_format. - CREATE OBJECT protection. - -* Start of insertion # issue 139 - Dateretention of cellstyles - IF ip_guid IS NOT INITIAL. - me->guid = ip_guid. - ELSE. -* End of insertion # issue 139 - Dateretention of cellstyles - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. -* Start of insertion # issue 139 - Dateretention of cellstyles - ENDIF. -* End of insertion # issue 139 - Dateretention of cellstyles - - endmethod. - - - - method GET_GUID. - - - ep_guid = me->guid. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - - - styles->add( ip_style ). - endmethod. - - - method CLEAR. - - - styles->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT styles. - endmethod. - - - - - method GET. - - - eo_style ?= styles->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - - - eo_iterator ?= styles->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - - - is_empty = styles->if_object_collection~is_empty( ). - endmethod. - - - - - method REGISTER_NEW_STYLE. - - - me->add( io_style ). - ep_style_code = me->size( ) - 1. "style count starts from 0 - endmethod. - - - - method REMOVE. - - - styles->remove( ip_style ). - endmethod. - - - - method SIZE. - - - ep_size = styles->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - styles_conditional->add( ip_style_conditional ). - endmethod. - - - method CLEAR. - styles_conditional->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT styles_conditional. - - endmethod. - - - - - method GET. - DATA lv_index TYPE i. - lv_index = ip_index. - eo_style_conditional ?= styles_conditional->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= styles_conditional->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = styles_conditional->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - styles_conditional->remove( ip_style_conditional ). - endmethod. - - - - method SIZE. - ep_size = styles_conditional->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - horizontal = me->c_horizontal_general. - vertical = me->c_vertical_bottom. - wrapText = abap_false. - shrinkToFit = abap_false. - endmethod. - - - - method GET_STRUCTURE. - - es_alignment-horizontal = me->horizontal. - es_alignment-vertical = me->vertical. - es_alignment-textrotation = me->textrotation. - es_alignment-wraptext = me->wraptext. - es_alignment-shrinktofit = me->shrinktofit. - es_alignment-indent = me->indent. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - method CREATE. - - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 9: Add vbaProject.bin to zip - lo_zip->add( name = me->c_xl_vbaproject - content = me->excel->zif_excel_book_vba_project~vbaproject ). - -********************************************************************** -* STEP 12: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - method CREATE_CONTENT_TYPES. -** Constant node name - DATA: lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.ms-excel.sheet.macroEnabled.main+xml', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - lc_xml_attr_codename TYPE string VALUE 'codeName', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_bin_ext TYPE string VALUE 'bin', - lc_xml_node_bin_ct TYPE string VALUE 'application/vnd.ms-office.vbaProject'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_contenttype TYPE string, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard contentType - ep_content = super->create_content_types( ). - -********************************************************************** -* STEP 2: modify XML adding the extension bin definition - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_bin_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_bin_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: modify XML changing the contentType of node Override /xl/workbook.xml - - lo_collection = lo_document->get_elements_by_tag_name( 'Override' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lv_contenttype = lo_element->get_attribute_ns( lc_xml_attr_partname ). - IF lv_contenttype EQ lc_xml_node_workb_pn. - lo_element->remove_attribute_ns( lc_xml_attr_contenttype ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - EXIT. - ENDIF. - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - method CREATE_XL_RELATIONSHIPS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_vba_tp TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', - " Node target - lc_xml_node_rid_vba_tg TYPE string VALUE 'vbaProject.bin'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_relationships( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 4 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_vba_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_vba_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - method CREATE_XL_SHEET. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_sheet( io_worksheet = io_worksheet - iv_active = iv_active ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - -* lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). -* lo_iterator = lo_collection->create_iterator( ). -* lo_element ?= lo_iterator->get_next( ). -* WHILE lo_element IS BOUND. -* lo_element->set_attribute_ns( name = lc_xml_attr_codename -* value = me->excel->zif_excel_book_vba_project~codename ). -* lo_element ?= lo_iterator->get_next( ). -* ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'sheetPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = io_worksheet->zif_excel_sheet_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - endmethod. - - - method CREATE_XL_WORKBOOK. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_workbook( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'workbookPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD zif_excel_converter~can_convert_object. - - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - lo_salv ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_salv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog, - et_colors . - - IF lo_salv IS BOUND. - load_data( EXPORTING io_salv = lo_salv - it_table = it_table ). - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - - method LOAD_DATA. - DATA: lo_columns TYPE REF TO cl_salv_columns_table, - lo_aggregations TYPE REF TO cl_salv_aggregations, - lo_sorts TYPE REF TO cl_salv_sorts, - lo_filters TYPE REF TO cl_salv_filters, - lo_functional TYPE REF TO cl_salv_functional_settings, - lo_display TYPE REF TO cl_salv_display_settings, - lo_selections TYPE REF TO cl_salv_selections. - - DATA: ls_vari TYPE disvariant, - lo_layout TYPE REF TO cl_salv_layout. - - DATA: lr_form_tol TYPE REF TO cl_salv_form, - lr_form_eol TYPE REF TO cl_salv_form. - - DATA lt_kkblo_fieldcat TYPE kkblo_t_fieldcat. - DATA ls_kkblo_layout TYPE kkblo_layout. - DATA lt_kkblo_filter TYPE kkblo_t_filter. - DATA lt_kkblo_sort TYPE kkblo_t_sortinfo. - - lo_layout = io_salv->get_layout( ) . - lo_columns = io_salv->get_columns( ). - lo_aggregations = io_salv->get_aggregations( ) . - lo_sorts = io_salv->get_sorts( ) . - lo_filters = io_salv->get_filters( ) . - lo_display = io_salv->get_display_settings( ) . - lo_functional = io_salv->get_functional_settings( ) . - - REFRESH: wt_fcat, - wt_sort, - wt_filt. - -* First update metadata if we can. - IF io_salv->is_offline( ) = abap_false. - io_salv->get_metadata( ) . - ELSE. -* If we are offline we need to build this. - cl_salv_controller_metadata=>get_variant( - EXPORTING - r_layout = lo_layout - CHANGING - s_variant = ls_vari ). - ENDIF. - -*... get the column information - wt_fcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog( - r_columns = lo_columns - r_aggregations = lo_aggregations ). - -*... get the layout information - cl_salv_controller_metadata=>get_lvc_layout( - EXPORTING - r_functional_settings = lo_functional - r_display_settings = lo_display - r_columns = lo_columns - r_aggregations = lo_aggregations - CHANGING - s_layout = ws_layo ). - -* the fieldcatalog is not complete yet! - CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' - EXPORTING - i_complete = 'X' - i_refresh_buffer = space - i_buffer_active = space - is_layout = ws_layo - i_test = '1' - i_fcat_complete = 'X' - IMPORTING -* E_EDIT = - es_layout = ws_layo - CHANGING - ct_fieldcat = wt_fcat. - - IF ls_vari IS NOT INITIAL AND io_salv->is_offline( ) = abap_true. - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - EXPORTING - it_fieldcat_lvc = wt_fcat - is_layout_lvc = ws_layo - IMPORTING - et_fieldcat_kkblo = lt_kkblo_fieldcat - es_layout_kkblo = ls_kkblo_layout - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - it_fieldcat_lvc_missing = 2 - OTHERS = 3. - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LT_VARIANT_LOAD' - EXPORTING -* I_TOOL = 'LT' - i_tabname = '1' -* I_TABNAME_SLAVE = - i_dialog = ' ' -* I_USER_SPECIFIC = ' ' -* I_DEFAULT = 'X' -* I_NO_REPTEXT_OPTIMIZE = -* I_VIA_GRID = - i_fcat_complete = 'X' - IMPORTING -* E_EXIT = - et_fieldcat = lt_kkblo_fieldcat - et_sort = lt_kkblo_sort - et_filter = lt_kkblo_filter - CHANGING - cs_layout = ls_kkblo_layout - ct_default_fieldcat = lt_kkblo_fieldcat - cs_variant = ls_vari - EXCEPTIONS - wrong_input = 1 - fc_not_complete = 2 - not_found = 3 - OTHERS = 4 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO' - EXPORTING -* I_TECH_COMPLETE = -* I_STRUCTURE_NAME = - it_fieldcat_kkblo = lt_kkblo_fieldcat - it_sort_kkblo = lt_kkblo_sort - it_filter_kkblo = lt_kkblo_filter -* IT_SPECIAL_GROUPS_KKBLO = -* IT_FILTERED_ENTRIES_KKBLO = -* IT_GROUPLEVELS_KKBLO = -* IS_SUBTOT_OPTIONS_KKBLO = - is_layout_kkblo = ls_kkblo_layout -* IS_REPREP_ID_KKBLO = -* I_CALLBACK_PROGRAM_KKBLO = -* IT_ADD_FIELDCAT = -* IT_EXCLUDING_KKBLO = -* IT_EXCEPT_QINFO_KKBLO = - IMPORTING - et_fieldcat_lvc = wt_fcat - et_sort_lvc = wt_sort - et_filter_lvc = wt_filt -* ET_SPECIAL_GROUPS_LVC = -* ET_FILTER_INDEX_LVC = -* ET_GROUPLEVELS_LVC = -* ES_TOTAL_OPTIONS_LVC = - es_layout_lvc = ws_layo -* ES_VARIANT_LVC = -* E_VARIANT_SAVE_LVC = -* ES_PRINT_INFO_LVC = -* ES_REPREP_LVC = -* E_REPREP_ACTIVE_LVC = -* ET_EXCLUDING_LVC = -* ET_EXCEPT_QINFO_LVC = - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - ELSE. -* ... get the sort information - wt_sort = cl_salv_controller_metadata=>get_lvc_sort( lo_sorts ). - -* ... get the filter information - wt_filt = cl_salv_controller_metadata=>get_lvc_filter( lo_filters ). - ENDIF. - - endmethod. - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -TYPES: BEGIN OF ts_alv_types, - seoclass TYPE seoclsname, - clsname TYPE seoclsname, - END OF ts_alv_types, - tt_alv_types TYPE HASHED TABLE OF ts_alv_types WITH UNIQUE KEY seoclass. - -TYPES: BEGIN OF ts_sort_values, - fieldname TYPE fieldname, - row_int TYPE zexcel_cell_row, - value TYPE REF TO data, - new TYPE flag, - sort_level TYPE int4, - is_collapsed type flag, - END OF ts_sort_values, - - tt_sort_values TYPE HASHED TABLE OF ts_sort_values WITH UNIQUE KEY fieldname. -TYPES: BEGIN OF ts_subtotal_rows, - row_int TYPE zexcel_cell_row, - row_int_start TYPE zexcel_cell_row, - columnname TYPE fieldname, - END OF ts_subtotal_rows, - - tt_subtotal_rows TYPE HASHED TABLE OF ts_subtotal_rows WITH UNIQUE KEY row_int. - -TYPES: BEGIN OF ts_styles, - type TYPE char1, - alignment TYPE zexcel_alignment, - inttype TYPE inttype, - decimals TYPE int1, - style TYPE REF TO zcl_excel_style, - guid TYPE zexcel_cell_style, - END OF ts_styles, - - tt_styles TYPE HASHED TABLE OF ts_styles WITH UNIQUE KEY type alignment inttype decimals. - -TYPES: BEGIN OF ts_color_styles, - guid_old TYPE zexcel_cell_style, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - style_new TYPE REF TO zcl_excel_style, - END OF ts_color_styles, - - tt_color_styles TYPE HASHED TABLE OF ts_color_styles WITH UNIQUE KEY guid_old fontcolor fillcolor. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ASK_OPTION. - DATA: ls_sval TYPE sval, - lt_sval TYPE STANDARD TABLE OF sval, - l_returncode TYPE string, - lt_fields TYPE ddfields, - ls_fields TYPE dfies. - - FIELD-SYMBOLS: <fs> TYPE ANY. - - rs_option = ws_option. - - CALL FUNCTION 'DDIF_FIELDINFO_GET' - EXPORTING - tabname = 'ZEXCEL_S_CONVERTER_OPTION' -* FIELDNAME = ' ' -* LANGU = sy-langu -* LFIELDNAME = ' ' -* ALL_TYPES = ' ' -* GROUP_NAMES = ' ' -* UCLEN = -* IMPORTING -* X030L_WA = -* DDOBJTYPE = -* DFIES_WA = -* LINES_DESCR = - TABLES - dfies_tab = lt_fields -* FIXED_VALUES = - EXCEPTIONS - not_found = 1 - internal_error = 2 - OTHERS = 3 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - LOOP AT lt_fields INTO ls_fields. - ASSIGN COMPONENT ls_fields-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - CLEAR ls_sval. - ls_sval-tabname = ls_fields-tabname. - ls_sval-fieldname = ls_fields-fieldname. - ls_sval-value = <fs>. - ls_sval-field_attr = space. - ls_sval-field_obl = space. - ls_sval-comp_code = space. - ls_sval-fieldtext = ls_fields-scrtext_m. - ls_sval-comp_tab = space. - ls_sval-comp_field = space. - ls_sval-novaluehlp = space. - INSERT ls_sval INTO TABLE lt_sval. - ENDIF. - ENDLOOP. - - CALL FUNCTION 'POPUP_GET_VALUES' - EXPORTING -* NO_VALUE_CHECK = space - popup_title = 'Excel creation options'(008) -* START_COLUMN = '5' -* START_ROW = '5' - IMPORTING - returncode = l_returncode - TABLES - fields = lt_sval - EXCEPTIONS - error_in_fields = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ELSE. - IF l_returncode = 'A'. - RAISE EXCEPTION TYPE zcx_excel. - ELSE. - LOOP AT lt_sval INTO ls_sval. - ASSIGN COMPONENT ls_sval-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - <fs> = ls_sval-value. - ENDIF. - ENDLOOP. - set_option( is_option = ws_option ) . - rs_option = ws_option. - ENDIF. - ENDIF. - endmethod. - - - - - method BIND_CELLS. - -* Do we need subtotals with grouping - READ TABLE wt_fieldcatalog TRANSPORTING NO FIELDS WITH KEY is_subtotalled = abap_true. - IF sy-subrc = 0 . - r_freeze_col = loop_subtotal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ELSE. - r_freeze_col = loop_normal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ENDIF. - - endmethod. - - - - - - method BIND_TABLE. - data: lt_field_catalog type zexcel_t_fieldcatalog, - ls_field_catalog type zexcel_s_fieldcatalog, - ls_fcat type zexcel_s_converter_fcat, - lo_col_dim type ref to zcl_excel_worksheet_columndime, - lo_row_dim type ref to zcl_excel_worksheet_rowdimensi, - l_col_int type zexcel_cell_column, - l_col_alpha type zexcel_cell_column_alpha, - ls_settings type zexcel_s_table_settings, - l_line type i. - - field-symbols: <fs_tab> type any table. - - assign wo_data->* to <fs_tab> . - - ls_settings-table_style = i_style_table. - ls_settings-top_left_column = zcl_excel_common=>convert_column2alpha( ip_column = w_col_int ). - ls_settings-top_left_row = w_row_int. - ls_settings-show_row_stripes = ws_layout-is_stripped. - - describe table wt_fieldcatalog lines l_line. - l_line = l_line + 1 + w_col_int. - ls_settings-bottom_right_column = zcl_excel_common=>convert_column2alpha( ip_column = l_line ). - - describe table <fs_tab> lines l_line. - ls_settings-bottom_right_row = l_line + 1 + w_row_int. - sort wt_fieldcatalog by position. - loop at wt_fieldcatalog into ls_fcat. - move-corresponding ls_fcat to ls_field_catalog. - ls_field_catalog-dynpfld = abap_true. - insert ls_field_catalog into table lt_field_catalog. - endloop. - - wo_worksheet->bind_table( - exporting - ip_table = <fs_tab> - it_field_catalog = lt_field_catalog - is_table_settings = ls_settings - importing - es_table_settings = ls_settings - ). - loop at wt_fieldcatalog into ls_fcat. - l_col_int = w_col_int + ls_fcat-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Freeze panes - if ls_fcat-fix_column = abap_true. - add 1 to r_freeze_col. - endif. -* Now let's check for optimized - if ls_fcat-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - endif. -* Now let's check for visible - if ls_fcat-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - endif. - endloop. - - endmethod. - - - method CLASS_CONSTRUCTOR. - DATA: ls_objects TYPE ts_alv_types. - DATA: ls_option TYPE zexcel_s_converter_option, - l_uname TYPE sy-uname. - - GET PARAMETER ID 'ZUS' FIELD l_uname. - IF l_uname IS INITIAL OR l_uname = space. - l_uname = sy-uname. - ENDIF. - -* Object CL_GUI_ALV_GRID - ls_objects-seoclass = 'CL_GUI_ALV_GRID'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_ALV_GRID'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_TABLE - ls_objects-seoclass = 'CL_SALV_TABLE'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_SALV_TABLE'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_RESULT - ls_objects-seoclass = 'CL_SALV_EX_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_EX'. - INSERT ls_objects INTO TABLE wt_objects. -* Object CL_SALV_WD_RESULT - ls_objects-seoclass = 'CL_SALV_WD_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_WD'. - INSERT ls_objects INTO TABLE wt_objects. - - CONCATENATE 'EXCEL_' sy-uname INTO ws_indx-srtfd. - - IMPORT p1 = ls_option FROM DATABASE indx(xl) TO ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = ls_option. - ELSE. - init_option( ) . - ENDIF. - - endmethod. - - - method CLEAN_FIELDCATALOG. - DATA: l_position TYPE int1. - - FIELD-SYMBOLS: <fs_sfcat> TYPE zexcel_s_converter_fcat. - - SORT wt_fieldcatalog BY position col_id. - - CLEAR l_position. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - ADD 1 TO l_position. - <fs_sfcat>-position = l_position. -* Default stype with alignment and format - <fs_sfcat>-style_hdr = get_style( i_type = c_type_hdr - i_alignment = <fs_sfcat>-alignment ). - IF ws_layout-is_stripped = abap_true. - <fs_sfcat>-style_stripped = get_style( i_type = c_type_str - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDIF. - <fs_sfcat>-style_normal = get_style( i_type = c_type_nor - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_subtotal = get_style( i_type = c_type_sub - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_total = get_style( i_type = c_type_tot - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDLOOP. - - endmethod. - - - - - - - - - - - - - method CONVERT. - - IF is_option IS SUPPLIED. - ws_option = is_option. - ENDIF. - - TRY. - execute_converter( EXPORTING io_object = io_alv - it_table = it_table ) . - ENDTRY. - - IF io_worksheet IS SUPPLIED AND io_worksheet IS BOUND. - wo_worksheet = io_worksheet. - ENDIF. - IF co_excel IS SUPPLIED. - IF co_excel IS NOT BOUND. - CREATE OBJECT co_excel. - co_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - wo_excel = co_excel. - ENDIF. - -* Move table to data object and clean it up - IF wt_fieldcatalog IS NOT INITIAL. - create_table( ). - ELSE. - wo_data = wo_table . - ENDIF. - - IF wo_excel IS NOT BOUND. - CREATE OBJECT wo_excel. - wo_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - IF wo_worksheet IS NOT BOUND. - " Get active sheet - wo_worksheet = wo_excel->get_active_worksheet( ). - wo_worksheet->set_title( ip_title = 'Sheet1'(001) ). - ENDIF. - - IF i_row_int <= 0. - w_row_int = 1. - ELSE. - w_row_int = i_row_int. - ENDIF. - IF i_column_int <= 0. - w_col_int = 1. - ELSE. - w_col_int = i_column_int. - ENDIF. - - create_worksheet( i_table = i_table - i_style_table = i_style_table ) . - - endmethod. - - - - - - method CREATE_COLOR_STYLE. - DATA: ls_styles TYPE ts_styles. - DATA: lo_style TYPE REF TO zcl_excel_style. - - READ TABLE wt_styles INTO ls_styles WITH KEY guid = i_style. - IF sy-subrc = 0. - lo_style = wo_excel->add_new_style( ). -* lo_style->borders = ls_styles-style->borders. -* lo_style->protection = ls_styles-style->protection. - lo_style->font->bold = ls_styles-style->font->bold. - lo_style->alignment->horizontal = ls_styles-style->alignment->horizontal. - lo_style->number_format->format_code = ls_styles-style->number_format->format_code. - - lo_style->font->color-rgb = is_colors-fontcolor. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = is_colors-fillcolor. - - ro_style = lo_style. - ENDIF. - endmethod. - - - - - - - - method CREATE_FORMULAR_SUBTOTAL. - data: l_row_alpha_start type string, - l_row_alpha_end type string, - l_func_num type string. - - l_row_alpha_start = i_row_int_start. - l_row_alpha_end = i_row_int_end. - - l_func_num = get_function_number( i_totals_function = i_totals_function ). - concatenate 'SUBTOTAL(' l_func_num ',' i_column l_row_alpha_start ':' i_column l_row_alpha_end ')' into r_formula. - endmethod. - - - - - - - method CREATE_FORMULAR_TOTAL. - data: l_row_alpha type string, - l_row_e_alpha type string. - - l_row_alpha = w_row_int + 1. - l_row_e_alpha = i_row_int. - - concatenate i_totals_function '(' i_column l_row_alpha ':' i_column l_row_e_alpha ')' into r_formula. - endmethod. - - - - method CREATE_PATH. - DATA: l_sep TYPE c , - l_path TYPE string, - l_return TYPE i . - - CLEAR r_path. - - " Save the file - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING - sapworkdir = l_path - EXCEPTIONS - get_sapworkdir_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - ). - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - CONCATENATE 'Excel_' w_fcount '.xlsx' INTO r_path. - ELSE. - DO. - ADD 1 TO w_fcount. -*-obtain file separator character--------------------------------------- - CALL METHOD cl_gui_frontend_services=>get_file_separator - CHANGING - file_separator = l_sep - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4. - - IF sy-subrc <> 0. - l_sep = ''. - ENDIF. - - CONCATENATE l_path l_sep 'Excel_' w_fcount '.xlsx' INTO r_path. - - IF cl_gui_frontend_services=>file_exist( file = r_path ) = abap_true. - cl_gui_frontend_services=>file_delete( EXPORTING filename = r_path - CHANGING rc = l_return - EXCEPTIONS OTHERS = 1 ). - IF sy-subrc = 0 . - RETURN. - ENDIF. - ELSE. - RETURN. - ENDIF. - ENDDO. - ENDIF. - - endmethod. - - - - - method CREATE_STYLE_HDR. - data: lo_style type ref to zcl_excel_style. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - lo_style->font->color-rgb = zcl_excel_style_color=>c_white. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FF4F81BD'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - ro_style = lo_style . - endmethod. - - - - - - - method CREATE_STYLE_NORMAL. - DATA: lo_style TYPE REF TO zcl_excel_style, - l_format TYPE zexcel_number_format. - - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - ENDIF. - IF l_format IS NOT INITIAL OR - ( i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL ) . - - lo_style = wo_excel->add_new_style( ). - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - - ro_style = lo_style . - - ENDIF. - endmethod. - - - - - - - method CREATE_STYLE_STRIPPED. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFDBE5F1'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - ro_style = lo_style. - - endmethod. - - - - - - - method CREATE_STYLE_SUBTOTAL. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - - ro_style = lo_style . - - endmethod. - - - - - - - method CREATE_STYLE_TOTAL. - DATA: lo_style TYPE REF TO zcl_excel_style. - DATA: l_format TYPE zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - CREATE OBJECT lo_style->borders->top. - lo_style->borders->top->border_style = zcl_excel_style_border=>c_border_thin. - lo_style->borders->top->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->right. - lo_style->borders->right->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->right->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->down. - lo_style->borders->down->border_style = zcl_excel_style_border=>c_border_double. - lo_style->borders->down->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->left. - lo_style->borders->left->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->left->border_color-rgb = zcl_excel_style_color=>c_black. - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - ENDIF. - - ro_style = lo_style . - - endmethod. - - - method CREATE_TABLE. - TYPES: BEGIN OF ts_output, - fieldname TYPE fieldname, - function TYPE funcname, - END OF ts_output. - - DATA: lo_data TYPE REF TO data. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lt_fieldcatalog TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat, - <fs_stab> TYPE ANY, - <fs_ttab> TYPE STANDARD TABLE, - <fs> TYPE ANY, - <fs_table> TYPE STANDARD TABLE. - - SORT wt_fieldcatalog BY position. - ASSIGN wo_table->* TO <fs_table>. - - READ TABLE <fs_table> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc EQ 0 . - LOOP AT wt_fieldcatalog ASSIGNING <fs_scat>. - ASSIGN COMPONENT <fs_scat>-columnname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - ls_components-name = <fs_scat>-columnname. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - DELETE TABLE wt_fieldcatalog FROM <fs_scat>. - ENDTRY. - IF lo_addit IS BOUND. - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ENDIF. - ENDIF. - ENDLOOP. - IF lt_components_tab IS NOT INITIAL. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( P_COMPONENTS = lt_components_tab - P_STRICT = abap_false ). - CATCH cx_sy_struct_creation. - RETURN. " We can not do anything in this case. - ENDTRY. - - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA wo_data TYPE HANDLE lo_table. - CREATE DATA lo_data TYPE HANDLE lo_struc. - - ASSIGN wo_data->* TO <fs_ttab>. - ASSIGN lo_data->* TO <fs_stab>. - LOOP AT <fs_table> ASSIGNING <fs>. - CLEAR <fs_stab>. - MOVE-CORRESPONDING <fs> TO <fs_stab>. - APPEND <fs_stab> TO <fs_ttab>. - ENDLOOP. - ENDIF. - ENDIF. - - endmethod. - - - - - - METHOD create_text_subtotal. - DATA: l_string(256) TYPE c, - l_func TYPE string. - - CASE i_totals_function. - WHEN zcl_excel_table=>totals_function_sum. " Total - l_func = 'Total'(003). - WHEN zcl_excel_table=>totals_function_min. " Minimum - l_func = 'Minimum'(004). - WHEN zcl_excel_table=>totals_function_max. " Maximum - l_func = 'Maximum'(005). - WHEN zcl_excel_table=>totals_function_average. " Mean Value - l_func = 'Average'(006). - WHEN zcl_excel_table=>totals_function_count. " Count - l_func = 'Count'(007). - WHEN OTHERS. - CLEAR l_func. - ENDCASE. - - MOVE i_value TO l_string. - - CONCATENATE l_string l_func INTO r_text SEPARATED BY space. - -ENDMETHOD. - - - - - - method CREATE_WORKSHEET. - DATA: l_freeze_col TYPE i. - DATA: l_guid TYPE oltpguid16. - - IF wo_data IS BOUND AND wo_worksheet IS BOUND. - - wo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. " By default is on - - IF wt_fieldcatalog IS INITIAL. - set_fieldcatalog( ) . - ELSE. - clean_fieldcatalog( ) . - ENDIF. - - IF i_table = abap_true. - l_freeze_col = bind_table( i_style_table = i_style_table ) . - ELSE. -* Let's check for filter. - IF wt_filter IS NOT INITIAL. - wo_autofilter = wo_excel->add_new_autofilter( io_sheet = wo_worksheet ). - l_freeze_col = bind_cells( ) . - set_autofilter_area( ) . - ELSE. - l_freeze_col = bind_cells( ) . - ENDIF. - - ENDIF. - -* Check for freeze panes - IF ws_layout-is_fixed = abap_true. - IF l_freeze_col = 0. - l_freeze_col = w_col_int. - ENDIF. - wo_worksheet->freeze_panes( EXPORTING ip_num_columns = l_freeze_col - ip_num_rows = w_row_int ) . - ENDIF. - ENDIF. - - endmethod. - - - - - - method EXECUTE_CONVERTER. - DATA: lt_fieldcatalog TYPE zexcel_t_fieldcatalog, - ls_fieldcatalog TYPE zexcel_s_converter_fcat, - lo_if TYPE REF TO zif_excel_converter, - ls_types TYPE ts_alv_types, - lo_addit TYPE REF TO cl_abap_classdescr. - - IF io_object IS BOUND. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_object_ref( io_object ). - CATCH cx_sy_move_cast_error. - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - ls_types-seoclass = lo_addit->get_relative_name( ). - READ TABLE wt_objects INTO ls_types WITH TABLE KEY seoclass = ls_types-seoclass. - IF sy-subrc = 0. - CREATE OBJECT lo_if TYPE (ls_types-clsname). - - TRY. - lo_if->create_fieldcatalog( - EXPORTING - is_option = ws_option - io_object = io_object - it_table = it_table - IMPORTING - es_layout = ws_layout - et_fieldcatalog = wt_fieldcatalog - eo_table = wo_table - et_colors = wt_colors - et_filter = wt_filter - ). - ENDTRY. -* data lines of highest level. - IF ws_layout-max_subtotal_level > 0. - ADD 1 TO ws_layout-max_subtotal_level. - ENDIF. - ELSE. - RAISE EXCEPTION TYPE zcx_excel. - ENDIF. - ELSE. - REFRESH wt_fieldcatalog. - GET REFERENCE OF it_table INTO wo_table. - ENDIF. - - endmethod. - - - - - - - method GET_COLOR_STYLE. - DATA: ls_colors TYPE zexcel_s_converter_col, - ls_color_styles TYPE ts_color_styles, - lo_style TYPE REF TO zcl_excel_style. - - r_style = i_style. " Default we change nothing - - IF wt_colors IS NOT INITIAL. -* Full line has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = space. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - r_style = lo_style->get_guid( ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - ENDIF. - ELSE. -* Only field has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = i_fieldname. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - r_style = ls_color_styles-style_new->get_guid( ). - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - - endmethod. - - - - - - method GET_FILE. - data: lo_excel_writer type ref to zif_excel_writer, - lo_excel type ref to zcl_excel. - - data: ls_seoclass type seoclass. - - - if wo_excel is bound. - create object lo_excel_writer type zcl_excel_writer_2007. - e_file = lo_excel_writer->write_file( wo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = e_file - receiving - et_solix = et_file. - e_bytecount = xstrlen( e_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = e_file - importing - output_length = e_bytecount - tables - binary_tab = et_file. - endif. - endif. - - endmethod. - - - - - method GET_FUNCTION_NUMBER. -*Number Function -*1 AVERAGE -*2 COUNT -*3 COUNTA -*4 MAX -*5 MIN -*6 PRODUCT -*7 STDEV -*8 STDEVP -*9 SUM -*10 VAR -*11 VARP - - case i_totals_function. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_SUM. " Total - r_function_number = 9. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MIN. " Minimum - r_function_number = 5. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MAX. " Maximum - r_function_number = 4. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_AVERAGE. " Mean Value - r_function_number = 1. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_count. " Count - r_function_number = 2. - when others. - clear r_function_number. - endcase. - endmethod. - - - - method GET_OPTION. - - rs_option = ws_option. - - endmethod. - - - - - - - - method GET_STYLE. - DATA: ls_styles TYPE ts_styles, - lo_style TYPE REF TO zcl_excel_style. - - CLEAR r_style. - - READ TABLE wt_styles INTO ls_styles WITH TABLE KEY type = i_type - alignment = i_alignment - inttype = i_inttype - decimals = i_decimals. - IF sy-subrc = 0. - r_style = ls_styles-guid. - ELSE. - CASE i_type. - WHEN c_type_hdr. " Header - lo_style = create_style_hdr( i_alignment = i_alignment ). - WHEN c_type_str. "Stripped - lo_style = create_style_stripped( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_nor. "Normal - lo_style = create_style_normal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_sub. "Subtotals - lo_style = create_style_subtotal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_tot. "Totals - lo_style = create_style_total( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - ENDCASE. - IF lo_style IS NOT INITIAL. - r_style = lo_style->get_guid( ). - ls_styles-type = i_type. - ls_styles-alignment = i_alignment. - ls_styles-inttype = i_inttype. - ls_styles-decimals = i_decimals. - ls_styles-guid = r_style. - ls_styles-style = lo_style. - INSERT ls_styles INTO TABLE wt_styles. - ENDIF. - ENDIF. - endmethod. - - - method INIT_OPTION. - - ws_option-filter = abap_true. - ws_option-hidenc = abap_true. - ws_option-subtot = abap_true. - - endmethod. - - - - - - - method LOOP_NORMAL. - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - -* It is better to loop column by column - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - -* Only if the Header is required create it. - IF ws_option-hidehd IS INITIAL. - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - ENDIF. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true . - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. -* Now let's check for total versus subtotal. - IF <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_total( i_row_int = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_total ). - ENDIF. - ENDLOOP. - endmethod. - - - - - - - method LOOP_SUBTOTAL. - - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_subtotalled TYPE flag, - l_text TYPE string, - ls_sort_values TYPE ts_sort_values, - ls_subtotal_rows TYPE ts_subtotal_rows, - l_sort_level TYPE int4, - l_hidden TYPE int4, - l_line TYPE i, - l_guid TYPE guid_22, - l_tabix TYPE sy-tabix, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i, - lt_fcat TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_sortval> TYPE ANY, - <fs_sortv> TYPE ts_sort_values, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - REFRESH: wt_sort_values, - wt_subtotal_rows. - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - - READ TABLE <fs_tab> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc = 0. - l_row_int = i_row_int + 1. - lt_fcat = wt_fieldcatalog. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - ls_sort_values-fieldname = <fs_sfcat>-columnname. - ls_sort_values-row_int = l_row_int. - ls_sort_values-sort_level = <fs_sfcat>-sort_level. - ls_sort_values-is_collapsed = <fs_sfcat>-is_collapsed. - CREATE DATA ls_sort_values-value LIKE <fs_fldval>. - ASSIGN ls_sort_values-value->* TO <fs_sortval>. - <fs_sortval> = <fs_fldval>. - INSERT ls_sort_values INTO TABLE wt_sort_values. - ENDLOOP. - ENDIF. - l_row_int = i_row_int. -* Let's check if we need to hide a sort level. - DESCRIBE TABLE wt_sort_values LINES l_line. - IF l_line <= 1. - CLEAR l_hidden. - ELSE. - LOOP AT wt_sort_values INTO ls_sort_values WHERE is_collapsed = abap_false. - IF l_hidden < ls_sort_values-sort_level. - l_hidden = ls_sort_values-sort_level. - ENDIF. - ENDLOOP. - ENDIF. - ADD 1 TO l_hidden. " As this is the first level we show. -* First loop without formular only addtional rows with subtotal text. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - ADD 1 TO l_row_int. " 1 is for header row. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - IF sy-subrc = 0. - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - IF <fs_sortval> <> <fs_fldval> OR <fs_sortv>-new = abap_true. -* First let's remmember the subtotal values as it has to appear later. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* Now let's write the subtotal line - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = <fs_sfcat>-sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's change the key - ADD 1 TO l_row_int. - <fs_sortval> = <fs_fldval>. - <fs_sortv>-new = abap_false. - l_line = <fs_sortv>-sort_level. - LOOP AT wt_sort_values ASSIGNING <fs_sortv> WHERE sort_level >= l_line. - <fs_sortv>-row_int = l_row_int. - ENDLOOP. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - ENDLOOP. - ADD 1 TO l_row_int. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* First let's write the value as it has to appear. - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - - l_sort_level = <fs_sfcat>-sort_level. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. - ADD 1 TO l_row_int. - ENDIF. - ENDLOOP. -* Let's write the Grand total - l_sort_level = 0. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . -* lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . Not on grand total - - l_text = create_text_subtotal( i_value = 'Grand'(002) - i_totals_function = <fs_sfcat>-totals_function ). - - l_col_alpha_start = zcl_excel_common=>convert_column2alpha( i_col_int ). - wo_worksheet->set_cell( ip_column = l_col_alpha_start - ip_row = l_row_int - ip_value = l_text - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - -* It is better to loop column by column second time around -* Second loop with formular and data. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Let's set the row dimension values - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = ws_layout-max_subtotal_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim->set_visible( ip_visible = abap_false ) . - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Now let's check for Grand total - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_start = i_row_int + 1. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - ENDIF. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDLOOP. - - endmethod. - - - method OPEN_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string, - l_sep type c. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - - l_dir = create_path( ) . - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - cl_gui_frontend_services=>execute( - exporting - document = l_dir -* application = -* parameter = -* default_directory = -* maximized = -* minimized = -* synchronous = -* operation = 'OPEN' - exceptions - cntl_error = 1 - error_no_gui = 2 - bad_parameter = 3 - file_not_found = 4 - path_not_found = 5 - file_extension_unknown = 6 - error_execute_failed = 7 - synchronous_failed = 8 - not_supported_by_gui = 9 - ). - if sy-subrc <> 0. - message id sy-msgid type sy-msgty number sy-msgno - with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - endif. - - endif. - - - endmethod. - - - method SET_AUTOFILTER_AREA. - DATA: ls_area TYPE zexcel_s_autofilter_area, - l_lines TYPE i, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values. - -* Let's check for filter. - IF wo_autofilter IS BOUND. - ls_area-row_start = 1. - lt_values = wo_autofilter->get_values( ) . - SORT lt_values BY column ASCENDING. - DESCRIBE TABLE lt_values LINES l_lines. - READ TABLE lt_values INTO ls_values INDEX 1. - IF sy-subrc = 0. - ls_area-col_start = ls_values-column. - ENDIF. - READ TABLE lt_values INTO ls_values INDEX l_lines. - IF sy-subrc = 0. - ls_area-col_end = ls_values-column. - ENDIF. - wo_autofilter->set_filter_area( is_area = ls_area ) . - ENDIF. - - endmethod. - - - - - - method SET_CELL_FORMAT. - DATA: l_format TYPE zexcel_number_format. - - CLEAR r_format. - CASE i_inttype. - WHEN cl_abap_typedescr=>typekind_date. - r_format = wo_worksheet->get_default_excel_date_format( ). - WHEN cl_abap_typedescr=>typekind_time. - r_format = wo_worksheet->get_default_excel_time_format( ). - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - IF i_decimals > 0 . - l_format = '#,##0.'. - DO i_decimals TIMES. - CONCATENATE l_format '0' INTO l_format. - ENDDO. - r_format = l_format. - ENDIF. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - r_format = '#,##0'. - ENDCASE. - - endmethod. - - - method SET_FIELDCATALOG. - - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - ls_fieldcatalog TYPE zexcel_s_fieldcatalog. - DATA: ls_fcat TYPE zexcel_s_converter_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN wo_data->* TO <fs_tab> . - - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - LOOP AT lt_dfies INTO ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. - ls_fcat-columnname = ls_dfies-fieldname. - INSERT ls_fcat INTO TABLE wt_fieldcatalog. - ENDLOOP. - - clean_fieldcatalog( ). - - endmethod. - - - - method SET_OPTION. - - IF ws_indx-begdt IS INITIAL. - ws_indx-begdt = sy-datum. - ENDIF. - - ws_indx-aedat = sy-datum. - ws_indx-usera = sy-uname. - ws_indx-pgmid = sy-cprog. - - EXPORT p1 = is_option TO DATABASE indx(xl) FROM ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = is_option. - ENDIF. - - endmethod. - - - - method WRITE_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - if i_path is initial. - l_dir = create_path( ) . - else. - l_dir = i_path. - endif. - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - endif. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - data: lo_alv type REF TO cl_gui_alv_grid. - - try. - lo_alv ?= io_object. - catch cx_sy_move_cast_error . - raise exception type zcx_excel. - endtry. - -endmethod. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_alv TYPE REF TO cl_gui_alv_grid. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_alv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_alv IS BOUND. - lo_alv->get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ). - lo_alv->get_frontend_layout( IMPORTING es_layout = ws_layo ). - lo_alv->get_sort_criteria( IMPORTING et_sort = wt_sort ) . - lo_alv->get_filter_criteria( IMPORTING et_filter = wt_filt ) . - - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method CONSTRUCTOR. - worksheet = io_sheet. - endmethod. - - - - method GET_FILTER_AREA. - - validate_area( ). - - rs_area = filter_area. - - endmethod. - - - - method GET_FILTER_RANGE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - - CONCATENATE l_col_start_c l_row_start_c ':' l_col_end_c l_row_end_c INTO r_range. - - endmethod. - - - - method GET_FILTER_REFERENCE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - l_value = worksheet->get_title( ) . - - r_ref = zcl_excel_common=>escape_string( ip_value = l_value ). - - CONCATENATE r_ref '!$' l_col_start_c '$' l_row_start_c ':$' l_col_end_c '$' l_row_end_c INTO r_ref. - - endmethod. - - - - method GET_VALUES. - - rt_filter = values. - - endmethod. - - - - method SET_FILTER_AREA. - - filter_area = is_area. - - endmethod. - - - - - method SET_VALUE. - DATA: ls_values TYPE zexcel_s_autofilter_values. - -* Checks a re missing. - ls_values-column = i_column. - ls_values-value = i_value. - - INSERT ls_values INTO TABLE values. -* Now we need to be sure we don't get the same value again. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. - - endmethod. - - - - method SET_VALUES. - -* Checks are missing. - values = it_values. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. - - endmethod. - - - method VALIDATE_AREA. - DATA: l_col TYPE zexcel_cell_column, - l_row TYPE zexcel_cell_row. - - l_row = worksheet->get_highest_row( ) . - l_col = worksheet->get_highest_column( ) . - - IF filter_area IS INITIAL. - filter_area-row_start = 1. - filter_area-col_start = 1. - filter_area-row_end = l_row . - filter_area-col_end = l_col . - ENDIF. - - IF filter_area-row_start < 1. - filter_area-row_start = 1. - ENDIF. - IF filter_area-col_start < 1. - filter_area-col_start = 1. - ENDIF. - IF filter_area-row_end > l_row OR - filter_area-row_end < 1. - filter_area-row_end = l_row. - ENDIF. - IF filter_area-col_end > l_col OR - filter_area-col_end < 1. - filter_area-col_end = l_col. - ENDIF. - IF filter_area-row_start >= filter_area-row_end. - filter_area-row_start = filter_area-row_end - 1. - IF filter_area-row_start < 1. - filter_area-row_start = 1. - filter_area-row_end = 2. - ENDIF. - ENDIF. - IF filter_area-col_start > filter_area-col_end. - filter_area-col_start = filter_area-col_end. - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_objects, - sheet_guid TYPE uuid, - autofilter TYPE REF TO zcl_excel_autofilter, - END OF ts_objects, - - tt_objects TYPE HASHED TABLE OF ts_objects WITH UNIQUE KEY sheet_guid. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - method ADD. - DATA: ls_autofilters TYPE ts_objects, - l_guid TYPE uuid. - l_guid = io_sheet->get_guid( ) . - READ TABLE autofilters INTO ls_autofilters WITH TABLE KEY sheet_guid = l_guid. - IF sy-subrc = 0. - ro_autofilter = ls_autofilters-autofilter. - ELSE. - CREATE OBJECT ro_autofilter - EXPORTING - io_sheet = io_sheet. - ls_autofilters-autofilter = ro_autofilter. - ls_autofilters-sheet_guid = l_guid. - INSERT ls_autofilters INTO TABLE autofilters . - ENDIF. - endmethod. - - - method CLEAR. - - REFRESH autofilters. - - endmethod. - - - - - method GET. - - DATA: ls_autofilters TYPE ts_objects. - - READ TABLE autofilters INTO ls_autofilters WITH TABLE KEY sheet_guid = i_sheet_guid. - IF sy-subrc = 0. - ro_autofilter = ls_autofilters-autofilter. - ELSE. - CLEAR ro_autofilter. - ENDIF. - - endmethod. - - - - method IS_EMPTY. - IF autofilters IS INITIAL. - r_empty = abap_true. - ENDIF. - endmethod. - - - - method REMOVE. - DATA: ls_autofilters TYPE ts_objects. - - DELETE autofilters WHERE sheet_guid = i_sheet_guid. - - endmethod. - - - - method SIZE. - DESCRIBE TABLE autofilters LINES r_size. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_col_converter, - col TYPE lvc_col, - int TYPE lvc_int, - inv TYPE lvc_inv, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - END OF ts_col_converter, - - tt_col_converter TYPE HASHED TABLE OF ts_col_converter WITH UNIQUE KEY col int inv. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - ABAP - KKBLO - - - - - - - - - - method APPLY_SORT. - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE, - <fs_sort> TYPE lvc_s_sort. - - CREATE DATA eo_table LIKE it_table. - ASSIGN eo_table->* TO <fs_table>. - - <fs_table> = it_table. - - SORT wt_sort BY spos. - LOOP AT wt_sort ASSIGNING <fs_sort>. - IF <fs_sort>-up = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_false. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - IF <fs_sort>-down = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_true. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - ENDLOOP. - IF lt_otab IS NOT INITIAL. - SORT <fs_table> BY (lt_otab). - ENDIF. - - endmethod. - - - method CLASS_CONSTRUCTOR. -* let's fill the color conversion routines. - DATA: ls_color TYPE ts_col_converter. -* 0 all combination the same - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Blue - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFB0E4FC'. " 176 228 252 blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFB0E4FC'. " 176 228 252 blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF5FCBFE'. " 095 203 254 Int blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF5FCBFE'. " 095 203 254 - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 - INSERT ls_color INTO TABLE wt_colors. - -* Gray - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. - ls_color-fillcolor = 'FFE5EAF0'. " 229 234 240 gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFE5EAF0'. " 229 234 240 gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFD8E8F4'. " 216 234 244 int gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFD8E8F4'. " 216 234 244 int gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -*Yellow - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFEFEB8'. " 254 254 184 yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFEFEB8'. " 254 254 184 yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFF9ED5D'. " 249 237 093 int yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFF9ED5D'. " 249 237 093 int yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* light blue - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEE7FB'. " 206 231 251 light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEE7FB'. " 206 231 251 light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF9ACCEF'. " 154 204 239 int light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF9ACCEF'. " 154 204 239 int light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Green - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEF8AE'. " 206 248 174 Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEF8AE'. " 206 248 174 Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF7AC769'. " 122 199 105 int Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF7AC769'. " 122 199 105 int Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Red - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFDBBBC'. " 253 187 188 Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFDBBBC'. " 253 187 188 Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFB6B6B'. " 251 107 107 int Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFB6B6B'. " 251 107 107 int Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - endmethod. - - - - - method GET_COLOR. - DATA: ls_con_col TYPE zexcel_s_converter_col, - ls_color TYPE ts_col_converter, - l_line TYPE i, - l_color(4) TYPE c. - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_stab> TYPE ANY, - <fs> TYPE ANY, - <fs_tcol> TYPE lvc_t_scol, - <fs_scol> TYPE lvc_s_scol. - -* Loop trough the table to set the color properties of each line. The color properties field is -* Char 4 and the characters is set as follows: -* Char 1 = C = This is a color property -* Char 2 = 6 = Color code (1 - 7) -* Char 3 = Intensified on/of = 1 = on -* Char 4 = Inverse display = 0 = of - - ASSIGN io_table->* TO <fs_tab>. - - IF ws_layo-info_fname IS NOT INITIAL OR - ws_layo-ctab_fname IS NOT INITIAL. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - IF ws_layo-info_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-info_fname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF <fs> IS NOT INITIAL. - l_color = <fs>. - IF l_color(1) = 'C'. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = l_color+1(1) - int = l_color+2(1) - inv = l_color+3(1). - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = space. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - IF ws_layo-ctab_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-ctab_fname OF STRUCTURE <fs_stab> TO <fs_tcol>. - IF sy-subrc = 0. - LOOP AT <fs_tcol> ASSIGNING <fs_scol>. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = <fs_scol>-color-col - int = <fs_scol>-color-int - inv = <fs_scol>-color-inv. - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = <fs_scol>-fname. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - ls_con_col-nokeycol = <fs_scol>-nokeycol. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDLOOP. - ENDIF. - ENDIF. - ENDLOOP. - ENDIF. - endmethod. - - - - - METHOD get_filter. - DATA: ls_filt TYPE lvc_s_filt, - l_line TYPE i, - ls_filter TYPE zexcel_s_converter_fil. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lo_trange TYPE REF TO data, - lo_srange TYPE REF TO data, - lo_ltabdata TYPE REF TO data. - - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_ltab> TYPE STANDARD TABLE, - <fs_stab> TYPE any, - <fs> TYPE any, - <fs1> TYPE any, - <fs_srange> TYPE any, - <fs_trange> TYPE STANDARD TABLE. - - IF ws_option-filter = abap_false. - REFRESH et_filter. - RETURN. - ENDIF. - - ASSIGN xo_table->* TO <fs_tab>. - - CREATE DATA lo_ltabdata LIKE <fs_tab>. - ASSIGN lo_ltabdata->* TO <fs_ltab>. - - LOOP AT wt_filt INTO ls_filt. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - ASSIGN COMPONENT ls_filt-fieldname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF l_line = 1. - REFRESH lt_components_tab. - ls_components-name = 'SIGN'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-sign ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'OPTION'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-option ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'LOW'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'HIGH'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( p_components = lt_components_tab - p_strict = abap_false ). - CATCH cx_sy_struct_creation. - CONTINUE. - ENDTRY. - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA lo_trange TYPE HANDLE lo_table. - CREATE DATA lo_srange TYPE HANDLE lo_struc. - - ASSIGN lo_trange->* TO <fs_trange>. - ASSIGN lo_srange->* TO <fs_srange>. - ENDIF. - REFRESH <fs_trange>. - ASSIGN COMPONENT 'SIGN' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-sign. - ASSIGN COMPONENT 'OPTION' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-option. - ASSIGN COMPONENT 'LOW' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-low. - ASSIGN COMPONENT 'HIGH' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-high. - INSERT <fs_srange> INTO TABLE <fs_trange>. - IF <fs> IN <fs_trange>. - IF ws_option-filter = abap_true. - ls_filter-rownumber = l_line. - ls_filter-columnname = ls_filt-fieldname. - INSERT ls_filter INTO TABLE et_filter. - ELSE. - INSERT <fs_stab> INTO TABLE <fs_ltab>. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - IF ws_option-filter = abap_undefined. - <fs_tab> = <fs_ltab>. - REFRESH <fs_ltab>. - ENDIF. - ENDLOOP. - -ENDMETHOD. - - - - - method UPDATE_CATALOG. - DATA: ls_fieldcatalog TYPE zexcel_s_converter_fcat, - ls_ref TYPE salv_s_ddic_reference, - ls_fcat TYPE lvc_s_fcat, - ls_sort TYPE lvc_s_sort, - l_decimals TYPE lvc_decmls. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat. - - IF ws_layo-zebra IS NOT INITIAL. - cs_layout-is_stripped = abap_true. - ENDIF. - IF ws_layo-no_keyfix IS INITIAL OR - ws_layo-no_keyfix = '0'. - cs_layout-is_fixed = abap_true. - ENDIF. - - LOOP AT wt_fcat INTO ls_fcat. - CLEAR: ls_fieldcatalog, - l_decimals. - CASE ws_option-hidenc. - WHEN abap_false. " We make hiden columns visible - CLEAR ls_fcat-no_out. - WHEN abap_true. -* We convert column and hide it. - WHEN abap_undefined. "We don't convert hiden columns - IF ls_fcat-no_out = abap_true. - ls_fcat-tech = abap_true. - ENDIF. - ENDCASE. - IF ls_fcat-tech = abap_false. - ls_fieldcatalog-tabname = ls_fcat-tabname. - ls_fieldcatalog-fieldname = ls_fcat-fieldname . - ls_fieldcatalog-columnname = ls_fcat-fieldname . - ls_fieldcatalog-position = ls_fcat-col_pos. - ls_fieldcatalog-col_id = ls_fcat-col_id. - ls_fieldcatalog-convexit = ls_fcat-convexit. - ls_fieldcatalog-inttype = ls_fcat-inttype. - ls_fieldcatalog-scrtext_s = ls_fcat-scrtext_s . - ls_fieldcatalog-scrtext_m = ls_fcat-scrtext_m . - ls_fieldcatalog-scrtext_l = ls_fcat-scrtext_l. - l_decimals = ls_fcat-decimals_o. - IF l_decimals IS NOT INITIAL. - ls_fieldcatalog-decimals = l_decimals. - ELSE. - ls_fieldcatalog-decimals = ls_fcat-decimals . - ENDIF. - CASE ws_option-subtot. - WHEN abap_false. " We ignore subtotals - CLEAR ls_fcat-do_sum. - WHEN abap_true. " We convert subtotals and detail - - WHEN abap_undefined. " We should only take subtotals and displayed detail -* for now abap_true - ENDCASE. - CASE ls_fcat-do_sum. - WHEN abap_true. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. - WHEN 'A'. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_min. - WHEN 'B' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_max. - WHEN 'C' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_average. - WHEN OTHERS. - CLEAR ls_fieldcatalog-totals_function . - ENDCASE. - ls_fieldcatalog-fix_column = ls_fcat-fix_column. - IF ws_layo-cwidth_opt IS INITIAL. - IF ls_fcat-col_opt IS NOT INITIAL. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - ELSE. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - IF ls_fcat-no_out IS NOT INITIAL. - ls_fieldcatalog-is_hidden = abap_true. - ls_fieldcatalog-position = ls_fieldcatalog-col_id. " We hide based on orginal data structure - ENDIF. -* Alignment in each cell - CASE ls_fcat-just. - WHEN 'R'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_right. - WHEN 'L'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_left. - WHEN 'C'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_center. - WHEN OTHERS. - CLEAR ls_fieldcatalog-alignment. - ENDCASE. -* Check for subtotals. - READ TABLE wt_sort INTO ls_sort WITH KEY fieldname = ls_fcat-fieldname. - IF sy-subrc = 0 AND ws_option-subtot <> abap_false. - ls_fieldcatalog-sort_level = 0 . -* IF ls_fieldcatalog-totals_function IS INITIAL. " Not clear why not -* CLEAR ls_fieldcatalog-is_subtotalled. -* ELSE. - ls_fieldcatalog-is_subtotalled = ls_sort-subtot. -* ENDIF. - ls_fieldcatalog-is_collapsed = ls_sort-expa. - IF ls_fieldcatalog-is_subtotalled = abap_true. - ls_fieldcatalog-sort_level = ls_sort-spos. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. " we need function for text - ENDIF. - ENDIF. - APPEND ls_fieldcatalog TO ct_fieldcatalog. - ENDIF. - ENDLOOP. - - SORT ct_fieldcatalog BY sort_level ASCENDING. - cs_layout-max_subtotal_level = 0. - LOOP AT ct_fieldcatalog ASSIGNING <fs_scat> WHERE sort_level > 0. - cs_layout-max_subtotal_level = cs_layout-max_subtotal_level + 1. - <fs_scat>-sort_level = cs_layout-max_subtotal_level. - ENDLOOP. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table, - lo_ex_cm TYPE REF TO cl_salv_ex_cm, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - lo_ex_cm ?= lo_result->r_model->r_model. - ws_layo = lo_ex_cm->s_layo. -* T_DRDN Instance Attribute Public Type LVC_T_DROP - wt_fcat = lo_ex_cm->t_fcat. - wt_filt = lo_ex_cm->t_filt. -* T_HYPE Instance Attribute Public Type LVC_T_HYPE -* T_SELECTED_CELLS Instance Attribute Public Type LVC_T_CELL -* T_SELECTED_COLUMNS Instance Attribute Public Type LVC_T_COL - wt_sort = lo_ex_cm->t_sort. - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - else. -* We have a problem and should stop here. - ENDIF. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method GET_TABLE. - DATA: lo_object TYPE REF TO object, - ls_seoclass TYPE seoclass, - l_method TYPE string. - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'IF_SALV_BS_DATA_SOURCE'. - - IF sy-subrc = 0. - l_method = 'GET_TABLE_REF'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ELSE. - l_method = 'GET_REF_TO_TABLE'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - wo_config ?= lo_result->r_model->r_model. - - IF wo_config IS BOUND. - wt_fields = wo_config->if_salv_wd_field_settings~get_fields( ) . - wt_columns = wo_config->if_salv_wd_column_settings~get_columns( ) . - ENDIF. - - create_wt_fcat( io_table = lo_data ). - create_wt_sort( ). - create_wt_filt( ). - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - -* get_color( EXPORTING io_table = eo_table -* IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ELSE. -* We have a problem and should stop here - ENDIF. - ENDIF. -ENDMETHOD. - - - - method CREATE_WT_FCAT. - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - lv_sytabix TYPE sytabix. - - DATA: ls_fcat TYPE lvc_s_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN io_table->* TO <fs_tab> . - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - loop at lt_dfies into ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. -* ls_fcat-columnname = ls_dfies-fieldname. - ls_fcat-col_pos = ls_dfies-position. - ls_fcat-key = ls_dfies-keyflag. - get_fields_info( CHANGING xs_fcat = ls_fcat ) . - - ls_fcat-col_opt = abap_true. - - get_columns_info( CHANGING xs_fcat = ls_fcat ) . - - INSERT ls_fcat INTO TABLE wt_fcat. - endloop. - - endmethod. - - - method CREATE_WT_FILT. -* No neeed for superclass. -* Only for WD - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - DATA: lt_filters TYPE salv_wd_t_filter_rule_ref, - ls_filt TYPE lvc_s_filt. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref, - <fs_filter> TYPE salv_wd_s_filter_rule_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - REFRESH lt_filters. - lt_filters = <fs_fields>-r_field->if_salv_wd_filter~get_filter_rules( ) . - LOOP AT lt_filters ASSIGNING <fs_filter>. - ls_filt-fieldname = <fs_fields>-fieldname. - IF <fs_filter>-r_filter_rule->get_included( ) = abap_true. - ls_filt-sign = 'I'. - ELSE. - ls_filt-sign = 'E'. - ENDIF. - ls_filt-option = <fs_filter>-r_filter_rule->get_operator( ). - ls_filt-high = <fs_filter>-r_filter_rule->get_high_value( ) . - ls_filt-low = <fs_filter>-r_filter_rule->get_low_value( ) . - INSERT ls_filt INTO TABLE wt_filt. - ENDLOOP. - ENDLOOP. - - endmethod. - - - method CREATE_WT_SORT. - DATA: lo_sort TYPE REF TO cl_salv_wd_sort_rule, - l_sort_order TYPE salv_wd_constant, - ls_sort TYPE lvc_s_sort. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - lo_sort = <fs_fields>-r_field->if_salv_wd_sort~get_sort_rule( ) . - IF lo_sort IS BOUND. - l_sort_order = lo_sort->get_sort_order( ). - IF l_sort_order <> if_salv_wd_c_sort=>sort_order. - CLEAR ls_sort. - ls_sort-spos = lo_sort->get_sort_position( ). - ls_sort-fieldname = <fs_fields>-fieldname. -* ls_sort-GROUP - ls_sort-subtot = lo_sort->get_group_aggregation( ). -* ls_sort-COMP -* ls_sort-EXPA -* ls_sort-SELTEXT -* ls_sort-OBLIGATORY -* ls_sort-LEVEL -* ls_sort-NO_OUT - IF l_sort_order = if_salv_wd_c_sort=>sort_order_ascending. - ls_sort-up = abap_true. - ELSE. - ls_sort-down = abap_true. - ENDIF. - INSERT ls_sort INTO TABLE wt_sort. - ENDIF. - ENDIF. - ENDLOOP. - - endmethod. - - - - method GET_COLUMNS_INFO. - DATA: l_numc2 TYPE salv_wd_constant. - - - FIELD-SYMBOLS: <fs_column> TYPE salv_wd_s_column_ref. - - READ TABLE wt_columns ASSIGNING <fs_column> WITH KEY id = xs_fcat-fieldname . - IF sy-subrc = 0. - xs_fcat-col_pos = <fs_column>-r_column->get_position( ) . - l_numc2 = <fs_column>-r_column->get_fixed_position( ). - IF l_numc2 = '02'. - xs_fcat-fix_column = abap_true . - ENDIF. - l_numc2 = <fs_column>-r_column->get_visible( ). - IF l_numc2 = '01'. - xs_fcat-no_out = abap_true . - ENDIF. - ENDIF. - - endmethod. - - - - method GET_FIELDS_INFO. - DATA: lo_aggr TYPE REF TO cl_salv_wd_aggr_rule, - l_aggrtype TYPE salv_wd_constant. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - READ TABLE wt_fields ASSIGNING <fs_fields> WITH KEY fieldname = xs_fcat-fieldname. - IF sy-subrc = 0. - lo_aggr = <fs_fields>-r_field->if_salv_wd_aggr~get_aggr_rule( ) . - IF lo_aggr IS BOUND. - l_aggrtype = lo_aggr->get_aggregation_type( ) . - CASE l_aggrtype. - WHEN if_salv_wd_c_aggregation=>aggrtype_total. - xs_fcat-do_sum = abap_true. - WHEN if_salv_wd_c_aggregation=>aggrtype_minimum. - xs_fcat-do_sum = 'A'. - WHEN if_salv_wd_c_aggregation=>aggrtype_maximum . - xs_fcat-do_sum = 'B'. - WHEN if_salv_wd_c_aggregation=>aggrtype_average . - xs_fcat-do_sum = 'C'. - WHEN OTHERS. - CLEAR xs_fcat-do_sum . - ENDCASE. - ENDIF. - ENDIF. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - METHOD load_vbaproject. - - DATA lv_content TYPE xstring. - - lv_content = me->get_from_zip_archive( ip_path ). - - ip_excel->zif_excel_book_vba_project~set_vbaproject( lv_content ). - - ENDMETHOD. - - - method LOAD_WORKBOOK. - super->load_workbook( EXPORTING iv_workbook_full_filename = iv_workbook_full_filename - io_excel = io_excel ). - - CONSTANTS: lc_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject'. - - DATA: rels_workbook_path TYPE string, - rels_workbook TYPE REF TO if_ixml_document, - path TYPE string, - node TYPE REF TO if_ixml_element, - workbook TYPE REF TO if_ixml_document, - stripped_name TYPE chkfile, - dirname TYPE string, - relationship TYPE t_relationship, - fileversion TYPE t_fileversion, - workbookpr TYPE t_workbookpr. - - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = stripped_name - file_path = dirname. - - " Read Workbook Relationships - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_workbook_path. - - rels_workbook = me->get_ixml_from_zip_archive( rels_workbook_path ). - - node ?= rels_workbook->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - CASE relationship-type. - WHEN lc_vba_project. - " Read VBA binary - CONCATENATE dirname relationship-target INTO path. - me->load_vbaproject( ip_path = path - ip_excel = io_excel ). - WHEN OTHERS. - ENDCASE. - - node ?= node->get_next( ). - ENDWHILE. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'fileVersion' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = fileversion ). - - io_excel->zif_excel_book_vba_project~set_codename( fileversion-codename ). - ENDIF. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'workbookPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = workbookpr ). - - io_excel->zif_excel_book_vba_project~set_codename_pr( workbookpr-codename ). - ENDIF. - - endmethod. - - - method LOAD_WORKSHEET. - - super->load_worksheet( EXPORTING ip_path = ip_path - io_worksheet = io_worksheet ). - - DATA: path TYPE string, - node TYPE REF TO if_ixml_element, - worksheet TYPE REF TO if_ixml_document, - sheetpr TYPE t_sheetpr. - - -* " Read Workbook codeName -* workbook = me->get_ixml_from_zip_archive( ip_path ). -* node ?= workbook->find_from_name( 'fileVersion' ). -* IF node IS BOUND. -* -* fill_struct_from_attributes( EXPORTING ip_element = node -* CHANGING cp_structure = fileversion ). -* -* IO_WORKSHEET->zif_excel_book_vba_project~set_codename( fileversion-codename ). -* ENDIF. - - " Read Workbook codeName - worksheet = me->get_ixml_from_zip_archive( ip_path ). - node ?= worksheet->find_from_name( 'sheetPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = sheetpr ). - - io_worksheet->zif_excel_sheet_vba_project~set_codename_pr( sheetpr-codename ). - ENDIF. - endmethod. - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - -* Signal "not found" -class lcx_not_found implementation. - method constructor. - super->constructor( textid = textid previous = previous ). - me->error = error. - endmethod. "constructor - method if_message~get_text. - result = error. - endmethod. "if_message~get_text -endclass. "lcx_not_found IMPLEMENTATION - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - -* Signal for "Not found" -class lcx_not_found definition inheriting from cx_static_check. - public section. - data error type string. - methods constructor - importing error type string - textid type sotr_conc optional - previous type ref to cx_root optional. - methods if_message~get_text redefinition. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes -class lcl_test definition deferred. -class zcl_excel_reader_huge_file definition local friends lcl_test. - -* -class lcl_test definition for testing " #AU Risk_Level Harmless - inheriting from cl_aunit_assert. " #AU Duration Short - - private section. - data: - out type ref to zcl_excel_reader_huge_file, " object under test - excel type ref to zcl_excel, - worksheet type ref to zcl_excel_worksheet. - methods: - setup, - test_number for testing, - test_shared_string for testing, - test_shared_string_missing for testing, - test_inline_string for testing, - test_empty_cells for testing, - test_boolean for testing, - test_style for testing, - test_style_missing for testing, - test_formula for testing, - test_read_shared_strings for testing, - test_skip_to_inexistent for testing, - get_reader importing iv_xml type string returning value(eo_reader) type ref to if_sxml_reader, - assert_value_equals importing iv_row type i default 1 iv_col type i default 1 iv_value type string, - assert_formula_equals importing iv_row type i default 1 iv_col type i default 1 iv_formula type string, - assert_style_equals importing iv_row type i default 1 iv_col type i default 1 iv_style type ZEXCEL_CELL_STYLE, - assert_datatype_equals importing iv_row type i default 1 iv_col type i default 1 iv_datatype type string. - -endclass. "lcl_test DEFINITION - -* -class lcl_test implementation. - -* - method test_number. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><v>17</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `17` ). - assert_datatype_equals( `n` ). - endmethod. "test_shared_string - -* - method test_shared_string. - data lo_reader type ref to if_sxml_reader. - append `Test1` to out->shared_strings. - append `Test2` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Test2` ). - assert_datatype_equals( `s` ). - endmethod. "test_shared_string -* - method test_shared_string_missing. - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `Test` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Index to non-existent shared string should give an error`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. -* - method test_inline_string. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Alpha` ). - assert_datatype_equals( `inlineStr` ). - endmethod. "test_inline_string - -* - method test_boolean. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="b"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `1` ). - assert_datatype_equals( `b` ). - endmethod. "test_boolean - -* - method test_formula. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><f>A2*A2</f></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_formula_equals( `A2*A2` ). - assert_datatype_equals( `n` ). - endmethod. "test_formula - -* - method test_empty_cells. - -* There is no need to store an empty cell in the ABAP worksheet structure - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `` to out->shared_strings. - append `t` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>0</v></c>` && - `<c r="A2" t="inlineStr"><is><t></t></is></c>` && - `<c r="A3" t="s"><v>1</v></c>` - ). - - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). - - endmethod. - -* - method test_style. - data: - lo_reader type ref to if_sxml_reader, - lo_style type ref to zcl_excel_style, - lv_guid type ZEXCEL_CELL_STYLE. - create object lo_style. - append lo_style to out->styles. - lv_guid = lo_style->get_guid( ). - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_style_equals( lv_guid ). - - endmethod. "test_style - -* - method test_style_missing. - - data: - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Reference to non-existent style should throw an lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. "test_style - -* - method test_read_shared_strings. - data: lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. - lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( - `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - ) ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `Bravo` to lt_exp. - - lt_act = out->read_shared_strings( lo_reader ). - - assert_equals( act = lt_act - exp = lt_exp ). - - endmethod. - -* - method test_skip_to_inexistent. - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( - `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - ) ). - try. - out->skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ). - fail(`Skipping to non-existing element must raise lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " May inspect exception text in debugger - endtry. - endmethod. - -* - method get_reader. - data: lv_full type string. - concatenate `<root><sheetData><row>` iv_xml `</row></sheetData></root>` into lv_full. - eo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( lv_full ) ). - endmethod. "get_reader -* - method assert_value_equals. - - constants: lc_empty_string type string value is initial. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data, - <lv_value> type string. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - if sy-subrc eq 0. - assign <ls_cell_data>-cell_value to <lv_value>. - else. - assign lc_empty_string to <lv_value>. - endif. - - assert_equals( act = <lv_value> - exp = iv_value ). - - endmethod. "assert_value_equals -** - method assert_formula_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_formula - exp = iv_formula ). - - endmethod. "assert_formula_equals -* - method assert_style_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_style - exp = iv_style ). - - endmethod. -* - method assert_datatype_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-data_type - exp = iv_datatype ). - - endmethod. "assert_datatype_equals - method setup. - create object out. - create object excel. - create object worksheet - exporting - ip_excel = excel. - endmethod. "setup -endclass. "lcl_test IMPLEMENTATION - - - - - - - - - - - - - - - - method FILL_CELL_FROM_ATTRIBUTES. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_attribute( ). - if io_reader->node_type ne c_attribute. - exit. - endif. - case io_reader->name. - when `t`. - es_cell-datatype = io_reader->value. - when `s`. - if io_reader->value is not initial. - es_cell-style = get_style( io_reader->value ). - endif. - when `r`. - es_cell-coord = get_cell_coord( io_reader->value ). - endcase. - endwhile. - -endmethod. - - - - - method GET_CELL_COORD. - - zcl_excel_common=>convert_columnrow2column_a_row( - exporting - i_columnrow = iv_coord - importing - e_column = es_coord-column - e_row = es_coord-row - ). - -endmethod. - - - - - - method GET_SHARED_STRING. - data: lv_tabix type i. - lv_tabix = iv_index + 1. - read table shared_strings into ev_value index lv_tabix. - if sy-subrc ne 0. - raise exception type lcx_not_found - exporting - error = |Entry { iv_index } not found in Shared String Table|. - endif. -endmethod. - - - - - - method GET_STYLE. - - data: lv_tabix type i, - lo_style type ref to zcl_excel_style. - - if gs_buffer_style-index ne iv_index. - lv_tabix = iv_index + 1. - read table styles into lo_style index lv_tabix. - if sy-subrc ne 0. - raise exception type lcx_not_found - exporting - error = |Entry { iv_index } not found in Style Table|. - else. - gs_buffer_style-index = iv_index. - gs_buffer_style-guid = lo_style->get_guid( ). - endif. - endif. - - ev_style_guid = gs_buffer_style-guid. - -endmethod. - - - - - - method GET_SXML_READER. - - data: lv_xml type xstring. - - lv_xml = get_from_zip_archive( iv_path ). - eo_reader = cl_sxml_string_reader=>create( lv_xml ). - -endmethod. - - - method LOAD_SHARED_STRINGS. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - shared_strings = read_shared_strings( lo_reader ). - -endmethod. - - - method LOAD_WORKSHEET. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - read_worksheet_data( io_reader = lo_reader - io_worksheet = io_worksheet ). - -endmethod. - - - - - method PUT_CELL_TO_WORKSHEET. - check is_cell-value is not initial - or is_cell-formula is not initial - or is_cell-style is not initial. - call method io_worksheet->set_cell - exporting - ip_column = is_cell-column - ip_row = is_cell-row - ip_value = is_cell-value - ip_formula = is_cell-formula - ip_data_type = is_cell-datatype - ip_style = is_cell-style. -endmethod. - - - - - method READ_SHARED_STRINGS. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - if io_reader->node_type eq c_element_close and - io_reader->name eq `t`. - append io_reader->value to et_shared_strings. - endif. - endwhile. - -endmethod. - - - - - - method READ_WORKSHEET_DATA. - - data: ls_cell type t_cell. - -* Skip to <sheetData> element - skip_to( iv_element_name = `sheetData` io_reader = io_reader ). - -* Main loop: Evaluate the <c> elements and its children - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - case io_reader->node_type. - when c_element_open. - if io_reader->name eq `c`. - ls_cell = fill_cell_from_attributes( io_reader ). - endif. - when c_node_value. - case io_reader->name. - when `f`. - ls_cell-formula = io_reader->value. - when `v`. - if ls_cell-datatype eq `s`. - ls_cell-value = get_shared_string( io_reader->value ). - else. - ls_cell-value = io_reader->value. - endif. - when `t` or `is`. - ls_cell-value = io_reader->value. - endcase. - when c_element_close. - case io_reader->name. - when `c`. - put_cell_to_worksheet( is_cell = ls_cell io_worksheet = io_worksheet ). - when `sheetData`. - exit. - endcase. - endcase. - endwhile. - -endmethod. - - - - - - method SKIP_TO. - -* Skip forward to given element - while io_reader->name ne iv_element_name or - io_reader->node_type ne c_element_open. - io_reader->next_node( ). - if io_reader->node_type = c_end_of_stream. - raise exception type lcx_not_found - exporting - error = |XML error: Didn't find element <{ iv_element_name }>|. - endif. - endwhile. - - -endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - IF ip_type = c_catax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '1'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'b'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '2'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_auto IS SUPPLIED. - ls_ax-auto = ip_auto. - ELSE. - ls_ax-auto = '1'. - ENDIF. - IF ip_lblalgn IS SUPPLIED. - ls_ax-lblalgn = ip_lblalgn. - ELSE. - ls_ax-lblalgn = 'ctr'. - ENDIF. - IF ip_lbloffset IS SUPPLIED. - ls_ax-lbloffset = ip_lbloffset. - ELSE. - ls_ax-lbloffset = '100'. - ENDIF. - IF ip_nomultilvllbl IS SUPPLIED. - ls_ax-nomultilvllbl = ip_nomultilvllbl. - ELSE. - ls_ax-nomultilvllbl = '0'. - ENDIF. - ELSEIF ip_type = c_valax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '2'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'l'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '1'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_crossbetween IS SUPPLIED. - ls_ax-crossbetween = ip_crossbetween. - ELSE. - ls_ax-crossbetween = 'between'. - ENDIF. - ENDIF. - - APPEND ls_ax TO me->axes. - SORT me->axes BY axid ASCENDING. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - method IF_MESSAGE~GET_LONGTEXT. - - IF me->error IS NOT INITIAL - OR me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this as longtext as well -*--------------------------------------------------------------------* - result = me->get_text( ). - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - super->if_message~get_longtext( EXPORTING - preserve_newlines = preserve_newlines - RECEIVING - result = result ). - ENDIF. - endmethod. - - - method IF_MESSAGE~GET_TEXT. - - IF me->error IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this -*--------------------------------------------------------------------* - result = me->error . - ELSEIF me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied by syst create messagetext now -*--------------------------------------------------------------------* - MESSAGE ID syst_at_raise-msgid TYPE syst_at_raise-msgty NUMBER syst_at_raise-msgno - WITH syst_at_raise-msgv1 syst_at_raise-msgv2 syst_at_raise-msgv3 syst_at_raise-msgv4 - INTO result. - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - CALL METHOD super->if_message~get_text - RECEIVING - result = result. - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - method GET_STRUCTURE. -*initialize colors to 'not set' - es_fill-left_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-left_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-right_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-right_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-top_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-top_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-bottom_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-bottom_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-diagonal_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-diagonal_color-theme = zcl_excel_style_color=>c_theme_not_set. - -* Check if all borders is set otherwise check single border - IF me->allborders IS BOUND. - es_fill-left_color = me->allborders->border_color. - es_fill-left_style = me->allborders->border_style. - es_fill-right_color = me->allborders->border_color. - es_fill-right_style = me->allborders->border_style. - es_fill-top_color = me->allborders->border_color. - es_fill-top_style = me->allborders->border_style. - es_fill-bottom_color = me->allborders->border_color. - es_fill-bottom_style = me->allborders->border_style. - ELSE. - IF me->left IS BOUND. - es_fill-left_color = me->left->border_color. - es_fill-left_style = me->left->border_style. - ENDIF. - IF me->right IS BOUND. - es_fill-right_color = me->right->border_color. - es_fill-right_style = me->right->border_style. - ENDIF. - IF me->top IS BOUND. - es_fill-top_color = me->top->border_color. - es_fill-top_style = me->top->border_style. - ENDIF. - IF me->down IS BOUND. - es_fill-bottom_color = me->down->border_color. - es_fill-bottom_style = me->down->border_style. - ENDIF. - ENDIF. - -* Check if diagonal is set - IF me->diagonal IS BOUND. - es_fill-diagonal_color = me->diagonal->border_color. - es_fill-diagonal_style = me->diagonal->border_style. - CASE me->diagonal_mode. - WHEN 1. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 0. - WHEN 2. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 1. - WHEN 3. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 1. - WHEN OTHERS. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 0. - ENDCASE. - ENDIF. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method CONSTRUCTOR. - " default Excel palette based on - " http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.indexedcolors.aspx - - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800000' TO colors. - APPEND '00008000' TO colors. - APPEND '00000080' TO colors. - APPEND '00808000' TO colors. - - APPEND '00800080' TO colors. - APPEND '00008080' TO colors. - APPEND '00C0C0C0' TO colors. - APPEND '00808080' TO colors. - APPEND '009999FF' TO colors. - APPEND '00993366' TO colors. - APPEND '00FFFFCC' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00660066' TO colors. - APPEND '00FF8080' TO colors. - - APPEND '000066CC' TO colors. - APPEND '00CCCCFF' TO colors. - APPEND '00000080' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800080' TO colors. - APPEND '00800000' TO colors. - APPEND '00008080' TO colors. - APPEND '000000FF' TO colors. - - APPEND '0000CCFF' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00CCFFCC' TO colors. - APPEND '00FFFF99' TO colors. - APPEND '0099CCFF' TO colors. - APPEND '00FF99CC' TO colors. - APPEND '00CC99FF' TO colors. - APPEND '00FFCC99' TO colors. - APPEND '003366FF' TO colors. - APPEND '0033CCCC' TO colors. - - APPEND '0099CC00' TO colors. - APPEND '00FFCC00' TO colors. - APPEND '00FF9900' TO colors. - APPEND '00FF6600' TO colors. - APPEND '00666699' TO colors. - APPEND '00969696' TO colors. - APPEND '00003366' TO colors. - APPEND '00339966' TO colors. - APPEND '00003300' TO colors. - APPEND '00333300' TO colors. - - APPEND '00993300' TO colors. - APPEND '00993366' TO colors. - APPEND '00333399' TO colors. - APPEND '00333333' TO colors. - - endmethod. - - - - - - method GET_COLOR. - DATA: lv_index type i. - - lv_index = ip_index + 1. - READ TABLE colors INTO ep_color INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - endmethod. - - - - method GET_COLORS. - ep_colors = colors. - endmethod. - - - - method IS_MODIFIED. - ep_modified = modified. - endmethod. - - - - - method SET_COLOR. - DATA: lv_index TYPE i. - - FIELD-SYMBOLS: <lv_color> LIKE LINE OF colors. - - lv_index = ip_index + 1. - READ TABLE colors ASSIGNING <lv_color> INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - - IF <lv_color> <> ip_color. - modified = abap_true. - <lv_color> = ip_color. - ENDIF. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_NEW_ARGB. - - - CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - DATA: ls_iconset TYPE zexcel_conditional_iconset. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - - - me->rule = zcl_excel_style_conditional=>c_rule_none. -* me->iconset->operator = zcl_excel_style_conditional=>c_operator_none. - me->mode_iconset = ls_iconset. - me->priority = 1. - -* inizialize dimension range - me->stop_cell-cell_row = 1. - me->stop_cell-cell_column = 1. - me->start_cell-cell_row = 1. - me->start_cell-cell_column = 1. - endmethod. - - - - method GET_DIMENSION_RANGE. - IF stop_cell EQ start_cell. "only one cell - ep_dimension_range = start_cell-cell_coords. - ELSE. - CONCATENATE start_cell-cell_coords ':' stop_cell-cell_coords INTO ep_dimension_range. - ENDIF. - endmethod. - - - - - - - method SET_RANGE. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string. - - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - stop_cell-cell_row = 1. - stop_cell-cell_column = lv_column. - lv_row_alpha = ip_stop_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_stop_column lv_row_alpha INTO stop_cell-cell_coords. - - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - start_cell-cell_row = 1. - start_cell-cell_column = lv_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_start_column lv_row_alpha INTO start_cell-cell_coords. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - filltype = zcl_excel_style_fill=>c_fill_none. - fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. - bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. - rotation = 0. - endmethod. - - - - method GET_STRUCTURE. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgColor = me->fgColor. - es_fill-bgColor = me->bgColor. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CALCULATE_TEXT_WIDTH. - " Addition to solve issue #120, contribution by Stefan Schmöcker - r_width = strlen( i_text ). - " use scale factor based on default 11 - " ( don't know where defaultsetting is stored currently ) - r_width = r_width * me->size / 11. - endmethod. - - - method CONSTRUCTOR. - me->color-rgb = zcl_excel_style_color=>c_black. - me->color-theme = zcl_excel_style_color=>c_theme_not_set. - me->color-indexed = zcl_excel_style_color=>c_indexed_not_set. - me->scheme = zcl_excel_style_font=>c_scheme_minor. - me->underline_mode = zcl_excel_style_font=>c_underline_single. - endmethod. - - - - method GET_STRUCTURE. - - es_font-bold = me->bold. - es_font-italic = me->italic. - es_font-underline = me->underline. - es_font-underline_mode = me->underline_mode. - es_font-strikethrough = me->strikethrough. - es_font-size = me->size. - es_font-color = me->color. - es_font-name = me->name. - es_font-family = me->family. - es_font-scheme = me->scheme. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - format_code = me->c_format_general. - endmethod. - - - - method GET_STRUCTURE. - ep_number_format-numfmt = me->format_code. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method CONSTRUCTOR. - locked = me->c_protection_locked. - hidden = me->c_protection_unhidden. - endmethod. - - - - method GET_STRUCTURE. - ep_protection-locked = me->locked. - ep_protection-hidden = me->hidden. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method GET_BOTTOM_ROW_INTEGER. - DATA: lv_table_lines TYPE i. - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - IF settings-bottom_right_row IS NOT INITIAL. -* ev_row = zcl_excel_common=>convert_column2int( settings-bottom_right_row ). " del issue #246 - ev_row = settings-bottom_right_row . " ins issue #246 - EXIT. - ENDIF. - - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - - ev_row = settings-top_left_row + lv_table_lines. - - IF me->has_totals( ) = abap_true." ???? AND ip_include_totals_row = abap_true. - ADD 1 TO ev_row. - ENDIF. - endmethod. - - - - method GET_ID. - ov_id = id. - endmethod. - - - - method GET_NAME. - - IF me->name IS INITIAL. - me->name = zcl_excel_common=>number_to_excel_string( ip_value = me->id ). - CONCATENATE 'table' me->name INTO me->name. - ENDIF. - - ov_name = me->name. - endmethod. - - - - - method GET_REFERENCE. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - lv_right_column TYPE zexcel_cell_column_alpha, - ls_field_catalog TYPE zexcel_s_fieldcatalog, - lv_bottom_row TYPE zexcel_cell_row, - lv_top_row_string(10) TYPE c, - lv_bottom_row_string(10) TYPE c. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - -*column - lv_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - lv_table_lines = 0. - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO lv_table_lines. - ENDLOOP. - lv_column = lv_column + lv_table_lines - 1. - lv_right_column = zcl_excel_common=>convert_column2alpha( lv_column ). - -*row - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - lv_bottom_row = settings-top_left_row + lv_table_lines . - - IF me->has_totals( ) = abap_true AND ip_include_totals_row = abap_true. - ADD 1 TO lv_bottom_row. - ENDIF. - - lv_top_row_string = zcl_excel_common=>number_to_excel_string( settings-top_left_row ). - lv_bottom_row_string = zcl_excel_common=>number_to_excel_string( lv_bottom_row ). - - CONCATENATE settings-top_left_column lv_top_row_string - ':' - lv_right_column lv_bottom_row_string INTO ov_reference. - - endmethod. - - - - - method GET_RIGHT_COLUMN_INTEGER. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - ls_field_catalog TYPE zexcel_s_fieldcatalog. - - IF settings-bottom_right_column IS NOT INITIAL. - ev_column = zcl_excel_common=>convert_column2int( settings-bottom_right_column ). - EXIT. - ENDIF. - - ev_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO ev_column. - ENDLOOP. - - endmethod. - - - - - - method GET_TOTALS_FORMULA. - CONSTANTS: lc_function_id_sum TYPE string VALUE '109', - lc_function_id_min TYPE string VALUE '105', - lc_function_id_max TYPE string VALUE '104', - lc_function_id_count TYPE string VALUE '103', - lc_function_id_average TYPE string VALUE '101'. - - DATA: lv_function_id TYPE string. - - CASE ip_function. - WHEN zcl_excel_table=>totals_function_sum. - lv_function_id = lc_function_id_sum. - - WHEN zcl_excel_table=>totals_function_min. - lv_function_id = lc_function_id_min. - - WHEN zcl_excel_table=>totals_function_max. - lv_function_id = lc_function_id_max. - - WHEN zcl_excel_table=>totals_function_count. - lv_function_id = lc_function_id_count. - - WHEN zcl_excel_table=>totals_function_average. - lv_function_id = lc_function_id_average. - - WHEN zcl_excel_table=>totals_function_custom. " issue #292 - RETURN. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid totals formula. See ZCL_ for possible values'. - ENDCASE. - - CONCATENATE 'SUBTOTAL(' lv_function_id ',[' ip_column '])' INTO ep_formula. - endmethod. - - - - method HAS_TOTALS. - DATA: ls_field_catalog TYPE zexcel_s_fieldcatalog. - - ep_result = abap_false. - - LOOP AT fieldcat INTO ls_field_catalog. - IF ls_field_catalog-totals_function IS NOT INITIAL. - ep_result = abap_true. - EXIT. - ENDIF. - ENDLOOP. - - endmethod. - - - - METHOD set_data. - - DATA lr_temp TYPE REF TO data. - - FIELD-SYMBOLS: <lt_table_temp> TYPE ANY TABLE, - <lt_table> TYPE ANY TABLE. - - GET REFERENCE OF ir_data INTO lr_temp. - ASSIGN lr_temp->* TO <lt_table_temp>. - CREATE DATA table_data LIKE <lt_table_temp>. - ASSIGN me->table_data->* TO <lt_table>. - <lt_table> = <lt_table_temp>. - -ENDMETHOD. - - - - method SET_ID. - id = iv_id. - endmethod. - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - -*&---------------------------------------------------------------------* -*& Class (Implementation) C_OI_PROXY_ERROR -*&---------------------------------------------------------------------* -CLASS c_oi_proxy_error IMPLEMENTATION. - METHOD constructor. -* IMPORTING object_name TYPE c -* method_name TYPE c. - error_nr = ret_call_not_flushed. - me->i_oi_error~error_code = c_oi_errors=>ret_call_not_flushed. - me->i_oi_error~is_flushed = ' '. - me->i_oi_error~has_failed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->message_id = 'SOFFICEINTEGRATION'. - me->message_nr = '899'. - me->param1 = object_name. - me->param2 = method_name. - ENDMETHOD. "constructor - - METHOD i_oi_error~flush_error. - IF error_nr EQ 0. - me->i_oi_error~error_code = c_oi_errors=>ret_ok. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_failed = ' '. - me->i_oi_error~has_succeeded = 'X'. - me->message_id = ''. - me->message_nr = '000'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - IMPORTING - retcode = me->i_oi_error~error_code. - ELSEIF error_nr EQ ret_call_not_flushed. - "call still not flushed - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = me->param2 "method name - objectname = me->param1 - IMPORTING - retcode = me->i_oi_error~error_code. - ELSE. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->i_oi_error~has_failed = 'X'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = error_string - IMPORTING - retcode = me->i_oi_error~error_code. - CALL METHOD c_oi_errors=>get_message - IMPORTING - message_id = me->message_id - message_number = me->message_nr - param1 = me->param1 - param2 = me->param2 - param3 = me->param3 - param4 = me->param4. - ENDIF. - ENDMETHOD. "i_oi_error~flush_error - - METHOD i_oi_error~raise_message. -* IMPORTING type TYPE c. -* EXCEPTIONS message_raised flush_failed. - IF me->i_oi_error~has_succeeded IS INITIAL. - IF NOT me->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. "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->param1. param2 = me->param2. - param3 = me->param3. param4 = me->param4. - - message_id = me->message_id. - message_number = me->message_nr. - ENDMETHOD. "i_oi_error~get_message -ENDCLASS. "C_OI_PROXY_ERROR - -*&---------------------------------------------------------------------* -*& Class (Implementation) CL_GRID_ACCESSION -*&---------------------------------------------------------------------* -CLASS lcl_gui_alv_grid IMPLEMENTATION. - - METHOD get_alv_attributes. - CREATE DATA et_table LIKE io_grid->mt_outtab. - et_table = io_grid->mt_outtab. - ENDMETHOD. "get_data - -ENDCLASS. "CL_GRID_ACCESSION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method'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. "c_oi_proxy_error DEFINITION - -*--------------------------------------------------------------------* -* 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 " ALV grid - EXPORTING - et_table TYPE REF TO data. " dta table - -ENDCLASS. "lcl_gui_alv_grid DEFINITION - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_col_from, - me->print_title_col_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_row_from, - me->print_title_row_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS. - ev_columns_from = me->print_title_col_from. - ev_columns_to = me->print_title_col_to. - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS. - ev_rows_from = me->print_title_row_from. - ev_rows_to = me->print_title_row_to. - endmethod. - - - 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=>convert_column2int( iv_columns_from ). - lv_col_to_int = zcl_excel_common=>convert_column2int( iv_columns_to ). - -*--------------------------------------------------------------------* -* Check if valid range is supplied -*--------------------------------------------------------------------* - IF lv_col_from_int < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF lv_col_from_int > lv_col_to_int. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_col_from = iv_columns_from. - me->print_title_col_to = iv_columns_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - endmethod. - - - 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 < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF iv_rows_from > iv_rows_to. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_row_from = iv_rows_from. - me->print_title_row_to = iv_rows_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - 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->excel->get_default_style( ). - ENDIF. - endmethod. - - - method ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE. - - zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_showzero. - zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. - zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>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. - - - method ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE. - zif_excel_sheet_properties~style = ip_style. - endmethod. - - - method ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE. - - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_unprotected. - CLEAR me->zif_excel_sheet_protection~password. - me->zif_excel_sheet_protection~auto_filter = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_hyperlinks = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_noactive. -* me->zif_excel_sheet_protection~password = zif_excel_sheet_protection=>c_noactive. "issue #68 - me->zif_excel_sheet_protection~pivot_tables = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_locked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_unlocked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sort = zif_excel_sheet_protection=>c_noactive. - - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME. - me->zif_excel_sheet_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - - method ADD_DRAWING. - CASE ip_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - drawings->include( ip_drawing ). - WHEN zcl_excel_drawing=>type_chart. - charts->include( ip_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_CONDITIONAL_STYLE. - - CREATE OBJECT eo_conditional_style. - conditional_styles->add( eo_conditional_style ). - endmethod. - - - - method ADD_NEW_DATA_VALIDATION. - - CREATE OBJECT eo_data_validation. - data_validations->add( eo_data_validation ). - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - - - - - method BIND_ALV. - data: lo_converter type ref to zcl_excel_converter. - - create object lo_converter. - - try. - lo_converter->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. - - - - - - - - - - - - - - - - - - - - - - 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'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. "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: <f_collect00> type standard table. - field-symbols: <f_collect01> type standard table. - field-symbols: <f_collect02> type standard table. - field-symbols: <f_collect03> type standard table. - field-symbols: <f_collect04> type standard table. - field-symbols: <f_collect05> type standard table. - field-symbols: <f_collect06> type standard table. - field-symbols: <f_collect07> type standard table. - field-symbols: <f_collect08> type standard table. - field-symbols: <f_collect09> type standard table. - -* table before append subtotal lines - field-symbols: <f_alv_tab> 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: <f_excel_tab> type standard table. - field-symbols: <f_excel_line> type any. - -* dyn subtotal tables - field-symbols: <f_collect_tab> type standard table. - field-symbols: <f_collect_line> type any. - - field-symbols: <f_filter_idx_line> like line of LT_FILTER_IDX_KKBLO. - field-symbols: <f_fieldcat_line> like line of LT_FIELDCAT_KKBLO. - field-symbols: <f_grouplevels_line> like line of LT_GROUPLEVELS_KKBLO. - field-symbols: <f_line> 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. " currency / quantity flag - data: wa_t006 type t006. " decimal place of unit - - data: l_num type i. " table columns number - data: l_typ type c. " table type - data: wa type ref to data. - data: l_int type i. - data: l_counter type i. - - field-symbols: <f_excel_column> type any. - field-symbols: <f_fcat_column> 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. " exporting column number - data vkeycount type i. - data all type i. - data mit type i value 1. " index of recent row? - data li_col_pos type i value 1. " column position - data li_col_num type i. " table columns number - field-symbols: <line> type any. - field-symbols: <item> 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. "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 'X'. - data: li_head_top type i. "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->is_destroyed - IMPORTING - ret_value = l_is_closed. - -* if dun detroyed yet: close -> release proxy - - IF l_is_closed is initial. - call method lo_proxy->close_document -* EXPORTING -* do_save = do_save - IMPORTING - error = lo_error - retcode = lc_retcode. - ENDIF. - - call method lo_proxy->release_document - IMPORTING - error = lo_error - retcode = lC_retcode. - - else. - lc_retcode = c_oi_errors=>ret_document_not_open. - ENDIF. - -* Detroy control container - - IF lo_control is not initial. - CALL METHOD lo_control->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=>ret_ok. - close_document. - call method lo_error->raise_message - EXPORTING - type = 'E'. - clear: lo_error. - endif. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* SESSION 0: DOI CONSTRUCTOR -*--------------------------------------------------------------------* - -* check active windown - - call function 'GUI_HAS_ACTIVEX' - 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=>get_container_control - IMPORTING - control = lo_control - retcode = lC_retcode. - - error_doi. - -* Initialize Container control - - CALL METHOD lo_control->init_control - EXPORTING - parent = CL_GUI_CONTAINER=>DEFAULT_SCREEN - r3_application_name = '' - inplace_enabled = 'X' - no_flush = 'X' - register_on_close_event = 'X' - register_on_custom_event = 'X' - IMPORTING - error = lO_ERROR - retcode = lc_retcode. - - error_doi. - -* Get Proxy Document: -* check exist of document proxy, if exist -> 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 = 'Excel.Sheet.8'. - else. -* xlsx format, doctype = soi_doctype_excel_sheet - l_doctype_excel_sheet = 'Excel.Sheet'. - ENDIF. - - CALL METHOD lo_control->get_document_proxy - EXPORTING - document_type = l_doctype_excel_sheet - register_container = 'X' - 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->create_document - EXPORTING - create_view_data = 'X' - open_inplace = 'X' - no_flush = 'X' - 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->open_document - EXPORTING - document_url = i_document_url - open_inplace = 'X' - no_flush = 'X' - IMPORTING - error = lo_error - retcode = lc_retcode. - - error_doi. - - endif. - -* Check Spreadsheet Interface of Document Proxy - - CALL METHOD lo_proxy->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->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=>SCREEN0. - - call method lo_grid->get_alv_attributes - EXPORTING - io_grid = io_alv - IMPORTING - Et_table = lt_alv. - - assign lt_alv->* to <f_alv_tab>. - -* fieldcat - - CALL METHOD iO_alv->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 = '1'. - endif. - clear: wa_fieldcat_lvc. - -* sort table - - CALL METHOD IO_ALV->GET_SORT_CRITERIA - IMPORTING - ET_SORT = lt_sort_lvc. - - -* filter index - - CALL METHOD IO_ALV->GET_FILTERED_ENTRIES - IMPORTING - ET_FILTERED_ENTRIES = lt_filter_idx_lvc. - -* group level + subtotal - - CALL METHOD IO_ALV->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->* to <f_collect00>. - assign lt_collect01->* to <f_collect01>. - assign lt_collect02->* to <f_collect02>. - assign lt_collect03->* to <f_collect03>. - assign lt_collect04->* to <f_collect04>. - assign lt_collect05->* to <f_collect05>. - assign lt_collect06->* to <f_collect06>. - assign lt_collect07->* to <f_collect07>. - assign lt_collect08->* to <f_collect08>. - assign lt_collect09->* to <f_collect09>. - -* transfer to KKBLO struct - - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - 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 = <f_alv_tab> - EXCEPTIONS - IT_DATA_MISSING = 1 - IT_FIELDCAT_LVC_MISSING = 2 - OTHERS = 3. - IF SY-SUBRC <> 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 & total line - - create data lt_excel like <f_ALV_TAB>. - assign lt_excel->* to <f_excel_tab>. - - loop at <f_alv_tab> assigning <f_line>. - l_save_index = sy-tabix. - -* filter base on filter index table - - read table LT_FILTER_IDX_KKBLO assigning <f_filter_idx_line> - with key index = l_save_index - binary search. - if sy-subrc ne 0. - append <f_line> to <f_excel_tab>. - endif. - -* append subtotal lines - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - with key index_to = l_save_index - binary search. - if sy-subrc = 0. - l_tabix = sy-tabix. - do. - if <f_grouplevels_line>-subtot eq 'X' and - <f_grouplevels_line>-hide_level is initial and - <f_grouplevels_line>-cindex_from ne 0. - -* dynamic append subtotal line to excel table base on grouplevel table -* ex <f_GROUPLEVELS_line>-level = 1 -* then <f_collect_tab> = '<F_COLLECT01>' - - l_collect = <f_grouplevels_line>-level. - condense l_collect. - concatenate '<F_COLLECT0' - l_collect '>' -* '->*' - into l_collect. - - assign (l_collect) to <f_collect_tab>. - -* incase there're more than 1 total line of group, at the same level -* for example: subtotal of multi currency - - LOOP AT <f_collect_tab> assigning <f_collect_line>. - IF sy-tabix between <f_grouplevels_line>-cindex_from - and <f_grouplevels_line>-cindex_to. - - - append <f_collect_line> to <f_excel_tab>. - -* 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 'SUBTOT' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - clear: subrangeitem. - - ENDIF. - ENDLOOP. - unassign: <f_collect_tab>. - unassign: <f_collect_line>. - clear: l_collect. - endif. - -* check next subtotal level of group - - unassign: <f_grouplevels_line>. - add 1 to l_tabix. - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - index l_tabix. - if sy-subrc ne 0 - or <f_grouplevels_line>-index_to ne l_save_index. - exit. - endif. - - unassign: - <f_collect_tab>, - <f_collect_line>. - - enddo. - endif. - - clear: - l_tabix, - l_save_index. - - unassign: - <f_filter_idx_line>, - <f_grouplevels_line>. - - endloop. - -* free local data - - unassign: - <f_line>, - <f_collect_tab>, - <f_collect_line>, - <f_fieldcat_line>. - -* append grand total line - - IF <f_collect00> is assigned. - assign <f_collect00> to <f_collect_tab>. - if <f_collect_tab> is not initial. - LOOP AT <f_collect_tab> assigning <f_collect_line>. - - append <f_collect_line> to <f_excel_tab>. - -* 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 'TOTAL' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - ENDLOOP. - endif. - ENDIF. - - clear: - subrangeitem, - LT_SORT_KKBLO, - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>. - - unassign: - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>, - <f_collect_tab>, - <f_collect_line>. - -*--------------------------------------------------------------------* -* SESSION 3: MAP DATA TO SEMANTIC TABLE -*--------------------------------------------------------------------* - -* get dependent field field: currency and quantity - - create data wa like line of <f_excel_tab>. - assign wa->* to <f_excel_line>. - - describe field <f_excel_line> type l_typ components l_num. - - do l_num times. - l_save_index = sy-index. - assign component l_save_index of structure <f_excel_line> - to <f_excel_column>. - if sy-subrc ne 0. - message e059(0k) with 'FATAL ERROR' raising fatal_error. - endif. - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname. - assign component <f_fieldcat_line>-fieldname - of structure <f_excel_line> to <f_fcat_column>. - - describe distance between <f_excel_column> and <f_fcat_column> - 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 = <f_fieldcat_line>-fieldname. - wa_column_index-tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-cfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-ctabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - - if <f_fieldcat_line>-qfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-qfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-qtabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - -* rewrite field data type - - if <f_fieldcat_line>-inttype = 'X' - and <f_fieldcat_line>-datatype(3) = 'INT'. - <f_fieldcat_line>-inttype = 'I'. - endif. - - endloop. - - clear: l_save_index. - unassign: <f_fieldcat_line>. - - enddo. - -* build semantic tables - - l_n_hrz_keys = 1. - -* Get keyfigures - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - - clear wa_sema. - clear wa_hkey. - -* Units belong to keyfigures -> display as str - - read table lt_fieldcat_depf into wa_fieldcat_depf with key - fieldname = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-tabname. - - if sy-subrc = 0. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - -* Keyfigures - - else. - case <f_fieldcat_line>-datatype. - when 'QUAN'. - wa_sema-col_typ = 'N03'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. " no dependent field - endif. - - when 'DATS'. - wa_sema-col_typ = 'DAT'. - wa_sema-col_ops = 'NOP'. - - when 'CHAR' OR 'UNIT' OR 'CUKY'. " Added fieldformats UNIT and CUKY - dd. 26-10-2012 Wouter Heuvelmans - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. " dependent field - -* incase numeric, ex '00120' -> display as '12' - - when 'NUMC'. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - - when others. - wa_sema-col_typ = 'NUM'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. - 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 = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-cfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-qfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-qfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-currency is initial. - - select * from tcurx into table lt_tcurx. - sort lt_tcurx. - read table lt_tcurx into wa_tcurx - with key currkey = <f_fieldcat_line>-currency. - if sy-subrc = 0. - l_num_help = wa_tcurx-currdec. - concatenate 'N' 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 = <f_fieldcat_line>-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: - <f_fieldcat_line>, - <f_excel_line>, - <f_excel_column>, - <f_fcat_column>. - -*--------------------------------------------------------------------* -* 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=>ret_interface_not_supported. - call method c_oi_errors=>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 = 'OLE_DOCUMENT_PROXY' - method_name = 'get_ranges_names'. - - call method c_oi_errors=>add_error - EXPORTING - error = l_error. - - - describe table lt_sema lines datareal. - describe table <f_excel_tab> 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 ('.', ',', ...) in Office config - - call method lo_proxy->get_application_property - EXPORTING - property_name = 'INTERNATIONAL' - subproperty_name = 'DECIMAL_SEPARATOR' - 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 <g> type any. - data search_item(4) value ' #'. - - concatenate ',' decimal '.' decimal into comma_elim. - - data help type i. " table (with subtotal) line number - - help = datac. - - data: rowmax type i value 1. " header row number - data: columnmax type i value 0. " header columns number - - loop at lt_hkey into hkeyitem. - if hkeyitem-col_no > columnmax. - columnmax = hkeyitem-col_no. - endif. - - if hkeyitem-row_no > rowmax. - rowmax = hkeyitem-row_no. - endif. - endloop. - - data: hkeycolumns type i. " header columns no - - hkeycolumns = columnmax. - - if hkeycolumns < l_n_att_cols. - hkeycolumns = l_n_att_cols. - endif. - - columnmax = 0. - - loop at lt_vkey into vkeyitem. - if vkeyitem-col_no > columnmax. - columnmax = vkeyitem-col_no. - endif. - endloop. - - data overflow type i value 1. - data testname(10) type c. - data temp2 type i. " 1st item row position in excel - data realmit type i value 1. - data realoverflow type i value 1. " row index in content - - call method lo_spreadsheet->screen_update - EXPORTING - updating = ''. - - call method lo_spreadsheet->load_lib. - - data: str(40) type c. " range names of columns range (w/o col header) - data: rows type i. " 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 'TITLE'. - 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->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 'H'. "title - li_font_size = 16. - li_font_bold = 1. - li_font_italic = -1. - when 'S'. "subtile - li_font_size = -1. - li_font_bold = 1. - li_font_italic = -1. - when others. "'A' comment - li_font_size = -1. - li_font_bold = -1. - li_font_italic = 1. - endcase. - - call method lo_spreadsheet->set_font - EXPORTING - rangename = ls_commentary_range - family = '' - 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->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 = 'DAT' or semaitem-col_typ = 'MON' or - semaitem-col_typ = 'N00' or semaitem-col_typ = 'N01' or - semaitem-col_typ = 'N01' or semaitem-col_typ = 'N02' or - semaitem-col_typ = 'N03' or semaitem-col_typ = 'PCT' or - semaitem-col_typ = 'STR' or semaitem-col_typ = 'NUM'. - clear str. - str = semaitem-col_no. - condense str. - concatenate 'DATA' 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->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 <f_excel_tab> assigning <line>. - assign component semaitem-col_no of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - dec = typeinfo-decimals. - elseif typeinfo-type = 'I'. - dec = 0. - endif. - - describe field <line> type typ components count. - mit = 1. - do count times. - if mit = semaitem-col_src. - assign component sy-index of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - 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 = 'DAT'. - if semaitem-col_no > vkeycount. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = all - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'STR'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'MON'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 10 - no_flush = no_flush. - elseif semaitem-col_typ = 'N00'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'N01'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 1 - no_flush = no_flush. - elseif semaitem-col_typ = 'N02'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - elseif semaitem-col_typ = 'N03'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 3 - no_flush = no_flush. - elseif semaitem-col_typ = 'N04'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 4 - no_flush = no_flush. - elseif semaitem-col_typ = 'NUM'. - if dec eq -1. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = dec - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'PCT'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - 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 = ''. - curritem-size = -1. - curritem-bold = -1. - curritem-italic = -1. - curritem-align = -1. - curritem-frametyp = -1. - curritem-framecolor = -1. - curritem-currency = ''. - 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 <f_excel_tab> assigning <line>. - -* save line index to compare with lt_subtot_indexs, -* to discover line is a subtotal / totale line or not -* ex use to set 'dun display zero in subtotal / total line' - - 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 <line> to <item>. - else. - assign component sy-index - of structure <line> to <item>. - endif. - - contentsitem-row = realoverflow. - - if sy-subrc = 0. - move semaitem-col_ops to search_item(3). - search 'ADD#CNT#MIN#MAX#AVG#NOP#DFT#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - move semaitem-col_typ to search_item(3). - search 'NUM#N00#N01#N02#N03#N04#PCT#DAT#MON#STR#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - contentsitem-column = sy-index. - if semaitem-col_typ eq 'DAT' or semaitem-col_typ eq 'MON'. - if semaitem-col_no > vkeycount. - - " Hinweis 512418 - " EXCEL bezieht Datumsangaben - " auf den 31.12.1899, behandelt - " aber 1900 als ein Schaltjahr - " d.h. ab 1.3.1900 korrekt - " 1.3.1900 als Zahl = 61 - - data: genesis type d value '18991230'. - data: number_of_days type p. -* change for date in char format & sema_type = X - data: temp_date type d. - - if not <item> is initial and not <item> co ' ' and not - <item> co '0'. -* change for date in char format & sema_type = X starts - if sema_type = 'X'. - describe field <item> type typ. - if typ = 'C'. - temp_date = <item>. - number_of_days = temp_date - genesis. - else. - number_of_days = <item> - genesis. - endif. - else. - number_of_days = <item> - genesis. - endif. -* change for date in char format & sema_type = X ends - if number_of_days < 61. - number_of_days = number_of_days - 1. - endif. - - set country 'DE'. - 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 <item> to contentsitem-value. - endif. - elseif semaitem-col_typ eq 'NUM' or - semaitem-col_typ eq 'N00' or - semaitem-col_typ eq 'N01' or - semaitem-col_typ eq 'N02' or - semaitem-col_typ eq 'N03' or - semaitem-col_typ eq 'N04' or - semaitem-col_typ eq 'PCT'. - set country 'DE'. - describe field <item> type typ. - - if semaitem-col_cur is initial. - if typ ne 'F'. - write <item> to contentsitem-value no-grouping - no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - no-sign. - endif. - else. -* Treat of fixed curreny for column >>Y9CK007319 - if semaitem-col_cur < 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 'F'. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign. - endif. - endif. - else. - assign component semaitem-col_cur - of structure <line> to <g>. -* 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 <f_fieldcat_line> - with key tabname = l_tabname - tech = space - no_out = space - col_pos = semaitem-col_no. - IF sy-subrc = 0. - IF <f_fieldcat_line>-cfieldname is not initial. - l_def = 'C'. - else."if <f_fieldcat_line>-qfieldname is not initial. - l_def = 'Q'. - ENDIF. - ENDIF. - -* if field is amount field -* exporting of amount field base on currency decimal table: TCURX - IF l_def = 'C'. "field is amount field - select single * from tcurx into wa_tcurx - where currkey = <g>. -* if amount ref to un-know currency -> 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 'F'. - write <item> to contentsitem-value - currency <g> - no-sign no-grouping. - else. - write <item> to contentsitem-value - decimals 14 currency <g> - no-sign no-grouping. - endif. - -* if field is quantity field -* exporting of quantity field base on quantity decimal table: T006 - - else."if l_def = 'Q'. " field is quantity field - clear: wa_t006. - select single * from t006 into wa_t006 - where MSEHI = <g>. -* if quantity ref to un-know unit-> default decimal = 2 - if sy-subrc eq 0. - curritem-decimals = wa_t006-decan. - else. - curritem-decimals = 2. - endif. - append curritem to currcells. - - write <item> to contentsitem-value - unit <g> - no-sign no-grouping. - condense contentsitem-value. - - ENDIF. - - endif. "Y9CK007319 - endif. - condense contentsitem-value. - -* add function fieldcat-no zero display - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - if <f_fieldcat_line>-col_pos = semaitem-col_no. - if <f_fieldcat_line>-no_zero = 'X'. - if <item> = '0'. - 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 <item> = '0'. - clear: contentsitem-value. - endif. - ENDIF. - endif. - endif. - endloop. - unassign: <f_fieldcat_line>. - - if <item> lt 0. - search contentsitem-value for 'E'. - if sy-fdpos eq 0. - -* bring negative sign to front of amount - - translate contentsitem-value using '- '. - condense contentsitem-value no-gaps. - concatenate '-' contentsitem-value - into contentsitem-value. - else. - concatenate '-' 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 ":" enthalten. -* F#ƒÂ#r die -* darf keine Kommaseparierung stattfinden. -* Changing for correction request - Y6BK041073 - if contentsitem-value co '0123456789.,-+E '. - translate contentsitem-value using comma_elim. - endif. - else. - clear contentsitem-value. - -* if type is not numeric -> dun display with zero - - write <item> 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: <f_fieldcat_line>. - -* set item range for set_range_data method - - testname = mit / const. - condense testname. - - concatenate 'TEST' 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->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 = 'X'. - -* 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 > 1. - rowmaxtemp = rowmax - 1. - rowcount = 1. - do rowmaxtemp times. - columncount = 1. - do columnmax times. - contentsitem-column = columncount. - contentsitem-row = rowcount. - contentsitem-value = ''. - 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 = 'TESTHKEY'. - rangeitem-rows = rowmax. - rangeitem-columns = hkeycolumns. - append rangeitem to ranges. - clear: rangeitem. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'TESTHKEY' - 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. " 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: <f_source> type any. - field-symbols: <f_des> type any. - -* columns header format - - wa_format-front = -1. - wa_format-back = 15. "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 -* -> map input format - - if i_columns_header = 'X'. - wa_format-name = 'TESTHKEY'. - 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. " dun map range name - assign component sy-index of structure i_format_col_header - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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 = 'X'. - 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 = 'X'. - 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->cell_format - EXPORTING - cells = currcells - no_flush = no_flush. - -* item data: write item table content - - call method lo_spreadsheet->set_ranges_data - EXPORTING - ranges = ranges - contents = contents - no_flush = no_flush. - -* whole table range to format all table - - if i_columns_header = 'X'. - li_head_top = li_commentary_rows + 1. - else. - li_head_top = li_commentary_rows + 2. - help = help - 1. - endif. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'WHOLE_TABLE' - 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 = 'X'. - call method lo_spreadsheet->fit_widest - EXPORTING - name = 'WHOLE_TABLE' - 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=>FLUSH ) - - call method lo_spreadsheet->set_frame - EXPORTING - rangename = 'WHOLE_TABLE' - 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->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) = 'SUB'. - wa_format-back = 36. "subtotal line - wa_format_temp = i_format_subtotal. - else. - wa_format-back = 27. "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. " dun map range name - assign component sy-index of structure wa_format_temp - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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->set_ranges_format - EXPORTING - formattable = lt_format - no_flush = no_flush. - refresh: lt_format. - endif. -*--------------------------------------------------------------------* - call method lo_spreadsheet->screen_update - EXPORTING - updating = 'X'. - - call method c_oi_errors=>flush_errors. - - lo_error_w = l_error. - lc_retcode = lo_error_w->error_code. - -** catch no_flush -> led to dump ( optional ) -* go_error = l_error. -* gc_retcode = go_error->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, - <f_excel_tab>. - - clear: - lo_error_w. - - unassign: - <line>, - <item>, - <f_excel_tab>. - -*--------------------------------------------------------------------* -* SESSION 5: SAVE AND CLOSE FILE -*--------------------------------------------------------------------* - -* ex of save path: 'FILE://C:\temp\test.xlsx' - concatenate 'FILE://' I_save_path - into ls_path. - - call method lo_proxy->save_document_to_url - EXPORTING - no_flush = 'X' - url = ls_path - IMPORTING - error = lo_error - retcode = lc_retcode - CHANGING - document_size = li_document_size. - - error_doi. - -* if save successfully -> raise successful message -* message i499(sy) with 'Document is Exported to ' p_path. - message i499(sy) with 'Data has been exported successfully'. - - clear: - ls_path, - li_document_size. - - close_document. - endmethod. - - - - - - - - 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 'B', - lc_top_left_row TYPE zexcel_cell_row VALUE 3. - - 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, "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: - <ls_field_catalog> TYPE zexcel_s_fieldcatalog, - <ls_field_catalog_custom> TYPE zexcel_s_fieldcatalog, - <fs_table_line> TYPE ANY, - <fs_fldval> 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=>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=>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 -*--------------------------------------------------------------------* - "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. - - "Calculate the top left row of the current table - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - lv_row_int = ls_settings-top_left_row. - - "Get number of row for the current table - DESCRIBE TABLE ip_table LINES lv_rows. - - "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=>convert_column2alpha( lv_maxcol ). - ls_settings-bottom_right_row = lv_maxrow. - - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - - lo_iterator = me->tables->if_object_collection~get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_curtable ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF ( ( ls_settings-top_left_row GE lo_curtable->settings-top_left_row AND ls_settings-top_left_row LE lo_curtable->settings-bottom_right_row ) - OR - ( ls_settings-bottom_right_row GE lo_curtable->settings-top_left_row AND ls_settings-bottom_right_row LE lo_curtable->settings-bottom_right_row ) - ) - AND - ( ( lv_column_int GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_column_int LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - OR - ( lv_maxcol GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_maxcol LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - ). - lv_errormessage = 'Table overlaps with previously bound table and will not be added to worksheet.'(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->settings = ls_settings. - lo_table->set_data( ir_data = ip_table ). - lv_id = me->excel->get_next_table_id( ). - lo_table->set_id( iv_id = lv_id ). -* lo_table->fieldcat = lt_field_catalog[]. - - me->tables->add( lo_table ). - -* It is better to loop column by column (only visible column) - LOOP AT lt_field_catalog ASSIGNING <ls_field_catalog> WHERE dynpfld EQ abap_true. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - " Due restrinction of new table object we cannot have two column with the same name - " Check if a column with the same name exists, if exists add a counter - " If no medium description is provided we try to use small or long -* lv_value = <ls_field_catalog>-scrtext_m. - IF <ls_field_catalog>-scrtext_m IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_m. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_s IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_s. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_l IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_l. - ELSE. - lv_value = 'Column'. " default value as Excel does - <ls_field_catalog>-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 <> 0. - <ls_field_catalog>-scrtext_l = lv_value. - INSERT lv_value INTO TABLE lt_column_name_buffer. - EXIT. - ELSE. - lv_syindex = sy-index. - CONCATENATE <ls_field_catalog>-scrtext_l lv_syindex INTO lv_value. - ENDIF. - - ENDWHILE. - " First of all write column header - IF <ls_field_catalog>-style_header IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_value - ip_style = <ls_field_catalog>-style_header ). - ELSE. - me->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 <fs_table_line>. - - ASSIGN COMPONENT <ls_field_catalog>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - " issue #290 Add formula support in table - IF <ls_field_catalog>-formula EQ abap_true. - IF <ls_field_catalog>-style IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> ). - ENDIF. - ELSE. - IF <ls_field_catalog>-style IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> ). - ENDIF. - ENDIF. - ADD 1 TO lv_row_int. - - ENDLOOP. - IF sy-subrc <> 0. "create empty row if table has no data - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = space ). - ADD 1 TO lv_row_int. - ENDIF. - -*--------------------------------------------------------------------* - " totals -*--------------------------------------------------------------------* - IF <ls_field_catalog>-totals_function IS NOT INITIAL. - lv_formula = lo_table->get_totals_formula( ip_column = <ls_field_catalog>-scrtext_l ip_function = <ls_field_catalog>-totals_function ). - IF <ls_field_catalog>-style_total IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = lv_formula - ip_style = <ls_field_catalog>-style_total ). - ELSE. - me->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. - -*--------------------------------------------------------------------* - " conditional formatting -*--------------------------------------------------------------------* - IF <ls_field_catalog>-cond_style IS NOT INITIAL. - lv_first_row = ls_settings-top_left_row + 1. " +1 to exclude header - lv_last_row = ls_settings-top_left_row + lv_rows. - <ls_field_catalog>-cond_style->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. - -*--------------------------------------------------------------------* - " Set field catalog -*--------------------------------------------------------------------* - lo_table->fieldcat = lt_field_catalog[]. - - es_table_settings = ls_settings. - es_table_settings-bottom_right_column = lv_column_alpha. - " >> Issue #291 - IF ip_table IS INITIAL. - es_table_settings-bottom_right_row = ls_settings-top_left_row + 2. "Last rows - ELSE. - es_table_settings-bottom_right_row = ls_settings-top_left_row + lv_rows + 1. "Last rows - ENDIF. - " << Issue #291 - - endmethod. - - - - - - - *--------------------------------------------------------------------* -* issue #293 - Roberto Bianco -* - Christian Assig 2014-03-14 -* -* changes: - Calculate widths using SAPscript font metrics -* (transaction SE73) -* - Calculate the width of dates -* - Add additional width for auto filter buttons -* - Add cell padding to simulate Excel behavior -*--------------------------------------------------------------------* -METHOD calculate_cell_width. - - CONSTANTS: - lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT - lc_default_font_height TYPE tdfontsize VALUE '110', - lc_excel_cell_padding TYPE float VALUE '0.75'. - - DATA: ld_cell_value TYPE zexcel_cell_value, - ld_current_character TYPE c LENGTH 1, - ld_style_guid TYPE zexcel_cell_style, - ls_stylemapping TYPE zexcel_s_stylemapping, - lo_table_object TYPE REF TO object, - lo_table TYPE REF TO zcl_excel_table, - ld_table_top_left_column TYPE zexcel_cell_column, - ld_table_bottom_right_column TYPE zexcel_cell_column, - ld_flag_contains_auto_filter TYPE abap_bool VALUE abap_false, - ld_flag_bold TYPE abap_bool VALUE abap_false, - ld_flag_italic TYPE abap_bool VALUE abap_false, - ld_date TYPE d, - ld_date_char TYPE c LENGTH 50, - ld_font_height TYPE tdfontsize VALUE lc_default_font_height, - lt_itcfc TYPE STANDARD TABLE OF itcfc, - ld_offset TYPE i, - ld_uccp TYPE i, - ls_font_metric TYPE mty_s_font_metric, - ld_width_from_font_metrics TYPE i, - ld_font_family TYPE itcfh-tdfamily, - ld_font_name TYPE zexcel_style_font_name VALUE lc_default_font_name, - lt_font_families LIKE STANDARD TABLE OF ld_font_family, - ls_font_cache TYPE mty_s_font_cache. - - FIELD-SYMBOLS: <ls_font_cache> TYPE mty_s_font_cache, - <ls_font_metric> TYPE mty_s_font_metric, - <ls_itcfc> TYPE itcfc. - - " Determine cell content and cell style - me->get_cell( EXPORTING ip_column = ip_column - ip_row = ip_row - IMPORTING ep_value = ld_cell_value - ep_guid = ld_style_guid ). - - " ABAP2XLSX uses tables to define areas containing headers and - " auto-filters. Find out if the current cell is in the header - " of one of these tables. - LOOP AT me->tables->collection INTO lo_table_object. - " Downcast: OBJECT -> ZCL_EXCEL_TABLE - lo_table ?= lo_table_object. - - " Convert column letters to corresponding integer values - ld_table_top_left_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-top_left_column ). - - ld_table_bottom_right_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-bottom_right_column ). - - " Is the current cell part of the table header? - IF ip_column BETWEEN ld_table_top_left_column AND - ld_table_bottom_right_column AND - ip_row EQ lo_table->settings-top_left_row. - " Current cell is part of the table header - " -> Assume that an auto filter is present and that the font is - " bold - ld_flag_contains_auto_filter = abap_true. - ld_flag_bold = abap_true. - ENDIF. - ENDLOOP. - - " If a style GUID is present, read style attributes - IF ld_style_guid IS NOT INITIAL. - TRY. - " Read style attributes - ls_stylemapping = me->excel->get_style_to_guid( ld_style_guid ). - - " If the current cell contains the default date format, - " convert the cell value to a date and calculate its length - IF ls_stylemapping-complete_style-number_format-format_code = - zcl_excel_style_number_format=>c_format_date_std. - - " Convert excel date to ABAP date - ld_date = - zcl_excel_common=>excel_string_to_date( ld_cell_value ). - - " Format ABAP date using user's formatting settings - WRITE ld_date TO ld_date_char. - - " Remember the formatted date to calculate the cell size - ld_cell_value = ld_date_char. - - ENDIF. - - " Read the font size and convert it to the font height - " used by SAPscript (multiplication by 10) - IF ls_stylemapping-complete_stylex-font-size = abap_true. - ld_font_height = ls_stylemapping-complete_style-font-size * 10. - ENDIF. - - " If set, remember the font name - IF ls_stylemapping-complete_stylex-font-name = abap_true. - ld_font_name = ls_stylemapping-complete_style-font-name. - ENDIF. - - " If set, remember whether font is bold and italic. - IF ls_stylemapping-complete_stylex-font-bold = abap_true. - ld_flag_bold = ls_stylemapping-complete_style-font-bold. - ENDIF. - - IF ls_stylemapping-complete_stylex-font-italic = abap_true. - ld_flag_italic = ls_stylemapping-complete_style-font-italic. - ENDIF. - - CATCH zcx_excel ##NO_HANDLER. - " Style GUID is present, but style was not found - " Continue with default values - - ENDTRY. - ENDIF. - - " Check if the same font (font name and font attributes) was already - " used before - READ TABLE mth_font_cache - WITH TABLE KEY - font_name = ld_font_name - font_height = ld_font_height - flag_bold = ld_flag_bold - flag_italic = ld_flag_italic - ASSIGNING <ls_font_cache>. - - IF sy-subrc <> 0. - " Font is used for the first time - " Add the font to our local font cache - ls_font_cache-font_name = ld_font_name. - ls_font_cache-font_height = ld_font_height. - ls_font_cache-flag_bold = ld_flag_bold. - ls_font_cache-flag_italic = ld_flag_italic. - INSERT ls_font_cache INTO TABLE mth_font_cache - ASSIGNING <ls_font_cache>. - - " Determine the SAPscript font family name from the Excel - " font name - SELECT tdfamily - FROM tfo01 - INTO TABLE lt_font_families - UP TO 1 ROWS - WHERE tdtext = ld_font_name. - - " Check if a matching font family was found - " Fonts can be uploaded from TTF files using transaction SE73 - IF lines( lt_font_families ) > 0. - READ TABLE lt_font_families INDEX 1 INTO ld_font_family. - - " Load font metrics (returns a table with the size of each letter - " in the font) - CALL FUNCTION 'LOAD_FONT' - EXPORTING - family = ld_font_family - height = ld_font_height - printer = 'SWIN' - bold = ld_flag_bold - italic = ld_flag_italic - TABLES - metric = lt_itcfc - EXCEPTIONS - font_family = 1 - codepage = 2 - device_type = 3 - OTHERS = 4. - IF sy-subrc <> 0. - CLEAR lt_itcfc. - ENDIF. - - " For faster access, convert each character number to the actual - " character, and store the characters and their sizes in a hash - " table - LOOP AT lt_itcfc ASSIGNING <ls_itcfc>. - ld_uccp = <ls_itcfc>-cpcharno. - ls_font_metric-char = - cl_abap_conv_in_ce=>uccpi( ld_uccp ). - ls_font_metric-char_width = <ls_itcfc>-tdcwidths. - INSERT ls_font_metric - INTO TABLE <ls_font_cache>-th_font_metrics. - ENDLOOP. - - ENDIF. - ENDIF. - - " Calculate the cell width - " If available, use font metrics - IF lines( <ls_font_cache>-th_font_metrics ) = 0. - " Font metrics are not available - " -> Calculate the cell width using only the font size - ep_width = - strlen( ld_cell_value ) * ld_font_height / lc_default_font_height - + lc_excel_cell_padding. - - ELSE. - " Font metrics are available - - " Calculate the size of the text by adding the sizes of each - " letter - DO strlen( ld_cell_value ) TIMES. - " Subtract 1, because the first character is at offset 0 - ld_offset = sy-index - 1. - - " Read the current character from the cell value - ld_current_character = ld_cell_value+ld_offset(1). - - " Look up the size of the current letter - READ TABLE <ls_font_cache>-th_font_metrics - WITH TABLE KEY char = ld_current_character - ASSIGNING <ls_font_metric>. - IF sy-subrc = 0. - " The size of the letter is known - " -> Add the actual size of the letter - ADD <ls_font_metric>-char_width TO ld_width_from_font_metrics. - ELSE. - " The size of the letter is unknown - " -> Add the font height as the default letter size - ADD ld_font_height TO ld_width_from_font_metrics. - ENDIF. - ENDDO. - - " Add cell padding (Excel makes columns a bit wider than the space - " that is needed for the text itself) and convert unit - " (division by 100) - ep_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding. - ENDIF. - - " If the current cell contains an auto filter, make it a bit wider. - " The size used by the auto filter button does not depend on the font - " size. - IF ld_flag_contains_auto_filter = abap_true. - ADD 2 TO ep_width. - ENDIF. - -ENDMETHOD. - - - - 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." 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 float. - - FIELD-SYMBOLS: <column_dimension> LIKE LINE OF column_dimensions. - FIELD-SYMBOLS: <auto_size> LIKE LINE OF auto_sizes. - - column_dimensions[] = me->get_column_dimensions( ). - LOOP AT column_dimensions ASSIGNING <column_dimension>. - auto_size = <column_dimension>-column_dimension->get_auto_size( ). - IF auto_size = abap_true. - APPEND INITIAL LINE TO auto_sizes ASSIGNING <auto_size>. - <auto_size>-col_index = <column_dimension>-column_dimension->get_column_index( ). - <auto_size>-width = -1. - ENDIF. - ENDLOOP. - - " There is only something to do if there are some auto-size columns - IF NOT auto_sizes IS INITIAL. - highest_row = me->get_highest_row( ). - LOOP AT auto_sizes ASSIGNING <auto_size>. -* col_alpha = zcl_excel_common=>convert_column2alpha( <auto_size>-col_index )." issue #155 - less restrictive typing for ip_column - count = 1. - WHILE count <= highest_row. -* Start of change # issue 139 - Dateretention of cellstyles -* IF cell_style IS BOUND. -* CREATE OBJECT cell_style. -* ENDIF. -* me->get_cell( -* EXPORTING -* ip_column = col_alpha " Cell Column -* ip_row = count " Cell Row -* IMPORTING -* ep_value = cell_value " Cell Value -* ep_style = cell_style " Request Cell Style as well -* ). -* " For an easy start we just take the number of characters as the width -* width = strlen( cell_value ). -* " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker -* " Calculate width using Font Size and Font Type -* IF cell_style IS BOUND -* AND cell_style->font IS BOUND. -* width = cell_style->font->calculate_text_width( cell_value ). -* ENDIF. -* width = calculate_cell_width( ip_column = col_alpha " issue #155 - less restrictive typing for ip_column - width = calculate_cell_width( ip_column = <auto_size>-col_index " issue #155 - less restrictive typing for ip_column - ip_row = count ). -* End of change # issue 139 - Dateretention of cellstyles - IF width > <auto_size>-width. - <auto_size>-width = width. - ENDIF. - count = count + 1. - ENDWHILE. -* column_dimension = me->get_column_dimension( col_alpha ). " issue #155 - less restrictive typing for ip_column - column_dimension = me->get_column_dimension( <auto_size>-col_index ). " issue #155 - less restrictive typing for ip_column - column_dimension->set_width( <auto_size>-width ). - ENDLOOP. - ENDIF. - - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD change_cell_style. - " 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 zexcel_cell_style. "issue # 177 - -* We have a lot of parameters. Use some macros to make the coding more structured - - DEFINE clear_initial_colorxfields. - if &1-rgb is initial. - clear &2-rgb. - endif. - if &1-indexed is initial. - clear &2-indexed. - endif. - if &1-theme is initial. - clear &2-theme. - endif. - if &1-tint is initial. - clear &2-tint. - endif. - END-OF-DEFINITION. - - DEFINE move_supplied_borders. - if ip_&1 is supplied. " only act if parameter was supplied - if ip_x&1 is supplied. " - borderx = ip_x&1. " use supplied x-parameter - else. - clear borderx with 'X'. -* clear in a way that would be expected to work easily - if ip_&1-border_style is initial. - clear borderx-border_style. - endif. - clear_initial_colorxfields ip_&1-border_color borderx-border_color. - endif. - move-corresponding ip_&1 to complete_style-&2. - move-corresponding borderx to complete_stylex-&2. - endif. - END-OF-DEFINITION. - -* First get current stylsettings - TRY. - me->get_cell( EXPORTING ip_column = ip_column " Cell Column - ip_row = ip_row " Cell Row - IMPORTING ep_guid = l_guid )." Cell Value ). "issue # 177 - - - stylemapping = me->excel->get_style_to_guid( l_guid ). "issue # 177 - complete_style = stylemapping-complete_style. - complete_stylex = stylemapping-complete_stylex. - CATCH zcx_excel. -* Error --> 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 = 'Complete styleinfo has to be supplied with corresponding X-field'. - 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 'X' TO: fontx-bold, - fontx-italic, - fontx-strikethrough, - fontx-underline_mode. - CLEAR fontx-color WITH 'X'. - clear_initial_colorxfields ip_font-color fontx-color. - IF ip_font-family IS NOT INITIAL. - fontx-family = 'X'. - ENDIF. - IF ip_font-name IS NOT INITIAL. - fontx-name = 'X'. - ENDIF. - IF ip_font-scheme IS NOT INITIAL. - fontx-scheme = 'X'. - ENDIF. - IF ip_font-size IS NOT INITIAL. - fontx-size = 'X'. - ENDIF. - IF ip_font-underline_mode IS NOT INITIAL. - fontx-underline_mode = 'X'. - 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 'X'. - 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 'X'. - 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 'X'. - 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_protection TO complete_style-protection. - IF ip_xprotection IS SUPPLIED. - MOVE-CORRESPONDING ip_xprotection TO complete_stylex-protection. - ELSE. - IF ip_protection-hidden IS NOT INITIAL. - complete_stylex-protection-hidden = 'X'. - ENDIF. - IF ip_protection-locked IS NOT INITIAL. - complete_stylex-protection-locked = 'X'. - 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_&1 is supplied. - complete_style-&2 = ip_&1. - complete_stylex-&2 = 'X'. - 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&paste of styles is requested - ep_guid = me->excel->get_static_cellstyle_guid( ip_cstyle_complete = complete_style - ip_cstylex_complete = complete_stylex ). - me->set_cell_style( ip_column = ip_column - ip_row = ip_row - ip_style = ep_guid ). - -ENDMETHOD. - - - - - - method CONSTRUCTOR. - DATA: lv_title TYPE zexcel_sheet_title. - - me->excel = ip_excel. - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - lv_title = ip_title. - ELSE. -* lv_title = me->guid. " del issue #154 - Names of worksheets - lv_title = me->generate_title( ). " ins issue #154 - Names of worksheets - ENDIF. - - me->set_title( ip_title = lv_title ). - - CREATE OBJECT sheet_setup. - CREATE OBJECT conditional_styles. - CREATE OBJECT data_validations. - CREATE OBJECT tables. - CREATE OBJECT ranges. " issue #163 - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - me->zif_excel_sheet_protection~initialize( ). - me->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. - - - method DELETE_MERGE. - - DELETE sheet_content_merge INDEX 1. - DELETE sheet_content_merge INDEX 1. - - endmethod. - - - - - - 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 = 'Pleas provide number of rows and/or columns to freeze'. - ENDIF. - - IF ip_num_columns IS SUPPLIED AND ip_num_columns <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of columns to freeze should be positive'. - ENDIF. - - IF ip_num_rows IS SUPPLIED AND ip_num_rows <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of rows to freeze should be positive'. - ENDIF. - - freeze_pane_cell_column = ip_num_columns + 1. - freeze_pane_cell_row = ip_num_rows + 1. - endmethod. - - - - 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->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = abap_true. - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - title = lo_worksheet->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. " Start counting with next number - DO. - title = sheetnumber. - SHIFT title LEFT DELETING LEADING space. - CONCATENATE 'Sheet'(001) title INTO ep_title. - INSERT ep_title INTO TABLE t_titles. - IF sy-subrc = 0. " Title not used so far --> take it - EXIT. - ENDIF. - - ADD 1 TO sheetnumber. - ENDDO. - endmethod. - - - - - method GET_ACTIVE_CELL. - - DATA: lv_active_column TYPE zexcel_cell_column_alpha, - lv_active_row TYPE string. - - lv_active_column = zcl_excel_common=>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. - - - - - - - - - - method GET_CELL. - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = zcl_excel_common=>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. " issue 139 - added this to be used for columnwidth calculation - - " 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->excel->get_styles_iterator( ). - WHILE style_iterator->has_next( ) = 'X'. - style ?= style_iterator->get_next( ). - IF style->get_guid( ) = ls_sheet_content-cell_style. - ep_style = style. - EXIT. - ENDIF. - ENDWHILE. - ENDIF. - endmethod. - - - - - - method GET_COLUMN_DIMENSION. - FIELD-SYMBOLS: <fs_column_dimension> LIKE LINE OF column_dimensions. - DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. " issue #155 - less restrictive typing for ip_column - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column )." issue #155 - less restrictive typing for ip_column - READ TABLE me->column_dimensions ASSIGNING <fs_column_dimension> - WITH KEY column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - - IF NOT <fs_column_dimension> IS ASSIGNED. - CREATE OBJECT r_column_dimension - EXPORTING - ip_index = lv_column_alpha " issue #155 - less restrictive typing for ip_column - ip_excel = me->excel " issue #157 - Allow style for columns - ip_worksheet = me. " issue #157 - Allow style for columns - APPEND INITIAL LINE TO me->column_dimensions ASSIGNING <fs_column_dimension>. - <fs_column_dimension>-column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - <fs_column_dimension>-column_dimension = r_column_dimension. - ELSE. - r_column_dimension = <fs_column_dimension>-column_dimension. - ENDIF. - - endmethod. - - - - method GET_COLUMN_DIMENSIONS. - r_column_dimension[] = me->column_dimensions[]. - endmethod. - - - - method GET_COND_STYLES_ITERATOR. - - eo_iterator = me->conditional_styles->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_ITERATOR. - - eo_iterator = me->data_validations->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_SIZE. - ep_size = me->data_validations->size( ). - endmethod. - - - - method GET_DEFAULT_COLUMN_DIMENSION. - IF me->default_column_dimension IS NOT BOUND. - CREATE OBJECT me->default_column_dimension - EXPORTING - ip_index = 'A' " ???? - ip_worksheet = me - ip_excel = me->excel. - ENDIF. - - r_column_dimension = me->default_column_dimension. - endmethod. - - - - method GET_DEFAULT_EXCEL_DATE_FORMAT. - CONSTANTS: c_lang_e TYPE lang VALUE 'E'. - - IF default_excel_date_format IS NOT INITIAL. - ep_default_excel_date_format = default_excel_date_format. - RETURN. - ENDIF. - - "try to get defaults - TRY. - cl_abap_datfm=>get_date_format_des( EXPORTING im_langu = c_lang_e - IMPORTING ex_dateformat = default_excel_date_format ). - CATCH cx_abap_datfm_format_unknown. - - ENDTRY. - - " and fallback to fixed format - IF default_excel_date_format IS INITIAL. - default_excel_date_format = zcl_excel_style_number_format=>c_format_date_ddmmyyyydot. - ENDIF. - - ep_default_excel_date_format = default_excel_date_format. - endmethod. - - - - 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's get default - l_timefm = cl_abap_timefm=>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=>c_format_date_time6. - WHEN 1. -*1 12 Hour Format (Example: 12:05:10 PM) - default_excel_time_format = zcl_excel_style_number_format=>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=>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=>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=>c_format_date_time2. - WHEN OTHERS. - " and fallback to fixed format - default_excel_time_format = zcl_excel_style_number_format=>c_format_date_time6. - ENDCASE. - - ep_default_excel_time_format = default_excel_time_format. - endmethod. - - - - method GET_DEFAULT_ROW_DIMENSION. - IF me->default_row_dimension IS NOT BOUND. - CREATE OBJECT me->default_row_dimension. - ENDIF. - - r_row_dimension = me->default_row_dimension. - endmethod. - - - - - method GET_DIMENSION_RANGE. - - me->update_dimension_range( ). - IF upper_cell EQ lower_cell. "only one cell - " Worksheet not filled -* IF upper_cell-cell_coords = '0'. - IF upper_cell-cell_coords IS INITIAL. - ep_dimension_range = 'A1'. - ELSE. - ep_dimension_range = upper_cell-cell_coords. - ENDIF. - ELSE. - CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. - ENDIF. - - endmethod. - - - - - 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=>type_image. - r_drawings = drawings. - WHEN zcl_excel_drawing=>type_chart. - r_drawings = charts. - WHEN space. - CREATE OBJECT r_drawings - EXPORTING - ip_type = ''. - - lo_iterator = drawings->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - lo_iterator = charts->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - WHEN OTHERS. - ENDCASE. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = charts->get_iterator( ). - ENDCASE. - endmethod. - - - - - method GET_FREEZE_CELL. - ep_row = me->freeze_pane_cell_row. - ep_column = me->freeze_pane_cell_column. - endmethod. - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - - method GET_HIGHEST_COLUMN. - me->update_dimension_range( ). - r_highest_column = me->lower_cell-cell_column. - endmethod. - - - - - method GET_HIGHEST_ROW. - me->update_dimension_range( ). - r_highest_row = me->lower_cell-cell_row. - endmethod. - - - - method GET_HYPERLINKS_ITERATOR. - eo_iterator = hyperlinks->get_iterator( ). - endmethod. - - - - method GET_HYPERLINKS_SIZE. - ep_size = hyperlinks->size( ). - endmethod. - - - - - 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: <fs_sheet_content> 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 <fs_sheet_content>. - lv_index = lv_index + 1. - READ TABLE sheet_content_merge ASSIGNING <fs_sheet_content> INDEX lv_index. - lv_column_start = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-cell_column ). - lv_row = <fs_sheet_content>-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 <fs_sheet_content> INDEX lv_index. - lv_column_end = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-cell_column ). - lv_row = <fs_sheet_content>-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 ':'. - APPEND lv_merge_range TO merge_range. - ENDWHILE. -* ENDLOOP. - -* READ TABLE sheet_content_merge ASSIGNING <fs_sheet_content> INDEX 1. -* IF sy-subrc EQ 0 AND <fs_sheet_content> IS ASSIGNED. -* lv_column_start = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-cell_column ). -* lv_row = <fs_sheet_content>-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 <fs_sheet_content> INDEX 2. -* IF sy-subrc EQ 0 AND <fs_sheet_content> IS ASSIGNED. -* lv_column_end = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-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 ':'. -* ENDIF. - - endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - method GET_ROW_DIMENSION. - FIELD-SYMBOLS: <fs_row_dimension> LIKE LINE OF row_dimensions. - - READ TABLE me->row_dimensions ASSIGNING <fs_row_dimension> - WITH KEY row = ip_row. - - IF NOT <fs_row_dimension> IS ASSIGNED. - CREATE OBJECT r_row_dimension - EXPORTING - ip_index = ip_row. - APPEND INITIAL LINE TO me->row_dimensions ASSIGNING <fs_row_dimension>. - <fs_row_dimension>-row = ip_row. - <fs_row_dimension>-row_dimension = r_row_dimension. - ELSE. - r_row_dimension = <fs_row_dimension>-row_dimension. - ENDIF. - - endmethod. - - - - method GET_ROW_DIMENSIONS. - r_row_dimension[] = me->row_dimensions[]. - endmethod. - - - - method GET_TABCOLOR. - ev_tabcolor = me->tabcolor. - endmethod. - - - - method GET_TABLES_ITERATOR. - eo_iterator = tables->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TABLES_SIZE. - ep_size = tables->if_object_collection~size( ). - endmethod. - - - - - method GET_TITLE. - DATA lv_value TYPE string. - IF ip_escaped EQ abap_true. - lv_value = me->title. - ep_title = zcl_excel_common=>escape_string( lv_value ). - ELSE. - ep_title = me->title. - ENDIF. - endmethod. - - - - - - 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=>typekind_string. " Thats our default if something goes wrong. - - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ip_value ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - ENDTRY. - IF lo_addit IS BOUND. - lo_addit->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 'CONVERSION_EXIT_' ls_dfies-convexit '_OUTPUT' 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 <> 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->get_data_type_kind( ip_value ). - ENDIF. - ENDIF. - - endmethod. - - - 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->get_ranges_iterator( ). - WHILE lo_range_iterator->has_next( ) = abap_true. - - lo_range ?= lo_range_iterator->get_next( ). - IF lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - EXIT. " Found it - ENDIF. - CLEAR lo_range. - - ENDWHILE. - - - IF me->print_title_col_from IS INITIAL AND - me->print_title_row_from IS INITIAL. -*--------------------------------------------------------------------* -* No print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS BOUND. - me->ranges->remove( lo_range ). - ENDIF. - ELSE. -*--------------------------------------------------------------------* -* Print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS NOT BOUND. - lo_range = me->add_new_range( ). - lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - ENDIF. - - lv_repeat_range_sheetname = me->get_title( ). - lv_repeat_range_sheetname = zcl_excel_common=>escape_string( lv_repeat_range_sheetname ). - -*--------------------------------------------------------------------* -* Repeat-columns -*--------------------------------------------------------------------* - IF me->print_title_col_from IS NOT INITIAL. - CONCATENATE lv_repeat_range_sheetname - '!$' me->print_title_col_from - ':$' me->print_title_col_to - INTO lv_repeat_range_col. - ENDIF. - -*--------------------------------------------------------------------* -* Repeat-rows -*--------------------------------------------------------------------* - IF me->print_title_row_from IS NOT INITIAL. - lv_row_char_from = me->print_title_row_from. - lv_row_char_to = me->print_title_row_to. - CONCATENATE '!$' lv_row_char_from - ':$' 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 ','. - ENDIF. - - - lo_range->set_range_value( lv_repeat_range ). - ENDIF. - - - - endmethod. - - - - - - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_numeric> TYPE numeric, - <fs_date> TYPE d, - <fs_time> TYPE t, - <fs_value> TYPE simple. - - IF ip_value IS NOT SUPPLIED AND ip_formula IS NOT SUPPLIED. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please provide the value or formula'. - ENDIF. - -* Begin of change issue #152 - don't touch exisiting style if only value is passed -* lv_style_guid = ip_style. - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 - cell_column = lv_column. - IF sy-subrc = 0. - IF ip_style IS INITIAL. - " If no style is provided as method-parameter and cell is found use cell's current style - lv_style_guid = <fs_sheet_content>-cell_style. - ELSE. - " Style provided as method-parameter --> use this - lv_style_guid = ip_style. - ENDIF. - ELSE. - " No cell found --> use supplied style even if empty - lv_style_guid = ip_style. - ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - IF ip_value IS SUPPLIED. - "if data type is passed just write the value. Otherwise map abap type to excel and perform conversion - "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->* TO <fs_value>. - <fs_value> = 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 = <fs_value> ) . - ENDIF. - lv_value = <fs_value>. - 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 = <fs_value> - ep_value_type = lv_value_type ). - ENDIF. - CASE lv_value_type. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - lo_addit = cl_abap_elemdescr=>get_i( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - lo_addit = cl_abap_elemdescr=>get_f( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_char OR cl_abap_typedescr=>typekind_string OR cl_abap_typedescr=>typekind_num OR - cl_abap_typedescr=>typekind_hex. - lv_value = <fs_value>. - lv_data_type = 's'. - - WHEN cl_abap_typedescr=>typekind_date. - lo_addit = cl_abap_elemdescr=>get_d( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_date>. - IF sy-subrc = 0. - <fs_date> = <fs_value>. - lv_value = zcl_excel_common=>date_to_excel_string( ip_value = <fs_date> ) . - ENDIF. -* Begin of change issue #152 - don'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. "get default date format in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = get_default_excel_date_format( ). -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN cl_abap_typedescr=>typekind_time. - lo_addit = cl_abap_elemdescr=>get_t( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_time>. - IF sy-subrc = 0. - <fs_time> = <fs_value>. - lv_value = zcl_excel_common=>time_to_excel_string( ip_value = <fs_time> ). - ENDIF. -* Begin of change issue #152 - don'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. "get default time format for user in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_date_time6. -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid data type of input value'. - ENDCASE. - ENDIF. - - ENDIF. - - IF ip_hyperlink IS BOUND. - ip_hyperlink->set_cell_reference( ip_column = ip_column - ip_row = ip_row ). - me->hyperlinks->add( ip_hyperlink ). - ENDIF. - -* Begin of change issue #152 - don'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=>convert_column2int( ip_column ). - -* READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row -* cell_column = lv_column. -* -* IF sy-subrc EQ 0. - IF <fs_sheet_content> IS ASSIGNED. -* End of change issue #152 - don't touch exisiting style if only value is passed - <fs_sheet_content>-cell_value = lv_value. - <fs_sheet_content>-cell_formula = ip_formula. - <fs_sheet_content>-cell_style = lv_style_guid. - <fs_sheet_content>-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."del #152 - replaced with condense - should be faster -* SHIFT lv_row_alpha LEFT DELETING LEADING space. "del #152 - replaced with condense - should be faster - CONDENSE lv_row_alpha NO-GAPS. "ins #152 - replaced 2 shifts - should be faster - lv_col_alpha = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - CONCATENATE lv_col_alpha lv_row_alpha INTO ls_sheet_content-cell_coords. " issue #155 - less restrictive typing for ip_column - INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING <fs_sheet_content>. "ins #152 - Now <fs_sheet_content> always holds the data -* APPEND ls_sheet_content TO sheet_content. -* SORT sheet_content BY cell_row cell_column. - " me->update_dimension_range( ). - - ENDIF. - -* Begin of change issue #152 - don'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=>typekind_date. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_std. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_number_format_format_code = lo_format_code_datetime ). - - WHEN cl_abap_typedescr=>typekind_time. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_time6. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->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't touch exisiting style if only value is passed - -* Fix issue #162 - lv_value = ip_value. - IF lv_value CS cl_abap_char_utilities=>cr_lf. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_alignment_wraptext = abap_true ). - ENDIF. -* End of Fix issue #162 - - endmethod. - - - - - - - method SET_CELL_FORMULA. - DATA: - lv_column TYPE zexcel_cell_column, - ls_sheet_content LIKE LINE OF me->sheet_content. - - FIELD-SYMBOLS: - <sheet_content> LIKE LINE OF me->sheet_content. - -*--------------------------------------------------------------------* -* Get cell to set formula into -*--------------------------------------------------------------------* - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE me->sheet_content ASSIGNING <sheet_content> WITH TABLE KEY cell_row = ip_row - cell_column = lv_column. - IF sy-subrc <> 0. " Create new entry in sheet_content if necessary - CHECK ip_formula IS INITIAL. " no need to create new entry in sheet_content when no formula is passed - ls_sheet_content-cell_row = ip_row. - ls_sheet_content-cell_column = lv_column. - INSERT ls_sheet_content INTO TABLE me->sheet_content ASSIGNING <sheet_content>. - ENDIF. - -*--------------------------------------------------------------------* -* Fieldsymbol now holds the relevant cell -*--------------------------------------------------------------------* - <sheet_content>-cell_formula = ip_formula. - - - endmethod. - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_style_guid = ip_style. - - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row - cell_column = lv_column. - - IF sy-subrc EQ 0. - <fs_sheet_content>-cell_style = lv_style_guid. - ELSE. - set_cell( ip_column = ip_column ip_row = ip_row ip_value = '' ip_style = ip_style ). - ENDIF. - - endmethod. - - - - - - - method SET_COLUMN_WIDTH. - DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - DATA: width TYPE float. - - column_dimension = me->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 <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as column-width'. - ENDIF. - column_dimension->set_width( width ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - ENDIF. - -* If we get down to here, we have to use whatever is found in autosize. - column_dimension->set_auto_size( ip_width_autosize ). - - - endmethod. - - - - - method SET_DEFAULT_EXCEL_DATE_FORMAT. - - IF ip_default_excel_date_format IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Default date format cannot be blank'. - ENDIF. - - default_excel_date_format = ip_default_excel_date_format. - endmethod. - - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column_start = zcl_excel_common=>convert_column2int( ip_column_start ). - lv_column_end = zcl_excel_common=>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. - - - - method SET_PRINT_GRIDLINES. - me->print_gridlines = i_print_gridlines. - endmethod. - - - - - - method SET_ROW_HEIGHT. - DATA: row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: height TYPE float. - - row_dimension = me->get_row_dimension( ip_row ). - -* if a fix size is supplied use this - TRY. - height = ip_height_fix. - IF height <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as row-height'. - ENDIF. - row_dimension->set_row_height( height ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - - - - endmethod. - - - - method SET_SHOW_GRIDLINES. - me->show_gridlines = i_show_gridlines. - endmethod. - - - - method SET_SHOW_ROWCOLHEADERS. - me->show_rowcolheaders = i_show_rowcolheaders. - endmethod. - - - - method SET_TABCOLOR. - me->tabcolor = iv_tabcolor. - endmethod. - - - - - - - - - - - - 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 2, - lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - 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: <fs_table_line> TYPE ANY, - <fs_fldval> TYPE ANY, - <fs_dfies> TYPE dfies, - <fs_cell_value> TYPE zexcel_cell_value. - - lv_column_int = zcl_excel_common=>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=>describe_by_data_ref( lr_data ). - - ls_header = lo_tabdescr->get_ddic_header( ). - - lt_dfies = lo_tabdescr->get_ddic_field_list( ). - -* It is better to loop column by column - LOOP AT lt_dfies ASSIGNING <fs_dfies>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - IF ip_no_header = abap_false. - " First of all write column header - lv_cell_value = <fs_dfies>-scrtext_m. - me->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 <fs_table_line>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - ASSIGN COMPONENT <fs_dfies>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - MOVE <fs_fldval> TO lv_cell_value. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> "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=>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. - - - - - method SET_TITLE. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 The current coding for replacing a named ranges name -* after renaming a sheet should be checked if it is -* really working if sheetname should be escaped -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (wip ) 2012-12-08 -* - ... -* changes: aligning code -* message made to support multilinguality -*--------------------------------------------------------------------* -* issue#243 - ' is not allowed as first character in sheet title -* - Stefan Schmöcker, 2012-12-02 -* changes: added additional check for ' as first character -*--------------------------------------------------------------------* - 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, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Check whether title consists only of allowed characters -* Illegal characters are: / \ [ ] * ? : --> http://msdn.microsoft.com/en-us/library/ff837411.aspx -* Illegal characters not in documentation: ' as first character -*--------------------------------------------------------------------* - IF ip_title CA '/\[]*?:'. - lv_errormessage = 'Found illegal character in sheetname. List of forbidden characters: /\[]*?:'(402). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF ip_title IS NOT INITIAL AND ip_title(1) = `'`. - lv_errormessage = 'Sheetname may not start with &'(403). " & used instead of ' to allow fallbacklanguage - REPLACE '&' IN lv_errormessage WITH `'`. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -*--------------------------------------------------------------------* -* Check whether title is unique in workbook -*--------------------------------------------------------------------* - lo_worksheets_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = 'X'. - - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - CHECK me->guid <> lo_worksheet->get_guid( ). " Don't check against itself - IF ip_title = lo_worksheet->get_title( ). " Not unique --> raise exception - errormessage = 'Duplicate sheetname &'. - REPLACE '&' IN errormessage WITH ip_title. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = errormessage. - ENDIF. - - ENDWHILE. - -*--------------------------------------------------------------------* -* Remember old sheetname and rename sheet to desired name -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_old. - me->title = ip_title. - -*--------------------------------------------------------------------* -* After changing this worksheet's title we have to adjust -* all ranges that are referring to this worksheet. -*--------------------------------------------------------------------* -* 2do§1 - Check if the following quickfix is solid -* I fear it isn't - but this implementation is better then -* nothing at all since it handles a supposed majority of cases -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_new. - - lo_ranges_iterator = me->excel->get_ranges_iterator( ). - WHILE lo_ranges_iterator->has_next( ) = 'X'. - - lo_range ?= lo_ranges_iterator->get_next( ). - lv_range_value = lo_range->get_value( ). - REPLACE ALL OCCURRENCES OF lv_rangesheetname_old IN lv_range_value WITH lv_rangesheetname_new. - IF sy-subrc = 0. - lo_range->set_range_value( lv_range_value ). - ENDIF. - - ENDWHILE. - - - endmethod. - - - - 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. - "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=>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. - - "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=>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. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ADD. - - worksheets->add( ip_worksheet ). - - endmethod. - - - method CLEAR. - - worksheets->clear( ). - - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT worksheets. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_worksheet ?= worksheets->if_object_collection~get( lv_index ). - - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= worksheets->if_object_collection~get_iterator( ). - - endmethod. - - - - method IS_EMPTY. - - is_empty = worksheets->if_object_collection~is_empty( ). - - endmethod. - - - - method REMOVE. - - worksheets->remove( ip_worksheet ). - - endmethod. - - - - method SIZE. - - ep_size = worksheets->if_object_collection~size( ). - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - method CONSTRUCTOR. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - me->width = -1. - me->auto_size = abap_false. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - me->excel = ip_excel. "ins issue #157 - Allow Style for columns - me->worksheet = ip_worksheet. "ins issue #157 - Allow Style for columns - - " set default index to cellXf - me->xf_index = 0. - - endmethod. - - - - method GET_AUTO_SIZE. - r_auto_size = me->auto_size. - endmethod. - - - - method GET_COLLAPSED. - r_Collapsed = me->Collapsed. - endmethod. - - - - method GET_COLUMN_INDEX. - r_column_index = me->column_index. - endmethod. - - - - - method GET_COLUMN_STYLE_GUID. - IF me->style_guid IS NOT INITIAL. - ep_style_guid = me->style_guid. - ELSE. - ep_style_guid = me->worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - endmethod. - - - - method GET_OUTLINE_LEVEL. - r_outline_level = me->outline_level. - endmethod. - - - - method GET_VISIBLE. - r_Visible = me->Visible. - endmethod. - - - - method GET_WIDTH. - r_WIDTH = me->WIDTH. - endmethod. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - - method SET_AUTO_SIZE. - me->auto_size = ip_auto_size. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLLAPSED. - me->Collapsed = ip_Collapsed. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_INDEX. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_STYLE_BY_GUID. - DATA: stylemapping TYPE zexcel_s_stylemapping. - - IF me->excel IS NOT BOUND. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Internal error - reference to ZCL_EXCEL not bound'. - ENDIF. - TRY. - stylemapping = me->excel->get_style_to_guid( ip_style_guid ). - me->style_guid = stylemapping-guid. - - CATCH zcx_excel . - EXIT. " leave as is in case of error - ENDTRY. - - endmethod. - - - - method SET_OUTLINE_LEVEL. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_VISIBLE. - me->Visible = ip_Visible. - r_worksheet_columndime = me. - endmethod. - - - - - - method SET_WIDTH. - TRY. - me->width = ip_width. - r_worksheet_columndime = me. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret width as number'. - ENDTRY. - endmethod. - - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - r_worksheet_columndime = me. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - method CONSTRUCTOR. - " Initialise values - me->row_index = ip_index. - me->row_height = -1. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - - " set row dimension as unformatted by default - me->xf_index = 0. - endmethod. - - - - method GET_COLLAPSED. - r_collapsed = me->collapsed. - endmethod. - - - - method GET_OUTLINE_LEVEL. - r_outline_level = me->outline_level. - endmethod. - - - - method GET_ROW_HEIGHT. - r_row_height = me->row_height. - endmethod. - - - - method GET_ROW_INDEX. - r_row_index = me->row_index. - endmethod. - - - - method GET_VISIBLE. - r_visible = me->visible. - endmethod. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - method SET_COLLAPSED. - me->collapsed = ip_collapsed. - endmethod. - - - - - method SET_OUTLINE_LEVEL. - IF ip_outline_level < 0 - OR ip_outline_level > 7. - - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Outline level must range between 0 and 7.'. - - ENDIF. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_ROW_HEIGHT. - TRY. - me->row_height = ip_row_height. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret ip_row_height as number'. - ENDTRY. - endmethod. - - - - method SET_ROW_INDEX. - me->row_index = ip_index. - endmethod. - - - - method SET_VISIBLE. - me->visible = ip_visible. - endmethod. - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - - ep_file = me->create( ). - endmethod. - - - - method CREATE. - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - - "-------------Added by Alessandro Iannacci - Only if template exist - IF lv_content IS NOT INITIAL AND me->excel->use_template EQ abap_true. - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ELSE. "ADD CUSTOM CHART!!!! - lv_content = me->create_xl_charts( lo_drawing ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDIF. - "------------------------------------------------- - ENDWHILE. - -********************************************************************** -* STEP 12: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - - method CREATE_CONTENT_TYPES. - - -** Constant node name - DATA: lc_xml_node_types TYPE string VALUE 'Types', - lc_xml_node_override TYPE string VALUE 'Override', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - " Node namespace - lc_xml_node_types_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/content-types', - " Node extension - lc_xml_node_rels_ext TYPE string VALUE 'rels', - lc_xml_node_xml_ext TYPE string VALUE 'xml', - " Node partnumber - lc_xml_node_theme_pn TYPE string VALUE '/xl/theme/theme1.xml', - lc_xml_node_styles_pn TYPE string VALUE '/xl/styles.xml', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_props_pn TYPE string VALUE '/docProps/app.xml', - lc_xml_node_worksheet_pn TYPE string VALUE '/xl/worksheets/sheet#.xml', - lc_xml_node_strings_pn TYPE string VALUE '/xl/sharedStrings.xml', - lc_xml_node_core_pn TYPE string VALUE '/docProps/core.xml', - lc_xml_node_chart_pn TYPE string VALUE '/xl/charts/chart#.xml', - " Node contentType - lc_xml_node_theme_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.theme+xml', - lc_xml_node_styles_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', - lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', - lc_xml_node_rels_ct TYPE string VALUE 'application/vnd.openxmlformats-package.relationships+xml', - lc_xml_node_xml_ct TYPE string VALUE 'application/xml', - lc_xml_node_props_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.extended-properties+xml', - lc_xml_node_worksheet_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', - lc_xml_node_strings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', - lc_xml_node_core_ct TYPE string VALUE 'application/vnd.openxmlformats-package.core-properties+xml', - lc_xml_node_table_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml', - lc_xml_node_drawings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawing+xml', - lc_xml_node_chart_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table. - - DATA: lv_worksheets_num TYPE i, - lv_worksheets_numc TYPE numc3, - lv_xml_node_worksheet_pn TYPE string, - lv_xml_size TYPE i, - lv_value TYPE string, - lv_drawing_index TYPE i VALUE 1, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node types - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_types - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_types_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_rels_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_rels_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_xml_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_xml_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_theme_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_theme_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_styles_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_styles_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Workbook node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_workb_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Properties node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_props_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_props_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Worksheet node - lv_worksheets_num = excel->get_worksheets_size( ). - DO lv_worksheets_num TIMES. - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - - MOVE sy-index TO lv_worksheets_numc. - SHIFT lv_worksheets_numc LEFT DELETING LEADING '0'. - lv_xml_node_worksheet_pn = lc_xml_node_worksheet_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_worksheet_pn WITH lv_worksheets_numc. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_xml_node_worksheet_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_worksheet_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - lo_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - - lv_value = lo_table->get_name( ). - CONCATENATE '/xl/tables/' lv_value '.xml' INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_table_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Drawings - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lv_index_str = lv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - CONCATENATE '/' me->c_xl_drawings INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_drawings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - - " media mimes - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - lt_media_type TYPE TABLE OF mimetypes-extension, - lv_media_type TYPE mimetypes-extension, - lv_mime_type TYPE mimetypes-type. - - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_media_type = lo_drawing->get_media_type( ). - COLLECT lv_media_type INTO lt_media_type. - ENDWHILE. - - LOOP AT lt_media_type INTO lv_media_type. - CALL FUNCTION 'SDOK_MIMETYPE_GET' - EXPORTING - extension = lv_media_type - IMPORTING - mimetype = lv_mime_type. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lv_value = lv_media_type. - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lv_value ). - lv_value = lv_mime_type. - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - - " Charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lv_index_str = lo_drawing->get_index( ). - CONDENSE lv_index_str. - lv_value = lc_xml_node_chart_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_value WITH lv_index_str. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_chart_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_strings_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_strings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_core_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_core_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_APP. - - -** Constant node name - DATA: lc_xml_node_properties TYPE string VALUE 'Properties', - lc_xml_node_application TYPE string VALUE 'Application', - lc_xml_node_docsecurity TYPE string VALUE 'DocSecurity', - lc_xml_node_scalecrop TYPE string VALUE 'ScaleCrop', - lc_xml_node_headingpairs TYPE string VALUE 'HeadingPairs', - lc_xml_node_vector TYPE string VALUE 'vector', - lc_xml_node_variant TYPE string VALUE 'variant', - lc_xml_node_lpstr TYPE string VALUE 'lpstr', - lc_xml_node_i4 TYPE string VALUE 'i4', - lc_xml_node_titlesofparts TYPE string VALUE 'TitlesOfParts', - lc_xml_node_company TYPE string VALUE 'Company', - lc_xml_node_linksuptodate TYPE string VALUE 'LinksUpToDate', - lc_xml_node_shareddoc TYPE string VALUE 'SharedDoc', - lc_xml_node_hyperlinkschanged TYPE string VALUE 'HyperlinksChanged', - lc_xml_node_appversion TYPE string VALUE 'AppVersion', - " Namespace prefix - lc_vt_ns TYPE string VALUE 'vt', - lc_xml_node_props_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', - lc_xml_node_props_vt_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - " Node attributes - lc_xml_attr_size TYPE string VALUE 'size', - lc_xml_attr_basetype TYPE string VALUE 'baseType'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element_vector TYPE REF TO if_ixml_element, - lo_sub_element_variant TYPE REF TO if_ixml_element, - lo_sub_element_lpstr TYPE REF TO if_ixml_element, - lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node properties - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_properties - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_props_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:vt' - value = lc_xml_node_props_vt_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Application - lo_element = lo_document->create_simple_element( name = lc_xml_node_application - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~application. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " DocSecurity - lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~docsecurity. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " ScaleCrop - lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~scalecrop ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HeadingPairs - lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = '2' ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_variant ). - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** i4 node - lo_sub_element_i4 = lo_document->create_simple_element_ns( name = lc_xml_node_i4 - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_i4 ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " HeadingPairs - - - " TitlesOfParts - lo_element = lo_document->create_simple_element( name = lc_xml_node_titlesofparts - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = lv_value ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_lpstr ). - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " ** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->get_title( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_vector->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - ENDWHILE. - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " TitlesOfParts - - - - " Company - IF excel->zif_excel_book_properties~company IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_company - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~company. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " LinksUpToDate - lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~linksuptodate ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " SharedDoc - lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~shareddoc ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HyperlinksChanged - lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~hyperlinkschanged ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " AppVersion - lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~appversion. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_CORE. - - -** Constant node name - DATA: lc_xml_node_coreproperties TYPE string VALUE 'coreProperties', - lc_xml_node_creator TYPE string VALUE 'creator', - lc_xml_node_description TYPE string VALUE 'description', - lc_xml_node_lastmodifiedby TYPE string VALUE 'lastModifiedBy', - lc_xml_node_created TYPE string VALUE 'created', - lc_xml_node_modified TYPE string VALUE 'modified', - " Node attributes - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_target TYPE string VALUE 'dcterms:W3CDTF', - " Node namespace - lc_cp_ns TYPE string VALUE 'cp', - lc_dc_ns TYPE string VALUE 'dc', - lc_dcterms_ns TYPE string VALUE 'dcterms', -* lc_dcmitype_ns TYPE string VALUE 'dcmitype', - lc_xsi_ns TYPE string VALUE 'xsi', - lc_xml_node_cp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', - lc_xml_node_dc_ns TYPE string VALUE 'http://purl.org/dc/elements/1.1/', - lc_xml_node_dcterms_ns TYPE string VALUE 'http://purl.org/dc/terms/', - lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', - lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_value TYPE string, - lv_date TYPE sydatum, - lv_time TYPE syuzeit. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node coreProperties - lo_element_root = lo_document->create_simple_element_ns( name = lc_xml_node_coreproperties - prefix = lc_cp_ns - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:cp' - value = lc_xml_node_cp_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dc' - value = lc_xml_node_dc_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcterms' - value = lc_xml_node_dcterms_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcmitype' - value = lc_xml_node_dcmitype_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:xsi' - value = lc_xml_node_xsi_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Creator node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_creator - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~creator. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Description node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_description - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~description. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " lastModifiedBy node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby - prefix = lc_cp_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~lastmodifiedby. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Created node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - - CONVERT TIME STAMP excel->zif_excel_book_properties~created TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~created. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Modified node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - CONVERT TIME STAMP excel->zif_excel_book_properties~modified TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~modified. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_rId1_id TYPE string VALUE 'rId1', - lc_xml_node_rId2_id TYPE string VALUE 'rId2', - lc_xml_node_rId3_id TYPE string VALUE 'rId3', - " Node type - lc_xml_node_rId1_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - lc_xml_node_rId2_tp TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lc_xml_node_rId3_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - " Node target - lc_xml_node_rId1_tg TYPE string VALUE 'xl/workbook.xml', - lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', - lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId3_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId3_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId2_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId2_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId1_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId1_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_CHARTS. - - -** Constant node name - CONSTANTS: lc_xml_node_chartspace TYPE string VALUE 'c:chartSpace', - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_date1904 TYPE string VALUE 'c:date1904', - lc_xml_node_lang TYPE string VALUE 'c:lang', - lc_xml_node_roundedcorners TYPE string VALUE 'c:roundedCorners', - lc_xml_node_altcont TYPE string VALUE 'mc:AlternateContent', - lc_xml_node_altcont_ns_mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_choice TYPE string VALUE 'mc:Choice', - lc_xml_node_choice_ns_requires TYPE string VALUE 'c14', - lc_xml_node_choice_ns_c14 TYPE string VALUE 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart', - lc_xml_node_style TYPE string VALUE 'c14:style', - lc_xml_node_fallback TYPE string VALUE 'mc:Fallback', - lc_xml_node_style2 TYPE string VALUE 'c:style', - - "---------------------------CHART - lc_xml_node_chart TYPE string VALUE 'c:chart', - lc_xml_node_autotitledeleted TYPE string VALUE 'c:autoTitleDeleted', - "plotArea - lc_xml_node_plotarea TYPE string VALUE 'c:plotArea', - lc_xml_node_layout TYPE string VALUE 'c:layout', - lc_xml_node_varycolors TYPE string VALUE 'c:varyColors', - lc_xml_node_ser TYPE string VALUE 'c:ser', - lc_xml_node_idx TYPE string VALUE 'c:idx', - lc_xml_node_order TYPE string VALUE 'c:order', - lc_xml_node_tx TYPE string VALUE 'c:tx', - lc_xml_node_v TYPE string VALUE 'c:v', - lc_xml_node_val TYPE string VALUE 'c:val', - lc_xml_node_cat TYPE string VALUE 'c:cat', - lc_xml_node_numref TYPE string VALUE 'c:numRef', - lc_xml_node_strref TYPE string VALUE 'c:strRef', - lc_xml_node_f TYPE string VALUE 'c:f', "this is the range - "note: numcache avoided - lc_xml_node_dlbls TYPE string VALUE 'c:dLbls', - lc_xml_node_showlegendkey TYPE string VALUE 'c:showLegendKey', - lc_xml_node_showval TYPE string VALUE 'c:showVal', - lc_xml_node_showcatname TYPE string VALUE 'c:showCatName', - lc_xml_node_showsername TYPE string VALUE 'c:showSerName', - lc_xml_node_showpercent TYPE string VALUE 'c:showPercent', - lc_xml_node_showbubblesize TYPE string VALUE 'c:showBubbleSize', - "plotArea->pie - lc_xml_node_piechart TYPE string VALUE 'c:pieChart', - lc_xml_node_showleaderlines TYPE string VALUE 'c:showLeaderLines', - lc_xml_node_firstsliceang TYPE string VALUE 'c:firstSliceAng', - "plotArea->line - lc_xml_node_linechart TYPE string VALUE 'c:lineChart', - lc_xml_node_symbol TYPE string VALUE 'c:symbol', - lc_xml_node_marker TYPE string VALUE 'c:marker', - lc_xml_node_smooth TYPE string VALUE 'c:smooth', - "plotArea->bar - lc_xml_node_invertifnegative TYPE string VALUE 'c:invertIfNegative', - lc_xml_node_barchart TYPE string VALUE 'c:barChart', - lc_xml_node_bardir TYPE string VALUE 'c:barDir', - lc_xml_node_gapwidth TYPE string VALUE 'c:gapWidth', - "plotArea->line + plotArea->bar - lc_xml_node_grouping TYPE string VALUE 'c:grouping', - lc_xml_node_axid TYPE string VALUE 'c:axId', - lc_xml_node_catax TYPE string VALUE 'c:catAx', - lc_xml_node_valax TYPE string VALUE 'c:valAx', - lc_xml_node_scaling TYPE string VALUE 'c:scaling', - lc_xml_node_orientation TYPE string VALUE 'c:orientation', - lc_xml_node_delete TYPE string VALUE 'c:delete', - lc_xml_node_axpos TYPE string VALUE 'c:axPos', - lc_xml_node_numfmt TYPE string VALUE 'c:numFmt', - lc_xml_node_majorgridlines TYPE string VALUE 'c:majorGridlines', - lc_xml_node_majortickmark TYPE string VALUE 'c:majorTickMark', - lc_xml_node_minortickmark TYPE string VALUE 'c:minorTickMark', - lc_xml_node_ticklblpos TYPE string VALUE 'c:tickLblPos', - lc_xml_node_crossax TYPE string VALUE 'c:crossAx', - lc_xml_node_crosses TYPE string VALUE 'c:crosses', - lc_xml_node_auto TYPE string VALUE 'c:auto', - lc_xml_node_lblalgn TYPE string VALUE 'c:lblAlgn', - lc_xml_node_lbloffset TYPE string VALUE 'c:lblOffset', - lc_xml_node_nomultilvllbl TYPE string VALUE 'c:noMultiLvlLbl', - lc_xml_node_crossbetween TYPE string VALUE 'c:crossBetween', - "legend - lc_xml_node_legend TYPE string VALUE 'c:legend', - "legend->pie - lc_xml_node_legendpos TYPE string VALUE 'c:legendPos', -* lc_xml_node_layout TYPE string VALUE 'c:layout', "already exist - lc_xml_node_overlay TYPE string VALUE 'c:overlay', - lc_xml_node_txpr TYPE string VALUE 'c:txPr', - lc_xml_node_bodypr TYPE string VALUE 'a:bodyPr', - lc_xml_node_lststyle TYPE string VALUE 'a:lstStyle', - lc_xml_node_p TYPE string VALUE 'a:p', - lc_xml_node_ppr TYPE string VALUE 'a:pPr', - lc_xml_node_defrpr TYPE string VALUE 'a:defRPr', - lc_xml_node_endpararpr TYPE string VALUE 'a:endParaRPr', - "legend->bar + legend->line - lc_xml_node_plotvisonly TYPE string VALUE 'c:plotVisOnly', - lc_xml_node_dispblanksas TYPE string VALUE 'c:dispBlanksAs', - lc_xml_node_showdlblsovermax TYPE string VALUE 'c:showDLblsOverMax', - "---------------------------END OF CHART - - lc_xml_node_printsettings TYPE string VALUE 'c:printSettings', - lc_xml_node_headerfooter TYPE string VALUE 'c:headerFooter', - lc_xml_node_pagemargins TYPE string VALUE 'c:pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'c:pageSetup'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - DATA: lv_rel_id TYPE i. - - DATA lo_element TYPE REF TO if_ixml_element. - DATA lo_element2 TYPE REF TO if_ixml_element. - DATA lo_element3 TYPE REF TO if_ixml_element. - DATA lo_el_rootchart TYPE REF TO if_ixml_element. - DATA lo_element4 TYPE REF TO if_ixml_element. - DATA lo_element5 TYPE REF TO if_ixml_element. - DATA lo_element6 TYPE REF TO if_ixml_element. - DATA lo_element7 TYPE REF TO if_ixml_element. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_chartspace - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - -********************************************************************** -* STEP 4: Create chart - - DATA lo_chartb TYPE REF TO zcl_excel_graph_bars. - DATA lo_chartp TYPE REF TO zcl_excel_graph_pie. - DATA lo_chartl TYPE REF TO zcl_excel_graph_line. - DATA lo_chart TYPE REF TO zcl_excel_graph. - - DATA ls_serie TYPE zcl_excel_graph=>s_series. - DATA ls_ax TYPE zcl_excel_graph_bars=>s_ax. - DATA lv_str TYPE string. - - "Identify chart type - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - lo_chartb ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_pie. - lo_chartp ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_line. - lo_chartl ?= io_drawing->graph. - WHEN OTHERS. - ENDCASE. - - - lo_chart = io_drawing->graph. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_date1904 - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_1904val ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_lang - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_langval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_roundedcorners - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_roundedcornersval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_altcont - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_altcont_ns_mc ). - - "Choice - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_choice - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'Requires' - value = lc_xml_node_choice_ns_requires ). - lo_element2->set_attribute_ns( name = 'xmlns:c14' - value = lc_xml_node_choice_ns_c14 ). - - "C14:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_c14styleval ). - - "Fallback - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_fallback - parent = lo_element ). - - "C:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style2 - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_styleval ). - - "---------------------------CHART - lo_element = lo_document->create_simple_element( name = lc_xml_node_chart - parent = lo_element_root ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_autotitledeleted - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_autotitledeletedval ). - - "plotArea - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotarea - parent = lo_element ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_barchart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bardir - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_bardirval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_varycolorsval ). - - "series - LOOP AT lo_chartb->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_invertifnegative - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-invertifnegative ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_gapwidth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_gapwidthval ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartb->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_bars=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_bars=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_piechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_varycolorsval ). - - "series - LOOP AT lo_chartp->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showbubblesizeval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showleaderlines - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showleaderlinesval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_firstsliceang - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_firstsliceangval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_linechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_varycolorsval ). - - "series - LOOP AT lo_chartl->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_symbol - parent = lo_element5 ). - lo_element6->set_attribute_ns( name = 'val' - value = ls_serie-symbol ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-smooth ). - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_MARKERVAL ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_SMOOTHVAL ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartl->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_line=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). -* lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt -* parent = lo_element3 ). -* lo_element4->set_attribute_ns( name = 'formatCode' -* value = ls_ax-formatcode ). -* lo_element4->set_attribute_ns( name = 'sourceLinked' -* value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_line=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN OTHERS. - ENDCASE. - - "legend - IF lo_chart->print_label EQ abap_true. - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_legend - parent = lo_element ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_overlayval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_txpr - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bodypr - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lststyle - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_p - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_ppr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'rtl' - value = lo_chartp->ns_pprrtl ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_defrpr - parent = lo_element5 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_endpararpr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'lang' - value = lo_chartp->ns_endpararprlang ). - WHEN OTHERS. - ENDCASE. - ENDIF. - - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotvisonly - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_plotvisonlyval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_dispblanksas - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_dispblanksasval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_showdlblsovermax - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_showdlblsovermaxval ). - "---------------------------END OF CHART - - "printSettings - lo_element = lo_document->create_simple_element( name = lc_xml_node_printsettings - parent = lo_element_root ). - "headerFooter - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_element ). - "pageMargins - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'b' - value = lo_chart->pagemargins-b ). - lo_element2->set_attribute_ns( name = 'l' - value = lo_chart->pagemargins-l ). - lo_element2->set_attribute_ns( name = 'r' - value = lo_chart->pagemargins-r ). - lo_element2->set_attribute_ns( name = 't' - value = lo_chart->pagemargins-t ). - lo_element2->set_attribute_ns( name = 'header' - value = lo_chart->pagemargins-header ). - lo_element2->set_attribute_ns( name = 'footer' - value = lo_chart->pagemargins-footer ). - "pageSetup - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS. - - -** Constant node name - CONSTANTS: lc_xml_node_wsdr TYPE string VALUE 'xdr:wsDr', - lc_xml_node_ns_xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main'. - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - DATA: lv_rel_id TYPE i. - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_wsdr - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:xdr' - value = lc_xml_node_ns_xdr ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - -********************************************************************** -* STEP 4: Create drawings - - CLEAR: lv_rel_id. - - lo_drawings = io_worksheet->get_drawings( ). - - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - ADD 1 TO lv_rel_id. - lo_element_cellanchor = me->create_xl_drawing_anchor( - io_drawing = lo_drawing - io_document = lo_document - ip_index = lv_rel_id ). - - lo_element_root->append_child( new_child = lo_element_cellanchor ). - - ENDWHILE. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS_RELS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lv_value TYPE string, - lv_counter TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_counter = 0. - lo_drawings = io_worksheet->get_drawings( ). - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_counter. - - lv_value = lv_counter. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - lv_value = lo_drawing->get_media_name( ). - CASE lo_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - CONCATENATE '../media/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_image_tp ). - - WHEN zcl_excel_drawing=>type_chart. - CONCATENATE '../charts/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_chart_tp ). - - ENDCASE. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - method CREATE_XL_DRAWING_ANCHOR. - -** Constant node name - CONSTANTS: lc_xml_node_onecellanchor TYPE string VALUE 'xdr:oneCellAnchor', - lc_xml_node_twocellanchor TYPE string VALUE 'xdr:twoCellAnchor', - lc_xml_node_from TYPE string VALUE 'xdr:from', - lc_xml_node_to TYPE string VALUE 'xdr:to', - lc_xml_node_pic TYPE string VALUE 'xdr:pic', - lc_xml_node_ext TYPE string VALUE 'xdr:ext', - lc_xml_node_clientdata TYPE string VALUE 'xdr:clientData', - - lc_xml_node_col TYPE string VALUE 'xdr:col', - lc_xml_node_coloff TYPE string VALUE 'xdr:colOff', - lc_xml_node_row TYPE string VALUE 'xdr:row', - lc_xml_node_rowoff TYPE string VALUE 'xdr:rowOff', - - lc_xml_node_nvpicpr TYPE string VALUE 'xdr:nvPicPr', - lc_xml_node_cnvpr TYPE string VALUE 'xdr:cNvPr', - lc_xml_node_cnvpicpr TYPE string VALUE 'xdr:cNvPicPr', - lc_xml_node_piclocks TYPE string VALUE 'a:picLocks', - - lc_xml_node_sppr TYPE string VALUE 'xdr:spPr', - lc_xml_node_apgeom TYPE string VALUE 'a:prstGeom', - lc_xml_node_aavlst TYPE string VALUE 'a:avLst', - - lc_xml_node_graphicframe TYPE string VALUE 'xdr:graphicFrame', - lc_xml_node_nvgraphicframepr TYPE string VALUE 'xdr:nvGraphicFramePr', - lc_xml_node_cnvgraphicframepr TYPE string VALUE 'xdr:cNvGraphicFramePr', - lc_xml_node_graphicframelocks TYPE string VALUE 'a:graphicFrameLocks', - lc_xml_node_xfrm TYPE string VALUE 'xdr:xfrm', - lc_xml_node_aoff TYPE string VALUE 'a:off', - lc_xml_node_aext TYPE string VALUE 'a:ext', - lc_xml_node_agraphic TYPE string VALUE 'a:graphic', - lc_xml_node_agraphicdata TYPE string VALUE 'a:graphicData', - - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_cchart TYPE string VALUE 'c:chart', - - lc_xml_node_blipfill TYPE string VALUE 'xdr:blipFill', - lc_xml_node_ablip TYPE string VALUE 'a:blip', - lc_xml_node_astretch TYPE string VALUE 'a:stretch', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'. - - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_element_graphicframe TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_element3 TYPE REF TO if_ixml_element, - lo_element_from TYPE REF TO if_ixml_element, - lo_element_to TYPE REF TO if_ixml_element, - lo_element_ext TYPE REF TO if_ixml_element, - lo_element_pic TYPE REF TO if_ixml_element, - lo_element_clientdata TYPE REF TO if_ixml_element, - - ls_position TYPE zexcel_drawing_position, - - lv_col TYPE string, " zexcel_cell_column, - lv_row TYPE string, " zexcel_cell_row. - lv_col_offset TYPE string, - lv_row_offset TYPE string, - lv_value TYPE string. - - ls_position = io_drawing->get_position( ). - - IF ls_position-anchor = 'ONE'. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_onecellanchor - parent = io_document ). - ELSE. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_twocellanchor - parent = io_document ). - ENDIF. - -* from cell ****************************** - lo_element_from = io_document->create_simple_element( name = lc_xml_node_from - parent = io_document ). - - lv_col = ls_position-from-col. - lv_row = ls_position-from-row. - lv_col_offset = ls_position-from-col_offset. - lv_row_offset = ls_position-from-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_from->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_from ). - - IF ls_position-anchor = 'ONE'. - -* ext ****************************** - lo_element_ext = io_document->create_simple_element( name = lc_xml_node_ext - parent = io_document ). - - lv_value = io_drawing->get_width_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cx' - value = lv_value ). - lv_value = io_drawing->get_height_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cy' - value = lv_value ). - ep_anchor->append_child( new_child = lo_element_ext ). - - ELSEIF ls_position-anchor = 'TWO'. - -* to cell ****************************** - lo_element_to = io_document->create_simple_element( name = lc_xml_node_to - parent = io_document ). - - lv_col = ls_position-to-col. - lv_row = ls_position-to-row. - lv_col_offset = ls_position-to-col_offset. - lv_row_offset = ls_position-to-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_to->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_to ). - - ENDIF. - - CASE io_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. -* pic ********************************** - lo_element_pic = io_document->create_simple_element( name = lc_xml_node_pic - parent = io_document ). -* nvPicPr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvpicpr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). - -* cNvPicPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpicpr - parent = io_document ). - -* picLocks - lo_element3 = io_document->create_simple_element( name = lc_xml_node_piclocks - parent = io_document ). - lo_element3->set_attribute_ns( name = 'noChangeAspect' - value = '1' ). - - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_pic->append_child( new_child = lo_element ). - -* blipFill - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = io_document->create_simple_element( name = lc_xml_node_blipfill - parent = io_document ). - lo_element2 = io_document->create_simple_element( name = lc_xml_node_ablip - parent = io_document ). - lo_element2->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element2->set_attribute_ns( name = 'r:embed' - value = lv_value ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_astretch - parent = io_document ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - -* spPr - lo_element = io_document->create_simple_element( name = lc_xml_node_sppr - parent = io_document ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_apgeom - parent = io_document ). - lo_element2->set_attribute_ns( name = 'prst' - value = 'rect' ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_aavlst - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_pic ). - WHEN zcl_excel_drawing=>type_chart. -* graphicFrame ********************************** - lo_element_graphicframe = io_document->create_simple_element( name = lc_xml_node_graphicframe - parent = io_document ). -* nvGraphicFramePr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvgraphicframepr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). -* cNvGraphicFramePr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvgraphicframepr - parent = io_document ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_graphicframelocks - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* xfrm - lo_element = io_document->create_simple_element( name = lc_xml_node_xfrm - parent = io_document ). -* off - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aoff - parent = io_document ). - lo_element2->set_attribute_ns( name = 'y' value = '0' ). - lo_element2->set_attribute_ns( name = 'x' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). -* ext - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aext - parent = io_document ). - lo_element2->set_attribute_ns( name = 'cy' value = '0' ). - lo_element2->set_attribute_ns( name = 'cx' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* graphic - lo_element = io_document->create_simple_element( name = lc_xml_node_agraphic - parent = io_document ). -* graphicData - lo_element2 = io_document->create_simple_element( name = lc_xml_node_agraphicdata - parent = io_document ). - lo_element2->set_attribute_ns( name = 'uri' value = lc_xml_node_ns_c ). - -* chart - lo_element3 = io_document->create_simple_element( name = lc_xml_node_cchart - parent = io_document ). - - lo_element3->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element3->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element3->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_graphicframe ). - - ENDCASE. - -* client data *************************** - lo_element_clientdata = io_document->create_simple_element( name = lc_xml_node_clientdata - parent = io_document ). - ep_anchor->append_child( new_child = lo_element_clientdata ). - - endmethod. - - - - method CREATE_XL_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_sheet_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lc_xml_node_rid_theme_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - lc_xml_node_rid_styles_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lc_xml_node_rid_shared_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - " Node target - lc_xml_node_ridx_tg TYPE string VALUE 'worksheets/sheet#.xml', - lc_xml_node_rid_shared_tg TYPE string VALUE 'sharedStrings.xml', - lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', - lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_syindex(3) TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 2. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_styles_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( new_child = lo_element ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size - 1. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_theme_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( new_child = lo_element ). - - lv_size = excel->get_worksheets_size( ). - - DO lv_size TIMES. - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - lv_xml_node_ridx_tg = lc_xml_node_ridx_tg. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_tg WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_sheet_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 3 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_shared_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_XL_SHAREDSTRINGS. - - -** Constant node name - DATA: lc_xml_node_sst TYPE string VALUE 'sst', - lc_xml_node_si TYPE string VALUE 'si', - lc_xml_node_t TYPE string VALUE 't', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_value TYPE string, - lv_count_str TYPE string, - lv_uniquecount_str TYPE string, - lv_sytabix TYPE sytabix, - lv_count TYPE i, - lv_uniquecount TYPE i. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_sheet_string> TYPE zexcel_s_shared_string. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - DESCRIBE TABLE lt_cell_data LINES lv_count. - MOVE lv_count TO lv_count_str. - - SHIFT lv_count_str RIGHT DELETING TRAILING space. - SHIFT lv_count_str LEFT DELETING LEADING space. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - DESCRIBE TABLE lt_cell_data LINES lv_uniquecount. - MOVE lv_uniquecount TO lv_uniquecount_str. - - SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. - SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - lv_sytabix = sy-tabix - 1. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. - APPEND ls_shared_string TO shared_strings. - ENDLOOP. - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_sst - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_count - value = lv_count_str ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_uniquecount - value = lv_uniquecount_str ). - -********************************************************************** -* STEP 4: Create subnode - LOOP AT shared_strings ASSIGNING <fs_sheet_string>. - lo_element = lo_document->create_simple_element( name = lc_xml_node_si - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). - lo_sub_element->set_value( value = <fs_sheet_string>-string_value ). - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - METHOD create_xl_sheet. -*--------------------------------------------------------------------* -* issue #330 - Adding ColorScale conditional formatting -* - Ivan Femia, 2014-08-25 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF colors, - colorrgb TYPE zexcel_color, - END OF colors. - -*--------------------------------------------------------------------* -* issue #237 - Error writing column-style -* - Stefan Schmöcker, 2012-11-01 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF cfvo, - value TYPE zexcel_conditional_value, - type TYPE zexcel_conditional_type, - END OF cfvo. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - start -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, - END OF lty_table_area. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - end -*--------------------------------------------------------------------* - - -** Constant node name - DATA: lc_xml_node_worksheet TYPE string VALUE 'worksheet', - lc_xml_node_sheetpr TYPE string VALUE 'sheetPr', - lc_xml_node_tabcolor TYPE string VALUE 'tabColor', - lc_xml_node_outlinepr TYPE string VALUE 'outlinePr', - lc_xml_node_dimension TYPE string VALUE 'dimension', - lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', - lc_xml_node_sheetview TYPE string VALUE 'sheetView', - lc_xml_node_selection TYPE string VALUE 'selection', - lc_xml_node_pane TYPE string VALUE 'pane', - lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', - lc_xml_node_cols TYPE string VALUE 'cols', - lc_xml_node_col TYPE string VALUE 'col', - lc_xml_node_sheetdata TYPE string VALUE 'sheetData', - lc_xml_node_row TYPE string VALUE 'row', - lc_xml_node_c TYPE string VALUE 'c', - lc_xml_node_v TYPE string VALUE 'v', - lc_xml_node_f TYPE string VALUE 'f', - lc_xml_node_sheetprotection TYPE string VALUE 'sheetProtection', - lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'pageSetup', - lc_xml_node_pagesetuppr TYPE string VALUE 'pageSetUpPr', - lc_xml_node_condformatting TYPE string VALUE 'conditionalFormatting', - lc_xml_node_cfrule TYPE string VALUE 'cfRule', - lc_xml_node_color TYPE string VALUE 'color', " Databar by Albert Lladanosa - lc_xml_node_databar TYPE string VALUE 'dataBar', " Databar by Albert Lladanosa - lc_xml_node_colorscale TYPE string VALUE 'colorScale', - lc_xml_node_iconset TYPE string VALUE 'iconSet', - lc_xml_node_cfvo TYPE string VALUE 'cfvo', - lc_xml_node_formula TYPE string VALUE 'formula', - lc_xml_node_datavalidations TYPE string VALUE 'dataValidations', - lc_xml_node_datavalidation TYPE string VALUE 'dataValidation', - lc_xml_node_formula1 TYPE string VALUE 'formula1', - lc_xml_node_formula2 TYPE string VALUE 'formula2', - lc_xml_node_mergecell TYPE string VALUE 'mergeCell', - lc_xml_node_mergecells TYPE string VALUE 'mergeCells', - lc_xml_node_drawing TYPE string VALUE 'drawing', - lc_xml_node_headerfooter TYPE string VALUE 'headerFooter', - lc_xml_node_oddheader TYPE string VALUE 'oddHeader', - lc_xml_node_oddfooter TYPE string VALUE 'oddFooter', - lc_xml_node_evenheader TYPE string VALUE 'evenHeader', - lc_xml_node_evenfooter TYPE string VALUE 'evenFooter', - lc_xml_node_autofilter TYPE string VALUE 'autoFilter', - lc_xml_node_filtercolumn TYPE string VALUE 'filterColumn', - lc_xml_node_filters TYPE string VALUE 'filters', - lc_xml_node_filter TYPE string VALUE 'filter', - " Node attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_summarybelow TYPE string VALUE 'summaryBelow', - lc_xml_attr_summaryright TYPE string VALUE 'summaryRight', - lc_xml_attr_tabselected TYPE string VALUE 'tabSelected', - lc_xml_attr_showzeros TYPE string VALUE 'showZeros', - lc_xml_attr_zoomscale TYPE string VALUE 'zoomScale', - lc_xml_attr_zoomscalenormal TYPE string VALUE 'zoomScaleNormal', - lc_xml_attr_zoomscalepageview TYPE string VALUE 'zoomScalePageLayoutView', - lc_xml_attr_zoomscalesheetview TYPE string VALUE 'zoomScaleSheetLayoutView', - lc_xml_attr_workbookviewid TYPE string VALUE 'workbookViewId', - lc_xml_attr_showgridlines TYPE string VALUE 'showGridLines', - lc_xml_attr_gridlines TYPE string VALUE 'gridLines', - lc_xml_attr_showrowcolheaders TYPE string VALUE 'showRowColHeaders', - lc_xml_attr_activecell TYPE string VALUE 'activeCell', - lc_xml_attr_sqref TYPE string VALUE 'sqref', - lc_xml_attr_min TYPE string VALUE 'min', - lc_xml_attr_max TYPE string VALUE 'max', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_width TYPE string VALUE 'width', - lc_xml_attr_defaultwidth TYPE string VALUE '9.10', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_bestfit TYPE string VALUE 'bestFit', - lc_xml_attr_customheight TYPE string VALUE 'customHeight', - lc_xml_attr_customwidth TYPE string VALUE 'customWidth', - lc_xml_attr_collapsed TYPE string VALUE 'collapsed', - lc_xml_attr_defaultrowheight TYPE string VALUE 'defaultRowHeight', - lc_xml_attr_defaultcolwidth TYPE string VALUE 'defaultColWidth', - lc_xml_attr_outlinelevelrow TYPE string VALUE 'x14ac:outlineLevelRow', - lc_xml_attr_outlinelevelcol TYPE string VALUE 'x14ac:outlineLevelCol', - lc_xml_attr_outlinelevel TYPE string VALUE 'outlineLevel', - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_s TYPE string VALUE 's', - lc_xml_attr_spans TYPE string VALUE 'spans', - lc_xml_attr_t TYPE string VALUE 't', - lc_xml_attr_password TYPE string VALUE 'password', - lc_xml_attr_sheet TYPE string VALUE 'sheet', - lc_xml_attr_objects TYPE string VALUE 'objects', - lc_xml_attr_scenarios TYPE string VALUE 'scenarios', - lc_xml_attr_autofilter TYPE string VALUE 'autoFilter', - lc_xml_attr_deletecolumns TYPE string VALUE 'deleteColumns', - lc_xml_attr_deleterows TYPE string VALUE 'deleteRows', - lc_xml_attr_formatcells TYPE string VALUE 'formatCells', - lc_xml_attr_formatcolumns TYPE string VALUE 'formatColumns', - lc_xml_attr_formatrows TYPE string VALUE 'formatRows', - lc_xml_attr_insertcolumns TYPE string VALUE 'insertColumns', - lc_xml_attr_inserthyperlinks TYPE string VALUE 'insertHyperlinks', - lc_xml_attr_insertrows TYPE string VALUE 'insertRows', - lc_xml_attr_pivottables TYPE string VALUE 'pivotTables', - lc_xml_attr_selectlockedcells TYPE string VALUE 'selectLockedCells', - lc_xml_attr_selectunlockedcell TYPE string VALUE 'selectUnlockedCells', - lc_xml_attr_sort TYPE string VALUE 'sort', - lc_xml_attr_left TYPE string VALUE 'left', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_header TYPE string VALUE 'header', - lc_xml_attr_footer TYPE string VALUE 'footer', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_iconset TYPE string VALUE 'iconSet', - lc_xml_attr_showvalue TYPE string VALUE 'showValue', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_dxfid TYPE string VALUE 'dxfId', - lc_xml_attr_priority TYPE string VALUE 'priority', - lc_xml_attr_operator TYPE string VALUE 'operator', - lc_xml_attr_allowblank TYPE string VALUE 'allowBlank', - lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage', - lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage', - lc_xml_attr_errortitle TYPE string VALUE 'errorTitle', - lc_xml_attr_error TYPE string VALUE 'error', - lc_xml_attr_prompttitle TYPE string VALUE 'promptTitle', - lc_xml_attr_prompt TYPE string VALUE 'prompt', - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_blackandwhite TYPE string VALUE 'blackAndWhite', - lc_xml_attr_cellcomments TYPE string VALUE 'cellComments', - lc_xml_attr_copies TYPE string VALUE 'copies', - lc_xml_attr_draft TYPE string VALUE 'draft', - lc_xml_attr_errors TYPE string VALUE 'errors', - lc_xml_attr_firstpagenumber TYPE string VALUE 'firstPageNumber', - lc_xml_attr_fittopage TYPE string VALUE 'fitToPage', - lc_xml_attr_fittoheight TYPE string VALUE 'fitToHeight', - lc_xml_attr_fittowidth TYPE string VALUE 'fitToWidth', - lc_xml_attr_horizontaldpi TYPE string VALUE 'horizontalDpi', - lc_xml_attr_orientation TYPE string VALUE 'orientation', - lc_xml_attr_pageorder TYPE string VALUE 'pageOrder', - lc_xml_attr_paperheight TYPE string VALUE 'paperHeight', - lc_xml_attr_papersize TYPE string VALUE 'paperSize', - lc_xml_attr_paperwidth TYPE string VALUE 'paperWidth', - lc_xml_attr_scale TYPE string VALUE 'scale', - lc_xml_attr_usefirstpagenumber TYPE string VALUE 'useFirstPageNumber', - lc_xml_attr_useprinterdefaults TYPE string VALUE 'usePrinterDefaults', - lc_xml_attr_verticaldpi TYPE string VALUE 'verticalDpi', - lc_xml_attr_differentoddeven TYPE string VALUE 'differentOddEven', - lc_xml_attr_colid TYPE string VALUE 'colId', - lc_xml_attr_filtermode TYPE string VALUE 'filterMode', - lc_xml_attr_tabcolor_rgb TYPE string VALUE 'rgb', - lc_xml_attr_tabcolor_theme TYPE string VALUE 'theme', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_comp_pref TYPE string VALUE 'x14ac', - lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_table TYPE REF TO zcl_excel_table, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, - default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_value TYPE string, - lt_range_merge TYPE string_table, - lv_merge TYPE string, - lv_column_p TYPE zexcel_cell_column_alpha, - lv_column TYPE zexcel_cell_column, - lv_cell_value TYPE zexcel_cell_value, - lv_style_guid TYPE zexcel_cell_style, - lv_flag TYPE c, - ls_databar TYPE zexcel_conditional_databar, " Databar by Albert Lladanosa - ls_colorscale TYPE zexcel_conditional_colorscale, - ls_iconset TYPE zexcel_conditional_iconset, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - lt_cfvo TYPE TABLE OF cfvo, - ls_cfvo TYPE cfvo, - lt_colors TYPE TABLE OF colors, - ls_colors TYPE colors, - lv_cell_row_s TYPE string, - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping, - lv_freeze_cell_row TYPE zexcel_cell_row, - lv_freeze_cell_column TYPE zexcel_cell_column, - lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, - row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - lv_relation_id TYPE i VALUE 0, - outline_level_row TYPE i VALUE 0, - outline_level_col TYPE i VALUE 0, - col_count TYPE int4, - merge_count TYPE int4, - write_current_row TYPE boolean, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values, - lv_guid TYPE uuid, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter, - l_autofilter_hidden TYPE flag, - ls_area TYPE zexcel_s_autofilter_area, - lv_ref TYPE string, - lv_style_index TYPE i. " issue #237 - - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data, - <fs_range_merge> LIKE LINE OF lt_range_merge, - <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - start -*--------------------------------------------------------------------* - DATA: lt_table_areas TYPE SORTED TABLE OF lty_table_area WITH NON-UNIQUE KEY left right top bottom, - ls_table_area LIKE LINE OF lt_table_areas. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - end -*--------------------------------------------------------------------* - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_worksheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_comp_ns ). - lo_element_root->set_attribute_ns( name = 'mc:Ignorable' - value = lc_xml_node_comp_pref ). - lo_element_root->set_attribute_ns( name = 'xmlns:x14ac' - value = lc_xml_node_ig_ns ). - - -********************************************************************** -* STEP 4: Create subnodes - " sheetPr - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetpr - parent = lo_document ). - " TODO tabColor - IF io_worksheet->tabcolor IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_tabcolor - parent = lo_element ). -* Theme not supported yet - start with RGB - lv_value = io_worksheet->tabcolor-rgb. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - ENDIF. - - " outlinePr - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_outlinepr - parent = lo_document ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summarybelow. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summarybelow - value = lv_value ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summaryright. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summaryright - value = lv_value ). - - lo_element->append_child( new_child = lo_element_2 ). - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_pagesetuppr - parent = lo_document ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_fittopage - value = `1` ). - lo_element->append_child( new_child = lo_element_2 ). " pageSetupPr node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - - " dimension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension - parent = lo_document ). - lv_value = io_worksheet->get_dimension_range( ). - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " sheetViews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews - parent = lo_document ). - " sheetView node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_sheetview - parent = lo_document ). - IF io_worksheet->zif_excel_sheet_properties~show_zeros EQ abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showzeros - value = '0' ). - ENDIF. - IF iv_active = abap_true - OR io_worksheet->zif_excel_sheet_properties~selected EQ abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '0' ). - ENDIF. - " Zoom scale - IF io_worksheet->zif_excel_sheet_properties~zoomscale GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscale - value = lv_value ). - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_normal LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_normal. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalenormal - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalepageview - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalesheetview - value = lv_value ). - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid - value = '0' ). - " showGridLines attribute - IF io_worksheet->show_gridlines = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '0' ). - ENDIF. - - " showRowColHeaders attribute - IF io_worksheet->show_rowcolheaders = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '0' ). - ENDIF. - - - " freeze panes - io_worksheet->get_freeze_cell( IMPORTING ep_row = lv_freeze_cell_row - ep_column = lv_freeze_cell_column ). - - IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_pane - parent = lo_element_2 ). - - IF lv_freeze_cell_row > 1. - lv_value = lv_freeze_cell_row - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'ySplit' - value = lv_value ). - ENDIF. - - IF lv_freeze_cell_column > 1. - lv_value = lv_freeze_cell_column - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'xSplit' - value = lv_value ). - ENDIF. - - lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ). - CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value. - lo_element_3->set_attribute_ns( name = 'topLeftCell' - value = lv_value ). - - lo_element_3->set_attribute_ns( name = 'activePane' - value = 'bottomRight' ). - - lo_element_3->set_attribute_ns( name = 'state' - value = 'frozen' ). - - lo_element_2->append_child( new_child = lo_element_3 ). - ENDIF. - " selection node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection - parent = lo_document ). - lv_value = io_worksheet->get_active_cell( ). - lo_element_3->set_attribute_ns( name = lc_xml_attr_activecell - value = lv_value ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " sheetView node - - lo_element->append_child( new_child = lo_element_2 ). " sheetView node - - lo_element_root->append_child( new_child = lo_element ). " sheetViews node - - - column_dimensions[] = io_worksheet->get_column_dimensions( ). - " Calculate col - IF NOT column_dimensions IS INITIAL. - io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). - ENDIF. - row_dimensions[] = io_worksheet->get_row_dimensions( ). - " sheetFormatPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetformatpr - parent = lo_document ). - " defaultRowHeight - default_row_dimension = io_worksheet->get_default_row_dimension( ). - IF default_row_dimension IS BOUND. - IF default_row_dimension->get_row_height( ) >= 0. - lo_element->set_attribute_ns( name = lc_xml_attr_customheight - value = lc_xml_attr_true ). - lv_value = default_row_dimension->get_row_height( ). - ELSE. - lv_value = '12.75'. - ENDIF. - ELSE. - lv_value = '12.75'. - ENDIF. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight - value = lv_value ). - " defaultColWidth - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - lv_value = default_col_dimension->get_width( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultcolwidth - value = lv_value ). - ENDIF. - ENDIF. - " outlineLevelRow - LOOP AT row_dimensions ASSIGNING <row_dimension>. - IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. - outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - lv_value = outline_level_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow - value = lv_value ). - " outlineLevelCol - LOOP AT column_dimensions ASSIGNING <column_dimension>. - IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. - outline_level_col = <column_dimension>-column_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - lv_value = outline_level_col. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelcol - value = lv_value ). -* lv_value = 0. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_dydescent -* value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). " sheetFormatPr node - - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL OR NOT column_dimensions IS INITIAL. - " cols node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cols - parent = lo_document ). - " This code have to be enhanced in order to manage also column style properties - " Now it is an out/out - IF NOT column_dimensions IS INITIAL. - LOOP AT column_dimensions ASSIGNING <column_dimension>. - " col node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). - lv_value = <column_dimension>-column_dimension->get_column_index( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - " Width - IF <column_dimension>-column_dimension->get_width( ) < 0. - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - ELSE. - lv_value = <column_dimension>-column_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lv_value ). - ENDIF. - " Column visibility - IF <column_dimension>-column_dimension->get_visible( ) = abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lc_xml_attr_true ). - ENDIF. - " Auto size? - IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_bestfit - value = lc_xml_attr_true ). - ENDIF. - " Custom width? - IF default_col_dimension IS BOUND. - IF <column_dimension>-column_dimension->get_width( ) - <> default_col_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - - ENDIF. - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - ENDIF. - " Collapsed - IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_collapsed - value = lc_xml_attr_true ). - ENDIF. - " outlineLevel - IF <column_dimension>-column_dimension->get_outline_level( ) > 0. - lv_value = <column_dimension>-column_dimension->get_outline_level( ). - - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_outlinelevel - value = lv_value ). - ENDIF. - " Style -* lv_value = <column_dimension>-column_dimension->get_xf_index( ). "del issue #157 - set column style - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). "ins issue #157 - set column style -* lv_value = me->excel->get_style_index_in_styles( lv_style_guid ). "del issue #237 - CLEAR ls_style_mapping. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. - lv_style_index = ls_style_mapping-style. - IF lv_style_index > 0. "ins issue #237 - lv_value = lv_style_index - 1. "ins issue #237 - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. "ins issue #237 - - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. -* ELSE. "del issue #157 - set sheet style ( add missing columns -* IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. "del issue #157 - set sheet style ( add missing columns -* Begin of insertion issue #157 - set sheet style ( add missing columns - ENDIF. -* Always pass through this coding - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. - DATA: lts_sorted_columns TYPE SORTED TABLE OF zexcel_cell_column WITH UNIQUE KEY table_line. - TYPES: BEGIN OF ty_missing_columns, - first_column TYPE zexcel_cell_column, - last_column TYPE zexcel_cell_column, - END OF ty_missing_columns. - DATA: t_missing_columns TYPE STANDARD TABLE OF ty_missing_columns WITH NON-UNIQUE DEFAULT KEY, - missing_column LIKE LINE OF t_missing_columns. - -* First collect columns that were already handled before. The rest has to be inserted now - LOOP AT column_dimensions ASSIGNING <column_dimension>. - lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-column ). - INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. - -* Now find all columns that were missing so far - missing_column-first_column = 1. - LOOP AT lts_sorted_columns INTO lv_column. - IF lv_column > missing_column-first_column. - missing_column-last_column = lv_column - 1. - APPEND missing_column TO t_missing_columns. - ENDIF. - missing_column-first_column = lv_column + 1. - ENDLOOP. - missing_column-last_column = zcl_excel_common=>c_excel_sheet_max_col. - APPEND missing_column TO t_missing_columns. -* Now apply stylesetting ( and other defaults - I copy it from above. Whoever programmed that seems to know what to do :o) - LOOP AT t_missing_columns INTO missing_column. -* End of insertion issue #157 - set column style - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). -* lv_value = zcl_excel_common=>c_excel_sheet_min_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-first_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). -* lv_value = zcl_excel_common=>c_excel_sheet_max_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-last_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. - lv_value = ls_style_mapping-style. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. "ins issue #157 - set sheet style ( add missing columns - - ENDIF. - lo_element_root->append_child( new_child = lo_element ). " cols node - ENDIF. - " sheetData node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata - parent = lo_document ). - " Get column count - col_count = io_worksheet->get_highest_column( ). - " Get autofilter - lv_guid = io_worksheet->get_guid( ) . - lo_autofilters = excel->get_autofilters_reference( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = lv_guid ) . - IF lo_autofilter IS BOUND. - lt_values = lo_autofilter->get_values( ) . - ls_area = lo_autofilter->get_filter_area( ) . - l_autofilter_hidden = abap_true. " First defautl is not showing - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - start -*--------------------------------------------------------------------* -* Build table to hold all table-areas attached to this sheet - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). - ls_table_area-right = lo_table->get_right_column_integer( ). - ls_table_area-top = lo_table->settings-top_left_row. - ls_table_area-bottom = lo_table->get_bottom_row_integer( ). - INSERT ls_table_area INTO TABLE lt_table_areas. - ENDWHILE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end -*--------------------------------------------------------------------* - - LOOP AT io_worksheet->sheet_content ASSIGNING <ls_sheet_content>. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - CLEAR ls_style_mapping. - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - IF ls_last_row-cell_row IS NOT INITIAL. - " Row visibility of previos row. - IF row_dimension->get_visible( ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - " Add new row - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - " r - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - " Spans - lv_value = col_count. - CONCATENATE '1:' lv_value INTO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = lv_value ). - row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). - " Do we need the row dimension attributes? - IF row_dimension->get_row_height( ) >= 0 OR - row_dimension->get_collapsed( ) = abap_true OR - row_dimension->get_outline_level( ) > 0 OR - row_dimension->get_xf_index( ) <> 0 OR - l_autofilter_hidden = abap_true. - " Row dimensions - IF row_dimension->get_row_height( ) >= 0. - lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). - lv_value = row_dimension->get_row_height( ). - lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). - ENDIF. - " Collapsed - IF row_dimension->get_collapsed( ) = abap_true. - lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). - ENDIF. - " Outline level - IF row_dimension->get_outline_level( ) > 0. - lv_value = row_dimension->get_outline_level( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). - ENDIF. - " Style - IF row_dimension->get_xf_index( ) <> 0. - lv_value = row_dimension->get_xf_index( ). - lo_element_2->set_attribute_ns( name = 's' value = lv_value ). - lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). - ENDIF. - ENDIF. - l_autofilter_hidden = abap_true. " First default is not showing - ENDIF. - - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_r - value = <ls_sheet_content>-cell_coords ). - -* begin of change issue #157 - allow column cellstyle -* if no cellstyle is set, look into column, then into sheet - IF <ls_sheet_content>-cell_style IS NOT INITIAL. - lv_style_guid = <ls_sheet_content>-cell_style. - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - start -*--------------------------------------------------------------------* -* Check if cell in any of the table areas - LOOP AT lt_table_areas TRANSPORTING NO FIELDS WHERE top <= <ls_sheet_content>-cell_row - AND bottom >= <ls_sheet_content>-cell_row - AND left <= <ls_sheet_content>-cell_column - AND right >= <ls_sheet_content>-cell_column. - EXIT. - ENDLOOP. - IF sy-subrc = 0. - CLEAR lv_style_guid. " No style --> EXCEL will use built-in-styles as declared in the tables-section - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - end -*--------------------------------------------------------------------* - lv_column_p = zcl_excel_common=>convert_column2alpha( <ls_sheet_content>-cell_column ). - READ TABLE column_dimensions WITH KEY column = lv_column_p ASSIGNING <column_dimension>. - IF sy-subrc = 0. - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). - IF lv_style_guid IS INITIAL. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - ELSE. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - start -*--------------------------------------------------------------------* - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - end -*--------------------------------------------------------------------* - ENDIF. -* IF <ls_sheet_content>-cell_style IS NOT INITIAL. -* READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. - IF lv_style_guid IS NOT INITIAL. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* end of change issue #157 - allow column cellstyles - lv_value = ls_style_mapping-style. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_3->set_attribute_ns( name = lc_xml_attr_s - value = lv_value ). - ENDIF. - - " For cells with formula ignore the value - Excel will calculate it - IF <ls_sheet_content>-cell_formula IS NOT INITIAL. - " fomula node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_formula. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " fomula node - ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL. "cell can have just style or formula - IF <ls_sheet_content>-data_type IS NOT INITIAL. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = <ls_sheet_content>-data_type ). - ENDIF. - - " value node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_document ). - - IF <ls_sheet_content>-data_type EQ 's'. - lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ELSE. - lv_value = <ls_sheet_content>-cell_value. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ENDIF. - - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDIF. - - lo_element_2->append_child( new_child = lo_element_3 ). " column node - ls_last_row = <ls_sheet_content>. - ENDLOOP. - IF sy-subrc = 0. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - " Row visibility of previos row. - IF row_dimension->get_visible( ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " sheetData node - - IF lo_autofilter IS BOUND. -* Create node autofilter - lo_element = lo_document->create_simple_element( name = lc_xml_node_autofilter - parent = lo_document ). - lv_ref = lo_autofilter->get_filter_range( ) . - CONDENSE lv_ref NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - lt_values = lo_autofilter->get_values( ) . - IF lt_values IS NOT INITIAL. -* If we filter we need to set the filter mode to 1. - lo_element_2 = lo_document->find_from_name( name = lc_xml_node_sheetpr ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_filtermode - value = '1' ). -* Create node filtercolumn - CLEAR lv_column. - LOOP AT lt_values INTO ls_values. - IF ls_values-column <> lv_column. - IF lv_column IS NOT INITIAL. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_filtercolumn - parent = lo_element ). - lv_column = ls_values-column - lo_autofilter->filter_area-col_start. - lv_value = lv_column. - CONDENSE lv_value NO-GAPS. - lo_element_2->set_attribute_ns( name = lc_xml_attr_colid - value = lv_value ). - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_filters - parent = lo_element_2 ). - lv_column = ls_values-column. - ENDIF. - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_filter - parent = lo_element_3 ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = ls_values-value ). - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDLOOP. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - IF io_worksheet->zif_excel_sheet_protection~protected EQ abap_true. - " sheetProtection node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetprotection - parent = lo_document ). - MOVE io_worksheet->zif_excel_sheet_protection~password TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_password - value = lv_value ). - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_protection~auto_filter. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_autofilter - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deletecolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deleterows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_hyperlinks. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_inserthyperlinks - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~objects. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_objects - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~pivot_tables. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_pivottables - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~scenarios. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scenarios - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_locked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectlockedcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_unlocked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectunlockedcell - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sheet. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sheet - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sort. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sort - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " Merged cells - lt_range_merge = io_worksheet->get_merge( ). - IF lt_range_merge IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_mergecells - parent = lo_document ). - DESCRIBE TABLE lt_range_merge LINES merge_count. - lv_value = merge_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - LOOP AT lt_range_merge ASSIGNING <fs_range_merge>. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_mergecell - parent = lo_document ). - - lo_element_2->set_attribute_ns( name = lc_xml_attr_ref - value = <fs_range_merge> ). - lo_element->append_child( new_child = lo_element_2 ). - lo_element_root->append_child( new_child = lo_element ). - io_worksheet->delete_merge( ). - ENDLOOP. - ENDIF. - - " Conditional formatting node - lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_style_conditional->rule IS INITIAL. - CONTINUE. - ENDIF. - lo_element = lo_document->create_simple_element( name = lc_xml_node_condformatting - parent = lo_document ). - lv_value = lo_style_conditional->get_dimension_range( ) . - lo_element->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - " cfRule node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_cfrule - parent = lo_document ). - lv_value = lo_style_conditional->rule. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = lo_style_conditional->priority. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_priority - value = lv_value ). - - CASE lo_style_conditional->rule. - " Start >> Databar by Albert Lladanosa - WHEN zcl_excel_style_conditional=>c_rule_databar. - - ls_databar = lo_style_conditional->mode_databar. - - CLEAR lt_cfvo. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_databar - parent = lo_document ). - - MOVE ls_databar-cfvo1_value TO ls_cfvo-value. - MOVE ls_databar-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_databar-cfvo2_value TO ls_cfvo-value. - MOVE ls_databar-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_databar-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - " End << Databar by Albert Lladanosa - WHEN zcl_excel_style_conditional=>c_rule_colorscale. - - ls_colorscale = lo_style_conditional->mode_colorscale. - - CLEAR: lt_cfvo, lt_colors. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_colorscale - parent = lo_document ). - - MOVE ls_colorscale-cfvo1_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo2_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo3_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - APPEND ls_colorscale-colorrgb1 TO lt_colors. - APPEND ls_colorscale-colorrgb2 TO lt_colors. - APPEND ls_colorscale-colorrgb3 TO lt_colors. - - LOOP AT lt_cfvo INTO ls_cfvo. - - IF ls_cfvo IS INITIAL. - CONTINUE. - ENDIF. - - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - LOOP AT lt_colors INTO ls_colors. - - IF ls_colors IS INITIAL. - CONTINUE. - ENDIF. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_colors-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - ENDLOOP. - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - WHEN zcl_excel_style_conditional=>c_rule_iconset. - - ls_iconset = lo_style_conditional->mode_iconset. - - CLEAR lt_cfvo. - " iconset node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_iconset - parent = lo_document ). - IF ls_iconset-iconset NE zcl_excel_style_conditional=>c_iconset_3trafficlights. - lv_value = ls_iconset-iconset. - lo_element_3->set_attribute_ns( name = lc_xml_attr_iconset - value = lv_value ). - ENDIF. - - " Set the showValue attribute - lv_value = ls_iconset-showvalue. - lo_element_3->set_attribute_ns( name = lc_xml_attr_showvalue - value = lv_value ). - - CASE ls_iconset-iconset. - WHEN zcl_excel_style_conditional=>c_iconset_3trafficlights2 OR - zcl_excel_style_conditional=>c_iconset_3arrows OR - zcl_excel_style_conditional=>c_iconset_3arrowsgray OR - zcl_excel_style_conditional=>c_iconset_3flags OR - zcl_excel_style_conditional=>c_iconset_3signs OR - zcl_excel_style_conditional=>c_iconset_3symbols OR - zcl_excel_style_conditional=>c_iconset_3symbols2 OR - zcl_excel_style_conditional=>c_iconset_3trafficlights OR - zcl_excel_style_conditional=>c_iconset_3trafficlights2. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_4arrows OR - zcl_excel_style_conditional=>c_iconset_4arrowsgray OR - zcl_excel_style_conditional=>c_iconset_4rating OR - zcl_excel_style_conditional=>c_iconset_4redtoblack OR - zcl_excel_style_conditional=>c_iconset_4trafficlights. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_5arrows OR - zcl_excel_style_conditional=>c_iconset_5arrowsgray OR - zcl_excel_style_conditional=>c_iconset_5quarters OR - zcl_excel_style_conditional=>c_iconset_5rating. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo5_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo5_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN OTHERS. - CLEAR lt_cfvo. - ENDCASE. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - - lo_element_2->append_child( new_child = lo_element_3 ). " iconset node - WHEN zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis = lo_style_conditional->mode_cellis. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_cellis-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - lv_value = ls_cellis-operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_cellis-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - WHEN zcl_excel_style_conditional=>c_rule_expression. - ls_expression = lo_style_conditional->mode_expression. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_expression-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_expression-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - ENDCASE. - - lo_element->append_child( new_child = lo_element_2 ). " cfRule node - - lo_element_root->append_child( new_child = lo_element ). " Conditional formatting node - ENDWHILE. - - IF io_worksheet->get_data_validations_size( ) GT 0. - " dataValidations node - lo_element = lo_document->create_simple_element( name = lc_xml_node_datavalidations - parent = lo_document ). - " Conditional formatting node - lo_iterator = io_worksheet->get_data_validations_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_data_validation ?= lo_iterator->if_object_collection_iterator~get_next( ). - " dataValidation node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_datavalidation - parent = lo_document ). - lv_value = lo_data_validation->type. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - IF NOT lo_data_validation->operator IS INITIAL. - lv_value = lo_data_validation->operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - ENDIF. - IF lo_data_validation->allowblank EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_allowblank - value = lv_value ). - IF lo_data_validation->showinputmessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showinputmessage - value = lv_value ). - IF lo_data_validation->showerrormessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showerrormessage - value = lv_value ). - IF NOT lo_data_validation->errortitle IS INITIAL. - lv_value = lo_data_validation->errortitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_errortitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->error IS INITIAL. - lv_value = lo_data_validation->error. - lo_element_2->set_attribute_ns( name = lc_xml_attr_error - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompttitle IS INITIAL. - lv_value = lo_data_validation->prompttitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompttitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompt IS INITIAL. - lv_value = lo_data_validation->prompt. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompt - value = lv_value ). - ENDIF. - lv_cell_row_s = lo_data_validation->cell_row. - CONDENSE lv_cell_row_s. - CONCATENATE lo_data_validation->cell_column lv_cell_row_s INTO lv_value. - IF lo_data_validation->cell_row_to IS NOT INITIAL. - lv_cell_row_s = lo_data_validation->cell_row_to. - CONDENSE lv_cell_row_s. - CONCATENATE lv_value ':' lo_data_validation->cell_column_to lv_cell_row_s INTO lv_value. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - " formula1 node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula1 - parent = lo_document ). - lv_value = lo_data_validation->formula1. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula1 node - " formula2 node - IF NOT lo_data_validation->formula2 IS INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula2 - parent = lo_document ). - lv_value = lo_data_validation->formula2. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula2 node - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). " dataValidation node - ENDWHILE. - lo_element_root->append_child( new_child = lo_element ). " dataValidations node - ENDIF. - - " Hyperlinks - DATA: lv_hyperlinks_count TYPE i, - lo_link TYPE REF TO zcl_excel_hyperlink. - - lv_hyperlinks_count = io_worksheet->get_hyperlinks_size( ). - IF lv_hyperlinks_count > 0. - lo_element = lo_document->create_simple_element( name = 'hyperlinks' - parent = lo_document ). - - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element_2 = lo_document->create_simple_element( name = 'hyperlink' - parent = lo_element ). - - lv_value = lo_link->get_ref( ). - lo_element_2->set_attribute_ns( name = 'ref' - value = lv_value ). - - IF lo_link->is_internal( ) = abap_true. - lv_value = lo_link->get_url( ). - lo_element_2->set_attribute_ns( name = 'location' - value = lv_value ). - ELSE. - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - - " PrintOptions - IF io_worksheet->print_gridlines = abap_true OR - io_worksheet->sheet_setup->vertical_centered = abap_true OR - io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element = lo_document->create_simple_element( name = 'printOptions' - parent = lo_document ). - - IF io_worksheet->print_gridlines = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_gridlines - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element->set_attribute_ns( name = 'horizontalCentered' - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_centered = abap_true. - lo_element->set_attribute_ns( name = 'verticalCentered' - value = 'true' ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - " pageMargins node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_document ). - - lv_value = io_worksheet->sheet_setup->margin_left. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_left - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_right. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_right - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_top. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_top - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_bottom. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_bottom - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_header. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_header - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_footer. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_footer - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). " pageMargins node - -* pageSetup node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_document ). - - IF io_worksheet->sheet_setup->black_and_white IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_blackandwhite - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->cell_comments IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_cellcomments - value = io_worksheet->sheet_setup->cell_comments ). - ENDIF. - - IF io_worksheet->sheet_setup->copies IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->copies. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_copies - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->draft IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_draft - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->errors IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_errors - value = io_worksheet->sheet_setup->errors ). - ENDIF. - - IF io_worksheet->sheet_setup->first_page_number IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->first_page_number. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_firstpagenumber - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->fit_to_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittoheight - value = lv_value ). - lv_value = io_worksheet->sheet_setup->fit_to_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittowidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->horizontal_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_horizontaldpi - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->orientation IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->orientation. - lo_element->set_attribute_ns( name = lc_xml_attr_orientation - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->page_order IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_pageorder - value = io_worksheet->sheet_setup->page_order ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_height IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperheight - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_size IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_size. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_papersize - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_width IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperwidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->scale IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->scale. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scale - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->use_first_page_num IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_usefirstpagenumber - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->use_printer_defaults IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_useprinterdefaults - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->vertical_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_verticaldpi - value = lv_value ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " pageSetup node - -* { headerFooter necessary? > - IF io_worksheet->sheet_setup->odd_header IS NOT INITIAL - OR io_worksheet->sheet_setup->odd_footer IS NOT INITIAL - OR io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_document ). - - " Different header/footer for odd/even pages? - IF io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_differentoddeven - value = '1' ). - ENDIF. - - " OddHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " OddFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - - lo_element_root->append_child( new_child = lo_element ). " headerFooter - - ENDIF. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_drawing - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute( name = 'r:id' - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -* tables - DATA lv_table_count TYPE i. - - lv_table_count = io_worksheet->get_tables_size( ). - IF lv_table_count > 0. - lo_element = lo_document->create_simple_element( name = 'tableParts' - parent = lo_document ). - lv_value = lv_table_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element_2 = lo_document->create_simple_element( name = 'tablePart' - parent = lo_element ). - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - - ENDIF. - - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - method CREATE_XL_SHEET_RELS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', - lc_xml_val_external TYPE string VALUE 'External', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', - lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_link TYPE REF TO zcl_excel_hyperlink. - - DATA: lv_value TYPE string, - lv_relation_id TYPE i, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_relation_id = 0. - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_link_tp ). - - lv_value = lo_link->get_url( ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_target_mode - value = lc_xml_val_external ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_drawing_tp ). - - lv_index_str = iv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - MOVE me->c_xl_drawings TO lv_value. - REPLACE 'xl' WITH '..' INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_table_tp ). - - lv_value = lo_table->get_name( ). - CONCATENATE '../tables/' lv_value '.xml' INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* IF io_worksheet->get_print_settings( )->is_empty( ) = abap_false. -* ADD 1 TO lv_relation_id. -* lv_value = lv_relation_id. -* CONDENSE lv_value. -* CONCATENATE 'rId' lv_value INTO lv_value. -* -* lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship -* parent = lo_document ). -* lo_element->set_attribute_ns( name = lc_xml_attr_id -* value = lv_value ). -* lo_element->set_attribute_ns( name = lc_xml_attr_type -* value = lc_xml_node_rid_printer_tp ). -* -* lv_index_str = iv_printer_index. -* CONDENSE lv_index_str NO-GAPS. -* MOVE me->c_xl_printersettings TO lv_value. -* REPLACE 'xl' WITH '..' INTO lv_value. -* REPLACE '#' WITH lv_index_str INTO lv_value. -* lo_element->set_attribute_ns( name = lc_xml_attr_target -* value = lv_value ). -* -* lo_element_root->append_child( new_child = lo_element ). -* ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - METHOD create_xl_styles. - - -** Constant node name - CONSTANTS: lc_xml_node_stylesheet TYPE string VALUE 'styleSheet', - " font - lc_xml_node_fonts TYPE string VALUE 'fonts', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - " fill - lc_xml_node_fills TYPE string VALUE 'fills', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - lc_xml_node_gradientfill TYPE string VALUE 'gradientFill', - lc_xml_node_stop TYPE string VALUE 'stop', - " borders - lc_xml_node_borders TYPE string VALUE 'borders', - lc_xml_node_border TYPE string VALUE 'border', - lc_xml_node_left TYPE string VALUE 'left', - lc_xml_node_right TYPE string VALUE 'right', - lc_xml_node_top TYPE string VALUE 'top', - lc_xml_node_bottom TYPE string VALUE 'bottom', - lc_xml_node_diagonal TYPE string VALUE 'diagonal', - " numfmt - lc_xml_node_numfmts TYPE string VALUE 'numFmts', - lc_xml_node_numfmt TYPE string VALUE 'numFmt', - " Styles - lc_xml_node_cellstylexfs TYPE string VALUE 'cellStyleXfs', - lc_xml_node_xf TYPE string VALUE 'xf', - lc_xml_node_cellxfs TYPE string VALUE 'cellXfs', - lc_xml_node_cellstyles TYPE string VALUE 'cellStyles', - lc_xml_node_cellstyle TYPE string VALUE 'cellStyle', - lc_xml_node_dxfs TYPE string VALUE 'dxfs', - lc_xml_node_dxf TYPE string VALUE 'dxf', - lc_xml_node_tablestyles TYPE string VALUE 'tableStyles', - " Colors - lc_xml_node_colors TYPE string VALUE 'colors', - lc_xml_node_indexedcolors TYPE string VALUE 'indexedColors', - lc_xml_node_rgbcolor TYPE string VALUE 'rgbColor', - lc_xml_node_mrucolors TYPE string VALUE 'mruColors', - " Alignment - lc_xml_node_alignment TYPE string VALUE 'alignment', - " Protection - lc_xml_node_protection TYPE string VALUE 'protection', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_position TYPE string VALUE 'position', - lc_xml_attr_degree TYPE string VALUE 'degree', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_attr_numfmtid TYPE string VALUE 'numFmtId', - lc_xml_attr_fontid TYPE string VALUE 'fontId', - lc_xml_attr_fillid TYPE string VALUE 'fillId', - lc_xml_attr_borderid TYPE string VALUE 'borderId', - lc_xml_attr_xfid TYPE string VALUE 'xfId', - lc_xml_attr_applynumberformat TYPE string VALUE 'applyNumberFormat', - lc_xml_attr_applyprotection TYPE string VALUE 'applyProtection', - lc_xml_attr_applyfont TYPE string VALUE 'applyFont', - lc_xml_attr_applyfill TYPE string VALUE 'applyFill', - lc_xml_attr_applyborder TYPE string VALUE 'applyBorder', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_builtinid TYPE string VALUE 'builtinId', - lc_xml_attr_defaulttablestyle TYPE string VALUE 'defaultTableStyle', - lc_xml_attr_defaultpivotstyle TYPE string VALUE 'defaultPivotStyle', - lc_xml_attr_applyalignment TYPE string VALUE 'applyAlignment', - lc_xml_attr_horizontal TYPE string VALUE 'horizontal', - lc_xml_attr_formatcode TYPE string VALUE 'formatCode', - lc_xml_attr_vertical TYPE string VALUE 'vertical', - lc_xml_attr_wraptext TYPE string VALUE 'wrapText', - lc_xml_attr_textrotation TYPE string VALUE 'textRotation', - lc_xml_attr_shrinktofit TYPE string VALUE 'shrinkToFit', - lc_xml_attr_indent TYPE string VALUE 'indent', - lc_xml_attr_locked TYPE string VALUE 'locked', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_diagonalup TYPE string VALUE 'diagonalUp', - lc_xml_attr_diagonaldown TYPE string VALUE 'diagonalDown', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_fonts TYPE REF TO if_ixml_element, - lo_element_font TYPE REF TO if_ixml_element, - lo_element_fills TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_borders TYPE REF TO if_ixml_element, - lo_element_border TYPE REF TO if_ixml_element, - lo_element_numfmts TYPE REF TO if_ixml_element, - lo_element_numfmt TYPE REF TO if_ixml_element, - lo_element_cellxfs TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator2 TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style TYPE REF TO zcl_excel_style. - - - DATA: lt_fonts TYPE zexcel_t_style_font, - ls_font TYPE zexcel_s_style_font, - lt_fills TYPE zexcel_t_style_fill, - ls_fill TYPE zexcel_s_style_fill, - lt_borders TYPE zexcel_t_style_border, - ls_border TYPE zexcel_s_style_border, - lt_numfmts TYPE zexcel_t_style_numfmt, - ls_numfmt TYPE zexcel_s_style_numfmt, - lt_protections TYPE zexcel_t_style_protection, - ls_protection TYPE zexcel_s_style_protection, - lt_alignments TYPE zexcel_t_style_alignment, - ls_alignment TYPE zexcel_s_style_alignment, - lt_cellxfs TYPE zexcel_t_cellxfs, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_styles_mapping TYPE zexcel_s_styles_mapping, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - lt_colors TYPE zexcel_t_style_color_argb, - ls_color LIKE LINE OF lt_colors. - - DATA: lv_value TYPE string, - lv_dfx_count TYPE i, - lv_fonts_count TYPE i, - lv_fills_count TYPE i, - lv_borders_count TYPE i, - lv_cellxfs_count TYPE i, - lv_index TYPE i, - lv_align_flag TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_stylesheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lo_element_fonts = lo_document->create_simple_element( name = lc_xml_node_fonts - parent = lo_document ). - - lo_element_fills = lo_document->create_simple_element( name = lc_xml_node_fills - parent = lo_document ). - - lo_element_borders = lo_document->create_simple_element( name = lc_xml_node_borders - parent = lo_document ). - - lo_element_cellxfs = lo_document->create_simple_element( name = lc_xml_node_cellxfs - parent = lo_document ). - - lo_element_numfmts = lo_document->create_simple_element( name = lc_xml_node_numfmts - parent = lo_document ). - - -* Compress styles - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_font = lo_style->font->get_structure( ). - ls_fill = lo_style->fill->get_structure( ). - ls_border = lo_style->borders->get_structure( ). - ls_alignment = lo_style->alignment->get_structure( ). - ls_protection = lo_style->protection->get_structure( ). - ls_numfmt = lo_style->number_format->get_structure( ). - - CLEAR ls_cellxfs. - - -* Compress fonts - READ TABLE lt_fonts FROM ls_font TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fontid = sy-tabix. - ELSE. - APPEND ls_font TO lt_fonts. - DESCRIBE TABLE lt_fonts LINES ls_cellxfs-fontid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fontid. - -* Compress alignment - READ TABLE lt_alignments FROM ls_alignment TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-alignmentid = sy-tabix. - ELSE. - APPEND ls_alignment TO lt_alignments. - DESCRIBE TABLE lt_alignments LINES ls_cellxfs-alignmentid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - -* Compress fills - READ TABLE lt_fills FROM ls_fill TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fillid = sy-tabix. - ELSE. - APPEND ls_fill TO lt_fills. - DESCRIBE TABLE lt_fills LINES ls_cellxfs-fillid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fillid. - -* Compress borders - READ TABLE lt_borders FROM ls_border TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-borderid = sy-tabix. - ELSE. - APPEND ls_border TO lt_borders. - DESCRIBE TABLE lt_borders LINES ls_cellxfs-borderid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-borderid. - -* Compress protection - IF ls_protection-locked EQ c_on AND ls_protection-hidden EQ c_off. - ls_cellxfs-applyprotection = 0. - ELSE. - READ TABLE lt_protections FROM ls_protection TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-protectionid = sy-tabix. - ELSE. - APPEND ls_protection TO lt_protections. - DESCRIBE TABLE lt_protections LINES ls_cellxfs-protectionid. - ENDIF. - ls_cellxfs-applyprotection = 1. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - -* Compress number formats - - "----------- - IF ls_numfmt-numfmt NE zcl_excel_style_number_format=>c_format_date_std." and ls_numfmt-NUMFMT ne 'STD_NDEC'. " ALE Changes on going - "--- - IF ls_numfmt IS NOT INITIAL. - - READ TABLE lt_numfmts FROM ls_numfmt TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-numfmtid = sy-tabix. - ELSE. - APPEND ls_numfmt TO lt_numfmts. - DESCRIBE TABLE lt_numfmts LINES ls_cellxfs-numfmtid. - ENDIF. - ADD zcl_excel_common=>c_excel_numfmt_offset TO ls_cellxfs-numfmtid. " Add OXML offset for custom styles - ls_cellxfs-applynumberformat = 1. - ELSE. - ls_cellxfs-applynumberformat = 0. - ENDIF. - "----------- " ALE changes on going - ELSE. - ls_cellxfs-applynumberformat = 1. - IF ls_numfmt-numfmt EQ zcl_excel_style_number_format=>c_format_date_std. - ls_cellxfs-numfmtid = 14. -* elseif ls_numfmt-NUMFMT eq 'STD_NDEC'. -* ls_cellxfs-numfmtid = 2. - ENDIF. - ENDIF. - "--- - - IF ls_cellxfs-fontid NE 0. - ls_cellxfs-applyfont = 1. - ELSE. - ls_cellxfs-applyfont = 0. - ENDIF. - IF ls_cellxfs-alignmentid NE 0. - ls_cellxfs-applyalignment = 1. - ELSE. - ls_cellxfs-applyalignment = 0. - ENDIF. - IF ls_cellxfs-fillid NE 0. - ls_cellxfs-applyfill = 1. - ELSE. - ls_cellxfs-applyfill = 0. - ENDIF. - IF ls_cellxfs-borderid NE 0. - ls_cellxfs-applyborder = 1. - ELSE. - ls_cellxfs-applyborder = 0. - ENDIF. - -* Remap styles - READ TABLE lt_cellxfs FROM ls_cellxfs TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_styles_mapping-style = sy-tabix. - ELSE. - APPEND ls_cellxfs TO lt_cellxfs. - DESCRIBE TABLE lt_cellxfs LINES ls_styles_mapping-style. - ENDIF. - SUBTRACT 1 FROM ls_styles_mapping-style. - ls_styles_mapping-guid = lo_style->get_guid( ). - APPEND ls_styles_mapping TO me->styles_mapping. - ENDWHILE. - - " create numfmt elements - LOOP AT lt_numfmts INTO ls_numfmt. - lo_element_numfmt = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_document ). - lv_value = sy-tabix + zcl_excel_common=>c_excel_numfmt_offset. - CONDENSE lv_value. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - lv_value = ls_numfmt-numfmt. -* REPLACE ALL OCCURRENCES OF '.' IN lv_value WITH '\.'. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_formatcode - value = lv_value ). - lo_element_numfmts->append_child( new_child = lo_element_numfmt ). - ENDLOOP. - - " create font elements - LOOP AT lt_fonts INTO ls_font. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz - parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). - - "name - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name - parent = lo_document ). - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family - parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "scheme - IF ls_font-scheme IS NOT INITIAL. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - lo_element_fonts->append_child( new_child = lo_element_font ). - ENDLOOP. - - " create fill elements - LOOP AT lt_fills INTO ls_fill. - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - lo_element_fill->append_child( new_child = lo_sub_element )."pattern - lo_element_fills->append_child( new_child = lo_element_fill ). - ENDLOOP. - - " create border elements - LOOP AT lt_borders INTO ls_border. - lo_element_border = lo_document->create_simple_element( name = lc_xml_node_border - parent = lo_document ). - - IF ls_border-diagonalup IS NOT INITIAL. - lv_value = ls_border-diagonalup. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonalup - value = lv_value ). - ENDIF. - - IF ls_border-diagonaldown IS NOT INITIAL. - lv_value = ls_border-diagonaldown. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonaldown - value = lv_value ). - ENDIF. - - "left - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_left - parent = lo_document ). - IF ls_border-left_style IS NOT INITIAL. - lv_value = ls_border-left_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-left_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "right - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right - parent = lo_document ). - IF ls_border-right_style IS NOT INITIAL. - lv_value = ls_border-right_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-right_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "top - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top - parent = lo_document ). - IF ls_border-top_style IS NOT INITIAL. - lv_value = ls_border-top_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-top_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "bottom - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom - parent = lo_document ). - IF ls_border-bottom_style IS NOT INITIAL. - lv_value = ls_border-bottom_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-bottom_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "diagonal - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal - parent = lo_document ). - IF ls_border-diagonal_style IS NOT INITIAL. - lv_value = ls_border-diagonal_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-diagonal_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - lo_element_borders->append_child( new_child = lo_element_border ). - ENDLOOP. - - " update attribute "count" - DESCRIBE TABLE lt_fonts LINES lv_fonts_count. - MOVE lv_fonts_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fonts->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_fills LINES lv_fills_count. - MOVE lv_fills_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fills->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_borders LINES lv_borders_count. - MOVE lv_borders_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_borders->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_cellxfs LINES lv_cellxfs_count. - MOVE lv_cellxfs_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_cellxfs->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - - " Append to root node - lo_element_root->append_child( new_child = lo_element_numfmts ). - lo_element_root->append_child( new_child = lo_element_fonts ). - lo_element_root->append_child( new_child = lo_element_fills ). - lo_element_root->append_child( new_child = lo_element_borders ). - - " cellstylexfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fontid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fillid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT lt_cellxfs INTO ls_cellxfs. - lo_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - MOVE ls_cellxfs-numfmtid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - MOVE ls_cellxfs-fontid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fontid - value = lv_value ). - MOVE ls_cellxfs-fillid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fillid - value = lv_value ). - MOVE ls_cellxfs-borderid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_borderid - value = lv_value ). - MOVE ls_cellxfs-xfid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_xfid - value = lv_value ). - IF ls_cellxfs-applynumberformat EQ 1. - MOVE ls_cellxfs-applynumberformat TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applynumberformat - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfont EQ 1. - MOVE ls_cellxfs-applyfont TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfont - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfill EQ 1. - MOVE ls_cellxfs-applyfill TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfill - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyborder EQ 1. - MOVE ls_cellxfs-applyborder TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyborder - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyalignment EQ 1. " depends on each style not for all the sheet - MOVE ls_cellxfs-applyalignment TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyalignment - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_alignment - parent = lo_document ). - ADD 1 TO ls_cellxfs-alignmentid. "Table index starts from 1 - READ TABLE lt_alignments INTO ls_alignment INDEX ls_cellxfs-alignmentid. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - IF ls_alignment-horizontal IS NOT INITIAL. - MOVE ls_alignment-horizontal TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_horizontal - value = lv_value ). - ENDIF. - IF ls_alignment-vertical IS NOT INITIAL. - MOVE ls_alignment-vertical TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_vertical - value = lv_value ). - ENDIF. - IF ls_alignment-wraptext EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_wraptext - value = c_on ). - ENDIF. - IF ls_alignment-textrotation IS NOT INITIAL. - MOVE ls_alignment-textrotation TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_textrotation - value = lv_value ). - ENDIF. - IF ls_alignment-shrinktofit EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_shrinktofit - value = c_on ). - ENDIF. - IF ls_alignment-indent IS NOT INITIAL. - MOVE ls_alignment-indent TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indent - value = lv_value ). - ENDIF. - - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_cellxfs-applyprotection EQ 1. - MOVE ls_cellxfs-applyprotection TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_applyprotection - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_protection - parent = lo_document ). - ADD 1 TO ls_cellxfs-protectionid. "Table index starts from 1 - READ TABLE lt_protections INTO ls_protection INDEX ls_cellxfs-protectionid. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - IF ls_protection-locked IS NOT INITIAL. - MOVE ls_protection-locked TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_locked - value = lv_value ). - ENDIF. - IF ls_protection-hidden IS NOT INITIAL. - MOVE ls_protection-hidden TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - lo_element_cellxfs->append_child( new_child = lo_element ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element_cellxfs ). - - " cellStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_cellstyle - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = 'Normal' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xfid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - " dxfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs - parent = lo_document ). - - lo_iterator = me->excel->get_worksheets_iterator( ). - " get sheets - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - " Conditional formatting styles into exch sheet - lo_iterator2 = lo_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator2->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator2->if_object_collection_iterator~get_next( ). - CASE lo_style_conditional->rule. - WHEN zcl_excel_style_conditional=>c_rule_cellis. - "if style defined - ls_cellis = lo_style_conditional->mode_cellis. - IF ls_cellis-cell_style IS INITIAL. - CONTINUE. - ENDIF. - READ TABLE me->styles_mapping INTO ls_styles_mapping WITH KEY guid = ls_cellis-cell_style. - ADD 1 TO ls_styles_mapping-style. " the numbering starts from 0 - READ TABLE lt_cellxfs INTO ls_cellxfs INDEX ls_styles_mapping-style. - ADD 1 TO ls_cellxfs-fillid. " the numbering starts from 0 - - " Style already mapped? - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY style = ls_styles_mapping-style. - IF sy-subrc EQ 0. - ls_style_cond_mapping-guid = ls_cellis-cell_style. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ELSE. - ls_style_cond_mapping-guid = ls_cellis-cell_style. - ls_style_cond_mapping-style = ls_styles_mapping-style. - ls_style_cond_mapping-dxf = lv_dfx_count. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ADD 1 TO lv_dfx_count. - - " dxf node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_dxf - parent = lo_document ). - - "Conditional formatting font style correction by Alessandro Iannacci START - lv_index = ls_cellxfs-fontid + 1. - READ TABLE lt_fonts INTO ls_font INDEX lv_index. - IF ls_font IS NOT INITIAL. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). - lo_sub_element->append_child( new_child = lo_element_font ). - ENDIF. - "---Conditional formatting font style correction by Alessandro Iannacci END - - - READ TABLE lt_fills INTO ls_fill INDEX ls_cellxfs-fillid. - IF ls_fill IS NOT INITIAL. - " fill properties - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - lo_element_fill->append_child( new_child = lo_sub_element_2 ). "pattern - - lo_sub_element->append_child( new_child = lo_element_fill ). - ENDIF. - ENDIF. - - lo_element->append_child( new_child = lo_sub_element ). - WHEN zcl_excel_style_conditional=>c_rule_expression. - "if style defined - ls_expression = lo_style_conditional->mode_expression. - IF ls_expression-cell_style IS INITIAL. - CONTINUE. - ENDIF. - READ TABLE me->styles_mapping INTO ls_styles_mapping WITH KEY guid = ls_expression-cell_style. - ADD 1 TO ls_styles_mapping-style. " the numbering starts from 0 - READ TABLE lt_cellxfs INTO ls_cellxfs INDEX ls_styles_mapping-style. - ADD 1 TO ls_cellxfs-fillid. " the numbering starts from 0 - - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY style = ls_styles_mapping-style. - IF sy-subrc EQ 0. - ls_style_cond_mapping-guid = ls_expression-cell_style. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ELSE. - ls_style_cond_mapping-guid = ls_expression-cell_style. - ls_style_cond_mapping-style = ls_styles_mapping-style. - ls_style_cond_mapping-dxf = lv_dfx_count. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ADD 1 TO lv_dfx_count. - - " dxf node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_dxf - parent = lo_document ). - - READ TABLE lt_fills INTO ls_fill INDEX ls_cellxfs-fillid. - IF ls_fill IS NOT INITIAL. - " fill properties - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - lo_element_fill->append_child( new_child = lo_sub_element_2 ). "pattern - - lo_sub_element->append_child( new_child = lo_element_fill ). - ENDIF. - ENDIF. - - lo_element->append_child( new_child = lo_sub_element ). - WHEN OTHERS. - CONTINUE. - ENDCASE. - ENDWHILE. - ENDWHILE. - - lv_value = lv_dfx_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " tableStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaulttablestyle - value = zcl_excel_table=>builtinstyle_medium9 ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle - value = zcl_excel_table=>builtinstyle_pivot_light16 ). - lo_element_root->append_child( new_child = lo_element ). - - "write legacy color palette in case any indexed color was changed - IF excel->legacy_palette->is_modified( ) = abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_colors - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_indexedcolors - parent = lo_document ). - lo_element->append_child( new_child = lo_sub_element ). - - lt_colors = excel->legacy_palette->get_colors( ). - LOOP AT lt_colors INTO ls_color. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_rgbcolor - parent = lo_document ). - lv_value = ls_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - method CREATE_XL_STYLES_COLOR_NODE. - DATA: lo_sub_element TYPE REF TO if_ixml_element, - lv_value TYPE string. - - CONSTANTS: lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint'. - -"add node only if at least one attribute is set - CHECK is_color-rgb IS NOT INITIAL OR - is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set OR - is_color-theme <> zcl_excel_style_color=>c_theme_not_set OR - is_color-tint IS NOT INITIAL. - - lo_sub_element = io_document->create_simple_element( - name = iv_color_elem_name - parent = io_parent ). - - IF is_color-rgb IS NOT INITIAL. - lv_value = is_color-rgb. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - ENDIF. - - IF is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-indexed ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_indexed - value = lv_value ). - ENDIF. - - IF is_color-theme <> zcl_excel_style_color=>c_theme_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-theme ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_theme - value = lv_value ). - ENDIF. - - IF is_color-tint IS NOT INITIAL. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-tint ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_tint - value = lv_value ). - ENDIF. - - io_parent->append_child( new_child = lo_sub_element ). - endmethod. - - - - - METHOD create_xl_table. - - DATA: lc_xml_node_table TYPE string VALUE 'table', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_display_name TYPE string VALUE 'displayName', - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_totals TYPE string VALUE 'totalsRowShown', - " Node namespace - lc_xml_node_table_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - - lv_table_name TYPE string, - lv_id TYPE i, - lv_match TYPE i, - lv_syindex TYPE char3, - lv_ref TYPE string, - lv_value TYPE string, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_num_columns TYPE i, - ls_fieldcat TYPE zexcel_s_fieldcatalog. - - -********************************************************************** -* STEP 1: Create xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node table - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_table - parent = lo_document ). - - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_table_ns ). - - lv_id = io_table->get_id( ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_id ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - FIND ALL OCCURRENCES OF REGEX '[^_a-zA-Z0-9]' IN io_table->settings-table_name IGNORING CASE MATCH COUNT lv_match. - IF io_table->settings-table_name IS NOT INITIAL AND lv_match EQ 0. - lv_table_name = io_table->settings-table_name. - ELSE. - lv_table_name = io_table->get_name( ). - ENDIF. - lo_element_root->set_attribute_ns( name = lc_xml_attr_name - value = lv_table_name ). - - lo_element_root->set_attribute_ns( name = lc_xml_attr_display_name - value = lv_table_name ). - - lv_ref = io_table->get_reference( ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - IF io_table->has_totals( ) = abap_true. - lo_element_root->set_attribute_ns( name = 'totalsRowCount' - value = '1' ). - ELSE. - lo_element_root->set_attribute_ns( name = lc_xml_attr_totals - value = '0' ). - ENDIF. - -********************************************************************** -* STEP 4: Create subnodes - - " autoFilter - IF io_table->settings-nofilters EQ abap_false. - lo_element = lo_document->create_simple_element( name = 'autoFilter' - parent = lo_document ). - - lv_ref = io_table->get_reference( ip_include_totals_row = abap_false ). - lo_element->set_attribute_ns( name = 'ref' - value = lv_ref ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - "columns - lo_element = lo_document->create_simple_element( name = 'tableColumns' - parent = lo_document ). - -* lo_columns = io_table->get_columns( ). - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - ADD 1 TO lv_num_columns. - ENDLOOP. - - lv_value = lv_num_columns. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - lo_element2 = lo_document->create_simple_element_ns( name = 'tableColumn' - parent = lo_element ). - - lv_value = ls_fieldcat-position. - SHIFT lv_value LEFT DELETING LEADING '0'. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lv_value = ls_fieldcat-scrtext_l. - lo_element2->set_attribute_ns( name = 'name' - value = lv_value ). - - IF ls_fieldcat-totals_function IS NOT INITIAL. - lo_element2->set_attribute_ns( name = 'totalsRowFunction' - value = ls_fieldcat-totals_function ). - ENDIF. - - lo_element->append_child( new_child = lo_element2 ). - ENDLOOP. - - - lo_element = lo_document->create_simple_element( name = 'tableStyleInfo' - parent = lo_element_root ). - - lo_element->set_attribute_ns( name = 'name' - value = io_table->settings-table_style ). - - lo_element->set_attribute_ns( name = 'showFirstColumn' - value = '0' ). - - lo_element->set_attribute_ns( name = 'showLastColumn' - value = '0' ). - - IF io_table->settings-show_row_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showRowStripes' - value = lv_value ). - - IF io_table->settings-show_column_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showColumnStripes' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - method CREATE_XL_THEME. - - -* @TODO * - - DATA: lv_xl_theme TYPE string, - lv_xl_theme_01 TYPE string, - lv_xl_theme_02 TYPE string, - lv_xl_theme_03 TYPE string, - lv_xl_theme_04 TYPE string, - lv_xl_theme_05 TYPE string, - lv_xl_theme_06 TYPE string, - lv_xl_theme_07 TYPE string, - lv_xl_theme_08 TYPE string, - lv_xl_theme_09 TYPE string, - lv_xl_theme_10 TYPE string, - lv_xl_theme_11 TYPE string, - lv_xl_theme_12 TYPE string, - lv_xl_theme_13 TYPE string, - lv_xl_theme_14 TYPE string, - lv_xl_theme_15 TYPE string, - lv_xl_theme_16 TYPE string, - lv_xl_theme_17 TYPE string, - lv_xl_theme_18 TYPE string, - lv_xl_theme_19 TYPE string, - lv_xl_theme_20 TYPE string, - lv_xl_theme_21 TYPE string, - lv_xl_theme_22 TYPE string, - lv_xl_theme_23 TYPE string, - lv_xl_theme_24 TYPE string, - lv_xl_theme_25 TYPE string, - lv_xl_theme_26 TYPE string, - lv_xl_theme_27 TYPE string, - lv_xl_theme_28 TYPE string, - lv_xl_theme_29 TYPE string, - lv_xl_theme_30 TYPE string, - lv_xl_theme_31 TYPE string, - lv_xl_theme_32 TYPE string. - - lv_xl_theme_01 = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'. - lv_xl_theme_02 = '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" '. - lv_xl_theme_03 = 'lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr '. - lv_xl_theme_04 = 'val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink>'. - lv_xl_theme_05 = '<a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_06 = '<a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" '. - lv_xl_theme_07 = 'typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font '. - lv_xl_theme_08 = 'script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" '. - lv_xl_theme_09 = 'typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_10 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_11 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_12 = '<a:font script="Arab" typeface="Arial"/><a:font script="Hebr" '. - lv_xl_theme_13 = 'typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font '. - lv_xl_theme_14 = 'script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font '. - lv_xl_theme_15 = 'script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_16 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_17 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_18 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod '. - lv_xl_theme_19 = 'val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1">'. - lv_xl_theme_20 = '<a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs '. - lv_xl_theme_21 = 'pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" '. - lv_xl_theme_22 = 'algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr '. - lv_xl_theme_23 = 'val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst>'. - lv_xl_theme_24 = '<a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst>'. - lv_xl_theme_25 = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" '. - lv_xl_theme_26 = 'dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig '. - lv_xl_theme_27 = 'rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_28 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade '. - lv_xl_theme_29 = 'val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" '. - lv_xl_theme_30 = 't="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr '. - lv_xl_theme_31 = 'val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme>'. - lv_xl_theme_32 = '</a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>'. - - - CONCATENATE lv_xl_theme_01 lv_xl_theme_02 lv_xl_theme_03 lv_xl_theme_04 lv_xl_theme_05 lv_xl_theme_06 lv_xl_theme_07 lv_xl_theme_08 lv_xl_theme_09 lv_xl_theme_10 lv_xl_theme_11 lv_xl_theme_12 lv_xl_theme_13 lv_xl_theme_14 lv_xl_theme_15 - lv_xl_theme_16 lv_xl_theme_17 lv_xl_theme_18 lv_xl_theme_19 lv_xl_theme_20 lv_xl_theme_21 lv_xl_theme_22 lv_xl_theme_23 lv_xl_theme_24 lv_xl_theme_25 lv_xl_theme_26 lv_xl_theme_27 lv_xl_theme_28 lv_xl_theme_29 lv_xl_theme_30 - lv_xl_theme_31 lv_xl_theme_32 - INTO lv_xl_theme SEPARATED BY space. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - text = lv_xl_theme - IMPORTING - buffer = ep_content. - - - endmethod. - - - - method CREATE_XL_WORKBOOK. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-01 -* changes: correction of pointer to localSheetId -*--------------------------------------------------------------------* - -** Constant node name - DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', - lc_xml_node_fileversion TYPE string VALUE 'fileVersion', - lc_xml_node_workbookpr TYPE string VALUE 'workbookPr', - lc_xml_node_bookviews TYPE string VALUE 'bookViews', - lc_xml_node_workbookview TYPE string VALUE 'workbookView', - lc_xml_node_sheets TYPE string VALUE 'sheets', - lc_xml_node_sheet TYPE string VALUE 'sheet', - lc_xml_node_calcpr TYPE string VALUE 'calcPr', - lc_xml_node_workbookprotection TYPE string VALUE 'workbookProtection', - lc_xml_node_definednames TYPE string VALUE 'definedNames', - lc_xml_node_definedname TYPE string VALUE 'definedName', - " Node attributes - lc_xml_attr_appname TYPE string VALUE 'appName', - lc_xml_attr_lastedited TYPE string VALUE 'lastEdited', - lc_xml_attr_lowestedited TYPE string VALUE 'lowestEdited', - lc_xml_attr_rupbuild TYPE string VALUE 'rupBuild', - lc_xml_attr_themeversion TYPE string VALUE 'defaultThemeVersion', - lc_xml_attr_xwindow TYPE string VALUE 'xWindow', - lc_xml_attr_ywindow TYPE string VALUE 'yWindow', - lc_xml_attr_windowwidth TYPE string VALUE 'windowWidth', - lc_xml_attr_windowheight TYPE string VALUE 'windowHeight', - lc_xml_attr_activetab TYPE string VALUE 'activeTab', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_sheetid TYPE string VALUE 'sheetId', - lc_xml_attr_state TYPE string VALUE 'state', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_calcid TYPE string VALUE 'calcId', - lc_xml_attr_lockrevision TYPE string VALUE 'lockRevision', - lc_xml_attr_lockstructure TYPE string VALUE 'lockStructure', - lc_xml_attr_lockwindows TYPE string VALUE 'lockWindows', - lc_xml_attr_revisionspassword TYPE string VALUE 'revisionsPassword', - lc_xml_attr_workbookpassword TYPE string VALUE 'workbookPassword', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_localsheetid TYPE string VALUE 'localSheetId', - " Node namespace - lc_r_ns TYPE string VALUE 'r', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_range TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator_range TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - - DATA: lv_xml_node_ridx_id TYPE string, - lv_value TYPE string, - lv_syindex TYPE string, - l_guid TYPE uuid, - lv_active_sheet TYPE zexcel_active_worksheet. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_workbook - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnode - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_fileversion - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_appname - value = 'xl' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lastedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lowestedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild - value = '4506' ). - lo_element_root->append_child( new_child = lo_element ). - - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_themeversion - value = '124226' ). - lo_element_root->append_child( new_child = lo_element ). - - " workbookProtection node - IF me->excel->zif_excel_book_protection~protected EQ abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookprotection - parent = lo_document ). - MOVE me->excel->zif_excel_book_protection~workbookpassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_workbookpassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~revisionspassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_revisionspassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~lockrevision TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockrevision - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockstructure TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockstructure - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockwindows TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockwindows - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " bookviews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews - parent = lo_document ). - " bookview node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_workbookview - parent = lo_document ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xwindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_ywindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowwidth - value = '19035' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight - value = '8445' ). - " Set Active Sheet - lv_active_sheet = excel->get_active_sheet_index( ). - IF lv_active_sheet > 1. - lv_active_sheet = lv_active_sheet - 1. - lv_value = lv_active_sheet. - CONDENSE lv_value. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_activetab - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element )." bookview node - lo_element_root->append_child( new_child = lo_element )." bookviews node - - " sheets node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets - parent = lo_document ). - lo_iterator = excel->get_worksheets_iterator( ). - - " ranges node - lo_element_range = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 + - parent = lo_document ). " issue 163 + - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " sheet node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index. " question by Stefan Schmöcker 2012-12-02: sy-index seems to do the job - but is it proven to work or purely coincedence - lv_value = lo_worksheet->get_title( ). - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_sheetid - value = lv_syindex ). - IF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_hidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'hidden' ). - ELSEIF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_veryhidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'veryHidden' ). - ENDIF. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_id - prefix = lc_r_ns - value = lv_xml_node_ridx_id ). - lo_element->append_child( new_child = lo_sub_element ). " sheet node - - " issue 163 >>> - lo_iterator_range = lo_worksheet->get_ranges_iterator( ). - -*--------------------------------------------------------------------* -* Defined names sheetlocal: Ranges, Repeat rows and columns -*--------------------------------------------------------------------* - WHILE lo_iterator_range->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator_range->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - -* lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid "del #235 Repeat rows/cols - EXCEL starts couting from zero -* value = lv_xml_node_ridx_id ). "del #235 Repeat rows/cols - and needs absolute referencing to localSheetId - lv_value = lv_syindex - 1. "ins #235 Repeat rows/cols - CONDENSE lv_value NO-GAPS. "ins #235 Repeat rows/cols - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - " issue 163 <<< - - ENDWHILE. - lo_element_root->append_child( new_child = lo_element )." sheets node - - -*--------------------------------------------------------------------* -* Defined names workbookgolbal: Ranges -*--------------------------------------------------------------------* -* " ranges node -* lo_element = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 - -* parent = lo_document ). " issue 163 - - lo_iterator = excel->get_ranges_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - -*--------------------------------------------------------------------* -* Defined names - Autofilters ( also sheetlocal ) -*--------------------------------------------------------------------* - lo_autofilters = excel->get_autofilters_reference( ). - IF lo_autofilters->is_empty( ) = abap_false. - lo_iterator = excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index - 1 . - l_guid = lo_worksheet->get_guid( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = l_guid ) . - IF lo_autofilter IS BOUND. - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lv_value = lo_autofilters->c_autofilter. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lv_syindex. - CONDENSE lv_value NO-GAPS. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - lv_value = '1'. " Always hidden - lo_sub_element->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - lv_value = lo_autofilter->get_filter_reference( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - ENDIF. - - ENDWHILE. - ENDIF. - lo_element_root->append_child( new_child = lo_element_range ). " ranges node - - - " calcPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_calcid - value = '125725' ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method FLAG2BOOL. - - - IF ip_flag EQ abap_true. - ep_boolean = 'true'. - ELSE. - ep_boolean = 'false'. - ENDIF. - endmethod. - - - - - method GET_SHARED_STRING_INDEX. - - - DATA ls_shared_string TYPE zexcel_s_shared_string. - - READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH. - ep_index = ls_shared_string-string_no. - - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - ep_file = me->create( ). - endmethod. - - - - method CREATE. - -* .csv format with ; delimiter - - ep_excel = me->CREATE_CSV( ). - - endmethod. - - - - method CREATE_CSV. - - TYPES: BEGIN OF lty_format, - cmpname TYPE SEOCMPNAME, - attvalue TYPE SEOVALUE, - END OF lty_format. - DATA: lt_format TYPE STANDARD TABLE OF lty_format, - ls_format LIKE LINE OF lt_format, - lv_date TYPE DATS, - lv_tmp TYPE string, - lv_time TYPE CHAR08. - - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - lv_row TYPE sytabix, - lv_col TYPE sytabix, - lv_string TYPE string, - lc_value TYPE string, - lv_attrname TYPE SEOCMPNAME. - - DATA: ls_numfmt TYPE zexcel_s_style_numfmt, - lo_style TYPE REF TO zcl_excel_style. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - -* --- Retrieve supported cell format - REFRESH lt_format. - SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_format - FROM seocompodf - WHERE clsname = 'ZCL_EXCEL_STYLE_NUMBER_FORMAT' - AND typtype = 1 - AND type = 'ZEXCEL_NUMBER_FORMAT'. - -* --- Retrieve SAP date format - CLEAR ls_format. - SELECT ddtext INTO ls_format-attvalue FROM dd07t WHERE domname = 'XUDATFM' - AND ddlanguage = sy-langu. - ls_format-cmpname = 'DATE'. - CONDENSE ls_format-attvalue. - CONCATENATE '''' ls_format-attvalue '''' INTO ls_format-attvalue. - APPEND ls_format TO lt_format. - ENDSELECT. - - - LOOP AT lt_format INTO ls_format. - TRANSLATE ls_format-attvalue TO UPPER CASE. - MODIFY lt_format FROM ls_format. - ENDLOOP. - - -* STEP 1: Collect strings from the first worksheet - lo_iterator = excel->get_worksheets_iterator( ). - data: current_worksheet_title type ZEXCEL_SHEET_TITLE. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - IF worksheet_name IS NOT INITIAL. - current_worksheet_title = lo_worksheet->get_title( ). - CHECK current_worksheet_title = worksheet_name. - ELSE. - IF worksheet_index IS INITIAL. - worksheet_index = 1. - ENDIF. - CHECK worksheet_index = sy-index. - ENDIF. - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - EXIT. " Take first worksheet only - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - SORT lt_cell_data BY cell_row - cell_column. - lv_row = 1. - lv_col = 1. - CLEAR lv_string. - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - -* --- Retrieve Cell Style format and data type - CLEAR ls_numfmt. - IF <fs_sheet_content>-data_type IS INITIAL AND <fs_sheet_content>-cell_style IS NOT INITIAL. - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_style->get_guid( ) = <fs_sheet_content>-cell_style. - ls_numfmt = lo_style->number_format->get_structure( ). - EXIT. - ENDWHILE. - ENDIF. - IF <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - " determine data-type - CLEAR lv_attrname. - CONCATENATE '''' ls_numfmt-NUMFMT '''' INTO ls_numfmt-NUMFMT. - TRANSLATE ls_numfmt-numfmt TO UPPER CASE. - READ TABLE lt_format INTO ls_format WITH KEY attvalue = ls_numfmt-NUMFMT. - IF sy-subrc = 0. - lv_attrname = ls_format-cmpname. - ENDIF. - - IF lv_attrname IS NOT INITIAL. - FIND FIRST OCCURRENCE OF 'DATETIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'TIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 't'. - ELSE. - FIND FIRST OCCURRENCE OF 'DATE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'CURRENCY' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'NUMBER' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'PERCENTAGE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ENDIF. " Purcentage - ENDIF. " Number - ENDIF. " Currency - ENDIF. " Date - ENDIF. " TIME - ENDIF. " DATETIME - ENDIF. " lv_attrname IS NOT INITIAL. - ENDIF. " <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - -* --- Add empty rows - WHILE lv_row < <fs_sheet_content>-cell_row. -* CONCATENATE lv_string cl_abap_char_utilities=>newline INTO lv_string. -* CONCATENATE lv_string cl_abap_char_utilities=>cr_lf INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>eol INTO lv_string. - lv_row = lv_row + 1. - lv_col = 1. - ENDWHILE. - -* --- Add empty columns - WHILE lv_col < <fs_sheet_content>-cell_column. -* CONCATENATE lv_string ';' INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>delimiter INTO lv_string. - lv_col = lv_col + 1. - ENDWHILE. - -* ----- Use format to determine the data type and display format. - CASE <fs_sheet_content>-data_type. -* WHEN 'n' OR 'N'. -* lc_value = zcl_excel_common=>excel_number_to_string( ip_value = <fs_sheet_content>-cell_value ). - - WHEN 'd' OR 'D'. - lc_value = zcl_excel_common=>excel_string_to_date( ip_value = <fs_sheet_content>-cell_value ). - TRY. - lv_date = lc_value. - CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' - EXPORTING - DATE_INTERNAL = lv_date - IMPORTING - DATE_EXTERNAL = lv_tmp - EXCEPTIONS - DATE_INTERNAL_IS_INVALID = 1 - OTHERS = 2 - . - IF SY-SUBRC = 0. - lc_value = lv_tmp. - ENDIF. - - CATCH CX_SY_CONVERSION_NO_NUMBER. - - ENDTRY. - - WHEN 't' OR 'T'. - lc_value = zcl_excel_common=>excel_string_to_time( ip_value = <fs_sheet_content>-cell_value ). - write lc_value to lv_time USING EDIT MASK '__:__:__'. - lc_value = lv_time. - WHEN OTHERS. - lc_value = <fs_sheet_content>-cell_value. - - ENDCASE. - -* REPLACE ALL OCCURRENCES OF '"' in lc_value with '""'. - CONCATENATE zcl_excel_writer_csv=>enclosure zcl_excel_writer_csv=>enclosure INTO lv_tmp. - CONDENSE lv_tmp. - REPLACE ALL OCCURRENCES OF zcl_excel_writer_csv=>enclosure in lc_value with lv_tmp. - -* FIND FIRST OCCURRENCE OF ';' IN lc_value. - FIND FIRST OCCURRENCE OF zcl_excel_writer_csv=>delimiter IN lc_value. - IF sy-subrc = 0. - CONCATENATE lv_string zcl_excel_writer_csv=>enclosure lc_value zcl_excel_writer_csv=>enclosure INTO lv_string. - ELSE. - CONCATENATE lv_string lc_value INTO lv_string. - ENDIF. - - ENDLOOP. " AT lt_cell_data - - CLEAR ep_content. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - TEXT = lv_string -* MIMETYPE = ' ' -* ENCODING = - IMPORTING - BUFFER = ep_content - EXCEPTIONS - FAILED = 1 - OTHERS = 2 - . - - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX. - CLEAR WORKSHEET_NAME. - WORKSHEET_INDEX = i_active_worksheet. - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX_BY_NAME. - CLEAR WORKSHEET_INDEX. - WORKSHEET_NAME = i_worksheet_name. - endmethod. - - - - method SET_DELIMITER. - delimiter = ip_value. - endmethod. - - - - method SET_ENCLOSURE. - zcl_excel_writer_csv=>enclosure = ip_value. - endmethod. - - - - method SET_ENDOFLINE. - zcl_excel_writer_csv=>eol = ip_value. - endmethod. - - - - - - - - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - TYPES: BEGIN OF t_relationship, - id TYPE string, - type TYPE string, - target TYPE string, - END OF t_relationship. - -* - CLASS lcl_abap_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: abap_zip TYPE REF TO cl_abap_zip. - METHODS constructor IMPORTING i_data TYPE xstring - RAISING zcx_excel. - ENDCLASS. "lcl_abap_zip_archive DEFINITION - -* - CLASS lcl_alternate_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: alternate_zip TYPE REF TO object. - METHODS constructor - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RAISING zcx_excel. - ENDCLASS. "lcl_alternate_zip_archive DEFINITION - -* - CLASS lcl_abap_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_abap_zip_archive - EXPORTING - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT abap_zip. - abap_zip->load( - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - CALL METHOD abap_zip->get - EXPORTING - name = i_filename - IMPORTING - content = r_content - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_abap_zip_archive IMPLEMENTATION - -* - CLASS lcl_alternate_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_alternate_zip_archive - EXPORTING - i_alternate_zip_class = i_alternate_zip_class - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT alternate_zip TYPE (i_alternate_zip_class). - TRY. - CALL METHOD alternate_zip->('LOAD') - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method LOAD missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - TRY. - CALL METHOD alternate_zip->('GET') - EXPORTING - name = i_filename - IMPORTING - content = r_content " Contents - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method GET missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_alternate_zip_archive IMPLEMENTATION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -* -class lcl_zip_archive definition abstract. - public section. - methods read abstract - importing i_filename type csequence - returning value(r_content) type xstring " Remember copy-on-write! - raising zcx_excel. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - IXML - - - - - - METHOD zif_excel_reader~load. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Map Document Properties to ZCL_EXCEL -*--------------------------------------------------------------------* - - CONSTANTS: lcv_core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lcv_office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'. - - DATA: lo_rels TYPE REF TO if_ixml_document, - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship. - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller - -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets - -* §3 Extracting from this the path&file where the workbook is located -* Following is an example how this file could be set up -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* <Relationship Target="docProps/core.xml" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Id="rId2"/> -* <Relationship Target="xl/workbook.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Id="rId1"/> -* </Relationships> -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller -*--------------------------------------------------------------------* - CREATE OBJECT r_excel. - - zip = create_zip_archive( i_xlsx_binary = i_excel2007 - i_use_alternate_zip = i_use_alternate_zip ). - -*--------------------------------------------------------------------* -* §2 Get file in folderstructure -*--------------------------------------------------------------------* - lo_rels = get_ixml_from_zip_archive( '_rels/.rels' ). - -*--------------------------------------------------------------------* -* §3 Cycle through the Relationship Tags and use the ones we need -*--------------------------------------------------------------------* - lo_node ?= lo_rels->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_relationship ). - CASE ls_relationship-type. - - WHEN lcv_office_document. -*--------------------------------------------------------------------* -* Parse workbook - main part here -*--------------------------------------------------------------------* - load_workbook( iv_workbook_full_filename = ls_relationship-target - io_excel = r_excel ). - - WHEN lcv_core_properties. - " 2do§1 Map Document Properties to ZCL_EXCEL - - WHEN OTHERS. - - ENDCASE. - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - METHOD zif_excel_reader~load_file. - - DATA: lv_excel_data TYPE xstring. - -*--------------------------------------------------------------------* -* Read file into binary string -*--------------------------------------------------------------------* - IF i_from_applserver = abap_true. - lv_excel_data = read_from_applserver( i_filename ). - ELSE. - lv_excel_data = read_from_local_file( i_filename ). - ENDIF. - -*--------------------------------------------------------------------* -* Parse Excel data into ZCL_EXCEL object from binary string -*--------------------------------------------------------------------* - r_excel = zif_excel_reader~load( i_excel2007 = lv_excel_data - i_use_alternate_zip = i_use_alternate_zip ). - -ENDMETHOD. - - - - - - - METHOD create_zip_archive. - CASE i_use_alternate_zip. - WHEN space. - e_zip = lcl_abap_zip_archive=>create( i_xlsx_binary ). - WHEN OTHERS. - e_zip = lcl_alternate_zip_archive=>create( i_data = i_xlsx_binary - i_alternate_zip_class = i_use_alternate_zip ). - ENDCASE. -ENDMETHOD. - - - - - method fill_struct_from_attributes. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - - data: lv_name type string, - lo_attributes type ref to if_ixml_named_node_map, - lo_attribute type ref to if_ixml_attribute, - lo_iterator type ref to if_ixml_node_iterator. - - field-symbols: <component> type any. - -*--------------------------------------------------------------------* -* The values of named attributes of a tag are being read and moved into corresponding -* fields of given structure -* Behaves like move-corresonding tag to structure - -* Example: -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* Here the attributes are Target, Type and Id. Thus if the passed -* structure has fieldnames Id and Target these would be filled with -* "rId3" and "docProps/app.xml" respectively -*--------------------------------------------------------------------* - clear cp_structure. - - lo_attributes = ip_element->get_attributes( ). - lo_iterator = lo_attributes->create_iterator( ). - lo_attribute ?= lo_iterator->get_next( ). - while lo_attribute is bound. - - lv_name = lo_attribute->get_name( ). - translate lv_name to upper case. - assign component lv_name of structure cp_structure to <component>. - if sy-subrc = 0. - <component> = lo_attribute->get_value( ). - endif. - lo_attribute ?= lo_iterator->get_next( ). - - endwhile. - - -endmethod. - - - - - - METHOD get_from_zip_archive. - - ASSERT zip IS BOUND. " zip object has to exist at this point - - r_content = zip->read( i_filename ). - -ENDMETHOD. - - - - - - - METHOD get_ixml_from_zip_archive. - - DATA: lv_content TYPE xstring, - lo_ixml TYPE REF TO if_ixml, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_istream TYPE REF TO if_ixml_istream, - lo_parser TYPE REF TO if_ixml_parser. - -*--------------------------------------------------------------------* -* Load XML file from archive into an input stream, -* and parse that stream into an ixml object -*--------------------------------------------------------------------* - lv_content = me->get_from_zip_archive( i_filename ). - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_istream = lo_streamfactory->create_istream_xstring( lv_content ). - r_ixml = lo_ixml->create_document( ). - lo_parser = lo_ixml->create_parser( stream_factory = lo_streamfactory - istream = lo_istream - document = r_ixml ). - lo_parser->set_normalizing( is_normalizing ). - lo_parser->set_validating( mode = if_ixml_parser=>co_no_validation ). - lo_parser->parse( ). - -ENDMETHOD. - - - - - - method LOAD_DRAWING_ANCHOR. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - TYPES: BEGIN OF t_ext, - cx TYPE string, - cy TYPE string, - END OF t_ext. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - node TYPE REF TO if_ixml_element, - node2 TYPE REF TO if_ixml_element, - node3 TYPE REF TO if_ixml_element, - node4 TYPE REF TO if_ixml_element, - - ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location, - ls_size TYPE zexcel_drawing_size, - ext TYPE t_ext, - lv_content TYPE xstring, - lv_relation_id TYPE string, - lv_title TYPE zexcel_sheet_title, - - cnvpr TYPE t_c_nv_pr, - blip TYPE t_blip, - chart TYPE t_chart, - drawing_type TYPE zexcel_drawing_type, - - rel_drawing TYPE t_rel_drawing. - - node ?= io_anchor_element->find_from_name( name = 'from' namespace = 'xdr' ). - CHECK node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_upper-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_upper-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_upper-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_upper-row_offset = node2->get_value( ). - - node ?= io_anchor_element->find_from_name( name = 'ext' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_size. - ELSE. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = ext ). - ls_size-width = ext-cx. - ls_size-height = ext-cy. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'to' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_lower. - ELSE. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_lower-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_lower-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_lower-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_lower-row_offset = node2->get_value( ). - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'pic' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvPicPr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'blipFill' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'blip' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = blip ). - lv_relation_id = blip-embed. - - drawing_type = zcl_excel_drawing=>type_image. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'graphicFrame' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvGraphicFramePr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'graphic' namespace = 'a' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'graphicData' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - node4 ?= node2->find_from_name( name = 'chart' namespace = 'c' ). - CHECK node4 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node4 CHANGING cp_structure = chart ). - lv_relation_id = chart-id. - - drawing_type = zcl_excel_drawing=>type_chart. - ENDIF. - - lo_drawing = io_worksheet->excel->add_new_drawing( - ip_type = drawing_type - ip_title = lv_title ). - io_worksheet->add_drawing( lo_drawing ). - - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - READ TABLE it_related_drawings INTO rel_drawing - WITH KEY id = lv_relation_id. - - lo_drawing->set_media( - EXPORTING - ip_media = rel_drawing-content - ip_media_type = rel_drawing-file_ext - ip_width = ls_size-width - ip_height = ls_size-height ). - - if drawing_type = zcl_excel_drawing=>type_chart. - "-------------Added by Alessandro Iannacci - Should load chart attributes - lo_drawing->load_chart_attributes( rel_drawing-content_xml ). - endif. - - endmethod. - - - - - method LOAD_SHARED_STRINGS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support partial formatting of strings in cells -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: renaming variables to naming conventions -* renaming variables to indicate what they are used for -* aligning code -* adding comments to explain what we are trying to achieve -* rewriting code for better readibility -*--------------------------------------------------------------------* - - - - DATA: - lo_shared_strings_xml TYPE REF TO if_ixml_document, - lo_node_si TYPE REF TO if_ixml_element, - lo_node_si_child TYPE REF TO if_ixml_element, - lo_node_r_child_t TYPE REF TO if_ixml_element, - lv_tag_name TYPE string, - lv_node_value TYPE string. - - FIELD-SYMBOLS: <lv_shared_string> LIKE LINE OF me->shared_strings. - -*--------------------------------------------------------------------* - -* §1 Parse shared strings file and get into internal table -* So far I have encountered 2 ways how a string can be represented in the shared strings file -* §1.1 - "simple" strings -* §1.2 - rich text formatted strings - -* Following is an example how this file could be set up; 2 strings in simple formatting, 3rd string rich textformatted - - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <sst uniqueCount="6" count="6" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <si> -* <t>This is a teststring 1</t> -* </si> -* <si> -* <t>This is a teststring 2</t> -* </si> -* <si> -* <r> -* <t>T</t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color rgb="FFFF0000"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t xml:space="preserve">his is a </t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color theme="1"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t>teststring 3</t> -* </r> -* </si> -* </sst> -*--------------------------------------------------------------------* - - lo_shared_strings_xml = me->get_ixml_from_zip_archive( i_filename = ip_path - is_normalizing = space ). " NO!!! normalizing - otherwise leading blanks will be omitted and that is not really desired for the stringtable - lo_node_si ?= lo_shared_strings_xml->find_from_name( 'si' ). - WHILE lo_node_si IS BOUND. - - APPEND INITIAL LINE TO me->shared_strings ASSIGNING <lv_shared_string>. " Each <si>-entry in the xml-file must lead to an entry in our stringtable - lo_node_si_child ?= lo_node_si->get_first_child( ). - IF lo_node_si_child IS BOUND. - lv_tag_name = lo_node_si_child->get_name( ). - IF lv_tag_name = 't'. -*--------------------------------------------------------------------* -* §1.1 - "simple" strings -* Example: see above -*--------------------------------------------------------------------* - <lv_shared_string> = lo_node_si_child->get_value( ). - ELSE. -*--------------------------------------------------------------------* -* §1.2 - rich text formatted strings -* it is sufficient to strip the <t>...</t> tag from each <r>-tag and concatenate these -* as long as rich text formatting is not supported (2do§1) ignore all info about formatting -* Example: see above -*--------------------------------------------------------------------* - WHILE lo_node_si_child IS BOUND. " actually these children of <si> are <r>-tags - - lo_node_r_child_t ?= lo_node_si_child->find_from_name( 't' ). " extract the <t>...</t> part of each <r>-tag - IF lo_node_r_child_t IS BOUND. - lv_node_value = lo_node_r_child_t->get_value( ). - CONCATENATE <lv_shared_string> lv_node_value INTO <lv_shared_string> RESPECTING BLANKS. - ENDIF. - - lo_node_si_child ?= lo_node_si_child->get_next( ). - - ENDWHILE. - ENDIF. - ENDIF. - - lo_node_si ?= lo_node_si->get_next( ). - ENDWHILE. - - endmethod. - - - - - - method LOAD_STYLES. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (wip ) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_xf, - applyalignment TYPE string, - applyborder TYPE string, - applyfill TYPE string, - applyfont TYPE string, - applynumberformat TYPE string, - applyprotection TYPE string, - borderid TYPE string, - fillid TYPE string, - fontid TYPE string, - numfmtid TYPE string, - pivotbutton TYPE string, - quoteprefix TYPE string, - xfid TYPE string, - END OF lty_xf. - - TYPES: BEGIN OF lty_alignment, - horizontal TYPE string, - indent TYPE string, - justifylastline TYPE string, - readingorder TYPE string, - relativeindent TYPE string, - shrinktofit TYPE string, - textrotation TYPE string, - vertical TYPE string, - wraptext TYPE string, - END OF lty_alignment. - - TYPES: BEGIN OF lty_protection, - hidden TYPE string, - locked TYPE string, - END OF lty_protection. - - DATA: lo_styles_xml TYPE REF TO if_ixml_document, - lo_style TYPE REF TO zcl_excel_style, - - lt_num_formats TYPE t_num_formats, - lt_fills TYPE t_fills, - lt_borders TYPE t_borders, - lt_fonts TYPE t_fonts, - - ls_num_format TYPE t_num_format, - ls_fill TYPE REF TO zcl_excel_style_fill, - ls_cell_border TYPE REF TO zcl_excel_style_borders, - ls_font TYPE REF TO zcl_excel_style_font, - - lo_node_cellxfs TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_alignment TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_protection TYPE REF TO if_ixml_element, - - lo_nodes_xf TYPE REF TO if_ixml_node_collection, - lo_iterator_cellxfs TYPE REF TO if_ixml_node_iterator, - - ls_xf TYPE lty_xf, - ls_alignment TYPE lty_alignment, - ls_protection TYPE lty_protection, - lv_index TYPE i. - -*--------------------------------------------------------------------* -* To build a complete style that fully describes how a cell looks like -* we need the various parts -* §1 - Numberformat -* §2 - Fillstyle -* §3 - Borders -* §4 - Font -* §5 - Alignment -* §6 - Protection - -* Following is an example how this part of a file could be set up -* ... -* parts with various formatinformation - see §1,§2,§3,§4 -* ... -* <cellXfs count="26"> -* <xf numFmtId="0" borderId="0" fillId="0" fontId="0" xfId="0"/> -* <xf numFmtId="0" borderId="0" fillId="2" fontId="0" xfId="0" applyFill="1"/> -* <xf numFmtId="0" borderId="1" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="2" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="3" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="4" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="0" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* ... -* </cellXfs> -*--------------------------------------------------------------------* - - lo_styles_xml = me->get_ixml_from_zip_archive( ip_path ). - -*--------------------------------------------------------------------* -* The styles are build up from -* §1 number formats -* §2 fill styles -* §3 border styles -* §4 fonts -* These need to be read before we can try to build up a complete -* style that describes the look of a cell -*--------------------------------------------------------------------* - lt_num_formats = load_style_num_formats( lo_styles_xml ). " §1 - lt_fills = load_style_fills( lo_styles_xml ). " §2 - lt_borders = load_style_borders( lo_styles_xml ). " §3 - lt_fonts = load_style_fonts( lo_styles_xml ). " §4 - -*--------------------------------------------------------------------* -* Now everything is prepared to build a "full" style -*--------------------------------------------------------------------* - lo_node_cellxfs = lo_styles_xml->find_from_name( name = 'cellXfs' ). - IF lo_node_cellxfs IS BOUND. - lo_nodes_xf = lo_node_cellxfs->get_elements_by_tag_name( name = 'xf' ). - lo_iterator_cellxfs = lo_nodes_xf->create_iterator( ). - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - WHILE lo_node_cellxfs_xf IS BOUND. - - lo_style = ip_excel->add_new_style( ). - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf - CHANGING - cp_structure = ls_xf ). -*--------------------------------------------------------------------* -* §2 fill style -*--------------------------------------------------------------------* - IF ls_xf-applyfill = '1' AND ls_xf-fillid IS NOT INITIAL. - lv_index = ls_xf-fillid + 1. - READ TABLE lt_fills INTO ls_fill INDEX lv_index. - IF sy-subrc = 0. - lo_style->fill = ls_fill. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §1 number format -*--------------------------------------------------------------------* - IF ls_xf-numfmtid IS NOT INITIAL. - READ TABLE lt_num_formats INTO ls_num_format WITH TABLE KEY id = ls_xf-numfmtid. - IF sy-subrc = 0. - lo_style->number_format = ls_num_format-format. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §3 border style -*--------------------------------------------------------------------* - IF ls_xf-applyborder = '1' AND ls_xf-borderid IS NOT INITIAL. - lv_index = ls_xf-borderid + 1. - READ TABLE lt_borders INTO ls_cell_border INDEX lv_index. - IF sy-subrc = 0. - lo_style->borders = ls_cell_border. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §4 font -*--------------------------------------------------------------------* - IF ls_xf-applyfont = '1' AND ls_xf-fontid IS NOT INITIAL. - lv_index = ls_xf-fontid + 1. - READ TABLE lt_fonts INTO ls_font INDEX lv_index. - IF sy-subrc = 0. - lo_style->font = ls_font. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §5 - Alignment -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_alignment ?= lo_node_cellxfs_xf->find_from_name( 'alignment' ). - IF lo_node_cellxfs_xf_alignment IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_alignment - CHANGING - cp_structure = ls_alignment ). - IF ls_alignment-horizontal IS NOT INITIAL. - lo_style->alignment->horizontal = ls_alignment-horizontal. - ENDIF. - - IF ls_alignment-vertical IS NOT INITIAL. - lo_style->alignment->vertical = ls_alignment-vertical. - ENDIF. - - IF ls_alignment-textrotation IS NOT INITIAL. - lo_style->alignment->textrotation = ls_alignment-textrotation. - ENDIF. - - IF ls_alignment-wraptext = '1' OR ls_alignment-wraptext = 'true'. - lo_style->alignment->wraptext = abap_true. - ENDIF. - - IF ls_alignment-shrinktofit = '1' OR ls_alignment-shrinktofit = 'true'. - lo_style->alignment->shrinktofit = abap_true. - ENDIF. - - IF ls_alignment-indent IS NOT INITIAL. - lo_style->alignment->indent = ls_alignment-indent. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §6 - Protection -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_protection ?= lo_node_cellxfs_xf->find_from_name( 'protection' ). - IF lo_node_cellxfs_xf_protection IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_protection - CHANGING - cp_structure = ls_protection ). - IF ls_protection-locked = '1' OR ls_protection-locked = 'true'. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_locked. - ELSE. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - ENDIF. - - IF ls_protection-hidden = '1' OR ls_protection-hidden = 'true'. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_hidden. - ELSE. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_unhidden. - ENDIF. - - ENDIF. - - INSERT lo_style INTO TABLE me->styles. - - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - - ENDWHILE. - ENDIF. - - endmethod. - - - - - method LOAD_STYLE_BORDERS. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_border TYPE REF TO if_ixml_element, - lo_node_bordertype TYPE REF TO if_ixml_element, - lo_node_bordercolor TYPE REF TO if_ixml_element, - lo_cell_border TYPE REF TO zcl_excel_style_borders, - lo_border TYPE REF TO zcl_excel_style_border, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used borderformats to build up our styles -* §1 A cell has 4 outer borders and 2 diagonal "borders" -* These borders can be formatted separately but the diagonal borders -* are always being formatted the same -* We'll parse through the <border>-tag for each of the bordertypes -* §2 and read the corresponding formatting information - -* Following is an example how this part of a file could be set up -* <border diagonalDown="1"> -* <left style="mediumDashDotDot"> -* <color rgb="FFFF0000"/> -* </left> -* <right/> -* <top style="thick"> -* <color rgb="FFFF0000"/> -* </top> -* <bottom style="thick"> -* <color rgb="FFFF0000"/> -* </bottom> -* <diagonal style="thick"> -* <color rgb="FFFF0000"/> -* </diagonal> -* </border> -*--------------------------------------------------------------------* - lo_node_border ?= ip_xml->find_from_name( 'border' ). - WHILE lo_node_border IS BOUND. - - CREATE OBJECT lo_cell_border. - -*--------------------------------------------------------------------* -* Diagonal borderlines are formatted the equally. Determine what kind of diagonal borders are present if any -*--------------------------------------------------------------------* -* DiagonalNone = 0 -* DiagonalUp = 1 -* DiagonalDown = 2 -* DiagonalBoth = 3 -*--------------------------------------------------------------------* - IF lo_node_border->get_attribute( 'diagonalDown' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_down to lo_cell_border->diagonal_mode. - ENDIF. - - IF lo_node_border->get_attribute( 'diagonalUp' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_up to lo_cell_border->diagonal_mode. - ENDIF. - - lo_node_bordertype ?= lo_node_border->get_first_child( ). - WHILE lo_node_bordertype IS BOUND. -*--------------------------------------------------------------------* -* §1 Determine what kind of border we are talking about -*--------------------------------------------------------------------* -* Up, down, left, right, diagonal -*--------------------------------------------------------------------* - CREATE OBJECT lo_border. - - CASE lo_node_bordertype->get_name( ). - - WHEN 'left'. - lo_cell_border->left = lo_border. - - WHEN 'right'. - lo_cell_border->right = lo_border. - - WHEN 'top'. - lo_cell_border->top = lo_border. - - WHEN 'bottom'. - lo_cell_border->down = lo_border. - - WHEN 'diagonal'. - lo_cell_border->diagonal = lo_border. - - ENDCASE. - -*--------------------------------------------------------------------* -* §2 Read the border-formatting -*--------------------------------------------------------------------* - lo_border->border_style = lo_node_bordertype->get_attribute( 'style' ). - lo_node_bordercolor ?= lo_node_bordertype->find_from_name( 'color' ). - IF lo_node_bordercolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bordercolor - CHANGING - cp_structure = ls_color ). - - lo_border->border_color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_border->border_color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_border->border_color-theme = ls_color-theme. - ENDIF. - lo_border->border_color-tint = ls_color-tint. - ENDIF. - - lo_node_bordertype ?= lo_node_bordertype->get_next( ). - - ENDWHILE. - - INSERT lo_cell_border INTO TABLE ep_borders. - - lo_node_border ?= lo_node_border->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_FILLS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support gradientFill -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* commenting on problems/future enhancements/todos we already know of or should decide upon -* adding comments to explain what we are trying to achieve -* renaming variables to indicate what they are used for -*--------------------------------------------------------------------* - DATA: lv_value TYPE string, - lo_node_fill TYPE REF TO if_ixml_element, - lo_node_fill_child TYPE REF TO if_ixml_element, - lo_node_bgcolor TYPE REF TO if_ixml_element, - lo_node_fgcolor TYPE REF TO if_ixml_element, - lo_fill TYPE REF TO zcl_excel_style_fill, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fillformats to build up our styles - -* Following is an example how this part of a file could be set up -* <fill> -* <patternFill patternType="gray125"/> -* </fill> -* <fill> -* <patternFill patternType="solid"> -* <fgColor rgb="FFFFFF00"/> -* <bgColor indexed="64"/> -* </patternFill> -* </fill> -*--------------------------------------------------------------------* - - lo_node_fill ?= ip_xml->find_from_name( 'fill' ). - WHILE lo_node_fill IS BOUND. - - CREATE OBJECT lo_fill. - lo_node_fill_child ?= lo_node_fill->get_first_child( ). - lv_value = lo_node_fill_child->get_name( ). - CASE lv_value. - -*--------------------------------------------------------------------* -* Patternfill -*--------------------------------------------------------------------* - WHEN 'patternFill'. - lo_fill->filltype = lo_node_fill_child->get_attribute( 'patternType' ). -*--------------------------------------------------------------------* -* Patternfill - background color -*--------------------------------------------------------------------* - lo_node_bgcolor = lo_node_fill_child->find_from_name( 'bgColor' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - -*--------------------------------------------------------------------* -* Patternfill - foreground color -*--------------------------------------------------------------------* - lo_node_fgcolor = lo_node_fill->find_from_name( 'fgColor' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - - -*--------------------------------------------------------------------* -* gradientFill -*--------------------------------------------------------------------* - WHEN 'gradientFill'. - " 2do§1 Support gradientFill - - WHEN OTHERS. - - ENDCASE. - - - INSERT lo_fill INTO TABLE ep_fills. - - lo_node_fill ?= lo_node_fill->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_FONTS. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* removing unused variables -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_font TYPE REF TO if_ixml_element, - lo_node2 TYPE REF TO if_ixml_element, - lo_font TYPE REF TO zcl_excel_style_font, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fonts to build up our styles - -* Following is an example how this part of a file could be set up -* <font> -* <sz val="11"/> -* <color theme="1"/> -* <name val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </font> -*--------------------------------------------------------------------* - lo_node_font ?= ip_xml->find_from_name( 'font' ). - WHILE lo_node_font IS BOUND. - - CREATE OBJECT lo_font. -*--------------------------------------------------------------------* -* Bold -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'b' ) IS BOUND. - lo_font->bold = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Italic -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'i' ) IS BOUND. - lo_font->italic = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Underline -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'u' ). - IF lo_node2 IS BOUND. - lo_font->underline = abap_true. - lo_font->underline_mode = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* StrikeThrough -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'strike' ) IS BOUND. - lo_font->strikethrough = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Fontsize -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'sz' ). - IF lo_node2 IS BOUND. - lo_font->size = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontname -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'name' ). - IF lo_node2 IS BOUND. - lo_font->name = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontfamily -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'family' ). - IF lo_node2 IS BOUND. - lo_font->family = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontscheme -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'scheme' ). - IF lo_node2 IS BOUND. - lo_font->scheme = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontcolor -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'color' ). - IF lo_node2 IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node2 - CHANGING - cp_structure = ls_color ). - lo_font->color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_font->color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_font->color-theme = ls_color-theme. - ENDIF. - lo_font->color-tint = ls_color-tint. - ENDIF. - - INSERT lo_font INTO TABLE ep_fonts. - - lo_node_font ?= lo_node_font->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_NUM_FORMATS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Explain gaps in predefined formats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* adding comments to explain what we are trying to achieve -* aligning code -*--------------------------------------------------------------------* - DATA: lo_node_numfmt TYPE REF TO if_ixml_element, - ls_num_format TYPE t_num_format. - -*--------------------------------------------------------------------* -* We need a table of used numberformats to build up our styles -* there are two kinds of numberformats -* §1 those that have been explicitly added by the createor of the excel-file -* §2 and built-in numberformats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 Get non-internal numberformats that are found in the file explicitly - -* Following is an example how this part of a file could be set up -* <numFmts count="1"> -* <numFmt formatCode="#,###,###,###,##0.00" numFmtId="164"/> -* </numFmts> -*--------------------------------------------------------------------* - lo_node_numfmt ?= ip_xml->find_from_name( 'numFmt' ). - WHILE lo_node_numfmt IS BOUND. - - CLEAR ls_num_format. - - CREATE OBJECT ls_num_format-format. - ls_num_format-format->format_code = lo_node_numfmt->get_attribute( 'formatCode' ). - ls_num_format-id = lo_node_numfmt->get_attribute( 'numFmtId' ). - INSERT ls_num_format INTO TABLE ep_num_formats. - - lo_node_numfmt ?= lo_node_numfmt->get_next( ). - - ENDWHILE. - - DEFINE predefined_format. - ls_num_format-id = &1. - create object ls_num_format-format. - ls_num_format-format->format_code = &2. - insert ls_num_format into table ep_num_formats. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* §1 Get internal predefined numberformats -*--------------------------------------------------------------------* - predefined_format '1' '0'. - predefined_format '2' '0.00'. - predefined_format '3' '#,##0'. - predefined_format '4' '#,##0.00'. - predefined_format '5' '$#,##0_);($#,##0)'. - predefined_format '6' '$#,##0_);[Red]($#,##0)'. - predefined_format '7' '$#,##0.00_);($#,##0.00)'. - predefined_format '8' '$#,##0.00_);[Red]($#,##0.00)'. - predefined_format '9' '0%'. - predefined_format '10' '0.00%'. - predefined_format '11' '0.00E+00'. - predefined_format '12' '# ?/?'. - predefined_format '13' '# ??/??'. - predefined_format '14' 'm/d/yyyy'. - predefined_format '15' 'd-mmm-yy'. - predefined_format '16' 'd-mmm'. - predefined_format '17' 'mmm-yy'. - predefined_format '18' 'h:mm AM/PM'. - predefined_format '19' 'h:mm:ss AM/PM'. - predefined_format '20' 'h:mm'. - predefined_format '21' 'h:mm:ss'. - predefined_format '22' 'm/d/yyyy h:mm'. -* 2do§1 Why is there a gap in here? - - - - - - - - - - - - - - predefined_format '37' '#,##0_);(#,##0)'. - predefined_format '38' '#,##0_);[Red](#,##0)'. - predefined_format '39' '#,##0.00_);(#,##0.00)'. - predefined_format '40' '#,##0.00_);[Red](#,##0.00)'. -* 2do§1 Why is there a gap in here? - - - - predefined_format '45' 'mm:ss'. - predefined_format '46' '[h]:mm:ss'. - predefined_format '47' 'mm:ss.0'. - predefined_format '48' '##0.0E+0'. - predefined_format '49' '@'. -* 2do§1 Is 49 really the last predefined format? - - - endmethod. - - - - - - method LOAD_WORKBOOK. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Move macro-reading from zcl_excel_reader_xlsm to this class -* autodetect existance of macro/vba content -* Allow inputparameter to explicitly tell reader to ignore vba-content -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-10 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* removing unused variables -* adding me-> where possible -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -* renaming i/o parameters: previous input-parameter ip_path holds a (full) filename and not a path --> rename to iv_workbook_full_filename -* ip_excel renamed while being at it --> rename to io_excel -*--------------------------------------------------------------------* -* issue #232 - Read worksheetstate hidden/veryHidden -* - Stefan Schmöcker, 2012-11-11 -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 -* changes: correction in named ranges to correctly attach -* sheetlocal names/ranges to the correct sheet -*--------------------------------------------------------------------* -* issue#284 - Copied formulae ignored when reading excelfile -* - Stefan Schmöcker, 2013-08-02 -* changes: initialize area to hold referenced formulaedata -* after all worksheets have been read resolve formuae -*--------------------------------------------------------------------* - - CONSTANTS: lcv_shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - lcv_worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lcv_styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lcv_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - begin data declarations -*--------------------------------------------------------------------* - lcv_worksheet_state_hidden TYPE string VALUE 'hidden', - lcv_worksheet_state_veryhidden TYPE string VALUE 'veryHidden'. -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - end data declarations -*--------------------------------------------------------------------* - - DATA: - lv_path TYPE string, - lv_filename TYPE chkfile, - lv_full_filename TYPE string, - - lo_rels_workbook TYPE REF TO if_ixml_document, - lt_worksheets TYPE STANDARD TABLE OF t_relationship WITH NON-UNIQUE DEFAULT KEY, - lo_workbook TYPE REF TO if_ixml_document, - lv_workbook_index TYPE i, - lv_worksheet_path TYPE string, - ls_sheet TYPE t_sheet, - - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lv_worksheet_title TYPE zexcel_sheet_title, - lv_tabix TYPE sytabix, " #235 - repeat rows/cols. Needed to link defined name to correct worksheet - - ls_range TYPE t_range, - lv_range_value TYPE zexcel_range_value, -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin data declarations -*--------------------------------------------------------------------* - lv_active_sheet_string TYPE string, - lv_zexcel_active_worksheet TYPE zexcel_active_worksheet, -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - added autofilter support while changing this section - lo_autofilter TYPE REF TO zcl_excel_autofilter, - ls_area TYPE zexcel_s_autofilter_area, - lv_col_start_alpha TYPE zexcel_cell_column_alpha, - lv_col_end_alpha TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row , - lv_regex TYPE string, - lv_range_value_1 TYPE zexcel_range_value, - lv_range_value_2 TYPE zexcel_range_value. -*--------------------------------------------------------------------* -* #229: Set active worksheet - end data declarations -*--------------------------------------------------------------------* - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - -*--------------------------------------------------------------------* - -* §1 Get the position of files related to this workbook -* Usually this will be <root>/xl/workbook.xml -* Thus the workbookroot will be <root>/xl/ -* The position of all related files will be given in file -* <workbookroot>/_rels/<workbookfilename>.rels and their positions -* be be given relative to the workbookroot - -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="styles.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Id="rId6"/> -* <Relationship Target="theme/theme1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Id="rId5"/> -* <Relationship Target="worksheets/sheet1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId1"/> -* <Relationship Target="worksheets/sheet2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId2"/> -* <Relationship Target="worksheets/sheet3.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId3"/> -* <Relationship Target="worksheets/sheet4.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId4"/> -* <Relationship Target="sharedStrings.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Id="rId7"/> -* </Relationships> -* -* §2 Load data that is relevant to the complete workbook -* Currently supported is: -* §2.1 Shared strings - This holds all strings that are used in all worksheets -* §2.2 Styles - This holds all styles that are used in all worksheets -* §2.3 Worksheets - For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* §2.4 [Themes] - not supported -* §2.5 [VBA (Macro)] - supported in class zcl_excel_reader_xlsm but should be moved here and autodetect -* ... -* -* §3 Some information is held in the workbookfile as well -* §3.1 Names and order of of worksheets -* §3.2 Active worksheet -* §3.3 Defined names -* ... -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <fileVersion rupBuild="4506" lowestEdited="4" lastEdited="4" appName="xl"/> -* <workbookPr defaultThemeVersion="124226"/> -* <bookViews> -* <workbookView activeTab="1" windowHeight="8445" windowWidth="19035" yWindow="120" xWindow="120"/> -* </bookViews> -* <sheets> -* <sheet r:id="rId1" sheetId="1" name="Sheet1"/> -* <sheet r:id="rId2" sheetId="2" name="Sheet2"/> -* <sheet r:id="rId3" sheetId="3" name="Sheet3" state="hidden"/> -* <sheet r:id="rId4" sheetId="4" name="Sheet4"/> -* </sheets> -* <definedNames/> -* <calcPr calcId="125725"/> -* </workbook> -*--------------------------------------------------------------------* - - CLEAR me->mt_ref_formulae. " ins issue#284 - -*--------------------------------------------------------------------* -* §1 Get the position of files related to this workbook -* Entry into this method is with the filename of the workbook -*--------------------------------------------------------------------* - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = lv_filename - file_path = lv_path. - - CONCATENATE lv_path '_rels/' lv_filename '.rels' - INTO lv_full_filename. - lo_rels_workbook = me->get_ixml_from_zip_archive( lv_full_filename ). - - lo_node ?= lo_rels_workbook->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING ip_element = lo_node CHANGING cp_structure = ls_relationship ). - - CASE ls_relationship-type. - -*--------------------------------------------------------------------* -* §2.1 Shared strings - This holds all strings that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_shared_strings. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_shared_strings( lv_full_filename ). - -*--------------------------------------------------------------------* -* §2.3 Worksheets -* For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* Shared strings and styles have to be present before we can start with creating the worksheets -* thus we only store this information for use when parsing the workbookfile for sheetinformations -*--------------------------------------------------------------------* - WHEN lcv_worksheet. - APPEND ls_relationship TO lt_worksheets. - -*--------------------------------------------------------------------* -* §2.2 Styles - This holds the styles that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_styles. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_styles( ip_path = lv_full_filename - ip_excel = io_excel ). - - WHEN OTHERS. - - ENDCASE. - - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - -*--------------------------------------------------------------------* -* §3 Some information held in the workbookfile -*--------------------------------------------------------------------* - lo_workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - -*--------------------------------------------------------------------* -* §3.1 Names and order of of worksheets -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'sheet' ). - lv_workbook_index = 1. - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_sheet ). -*--------------------------------------------------------------------* -* Create new worksheet in workbook with correct name -*--------------------------------------------------------------------* - lv_worksheet_title = ls_sheet-name. - IF lv_workbook_index = 1. " First sheet has been added automatically by creating io_excel - lo_worksheet = io_excel->get_active_worksheet( ). - lo_worksheet->set_title( lv_worksheet_title ). - ELSE. - lo_worksheet = io_excel->add_new_worksheet( lv_worksheet_title ). - ENDIF. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - begin of coding -* Set status hidden if necessary -*--------------------------------------------------------------------* - CASE ls_sheet-state. - - WHEN lcv_worksheet_state_hidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - WHEN lcv_worksheet_state_veryhidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_veryhidden. - - ENDCASE. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - end of coding -*--------------------------------------------------------------------* -*--------------------------------------------------------------------* -* Load worksheetdata -*--------------------------------------------------------------------* - READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_sheet-id. - IF sy-subrc = 0. - <worksheet>-sheetid = ls_sheet-sheetid. "ins #235 - repeat rows/cols - needed to identify correct sheet - CONCATENATE lv_path <worksheet>-target - INTO lv_worksheet_path. - me->load_worksheet( ip_path = lv_worksheet_path - io_worksheet = lo_worksheet ). - <worksheet>-worksheet = lo_worksheet. - ENDIF. - - lo_node ?= lo_node->get_next( ). - ADD 1 TO lv_workbook_index. - - ENDWHILE. - SORT lt_worksheets BY sheetid. " needed for localSheetid -referencing - -*--------------------------------------------------------------------* -* #284: Set active worksheet - Resolve referenced formulae to -* explicit formulae those cells -*--------------------------------------------------------------------* - me->resolve_referenced_formulae( ). - " ins issue#284 -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin coding -* §3.2 Active worksheet -*--------------------------------------------------------------------* - lv_zexcel_active_worksheet = 1. " First sheet = active sheet if nothing else specified. - lo_node ?= lo_workbook->find_from_name( 'workbookView' ). - IF lo_node IS BOUND. - lv_active_sheet_string = lo_node->get_attribute( 'activeTab' ). - TRY. - lv_zexcel_active_worksheet = lv_active_sheet_string + 1. " EXCEL numbers the sheets from 0 onwards --> index into worksheettable is increased by one - CATCH cx_sy_conversion_error. "#EC NO_HANDLER - error here --> just use the default 1st sheet - ENDTRY. - ENDIF. - io_excel->set_active_sheet_index( lv_zexcel_active_worksheet ). -*--------------------------------------------------------------------* -* #229: Set active worksheet - end coding -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §3.3 Defined names -* So far I have encountered these -* - named ranges - sheetlocal -* - named ranges - workbookglobal -* - autofilters - sheetlocal ( special range ) -* - repeat rows/cols - sheetlocal ( special range ) -* -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'definedName' ). - WHILE lo_node IS BOUND. - - CLEAR lo_range. "ins issue #235 - repeat rows/cols - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_range ). - lv_range_value = lo_node->get_value( ). - - IF ls_range-localsheetid IS NOT INITIAL. " issue #163+ -* READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_range-localsheetid. "del issue #235 - repeat rows/cols " issue #163+ -* lo_range = <worksheet>-worksheet->add_new_range( ). "del issue #235 - repeat rows/cols " issue #163+ -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - begin -*--------------------------------------------------------------------* - lv_tabix = ls_range-localsheetid + 1. - READ TABLE lt_worksheets ASSIGNING <worksheet> INDEX lv_tabix. - IF sy-subrc = 0. - CASE ls_range-name. - -*--------------------------------------------------------------------* -* insert autofilters -*--------------------------------------------------------------------* - WHEN zcl_excel_autofilters=>c_autofilter. - lo_autofilter = io_excel->add_new_autofilter( io_sheet = <worksheet>-worksheet ) . - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = ls_area-row_start ). - ls_area-col_start = zcl_excel_common=>convert_column2int( lv_col_start_alpha ). - ls_area-col_end = zcl_excel_common=>convert_column2int( lv_col_end_alpha ). - lo_autofilter->set_filter_area( is_area = ls_area ). - -*--------------------------------------------------------------------* -* repeat print rows/columns -*--------------------------------------------------------------------* - WHEN zif_excel_sheet_printsettings=>gcv_print_title_name. - lo_range = <worksheet>-worksheet->add_new_range( ). -*--------------------------------------------------------------------* -* This might be a temporary solution. Maybe ranges get be reworked -* to support areas consisting of multiple rectangles -* But for now just split the range into row and columnpart -*--------------------------------------------------------------------* - CLEAR:lv_range_value_1, - lv_range_value_2. - IF lv_range_value IS INITIAL. -* Empty --> nothing to do - ELSE. - IF lv_range_value(1) = `'`. " Escaped - lv_regex = `^('[^']*')+![^,]*,`. - ELSE. - lv_regex = `^[^!]*![^,]*,`. - ENDIF. -* Split into two ranges if necessary - FIND REGEX lv_regex IN lv_range_value MATCH LENGTH sy-fdpos. - IF sy-subrc = 0 AND sy-fdpos > 0. - lv_range_value_2 = lv_range_value+sy-fdpos. - SUBTRACT 1 FROM sy-fdpos. - lv_range_value_1 = lv_range_value(sy-fdpos). - ELSE. - lv_range_value_1 = lv_range_value. - ENDIF. - ENDIF. -* 1st range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - -* 2nd range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - - WHEN OTHERS. - - ENDCASE. - ENDIF. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - end -*--------------------------------------------------------------------* - ELSE. " issue #163+ - lo_range = io_excel->add_new_range( ). " issue #163+ - ENDIF. " issue #163+ -* lo_range = ip_excel->add_new_range( ). " issue #163- - IF lo_range IS BOUND. "ins issue #235 - repeat rows/cols - lo_range->name = ls_range-name. - lo_range->set_range_value( lv_range_value ). - ENDIF. "ins issue #235 - repeat rows/cols - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - endmethod. - - - - - - method LOAD_WORKSHEET. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Header/footer -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, -* - ... -* changes: renaming variables to naming conventions -* aligning code (started) -* add a list of open ToDos here -* adding comments to explain what we are trying to achieve (started) -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_cell, - r TYPE string, - t TYPE string, - s TYPE string, - END OF lty_cell. - - TYPES: BEGIN OF lty_column, - min TYPE string, - max TYPE string, - width TYPE float, - customwidth TYPE string, - style TYPE string, - bestfit TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_column. - - TYPES: BEGIN OF lty_sheetview, - showgridlines TYPE zexcel_show_gridlines, - tabselected TYPE string, - zoomscalenormal TYPE string, - workbookviewid TYPE string, - showrowcolheaders TYPE string, - END OF lty_sheetview. - - TYPES: BEGIN OF lty_mergecell, - ref TYPE string, - END OF lty_mergecell. - - TYPES: BEGIN OF lty_row, - r TYPE string, - customheight TYPE string, - ht TYPE float, - spans TYPE string, - thickbot TYPE string, - customformat TYPE string, - thicktop TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_row. - - TYPES: BEGIN OF lty_page_setup, - id TYPE string, - orientation TYPE string, - scale TYPE string, - END OF lty_page_setup. - - TYPES: BEGIN OF lty_page_margins, - footer TYPE string, - header TYPE string, - bottom TYPE string, - top TYPE string, - right TYPE string, - left TYPE string, - END OF lty_page_margins. - - TYPES: BEGIN OF lty_sheetformatpr, - customheight TYPE string, - defaultrowheight TYPE string, - customwidth TYPE string, - defaultcolwidth TYPE string, - END OF lty_sheetformatpr. - - TYPES: BEGIN OF lty_headerfooter, - alignwithmargins TYPE string, - differentoddeven TYPE string, - END OF lty_headerfooter. - - TYPES: BEGIN OF lty_tabcolor, - rgb TYPE string, - theme TYPE string, - END OF lty_tabcolor. - - TYPES: BEGIN OF lty_datavalidation, - type TYPE zexcel_data_val_type, - allowblank TYPE flag, - showinputmessage TYPE flag, - showerrormessage TYPE flag, - showdropdown TYPE flag, - operator TYPE zexcel_data_val_operator, - formula1 TYPE zexcel_validation_formula1, - formula2 TYPE zexcel_validation_formula1, - sqref TYPE string, - cell_column TYPE zexcel_cell_column_alpha, - cell_column_to TYPE zexcel_cell_column_alpha, - cell_row TYPE zexcel_cell_row, - cell_row_to TYPE zexcel_cell_row, - error TYPE string, - errortitle TYPE string, - prompt TYPE string, - prompttitle TYPE string, - errorstyle TYPE zexcel_data_val_error_style, - END OF lty_datavalidation. - - - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1', - lc_rel_drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_rel_printer TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings'. - - DATA: lo_ixml_worksheet TYPE REF TO if_ixml_document, - lo_ixml_cells TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, - lo_ixml_row_elem TYPE REF TO if_ixml_element, - lo_ixml_cell_elem TYPE REF TO if_ixml_element, - ls_cell TYPE lty_cell, - lv_index TYPE i, - lo_ixml_value_elem TYPE REF TO if_ixml_element, - lo_ixml_formula_elem TYPE REF TO if_ixml_element, - lv_cell_value TYPE zexcel_cell_value, - lv_cell_formula TYPE zexcel_cell_formula, - lv_cell_column TYPE zexcel_cell_column_alpha, - lv_cell_row TYPE zexcel_cell_row, - lo_excel_style TYPE REF TO zcl_excel_style, - lv_style_guid TYPE zexcel_cell_style, - - lo_ixml_imension_elem TYPE REF TO if_ixml_element, "#+234 - lv_dimension_range TYPE string, "#+234 - - lo_ixml_sheetview_elem TYPE REF TO if_ixml_element, - ls_sheetview TYPE lty_sheetview, - lo_ixml_pane_elem TYPE REF TO if_ixml_element, - ls_excel_pane TYPE zexcel_pane, - lv_pane_cell_row TYPE zexcel_cell_row, - lv_pane_cell_col_a TYPE zexcel_cell_column_alpha, - lv_pane_cell_col TYPE zexcel_cell_column, - - lo_ixml_mergecells TYPE REF TO if_ixml_node_collection, - lo_ixml_mergecell_elem TYPE REF TO if_ixml_element, - ls_mergecell TYPE lty_mergecell, - lv_merge_column_start TYPE zexcel_cell_column_alpha, - lv_merge_column_end TYPE zexcel_cell_column_alpha, - lv_merge_row_start TYPE zexcel_cell_row, - lv_merge_row_end TYPE zexcel_cell_row, - - lo_ixml_sheetformatpr_elem TYPE REF TO if_ixml_element, - ls_sheetformatpr TYPE lty_sheetformatpr, - lv_height TYPE float, - - lo_ixml_headerfooter_elem TYPE REF TO if_ixml_element, - ls_headerfooter TYPE lty_headerfooter, - ls_odd_header TYPE zexcel_s_worksheet_head_foot, - ls_odd_footer TYPE zexcel_s_worksheet_head_foot, - ls_even_header TYPE zexcel_s_worksheet_head_foot, - ls_even_footer TYPE zexcel_s_worksheet_head_foot, - lo_ixml_hf_value_elem TYPE REF TO if_ixml_element, - - lo_ixml_pagemargins_elem TYPE REF TO if_ixml_element, - ls_pagemargins TYPE lty_page_margins, - lo_ixml_pagesetup_elem TYPE REF TO if_ixml_element, - ls_pagesetup TYPE lty_page_setup, - - lo_ixml_columns TYPE REF TO if_ixml_node_collection, - lo_ixml_column_elem TYPE REF TO if_ixml_element, - ls_column TYPE lty_column, - lv_column_alpha TYPE zexcel_cell_column_alpha, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_outline_level TYPE int4, - - lo_ixml_tabcolor TYPE REF TO if_ixml_element, - ls_tabcolor TYPE lty_tabcolor, - ls_excel_s_tabcolor TYPE zexcel_s_tabcolor, - - lo_ixml_rows TYPE REF TO if_ixml_node_collection, - ls_row TYPE lty_row, - lv_max_col TYPE i, "for use with SPANS element -* lv_min_col TYPE i, "for use with SPANS element " not in use currently - lv_max_col_s TYPE char10, "for use with SPANS element - lv_min_col_s TYPE char10, "for use with SPANS element - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, -*--- End of current code aligning --------------------------------------------------------------- - - lv_path TYPE string, - lo_ixml_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_ixml_rels_worksheet TYPE REF TO if_ixml_document, - lv_rels_worksheet_path TYPE string, - lv_stripped_name TYPE chkfile, - lv_dirname TYPE string, - - lo_ixml_datavalidations TYPE REF TO if_ixml_node_collection, - lo_ixml_datavalidation_elem TYPE REF TO if_ixml_element, - ls_datavalidation TYPE lty_datavalidation, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_datavalidation_range TYPE string, - lt_datavalidation_range TYPE TABLE OF string. - -*--------------------------------------------------------------------* -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets -*--------------------------------------------------------------------* - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = lv_stripped_name - file_path = lv_dirname. - CONCATENATE lv_dirname '_rels/' lv_stripped_name '.rels' - INTO lv_rels_worksheet_path. - TRY. " +#222 _rels/xxx.rels might not be present. If not found there can be no drawings --> just ignore this section - lo_ixml_rels_worksheet = me->get_ixml_from_zip_archive( lv_rels_worksheet_path ). - lo_ixml_node ?= lo_ixml_rels_worksheet->find_from_name( 'Relationship' ). - CATCH zcx_excel. "#EC NO_HANDLER +#222 - " +#222 No errorhandling necessary - node will be unbound if error occurs - ENDTRY. " +#222 - WHILE lo_ixml_node IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_node - CHANGING - cp_structure = ls_relationship ). - CONCATENATE lv_dirname ls_relationship-target INTO lv_path. - lv_path = resolve_path( lv_path ). - - CASE ls_relationship-type. - WHEN lc_rel_drawing. - " Read Drawings - me->load_worksheet_drawing( ip_path = lv_path - io_worksheet = io_worksheet ). - - WHEN lc_rel_printer. - " Read Printer settings - - WHEN OTHERS. - ENDCASE. - - lo_ixml_node ?= lo_ixml_node->get_next( ). - ENDWHILE. - - - lo_ixml_worksheet = me->get_ixml_from_zip_archive( ip_path ). - - - lo_ixml_tabcolor ?= lo_ixml_worksheet->find_from_name( 'tabColor' ). - IF lo_ixml_tabcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_tabcolor - CHANGING - cp_structure = ls_tabcolor ). -* Theme not supported yet - IF ls_tabcolor-rgb IS NOT INITIAL. - ls_excel_s_tabcolor-rgb = ls_tabcolor-rgb. - io_worksheet->set_tabcolor( ls_excel_s_tabcolor ). - ENDIF. - ENDIF. - - lo_ixml_rows = lo_ixml_worksheet->get_elements_by_tag_name( name = 'row' ). - lo_ixml_iterator = lo_ixml_rows->create_iterator( ). - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_row_elem IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_row_elem - CHANGING - cp_structure = ls_row ). - SPLIT ls_row-spans AT ':' INTO lv_min_col_s lv_max_col_s. - lv_index = lv_max_col_s. - IF lv_index > lv_max_col. - lv_max_col = lv_index. - ENDIF. - lv_cell_row = ls_row-r. - IF ls_row-customheight = '1' - OR ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int - OR ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int - OR ls_row-outlinelevel > '0'. - lo_row_dimension = io_worksheet->get_row_dimension( lv_cell_row ). - IF ls_row-customheight = '1'. - lo_row_dimension->set_row_height( ls_row-ht ). - ENDIF. - - IF ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int. - lo_row_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int. - lo_row_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_row-outlinelevel > ''. -* outline_level = condense( row-outlineLevel ). "For basis 7.02 and higher - CONDENSE ls_row-outlinelevel. - lv_outline_level = ls_row-outlinelevel. - IF lv_outline_level > 0. - lo_row_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - ENDIF. - - lo_ixml_cells = lo_ixml_row_elem->get_elements_by_tag_name( name = 'c' ). - lo_ixml_iterator2 = lo_ixml_cells->create_iterator( ). - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - WHILE lo_ixml_cell_elem IS BOUND. - CLEAR: lv_cell_value, - lv_cell_formula, - lv_style_guid. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_cell_elem CHANGING cp_structure = ls_cell ). - - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'v' ). - - CASE ls_cell-t. - WHEN 's'. " String values are stored as index in shared string table - lv_index = lo_ixml_value_elem->get_value( ) + 1. - READ TABLE shared_strings INTO lv_cell_value INDEX lv_index. - WHEN 'inlineStr'. " inlineStr values are kept in special node - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'is' ). - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - WHEN OTHERS. "other types are stored directly - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - ENDCASE. - - CLEAR lv_style_guid. - "read style based on index - IF ls_cell-s IS NOT INITIAL. - lv_index = ls_cell-s + 1. - READ TABLE styles INTO lo_excel_style INDEX lv_index. - IF sy-subrc = 0. - lv_style_guid = lo_excel_style->get_guid( ). - ENDIF. - ENDIF. - - lo_ixml_formula_elem = lo_ixml_cell_elem->find_from_name( name = 'f' ). - IF lo_ixml_formula_elem IS BOUND. - lv_cell_formula = lo_ixml_formula_elem->get_value( ). -*--------------------------------------------------------------------* -* Begin of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - DATA: BEGIN OF ls_formula_attributes, - ref TYPE string, - si TYPE i, - t TYPE string, - END OF ls_formula_attributes, - ls_ref_formula TYPE ty_ref_formulae. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_formula_elem CHANGING cp_structure = ls_formula_attributes ). - IF ls_formula_attributes-t = 'shared'. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - - TRY. - CLEAR ls_ref_formula. - ls_ref_formula-sheet = io_worksheet. - ls_ref_formula-row = lv_cell_row. - ls_ref_formula-column = zcl_excel_common=>convert_column2int( lv_cell_column ). - ls_ref_formula-si = ls_formula_attributes-si. - ls_ref_formula-ref = ls_formula_attributes-ref. - ls_ref_formula-formula = lv_cell_formula. - INSERT ls_ref_formula INTO TABLE me->mt_ref_formulae. - CATCH cx_root. - BREAK-POINT. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* End of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - ENDIF. - - IF lv_cell_value IS NOT INITIAL - OR lv_cell_formula IS NOT INITIAL - OR lv_style_guid IS NOT INITIAL. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - io_worksheet->set_cell( ip_column = lv_cell_column " cell_elem Column - ip_row = lv_cell_row " cell_elem row_elem - ip_value = lv_cell_value " cell_elem Value - ip_formula = lv_cell_formula - ip_data_type = ls_cell-t - ip_style = lv_style_guid ). - ENDIF. - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - ENDWHILE. - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -*--------------------------------------------------------------------* -*#234 - column width not read correctly - begin of coding -* reason - libre office doesn't use SPAN in row - definitions -*--------------------------------------------------------------------* - IF lv_max_col = 0. - lo_ixml_imension_elem = lo_ixml_worksheet->find_from_name( name = 'dimension' ). - IF lo_ixml_imension_elem IS BOUND. - lv_dimension_range = lo_ixml_imension_elem->get_attribute( 'ref' ). - IF lv_dimension_range CS ':'. - REPLACE REGEX '\D+\d+:(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ELSE. - REPLACE REGEX '(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ENDIF. - lv_max_col = zcl_excel_common=>convert_column2int( lv_dimension_range ). - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -*#234 - column width not read correctly - end of coding -*--------------------------------------------------------------------* - - "Get the customized column width - lo_ixml_columns = lo_ixml_worksheet->get_elements_by_tag_name( name = 'col' ). - lo_ixml_iterator = lo_ixml_columns->create_iterator( ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_column_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_column_elem - CHANGING - cp_structure = ls_column ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int - OR ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int - OR ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int - OR ls_column-outlinelevel > '' - OR ls_column-style > ''. - lv_index = ls_column-min. - WHILE lv_index <= ls_column-max AND lv_index <= lv_max_col. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_index ). - lo_column_dimension = io_worksheet->get_column_dimension( lv_column_alpha ). - - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-width IS NOT INITIAL. "+#234 - lo_column_dimension->set_width( ls_column-width ). - ENDIF. - - IF ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int. - lo_column_dimension->set_auto_size( abap_true ). - ENDIF. - - IF ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int. - lo_column_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int. - lo_column_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_column-outlinelevel > ''. -* outline_level = condense( column-outlineLevel ). - CONDENSE ls_column-outlinelevel. - lv_outline_level = ls_column-outlinelevel. - IF lv_outline_level > 0. - lo_column_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - - IF ls_column-style > ''. - sy-index = ls_column-style + 1. - READ TABLE styles INTO lo_excel_style INDEX sy-index. - DATA: dummy_zexcel_cell_style TYPE zexcel_cell_style. - dummy_zexcel_cell_style = lo_excel_style->get_guid( ). - lo_column_dimension->set_column_style_by_guid( dummy_zexcel_cell_style ). - ENDIF. - - ADD 1 TO lv_index. - ENDWHILE. - ENDIF. -* Fix 207 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 -* IF column-hidden = lc_xml_attr_true OR -* column-hidden = lc_xml_attr_true_int. -* index = column-min. -* WHILE index <= column-max. -* column_alpha = zcl_excel_common=>convert_column2alpha( index ). -* column_dimension = io_worksheet->get_column_dimension( column_alpha ). -* column_dimension->set_visible( abap_false ). -* ADD 1 TO index. -* ENDWHILE. -* ENDIF. - ENDWHILE. - - "Now we need to get information from the sheetView node - lo_ixml_sheetview_elem = lo_ixml_worksheet->find_from_name( name = 'sheetView' ). - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetview_elem CHANGING cp_structure = ls_sheetview ). - IF ls_sheetview-showgridlines IS INITIAL OR - ls_sheetview-showgridlines = lc_xml_attr_true OR - ls_sheetview-showgridlines = lc_xml_attr_true_int. - "If the attribute is not specified or set to true, we will show grid lines - ls_sheetview-showgridlines = abap_true. - ELSE. - ls_sheetview-showgridlines = abap_false. - ENDIF. - io_worksheet->set_show_gridlines( ls_sheetview-showgridlines ). - - - "Add merge cell information - lo_ixml_mergecells = lo_ixml_worksheet->get_elements_by_tag_name( name = 'mergeCell' ). - lo_ixml_iterator = lo_ixml_mergecells->create_iterator( ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_mergecell_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_mergecell_elem - CHANGING - cp_structure = ls_mergecell ). - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = ls_mergecell-ref - IMPORTING - e_column_start = lv_merge_column_start - e_column_end = lv_merge_column_end - e_row_start = lv_merge_row_start - e_row_end = lv_merge_row_end ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - io_worksheet->set_merge( EXPORTING - ip_column_start = lv_merge_column_start - ip_column_end = lv_merge_column_end - ip_row = lv_merge_row_start - ip_row_to = lv_merge_row_end ). - ENDWHILE. - - " read sheet format properties - lo_ixml_sheetformatpr_elem = lo_ixml_worksheet->find_from_name( 'sheetFormatPr' ). - IF lo_ixml_sheetformatpr_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetformatpr_elem CHANGING cp_structure = ls_sheetformatpr ). - IF ls_sheetformatpr-customheight = '1'. - lv_height = ls_sheetformatpr-defaultrowheight. - lo_row_dimension = io_worksheet->get_default_row_dimension( ). - lo_row_dimension->set_row_height( lv_height ). - ENDIF. - - " TODO... column - ENDIF. - - " Read in page margins - lo_ixml_pagemargins_elem = lo_ixml_worksheet->find_from_name( 'pageMargins' ). - IF lo_ixml_pagemargins_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagemargins_elem - CHANGING - cp_structure = ls_pagemargins ). - io_worksheet->sheet_setup->margin_bottom = ls_pagemargins-bottom. - io_worksheet->sheet_setup->margin_footer = ls_pagemargins-footer. - io_worksheet->sheet_setup->margin_header = ls_pagemargins-header. - io_worksheet->sheet_setup->margin_left = ls_pagemargins-left. - io_worksheet->sheet_setup->margin_right = ls_pagemargins-right. - io_worksheet->sheet_setup->margin_top = ls_pagemargins-top. - ENDIF. - - " Read in page setup - lo_ixml_pagesetup_elem = lo_ixml_worksheet->find_from_name( 'pageSetup' ). - IF lo_ixml_pagesetup_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagesetup_elem - CHANGING - cp_structure = ls_pagesetup ). - io_worksheet->sheet_setup->orientation = ls_pagesetup-orientation. - io_worksheet->sheet_setup->scale = ls_pagesetup-scale. - ENDIF. - - " Read header footer - lo_ixml_headerfooter_elem = lo_ixml_worksheet->find_from_name( 'headerFooter' ). - IF lo_ixml_headerfooter_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_headerfooter_elem CHANGING cp_structure = ls_headerfooter ). - io_worksheet->sheet_setup->diff_oddeven_headerfooter = ls_headerfooter-differentoddeven. - - lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name( 'oddFooter' ). - IF lo_ixml_hf_value_elem IS NOT INITIAL. - ls_odd_footer-left_value = lo_ixml_hf_value_elem->get_value( ). - ENDIF. - -* 2do§1 Header/footer - " TODO.. get the rest. - - io_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_odd_header - ip_odd_footer = ls_odd_footer - ip_even_header = ls_even_header - ip_even_footer = ls_even_footer ). - - ENDIF. - - " Start fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - " Read pane - lo_ixml_pane_elem = lo_ixml_sheetview_elem->find_from_name( name = 'pane' ). - IF lo_ixml_pane_elem IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_pane_elem CHANGING cp_structure = ls_excel_pane ). - " Issue #194 - " Replace REGEX with method from the common class - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_excel_pane-topleftcell - IMPORTING - e_column = lv_pane_cell_col_a " Cell Column - e_row = lv_pane_cell_row ). " Natural number - lv_pane_cell_col = zcl_excel_common=>convert_column2int( lv_pane_cell_col_a ). - SUBTRACT 1 FROM: lv_pane_cell_col, - lv_pane_cell_row. - IF lv_pane_cell_col > 0 - AND lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row - ip_num_columns = lv_pane_cell_col ). - ELSEIF lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row ). - ELSE. - io_worksheet->freeze_panes( ip_num_columns = lv_pane_cell_col ). - ENDIF. - ENDIF. - " End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - - " Start fix 276 Read data validations - lo_ixml_datavalidations = lo_ixml_worksheet->get_elements_by_tag_name( name = 'dataValidation' ). - lo_ixml_iterator = lo_ixml_datavalidations->create_iterator( ). - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_datavalidation_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_datavalidation_elem - CHANGING - cp_structure = ls_datavalidation ). - clear lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula1' ). - if lo_ixml_formula_elem is bound. - ls_datavalidation-formula1 = lo_ixml_formula_elem->get_value( ). - endif. - clear lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula2' ). - if lo_ixml_formula_elem is bound. - ls_datavalidation-formula2 = lo_ixml_formula_elem->get_value( ). - endif. - SPLIT ls_datavalidation-sqref AT space INTO TABLE lt_datavalidation_range. - LOOP AT lt_datavalidation_range INTO lv_datavalidation_range. - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_datavalidation_range - IMPORTING - e_column_start = ls_datavalidation-cell_column - e_column_end = ls_datavalidation-cell_column_to - e_row_start = ls_datavalidation-cell_row - e_row_end = ls_datavalidation-cell_row_to ). - lo_data_validation = io_worksheet->add_new_data_validation( ). - lo_data_validation->type = ls_datavalidation-type. - lo_data_validation->allowblank = ls_datavalidation-allowblank. - lo_data_validation->showinputmessage = ls_datavalidation-showinputmessage. - lo_data_validation->showerrormessage = ls_datavalidation-showerrormessage. - lo_data_validation->showdropdown = ls_datavalidation-showdropdown. - lo_data_validation->operator = ls_datavalidation-operator. - lo_data_validation->formula1 = ls_datavalidation-formula1. - lo_data_validation->formula2 = ls_datavalidation-formula2. - lo_data_validation->prompttitle = ls_datavalidation-prompttitle. - lo_data_validation->prompt = ls_datavalidation-prompt. - lo_data_validation->errortitle = ls_datavalidation-errortitle. - lo_data_validation->error = ls_datavalidation-error. - lo_data_validation->errorstyle = ls_datavalidation-errorstyle. - lo_data_validation->cell_row = ls_datavalidation-cell_row. - lo_data_validation->cell_row_to = ls_datavalidation-cell_row_to. - lo_data_validation->cell_column = ls_datavalidation-cell_column. - lo_data_validation->cell_column_to = ls_datavalidation-cell_column_to. - endloop. - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - " End fix 276 Read data validations - - endmethod. - - - - - - method LOAD_WORKSHEET_DRAWING. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: drawing TYPE REF TO if_ixml_document, - anchors TYPE REF TO if_ixml_node_collection, - node TYPE REF TO if_ixml_element, - coll_length TYPE i, - iterator TYPE REF TO if_ixml_node_iterator, - anchor_elem TYPE REF TO if_ixml_element, - - relationship TYPE t_relationship, - rel_drawings TYPE t_rel_drawings, - rel_drawing TYPE t_rel_drawing, - rels_drawing TYPE REF TO if_ixml_document, - rels_drawing_path TYPE string, - stripped_name TYPE chkfile, - dirname TYPE string, - - path TYPE string, - path2 TYPE text255, - file_ext2 TYPE char10. - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = stripped_name - file_path = dirname. - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_drawing_path. - rels_drawing_path = resolve_path( rels_drawing_path ). - rels_drawing = me->get_ixml_from_zip_archive( rels_drawing_path ). - node ?= rels_drawing->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - rel_drawing-id = relationship-id. - - CONCATENATE dirname relationship-target INTO path. - path = resolve_path( path ). - rel_drawing-content = me->get_from_zip_archive( path ). "------------> This is for template usage - - path2 = path. - zcl_excel_common=>split_file( EXPORTING ip_file = path2 - IMPORTING ep_extension = file_ext2 ). - rel_drawing-file_ext = file_ext2. - - "-------------Added by Alessandro Iannacci - Should load graph xml - CASE relationship-type. - WHEN lc_rel_chart. - "Read chart xml - rel_drawing-content_xml = me->get_ixml_from_zip_archive( path ). - WHEN OTHERS. - ENDCASE. - "---------------------------- - - - APPEND rel_drawing TO rel_drawings. - - node ?= node->get_next( ). - ENDWHILE. - - drawing = me->get_ixml_from_zip_archive( ip_path ). - -* one-cell anchor ************** - anchors = drawing->get_elements_by_tag_name( name = 'oneCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - -* two-cell anchor ****************** - anchors = drawing->get_elements_by_tag_name( name = 'twoCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - - endmethod. - - - - - METHOD read_from_applserver. - - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_max_length_line TYPE i, - lv_actual_length_line TYPE i, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - DESCRIBE FIELD ls_binary_data LENGTH lv_max_length_line IN BYTE MODE. - OPEN DATASET lv_filename FOR INPUT IN BINARY MODE. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - WHILE sy-subrc = 0. - - READ DATASET lv_filename INTO ls_binary_data MAXIMUM LENGTH lv_max_length_line ACTUAL LENGTH lv_actual_length_line. - APPEND ls_binary_data TO lt_binary_data. - lv_filelength = lv_filelength + lv_actual_length_line. - - ENDWHILE. - CLOSE DATASET lv_filename. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - ENDMETHOD. - - - - - METHOD read_from_local_file. - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - cl_gui_frontend_services=>gui_upload( EXPORTING - filename = lv_filename - filetype = 'BIN' " We are basically working with zipped directories --> force binary read - IMPORTING - filelength = lv_filelength - CHANGING - data_tab = lt_binary_data - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 ). - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - - ENDMETHOD. - - - - - method RESOLVE_PATH. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Determine whether the replacement should be done -* iterative to allow /../../.. or something alike -* 2do§2 Determine whether /./ has to be supported as well -* 2do§3 Create unit-test for this method -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: replaced previous coding by regular expression -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 This routine will receive a path, that may have a relative pathname (/../) included somewhere -* The output should be a resolved path without relative references -* Example: Input xl/worksheets/../drawings/drawing1.xml -* Output xl/drawings/drawing1.xml -*--------------------------------------------------------------------* - - rp_result = ip_path. -*--------------------------------------------------------------------* -* §1 Remove relative pathnames -*--------------------------------------------------------------------* -* Regular expression [^/]*/\.\./ -* [^/]* --> any number of characters other than / -* followed by /\.\./ --> the sequence /../ -* ==> worksheets/../ will be found in the example -*--------------------------------------------------------------------* - REPLACE REGEX '[^/]*/\.\./' IN rp_result WITH ``. - - - endmethod. - - - method RESOLVE_REFERENCED_FORMULAE. - TYPES: BEGIN OF ty_referenced_cells, - sheet TYPE REF TO zcl_excel_worksheet, - si TYPE i, - row_from TYPE i, - row_to TYPE i, - col_from TYPE i, - col_to TYPE i, - formula TYPE string, - ref_cell TYPE char10, - END OF ty_referenced_cells. - - DATA: ls_ref_formula LIKE LINE OF me->mt_ref_formulae, - lts_referenced_cells TYPE SORTED TABLE OF ty_referenced_cells WITH NON-UNIQUE KEY sheet si row_from row_to col_from col_to, - ls_referenced_cell LIKE LINE OF lts_referenced_cells, - lv_col_from TYPE zexcel_cell_column_alpha, - lv_col_to TYPE zexcel_cell_column_alpha, - lv_resulting_formula TYPE string, - lv_current_cell TYPE char10. - - - me->mt_ref_formulae = me->mt_ref_formulae. - -*--------------------------------------------------------------------* -* Get referenced Cells, Build ranges for easy lookup -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref <> space. - - CLEAR ls_referenced_cell. - ls_referenced_cell-sheet = ls_ref_formula-sheet. - ls_referenced_cell-si = ls_ref_formula-si. - ls_referenced_cell-formula = ls_ref_formula-formula. - - TRY. - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = ls_ref_formula-ref - IMPORTING e_column_start = lv_col_from - e_column_end = lv_col_to - e_row_start = ls_referenced_cell-row_from - e_row_end = ls_referenced_cell-row_to ). - ls_referenced_cell-col_from = zcl_excel_common=>convert_column2int( lv_col_from ). - ls_referenced_cell-col_to = zcl_excel_common=>convert_column2int( lv_col_to ). - - - CLEAR ls_referenced_cell-ref_cell. - TRY. - ls_referenced_cell-ref_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - ls_referenced_cell-ref_cell+3 = ls_ref_formula-row. - CONDENSE ls_referenced_cell-ref_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - INSERT ls_referenced_cell INTO TABLE lts_referenced_cells. - CATCH zcx_excel. - ENDTRY. - - ENDLOOP. - -* break x0009004. -*--------------------------------------------------------------------* -* For each referencing cell determine the referenced cell -* and resolve the formula -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref = space. - - - CLEAR lv_current_cell. - TRY. - lv_current_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - lv_current_cell+3 = ls_ref_formula-row. - CONDENSE lv_current_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - LOOP AT lts_referenced_cells INTO ls_referenced_cell WHERE sheet = ls_ref_formula-sheet - AND si = ls_ref_formula-si - AND row_from <= ls_ref_formula-row - AND row_to >= ls_ref_formula-row - AND col_from <= ls_ref_formula-column - AND col_to >= ls_ref_formula-column. - - TRY. - - lv_resulting_formula = zcl_excel_common=>determine_resulting_formula( iv_reference_cell = ls_referenced_cell-ref_cell - iv_reference_formula = ls_referenced_cell-formula - iv_current_cell = lv_current_cell ). - - ls_referenced_cell-sheet->set_cell_formula( ip_column = ls_ref_formula-column - ip_row = ls_ref_formula-row - ip_formula = lv_resulting_formula ). - CATCH zcx_excel. - ENDTRY. - EXIT. - - ENDLOOP. - - ENDLOOP. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - border_style = zcl_excel_style_border=>c_border_none. - border_color-theme = zcl_excel_style_color=>c_theme_not_set. - border_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS lcl_excel_common_test DEFINITION DEFERRED. -CLASS zcl_excel_common DEFINITION LOCAL FRIENDS lcl_excel_common_test. - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmless - . "#AU Duration Short -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>lcl_Excel_Common_Test -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL_COMMON -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - lx_excel TYPE REF TO zcx_excel, - ls_symsg_act TYPE symsg, " actual messageinformation of exception - ls_symsg_exp TYPE symsg, " expected messageinformation of exception - f_cut TYPE REF TO zcl_excel_common. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. -* METHODS: char2hex FOR TESTING. - METHODS: convert_column2alpha FOR TESTING. - METHODS: convert_column2int FOR TESTING. - METHODS: date_to_excel_string FOR TESTING. - METHODS: encrypt_password FOR TESTING. - METHODS: excel_string_to_date FOR TESTING. - METHODS: excel_string_to_time FOR TESTING. -* METHODS: number_to_excel_string FOR TESTING. - METHODS: time_to_excel_string FOR TESTING. - METHODS: split_file FOR TESTING. - METHODS: convert_range2column_a_row FOR TESTING. - METHODS: describe_structure FOR TESTING. - METHODS: calculate_cell_distance FOR TESTING. - METHODS: shift_formula FOR TESTING. -ENDCLASS. "lcl_Excel_Common_Test - - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test IMPLEMENTATION. -* =========================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - - - METHOD convert_column2alpha. -* ============================ - DATA ep_column TYPE zexcel_cell_column_alpha. - -* Test 1. Simple test - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 1 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column for OXML #16,384 = XFD - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16384 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'XFD' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 0 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum index 0 is out of bounds, min column index is 1' - level = if_aunit_constants=>fatal - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16385 ). - - zcl_excel_common=>assert_differs( - act = ep_column - exp = 'XFE' - msg = 'Colum index 16385 is out of bounds, max column index is 16384' - level = if_aunit_constants=>fatal - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "convert_Column2alpha - - - METHOD convert_column2int. -* ========================== - DATA ep_column TYPE zexcel_cell_column. - -* Test 1. Basic test - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'A' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 1 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFD' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 16384 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( '' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = '0' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - CLEAR: ls_symsg_act, - ls_symsg_exp. - ls_symsg_exp-msgid = 'ZABAP2XLSX'. - ls_symsg_exp-msgno = '800'. - ls_symsg_act-msgid = lx_excel->syst_at_raise-msgid. - ls_symsg_act-msgno = lx_excel->syst_at_raise-msgno. - zcl_excel_common=>assert_equals( act = ls_symsg_act - exp = ls_symsg_exp - msg = 'Colum name should be a valid string' - level = if_aunit_constants=>fatal ). - ENDTRY. - -* Test 4. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFE' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = 16385 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum XFE is out of range' - level = if_aunit_constants=>fatal ). - ENDTRY. - ENDMETHOD. "convert_Column2int - - - METHOD date_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000101' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 1 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000228' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 59 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000301' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 61 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '99991212' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 2958446 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - DATA: lv_date TYPE d. - ep_value = zcl_excel_common=>date_to_excel_string( lv_date ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - DATA exp_value TYPE zexcel_cell_value VALUE 0. - ep_value = zcl_excel_common=>date_to_excel_string( '18991231' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = exp_value - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Dates prior of 1900 are not available in excel' - level = if_aunit_constants=>critical - ). - ENDTRY. - - ENDMETHOD. "date_To_Excel_String - - - METHOD encrypt_password. -* ======================== - DATA lv_encrypted_pwd TYPE zexcel_aes_password. - - TRY. - lv_encrypted_pwd = zcl_excel_common=>encrypt_password( 'test' ). - - zcl_excel_common=>assert_equals( - act = lv_encrypted_pwd - exp = 'CBEB' - msg = 'Wrong password encryption' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - ENDMETHOD. "encrypt_Password - - - METHOD excel_string_to_date. -* ============================ - DATA ep_value TYPE d. - - -* Test 1. Simple test -> ABAP Manage also date prior of 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '18991231' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '59' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000228' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '61' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000301' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000101' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958446' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958447' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '00000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Date - - - METHOD excel_string_to_time. -* ============================ - DATA ep_value TYPE t. - -* Test 1. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0.99999' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '235959' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Also string greater than 1 should be managed - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '4.1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '022400' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. string is not a number - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( 'NaN' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Unable to interpret time' - msg = 'Time should be a valid string' - level = if_aunit_constants=>fatal - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Time - - - METHOD time_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000001' ). - " A test directly in Excel returns the value 0.0000115740740740741000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.0000115740740741' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '235959' ). - " A test directly in Excel returns the value 0.9999884259259260000000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.9999884259259260' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000000' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '022400' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.1000000000000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - ENDMETHOD. "time_To_Excel_String - - METHOD split_file. -* ============================ - - DATA: ep_file TYPE text255, - ep_extension TYPE char10, - ep_dotextension TYPE char10. - - -* Test 1. Basic conversion - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename.xml' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = 'xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '.xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - -* Test 2. no extension - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "split_file - - METHOD convert_range2column_a_row. - DATA: lv_range TYPE string. - DATA: lv_column_start TYPE zexcel_cell_column_alpha, - lv_column_end TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row, - lv_sheet TYPE string. - -* a) input empty --> nothing to do - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 - lv_range = `'Sheet 1'!$B$6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet 1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 - lv_range = `Sheet1!B6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* d) no sheetname - just area example $B$6:$D$13 - lv_range = `$B$6:D13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - ENDMETHOD. "convert_range2column_a_row - - - METHOD describe_structure. - DATA: ls_test TYPE scarr. - DATA: lo_structdescr TYPE REF TO cl_abap_structdescr. - DATA: lt_structure TYPE ddfields. - FIELD-SYMBOLS: <line> LIKE LINE OF lt_structure. - - " Test with DDIC Type - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_test ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'MANDT' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - " Test with local defined structure having DDIC and non DDIC elements - TYPES: - BEGIN OF t_test, - carrid TYPE s_carr_id, - carrname TYPE s_carrname, - carrdesc TYPE string, - END OF t_test. - DATA: ls_ttest TYPE t_test. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_ttest ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'CARRID' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "describe_structure - - - METHOD calculate_cell_distance. - DATA: lv_offset_rows TYPE i, - lv_offset_cols TYPE i, - lv_message TYPE string. - - DEFINE macro_calculate_cell_distance. - zcl_excel_common=>calculate_cell_distance( exporting iv_reference_cell = &1 - iv_current_cell = &2 - importing ev_row_difference = lv_offset_rows - ev_col_difference = lv_offset_cols ). -* Check delta columns - concatenate 'Error calculating column difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_cols - exp = &3 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). -* Check delta rows - concatenate 'Error calculating row difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_rows - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - END-OF-DEFINITION. - - - macro_calculate_cell_distance: - 'C12' 'C12' 0 0 , " Same cell - 'C12' 'C13' 0 1 , " Shift down 1 place - 'C12' 'C25' 0 13 , " Shift down some places - 'C12' 'C11' 0 -1 , " Shift up 1 place - 'C12' 'C1' 0 -11 , " Shift up some place - 'C12' 'D12' 1 0 , " Shift right 1 place - 'C12' 'AA12' 24 0 , " Shift right some places - 'C12' 'B12' -1 0 , " Shift left 1 place - 'AA12' 'C12' -24 0 , " Shift left some place - 'AA121' 'C12' -24 -109 . " The full package. - - ENDMETHOD. "CALCULATE_CELL_DISTANCE - - METHOD shift_formula. - DATA: lv_resulting_formula TYPE string, - lv_message TYPE string, - lv_counter TYPE num8. - - DEFINE macro_shift_formula. - add 1 to lv_counter. - clear lv_resulting_formula. - try. - lv_resulting_formula = zcl_excel_common=>shift_formula( iv_reference_formula = &1 - iv_shift_cols = &2 - iv_shift_rows = &3 ). - concatenate 'Wrong result in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - catch zcx_excel. - concatenate 'Unexpected exception occurred in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - endtry. - END-OF-DEFINITION. - -* Test shifts that should result in a valid output - macro_shift_formula: - 'C17' 0 0 'C17', " Very basic check - 'C17' 2 3 'E20', " Check shift right and down - 'C17' -2 -3 'A14', " Check shift left and up - '$C$17' 1 1 '$C$17', " Fixed columns/rows - 'SUM($C17:C$23)+C30' 1 11 'SUM($C28:D$23)+D41', " Operators and Ranges, mixed fixed rows or columns - 'RNGNAME1+C7' -1 -4 'RNGNAME1+B3', " Operators and Rangename - '"Date:"&TEXT(B2)' 1 1 '"Date:"&TEXT(C3)', " String literals and string concatenation - '[TEST6.XLSX]SHEET1!A1' 1 11 '[TEST6.XLSX]SHEET1!B12', " External sheet reference - `X(B13, "KK" ) ` 1 1 `X(C14,"KK")`, " superflous blanks, multi-argument functions, literals in function, unknown functions -* 'SIN((((((B2))))))' 1 1 'SIN((((((C3))))))', " Deep nesting -* 'SIN(SIN(SIN(SIN(E22))))' 0 1 'SIN(SIN(SIN(SIN(E23))))', " Different type of deep nesting - `SIN(SIN(SIN(SIN(E22))))` 0 1 'SIN(SIN(SIN(SIN(E23))))', " same as above - but with string input instead of Char-input - 'HEUTE()' 2 5 'HEUTE()', " Functions w/o arguments, No cellreferences - '"B2"' 2 5 '"B2"', " No cellreferences - '' 2 5 '', " Empty - 'A1+$A1+A$1+$A$1+B2' -1 0 '#REF!+$A1+#REF!+$A$1+A2', " Referencing error , column only , underflow - 'A1+$A1+A$1+$A$1+B2' 0 -1 '#REF!+#REF!+A$1+$A$1+B1', " Referencing error , row only , underflow - 'A1+$A1+A$1+$A$1+B2' -1 -1 '#REF!+#REF!+#REF!+$A$1+A1'. " Referencing error , row and column , underflow - ENDMETHOD. "SHIFT_FORMULA - - - - - -ENDCLASS. "lcl_Excel_Common_Test - - - - - - - - - - - - - - - - ABAP - - - - - - - - - - - - - - - - - - method ASSERT_DIFFERS. - DATA: ls_seoclass TYPE seoclass. - -" Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -" Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -endmethod. - - - - - - - - - - - METHOD assert_equals. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -ENDMETHOD. - - - - - - - - METHOD calculate_cell_distance. - - DATA: lv_reference_row TYPE i, - lv_reference_col_alpha TYPE zexcel_cell_column_alpha, - lv_reference_col TYPE i, - lv_current_row TYPE i, - lv_current_col_alpha TYPE zexcel_cell_column_alpha, - lv_current_col TYPE i. - -*--------------------------------------------------------------------* -* Split reference cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_reference_cell - IMPORTING - e_column = lv_reference_col_alpha - e_row = lv_reference_row ). - lv_reference_col = convert_column2int( lv_reference_col_alpha ). - -*--------------------------------------------------------------------* -* Split current cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_current_cell - IMPORTING - e_column = lv_current_col_alpha - e_row = lv_current_row ). - lv_current_col = convert_column2int( lv_current_col_alpha ). - -*--------------------------------------------------------------------* -* Calculate row and column difference -* Positive: Current cell below reference cell -* or Current cell right of reference cell -* Negative: Current cell above reference cell -* or Current cell left of reference cell -*--------------------------------------------------------------------* - ev_row_difference = lv_current_row - lv_reference_row. - ev_col_difference = lv_current_col - lv_reference_col. - -ENDMETHOD. - - - - - method CHAR2HEX. - - IF o_conv IS NOT BOUND. - o_conv = cl_abap_conv_out_ce=>create( endian = 'L' - ignore_cerr = abap_true - replacement = '#' ). - ENDIF. - - CALL METHOD o_conv->reset( ). - CALL METHOD o_conv->write( data = i_char ). - r_hex+1 = o_conv->get_buffer( ). " x'65' must be x'0065' - -endmethod. - - - - - - METHOD convert_column2alpha. - - DATA: lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - -* Propagate zcx_excel if error occurs " issue #155 - less restrictive typing for ip_column - lv_column = convert_column2int( ip_column ). " issue #155 - less restrictive typing for ip_column - -*--------------------------------------------------------------------* -* Check whether column is in allowed range for EXCEL to handle ( 1-16384 ) -*--------------------------------------------------------------------* - IF lv_column > 16384 - OR lv_column < 1. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDIF. - -*--------------------------------------------------------------------* -* Build alpha representation of column -*--------------------------------------------------------------------* - WHILE lv_column GT 0. - - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - - ENDWHILE. - -ENDMETHOD. - - - - - - METHOD convert_column2int. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-29 -* - ... -* changes: renaming variables to naming conventions -* removing unused variables -* removing commented out code that is inactive for more then half a year -* message made to support multilinguality -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#246 - error converting lower case column names -* - Stefan Schmöcker, 2012-12-29 -* changes: translating the correct variable to upper dase -* adding missing exception if input is a number -* that is out of bounds -* adding missing exception if input contains -* illegal characters like german umlauts -*--------------------------------------------------------------------* - - DATA: lv_column TYPE zexcel_cell_column_alpha, - lv_column_c TYPE char10, - lv_column_s TYPE string, - lv_errormessage TYPE string, " Can't pass '...'(abc) to exception-class - lv_modulo TYPE i. - -*--------------------------------------------------------------------* -* This module tries to identify which column a user wants to access -* Numbers as input are just passed back, anything else will be converted -* using EXCEL nomenclatura A = 1, AA = 27, ..., XFD = 16384 -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Normalize input ( upper case , no gaps ) -*--------------------------------------------------------------------* - lv_column_c = ip_column. -* TRANSLATE lv_column TO UPPER CASE. " Fix #246 - TRANSLATE lv_column_c TO UPPER CASE. " Fix #246 - CONDENSE lv_column_c NO-GAPS. - IF lv_column_c EQ ''. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* If a number gets passed, just convert it to an integer and return -* the converted value -*--------------------------------------------------------------------* - TRY. - IF lv_column_c CO '1234567890 '. " Fix #164 - ep_column = lv_column_c. " Fix #164 -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - EXIT. - ENDIF. - CATCH cx_sy_conversion_no_number. "#EC NO_HANDLER - " Try the character-approach if approach via number has failed - ENDTRY. - -*--------------------------------------------------------------------* -* Raise error if unexpected characters turns up -*--------------------------------------------------------------------* - lv_column_s = lv_column_c. - IF lv_column_s CN sy-abcde. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* Interpret input as number to base 26 with A=1, ... Z=26 -* Raise error if unexpected character turns up -*--------------------------------------------------------------------* -* 1st character -*--------------------------------------------------------------------* - lv_column = lv_column_c. - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+0(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = lv_modulo. " Leftmost digit - -*--------------------------------------------------------------------* -* 2nd character if present -*--------------------------------------------------------------------* - CHECK lv_column+1(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+1(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if second digit is present first digit is for 26^1 - -*--------------------------------------------------------------------* -* 3rd character if present -*--------------------------------------------------------------------* - CHECK lv_column+2(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+2(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if third digit is present first digit is for 26^2 and second digit for 26^1 - -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -ENDMETHOD. - - - - - - method CONVERT_COLUMNROW2COLUMN_A_ROW. -*--------------------------------------------------------------------* - "issue #256 - replacing char processing with regex -*--------------------------------------------------------------------* -* Stefan Schmöcker, 2013-08-11 -* Allow input to be CLIKE instead of STRING -*--------------------------------------------------------------------* - - DATA: pane_cell_row_a TYPE string, - lv_columnrow type string. - - lv_columnrow = i_columnrow. " Get rid of trailing blanks - - FIND REGEX '^(\D+)(\d+)$' IN lv_columnrow SUBMATCHES e_column - pane_cell_row_a. - e_row = pane_cell_row_a. - -endmethod. - - - - - - - - - - method CONVERT_RANGE2COLUMN_A_ROW. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* added exceptionclass -* added errorhandling for invalid range -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#241 - error when sheetname contains "!" -* - sheetname should be returned unescaped -* - Stefan Schmöcker, 2012-12-07 -* changes: changed coding to support sheetnames with "!" -* unescaping sheetname -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-07 -* changes: i_range changed to clike -* e_sheet changed to clike -*--------------------------------------------------------------------* - - DATA: lv_sheet TYPE string, - lv_range TYPE string, - lv_columnrow_start TYPE string, - lv_columnrow_end TYPE string, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Split input range into sheetname and Area -* 4 cases - a) input empty --> nothing to do -* - b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 -* - c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 -* - d) no sheetname - just area example $B$6:$D$13 -*--------------------------------------------------------------------* -* Initialize output parameters - CLEAR: e_column_start, - e_column_end, - e_row_start, - e_row_end, - e_sheet. - - IF i_range IS INITIAL. " a) input empty --> nothing to do - EXIT. - - ELSEIF i_range(1) = `'`. " b) sheetname existing - starts with ' - FIND REGEX '\![^\!]*$' IN i_range MATCH OFFSET sy-fdpos. " Find last ! - IF sy-subrc = 0. - lv_sheet = i_range(sy-fdpos). - ADD 1 TO sy-fdpos. - lv_range = i_range. - SHIFT lv_range LEFT BY sy-fdpos PLACES. - ELSE. - lv_errormessage = 'Invalid range'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ELSEIF i_range CS '!'. " c) sheetname existing - does not start with ' - SPLIT i_range AT '!' INTO lv_sheet lv_range. - - ELSE. " d) no sheetname - just area - lv_range = i_range. - ENDIF. - - REPLACE ALL OCCURRENCES OF '$' IN lv_range WITH ''. - SPLIT lv_range AT ':' INTO lv_columnrow_start lv_columnrow_end. - - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_start - IMPORTING - e_column = e_column_start - e_row = e_row_start ). - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_end - IMPORTING - e_column = e_column_end - e_row = e_row_end ). - - e_sheet = unescape_string( lv_sheet ). " Return in unescaped form -endmethod. - - - - - method DATE_TO_EXCEL_STRING. - DATA: lv_date_diff TYPE i. - - CHECK ip_value IS NOT INITIAL. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ip_value > c_excel_1900_leap_year. - lv_date_diff = ip_value - c_excel_baseline_date + 2. - ELSE. - lv_date_diff = ip_value - c_excel_baseline_date + 1. - ENDIF. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_date_diff ). -endmethod. - - - - - method DESCRIBE_STRUCTURE. - DATA: lt_components TYPE abap_component_tab, - lt_comps TYPE abap_component_tab, - lo_struct TYPE REF TO cl_abap_structdescr, - ls_component TYPE abap_componentdescr, - lo_elemdescr TYPE REF TO cl_abap_elemdescr, - ls_dfies TYPE dfies, - l_position TYPE tabfdpos. - - "for DDIC structure get the info directly - IF io_struct->is_ddic_type( ) = abap_true. - rt_dfies = io_struct->get_ddic_field_list( ). - ELSE. - lt_components = io_struct->get_components( ). - - LOOP AT lt_components INTO ls_component. - structure_case( EXPORTING is_component = ls_component - CHANGING xt_components = lt_comps ) . - ENDLOOP. - LOOP AT lt_comps INTO ls_component. - CLEAR ls_dfies. - IF ls_component-type->kind = cl_abap_typedescr=>kind_elem. "E Elementary Type - ADD 1 TO l_position. - lo_elemdescr ?= ls_component-type. - IF lo_elemdescr->is_ddic_type( ) = abap_true. - ls_dfies = lo_elemdescr->get_ddic_field( ). - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ELSE. - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ls_dfies-inttype = lo_elemdescr->type_kind. - ls_dfies-leng = lo_elemdescr->length. - ls_dfies-outputlen = lo_elemdescr->length. - ls_dfies-decimals = lo_elemdescr->decimals. - ls_dfies-fieldtext = ls_component-name. - ls_dfies-reptext = ls_component-name. - ls_dfies-scrtext_s = ls_component-name. - ls_dfies-scrtext_m = ls_component-name. - ls_dfies-scrtext_l = ls_component-name. - ls_dfies-dynpfld = abap_true. - ENDIF. - INSERT ls_dfies INTO TABLE rt_dfies. - ENDIF. - ENDLOOP. - ENDIF. -endmethod. - - - - - - - - METHOD determine_resulting_formula. - - DATA: lv_row_difference TYPE i, - lv_col_difference TYPE i. - -*--------------------------------------------------------------------* -* Calculate distance of reference and current cell -*--------------------------------------------------------------------* - calculate_cell_distance( EXPORTING - iv_reference_cell = iv_reference_cell - iv_current_cell = iv_current_cell - IMPORTING - ev_row_difference = lv_row_difference - ev_col_difference = lv_col_difference ). - -*--------------------------------------------------------------------* -* and shift formula by using the row- and columndistance -*--------------------------------------------------------------------* - ev_resulting_formula = shift_formula( iv_reference_formula = iv_reference_formula - iv_shift_rows = lv_row_difference - iv_shift_cols = lv_col_difference ). - -ENDMETHOD. "determine_resulting_formula - - - - - method ENCRYPT_PASSWORD. - - DATA lv_curr_offset TYPE i. - DATA lv_curr_char TYPE c LENGTH 1. - DATA lv_curr_hex TYPE zexcel_pwd_hash. - DATA lv_pwd_len TYPE zexcel_pwd_hash. - DATA lv_pwd_hash TYPE zexcel_pwd_hash. - - CONSTANTS: - lv_0x7fff TYPE zexcel_pwd_hash VALUE '7FFF', - lv_0x0001 TYPE zexcel_pwd_hash VALUE '0001', - lv_0xce4b TYPE zexcel_pwd_hash VALUE 'CE4B'. - - DATA lv_pwd TYPE zexcel_aes_password. - - lv_pwd = i_pwd(15). - - lv_pwd_len = STRLEN( lv_pwd ). - lv_curr_offset = lv_pwd_len - 1. - - WHILE lv_curr_offset GE 0. - - lv_curr_char = lv_pwd+lv_curr_offset(1). - lv_curr_hex = char2hex( lv_curr_char ). - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex. - SUBTRACT 1 FROM lv_curr_offset. - ENDWHILE. - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b. - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len. - - WRITE lv_pwd_hash TO r_encrypted_pwd. - -endmethod. - - - - - method ESCAPE_STRING. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-08 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#242 - Support escaping for white-spaces -* - Escaping also necessary when ' encountered in input -* - Stefan Schmöcker, 2012-12-08 -* changes: switched check if escaping is necessary to regular expression -* and moved the "REPLACE" -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-08 -* changes: ip_value changed to clike -*--------------------------------------------------------------------* - DATA: lv_value TYPE string. - -*--------------------------------------------------------------------* -* There exist various situations when a space will be used to separate -* different parts of a string. When we have a string consisting spaces -* that will cause errors unless we "escape" the string by putting ' at -* the beginning and at the end of the string. -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -* Now any remaining spaces ( white-spaces or normal spaces ) should -* trigger the escaping as well as any ' -*--------------------------------------------------------------------* - lv_value = ip_value. - - - FIND REGEX `\s|'` IN lv_value. " \s finds regular and white spaces - IF sy-subrc = 0. - REPLACE ALL OCCURRENCES OF `'` IN lv_value WITH `''`. - CONCATENATE `'` lv_value `'` INTO lv_value . - ENDIF. - - ep_escaped_value = lv_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_DATE. - DATA: lv_date_int TYPE i. - - TRY. - lv_date_int = ip_value. - ep_value = lv_date_int + c_excel_baseline_date - 2. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ep_value < c_excel_1900_leap_year. - ep_value = ep_value + 1. - ENDIF. - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDTRY. -endmethod. - - - - - - method EXCEL_STRING_TO_TIME. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_seconds_in_day TYPE i VALUE 86400. - - TRY. - - lv_day_fraction = ip_value. - lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day. - - ep_value = lv_seconds_in_day. - - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret time'. - ENDTRY. -endmethod. - - - - - - - method FAIL. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. - -endmethod. - - - - - method GET_FIELDCATALOG. - DATA: lr_dref_tab TYPE REF TO data, - lo_salv_table TYPE REF TO cl_salv_table, - lo_salv_columns_table TYPE REF TO cl_salv_columns_table, - lt_salv_t_column_ref TYPE salv_t_column_ref, - ls_salv_t_column_ref LIKE LINE OF lt_salv_t_column_ref, - lo_salv_column_table TYPE REF TO cl_salv_column_table. - - FIELD-SYMBOLS: <tab> TYPE STANDARD TABLE. - FIELD-SYMBOLS: <fcat> LIKE LINE OF ep_fieldcatalog. - -* Get copy of IP_TABLE-structure <-- must be changeable to create salv - CREATE DATA lr_dref_tab LIKE ip_table. - ASSIGN lr_dref_tab->* TO <tab>. -* Create salv --> implicitly create fieldcat - TRY. - cl_salv_table=>factory( IMPORTING - r_salv_table = lo_salv_table - CHANGING - t_table = <tab> ). - lo_salv_columns_table = lo_salv_table->get_columns( ). - lt_salv_t_column_ref = lo_salv_columns_table->get( ). - CATCH cx_root. -* maybe some errorhandling here - just haven't made up my mind yet - ENDTRY. - -* Loop through columns and set relevant fields ( fieldname, texts ) - LOOP AT lt_salv_t_column_ref INTO ls_salv_t_column_ref. - - lo_salv_column_table ?= ls_salv_t_column_ref-r_column. - APPEND INITIAL LINE TO ep_fieldcatalog ASSIGNING <fcat>. - <fcat>-position = sy-tabix. - <fcat>-fieldname = ls_salv_t_column_ref-columnname. - <fcat>-scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ). - <fcat>-scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ). - <fcat>-scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ). - - <fcat>-dynpfld = 'X'. " What in the world would we exclude here? - IF <fcat>-position = 1. " except for the MANDT-field of most tables ( 1st column that is ) - IF lo_salv_column_table->get_ddic_datatype( ) = 'CLNT'. - CLEAR <fcat>-dynpfld. - ENDIF. - ENDIF. - -* For fields that don't a description ( i.e. defined by "field type i," ) -* just use the fieldname as description - that is better than nothing - IF <fcat>-scrtext_s IS INITIAL - AND <fcat>-scrtext_m IS INITIAL - AND <fcat>-scrtext_l IS INITIAL. - CONCATENATE 'Col:' <fcat>-fieldname INTO <fcat>-scrtext_l SEPARATED BY space. - <fcat>-scrtext_m = <fcat>-scrtext_l. - <fcat>-scrtext_s = <fcat>-scrtext_l. - ENDIF. - - ENDLOOP. - -endmethod. - - - - - method NUMBER_TO_EXCEL_STRING. - DATA: lv_value_c TYPE c LENGTH 100. - - WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN. - REPLACE ALL OCCURRENCES OF ',' IN lv_value_c WITH '.'. - - ep_value = lv_value_c. - CONDENSE ep_value. - - IF ip_value < 0. - CONCATENATE '-' ep_value INTO ep_value. - ELSEIF ip_value EQ 0. - ep_value = '0'. - ENDIF. -endmethod. - - - - - - method RECURSIVE_CLASS_TO_STRUCT. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any. - - - descr ?= cl_abap_structdescr=>describe_by_data( e_target ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_targetx TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CLEAR flag_class. -* maybe source is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'i_source->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0. - EXIT. - ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursio -* IF flag_class = abap_true. -** Only borders will be passed as unbound references. But since we want to set a value we have to create an instance -* ENDIF. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = <attribute> - CHANGING e_target = <field> - e_targetx = <fieldx> ). - WHEN OTHERS. - <field> = <attribute>. - <fieldx> = abap_true. - - ENDCASE. - ENDLOOP. - -endmethod. - - - - - - method RECURSIVE_STRUCT_TO_CLASS. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any, - <attribute_s> TYPE ANY TABLE. - - - descr ?= cl_abap_structdescr=>describe_by_data( i_source ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_sourcex TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CHECK <fieldx> CA abap_true. - CLEAR flag_class. -* maybe target is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'E_TARGET->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0.EXIT.ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursion - IF flag_class = abap_true AND <attribute> IS INITIAL. -* Only borders will be passed as unbound references. But since we want to set a value we have to create an instance - CREATE OBJECT o_border. - <attribute> = o_border. - ENDIF. - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <field> - i_sourcex = <fieldx> - CHANGING e_target = <attribute> ). -* WHEN cl_abap_structdescr=>typekind_struct2. " String -* CHECK <fieldx> = abap_true. " Marked for change -* <attribute_s> = <field>. - WHEN OTHERS. - CHECK <fieldx> = abap_true. " Marked for change - <attribute> = <field>. - - ENDCASE. - ENDLOOP. - -endmethod. - - - - - - - - METHOD shift_formula. - - CONSTANTS: lcv_operators TYPE string VALUE '+-/*^%=<>&, !', - lcv_letters TYPE string VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$', - lcv_digits TYPE string VALUE '0123456789', - lcv_cell_reference_error TYPE string VALUE '#REF!'. - - DATA: lv_tcnt TYPE i, " Counter variable - lv_tlen TYPE i, " Temp variable length - lv_cnt TYPE i, " Counter variable - lv_cnt2 TYPE i, " Counter variable - lv_offset1 TYPE i, " Character offset - lv_numchars TYPE i, " Number of characters counter - lv_tchar(1) TYPE c, " Temp character - lv_tchar2(1) TYPE c, " Temp character - lv_cur_form(132) TYPE c, " Formula for current cell - lv_ref_cell_addr TYPE string, " Reference cell address - lv_tcol1 TYPE string, " Temp column letter - lv_tcol2 TYPE string, " Temp column letter - lv_tcoln TYPE i, " Temp column number - lv_trow1 TYPE string, " Temp row number - lv_trow2 TYPE string, " Temp row number - lv_flen TYPE i, " Length of reference formula - lv_tlen2 TYPE i, " Temp variable length - lv_substr1 TYPE string, " Substring variable - lv_abscol TYPE string, " Absolute column symbol - lv_absrow TYPE string, " Absolute row symbol - - lv_errormessage TYPE string. - - FIELD-SYMBOLS: <find_my_include> TYPE ANY. - -*--------------------------------------------------------------------* -* When copying a cell in EXCEL to another cell any inherent formulas -* are copied as well. Cell-references in the formula are being adjusted -* by the distance of the new cell to the original one -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -* §2 Identify Cell-references -* §3 Shift cell-reference -* §4 Build resulting formula -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* No distance --> Reference = resulting cell/formula -*--------------------------------------------------------------------* - IF iv_shift_cols = 0 - AND iv_shift_rows = 0. - ev_resulting_formula = iv_reference_formula. - EXIT. " done - ENDIF. - - - lv_flen = STRLEN( iv_reference_formula ). - lv_numchars = 1. - -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -*--------------------------------------------------------------------* - DO lv_flen TIMES. - - CLEAR: lv_tchar, - lv_substr1, - lv_ref_cell_addr. - lv_cnt2 = lv_cnt + 1. - IF lv_cnt2 > lv_flen. - EXIT. " Done - ENDIF. - -*--------------------------------------------------------------------* -* Here we have the current character in the formula -*--------------------------------------------------------------------* - lv_tchar = iv_reference_formula+lv_cnt(1). - -*--------------------------------------------------------------------* -* Operators or opening parenthesis will separate possible cellreferences -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators - OR lv_tchar CA '(' ) - AND lv_cnt2 = 1. - lv_substr1 = iv_reference_formula+lv_offset1(1). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - -*--------------------------------------------------------------------* -* Quoted literal text holds no cell reference --> advance to end of text -*--------------------------------------------------------------------* - IF lv_tchar EQ '"'. - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - WHILE lv_tchar NE '"'. - - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - - ENDWHILE. - lv_cnt2 = lv_cnt + 1. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - IF lv_cnt = lv_flen. - EXIT. - ENDIF. - lv_offset1 = lv_cnt. - lv_numchars = 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - lv_cnt2 = lv_cnt + 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - -*--------------------------------------------------------------------* -* Operators or parenthesis or last character in formula will separate possible cellreferences -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA '():' - OR lv_cnt2 = lv_flen. - IF lv_cnt > 0. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). -*--------------------------------------------------------------------* -* Check for text concatenation and functions -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators AND lv_tchar EQ lv_substr1 ) OR lv_tchar EQ '('. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - lv_tlen = lv_cnt2 - lv_offset1. -*--------------------------------------------------------------------* -* Exclude mathematical operators and closing parentheses -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - IF lv_cnt2 = lv_flen - AND lv_numchars = 1. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ELSE. - lv_tlen = lv_tlen - 1. - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -* Capture reference cell address -*--------------------------------------------------------------------* - TRY. - MOVE: iv_reference_formula+lv_offset1(lv_tlen) TO lv_ref_cell_addr. "Ref cell address - CATCH cx_root. - lv_errormessage = 'Internal error in Class ZCL_EXCEL_COMMON Method SHIFT_FORMULA Spot 1 '. " Change to messageclass if possible - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - -*--------------------------------------------------------------------* -* Split cell address into characters and numbers -*--------------------------------------------------------------------* - CLEAR: lv_tlen, - lv_tcnt, - lv_tcol1, - lv_trow1. - lv_tlen = STRLEN( lv_ref_cell_addr ). - IF lv_tlen <> 0. - CLEAR: lv_tcnt. - DO lv_tlen TIMES. - CLEAR: lv_tchar2. - lv_tchar2 = lv_ref_cell_addr+lv_tcnt(1). - IF lv_tchar2 CA lcv_letters. - CONCATENATE lv_tcol1 lv_tchar2 INTO lv_tcol1. - ELSEIF lv_tchar2 CA lcv_digits. - CONCATENATE lv_trow1 lv_tchar2 INTO lv_trow1. - ENDIF. - lv_tcnt = lv_tcnt + 1. - ENDDO. - ENDIF. -*--------------------------------------------------------------------* -* Check for invalid cell address -*--------------------------------------------------------------------* - IF lv_tcol1 IS INITIAL OR lv_trow1 IS INITIAL. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for range names -*--------------------------------------------------------------------* - CLEAR: lv_tlen. - lv_tlen = STRLEN( lv_tcol1 ). - IF lv_tlen GT 3. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for valid row -*--------------------------------------------------------------------* - IF lv_trow1 GT 1048576. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for absolute column or row reference -*--------------------------------------------------------------------* - CLEAR: lv_tcol2, - lv_trow2, - lv_abscol, - lv_absrow. - lv_tlen2 = STRLEN( lv_tcol1 ) - 1. - IF lv_tcol1 IS NOT INITIAL. - lv_abscol = lv_tcol1(1). - ENDIF. - IF lv_tlen2 GE 0. - lv_absrow = lv_tcol1+lv_tlen2(1). - ENDIF. - IF lv_abscol EQ '$' AND lv_absrow EQ '$'. - lv_tlen2 = lv_tlen2 - 1. - IF lv_tlen2 > 0. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ENDIF. - lv_tlen2 = lv_tlen2 + 1. - ELSEIF lv_abscol EQ '$'. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ELSEIF lv_absrow EQ '$'. - lv_tcol1 = lv_tcol1(lv_tlen2). - ENDIF. -*--------------------------------------------------------------------* -* Check for valid column -*--------------------------------------------------------------------* - TRY. - lv_tcoln = zcl_excel_common=>convert_column2int( lv_tcol1 ) + iv_shift_cols. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. -*--------------------------------------------------------------------* -* Check whether there is a referencing problem -*--------------------------------------------------------------------* - lv_trow2 = lv_trow1 + iv_shift_rows. - IF ( lv_tcoln < 1 AND lv_abscol <> '$' ) " Maybe we should add here max-column and max row-tests as well. - OR ( lv_trow2 < 1 AND lv_absrow <> '$' ). " Check how EXCEL behaves in this case -*--------------------------------------------------------------------* -* Referencing problem encountered --> set error -*--------------------------------------------------------------------* - CONCATENATE lv_cur_form lcv_cell_reference_error INTO lv_cur_form. - ELSE. -*--------------------------------------------------------------------* -* No referencing problems --> adjust row and column -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Adjust column -*--------------------------------------------------------------------* - IF lv_abscol EQ '$'. - CONCATENATE lv_cur_form lv_abscol lv_tcol1 INTO lv_cur_form. - ELSEIF iv_shift_cols EQ 0. - CONCATENATE lv_cur_form lv_tcol1 INTO lv_cur_form. - ELSE. - TRY. - lv_tcol2 = zcl_excel_common=>convert_column2alpha( lv_tcoln ). - CONCATENATE lv_cur_form lv_tcol2 INTO lv_cur_form. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* Adjust row -*--------------------------------------------------------------------* - IF lv_absrow EQ '$'. - CONCATENATE lv_cur_form lv_absrow lv_trow1 INTO lv_cur_form. - ELSEIF iv_shift_rows = 0. - CONCATENATE lv_cur_form lv_trow1 INTO lv_cur_form. -* elseif lv_trow2 < 1. -* CONCATENATE lv_cur_form lc_cell_reference_error INTO lv_cur_form. - ELSE. - CONCATENATE lv_cur_form lv_trow2 INTO lv_cur_form. - ENDIF. - ENDIF. - - lv_numchars = 0. - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - CONCATENATE lv_cur_form lv_tchar INTO lv_cur_form. - ENDIF. - lv_offset1 = lv_cnt2. - ENDIF. - ENDIF. - lv_numchars = lv_numchars + 1. - lv_cnt = lv_cnt + 1. - lv_cnt2 = lv_cnt + 1. - - ENDDO. - - - -*--------------------------------------------------------------------* -* Return resulting formula -*--------------------------------------------------------------------* - IF lv_cur_form IS NOT INITIAL. - MOVE lv_cur_form TO ev_resulting_formula. - ENDIF. - -ENDMETHOD. - - - - - method SHL01. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i VALUE 2, - lv_prev_pos TYPE i VALUE 1. - - DO 15 TIMES. - GET BIT lv_curr_pos OF i_pwd_hash INTO lv_bit. - SET BIT lv_prev_pos OF r_pwd_hash TO lv_bit. - ADD 1 TO lv_curr_pos. - ADD 1 TO lv_prev_pos. - ENDDO. - SET BIT 16 OF r_pwd_hash TO 0. - -endmethod. - - - - - method SHR14. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i, - lv_next_pos TYPE i. - - r_pwd_hash = i_pwd_hash. - - DO 14 TIMES. - lv_curr_pos = 15. - lv_next_pos = 16. - - DO 15 TIMES. - GET BIT lv_curr_pos OF r_pwd_hash INTO lv_bit. - SET BIT lv_next_pos OF r_pwd_hash TO lv_bit. - SUBTRACT 1 FROM lv_curr_pos. - SUBTRACT 1 FROM lv_next_pos. - ENDDO. - SET BIT 1 OF r_pwd_hash TO 0. - ENDDO. - -endmethod. - - - - - - - method SPLIT_FILE. - - DATA: lt_hlp TYPE TABLE OF text255, - ls_hlp TYPE text255. - - DATA: lf_ext(10) TYPE c, - lf_dot_ext(10) TYPE c. - DATA: lf_str TYPE text255, - lf_anz TYPE i, - lf_len TYPE i. -** --------------------------------------------------------------------- - - CLEAR: lt_hlp, - ep_file, - ep_extension, - ep_dotextension. - -** Split the whole file at '.' - SPLIT ip_file AT '.' INTO TABLE lt_hlp. - -** get the extenstion from the last line of table - DESCRIBE TABLE lt_hlp LINES lf_anz. - IF lf_anz <= 1. - ep_file = ip_file. - EXIT. - ENDIF. - - READ TABLE lt_hlp INTO ls_hlp INDEX lf_anz. - ep_extension = ls_hlp. - lf_ext = ls_hlp. - IF NOT lf_ext IS INITIAL. - CONCATENATE '.' lf_ext INTO lf_dot_ext. - ENDIF. - ep_dotextension = lf_dot_ext. - -** get only the filename - lf_len = strlen( ip_file ) - strlen( lf_dot_ext ). - IF lf_len > 0. - ep_file = ip_file(lf_len). - ENDIF. - -endmethod. - - - - - method STRUCTURE_CASE. - DATA: lt_comp_str TYPE abap_component_tab. - - CASE is_component-type->kind. - WHEN cl_abap_typedescr=>kind_elem. "E Elementary Type - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_table. "T Table - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_struct. "S Structure - lt_comp_str = structure_recursive( is_component = is_component ). - INSERT LINES OF lt_comp_str INTO TABLE xt_components. - WHEN OTHERS. "cl_abap_typedescr=>kind_ref or cl_abap_typedescr=>kind_class or cl_abap_typedescr=>kind_intf. -* We skip it. for now. - ENDCASE. -endmethod. - - - - - method STRUCTURE_RECURSIVE. - DATA: lo_struct TYPE REF TO cl_abap_structdescr, - lt_components TYPE abap_component_tab, - ls_components TYPE abap_componentdescr. - - REFRESH rt_components. - - lo_struct ?= is_component-type. - lt_components = lo_struct->get_components( ). - - LOOP AT lt_components INTO ls_components. - structure_case( EXPORTING is_component = ls_components - CHANGING xt_components = rt_components ) . - ENDLOOP. - -endmethod. - - - - - method TIME_TO_EXCEL_STRING. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_time_baseline TYPE t VALUE '000000', - lc_seconds_in_day TYPE i VALUE 86400. - - lv_seconds_in_day = ip_value - lc_time_baseline. - lv_day_fraction = lv_seconds_in_day / lc_seconds_in_day. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_day_fraction ). -endmethod. - - - - - - method UNESCAPE_STRING. - - CONSTANTS lcv_regex TYPE string VALUE `^'[^']` & `|` & " Beginning single ' OR - `[^']'$` & `|` & " Trailing single ' OR - `[^']'[^']`. " Single ' somewhere in between - - - DATA: lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - -*--------------------------------------------------------------------* -* This method is used to extract the "real" string from an escaped string. -* An escaped string can be identified by a beginning ' which must be -* accompanied by a trailing ' -* All '' in between beginning and trailing ' are treated as single ' -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -*--------------------------------------------------------------------* - ev_unescaped_string = iv_escaped. " Pass through if not escaped - - CHECK ev_unescaped_string IS NOT INITIAL. " Nothing to do if empty - CHECK ev_unescaped_string(1) = `'`. " Nothing to do if not escaped - -*--------------------------------------------------------------------* -* Remove leading and trailing ' -*--------------------------------------------------------------------* - REPLACE REGEX `^'(.*)'$` IN ev_unescaped_string WITH '$1'. - IF sy-subrc <> 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Any remaining single ' should not be here -*--------------------------------------------------------------------* - FIND REGEX lcv_regex IN ev_unescaped_string. - IF sy-subrc = 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Replace '' with ' -*--------------------------------------------------------------------* - REPLACE ALL OCCURRENCES OF `''` IN ev_unescaped_string WITH `'`. - - -endmethod. - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS zcl_tc_excel DEFINITION DEFERRED. -CLASS zcl_excel DEFINITION LOCAL FRIENDS zcl_tc_excel. - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel DEFINITION FOR TESTING - DURATION SHORT - RISK LEVEL HARMLESS -. -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>zcl_Tc_Excel -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - f_cut TYPE REF TO zcl_excel. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. - METHODS: create_empty_excel FOR TESTING. - -ENDCLASS. "zcl_Tc_Excel - - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel IMPLEMENTATION. -* ================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - -*// START TEST METHODS - - METHOD create_empty_excel. -* ================================== - - DATA: lv_count TYPE i. - lv_count = f_cut->get_worksheets_size( ). - - cl_abap_unit_assert=>assert_equals( act = lv_count - exp = 1 - msg = 'Testing number of sheet' - level = if_aunit_constants=>tolerable ). - ENDMETHOD. "create_empty_excel - -*// END TEST METHODS - - -ENDCLASS. "zcl_Tc_Excel - - - - - - - - - - - - - - method ZIF_EXCEL_BOOK_PROPERTIES~INITIALIZE. - DATA: lv_timestamp TYPE timestampl. - - me->zif_excel_book_properties~application = 'Microsoft Excel'. - me->zif_excel_book_properties~appversion = '12.0000'. - - GET TIME STAMP FIELD lv_timestamp. - me->zif_excel_book_properties~created = lv_timestamp. - me->zif_excel_book_properties~creator = sy-uname. - me->zif_excel_book_properties~description = 'Generated with ABAP2XLSX Version 7_0'. - me->zif_excel_book_properties~modified = lv_timestamp. - me->zif_excel_book_properties~lastmodifiedby = sy-uname. - endmethod. - - - method ZIF_EXCEL_BOOK_PROTECTION~INITIALIZE. - me->zif_excel_book_protection~protected = zif_excel_book_protection=>c_unprotected. - me->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_unlocked. - CLEAR me->zif_excel_book_protection~workbookpassword. - CLEAR me->zif_excel_book_protection~revisionspassword. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME. - me->zif_excel_book_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_book_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_VBAPROJECT. - me->zif_excel_book_vba_project~vbaproject = ip_vbaproject. - endmethod. - - - - - method ADD_NEW_AUTOFILTER. -* Check for autofilter reference: new or overwrite; only one per sheet - ro_autofilter = autofilters->add( io_sheet = io_sheet ) . - endmethod. - - - - - - method ADD_NEW_DRAWING. - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_drawing - EXPORTING - ip_type = ip_type - ip_title = ip_title. - - CASE ip_type. - WHEN 'image'. - drawings->add( eo_drawing ). - WHEN 'chart'. - charts->add( eo_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - method ADD_NEW_STYLE. -* Start of deletion # issue 139 - Dateretention of cellstyles -* CREATE OBJECT eo_style. -* styles->add( eo_style ). -* End of deletion # issue 139 - Dateretention of cellstyles -* Start of insertion # issue 139 - Dateretention of cellstyles -* Create default style - CREATE OBJECT eo_style - EXPORTING - ip_guid = ip_guid. - styles->add( eo_style ). - - DATA: style2 TYPE zexcel_s_stylemapping. -* Copy to new representations - style2 = stylemapping_dynamic_style( eo_style ). - INSERT style2 INTO TABLE t_stylemapping1. - INSERT style2 INTO TABLE t_stylemapping2. -* End of insertion # issue 139 - Dateretention of cellstyles - - endmethod. - - - - - - method ADD_NEW_WORKSHEET. - DATA: lv_guid TYPE guid_16. - -* Create default blank worksheet - CREATE OBJECT eo_worksheet - EXPORTING - ip_excel = me - ip_title = ip_title. - - worksheets->add( eo_worksheet ). - worksheets->active_worksheet = worksheets->size( ). - endmethod. - - - method ADD_STATIC_STYLES. - " # issue 139 -* sp#ƒÂ¤ter hier noch die Worksheets abklappern, welche Styles #ƒÂ#berhaupt noch ben#ƒÂ#tigt werden -* und nur diese dann auch hier zur Verf#ƒÂ#gung stellen -* Da muss ich noch mal nachfragen, ob die beiden ersten Styles, die scheinbar immer mit dem -* EXCEL-Objekt erzeugt werden evtl. immer ben#ƒÂ#tigt werden, egal ob verwendet oder nicht -* Aber als Start fange ich mal an einfach alle static styles der Reihe nach hinzuzuf#ƒÂ#gen - FIELD-SYMBOLS: <style1> LIKE LINE OF t_stylemapping1, - <style2> LIKE LINE OF t_stylemapping2. - DATA: style TYPE REF TO zcl_excel_style. - - LOOP AT me->t_stylemapping1 ASSIGNING <style1> WHERE added_to_iterator IS INITIAL. - READ TABLE me->t_stylemapping2 ASSIGNING <style2> WITH TABLE KEY guid = <style1>-guid. - CHECK sy-subrc = 0. " Should always be true since these tables are being filled parallel - - style = me->add_new_style( <style1>-guid ). - - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <style1>-complete_style - i_sourcex = <style1>-complete_stylex - CHANGING e_target = style ). - - ENDLOOP. - endmethod. - - - method CONSTRUCTOR. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style. - -* Inizialize instance objects - CREATE OBJECT security. - CREATE OBJECT worksheets. - CREATE OBJECT ranges. - CREATE OBJECT styles. - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - CREATE OBJECT legacy_palette. - CREATE OBJECT autofilters. - - me->zif_excel_book_protection~initialize( ). - me->zif_excel_book_properties~initialize( ). - - me->add_new_worksheet( ). - me->add_new_style( ). " Standard style - lo_style = me->add_new_style( ). " Standard style with fill gray125 - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_pattern_gray125. - - endmethod. - - - - method GET_ACTIVE_SHEET_INDEX. - r_active_worksheet = me->worksheets->active_worksheet. - endmethod. - - - - method GET_ACTIVE_WORKSHEET. - - eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). - - endmethod. - - - - method GET_AUTOFILTERS_REFERENCE. - - ro_autofilters = autofilters. - - endmethod. - - - - method GET_DEFAULT_STYLE. - ep_style = me->default_style. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = me->drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = me->charts->get_iterator( ). - WHEN OTHERS. - ENDCASE. - - endmethod. - - - - method GET_NEXT_TABLE_ID. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_tables_count TYPE i. - - lo_iterator = me->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_tables_count = lo_worksheet->get_tables_size( ). - ADD lv_tables_count TO ep_id. - - ENDWHILE. - - ADD 1 TO ep_id. - - endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - - method GET_STATIC_CELLSTYLE_GUID. -" # issue 139 - DATA: style LIKE LINE OF me->t_stylemapping1. - - READ TABLE me->t_stylemapping1 INTO style - WITH TABLE KEY dynamic_style_guid = style-guid " no dynamic style --> look for initial guid here - complete_style = ip_cstyle_complete - complete_stylex = ip_cstylex_complete. - IF sy-subrc <> 0. - style-complete_style = ip_cstyle_complete. - style-complete_stylex = ip_cstylex_complete. - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = style-guid. - INSERT style INTO TABLE me->t_stylemapping1. - INSERT style INTO TABLE me->t_stylemapping2. - - ENDIF. - - ep_guid = style-guid. - endmethod. - - - - method GET_STYLES_ITERATOR. - - eo_iterator = me->styles->get_iterator( ). - - endmethod. - - - - - - method GET_STYLE_INDEX_IN_STYLES. - DATA: index TYPE syindex. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style TYPE REF TO zcl_excel_style. - - CHECK ip_guid IS NOT INITIAL. - - - lo_iterator = me->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) = 'X'. - ADD 1 TO index. - lo_style ?= lo_iterator->get_next( ). - IF lo_style->get_guid( ) = ip_guid. - ep_index = index. - EXIT. - ENDIF. - ENDWHILE. - - IF ep_index IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index not found'. - else. - SUBTRACT 1 from ep_index. " In excel list starts with "0" - ENDIF. - endmethod. - - - - - - method GET_STYLE_TO_GUID. - " # issue 139 - - READ TABLE me->t_stylemapping2 INTO ep_stylemapping WITH TABLE KEY guid = ip_guid. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'GUID not found'. - ENDIF. - - IF ep_stylemapping-dynamic_style_guid IS NOT INITIAL. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = ep_stylemapping-cl_style - CHANGING e_target = ep_stylemapping-complete_style - e_targetx = ep_stylemapping-complete_stylex ). - ENDIF. - - - endmethod. - - - - method GET_WORKSHEETS_ITERATOR. - - eo_iterator = me->worksheets->get_iterator( ). - - endmethod. - - - - method GET_WORKSHEETS_NAME. - - ep_name = me->worksheets->name. - - endmethod. - - - - method GET_WORKSHEETS_SIZE. - - ep_size = me->worksheets->size( ). - - endmethod. - - - - - method GET_WORKSHEET_BY_NAME. - - DATA: lv_index TYPE zexcel_active_worksheet, - l_size TYPE i. - - l_size = get_worksheets_size( ). - - DO l_size TIMES. - lv_index = sy-index. - eo_worksheet = me->worksheets->get( lv_index ). - IF eo_worksheet->get_title( ) = ip_sheet_name. - RETURN. - ENDIF. - ENDDO. - - CLEAR eo_worksheet. - - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX. - me->worksheets->active_worksheet = i_active_worksheet. - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX_BY_NAME. - - DATA: ws_it TYPE REF TO cl_object_collection_iterator, - ws TYPE REF TO zcl_excel_worksheet, - lv_title TYPE ZEXCEL_SHEET_TITLE, - count TYPE i VALUE 1. - - ws_it = me->worksheets->get_iterator( ). - - WHILE ws_it->if_object_collection_iterator~has_next( ) = abap_true. - ws ?= ws_it->if_object_collection_iterator~get_next( ). - lv_title = ws->get_title( ). - IF lv_title = i_worksheet_name. - me->worksheets->active_worksheet = count. - EXIT. - ENDIF. - count = count + 1. - ENDWHILE. - - endmethod. - - - - - method SET_DEFAULT_STYLE. - me->default_style = ip_style. - endmethod. - - - - - method STYLEMAPPING_DYNAMIC_STYLE. -" # issue 139 - eo_style2-dynamic_style_guid = ip_style->get_guid( ). - eo_style2-guid = eo_style2-dynamic_style_guid. - eo_style2-added_to_iterator = abap_true. - eo_style2-cl_style = ip_style. - -* don't care about attributes here, since this data may change -* dynamically - - endmethod. - - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - "Load default values - me->pagemargins-b = '0.75'. - me->pagemargins-l = '0.7'. - me->pagemargins-r = '0.7'. - me->pagemargins-t = '0.75'. - me->pagemargins-header = '0.3'. - me->pagemargins-footer = '0.3'. - endmethod. - - - - - - - - - - - - - - - - - - - - method CREATE_SERIE. - DATA ls_serie TYPE s_series. - - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7. - - - IF ip_lbl IS NOT SUPPLIED. - lv_stop_row_c = ip_lbl_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_lbl_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-lbl = ip_sheet. - ls_serie-lbl = zcl_excel_common=>escape_string( ip_value = ls_serie-lbl ). - CONCATENATE ls_serie-lbl '!$' ip_lbl_from_col '$' lv_start_row_c ':$' ip_lbl_to_col '$' lv_stop_row_c INTO ls_serie-lbl. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-lbl = ip_lbl. - ENDIF. - IF ip_ref IS NOT SUPPLIED. - lv_stop_row_c = ip_ref_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_ref_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-ref = ip_sheet. - ls_serie-ref = zcl_excel_common=>escape_string( ip_value = ls_serie-ref ). - CONCATENATE ls_serie-ref '!$' ip_ref_from_col '$' lv_start_row_c ':$' ip_ref_to_col '$' lv_stop_row_c INTO ls_serie-ref. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-ref = ip_ref. - ENDIF. - ls_serie-idx = ip_idx. - ls_serie-order = ip_order. - ls_serie-invertifnegative = ip_invertifnegative. - ls_serie-symbol = ip_symbol. - ls_serie-smooth = ip_smooth. - ls_serie-sername = ip_sername. - APPEND ls_serie TO me->series. - SORT me->series BY order ASCENDING. - endmethod. - - - - method SET_PRINT_LBL. - me->print_label = ip_value. - endmethod. - - - - method SET_STYLE. - me->ns_c14styleval = ip_style-c14style. - CONDENSE me->ns_c14styleval NO-GAPS. - me->ns_styleval = ip_style-cstyle. - CONDENSE me->ns_styleval NO-GAPS. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEADER_LINES. - ns_showleaderlinesval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - if ip_type = c_catax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '1'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'b'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '2'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_auto is SUPPLIED. - ls_ax-auto = ip_auto. - else. - ls_ax-auto = '1'. - endif. - if ip_lblAlgn is SUPPLIED. - ls_ax-lblAlgn = ip_lblAlgn. - else. - ls_ax-lblAlgn = 'ctr'. - endif. - if ip_lblOffset is SUPPLIED. - ls_ax-lblOffset = ip_lblOffset. - else. - ls_ax-lblOffset = '100'. - endif. - if ip_noMultiLvlLbl is SUPPLIED. - ls_ax-noMultiLvlLbl = ip_noMultiLvlLbl. - else. - ls_ax-noMultiLvlLbl = '0'. - endif. - elseif ip_type = c_valax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '2'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'l'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '1'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_crossBetween is SUPPLIED. - ls_ax-crossBetween = ip_crossBetween. - else. - ls_ax-crossBetween = 'between'. - endif. - endif. - - APPEND ls_ax TO me->axes. - sort me->axes by axid ascending. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL26 -* Demo for method zcl_excel_worksheet-bind_object: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -report zdemo_excel26. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events definition. - public section. - methods: - on_user_command for event added_function of cl_salv_events - importing e_salv_function. -endclass. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events implementation. - method on_user_command. - perform user_command." using e_salv_function text-i08. - endmethod. "on_user_command -endclass. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -data: lo_excel type ref to zcl_excel, - lo_worksheet type ref to zcl_excel_worksheet, - lo_salv type ref to cl_salv_table, - gr_events type ref to lcl_handle_events, - lr_events type ref to cl_salv_events_table, - gt_sbook type table of sbook. - -data: l_path type string, " local dir - lv_workdir type string, - lv_file_separator type c. - -constants: - lv_default_file_name type string value '26_Bind_ALV.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -start-of-selection. - -* get data -* ------------------------------------------ - - select * - into table gt_sbook[] - from sbook "#EC CI_NOWHERE - up to 10 rows. - -* Display ALV -* ------------------------------------------ - - try. - cl_salv_table=>factory( - exporting - list_display = abap_false - importing - r_salv_table = lo_salv - changing - t_table = gt_sbook[] ). - catch cx_salv_msg . - endtry. - - try. - lo_salv->set_screen_status( - exporting - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - catch cx_salv_msg . - endtry. - - lr_events = lo_salv->get_event( ). - create object gr_events. - set handler gr_events->on_user_command for lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -form user_command . - if sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( changing sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - exporting initial_folder = l_path - changing selected_folder = l_path ). - - if l_path is initial. - cl_gui_frontend_services=>get_sapgui_workdir( - changing sapworkdir = lv_workdir ). - l_path = lv_workdir. - endif. - - cl_gui_frontend_services=>get_file_separator( - changing file_separator = lv_file_separator ). - - concatenate l_path lv_file_separator lv_default_file_name - into l_path. - -* export file to save file path - perform export_to_excel. - - endif. -endform. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -form export_to_excel. - data: lo_converter type ref to zcl_excel_converter. -* create zcl_excel_worksheet object - - create object lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object - try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). - catch zcx_excel . - endtry. - - perform write_file. - -endform. "EXPORT_TO_EXCEL -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -form write_file . - data: lt_file type solix_tab, - l_bytecount type i, - l_file type xstring. - - data: lo_excel_writer type ref to zif_excel_writer. - - data: ls_seoclass type seoclass. - - create object lo_excel_writer type zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = l_file - receiving - et_solix = lt_file. - - l_bytecount = xstrlen( l_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = l_file - importing - output_length = l_bytecount - tables - binary_tab = lt_file. - endif. - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - changing data_tab = lt_file ). - -endform. " WRITE_FILE - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL28 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel28. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_file_name TYPE string, - lv_file_path TYPE string, - lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '28_HelloWorld.csv'. - -PARAMETERS: p_path TYPE string. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = p_path - CHANGING selected_folder = p_path ). - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_width( 11 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_csv. - zcl_excel_writer_csv=>set_delimiter( ip_value = cl_abap_char_utilities=>horizontal_tab ). - zcl_excel_writer_csv=>set_enclosure( ip_value = '''' ). - zcl_excel_writer_csv=>set_endofline( ip_value = cl_abap_char_utilities=>cr_lf ). - - zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). -* zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet2' ). - - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - REPLACE FIRST OCCURRENCE OF '.csv' IN lv_full_path WITH '_Sheet2.csv'. - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - -* zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). - zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet1' ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE FIRST OCCURRENCE OF '_Sheet2.csv' IN lv_full_path WITH '_Sheet1.csv'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL27 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel27. - -CONSTANTS: c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_1 TYPE REF TO zcl_excel_style, - lo_style_2 TYPE REF TO zcl_excel_style, - lv_style_1_guid TYPE zexcel_cell_style, - lv_style_2_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis. - - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '27_ConditionalFormatting.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - lo_style_1 = lo_excel->add_new_style( ). - lo_style_1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_1->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_1_guid = lo_style_1->get_guid( ). - - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_2->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_2_guid = lo_style_2->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = 'Select a value' ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Anchovy"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_1_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Carp"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_2_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL17 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel17. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_protection TYPE REF TO zcl_excel_style, - lv_style_protection_guid TYPE zexcel_cell_style, - lo_style TYPE REF TO zcl_excel_style, - lv_style TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '17_SheetProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_pwd TYPE zexcel_aes_password LOWER CASE DEFAULT 'secret'. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. -* lo_worksheet->zif_excel_sheet_protection~password = 'DAA7'. "it is the encoded word "secret" - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( p_pwd ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - " First style to unlock a cell - lo_style_protection = lo_excel->add_new_style( ). - lo_style_protection->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - lv_style_protection_guid = lo_style_protection->get_guid( ). - " Another style which should not affect the unlock style - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFCC3333'. - lv_style = lo_style->get_guid( ). - lo_worksheet->set_cell( ip_row = 3 ip_column = 'C' ip_value = 'This cell is locked locked and has the second formating' ip_style = lv_style ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL10 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel10. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_iconset TYPE zexcel_conditional_iconset. - -CONSTANTS: gc_save_file_name TYPE string VALUE '10_iTabFieldCatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - "Conditional style - lo_style_conditional2 = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional2->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional2->mode_iconset = ls_iconset. - lo_style_conditional2->priority = 1. - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_count. - WHEN 'CONNID'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'PRICE'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - <fs_field_catalog>-cond_style = lo_style_conditional2. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). "make date field a bit wider - column_dimension->set_width( ip_width = 13 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL11 -*& Export Organisation and Contact Persons using ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel11. - -TYPE-POOLS: abap. - -DATA: central_search TYPE bapibus1006_central_search, - addressdata_search TYPE bapibus1006_addr_search, - others_search TYPE bapibus1006_other_data. -DATA: searchresult TYPE TABLE OF bapibus1006_bp_addr, - return TYPE TABLE OF bapiret2. -DATA: lines TYPE i. -FIELD-SYMBOLS: <searchresult_line> LIKE LINE OF searchresult. -DATA: centraldata TYPE bapibus1006_central, - centraldataperson TYPE bapibus1006_central_person, - centraldataorganization TYPE bapibus1006_central_organ. -DATA: addressdata TYPE bapibus1006_address. -DATA: relationships TYPE TABLE OF bapibus1006_relations. -FIELD-SYMBOLS: <relationship> LIKE LINE OF relationships. -DATA: relationship_centraldata TYPE bapibus1006002_central. -DATA: relationship_addresses TYPE TABLE OF bapibus1006002_addresses. -FIELD-SYMBOLS: <relationship_address> LIKE LINE OF relationship_addresses. - -DATA: lt_download TYPE TABLE OF zexcel_s_org_rel. -FIELD-SYMBOLS: <download> LIKE LINE OF lt_download. - -CONSTANTS: gc_save_file_name TYPE string VALUE '11_Export_Org_and_Contact.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -PARAMETERS: md TYPE flag RADIOBUTTON GROUP act. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-00a. -PARAMETERS: partnerc TYPE bu_type DEFAULT 2, " Organizations - postlcod TYPE ad_pstcd1 DEFAULT '8334*', - country TYPE land1 DEFAULT 'DE', - maxsel TYPE bu_maxsel DEFAULT 100. -SELECTION-SCREEN END OF BLOCK a. - -PARAMETERS: rel TYPE flag RADIOBUTTON GROUP act DEFAULT 'X'. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-00b. -PARAMETERS: reltyp TYPE bu_reltyp DEFAULT 'BUR011', - partner TYPE bu_partner DEFAULT '191'. -SELECTION-SCREEN END OF BLOCK b. - -START-OF-SELECTION. - IF md = abap_true. - " Read all Companies by Master Data - central_search-partnercategory = partnerc. - addressdata_search-postl_cod1 = postlcod. - addressdata_search-country = country. - others_search-maxsel = maxsel. - others_search-no_search_for_contactperson = 'X'. - - CALL FUNCTION 'BAPI_BUPA_SEARCH_2' - EXPORTING - centraldata = central_search - addressdata = addressdata_search - OTHERS = others_search - TABLES - searchresult = searchresult - return = return. - - SORT searchresult BY partner. - DELETE ADJACENT DUPLICATES FROM searchresult COMPARING partner. - ELSEIF rel = abap_true. - " Read by Relationship - SELECT but050~partner1 AS partner FROM but050 - INNER JOIN but000 ON but000~partner = but050~partner1 AND but000~type = '2' - INTO CORRESPONDING FIELDS OF TABLE searchresult - WHERE but050~partner2 = partner - AND but050~reltyp = reltyp. - ENDIF. - - DESCRIBE TABLE searchresult LINES lines. - WRITE: / 'Number of search results: ', lines. - - LOOP AT searchresult ASSIGNING <searchresult_line>. - " Read Details of Organization - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - centraldataorganization = centraldataorganization. - " Read Standard Address of Organization - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - addressdata = addressdata. - - " Add Organization to Download - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - " Fill Organization Partner Numbers - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - CLEAR: addressdata. - - " Read all Relationships - CLEAR: relationships. - CALL FUNCTION 'BAPI_BUPA_RELATIONSHIPS_GET' - EXPORTING - businesspartner = <searchresult_line>-partner - TABLES - relationships = relationships. - DELETE relationships WHERE relationshipcategory <> 'BUR001'. - LOOP AT relationships ASSIGNING <relationship>. - " Read details of Contact person - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - centraldata = centraldata - centraldataperson = centraldataperson. - " Read details of the Relationship - CALL FUNCTION 'BAPI_BUPR_CONTP_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - IMPORTING - centraldata = relationship_centraldata. - " Read relationship address - CLEAR: relationship_addresses. - - CALL FUNCTION 'BAPI_BUPR_CONTP_ADDRESSES_GET' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - TABLES - addresses = relationship_addresses. - - READ TABLE relationship_addresses - ASSIGNING <relationship_address> - WITH KEY standardaddress = 'X'. - - IF <relationship_address> IS ASSIGNED. - " Read Relationship Address - CLEAR addressdata. - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - addressguid = <relationship_address>-addressguid - IMPORTING - addressdata = addressdata. - - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner1 - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - businesspartnerout = <download>-contpers_number - businesspartnerguidout = <download>-contpers_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - MOVE-CORRESPONDING centraldataperson TO <download>. - MOVE-CORRESPONDING relationship_centraldata TO <download>. - - WRITE: / <relationship>-partner1, <relationship>-partner2. - WRITE: centraldataorganization-name1(20), centraldataorganization-name2(10). - WRITE: centraldataperson-firstname(15), centraldataperson-lastname(15). - WRITE: addressdata-street(25), addressdata-house_no, - addressdata-postl_cod1, addressdata-city(25). - ENDIF. - ENDLOOP. - - ENDLOOP. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_body TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_style_body_even_guid TYPE zexcel_cell_style, - lv_style_body_green TYPE zexcel_cell_style. - - DATA: row TYPE zexcel_cell_row. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings. - - DATA: column TYPE zexcel_cell_column, - column_alpha TYPE zexcel_cell_column_alpha, - value TYPE zexcel_cell_value. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border even - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_yellow. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_even_guid = lo_style_body->get_guid( ). - "Create style with border and green fill - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_green = lo_style_body->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_download ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'ORG_NUMBER'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CONTPERS_NUMBER'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME1'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME2'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'STREET'. - <fs_field_catalog>-position = 5. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'HOUSE_NO'. - <fs_field_catalog>-position = 6. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'POSTL_COD1'. - <fs_field_catalog>-position = 7. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CITY'. - <fs_field_catalog>-position = 8. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'COUNTRYISO'. - <fs_field_catalog>-position = 9. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FIRSTNAME'. - <fs_field_catalog>-position = 10. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'LASTNAME'. - <fs_field_catalog>-position = 11. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FUNCTIONNAME'. - <fs_field_catalog>-position = 12. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'DEPARTMENTNAME'. - <fs_field_catalog>-position = 13. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_NUMBR'. - <fs_field_catalog>-position = 14. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_EXT'. - <fs_field_catalog>-position = 15. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_NUMBER'. - <fs_field_catalog>-position = 16. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_EXTENS'. - <fs_field_catalog>-position = 17. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'E_MAIL'. - <fs_field_catalog>-position = 18. - <fs_field_catalog>-dynpfld = abap_true. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = '2'. - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_download - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - LOOP AT lt_download ASSIGNING <download>. - row = sy-tabix + 2. - IF NOT <download>-org_number IS INITIAL - AND <download>-contpers_number IS INITIAL. - " Mark fields of Organization which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'C' - ip_row = row - ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'D' - ip_row = row - ip_style = lv_style_body_green - ). -* CATCH zcx_excel. " Exceptions for ABAP2XLSX - ELSEIF NOT <download>-org_number IS INITIAL - AND NOT <download>-contpers_number IS INITIAL. - " Mark fields of Relationship which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'L' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'M' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'N' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'O' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'P' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'Q' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'R' ip_row = row ip_style = lv_style_body_green - ). - ENDIF. - ENDLOOP. - " Add Fieldnames in first row and hide the row - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog> - WHERE position <> '' AND dynpfld = abap_true. - column = <fs_field_catalog>-position. - column_alpha = zcl_excel_common=>convert_column2alpha( column ). - value = <fs_field_catalog>-fieldname. - lo_worksheet->set_cell( ip_column = column_alpha - ip_row = 1 - ip_value = value - ip_style = lv_style_body_even_guid ). - ENDLOOP. - " Hide first row - row_dimension = lo_worksheet->get_row_dimension( 1 ). - row_dimension->set_visible( abap_false ). - - DATA: highest_column TYPE zexcel_cell_column, - count TYPE int4, - col_alpha TYPE zexcel_cell_column_alpha. - - highest_column = lo_worksheet->get_highest_column( ). - count = 1. - WHILE count <= highest_column. - col_alpha = zcl_excel_common=>convert_column2alpha( ip_column = count ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = col_alpha ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - count = count + 1. - ENDWHILE. -* " Set Column width manuall -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). -* column_dimension->set_width( ip_width = 35 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). -* column_dimension->set_width( ip_width = 18 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). -* column_dimension->set_width( ip_width = 5 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). -* column_dimension->set_width( ip_width = 6 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). -* column_dimension->set_width( ip_width = 3 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'J' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'K' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'L' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'M' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'N' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'O' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'P' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'Q' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'R' ). -* column_dimension->set_width( ip_width = 40 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL12 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel12. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: gc_save_file_name TYPE string VALUE '12_HideSizeOutlineRowsAndColumns.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world in AutoSize column' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Hello world in a column width size 50' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Hello world (hidden column)' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'Outline column level 0' ). - lo_worksheet->set_cell( ip_column = 'G' ip_row = 2 ip_value = 'Outline column level 1' ). - lo_worksheet->set_cell( ip_column = 'H' ip_row = 2 ip_value = 'Outline column level 2' ). - lo_worksheet->set_cell( ip_column = 'I' ip_row = 2 ip_value = 'Small' ). - - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Hello world (hidden row)' ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 5 ip_value = 'Hello world in a row height size 20' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Outline row level 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Outline row level 1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Outline row level 2' ). - - lo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. " By default is on - lo_worksheet->zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>c_right_off. " By default is on - - " Column Settings - " Auto size - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - " Manual Width - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_width( ip_width = 50 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_visible( ip_visible = abap_false ). - " Implementation in the Writer is not working yet ===== TODO ===== - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). - column_dimension->set_outline_level( ip_outline_level = 0 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). - column_dimension->set_outline_level( ip_outline_level = 1 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). - column_dimension->set_outline_level( ip_outline_level = 2 ). - - row_dimension = lo_worksheet->get_row_dimension( ip_row = 1 ). - row_dimension->set_visible( ip_visible = abap_false ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 5 ). - row_dimension->set_row_height( ip_row_height = 20 ). - " Implementation in the Writer is not working yet ===== TODO ===== - row_dimension = lo_worksheet->get_row_dimension( ip_row = 6 ). - row_dimension->set_outline_level( ip_outline_level = 0 ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 7 ). - row_dimension->set_outline_level( ip_outline_level = 1 ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 8 ). - row_dimension->set_outline_level( ip_outline_level = 2 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL13 -*& -*&---------------------------------------------------------------------* -*& Example by: Alvaro "Blag" Tejada Galindo. -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel13. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_bold_border_guid TYPE zexcel_cell_style, - lo_style_bold_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '13_MergedCells.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - - lo_style_bold_border = lo_excel->add_new_style( ). - lo_style_bold_border->font->bold = abap_true. - lo_style_bold_border->font->italic = abap_false. - lo_style_bold_border->font->color-rgb = zcl_excel_style_color=>c_black. - lo_style_bold_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_bold_border->borders->allborders = lo_border_dark. - lv_style_bold_border_guid = lo_style_bold_border->get_guid( ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - - lo_worksheet->set_merge( ip_row = 4 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test also if merge works when oher merged chells are empty - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Tomato' ). - lo_worksheet->set_merge( ip_row = 6 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test the patch provided by Victor Alekhin to merge cells in one column - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 'Merge cells also over multiple rows by Victor Alekhin' ). - lo_worksheet->set_merge( ip_row = 8 ip_column_start = 'B' ip_column_end = 'G' ip_row_to = 10 ). - - " Test the patch provided by Alexander Budeyev with different column merges - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 'Merge cells with different merges by Alexander Budeyev' ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - - " Test merge (issue) - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'B' ip_column_end = 'C' ip_row_to = 15 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'D' ip_column_end = 'D' ip_row_to = 14 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'E' ip_column_end = 'F' ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL14 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel14. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_center TYPE REF TO zcl_excel_style, - lo_style_right TYPE REF TO zcl_excel_style, - lo_style_left TYPE REF TO zcl_excel_style, - lo_style_general TYPE REF TO zcl_excel_style, - lo_style_bottom TYPE REF TO zcl_excel_style, - lo_style_middle TYPE REF TO zcl_excel_style, - lo_style_top TYPE REF TO zcl_excel_style, - lo_style_justify TYPE REF TO zcl_excel_style, - lo_style_mixed TYPE REF TO zcl_excel_style, - lo_style_mixed_wrap TYPE REF TO zcl_excel_style, - lo_style_rotated TYPE REF TO zcl_excel_style, - lo_style_shrink TYPE REF TO zcl_excel_style, - lo_style_indent TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style, - lv_style_right_guid TYPE zexcel_cell_style, - lv_style_left_guid TYPE zexcel_cell_style, - lv_style_general_guid TYPE zexcel_cell_style, - lv_style_bottom_guid TYPE zexcel_cell_style, - lv_style_middle_guid TYPE zexcel_cell_style, - lv_style_top_guid TYPE zexcel_cell_style, - lv_style_justify_guid TYPE zexcel_cell_style, - lv_style_mixed_guid TYPE zexcel_cell_style, - lv_style_mixed_wrap_guid TYPE zexcel_cell_style, - lv_style_rotated_guid TYPE zexcel_cell_style, - lv_style_shrink_guid TYPE zexcel_cell_style, - lv_style_indent_guid TYPE zexcel_cell_style. - -DATA: lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '14_Alignment.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - "Center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lv_style_center_guid = lo_style_center->get_guid( ). - "Right - lo_style_right = lo_excel->add_new_style( ). - lo_style_right->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lv_style_right_guid = lo_style_right->get_guid( ). - "Left - lo_style_left = lo_excel->add_new_style( ). - lo_style_left->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_left. - lv_style_left_guid = lo_style_left->get_guid( ). - "General - lo_style_general = lo_excel->add_new_style( ). - lo_style_general->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_general. - lv_style_general_guid = lo_style_general->get_guid( ). - "Bottom - lo_style_bottom = lo_excel->add_new_style( ). - lo_style_bottom->alignment->vertical = zcl_excel_style_alignment=>c_vertical_bottom. - lv_style_bottom_guid = lo_style_bottom->get_guid( ). - "Middle - lo_style_middle = lo_excel->add_new_style( ). - lo_style_middle->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_middle_guid = lo_style_middle->get_guid( ). - "Top - lo_style_top = lo_excel->add_new_style( ). - lo_style_top->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_top_guid = lo_style_top->get_guid( ). - "Justify - lo_style_justify = lo_excel->add_new_style( ). - lo_style_justify->alignment->vertical = zcl_excel_style_alignment=>c_vertical_justify. - lv_style_justify_guid = lo_style_justify->get_guid( ). - - "Shrink - lo_style_shrink = lo_excel->add_new_style( ). - lo_style_shrink->alignment->shrinktofit = abap_true. - lv_style_shrink_guid = lo_style_shrink->get_guid( ). - - "Indent - lo_style_indent = lo_excel->add_new_style( ). - lo_style_indent->alignment->indent = 5. - lv_style_indent_guid = lo_style_indent->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed_wrap = lo_excel->add_new_style( ). - lo_style_mixed_wrap->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed_wrap->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_mixed_wrap->alignment->wraptext = abap_true. - lv_style_mixed_wrap_guid = lo_style_mixed_wrap->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed = lo_excel->add_new_style( ). - lo_style_mixed->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_mixed_guid = lo_style_mixed->get_guid( ). - - "Center - lo_style_rotated = lo_excel->add_new_style( ). - lo_style_rotated->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_rotated->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_rotated->alignment->textrotation = 165. " -75° == 90° + 75° - lv_style_rotated_guid = lo_style_rotated->get_guid( ). - - - " Set row size for first 7 rows to 40 - DO 7 TIMES. - lo_row_dimension = lo_worksheet->get_row_dimension( sy-index ). - lo_row_dimension->set_row_height( 40 ). - ENDDO. - - "Horizontal alignment - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Centered Text' ip_style = lv_style_center_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Right Text' ip_style = lv_style_right_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Left Text' ip_style = lv_style_left_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'General Text' ip_style = lv_style_general_guid ). - - " Shrink & indent - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'Text shrinked' ip_style = lv_style_shrink_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 'Text indented' ip_style = lv_style_indent_guid ). - - "Vertical alignment - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Bottom Text' ip_style = lv_style_bottom_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Middle Text' ip_style = lv_style_middle_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Top Text' ip_style = lv_style_top_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 'Justify Text' ip_style = lv_style_justify_guid ). - - " Wrapped - lo_worksheet->set_cell( ip_row = 10 ip_column = 'B' - ip_value = 'This is a wrapped text centered in the middle' - ip_style = lv_style_mixed_wrap_guid ). - - " Rotated - lo_worksheet->set_cell( ip_row = 10 ip_column = 'D' - ip_value = 'This is a centered text rotated by -75°' - ip_style = lv_style_rotated_guid ). - - " forced line break - DATA: lv_value TYPE string. - CONCATENATE 'This is a wrapped text centered in the middle' cl_abap_char_utilities=>cr_lf - 'and a manuall line break.' INTO lv_value. - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' - ip_value = lv_value - ip_style = lv_style_mixed_guid ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL15 -*& -*&---------------------------------------------------------------------* -*& 2010-10-30, Gregor Wolf: -*& Added the functionality to ouput the read table content -*& 2011-12-19, Shahrin Shahrulzaman: -*& Added the functionality to have multiple input and output files -*&---------------------------------------------------------------------* - -REPORT zdemo_excel15. - -TYPE-POOLS: abap. - -TYPES: - BEGIN OF t_demo_excel15, - input TYPE string, - END OF t_demo_excel15. - -DATA: excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - reader TYPE REF TO zif_excel_reader. - -DATA: ex TYPE REF TO zcx_excel, - msg TYPE string. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_workdir TYPE string, - output_file_path TYPE string, - input_file_path TYPE string, - lv_file_separator TYPE c. - -DATA: worksheet TYPE REF TO zcl_excel_worksheet, - highest_column TYPE zexcel_cell_column, - highest_row TYPE int4, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha, - row TYPE int4 VALUE 1, - value TYPE zexcel_cell_value. - -DATA: - lt_files TYPE TABLE OF t_demo_excel15. -FIELD-SYMBOLS: <wa_files> TYPE t_demo_excel15. - -PARAMETERS: p_path TYPE zexcel_export_dir, - p_noout TYPE xfeld DEFAULT abap_true. - - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '01_HelloWorld.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '02_Styles.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '03_iTab.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '04_Sheets.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '08_Range.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '13_MergedCells.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '31_AutosizeWithDifferentFontSizes.xlsx'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - - LOOP AT lt_files ASSIGNING <wa_files>. - CONCATENATE p_path lv_file_separator <wa_files>-input INTO input_file_path. - CONCATENATE p_path lv_file_separator '15_' <wa_files>-input INTO output_file_path. - REPLACE '.xlsx' IN output_file_path WITH 'FromReader.xlsx'. - - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( input_file_path ). - - IF p_noout EQ abap_false. - worksheet = excel->get_active_worksheet( ). - highest_column = worksheet->get_highest_column( ). - highest_row = worksheet->get_highest_row( ). - - WRITE: 'Highest column: ', highest_column, 'Highest row: ', highest_row. - WRITE: /. - - WHILE row <= highest_row. - WHILE column <= highest_column. - col_str = zcl_excel_common=>convert_column2alpha( column ). - worksheet->get_cell( - EXPORTING - ip_column = col_str - ip_row = row - IMPORTING - ep_value = value - ). - WRITE: value. - column = column + 1. - ENDWHILE. - WRITE: /. - column = 1. - row = row + 1. - ENDWHILE. - ENDIF. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = output_file_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - CATCH zcx_excel INTO ex. " Exceptions for ABAP2XLSX - msg = ex->get_text( ). - WRITE: / msg. - ENDTRY. - ENDLOOP. - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel16. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - - -DATA: ls_io TYPE skwf_io. - -CONSTANTS: gc_save_file_name TYPE string VALUE '16_Drawings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_objid TYPE sdok_docid DEFAULT '456694429165174BE10000000A1550C0', " Question mark in standard Web Dynpro WDT_QUIZ - p_class TYPE sdok_class DEFAULT 'M_IMAGE_P', - pobjtype TYPE skwf_ioty DEFAULT 'P'. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i, - lv_content TYPE xstring, - ls_key TYPE wwwdatatab. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = 'c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp' - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. -* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno -* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = lv_content - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Image from web repository (SMW0)' ). - - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 3 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Image from a file (c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 9 - ip_from_col = 'B' ). - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_bmp - ip_width = 83 - ip_height = 160 ). - - lo_worksheet->add_drawing( lo_drawing ). - - ls_io-objid = p_objid. - ls_io-class = p_class. - ls_io-objtype = pobjtype. - IF ls_io IS NOT INITIAL. - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_value = 'Mime repository (by default Question mark in standard Web Dynpro WDT_QUIZ)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 19 - ip_from_col = 'B' ). - lo_drawing->set_media_mime( ip_io = ls_io - ip_width = 126 - ip_height = 145 ). - - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL18 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel18. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_protection_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '18_BookProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_excel->zif_excel_book_protection~protected = zif_excel_book_protection=>c_protected. - lo_excel->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_locked. - - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL19 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel19. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '19_SetActiveSheet.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_noout TYPE xfeld DEFAULT abap_true. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " First Worksheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'First' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 1' ). - - " Second Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Second' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 2' ). - - " Third Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Third' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 3' ). - - IF p_noout EQ abap_false. - " lo_excel->set_active_sheet_index_by_name( data_sheet_name ). - DATA: active_sheet_index TYPE zexcel_active_worksheet. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index before: ', active_sheet_index. - ENDIF. - lo_excel->set_active_sheet_index( '2' ). - IF p_noout EQ abap_false. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index after: ', active_sheet_index. - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel2. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: gc_save_file_name TYPE string VALUE '02_Styles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - -* CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -* lv_file = lo_excel_writer->write_file( lo_excel ). -* -* " Convert to binary -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = lv_file -* IMPORTING -* output_length = lv_bytecount -* TABLES -* binary_tab = lt_file_tab. -** " This method is only available on AS ABAP > 6.40 -** lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -** lv_bytecount = xstrlen( lv_file ). -* -* " Save the file -* cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount -* filename = lv_full_path -* filetype = 'BIN' -* CHANGING data_tab = lt_file_tab ). - - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL26 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel29. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_excel_reader TYPE REF TO zif_excel_reader. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_filename TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -PARAMETERS: p_path TYPE zexcel_export_dir OBLIGATORY. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - DATA: lt_filetable TYPE filetable, - lv_rc TYPE i. - - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - CALL METHOD cl_gui_frontend_services=>file_open_dialog - EXPORTING - window_title = 'Select Macro-Enabled Workbook template' - default_extension = '*.xlsm' - file_filter = 'Excel Macro-Enabled Workbook (*.xlsm)|*.xlsm' - initial_directory = lv_workdir - CHANGING - file_table = lt_filetable - rc = lv_rc - EXCEPTIONS - file_open_dialog_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - OTHERS = 5. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - READ TABLE lt_filetable INTO lv_filename INDEX 1. - p_path = lv_filename. - -START-OF-SELECTION. - - lv_full_path = p_path. - - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_xlsm. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_xlsm. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE '.xlsm' IN lv_full_path WITH 'FromReader.xlsm'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL32 -* Demo for export options from ALV GRID: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -REPORT zdemo_excel32. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '32_Export_ALV.xlsx', - lv_default_file_name2 TYPE string VALUE '32_Export_Convert.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 100 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - - -* export file to save file path - CASE sy-ucomm. - WHEN 'EXCELBIND'. - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - PERFORM export_to_excel_bind. - - WHEN 'EXCELCONV'. - - CONCATENATE l_path lv_file_separator lv_default_file_name2 - INTO l_path. - PERFORM export_to_excel_conv. - - ENDCASE. -ENDFORM. " USER_COMMAND -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_CONV -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_conv. - DATA: lo_converter TYPE REF TO zcl_excel_converter. - - CREATE OBJECT lo_converter. -*TRY. - lo_converter->convert( - EXPORTING - io_alv = lo_salv - it_table = gt_sbook - i_row_int = 2 - i_column_int = 2 -* i_table = -* i_style_table = -* io_worksheet = -* CHANGING -* co_excel = - ). -* CATCH zcx_excel . -*ENDTRY. - lo_converter->write_file( i_path = l_path ). - -ENDFORM. "EXPORT_TO_EXCEL_CONV - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_BIND -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_bind. -* create zcl_excel_worksheet object - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object -*try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). -* catch zcx_excel . -*endtry. - - - PERFORM write_file. - -ENDFORM. "EXPORT_TO_EXCEL_BIND -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -FORM write_file . - DATA: lt_file TYPE solix_tab, - l_bytecount TYPE i, - l_file TYPE xstring. - - DATA: lo_excel_writer TYPE REF TO zif_excel_writer. - - DATA: ls_seoclass TYPE seoclass. - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_BCS_CONVERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>xstring_to_solix - EXPORTING - iv_xstring = l_file - RECEIVING - et_solix = lt_file. - - l_bytecount = XSTRLEN( l_file ). - ELSE. - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = l_file - IMPORTING - output_length = l_bytecount - TABLES - binary_tab = lt_file. - ENDIF. - - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - CHANGING data_tab = lt_file ). - -ENDFORM. " WRITE_FILE - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_CALENDAR -*& abap2xlsx Demo: Create Calendar with Pictures -*&---------------------------------------------------------------------* -*& This report creates a monthly calendar in the specified date range. -*& Each month is put on a seperate worksheet. The pictures for each -*& month can be specified in a tab delimited file called "Calendar.txt" -*& which is saved in the Export Directory. By default this is the SAP -*& Workdir. The file contains 3 fields: -*& -*& Month (with leading 0) -*& Image Filename -*& Image Description -*& URL for the Description -*& -*& The Images should be landscape JPEG's with a 3:2 ratio and min. -*& 450 pixel height. They must also be saved in the Export Directory. -*& In my tests I've discovered a limit of 20 MB in the -*& cl_gui_frontend_services=>gui_download method. So keep your images -*& smaller or chnage to a server export using OPEN DATASET. -*&---------------------------------------------------------------------* - -REPORT zdemo_calendar. - -TYPE-POOLS: abap. -CONSTANTS: gc_save_file_name TYPE string VALUE 'Calendar.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. -INCLUDE zdemo_calendar_classes. - -DATA: lv_workdir TYPE string. - -PARAMETERS: p_from TYPE dfrom DEFAULT '20130101', - p_to TYPE dto DEFAULT '20131231'. - -SELECTION-SCREEN BEGIN OF BLOCK orientation WITH FRAME TITLE orient. -PARAMETERS: p_portr TYPE flag RADIOBUTTON GROUP orie, - p_lands TYPE flag RADIOBUTTON GROUP orie DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK orientation. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - orient = 'Orientation'(000). - -START-OF-SELECTION. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lo_style_month TYPE REF TO zcl_excel_style, - lv_style_month_guid TYPE zexcel_cell_style. - DATA: lo_style_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lv_style_border_guid TYPE zexcel_cell_style. - DATA: lo_style_center TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lv_full_path TYPE string, - image_descr_path TYPE string, - lv_file_separator TYPE c. - DATA: lv_content TYPE xstring, - width TYPE i, - lv_height TYPE i, - lv_from_row TYPE zexcel_cell_row. - - DATA: month TYPE i, - month_nr TYPE fcmnr, - count TYPE i VALUE 1, - title TYPE zexcel_sheet_title, - value TYPE string, - image_path TYPE string, - date_from TYPE datum, - date_to TYPE datum, - row TYPE zexcel_cell_row, - to_row TYPE zexcel_cell_row, - to_col TYPE zexcel_cell_column_alpha, - to_col_end TYPE zexcel_cell_column_alpha, - to_col_int TYPE i. - - DATA: month_names TYPE TABLE OF t247. - FIELD-SYMBOLS: <month_name> LIKE LINE OF month_names. - - TYPES: BEGIN OF tt_datatab, - month_nr TYPE fcmnr, - filename TYPE string, - descr TYPE string, - url TYPE string, - END OF tt_datatab. - - DATA: image_descriptions TYPE TABLE OF tt_datatab. - FIELD-SYMBOLS: <img_descr> LIKE LINE OF image_descriptions. - - CONSTANTS: lv_default_file_name TYPE string VALUE 'Calendar', "#EC NOTEXT - c_from_row_portrait TYPE zexcel_cell_row VALUE 28, - c_from_row_landscape TYPE zexcel_cell_row VALUE 38, - from_col TYPE zexcel_cell_column_alpha VALUE 'C', - c_height_portrait TYPE i VALUE 450, " Image Height in Portrait Mode - c_height_landscape TYPE i VALUE 670, " Image Height in Landscape Mode - c_factor TYPE f VALUE '1.5'. " Image Ratio, default 3:2 - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name '.xlsx' INTO lv_full_path. "#EC NOTEXT - - " Read Image Names for Month and Description - CONCATENATE p_path lv_file_separator lv_default_file_name '.txt' INTO image_descr_path. "#EC NOTEXT - cl_gui_frontend_services=>gui_upload( - EXPORTING - filename = image_descr_path " Name of file - filetype = 'ASC' " File Type (ASCII, Binary) - has_field_separator = 'X' - read_by_line = 'X' " File Written Line-By-Line to the Internal Table - CHANGING - data_tab = image_descriptions " Transfer table for file contents - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create Styles - " Create an underline double style - lo_style_month = lo_excel->add_new_style( ). - " lo_style_month->font->underline = abap_true. - " lo_style_month->font->underline_mode = zcl_excel_style_font=>c_underline_single. - lo_style_month->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_month->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_month->font->family = zcl_excel_style_font=>c_family_roman. - lo_style_month->font->bold = abap_true. - lo_style_month->font->size = 36. - lv_style_month_guid = lo_style_month->get_guid( ). - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lo_style_border->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_border_guid = lo_style_border->get_guid( ). - "Create style alignment center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_center->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_center_guid = lo_style_center->get_guid( ). - - " Get Month Names - CALL FUNCTION 'MONTH_NAMES_GET' - TABLES - month_names = month_names. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = p_from - i_date_to = p_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - date_from = p_from. - - WHILE count <= month. - IF count = 1. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - ELSE. - lo_worksheet = lo_excel->add_new_worksheet( ). - ENDIF. - - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - - title = count. - value = count. - CONDENSE title. - CONDENSE value. - lo_worksheet->set_title( title ). - lo_worksheet->set_print_gridlines( abap_false ). - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_col_dim = lo_worksheet->get_column_dimension( 'A' ). - lo_col_dim->set_width( '1.0' ). - lo_col_dim = lo_worksheet->get_column_dimension( 'B' ). - lo_col_dim->set_width( '2.0' ). - IF p_lands = abap_true. - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lv_height = c_height_landscape. - lv_from_row = c_from_row_landscape. - lo_worksheet->sheet_setup->margin_top = '0.10'. - lo_worksheet->sheet_setup->margin_left = '0.10'. - lo_worksheet->sheet_setup->margin_right = '0.10'. - lo_worksheet->sheet_setup->margin_bottom = '0.10'. - ELSE. - lo_col_dim = lo_worksheet->get_column_dimension( 'K' ). - lo_col_dim->set_width( '3.0' ). - lo_worksheet->sheet_setup->margin_top = '0.80'. - lo_worksheet->sheet_setup->margin_left = '0.55'. - lo_worksheet->sheet_setup->margin_right = '0.05'. - lo_worksheet->sheet_setup->margin_bottom = '0.30'. - lv_height = c_height_portrait. - lv_from_row = c_from_row_portrait. - ENDIF. - - " Add Month Name - month_nr = date_from+4(2). - IF p_portr = abap_true. - READ TABLE month_names WITH KEY mnr = month_nr ASSIGNING <month_name>. - CONCATENATE <month_name>-ltx ` ` date_from(4) INTO value. - row = lv_from_row - 2. - to_col = from_col. - ELSE. - row = lv_from_row - 1. - to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 32. - to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). - to_col_int = to_col_int + 1. - to_col_end = zcl_excel_common=>convert_column2alpha( to_col_int ). - CONCATENATE month_nr '/' date_from+2(2) INTO value. - to_row = row + 2. - lo_worksheet->set_merge( - EXPORTING - ip_column_start = to_col " Cell Column Start - ip_column_end = to_col_end " Cell Column End - ip_row = row " Cell Row - ip_row_to = to_row " Cell Row - ). - ENDIF. - lo_worksheet->set_cell( - EXPORTING - ip_column = to_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = lv_style_month_guid - ). - -* to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 7. -* to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). -* -* lo_worksheet->set_merge( -* EXPORTING -* ip_column_start = from_col " Cell Column Start -* ip_column_end = to_col " Cell Column End -* ip_row = row " Cell Row -* ip_row_to = row " Cell Row -* ). - - " Add drawing from a XSTRING read from a file - UNASSIGN <img_descr>. - READ TABLE image_descriptions WITH KEY month_nr = month_nr ASSIGNING <img_descr>. - IF <img_descr> IS ASSIGNED. - value = <img_descr>-descr. - IF p_portr = abap_true. - row = lv_from_row - 3. - ELSE. - row = lv_from_row - 2. - ENDIF. - IF NOT <img_descr>-url IS INITIAL. - hyperlink = zcl_excel_hyperlink=>create_external_link( <img_descr>-url ). - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - ELSE. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ). - ENDIF. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '22.0' ). - - " In Landscape mode the row between the description and the - " dates should be not so high - IF p_lands = abap_true. - row = lv_from_row - 3. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '7.0' ). - row = lv_from_row - 1. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - ENDIF. - - CONCATENATE p_path lv_file_separator <img_descr>-filename INTO image_path. - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 1 - ip_from_col = 'B' ). - - lv_content = zcl_helper=>load_image( image_path ). - width = lv_height * c_factor. - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = width - ip_height = lv_height ). - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - " Add Calendar - CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH' - EXPORTING - day_in = date_from - IMPORTING - last_day_of_month = date_to. - IF p_portr = abap_true. - zcl_helper=>add_calendar( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ELSE. - zcl_helper=>add_calendar_landscape( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ENDIF. - count = count + 1. - date_from = date_to + 1. - ENDWHILE. - - lo_excel->set_active_sheet_index_by_name( '1' ). -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_CALENDAR_CLASSES -*&---------------------------------------------------------------------* - -*&---------------------------------------------------------------------* -*& Class ZCL_DATE_CALCULATION -*&---------------------------------------------------------------------* -* Text -*----------------------------------------------------------------------* -CLASS zcl_date_calculation DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: months_between_two_dates - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_incl_to TYPE flag - EXPORTING - e_month TYPE i. -ENDCLASS. "ZCL_DATE_CALCULATION - - -*----------------------------------------------------------------------* -* CLASS ZCL_DATE_CALCULATION IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation IMPLEMENTATION. - METHOD months_between_two_dates. - DATA: date_to TYPE datum. - DATA: BEGIN OF datum_von, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_von. - - DATA: BEGIN OF datum_bis, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_bis. - - e_month = 0. - - CHECK NOT ( i_date_from IS INITIAL ) - AND NOT ( i_date_to IS INITIAL ). - - date_to = i_date_to. - IF i_incl_to = abap_true. - date_to = date_to + 1. - ENDIF. - - datum_von = i_date_from. - datum_bis = date_to. - - e_month = ( datum_bis-jjjj - datum_von-jjjj ) * 12 - + ( datum_bis-mm - datum_von-mm ). - ENDMETHOD. "MONTHS_BETWEEN_TWO_DATES -ENDCLASS. "ZCL_DATE_CALCULATION IMPLEMENTATION - -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test DEFINITION FOR TESTING - " DURATION SHORT - " RISK LEVEL HARMLESS - "#AU Duration Medium - "#AU Risk_Level Harmless - . - PUBLIC SECTION. - METHODS: - months_between_two_dates FOR TESTING. -ENDCLASS. "zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test IMPLEMENTATION. - METHOD months_between_two_dates. - - DATA: date_from TYPE datum VALUE '20120101', - date_to TYPE datum VALUE '20121231'. - DATA: month TYPE i. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - cl_aunit_assert=>assert_equals( - exp = 12 " Data Object with Expected Type - act = month " Data Object with Current Value - msg = 'Calculated date is wrong' " Message in Case of Error - ). - - ENDMETHOD. "months_between_two_dates -ENDCLASS. "zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* CLASS zcl_helper DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: - load_image - IMPORTING - filename TYPE string - RETURNING value(r_image) TYPE xstring, - add_calendar - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calendar_landscape - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_a2x_footer - IMPORTING - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calender_week - IMPORTING - i_date TYPE datum - i_row TYPE zexcel_cell_row - i_col TYPE zexcel_cell_column_alpha - i_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet. -ENDCLASS. "zcl_helper DEFINITION - -*----------------------------------------------------------------------* -* CLASS zcl_helper IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper IMPLEMENTATION. - METHOD load_image. - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = filename - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = r_image - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - ENDMETHOD. "load_image - METHOD add_calendar. - DATA: day_names TYPE TABLE OF t246. - DATA: row TYPE zexcel_cell_row, - row_max TYPE i, - col_int TYPE zexcel_cell_column, - col_max TYPE i, - from_col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha, - lr_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lr_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: lv_date TYPE datum, - value TYPE string, - weekday TYPE wotnr, - weekrow TYPE wotnr VALUE 1, - day TYPE i, - width TYPE f, - height TYPE f. - DATA: hyperlink TYPE REF TO zcl_excel_hyperlink. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - from_col_int = zcl_excel_common=>convert_column2int( i_from_col ). - " Add description for Calendar Week - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = 'CW'(001) " Cell Value - ip_style = i_cw_style - ). - - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - LOOP AT day_names ASSIGNING <day_name>. - row = i_from_row. - col_int = from_col_int + <day_name>-wotnr. - col = zcl_excel_common=>convert_column2alpha( col_int ). - value = <day_name>-langt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - ENDLOOP. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - - row = i_from_row + weekrow. - col_int = from_col_int + weekday. - col = zcl_excel_common=>convert_column2alpha( col_int ). - - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - - IF weekday = 7. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - weekrow = weekrow + 1. - ENDIF. - lv_date = lv_date + 1. - ENDWHILE. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - " Add Created with abap2xlsx - row = row + 2. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - col_int = from_col_int. - col_max = from_col_int + 7. - WHILE col_int <= col_max. - col = zcl_excel_common=>convert_column2alpha( col_int ). - IF sy-index = 1. - width = '5.0'. - ELSE. - width = '11.4'. - ENDIF. - lr_col_dim = c_worksheet->get_column_dimension( col ). - lr_col_dim->set_width( width ). - col_int = col_int + 1. - ENDWHILE. - row = i_from_row + 1. - row_max = i_from_row + 6. - WHILE row <= row_max. - height = 50. - lr_row_dim = c_worksheet->get_row_dimension( row ). - lr_row_dim->set_row_height( height ). - row = row + 1. - ENDWHILE. - ENDMETHOD. "add_calendar - METHOD add_a2x_footer. - DATA: value TYPE string, - hyperlink TYPE REF TO zcl_excel_hyperlink. - - value = 'Created with abap2xlsx. Find more information at http://abap2xlsx.org.'(002). - hyperlink = zcl_excel_hyperlink=>create_external_link( 'http://abap2xlsx.org' ). "#EC NOTEXT - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - - ENDMETHOD. "add_a2x_footer - METHOD add_calendar_landscape. - DATA: day_names TYPE TABLE OF t246. - - DATA: lv_date TYPE datum, - day TYPE i, - value TYPE string, - weekday TYPE wotnr. - DATA: row TYPE zexcel_cell_row, - from_col_int TYPE zexcel_cell_column, - col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha. - DATA: lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - " Day name row - row = i_from_row. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - READ TABLE day_names ASSIGNING <day_name> - WITH KEY wotnr = weekday. - value = <day_name>-kurzt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - - " Day row - row = i_from_row + 1. - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - - - lv_date = lv_date + 1. - ENDWHILE. - " Add ABAP2XLSX Footer - row = i_from_row + 2. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = c_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - row = i_from_row + 3. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - - " Set with for all 31 coulumns - WHILE day < 32. - day = day + 1. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - ENDWHILE. - ENDMETHOD. "ADD_CALENDAR_LANDSCAPE - - METHOD add_calender_week. - DATA: week TYPE kweek, - week_int TYPE i, - value TYPE string. - " Add Calender Week - CALL FUNCTION 'DATE_GET_WEEK' - EXPORTING - date = i_date " Date for which the week should be calculated - IMPORTING - week = week. " Week for date (format:YYYYWW) - value = week+4(2). - week_int = value. - value = week_int. - CONDENSE value. - c_worksheet->set_cell( - EXPORTING - ip_column = i_col " Cell Column - ip_row = i_row " Cell Row - ip_value = value " Cell Value - ip_style = i_style - ). - ENDMETHOD. "add_calender_week -ENDCLASS. "zcl_helper IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel31. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: fieldval TYPE text80, - row TYPE i, - style_column_a TYPE REF TO zcl_excel_style, - style_column_a_guid TYPE zexcel_cell_style, - style_column_b TYPE REF TO zcl_excel_style, - style_column_b_guid TYPE zexcel_cell_style, - style_column_c TYPE REF TO zcl_excel_style, - style_column_c_guid TYPE zexcel_cell_style, - style_font TYPE REF TO zcl_excel_style_font. - -CONSTANTS: gc_save_file_name TYPE string VALUE '31_AutosizeWithDifferentFontSizes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - " Use active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Regular Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a_guid = style_column_a->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c_guid = style_column_c->get_guid( ). - - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Bold Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->bold = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->bold = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->bold = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Italic Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->italic = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->italic = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->italic = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - lo_excel->set_active_sheet_index( i_active_worksheet = 1 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_EXCEL_OUTPUTOPT_INCL -*&---------------------------------------------------------------------* -CLASS lcl_output DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: output IMPORTING cl_excel TYPE REF TO zcl_excel, - f4_path RETURNING value(selected_folder) TYPE string, - parametertexts. - - PRIVATE SECTION. - METHODS: download_frontend, - download_backend, - display_online, - send_email. - - DATA: xdata TYPE xstring, " Will be used for sending as email - t_rawdata TYPE solix_tab, " Will be used for downloading or open directly - bytecount TYPE i. " Will be used for downloading or open directly -ENDCLASS. "lcl_output DEFINITION - - -SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE txt_bl1. -PARAMETERS: rb_down RADIOBUTTON GROUP rb1 DEFAULT 'X' USER-COMMAND space. - -PARAMETERS: rb_back RADIOBUTTON GROUP rb1. - -PARAMETERS: rb_show RADIOBUTTON GROUP rb1. - -PARAMETERS: rb_send RADIOBUTTON GROUP rb1. - -PARAMETERS: p_path TYPE string LOWER CASE MODIF ID pat. -PARAMETERS: p_email TYPE string LOWER CASE MODIF ID ema. -PARAMETERS: p_backfn TYPE text40 NO-DISPLAY. -SELECTION-SCREEN END OF BLOCK bl1. - - -AT SELECTION-SCREEN OUTPUT. - LOOP AT SCREEN. - - IF rb_down IS INITIAL AND screen-group1 = 'PAT'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - IF rb_send IS INITIAL AND screen-group1 = 'EMA'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - MODIFY SCREEN. - - ENDLOOP. - -INITIALIZATION. - IF sy-batch IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = p_path ). - cl_gui_cfw=>flush( ). - ENDIF. - lcl_output=>parametertexts( ). " If started in language w/o textelements translated set defaults - sy-title = gc_save_file_name. - txt_bl1 = 'Output options'(bl1). - p_backfn = gc_save_file_name. " Use as default if nothing else is supplied by submit - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - p_path = lcl_output=>f4_path( ). - - -*----------------------------------------------------------------------* -* CLASS lcl_output IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_output IMPLEMENTATION. - METHOD output. - - DATA: cl_output TYPE REF TO lcl_output, - cl_writer TYPE REF TO zif_excel_writer. - - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. - cl_output->xdata = cl_writer->write_file( cl_excel ). - -* After 6.40 via cl_bcs_convert - cl_output->t_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstring = cl_output->xdata ). - cl_output->bytecount = xstrlen( cl_output->xdata ). - -* before 6.40 -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = cl_output->xdata -* IMPORTING -* output_length = cl_output->bytecount -* TABLES -* binary_tab = cl_output->t_rawdata. - - CASE 'X'. - WHEN rb_down. - IF sy-batch IS INITIAL. - cl_output->download_frontend( ). - ELSE. - MESSAGE e001(00) WITH 'Frontenddownload impossible in background processing'. - ENDIF. - - WHEN rb_back. - cl_output->download_backend( ). - - WHEN rb_show. - IF sy-batch IS INITIAL. - cl_output->display_online( ). - ELSE. - MESSAGE e001(00) WITH 'Online display absurd in background processing'. - ENDIF. - - WHEN rb_send. - cl_output->send_email( ). - - ENDCASE. - ENDMETHOD. "output - - METHOD f4_path. - DATA: new_path TYPE string, - repid TYPE syrepid, - dynnr TYPE sydynnr, - lt_dynpfields TYPE TABLE OF dynpread, - ls_dynpfields LIKE LINE OF lt_dynpfields. - -* Get current value - dynnr = sy-dynnr. - repid = sy-repid. - ls_dynpfields-fieldname = 'P_PATH'. - APPEND ls_dynpfields TO lt_dynpfields. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = repid - dynumb = dynnr - TABLES - dynpfields = lt_dynpfields - EXCEPTIONS - invalid_abapworkarea = 1 - invalid_dynprofield = 2 - invalid_dynproname = 3 - invalid_dynpronummer = 4 - invalid_request = 5 - no_fielddescription = 6 - invalid_parameter = 7 - undefind_error = 8 - double_conversion = 9 - stepl_not_found = 10 - OTHERS = 11. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - EXIT. - ENDIF. - - READ TABLE lt_dynpfields INTO ls_dynpfields INDEX 1. - - new_path = ls_dynpfields-fieldvalue. - selected_folder = new_path. - - cl_gui_frontend_services=>directory_browse( - EXPORTING - window_title = 'Select path to download EXCEL-file' - initial_folder = new_path - CHANGING - selected_folder = new_path - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4 - ). - cl_gui_cfw=>flush( ). - CHECK new_path IS NOT INITIAL. - selected_folder = new_path. - - ENDMETHOD. "f4_path - - METHOD parametertexts. -* If started in language w/o textelements translated set defaults -* Furthermore I don't have to change the selectiontexts of all demoreports. - DEFINE default_parametertext. - if %_&1_%_app_%-text = '&1' or - %_&1_%_app_%-text is initial. - %_&1_%_app_%-text = &2. - endif. - END-OF-DEFINITION. - - default_parametertext: rb_down 'Save to frontend', - rb_back 'Save to backend', - rb_show 'Direct display', - rb_send 'Send via email', - - p_path 'Frontend-path to download to', - p_email 'Email to send xlsx to'. - - ENDMETHOD. "parametertexts - - METHOD: download_frontend. - DATA: filename TYPE string. -* I don't like p_path here - but for this include it's ok - filename = p_path. -* Add trailing "\" or "/" - IF filename CA '/'. - REPLACE REGEX '([^/])\s*$' IN filename WITH '$1/' . - ELSE. - REPLACE REGEX '([^\\])\s*$' IN filename WITH '$1\\'. - ENDIF. - - CONCATENATE filename gc_save_file_name INTO filename. -* Get trailing blank - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = bytecount - filename = filename - filetype = 'BIN' - CHANGING data_tab = t_rawdata ). - ENDMETHOD. "download_frontend - - METHOD download_backend. - DATA: bytes_remain TYPE i. - FIELD-SYMBOLS: <rawdata> LIKE LINE OF t_rawdata. - - OPEN DATASET p_backfn FOR OUTPUT IN BINARY MODE. - CHECK sy-subrc = 0. - - bytes_remain = bytecount. - - LOOP AT t_rawdata ASSIGNING <rawdata>. - - AT LAST. - CHECK bytes_remain >= 0. - TRANSFER <rawdata> TO p_backfn LENGTH bytes_remain. - EXIT. - ENDAT. - - TRANSFER <rawdata> TO p_backfn. - SUBTRACT 255 FROM bytes_remain. " Solix hat Länge 255 - - ENDLOOP. - - CLOSE DATASET p_backfn. - - - - - IF sy-calld = 'X'. " no need to display anything if download was selected and report was called for demo purposes - LEAVE PROGRAM. - ELSE. - MESSAGE 'Data transferred to default backend directory' TYPE 'I'. - ENDIF. - ENDMETHOD. "download_backend - - METHOD display_online. - DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control,"OIContainerCtrl - cl_document TYPE REF TO i_oi_document_proxy. "Office Dokument - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = cl_gui_container=>screen0 - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - WRITE: '.'. " To create an output. That way screen0 will exist - ENDMETHOD. "display_online - - METHOD send_email. -* Needed to send emails - DATA: bcs_exception TYPE REF TO cx_bcs, - errortext TYPE string, - cl_send_request TYPE REF TO cl_bcs, - cl_document TYPE REF TO cl_document_bcs, - cl_recipient TYPE REF TO if_recipient_bcs, - cl_sender TYPE REF TO cl_cam_address_bcs, - t_attachment_header TYPE soli_tab, - wa_attachment_header LIKE LINE OF t_attachment_header, - attachment_subject TYPE sood-objdes, - - sood_bytecount TYPE sood-objlen, - mail_title TYPE so_obj_des, - t_mailtext TYPE soli_tab, - wa_mailtext LIKE LINE OF t_mailtext, - send_to TYPE adr6-smtp_addr, - sent TYPE os_boolean. - - - mail_title = 'Mail title'. - wa_mailtext = 'Mailtext'. - APPEND wa_mailtext TO t_mailtext. - - TRY. -* Create send request - cl_send_request = cl_bcs=>create_persistent( ). -* Create new document with mailtitle and mailtextg - cl_document = cl_document_bcs=>create_document( i_type = 'RAW' "#EC NOTEXT - i_text = t_mailtext - i_subject = mail_title ). -* Add attachment to document -* since the new excelfiles have an 4-character extension .xlsx but the attachment-type only holds 3 charactes .xls, -* we have to specify the real filename via attachment header -* Use attachment_type xls to have SAP display attachment with the excel-icon - attachment_subject = gc_save_file_name. - CONCATENATE '&SO_FILENAME=' attachment_subject INTO wa_attachment_header. - APPEND wa_attachment_header TO t_attachment_header. -* Attachment - sood_bytecount = bytecount. " next method expects sood_bytecount instead of any positive integer *sigh* - cl_document->add_attachment( i_attachment_type = 'XLS' "#EC NOTEXT - i_attachment_subject = attachment_subject - i_attachment_size = sood_bytecount - i_att_content_hex = t_rawdata - i_attachment_header = t_attachment_header ). - -* add document to send request - cl_send_request->set_document( cl_document ). - -* set sender in case if no own email is availabe -* cl_sender = cl_cam_address_bcs=>create_internet_address( 'sender@sender.sender' ). -* cl_send_request->set_sender( cl_sender ). - -* add recipient(s) - here only 1 will be needed - send_to = p_email. - IF send_to IS INITIAL. - send_to = 'no_email@no_email.no_email'. " Place into SOST in any case for demonstration purposes - ENDIF. - cl_recipient = cl_cam_address_bcs=>create_internet_address( send_to ). - cl_send_request->add_recipient( cl_recipient ). - -* Und abschicken - sent = cl_send_request->send( i_with_error_screen = 'X' ). - - COMMIT WORK. - - IF sent IS INITIAL. - MESSAGE i500(sbcoms) WITH p_email. - ELSE. - MESSAGE s022(so). - MESSAGE 'Document ready to be sent - Check SOST or SCOT' TYPE 'I'. - ENDIF. - - CATCH cx_bcs INTO bcs_exception. - errortext = bcs_exception->if_message~get_text( ). - MESSAGE errortext TYPE 'I'. - - ENDTRY. - ENDMETHOD. "send_email - - -ENDCLASS. "lcl_output IMPLEMENTATION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL20 -* Demo for method zcl_excel_worksheet-bind_alv: -* export data from ALV (CL_GUI_ALV_GRID) object to excel -*--------------------------------------------------------------------* -REPORT zdemo_excel20. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_alv TYPE REF TO cl_gui_alv_grid, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook, - gt_listheader TYPE slis_t_listheader, - wa_listheader LIKE LINE OF gt_listheader. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '20_BindAlv.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 10 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - IF sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - -* export file to save file path - - PERFORM export_to_excel. - - ENDIF. -ENDFORM. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel. - -* create zcl_excel_worksheet object - - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - -* get ALV object from screen - - CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' - IMPORTING - e_grid = lo_alv. - -* build list header - - wa_listheader-typ = 'H'. - wa_listheader-info = sy-title. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'S'. - wa_listheader-info = 'Created by: ABAP2XLSX Group'. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'A'. - wa_listheader-info = - 'Project hosting at https://cw.sdn.sap.com/cw/groups/abap2xlsx'. - APPEND wa_listheader TO gt_listheader. - -* write to excel using method Bin_ALV - - lo_worksheet->bind_alv_ole2( - EXPORTING -* I_DOCUMENT_URL = SPACE " excel template -* I_XLS = 'X' " create in xls format? - i_save_path = l_path - io_alv = lo_alv - it_listheader = gt_listheader - i_top = 2 - i_left = 1 -* I_COLUMNS_HEADER = 'X' -* I_COLUMNS_AUTOFIT = 'X' -* I_FORMAT_COL_HEADER = -* I_FORMAT_SUBTOTAL = -* I_FORMAT_TOTAL = - EXCEPTIONS - miss_guide = 1 - ex_transfer_kkblo_error = 2 - fatal_error = 3 - inv_data_range = 4 - dim_mismatch_vkey = 5 - dim_mismatch_sema = 6 - error_in_sema = 7 - OTHERS = 8 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - -ENDFORM. "EXPORT_TO_EXCEL - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL36 -REPORT zdemo_excel36. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - col TYPE i. - -DATA: lo_style_arial20 TYPE REF TO zcl_excel_style, - lo_style_times11 TYPE REF TO zcl_excel_style, - lo_style_cambria8red TYPE REF TO zcl_excel_style. - -DATA: lv_style_arial20_guid TYPE zexcel_cell_style, - lv_style_times11_guid TYPE zexcel_cell_style, - lv_style_cambria8red_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '36_DefaultStyles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create a bold / italic style - lo_style_arial20 = lo_excel->add_new_style( ). - lo_style_arial20->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_arial20->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_arial20->font->size = 20. - lv_style_arial20_guid = lo_style_arial20->get_guid( ). - - lo_style_times11 = lo_excel->add_new_style( ). - lo_style_times11->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_times11->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_times11->font->size = 11. - lv_style_times11_guid = lo_style_times11->get_guid( ). - - lo_style_cambria8red = lo_excel->add_new_style( ). - lo_style_cambria8red->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_cambria8red->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_cambria8red->font->size = 8. - lo_style_cambria8red->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_cambria8red_guid = lo_style_cambria8red->get_guid( ). - - lo_excel->set_default_style( lv_style_arial20_guid ). " Default for all new worksheets - -* 1st sheet - do not change anything --> defaultstyle from lo_excel should apply - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Style for complete document' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 2nd sheet - defaultstyle for this sheet set explicitly ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for this sheet' ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Times New Roman, fontsize 11' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because this style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'thus the default style from zcl_excel does not apply to this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 3rd sheet - defaultstyle for columns ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for 3 columns' ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'F' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'The columns B,C and F are set to Times New Roman' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 10 ip_value = 'All other cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 11 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 12 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - - lo_worksheet->set_cell( ip_column = 8 ip_row = 1 ip_value = 'Of course' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 2 ip_value = 'setting a specific style to a cell' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 3 ip_value = 'takes precedence over all defaults' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 4 ip_value = 'Here: Cambria 8 in red' ip_style = lv_style_cambria8red_guid ). - - -* Set entry into each of the first 10 columns - DO 20 TIMES. - col = sy-index. - CASE col. - WHEN 2 " B - OR 3 " C - OR 6." F - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Times 11' ). - WHEN OTHERS. - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Arial 20' ). - ENDCASE. - ENDDO. - - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - - - lo_excel->set_active_sheet_index( 1 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL4 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - - lv_tabcolor TYPE zexcel_s_tabcolor, - - ls_header TYPE zexcel_s_worksheet_head_foot, - ls_footer TYPE zexcel_s_worksheet_head_foot. - -CONSTANTS: gc_save_file_name TYPE string VALUE '04_Sheets.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). -* Set color to tab with sheetname - Red - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = 'FF' - ip_green = '00' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to second sheet' ip_hyperlink = lo_hyperlink ). - - " Page printing settings - lo_worksheet->sheet_setup->set_page_margins( ip_header = '1' ip_footer = '1' ip_unit = 'cm' ). - lo_worksheet->sheet_setup->black_and_white = 'X'. - lo_worksheet->sheet_setup->fit_to_page = 'X'. " you should turn this on to activate fit_to_height and fit_to_width - lo_worksheet->sheet_setup->fit_to_height = 0. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->fit_to_width = 2. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lo_worksheet->sheet_setup->page_order = zcl_excel_sheet_setup=>c_ord_downthenover. - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->scale = 80. " used only if ip_fit_to_page = SPACE - - " Header and Footer - ls_header-right_value = 'print date &D'. - ls_header-right_font-size = 8. - ls_header-right_font-name = zcl_excel_style_font=>c_name_arial. - - ls_footer-left_value = '&Z&F'. "Path / Filename - ls_footer-left_font = ls_header-right_font. - ls_footer-right_value = 'page &P of &N'. "page x of y - ls_footer-right_font = ls_header-right_font. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). -* Set color to tab with sheetname - Green - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to first sheet' ip_hyperlink = lo_hyperlink ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Sheet3 is hidden' ). - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). -* Set color to tab with sheetname - Blue - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = '00' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). -* Set color to tab with sheetname - other color - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Cell B3 has value 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 0 ). - lo_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_hidezero. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel35. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '35_Static_Styles.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>GET_DESKTOP_DIRECTORY( CHANGING DESKTOP_DIRECTORY = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - sy-title = 'ZDEMO_EXCEL2;Issue 139: Change cellstyle retroactivly'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - -* Demonstrate how to retroactivly change the cellstyle -*Filled text and underlinded text - lo_worksheet->change_cell_style( ip_column = 'B' - ip_row = 5 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - lo_worksheet->change_cell_style( ip_column = 'D' - ip_row = 4 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel34. - -CONSTANTS: width TYPE f VALUE '10.14'. -CONSTANTS: height TYPE f VALUE '57.75'. - -DATA: current_row TYPE i, - col TYPE i, - col_alpha TYPE zexcel_cell_column_alpha, - row TYPE i, - row_board TYPE i, - colorflag TYPE i, - color TYPE zexcel_style_color_argb, - - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - - writing1 TYPE string, - writing2 TYPE string. - - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -CONSTANTS: gc_save_file_name TYPE string VALUE '34_Static Styles_Chess.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Spassky_vs_Bronstein' ). - -* Header - current_row = 1. - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'White' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Spassky, Boris V -- wins in turn 23' ). - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'Black' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Bronstein, David I' ). - - ADD 1 TO current_row. -* Set size of column + Writing above chessboard - DO 8 TIMES. - - writing1 = zcl_excel_common=>convert_column2alpha( sy-index ). - writing2 = sy-index . - row = current_row + sy-index. - - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - -* Set size of column - column_dimension = lo_worksheet->get_column_dimension( col_alpha ). - column_dimension->set_width( width ). - -* Set size of row - row_dimension = lo_worksheet->get_row_dimension( row ). - row_dimension->set_row_height( height ). - -* Set writing on chessboard - lo_worksheet->set_cell( ip_row = row - ip_column = 'A' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'A' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = 'J' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'J' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - - row = current_row + 9. - lo_worksheet->set_cell( ip_row = current_row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = current_row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'J' ). - column_dimension->set_auto_size( abap_true ). - -* Set win-position - CONSTANTS: c_pawn TYPE string VALUE 'Pawn'. - CONSTANTS: c_rook TYPE string VALUE 'Rook'. - CONSTANTS: c_knight TYPE string VALUE 'Knight'. - CONSTANTS: c_bishop TYPE string VALUE 'Bishop'. - CONSTANTS: c_queen TYPE string VALUE 'Queen'. - CONSTANTS: c_king TYPE string VALUE 'King'. - - row = current_row + 1. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_knight ). - row = current_row + 2. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_king ). - row = current_row + 3. - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 4. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_knight ). - row = current_row + 5. - lo_worksheet->set_cell( ip_row = row ip_column = 'E' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - row = current_row + 6. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_bishop ). - row = current_row + 7. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 8. - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_king ). - -* Set Chessboard - DO 8 TIMES. - IF sy-index <= 3. " Black - color = zcl_excel_style_color=>c_black. - ELSE. - color = zcl_excel_style_color=>c_white. - ENDIF. - row_board = sy-index. - row = current_row + sy-index. - DO 8 TIMES. - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - TRY. -* Borders around outer limits - IF row_board = 1. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_top_style = zcl_excel_style_border=>c_border_thick - ip_borders_top_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF row_board = 8. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_down_style = zcl_excel_style_border=>c_border_thick - ip_borders_down_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 2. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_left_style = zcl_excel_style_border=>c_border_thick - ip_borders_left_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 9. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_right_style = zcl_excel_style_border=>c_border_thick - ip_borders_right_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. -* Style for writing - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_font_color_rgb = color - ip_font_bold = 'X' - ip_font_size = 16 - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid ). -* Color of field - colorflag = ( row + col ) MOD 2. - IF colorflag = 0. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFB5866A' ). - ELSE. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFF5DEBF' ). - ENDIF. - - - - CATCH zcx_excel . - ENDTRY. - - ENDDO. - ENDDO. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel33. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_converter TYPE REF TO zcl_excel_converter, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - -DATA lt_test TYPE TABLE OF t005t. - -DATA: l_cell_value TYPE zexcel_cell_value, - ls_area TYPE zexcel_s_autofilter_area. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '33_autofilter.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - SELECT * UP TO 2 ROWS FROM t005t INTO TABLE lt_test. "#EC CI_NOWHERE - - CREATE OBJECT lo_converter. - - lo_converter->convert( EXPORTING - it_table = lt_test - i_row_int = 1 - i_column_int = 1 - io_worksheet = lo_worksheet - CHANGING - co_excel = lo_excel ) . - - lo_autofilter = lo_excel->add_new_autofilter( io_sheet = lo_worksheet ) . - - ls_area-row_start = 1. - ls_area-col_start = 1. - ls_area-row_end = lo_worksheet->get_highest_row( ). - ls_area-col_end = lo_worksheet->get_highest_column( ). - - lo_autofilter->set_filter_area( is_area = ls_area ). - - lo_worksheet->get_cell( EXPORTING - ip_column = 'C' - ip_row = 2 - IMPORTING - ep_value = l_cell_value ). - lo_autofilter->set_value( i_column = 3 - i_value = l_cell_value ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - REPORT ZAKE_SVN_A2X . - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZABAP2XLSX_DEMO_SHOW -*&---------------------------------------------------------------------* -REPORT zabap2xlsx_demo_like_se83. - - -*----------------------------------------------------------------------* -* CLASS lcl_perform DEFINITION -*----------------------------------------------------------------------* -CLASS lcl_perform DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: setup_objects, - collect_reports, - - handle_nav FOR EVENT double_click OF cl_gui_alv_grid - IMPORTING e_row. - - PRIVATE SECTION. - TYPES: BEGIN OF ty_reports, - progname TYPE reposrc-progname, - sort TYPE reposrc-progname, - filename TYPE string, - END OF ty_reports. - - CLASS-DATA: - lo_grid TYPE REF TO cl_gui_alv_grid, - lo_text TYPE REF TO cl_gui_textedit, - cl_document TYPE REF TO i_oi_document_proxy, - - t_reports TYPE STANDARD TABLE OF ty_reports WITH NON-UNIQUE DEFAULT KEY. - CLASS-DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control. "Office Dokument - -ENDCLASS. "lcl_perform DEFINITION - - -START-OF-SELECTION. - lcl_perform=>collect_reports( ). - lcl_perform=>setup_objects( ). - -END-OF-SELECTION. - - WRITE '.'. " Force output - - -*----------------------------------------------------------------------* -* CLASS lcl_perform IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_perform IMPLEMENTATION. - METHOD setup_objects. - DATA: lo_split TYPE REF TO cl_gui_splitter_container, - lo_container TYPE REF TO cl_gui_container. - - DATA: it_fieldcat TYPE lvc_t_fcat, - is_layout TYPE lvc_s_layo, - is_variant TYPE disvariant. - FIELD-SYMBOLS: <fc> LIKE LINE OF it_fieldcat. - - - CREATE OBJECT lo_split - EXPORTING - parent = cl_gui_container=>screen0 - rows = 1 - columns = 3 - no_autodef_progid_dynnr = 'X'. - lo_split->set_column_width( EXPORTING id = 1 - width = 20 ). - lo_split->set_column_width( EXPORTING id = 2 - width = 40 ). - -* Left: List of reports - lo_container = lo_split->get_container( row = 1 - column = 1 ). - - CREATE OBJECT lo_grid - EXPORTING - i_parent = lo_container. - SET HANDLER lcl_perform=>handle_nav FOR lo_grid. - - is_variant-report = sy-repid. - is_variant-handle = '0001'. - - is_layout-cwidth_opt = 'X'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'PROGNAME'. - <fc>-tabname = 'REPOSRC'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'SORT'. - <fc>-ref_field = 'PROGNAME'. - <fc>-ref_table = 'REPOSRC'. - - - lo_grid->set_table_for_first_display( EXPORTING - is_variant = is_variant - i_save = 'A' - is_layout = is_layout - CHANGING - it_outtab = t_reports - it_fieldcatalog = it_fieldcat - EXCEPTIONS - invalid_parameter_combination = 1 - program_error = 2 - too_many_lines = 3 - OTHERS = 4 ). - -* Middle: Text with coding - lo_container = lo_split->get_container( row = 1 - column = 2 ). - CREATE OBJECT lo_text - EXPORTING - parent = lo_container. - lo_text->set_readonly_mode( cl_gui_textedit=>true ). - lo_text->set_font_fixed( ). - - - -* right: DemoOutput - lo_container = lo_split->get_container( row = 1 - column = 3 ). - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = lo_container - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - - ENDMETHOD. "setup_objects - - "collect_reports - METHOD collect_reports. - FIELD-SYMBOLS:<report> LIKE LINE OF t_reports. - DATA: t_source TYPE STANDARD TABLE OF text255 WITH NON-UNIQUE DEFAULT KEY. - -* Get all demoreports - SELECT progname - INTO CORRESPONDING FIELDS OF TABLE t_reports - FROM reposrc - WHERE progname LIKE 'ZDEMO_EXCEL%' - AND progname <> sy-repid - AND subc = '1'. - - LOOP AT t_reports ASSIGNING <report>. - -* Check if already switched to new outputoptions - READ REPORT <report>-progname INTO t_source. - IF sy-subrc = 0. - FIND 'INCLUDE zdemo_excel_outputopt_incl.' IN TABLE t_source IGNORING CASE. - ENDIF. - IF sy-subrc <> 0. - DELETE t_reports. - CONTINUE. - ENDIF. - - -* Build half-numeric sort - <report>-sort = <report>-progname. - REPLACE REGEX '(ZDEMO_EXCEL)(\d\d)\s*$' IN <report>-sort WITH '$1\0$2'. " REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE - - REPLACE REGEX '(ZDEMO_EXCEL)(\d)\s*$' IN <report>-sort WITH '$1\0\0$2'. - ENDLOOP. - SORT t_reports BY sort progname. - - ENDMETHOD. "collect_reports - - METHOD handle_nav. - CONSTANTS: filename TYPE text80 VALUE 'ZABAP2XLSX_DEMO_SHOW.xlsx'. - DATA: wa_report LIKE LINE OF t_reports, - t_source TYPE STANDARD TABLE OF text255, - t_rawdata TYPE solix_tab, - wa_rawdata LIKE LINE OF t_rawdata, - bytecount TYPE i, - length TYPE i, - add_selopt TYPE flag. - - - READ TABLE t_reports INTO wa_report INDEX e_row-index. - CHECK sy-subrc = 0. - -* Set new text into middle frame - READ REPORT wa_report-progname INTO t_source. - lo_text->set_text_as_r3table( EXPORTING table = t_source ). - - -* Unload old xls-file - cl_document->close_document( ). - -* Get the demo -* If additional parameters found on selection screen, start via selection screen , otherwise start w/o - CLEAR add_selopt. - FIND 'PARAMETERS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ELSE. - FIND 'SELECT-OPTIONS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ENDIF. - ENDIF. - IF add_selopt IS INITIAL. - SUBMIT (wa_report-progname) AND RETURN - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ELSE. - SUBMIT (wa_report-progname) VIA SELECTION-SCREEN AND RETURN - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ENDIF. - - OPEN DATASET filename FOR INPUT IN BINARY MODE. - IF sy-subrc = 0. - DO. - CLEAR wa_rawdata. - READ DATASET filename INTO wa_rawdata LENGTH length. - IF sy-subrc <> 0. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - EXIT. - ENDIF. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - ENDDO. - CLOSE DATASET filename. - ENDIF. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - ENDMETHOD. "handle_nav - -ENDCLASS. "lcl_perform IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - -* ls_key-relid = 'MI'. -* ls_key-objid = 'WBLOGO'. -* lo_drawing->set_media_www( ip_key = ls_key -* ip_width = 140 -* ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lo_send_request TYPE REF TO cl_bcs, - lo_document TYPE REF TO cl_document_bcs, - lo_sender TYPE REF TO cl_sapuser_bcs, - lo_recipient TYPE REF TO cl_sapuser_bcs, - lo_recipient_i TYPE REF TO CL_CAM_ADDRESS_BCS. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lv_bytecount_c TYPE sood-objlen, - lt_file_tab TYPE solix_tab. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - lv_bytecount_c = lv_bytecount. - - " Send via email - lo_document = cl_document_bcs=>create_document( i_type = 'RAW' - i_subject = 'Demo TechEd' ). - - lo_document->add_attachment( i_attachment_type = 'EXT' - i_attachment_subject = 'abap2xlsx.xlsx' - i_attachment_size = lv_bytecount_c - i_att_content_hex = lt_file_tab ). - - lo_sender = cl_sapuser_bcs=>create( sy-uname ). - lo_recipient = cl_sapuser_bcs=>create( sy-uname ). -* lo_recipient_i = cl_cam_address_bcs=>create_internet_address( 'ivan.femia@techedge.it' ). - - lo_send_request = cl_bcs=>create_persistent( ). - lo_send_request->set_document( lo_document ). - lo_send_request->set_sender( lo_sender ). - lo_send_request->add_recipient( lo_recipient ). - lo_send_request->set_send_immediately( abap_true ). - lo_send_request->send( ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_reader TYPE REF TO zif_excel_reader, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lt_files TYPE filetable, - ls_file TYPE file_table, - lv_rc TYPE i, - lv_value TYPE zexcel_cell_value. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'TechEd01.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - -******************************* -* abap2xlsx read XLSX * -******************************* - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_2007. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_worksheet->get_cell( EXPORTING ip_column = 'C' - ip_row = 10 - IMPORTING ep_value = lv_value ). - - WRITE: 'abap2xlsx total score is ', lv_value. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZANGRY_BIRDS -*& Just for fun -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zangry_birds. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_border_light TYPE REF TO zcl_excel_style_border, - lo_style_color0 TYPE REF TO zcl_excel_style, - lo_style_color1 TYPE REF TO zcl_excel_style, - lo_style_color2 TYPE REF TO zcl_excel_style, - lo_style_color3 TYPE REF TO zcl_excel_style, - lo_style_color4 TYPE REF TO zcl_excel_style, - lo_style_color5 TYPE REF TO zcl_excel_style, - lo_style_color6 TYPE REF TO zcl_excel_style, - lo_style_color7 TYPE REF TO zcl_excel_style, - lo_style_credit TYPE REF TO zcl_excel_style, - lo_style_link TYPE REF TO zcl_excel_style, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_style_color0_guid TYPE zexcel_cell_style, - lv_style_color1_guid TYPE zexcel_cell_style, - lv_style_color2_guid TYPE zexcel_cell_style, - lv_style_color3_guid TYPE zexcel_cell_style, - lv_style_color4_guid TYPE zexcel_cell_style, - lv_style_color5_guid TYPE zexcel_cell_style, - lv_style_color6_guid TYPE zexcel_cell_style, - lv_style_color7_guid TYPE zexcel_cell_style, - lv_style_credit_guid TYPE zexcel_cell_style, - lv_style_link_guid TYPE zexcel_cell_style, - lv_style TYPE zexcel_cell_style. - -DATA: lv_col_str TYPE zexcel_cell_column_alpha, - lv_row TYPE i, - lv_col TYPE i, - lt_mapper TYPE TABLE OF zexcel_cell_style, - ls_mapper TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'angry_birds.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_white. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - - " Create color white - lo_style_color0 = lo_excel->add_new_style( ). - lo_style_color0->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color0->fill->fgcolor-rgb = 'FFFFFFFF'. - lo_style_color0->borders->allborders = lo_border_light. - lv_style_color0_guid = lo_style_color0->get_guid( ). - - " Create color black - lo_style_color1 = lo_excel->add_new_style( ). - lo_style_color1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color1->fill->fgcolor-rgb = 'FF252525'. - lo_style_color1->borders->allborders = lo_border_light. - lv_style_color1_guid = lo_style_color1->get_guid( ). - - " Create color dark green - lo_style_color2 = lo_excel->add_new_style( ). - lo_style_color2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color2->fill->fgcolor-rgb = 'FF75913A'. - lo_style_color2->borders->allborders = lo_border_light. - lv_style_color2_guid = lo_style_color2->get_guid( ). - - " Create color light green - lo_style_color3 = lo_excel->add_new_style( ). - lo_style_color3->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color3->fill->fgcolor-rgb = 'FF9DFB73'. - lo_style_color3->borders->allborders = lo_border_light. - lv_style_color3_guid = lo_style_color3->get_guid( ). - - " Create color green - lo_style_color4 = lo_excel->add_new_style( ). - lo_style_color4->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color4->fill->fgcolor-rgb = 'FF92CF56'. - lo_style_color4->borders->allborders = lo_border_light. - lv_style_color4_guid = lo_style_color4->get_guid( ). - - " Create color 2dark green - lo_style_color5 = lo_excel->add_new_style( ). - lo_style_color5->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color5->fill->fgcolor-rgb = 'FF506228'. - lo_style_color5->borders->allborders = lo_border_light. - lv_style_color5_guid = lo_style_color5->get_guid( ). - - " Create color yellow - lo_style_color6 = lo_excel->add_new_style( ). - lo_style_color6->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color6->fill->fgcolor-rgb = 'FFC3E224'. - lo_style_color6->borders->allborders = lo_border_light. - lv_style_color6_guid = lo_style_color6->get_guid( ). - - " Create color yellow - lo_style_color7 = lo_excel->add_new_style( ). - lo_style_color7->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color7->fill->fgcolor-rgb = 'FFB3C14F'. - lo_style_color7->borders->allborders = lo_border_light. - lv_style_color7_guid = lo_style_color7->get_guid( ). - - " Credits - lo_style_credit = lo_excel->add_new_style( ). - lo_style_credit->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_credit->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_credit->font->size = 20. - lv_style_credit_guid = lo_style_credit->get_guid( ). - - " Link - lo_style_link = lo_excel->add_new_style( ). - lo_style_link->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_link->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. -* lo_style_link->font->size = 20. - lv_style_link_guid = lo_style_link->get_guid( ). - - " Create image map " line 2 - DO 30 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 3 - DO 28 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 4 - DO 27 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 5 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 6 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 7 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 8 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 9 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 10 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 11 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 12 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 13 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 14 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 12 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 15 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 16 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 17 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 18 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 19 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 27 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 20 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 21 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 19 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 22 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 23 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 24 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 25 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 26 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 27 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 28 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 29 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 30 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 31 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 32 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 33 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 34 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 35 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 36 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 37 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 38 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 39 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 22 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 40 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 41 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 42 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 43 - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 44 - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 45 - DO 16 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 46 - DO 18 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Angry Birds' ). - - lv_row = 1. - lv_col = 1. - - LOOP AT lt_mapper INTO ls_mapper. - lv_col_str = zcl_excel_common=>convert_column2alpha( lv_col ). - IF ls_mapper IS INITIAL. - lo_row_dimension = lo_worksheet->get_row_dimension( ip_row = lv_row ). - lo_row_dimension->set_row_height( ip_row_height = 8 ). - lv_col = 1. - lv_row = lv_row + 1. - CONTINUE. - ENDIF. - lo_worksheet->set_cell( ip_column = lv_col_str - ip_row = lv_row - ip_value = space - ip_style = ls_mapper ). - lv_col = lv_col + 1. - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = lv_col_str ). - lo_column_dimension->set_width( ip_width = 2 ). - ENDLOOP. - - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 15 - ip_value = 'Created with abap2xlsx' - ip_style = lv_style_credit_guid ). - - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 24 - ip_value = 'http://www.abap2xlsx.org' - ip_style = lv_style_link_guid - ip_hyperlink = lo_hyperlink ). - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'AP' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->set_merge( ip_row = 15 ip_column_start = 'AP' ip_row_to = 22 ip_column_end = 'AR' ). - lo_worksheet->set_merge( ip_row = 24 ip_column_start = 'AP' ip_row_to = 26 ip_column_end = 'AR' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel30. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: lv_value TYPE string, - lv_count TYPE i VALUE 10, - lv_packed TYPE p LENGTH 16 DECIMALS 1 VALUE '1234567890.5'. - -CONSTANTS: lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string, - lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed, - lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num, - lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date. - -CONSTANTS: gc_save_file_name TYPE string VALUE '30_CellDataTypes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Cell data types' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Number as String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = '11' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Negative Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.01-' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = '0 %' - ip_abap_type = lc_typekind_num ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = 'Date' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = '20110831' - ip_abap_type = lc_typekind_date ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.02' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %' - ip_abap_type = lc_typekind_num ). - - WHILE lv_count <= 15. - lv_value = lv_count. - CONCATENATE 'Positive Value with' lv_value 'Digits' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_packed ). - CONCATENATE 'Positive Value with' lv_value 'Digits formated as string' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_string ). - lv_packed = lv_packed * 10. - lv_count = lv_count + 1. - ENDWHILE. - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). - column_dimension->set_auto_size( abap_true ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched1. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo01' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED2 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched2. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lv_style_title_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel23. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '23_Sheets_with_and_without_grid_lines.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet with grid lines and print centered horizontal & vertical' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet with grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 160. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_PAGELAYOUTVIEW = 200. - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the third sheet without grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_false ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the fourth sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 170. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_SHEETLAYOUTVIEW = 150. - - " Fourth sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the fourth sheet with grid lines and print centered ONLY horizontal' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - -" lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel. - -DATA: lv_workdir TYPE string, - lv_upfile TYPE string. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = sy-lisel ). - CONCATENATE p_path sy-lisel '01_HelloWorld.xlsx' INTO lv_upfile. - - SUBMIT zdemo_excel1 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Hello world - SUBMIT zdemo_excel2 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Styles - SUBMIT zdemo_excel3 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: iTab binding - SUBMIT zdemo_excel4 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Multi sheets, page setup and sheet properties - SUBMIT zdemo_excel5 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel6 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Formulas - SUBMIT zdemo_excel7 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel8 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Ranges - SUBMIT zdemo_excel9 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Data validation - SUBMIT zdemo_excel10 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Bind table with field catalog - " zdemo_excel11 is not added because it has a selection screen and - " you also need to have business partners maintained in transaction BP - SUBMIT zdemo_excel12 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Column size - SUBMIT zdemo_excel13 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Merge cell - SUBMIT zdemo_excel14 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Alignment - SUBMIT zdemo_excel16 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Drawing - SUBMIT zdemo_excel17 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Lock sheet - SUBMIT zdemo_excel18 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Lock workbook - SUBMIT zdemo_excel19 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Set active sheet - " zdemo_excel20 is not added because it uses ALV and cannot be processed (OLE2) - SUBMIT zdemo_excel21 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Color Picker - SUBMIT zdemo_excel22 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Bind table with field catalog & sheet style - SUBMIT zdemo_excel23 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Multiple sheets with and w/o grid lines, print options - SUBMIT zdemo_excel24 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Multiple sheets with different default date formats - SUBMIT zdemo_excel25 AND RETURN. " abap2xlsx Demo: Create and xlsx on Application Server (could be executed in batch mode) - " zdemo_excel26 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel27 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional Formatting - SUBMIT zdemo_excel28 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: CSV writer - " SUBMIT zdemo_excel29 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Macro enabled workbook - SUBMIT zdemo_excel30 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: ABAP Cell data types - SUBMIT zdemo_excel31 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Autosize Column with different Font sizes - " zdemo_excel32 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel33 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Table autofilter - SUBMIT zdemo_excel34 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Static Styles Chess - SUBMIT zdemo_excel35 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Static Styles - SUBMIT zdemo_excel36 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Style applied to sheet, column and single cell - SUBMIT zdemo_excel37 WITH p_upfile = lv_upfile - WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Simplest call of the reader and writer - passthrough data - SUBMIT zdemo_excel38 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Show off integration of drawings ( here using the SAP-Icons ) - SUBMIT ZDEMO_EXCEL39 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Charts - " - " Reader/Writer Demo must always run at the end - " to make sure all documents where created - " - SUBMIT zdemo_excel15 WITH p_path = p_path AND RETURN. " Read Excel and write it back - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel1. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -CONSTANTS: gc_save_file_name TYPE string VALUE '01_HelloWorld.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). -* lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_width( ip_width = 11 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL21 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel21. - -TYPES: - BEGIN OF t_color_style, - color TYPE zexcel_style_color_argb, - style TYPE zexcel_cell_style, - END OF t_color_style. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_filled TYPE REF TO zcl_excel_style. - -DATA: color_styles TYPE TABLE OF t_color_style. - -FIELD-SYMBOLS: <color_style> LIKE LINE OF color_styles. - -CONSTANTS: max TYPE i VALUE 255, - step TYPE i VALUE 51. - -DATA: red TYPE i, - green TYPE i, - blue TYPE i, - red_hex(1) TYPE x, - green_hex(1) TYPE x, - blue_hex(1) TYPE x, - red_str TYPE string, - green_str TYPE string, - blue_str TYPE string. - -DATA: color TYPE zexcel_style_color_argb, - tint TYPE zexcel_style_color_tint. - -DATA: row TYPE i, - row_tmp TYPE i, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha. - -CONSTANTS: gc_save_file_name TYPE string VALUE '21_BackgroundColorPicker.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - WHILE red <= max. - green = 0. - WHILE green <= max. - blue = 0. - WHILE blue <= max. - red_hex = red. - red_str = red_hex. - green_hex = green. - green_str = green_hex. - blue_hex = blue. - blue_str = blue_hex. - " Create filled - CONCATENATE 'FF' red_str green_str blue_str INTO color. - APPEND INITIAL LINE TO color_styles ASSIGNING <color_style>. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = color. - <color_style>-color = color. - <color_style>-style = lo_style_filled->get_guid( ). - blue = blue + step. - ENDWHILE. - green = green + step. - ENDWHILE. - red = red + step. - ENDWHILE. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Color Picker' ). - LOOP AT color_styles ASSIGNING <color_style>. - row_tmp = ( max / step + 1 ) * 3. - IF row = row_tmp. - row = 0. - column = column + 1. - ENDIF. - row = row + 1. - col_str = zcl_excel_common=>convert_column2alpha( column ). - - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = col_str - ip_row = row - ip_value = <color_style>-color - ip_style = <color_style>-style ). - ENDLOOP. - - row = row + 2. - tint = '-0.5'. - DO 10 TIMES. - column = 1. - DO 10 TIMES. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = sy-index - 1. - lo_style_filled->fill->fgcolor-tint = tint. - <color_style>-style = lo_style_filled->get_guid( ). - col_str = zcl_excel_common=>convert_column2alpha( column ). - lo_worksheet->set_cell_style( ip_column = col_str - ip_row = row - ip_style = <color_style>-style ). - - ADD 1 TO column. - ENDDO. - ADD '0.1' TO tint. - ADD 1 TO row. - ENDDO. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel39. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - -DATA lv_value TYPE i. - -DATA: ls_io TYPE skwf_io. - -DATA: ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location. - -DATA lo_bar1 TYPE REF TO zcl_excel_graph_bars. -DATA lo_bar2 TYPE REF TO zcl_excel_graph_bars. -DATA lo_pie TYPE REF TO zcl_excel_graph_pie. -DATA lo_line TYPE REF TO zcl_excel_graph_line. - -CONSTANTS: gc_save_file_name TYPE string VALUE '39_Charts.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Create a pie chart and series - CREATE OBJECT lo_pie. - - CALL METHOD lo_pie->create_serie - EXPORTING - ip_order = 0 - ip_sheet = 'Values' - ip_lbl_from_col = 'B' - ip_lbl_from_row = '1' - ip_lbl_to_col = 'B' - ip_lbl_to_row = '3' - ip_ref_from_col = 'A' - ip_ref_from_row = '1' - ip_ref_to_col = 'A' - ip_ref_to_row = '3' - ip_sername = 'My serie 1'. - - " Set style - lo_pie->set_style( zcl_excel_graph=>c_style_15 ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar1. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set style - lo_bar1->set_style( zcl_excel_graph=>c_style_default ). - - " Set label to none - lo_bar1->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar2. - - CALL METHOD lo_bar2->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_yes - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set layout - lo_bar2->set_show_legend_key( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_values( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_cat_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_ser_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_percent( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_varycolor( zcl_excel_graph_bars=>c_show_true ). - - " Create a line chart, series and axes - CREATE OBJECT lo_line. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 0 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 1 - ip_symbol = zcl_excel_graph_line=>c_symbol_none - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 2 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$F$1:$F$3' - ip_ref = 'Values!$E$1:$E$3' - ip_sername = 'My serie 3'. - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - - - - - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet (Pie sheet) - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'PieChart' ). - - " Create global drawing, set type as pie chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART PIE' ). - lo_drawing->graph = lo_pie. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_pie. - - "Set chart position (anchor 2 cells) - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart1 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart1' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 2 SERIES' ). - lo_drawing->graph = lo_bar1. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 11. - ls_lower-row = 22. - ls_lower-col = 21. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart2 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart2' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 1 SERIE' ). - lo_drawing->graph = lo_bar2. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " LineChart sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'LineChart' ). - - " Create global drawing, set type as line chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART LINES' ). - lo_drawing->graph = lo_line. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_line. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " Values sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for chart - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = lv_value ). - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = lv_value ). - lv_value = -1. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'One (Minus)' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = lv_value ). - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'F' ip_row = 3 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 1 ip_value = 'Three' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_row TYPE zexcel_cell_row, - lv_col TYPE i, - lv_row_char TYPE char10, - lv_value TYPE string, - ls_fontcolor TYPE zexcel_style_color_argb. - -CONSTANTS: gc_save_file_name TYPE string VALUE '40_Printsettings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Printsettings' ). - -*--------------------------------------------------------------------* -* Prepare sheet with trivial data -* - first 4 columns will have fontocolor set -* - first 3 rows will have fontcolor set -* These marked cells will be used for repeatable rows/columns on printpages -*--------------------------------------------------------------------* - DO 100 TIMES. " Rows - - lv_row = sy-index . - WRITE lv_row TO lv_row_char. - - DO 20 TIMES. - - lv_col = sy-index - 1. - CONCATENATE sy-abcde+lv_col(1) lv_row_char INTO lv_value. - lv_col = sy-index. - lo_worksheet->set_cell( ip_row = lv_row - ip_column = lv_col - ip_value = lv_value ). - - TRY. - IF lv_row <= 3. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid - ip_fill_fgcolor_rgb = zcl_excel_style_color=>c_yellow ). - ENDIF. - IF lv_col <= 4. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_font_color_rgb = zcl_excel_style_color=>c_red ). - ENDIF. - CATCH zcx_excel . - ENDTRY. - - ENDDO. - - - - ENDDO. - - -*--------------------------------------------------------------------* -* Printsettings -*--------------------------------------------------------------------* - TRY. - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = 'A' - iv_columns_to = 'D' ). - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = 1 - iv_rows_to = 3 ). - CATCH zcx_excel . - ENDTRY. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - REPORT zdemo_excel37. - -DATA: excel TYPE REF TO zcl_excel, - reader TYPE REF TO zif_excel_reader, - go_error TYPE REF TO cx_root, - gv_message type string. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '37-passthrough.xlsx'. - -SELECTION-SCREEN BEGIN OF BLOCK blx WITH FRAME. -PARAMETERS: p_upfile TYPE string DEFAULT 'c:\temp\whatever.xlsx' LOWER CASE. -SELECTION-SCREEN END OF BLOCK blx. - -INCLUDE zdemo_excel_outputopt_incl. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile. - PERFORM f4_p_upfile CHANGING p_upfile. - - -START-OF-SELECTION. - - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. -* CREATE OBJECT reader TYPE zcl_excel_reader_xlsm. - excel = reader->load_file( p_upfile ). - - "Use template for charts - excel->use_template = abap_true. -*--------------------------------------------------------------------* -* CL_ABAP_ZIP may have problems reading LibreOffice generated files -* You may have to use alternate ZIP-Class - see comments in issue #234 in abap2xlsx at developers network -* excel = reader->load_file( i_filename = p_upfile -* iv_use_alternate_zip = 'ZCL_EXCEL_ABAP_ZIP' ). -*--------------------------------------------------------------------* - -*** Create output - lcl_output=>output( excel ). - CATCH cx_root INTO go_error. - MESSAGE 'Error reading excelfile' TYPE 'I'. - gv_message = go_error->get_text( ). - IF gv_message IS NOT INITIAL. - MESSAGE gv_message TYPE 'I'. - ENDIF. - ENDTRY. - - -*&---------------------------------------------------------------------* -*& Form F4_P_UPFILE -*&---------------------------------------------------------------------* -FORM f4_p_upfile CHANGING p_upfile TYPE string. - - DATA: lv_repid TYPE syrepid, - lt_fields TYPE dynpread_tabtype, - ls_field LIKE LINE OF lt_fields, - lt_files TYPE filetable. - - lv_repid = sy-repid. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = lv_repid - dynumb = '1000' - request = 'A' - TABLES - dynpfields = lt_fields - EXCEPTIONS - invalid_abapworkarea = 01 - invalid_dynprofield = 02 - invalid_dynproname = 03 - invalid_dynpronummer = 04 - invalid_request = 05 - no_fielddescription = 06 - undefind_error = 07. - READ TABLE lt_fields INTO ls_field WITH KEY fieldname = 'P_UPFILE'. - p_upfile = ls_field-fieldvalue. - - cl_gui_frontend_services=>file_open_dialog( EXPORTING - default_filename = p_upfile - file_filter = zcl_excel_common=>c_xlsx_file_filter - CHANGING - file_table = lt_files - rc = sy-tabix - EXCEPTIONS - OTHERS = 1 ). - READ TABLE lt_files INDEX 1 INTO p_upfile. - -ENDFORM. " F4_P_UPFILE - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_drawing TYPE REF TO zcl_excel_drawing. - -TYPES: BEGIN OF gty_icon, -* name TYPE icon_name, "Fix #228 - name TYPE iconname, "Fix #228 - objid TYPE w3objid, - END OF gty_icon, - gtyt_icon TYPE STANDARD TABLE OF gty_icon WITH NON-UNIQUE DEFAULT KEY. - -DATA: lt_icon TYPE gtyt_icon, - lv_row TYPE sytabix, - ls_wwwdatatab TYPE wwwdatatab, - lt_mimedata TYPE STANDARD TABLE OF w3mime WITH NON-UNIQUE DEFAULT KEY, - lv_xstring TYPE xstring. - -FIELD-SYMBOLS: <icon> LIKE LINE OF lt_icon, - <mimedata> LIKE LINE OF lt_mimedata. - -CONSTANTS: gc_save_file_name TYPE string VALUE '38_SAP-Icons.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -TABLES: icon. -SELECT-OPTIONS: s_icon FOR icon-name DEFAULT 'ICON_LED_*' OPTION CP. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Icons' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - lo_column_dimension->set_auto_size( 'X' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( 'X' ). - -* Get all icons - SELECT name - INTO TABLE lt_icon - FROM icon - WHERE name IN s_icon - ORDER BY name. - LOOP AT lt_icon ASSIGNING <icon>. - - lv_row = sy-tabix. -*--------------------------------------------------------------------* -* Set name of icon -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'A' - ip_value = <icon>-name ). -*--------------------------------------------------------------------* -* Check whether the mime-repository holds some icondata for us -*--------------------------------------------------------------------* - -* Get key - SELECT SINGLE objid - INTO <icon>-objid - FROM wwwdata - WHERE text = <icon>-name. - CHECK sy-subrc = 0. " :o( - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'B' - ip_value = <icon>-objid ). - -* Load mimedata - CLEAR lt_mimedata. - CLEAR ls_wwwdatatab. - ls_wwwdatatab-relid = 'MI' . - ls_wwwdatatab-objid = <icon>-objid. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_wwwdatatab - TABLES - mime = lt_mimedata - EXCEPTIONS - wrong_object_type = 1 - import_error = 2 - OTHERS = 3. - CHECK sy-subrc = 0. " :o( - - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = lv_row - ip_from_col = 'C' ). - CLEAR lv_xstring. - LOOP AT lt_mimedata ASSIGNING <mimedata>. - CONCATENATE lv_xstring <mimedata>-line INTO lv_xstring IN BYTE MODE. - ENDLOOP. - - lo_drawing->set_media( ip_media = lv_xstring - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = 16 - ip_height = 14 ). - lo_worksheet->add_drawing( lo_drawing ). - - ENDLOOP. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL7 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel7. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset3 TYPE zexcel_conditional_iconset, - ls_iconset4 TYPE zexcel_conditional_iconset, - ls_iconset5 TYPE zexcel_conditional_iconset, - ls_databar TYPE zexcel_conditional_databar, - ls_colorscale2 TYPE zexcel_conditional_colorscale, - ls_colorscale3 TYPE zexcel_conditional_colorscale. - -CONSTANTS: gc_save_file_name TYPE string VALUE '07_ConditionalAll.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - ls_iconset3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo1_value = '0'. - ls_iconset3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo2_value = '33'. - ls_iconset3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo3_value = '66'. - ls_iconset3-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset4-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo1_value = '0'. - ls_iconset4-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo2_value = '25'. - ls_iconset4-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo3_value = '50'. - ls_iconset4-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo4_value = '75'. - ls_iconset4-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset5-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo1_value = '0'. - ls_iconset5-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo2_value = '20'. - ls_iconset5-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo3_value = '40'. - ls_iconset5-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo4_value = '60'. - ls_iconset5-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo5_value = '80'. - ls_iconset5-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_databar-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_databar-cfvo1_value = '0'. - ls_databar-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_databar-cfvo2_value = '0'. - ls_databar-colorrgb = 'FF638EC6'. - - ls_colorscale2-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale2-cfvo1_value = '0'. - ls_colorscale2-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale2-cfvo2_value = '50'. - ls_colorscale2-colorrgb1 = 'FFF8696B'. - ls_colorscale2-colorrgb2 = 'FF63BE7B'. - - ls_colorscale3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale3-cfvo1_value = '0'. - ls_colorscale3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale3-cfvo2_value = '50'. - ls_colorscale3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_colorscale3-cfvo3_value = '0'. - ls_colorscale3-colorrgb1 = 'FFF8696B'. - ls_colorscale3-colorrgb2 = 'FFFFEB84'. - ls_colorscale3-colorrgb3 = 'FF63BE7B'. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -* ICONSET - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrows. - - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 5 - ip_stop_column = 'B' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'C_ICONSET_3ARROWS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 5 - ip_stop_column = 'C' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'C_ICONSET_3ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = 50 ). - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3flags. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 5 - ip_stop_column = 'D' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'C_ICONSET_3FLAGS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 5 - ip_stop_column = 'E' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'C_ICONSET_3TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 5 - ip_stop_column = 'F' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'C_ICONSET_3TRAFFICLIGHTS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3signs. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'G' - ip_start_row = 5 - ip_stop_column = 'G' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = 'C_ICONSET_3SIGNS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'G' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'G' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'G' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'G' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'G' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'H' - ip_start_row = 5 - ip_stop_column = 'H' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'H' ip_value = 'C_ICONSET_3SYMBOLS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'H' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'H' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'H' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'H' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'H' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'I' - ip_start_row = 5 - ip_stop_column = 'I' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'I' ip_value = 'C_ICONSET_3SYMBOLS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'I' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'I' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'I' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'I' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'I' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrows. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 12 - ip_stop_column = 'B' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = 'C_ICONSET_4ARROWS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 12 - ip_stop_column = 'C' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'C' ip_value = 'C_ICONSET_4ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4redtoblack. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 12 - ip_stop_column = 'D' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'D' ip_value = 'C_ICONSET_4REDTOBLACK' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4rating. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 12 - ip_stop_column = 'E' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'E' ip_value = 'C_ICONSET_4RATING' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4trafficlights. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 12 - ip_stop_column = 'F' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'F' ip_value = 'C_ICONSET_4TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 19 - ip_stop_column = 'B' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'B' ip_value = 'C_ICONSET_5ARROWS' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 19 - ip_stop_column = 'C' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'C' ip_value = 'C_ICONSET_5ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5rating. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 19 - ip_stop_column = 'D' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'D' ip_value = 'C_ICONSET_5RATING' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5quarters. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 19 - ip_stop_column = 'E' - ip_stop_row = 23 ). - -* DATABAR - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'B' ip_value = 'DATABAR' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_databar. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_databar = ls_databar. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 26 - ip_stop_column = 'B' - ip_stop_row = 30 ). - -* COLORSCALE - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'C' ip_value = 'COLORSCALE 2 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 26 - ip_stop_column = 'C' - ip_stop_row = 30 ). - - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'D' ip_value = 'COLORSCALE 3 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 26 - ip_stop_column = 'D' - ip_stop_row = 30 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL8 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel8. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range. - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '08_Range.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Sheet1'. - lo_worksheet->set_title( lv_title ). - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'range'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - " Define another Range with a name longer than 40 characters that - " tests the fix of issue #168 ranges namescan be only up to 20 chars - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'A_range_with_a_name_that_is_longer_than_20_characters'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Range Value 1' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Range Value 2' ). - - " issue #163 - " Define another Range with sheet visibility - lo_range = lo_worksheet->add_new_range( ). - lo_range->name = 'A_range_with_sheet_visibility'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'Range Value 3' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 'Range Value 4' ). - " issue #163 - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel3. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: ls_table_settings TYPE zexcel_s_table_settings. - - -DATA: lv_title TYPE zexcel_sheet_title, - lt_carr TYPE TABLE OF scarr, - row TYPE zexcel_cell_row VALUE 2, - lo_range TYPE REF TO zcl_excel_range. -DATA: lo_data_validation TYPE REF TO zcl_excel_data_validation. -FIELD-SYMBOLS: <carr> LIKE LINE OF lt_carr. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '03_iTab.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_empty TYPE flag. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - DATA lt_test TYPE TABLE OF sflight. - - IF p_empty <> abap_true. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - ENDIF. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - ls_table_settings-nofilters = abap_true. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). "make date field a bit wider - column_dimension->set_width( ip_width = 11 ). - " Add another table for data validations - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = c_airlines ). - SELECT * FROM scarr INTO TABLE lt_carr. "#EC CI_NOWHERE - LOOP AT lt_carr ASSIGNING <carr>. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = <carr>-carrid ). - row = row + 1. - ENDLOOP. - row = row - 1. - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_airlines. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 2 - ip_stop_column = 'A' - ip_stop_row = row ). - " Set Data Validation - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_airlines. - lo_data_validation->cell_row = 4. - lo_data_validation->cell_column = 'C'. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL22 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel22. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style, - lo_style_date TYPE REF TO zcl_excel_style, - lo_style_editable TYPE REF TO zcl_excel_style, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_table_settings_out TYPE zexcel_s_table_settings. - -DATA: lv_style_guid TYPE zexcel_cell_style. - -DATA: lv_row TYPE char10. - -FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - -CONSTANTS: gc_save_file_name TYPE string VALUE '22_itab_fieldcatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'PN_MASSIVE'). - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - " sheet style (white background) - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lv_style_guid = lo_style->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_guid ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( 'test' ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - - " Create cell style for display only fields - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_text. - - " Create cell style for display only date field - lo_style_date = lo_excel->add_new_style( ). - lo_style_date->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_date->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style_date->number_format->format_code = zcl_excel_style_number_format=>c_format_date_ddmmyyyy. - - " Create cell style for editable fields - lo_style_editable = lo_excel->add_new_style( ). - lo_style_editable->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'CONNID'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_date->get_guid( ). - WHEN 'PRICE'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_editable->get_guid( ). - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( EXPORTING - ip_table = lt_test - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - IMPORTING - es_table_settings = ls_table_settings_out ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lv_row = ls_table_settings_out-top_left_row. - CONDENSE lv_row. - CONCATENATE 'ISNUMBER(' ls_table_settings_out-top_left_column lv_row ')' INTO lo_data_validation->formula1. - lo_data_validation->cell_row = ls_table_settings_out-top_left_row. - lo_data_validation->cell_column = ls_table_settings_out-top_left_column. - lo_data_validation->cell_row_to = ls_table_settings_out-bottom_right_row. - lo_data_validation->cell_column_to = ls_table_settings_out-bottom_right_column. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL25 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel25. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_exception TYPE REF TO cx_root. - -DATA: lv_file TYPE xstring. - -CONSTANTS: lv_file_name TYPE string VALUE '25_HelloWorld.xlsx'. -DATA: lv_default_file_name TYPE string. -DATA: lv_error TYPE string. - -CALL FUNCTION 'FILE_GET_NAME_USING_PATH' - EXPORTING - logical_path = 'LOCAL_TEMPORARY_FILES' " Logical path' - file_name = lv_file_name " File name - IMPORTING - file_name_with_path = lv_default_file_name. " File name with path -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->set_title( ip_title = 'Sheet1' ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - -CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -lv_file = lo_excel_writer->write_file( lo_excel ). - -TRY. - OPEN DATASET lv_default_file_name FOR OUTPUT IN BINARY MODE. - TRANSFER lv_file TO lv_default_file_name. - CLOSE DATASET lv_default_file_name. - CATCH cx_root INTO lo_exception. - lv_error = lo_exception->get_text( ). - MESSAGE lv_error TYPE 'I'. -ENDTRY. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel24. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lv_value TYPE string. - -CONSTANTS: gc_save_file_name TYPE string VALUE '24_Sheets_with_different_default_date_formats.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Default Date Format' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!A1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmdd ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYYMMDD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " TODO: It seems that the zcl_excel_style_number_format=>c_format_date_yyyymmddslash - " does not produce a valid output - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmddslash ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYY/MM/DD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the 4th sheet' ip_hyperlink = lo_hyperlink ). - - " 4th sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " Illustrate the Problem caused by: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year. - " http://support.microsoft.com/kb/214326/en-us - lo_worksheet->set_title( ip_title = 'Sheet4' ). - " Loop from Start Date to the Max Date current data in daily steps - CONSTANTS: lv_max type d VALUE '19000302'. - - DATA: lv_date TYPE d VALUE '19000226', - lv_row TYPE i. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Formated date' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Integer value for this date' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'Date as string' ). - - lv_row = 4. - WHILE lv_date < lv_max. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_row ip_value = lv_date ). - lv_value = zcl_excel_common=>date_to_excel_string( lv_date ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_row ip_value = lv_value ). - lv_value = lv_date. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_row ip_value = lv_value ). - lv_date = lv_date + 1. - lv_row = lv_row + 1. - ENDWHILE. - - lv_row = lv_row + 1. - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_row ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL9 -*& -*&---------------------------------------------------------------------* -*& abap2xlsx Demo: Data validations -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel9. - -CONSTANTS: c_fruits TYPE string VALUE 'Fruits', - c_vegetables TYPE string VALUE 'Vegetables', - c_meat TYPE string VALUE 'Meat', - c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: row TYPE zexcel_cell_row. - - -DATA: lv_title TYPE zexcel_sheet_title. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '09_DataValidation.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_sbook TYPE flag. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = c_meat ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Pork' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Beef' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Chicken' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'Turkey' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_meat. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'B' - ip_start_row = 4 - ip_stop_column = 'B' - ip_stop_row = 7 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fruits. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = c_vegetables ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Cucumber' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Sweet pepper ' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Lettuce' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_vegetables. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 6 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Table with Data Validation'. - lo_worksheet->set_title( lv_title ). - - " Maximum Text length - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'Validate Maximum Text length of <= 10 in Cell A2:' ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'abcdefghij' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_textlength. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_lessthanorequal. - lo_data_validation->formula1 = 10. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'A'. - - " Integer Value between 1 and 10 - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Validate Integer Value between 1 and 10 in Cell A5:' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = '5' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_whole. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_between. - lo_data_validation->formula1 = 1. - lo_data_validation->formula2 = 10. - lo_data_validation->prompttitle = 'Range'. - lo_data_validation->prompt = 'Enter a value between 1 and 10'. - lo_data_validation->errortitle = 'Error'. - lo_data_validation->error = 'You have entered a wrong value. Please use only numbers between 1 and 10.'. - lo_data_validation->cell_row = 5. - lo_data_validation->cell_column = 'A'. - - " Evaluation by Formula from issue #161 - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Validate if B8 contains a "-":' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Text' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = '-' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lo_data_validation->formula1 = '"IF(B8<>"""";INDIRECT(LEFT(B8;SEARCH(""-"";B8;1)));EMPTY)"'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'A'. - - " There was an error when data validation was combined with cell merges this should test that: - lo_worksheet->set_cell( ip_row = 10 ip_column = 'A' ip_value = 'Demo for data validation with a dropdown list' ). - lo_worksheet->set_merge( ip_row = 10 ip_column_start = 'A' ip_column_end = 'F' ). - - " Headlines - lo_worksheet->set_cell( ip_row = 11 ip_column = 'A' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = c_vegetables ). - - row = 12. - WHILE row < 20. " Starting with 14500 the data validation is dropped 14000 are still ok - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fruits. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'A'. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = 'Select a value' ). - " 2nd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_vegetables. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'B'. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = 'Select a value' ). - " 3rd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_meat. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = 'Select a value' ). - " 4th - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'D'. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = 'Select a value' ). - " Increment row - row = row + 1. - ENDWHILE. - - IF p_sbook = abap_true. - DATA: bookings type TABLE OF sbook. - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'SBOOK'. - lo_worksheet->set_title( lv_title ). - - SELECT * from sbook INTO TABLE bookings UP TO 4000 ROWS. - - lo_worksheet->bind_table( - EXPORTING - ip_table = bookings -* it_field_catalog = " Table binding field catalog -* is_table_settings = " Excel table binding settings -* IMPORTING -* es_table_settings = " Excel table binding settings - ). - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL6 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel6. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_row TYPE syindex, - lv_formula TYPE string. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '06_Formulas.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -*--------------------------------------------------------------------* -* Get some testdata -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = -10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - -*--------------------------------------------------------------------* -* Demonstrate using formulas -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_formula = 'SUM(C4:C8)' ). - - -*--------------------------------------------------------------------* -* Demonstrate standard EXCEL-behaviour when copying a formula to another cell -* by calculating the resulting formula to put into another cell -*--------------------------------------------------------------------* - DO 10 TIMES. - - lv_formula = zcl_excel_common=>shift_formula( iv_reference_formula = 'SUM(C4:C8)' - iv_shift_cols = 0 " Offset in Columns - here we copy in same column --> 0 - iv_shift_rows = sy-index ). " Offset in Row - here we copy downward --> sy-index - lv_row = 9 + sy-index. " Absolute row = sy-index rows below reference cell - lo_worksheet->set_cell( ip_row = lv_row ip_column = 'C' ip_formula = lv_formula ). - - ENDDO. - -*--------------------------------------------------------------------* -*** Create output -*--------------------------------------------------------------------* - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL5 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel5. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset TYPE zexcel_conditional_iconset. - - - -CONSTANTS: gc_save_file_name TYPE string VALUE '05_Conditional.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '33'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '66'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_false. - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 500 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/old_releases/ABAP2XLSX_V_7_0.zip b/build/old_releases/ABAP2XLSX_V_7_0.zip deleted file mode 100644 index 703d64851e58b8f2d9843d0656dc0d0ddf58260d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299866 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 W| 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≪S))I9l8f-oieA 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 diff --git a/build/old_releases/ABAP2XLSX_V_7_0_1.nugg b/build/old_releases/ABAP2XLSX_V_7_0_1.nugg deleted file mode 100644 index f776ce7..0000000 --- a/build/old_releases/ABAP2XLSX_V_7_0_1.nugg +++ /dev/null @@ -1,39027 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - TYPES: BEGIN OF t_relationship, - id TYPE string, - type TYPE string, - target TYPE string, - END OF t_relationship. - -* - CLASS lcl_abap_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: abap_zip TYPE REF TO cl_abap_zip. - METHODS constructor IMPORTING i_data TYPE xstring - RAISING zcx_excel. - ENDCLASS. "lcl_abap_zip_archive DEFINITION - -* - CLASS lcl_alternate_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: alternate_zip TYPE REF TO object. - METHODS constructor - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RAISING zcx_excel. - ENDCLASS. "lcl_alternate_zip_archive DEFINITION - -* - CLASS lcl_abap_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_abap_zip_archive - EXPORTING - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT abap_zip. - abap_zip->load( - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - CALL METHOD abap_zip->get - EXPORTING - name = i_filename - IMPORTING - content = r_content - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_abap_zip_archive IMPLEMENTATION - -* - CLASS lcl_alternate_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_alternate_zip_archive - EXPORTING - i_alternate_zip_class = i_alternate_zip_class - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT alternate_zip TYPE (i_alternate_zip_class). - TRY. - CALL METHOD alternate_zip->('LOAD') - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method LOAD missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - TRY. - CALL METHOD alternate_zip->('GET') - EXPORTING - name = i_filename - IMPORTING - content = r_content " Contents - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method GET missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_alternate_zip_archive IMPLEMENTATION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -* -class lcl_zip_archive definition abstract. - public section. - methods read abstract - importing i_filename type csequence - returning value(r_content) type xstring " Remember copy-on-write! - raising zcx_excel. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - IXML - - - - - - METHOD zif_excel_reader~load. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Map Document Properties to ZCL_EXCEL -*--------------------------------------------------------------------* - - CONSTANTS: lcv_core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lcv_office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'. - - DATA: lo_rels TYPE REF TO if_ixml_document, - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship. - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller - -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets - -* §3 Extracting from this the path&file where the workbook is located -* Following is an example how this file could be set up -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* <Relationship Target="docProps/core.xml" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Id="rId2"/> -* <Relationship Target="xl/workbook.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Id="rId1"/> -* </Relationships> -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller -*--------------------------------------------------------------------* - CREATE OBJECT r_excel. - - zip = create_zip_archive( i_xlsx_binary = i_excel2007 - i_use_alternate_zip = i_use_alternate_zip ). - -*--------------------------------------------------------------------* -* §2 Get file in folderstructure -*--------------------------------------------------------------------* - lo_rels = get_ixml_from_zip_archive( '_rels/.rels' ). - -*--------------------------------------------------------------------* -* §3 Cycle through the Relationship Tags and use the ones we need -*--------------------------------------------------------------------* - lo_node ?= lo_rels->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_relationship ). - CASE ls_relationship-type. - - WHEN lcv_office_document. -*--------------------------------------------------------------------* -* Parse workbook - main part here -*--------------------------------------------------------------------* - load_workbook( iv_workbook_full_filename = ls_relationship-target - io_excel = r_excel ). - - WHEN lcv_core_properties. - " 2do§1 Map Document Properties to ZCL_EXCEL - - WHEN OTHERS. - - ENDCASE. - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - METHOD zif_excel_reader~load_file. - - DATA: lv_excel_data TYPE xstring. - -*--------------------------------------------------------------------* -* Read file into binary string -*--------------------------------------------------------------------* - IF i_from_applserver = abap_true. - lv_excel_data = read_from_applserver( i_filename ). - ELSE. - lv_excel_data = read_from_local_file( i_filename ). - ENDIF. - -*--------------------------------------------------------------------* -* Parse Excel data into ZCL_EXCEL object from binary string -*--------------------------------------------------------------------* - r_excel = zif_excel_reader~load( i_excel2007 = lv_excel_data - i_use_alternate_zip = i_use_alternate_zip ). - -ENDMETHOD. - - - - - - - METHOD create_zip_archive. - CASE i_use_alternate_zip. - WHEN space. - e_zip = lcl_abap_zip_archive=>create( i_xlsx_binary ). - WHEN OTHERS. - e_zip = lcl_alternate_zip_archive=>create( i_data = i_xlsx_binary - i_alternate_zip_class = i_use_alternate_zip ). - ENDCASE. -ENDMETHOD. - - - - - method fill_struct_from_attributes. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - - data: lv_name type string, - lo_attributes type ref to if_ixml_named_node_map, - lo_attribute type ref to if_ixml_attribute, - lo_iterator type ref to if_ixml_node_iterator. - - field-symbols: <component> type any. - -*--------------------------------------------------------------------* -* The values of named attributes of a tag are being read and moved into corresponding -* fields of given structure -* Behaves like move-corresonding tag to structure - -* Example: -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* Here the attributes are Target, Type and Id. Thus if the passed -* structure has fieldnames Id and Target these would be filled with -* "rId3" and "docProps/app.xml" respectively -*--------------------------------------------------------------------* - clear cp_structure. - - lo_attributes = ip_element->get_attributes( ). - lo_iterator = lo_attributes->create_iterator( ). - lo_attribute ?= lo_iterator->get_next( ). - while lo_attribute is bound. - - lv_name = lo_attribute->get_name( ). - translate lv_name to upper case. - assign component lv_name of structure cp_structure to <component>. - if sy-subrc = 0. - <component> = lo_attribute->get_value( ). - endif. - lo_attribute ?= lo_iterator->get_next( ). - - endwhile. - - -endmethod. - - - - - - METHOD get_from_zip_archive. - - ASSERT zip IS BOUND. " zip object has to exist at this point - - r_content = zip->read( i_filename ). - -ENDMETHOD. - - - - - - - METHOD get_ixml_from_zip_archive. - - DATA: lv_content TYPE xstring, - lo_ixml TYPE REF TO if_ixml, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_istream TYPE REF TO if_ixml_istream, - lo_parser TYPE REF TO if_ixml_parser. - -*--------------------------------------------------------------------* -* Load XML file from archive into an input stream, -* and parse that stream into an ixml object -*--------------------------------------------------------------------* - lv_content = me->get_from_zip_archive( i_filename ). - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_istream = lo_streamfactory->create_istream_xstring( lv_content ). - r_ixml = lo_ixml->create_document( ). - lo_parser = lo_ixml->create_parser( stream_factory = lo_streamfactory - istream = lo_istream - document = r_ixml ). - lo_parser->set_normalizing( is_normalizing ). - lo_parser->set_validating( mode = if_ixml_parser=>co_no_validation ). - lo_parser->parse( ). - -ENDMETHOD. - - - - - - method LOAD_DRAWING_ANCHOR. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - TYPES: BEGIN OF t_ext, - cx TYPE string, - cy TYPE string, - END OF t_ext. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - node TYPE REF TO if_ixml_element, - node2 TYPE REF TO if_ixml_element, - node3 TYPE REF TO if_ixml_element, - node4 TYPE REF TO if_ixml_element, - - ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location, - ls_size TYPE zexcel_drawing_size, - ext TYPE t_ext, - lv_content TYPE xstring, - lv_relation_id TYPE string, - lv_title TYPE zexcel_sheet_title, - - cnvpr TYPE t_c_nv_pr, - blip TYPE t_blip, - chart TYPE t_chart, - drawing_type TYPE zexcel_drawing_type, - - rel_drawing TYPE t_rel_drawing. - - node ?= io_anchor_element->find_from_name( name = 'from' namespace = 'xdr' ). - CHECK node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_upper-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_upper-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_upper-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_upper-row_offset = node2->get_value( ). - - node ?= io_anchor_element->find_from_name( name = 'ext' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_size. - ELSE. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = ext ). - ls_size-width = ext-cx. - ls_size-height = ext-cy. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'to' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_lower. - ELSE. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_lower-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_lower-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_lower-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_lower-row_offset = node2->get_value( ). - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'pic' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvPicPr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'blipFill' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'blip' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = blip ). - lv_relation_id = blip-embed. - - drawing_type = zcl_excel_drawing=>type_image. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'graphicFrame' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvGraphicFramePr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'graphic' namespace = 'a' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'graphicData' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - node4 ?= node2->find_from_name( name = 'chart' namespace = 'c' ). - CHECK node4 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node4 CHANGING cp_structure = chart ). - lv_relation_id = chart-id. - - drawing_type = zcl_excel_drawing=>type_chart. - ENDIF. - - lo_drawing = io_worksheet->excel->add_new_drawing( - ip_type = drawing_type - ip_title = lv_title ). - io_worksheet->add_drawing( lo_drawing ). - - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - READ TABLE it_related_drawings INTO rel_drawing - WITH KEY id = lv_relation_id. - - lo_drawing->set_media( - EXPORTING - ip_media = rel_drawing-content - ip_media_type = rel_drawing-file_ext - ip_width = ls_size-width - ip_height = ls_size-height ). - - if drawing_type = zcl_excel_drawing=>type_chart. - "-------------Added by Alessandro Iannacci - Should load chart attributes - lo_drawing->load_chart_attributes( rel_drawing-content_xml ). - endif. - - endmethod. - - - - - method LOAD_SHARED_STRINGS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support partial formatting of strings in cells -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: renaming variables to naming conventions -* renaming variables to indicate what they are used for -* aligning code -* adding comments to explain what we are trying to achieve -* rewriting code for better readibility -*--------------------------------------------------------------------* - - - - DATA: - lo_shared_strings_xml TYPE REF TO if_ixml_document, - lo_node_si TYPE REF TO if_ixml_element, - lo_node_si_child TYPE REF TO if_ixml_element, - lo_node_r_child_t TYPE REF TO if_ixml_element, - lv_tag_name TYPE string, - lv_node_value TYPE string. - - FIELD-SYMBOLS: <lv_shared_string> LIKE LINE OF me->shared_strings. - -*--------------------------------------------------------------------* - -* §1 Parse shared strings file and get into internal table -* So far I have encountered 2 ways how a string can be represented in the shared strings file -* §1.1 - "simple" strings -* §1.2 - rich text formatted strings - -* Following is an example how this file could be set up; 2 strings in simple formatting, 3rd string rich textformatted - - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <sst uniqueCount="6" count="6" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <si> -* <t>This is a teststring 1</t> -* </si> -* <si> -* <t>This is a teststring 2</t> -* </si> -* <si> -* <r> -* <t>T</t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color rgb="FFFF0000"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t xml:space="preserve">his is a </t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color theme="1"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t>teststring 3</t> -* </r> -* </si> -* </sst> -*--------------------------------------------------------------------* - - lo_shared_strings_xml = me->get_ixml_from_zip_archive( i_filename = ip_path - is_normalizing = space ). " NO!!! normalizing - otherwise leading blanks will be omitted and that is not really desired for the stringtable - lo_node_si ?= lo_shared_strings_xml->find_from_name( 'si' ). - WHILE lo_node_si IS BOUND. - - APPEND INITIAL LINE TO me->shared_strings ASSIGNING <lv_shared_string>. " Each <si>-entry in the xml-file must lead to an entry in our stringtable - lo_node_si_child ?= lo_node_si->get_first_child( ). - IF lo_node_si_child IS BOUND. - lv_tag_name = lo_node_si_child->get_name( ). - IF lv_tag_name = 't'. -*--------------------------------------------------------------------* -* §1.1 - "simple" strings -* Example: see above -*--------------------------------------------------------------------* - <lv_shared_string> = lo_node_si_child->get_value( ). - ELSE. -*--------------------------------------------------------------------* -* §1.2 - rich text formatted strings -* it is sufficient to strip the <t>...</t> tag from each <r>-tag and concatenate these -* as long as rich text formatting is not supported (2do§1) ignore all info about formatting -* Example: see above -*--------------------------------------------------------------------* - WHILE lo_node_si_child IS BOUND. " actually these children of <si> are <r>-tags - - lo_node_r_child_t ?= lo_node_si_child->find_from_name( 't' ). " extract the <t>...</t> part of each <r>-tag - IF lo_node_r_child_t IS BOUND. - lv_node_value = lo_node_r_child_t->get_value( ). - CONCATENATE <lv_shared_string> lv_node_value INTO <lv_shared_string> RESPECTING BLANKS. - ENDIF. - - lo_node_si_child ?= lo_node_si_child->get_next( ). - - ENDWHILE. - ENDIF. - ENDIF. - - lo_node_si ?= lo_node_si->get_next( ). - ENDWHILE. - - endmethod. - - - - - - method LOAD_STYLES. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (wip ) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_xf, - applyalignment TYPE string, - applyborder TYPE string, - applyfill TYPE string, - applyfont TYPE string, - applynumberformat TYPE string, - applyprotection TYPE string, - borderid TYPE string, - fillid TYPE string, - fontid TYPE string, - numfmtid TYPE string, - pivotbutton TYPE string, - quoteprefix TYPE string, - xfid TYPE string, - END OF lty_xf. - - TYPES: BEGIN OF lty_alignment, - horizontal TYPE string, - indent TYPE string, - justifylastline TYPE string, - readingorder TYPE string, - relativeindent TYPE string, - shrinktofit TYPE string, - textrotation TYPE string, - vertical TYPE string, - wraptext TYPE string, - END OF lty_alignment. - - TYPES: BEGIN OF lty_protection, - hidden TYPE string, - locked TYPE string, - END OF lty_protection. - - DATA: lo_styles_xml TYPE REF TO if_ixml_document, - lo_style TYPE REF TO zcl_excel_style, - - lt_num_formats TYPE t_num_formats, - lt_fills TYPE t_fills, - lt_borders TYPE t_borders, - lt_fonts TYPE t_fonts, - - ls_num_format TYPE t_num_format, - ls_fill TYPE REF TO zcl_excel_style_fill, - ls_cell_border TYPE REF TO zcl_excel_style_borders, - ls_font TYPE REF TO zcl_excel_style_font, - - lo_node_cellxfs TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_alignment TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_protection TYPE REF TO if_ixml_element, - - lo_nodes_xf TYPE REF TO if_ixml_node_collection, - lo_iterator_cellxfs TYPE REF TO if_ixml_node_iterator, - - ls_xf TYPE lty_xf, - ls_alignment TYPE lty_alignment, - ls_protection TYPE lty_protection, - lv_index TYPE i. - -*--------------------------------------------------------------------* -* To build a complete style that fully describes how a cell looks like -* we need the various parts -* §1 - Numberformat -* §2 - Fillstyle -* §3 - Borders -* §4 - Font -* §5 - Alignment -* §6 - Protection - -* Following is an example how this part of a file could be set up -* ... -* parts with various formatinformation - see §1,§2,§3,§4 -* ... -* <cellXfs count="26"> -* <xf numFmtId="0" borderId="0" fillId="0" fontId="0" xfId="0"/> -* <xf numFmtId="0" borderId="0" fillId="2" fontId="0" xfId="0" applyFill="1"/> -* <xf numFmtId="0" borderId="1" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="2" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="3" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="4" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="0" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* ... -* </cellXfs> -*--------------------------------------------------------------------* - - lo_styles_xml = me->get_ixml_from_zip_archive( ip_path ). - -*--------------------------------------------------------------------* -* The styles are build up from -* §1 number formats -* §2 fill styles -* §3 border styles -* §4 fonts -* These need to be read before we can try to build up a complete -* style that describes the look of a cell -*--------------------------------------------------------------------* - lt_num_formats = load_style_num_formats( lo_styles_xml ). " §1 - lt_fills = load_style_fills( lo_styles_xml ). " §2 - lt_borders = load_style_borders( lo_styles_xml ). " §3 - lt_fonts = load_style_fonts( lo_styles_xml ). " §4 - -*--------------------------------------------------------------------* -* Now everything is prepared to build a "full" style -*--------------------------------------------------------------------* - lo_node_cellxfs = lo_styles_xml->find_from_name( name = 'cellXfs' ). - IF lo_node_cellxfs IS BOUND. - lo_nodes_xf = lo_node_cellxfs->get_elements_by_tag_name( name = 'xf' ). - lo_iterator_cellxfs = lo_nodes_xf->create_iterator( ). - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - WHILE lo_node_cellxfs_xf IS BOUND. - - lo_style = ip_excel->add_new_style( ). - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf - CHANGING - cp_structure = ls_xf ). -*--------------------------------------------------------------------* -* §2 fill style -*--------------------------------------------------------------------* - IF ls_xf-applyfill = '1' AND ls_xf-fillid IS NOT INITIAL. - lv_index = ls_xf-fillid + 1. - READ TABLE lt_fills INTO ls_fill INDEX lv_index. - IF sy-subrc = 0. - lo_style->fill = ls_fill. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §1 number format -*--------------------------------------------------------------------* - IF ls_xf-numfmtid IS NOT INITIAL. - READ TABLE lt_num_formats INTO ls_num_format WITH TABLE KEY id = ls_xf-numfmtid. - IF sy-subrc = 0. - lo_style->number_format = ls_num_format-format. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §3 border style -*--------------------------------------------------------------------* - IF ls_xf-applyborder = '1' AND ls_xf-borderid IS NOT INITIAL. - lv_index = ls_xf-borderid + 1. - READ TABLE lt_borders INTO ls_cell_border INDEX lv_index. - IF sy-subrc = 0. - lo_style->borders = ls_cell_border. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §4 font -*--------------------------------------------------------------------* - IF ls_xf-applyfont = '1' AND ls_xf-fontid IS NOT INITIAL. - lv_index = ls_xf-fontid + 1. - READ TABLE lt_fonts INTO ls_font INDEX lv_index. - IF sy-subrc = 0. - lo_style->font = ls_font. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §5 - Alignment -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_alignment ?= lo_node_cellxfs_xf->find_from_name( 'alignment' ). - IF lo_node_cellxfs_xf_alignment IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_alignment - CHANGING - cp_structure = ls_alignment ). - IF ls_alignment-horizontal IS NOT INITIAL. - lo_style->alignment->horizontal = ls_alignment-horizontal. - ENDIF. - - IF ls_alignment-vertical IS NOT INITIAL. - lo_style->alignment->vertical = ls_alignment-vertical. - ENDIF. - - IF ls_alignment-textrotation IS NOT INITIAL. - lo_style->alignment->textrotation = ls_alignment-textrotation. - ENDIF. - - IF ls_alignment-wraptext = '1' OR ls_alignment-wraptext = 'true'. - lo_style->alignment->wraptext = abap_true. - ENDIF. - - IF ls_alignment-shrinktofit = '1' OR ls_alignment-shrinktofit = 'true'. - lo_style->alignment->shrinktofit = abap_true. - ENDIF. - - IF ls_alignment-indent IS NOT INITIAL. - lo_style->alignment->indent = ls_alignment-indent. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §6 - Protection -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_protection ?= lo_node_cellxfs_xf->find_from_name( 'protection' ). - IF lo_node_cellxfs_xf_protection IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_protection - CHANGING - cp_structure = ls_protection ). - IF ls_protection-locked = '1' OR ls_protection-locked = 'true'. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_locked. - ELSE. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - ENDIF. - - IF ls_protection-hidden = '1' OR ls_protection-hidden = 'true'. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_hidden. - ELSE. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_unhidden. - ENDIF. - - ENDIF. - - INSERT lo_style INTO TABLE me->styles. - - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - - ENDWHILE. - ENDIF. - - endmethod. - - - - - method LOAD_STYLE_BORDERS. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_border TYPE REF TO if_ixml_element, - lo_node_bordertype TYPE REF TO if_ixml_element, - lo_node_bordercolor TYPE REF TO if_ixml_element, - lo_cell_border TYPE REF TO zcl_excel_style_borders, - lo_border TYPE REF TO zcl_excel_style_border, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used borderformats to build up our styles -* §1 A cell has 4 outer borders and 2 diagonal "borders" -* These borders can be formatted separately but the diagonal borders -* are always being formatted the same -* We'll parse through the <border>-tag for each of the bordertypes -* §2 and read the corresponding formatting information - -* Following is an example how this part of a file could be set up -* <border diagonalDown="1"> -* <left style="mediumDashDotDot"> -* <color rgb="FFFF0000"/> -* </left> -* <right/> -* <top style="thick"> -* <color rgb="FFFF0000"/> -* </top> -* <bottom style="thick"> -* <color rgb="FFFF0000"/> -* </bottom> -* <diagonal style="thick"> -* <color rgb="FFFF0000"/> -* </diagonal> -* </border> -*--------------------------------------------------------------------* - lo_node_border ?= ip_xml->find_from_name( 'border' ). - WHILE lo_node_border IS BOUND. - - CREATE OBJECT lo_cell_border. - -*--------------------------------------------------------------------* -* Diagonal borderlines are formatted the equally. Determine what kind of diagonal borders are present if any -*--------------------------------------------------------------------* -* DiagonalNone = 0 -* DiagonalUp = 1 -* DiagonalDown = 2 -* DiagonalBoth = 3 -*--------------------------------------------------------------------* - IF lo_node_border->get_attribute( 'diagonalDown' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_down to lo_cell_border->diagonal_mode. - ENDIF. - - IF lo_node_border->get_attribute( 'diagonalUp' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_up to lo_cell_border->diagonal_mode. - ENDIF. - - lo_node_bordertype ?= lo_node_border->get_first_child( ). - WHILE lo_node_bordertype IS BOUND. -*--------------------------------------------------------------------* -* §1 Determine what kind of border we are talking about -*--------------------------------------------------------------------* -* Up, down, left, right, diagonal -*--------------------------------------------------------------------* - CREATE OBJECT lo_border. - - CASE lo_node_bordertype->get_name( ). - - WHEN 'left'. - lo_cell_border->left = lo_border. - - WHEN 'right'. - lo_cell_border->right = lo_border. - - WHEN 'top'. - lo_cell_border->top = lo_border. - - WHEN 'bottom'. - lo_cell_border->down = lo_border. - - WHEN 'diagonal'. - lo_cell_border->diagonal = lo_border. - - ENDCASE. - -*--------------------------------------------------------------------* -* §2 Read the border-formatting -*--------------------------------------------------------------------* - lo_border->border_style = lo_node_bordertype->get_attribute( 'style' ). - lo_node_bordercolor ?= lo_node_bordertype->find_from_name( 'color' ). - IF lo_node_bordercolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bordercolor - CHANGING - cp_structure = ls_color ). - - lo_border->border_color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_border->border_color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_border->border_color-theme = ls_color-theme. - ENDIF. - lo_border->border_color-tint = ls_color-tint. - ENDIF. - - lo_node_bordertype ?= lo_node_bordertype->get_next( ). - - ENDWHILE. - - INSERT lo_cell_border INTO TABLE ep_borders. - - lo_node_border ?= lo_node_border->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_FILLS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support gradientFill -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* commenting on problems/future enhancements/todos we already know of or should decide upon -* adding comments to explain what we are trying to achieve -* renaming variables to indicate what they are used for -*--------------------------------------------------------------------* - DATA: lv_value TYPE string, - lo_node_fill TYPE REF TO if_ixml_element, - lo_node_fill_child TYPE REF TO if_ixml_element, - lo_node_bgcolor TYPE REF TO if_ixml_element, - lo_node_fgcolor TYPE REF TO if_ixml_element, - lo_fill TYPE REF TO zcl_excel_style_fill, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fillformats to build up our styles - -* Following is an example how this part of a file could be set up -* <fill> -* <patternFill patternType="gray125"/> -* </fill> -* <fill> -* <patternFill patternType="solid"> -* <fgColor rgb="FFFFFF00"/> -* <bgColor indexed="64"/> -* </patternFill> -* </fill> -*--------------------------------------------------------------------* - - lo_node_fill ?= ip_xml->find_from_name( 'fill' ). - WHILE lo_node_fill IS BOUND. - - CREATE OBJECT lo_fill. - lo_node_fill_child ?= lo_node_fill->get_first_child( ). - lv_value = lo_node_fill_child->get_name( ). - CASE lv_value. - -*--------------------------------------------------------------------* -* Patternfill -*--------------------------------------------------------------------* - WHEN 'patternFill'. - lo_fill->filltype = lo_node_fill_child->get_attribute( 'patternType' ). -*--------------------------------------------------------------------* -* Patternfill - background color -*--------------------------------------------------------------------* - lo_node_bgcolor = lo_node_fill_child->find_from_name( 'bgColor' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - -*--------------------------------------------------------------------* -* Patternfill - foreground color -*--------------------------------------------------------------------* - lo_node_fgcolor = lo_node_fill->find_from_name( 'fgColor' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - - -*--------------------------------------------------------------------* -* gradientFill -*--------------------------------------------------------------------* - WHEN 'gradientFill'. - " 2do§1 Support gradientFill - - WHEN OTHERS. - - ENDCASE. - - - INSERT lo_fill INTO TABLE ep_fills. - - lo_node_fill ?= lo_node_fill->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_FONTS. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* removing unused variables -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_font TYPE REF TO if_ixml_element, - lo_node2 TYPE REF TO if_ixml_element, - lo_font TYPE REF TO zcl_excel_style_font, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fonts to build up our styles - -* Following is an example how this part of a file could be set up -* <font> -* <sz val="11"/> -* <color theme="1"/> -* <name val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </font> -*--------------------------------------------------------------------* - lo_node_font ?= ip_xml->find_from_name( 'font' ). - WHILE lo_node_font IS BOUND. - - CREATE OBJECT lo_font. -*--------------------------------------------------------------------* -* Bold -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'b' ) IS BOUND. - lo_font->bold = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Italic -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'i' ) IS BOUND. - lo_font->italic = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Underline -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'u' ). - IF lo_node2 IS BOUND. - lo_font->underline = abap_true. - lo_font->underline_mode = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* StrikeThrough -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'strike' ) IS BOUND. - lo_font->strikethrough = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Fontsize -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'sz' ). - IF lo_node2 IS BOUND. - lo_font->size = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontname -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'name' ). - IF lo_node2 IS BOUND. - lo_font->name = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontfamily -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'family' ). - IF lo_node2 IS BOUND. - lo_font->family = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontscheme -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'scheme' ). - IF lo_node2 IS BOUND. - lo_font->scheme = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontcolor -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'color' ). - IF lo_node2 IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node2 - CHANGING - cp_structure = ls_color ). - lo_font->color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_font->color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_font->color-theme = ls_color-theme. - ENDIF. - lo_font->color-tint = ls_color-tint. - ENDIF. - - INSERT lo_font INTO TABLE ep_fonts. - - lo_node_font ?= lo_node_font->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_NUM_FORMATS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Explain gaps in predefined formats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* adding comments to explain what we are trying to achieve -* aligning code -*--------------------------------------------------------------------* - DATA: lo_node_numfmt TYPE REF TO if_ixml_element, - ls_num_format TYPE t_num_format. - -*--------------------------------------------------------------------* -* We need a table of used numberformats to build up our styles -* there are two kinds of numberformats -* §1 those that have been explicitly added by the createor of the excel-file -* §2 and built-in numberformats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 Get non-internal numberformats that are found in the file explicitly - -* Following is an example how this part of a file could be set up -* <numFmts count="1"> -* <numFmt formatCode="#,###,###,###,##0.00" numFmtId="164"/> -* </numFmts> -*--------------------------------------------------------------------* - lo_node_numfmt ?= ip_xml->find_from_name( 'numFmt' ). - WHILE lo_node_numfmt IS BOUND. - - CLEAR ls_num_format. - - CREATE OBJECT ls_num_format-format. - ls_num_format-format->format_code = lo_node_numfmt->get_attribute( 'formatCode' ). - ls_num_format-id = lo_node_numfmt->get_attribute( 'numFmtId' ). - INSERT ls_num_format INTO TABLE ep_num_formats. - - lo_node_numfmt ?= lo_node_numfmt->get_next( ). - - ENDWHILE. - - DEFINE predefined_format. - ls_num_format-id = &1. - create object ls_num_format-format. - ls_num_format-format->format_code = &2. - insert ls_num_format into table ep_num_formats. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* §1 Get internal predefined numberformats -*--------------------------------------------------------------------* - predefined_format '1' '0'. - predefined_format '2' '0.00'. - predefined_format '3' '#,##0'. - predefined_format '4' '#,##0.00'. - predefined_format '5' '$#,##0_);($#,##0)'. - predefined_format '6' '$#,##0_);[Red]($#,##0)'. - predefined_format '7' '$#,##0.00_);($#,##0.00)'. - predefined_format '8' '$#,##0.00_);[Red]($#,##0.00)'. - predefined_format '9' '0%'. - predefined_format '10' '0.00%'. - predefined_format '11' '0.00E+00'. - predefined_format '12' '# ?/?'. - predefined_format '13' '# ??/??'. - predefined_format '14' 'm/d/yyyy'. - predefined_format '15' 'd-mmm-yy'. - predefined_format '16' 'd-mmm'. - predefined_format '17' 'mmm-yy'. - predefined_format '18' 'h:mm AM/PM'. - predefined_format '19' 'h:mm:ss AM/PM'. - predefined_format '20' 'h:mm'. - predefined_format '21' 'h:mm:ss'. - predefined_format '22' 'm/d/yyyy h:mm'. -* 2do§1 Why is there a gap in here? - - - - - - - - - - - - - - predefined_format '37' '#,##0_);(#,##0)'. - predefined_format '38' '#,##0_);[Red](#,##0)'. - predefined_format '39' '#,##0.00_);(#,##0.00)'. - predefined_format '40' '#,##0.00_);[Red](#,##0.00)'. -* 2do§1 Why is there a gap in here? - - - - predefined_format '45' 'mm:ss'. - predefined_format '46' '[h]:mm:ss'. - predefined_format '47' 'mm:ss.0'. - predefined_format '48' '##0.0E+0'. - predefined_format '49' '@'. -* 2do§1 Is 49 really the last predefined format? - - - endmethod. - - - - - - method LOAD_WORKBOOK. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Move macro-reading from zcl_excel_reader_xlsm to this class -* autodetect existance of macro/vba content -* Allow inputparameter to explicitly tell reader to ignore vba-content -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-10 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* removing unused variables -* adding me-> where possible -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -* renaming i/o parameters: previous input-parameter ip_path holds a (full) filename and not a path --> rename to iv_workbook_full_filename -* ip_excel renamed while being at it --> rename to io_excel -*--------------------------------------------------------------------* -* issue #232 - Read worksheetstate hidden/veryHidden -* - Stefan Schmöcker, 2012-11-11 -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 -* changes: correction in named ranges to correctly attach -* sheetlocal names/ranges to the correct sheet -*--------------------------------------------------------------------* -* issue#284 - Copied formulae ignored when reading excelfile -* - Stefan Schmöcker, 2013-08-02 -* changes: initialize area to hold referenced formulaedata -* after all worksheets have been read resolve formuae -*--------------------------------------------------------------------* - - CONSTANTS: lcv_shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - lcv_worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lcv_styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lcv_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - begin data declarations -*--------------------------------------------------------------------* - lcv_worksheet_state_hidden TYPE string VALUE 'hidden', - lcv_worksheet_state_veryhidden TYPE string VALUE 'veryHidden'. -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - end data declarations -*--------------------------------------------------------------------* - - DATA: - lv_path TYPE string, - lv_filename TYPE chkfile, - lv_full_filename TYPE string, - - lo_rels_workbook TYPE REF TO if_ixml_document, - lt_worksheets TYPE STANDARD TABLE OF t_relationship WITH NON-UNIQUE DEFAULT KEY, - lo_workbook TYPE REF TO if_ixml_document, - lv_workbook_index TYPE i, - lv_worksheet_path TYPE string, - ls_sheet TYPE t_sheet, - - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lv_worksheet_title TYPE zexcel_sheet_title, - lv_tabix TYPE sytabix, " #235 - repeat rows/cols. Needed to link defined name to correct worksheet - - ls_range TYPE t_range, - lv_range_value TYPE zexcel_range_value, -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin data declarations -*--------------------------------------------------------------------* - lv_active_sheet_string TYPE string, - lv_zexcel_active_worksheet TYPE zexcel_active_worksheet, -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - added autofilter support while changing this section - lo_autofilter TYPE REF TO zcl_excel_autofilter, - ls_area TYPE zexcel_s_autofilter_area, - lv_col_start_alpha TYPE zexcel_cell_column_alpha, - lv_col_end_alpha TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row , - lv_regex TYPE string, - lv_range_value_1 TYPE zexcel_range_value, - lv_range_value_2 TYPE zexcel_range_value. -*--------------------------------------------------------------------* -* #229: Set active worksheet - end data declarations -*--------------------------------------------------------------------* - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - -*--------------------------------------------------------------------* - -* §1 Get the position of files related to this workbook -* Usually this will be <root>/xl/workbook.xml -* Thus the workbookroot will be <root>/xl/ -* The position of all related files will be given in file -* <workbookroot>/_rels/<workbookfilename>.rels and their positions -* be be given relative to the workbookroot - -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="styles.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Id="rId6"/> -* <Relationship Target="theme/theme1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Id="rId5"/> -* <Relationship Target="worksheets/sheet1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId1"/> -* <Relationship Target="worksheets/sheet2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId2"/> -* <Relationship Target="worksheets/sheet3.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId3"/> -* <Relationship Target="worksheets/sheet4.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId4"/> -* <Relationship Target="sharedStrings.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Id="rId7"/> -* </Relationships> -* -* §2 Load data that is relevant to the complete workbook -* Currently supported is: -* §2.1 Shared strings - This holds all strings that are used in all worksheets -* §2.2 Styles - This holds all styles that are used in all worksheets -* §2.3 Worksheets - For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* §2.4 [Themes] - not supported -* §2.5 [VBA (Macro)] - supported in class zcl_excel_reader_xlsm but should be moved here and autodetect -* ... -* -* §3 Some information is held in the workbookfile as well -* §3.1 Names and order of of worksheets -* §3.2 Active worksheet -* §3.3 Defined names -* ... -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <fileVersion rupBuild="4506" lowestEdited="4" lastEdited="4" appName="xl"/> -* <workbookPr defaultThemeVersion="124226"/> -* <bookViews> -* <workbookView activeTab="1" windowHeight="8445" windowWidth="19035" yWindow="120" xWindow="120"/> -* </bookViews> -* <sheets> -* <sheet r:id="rId1" sheetId="1" name="Sheet1"/> -* <sheet r:id="rId2" sheetId="2" name="Sheet2"/> -* <sheet r:id="rId3" sheetId="3" name="Sheet3" state="hidden"/> -* <sheet r:id="rId4" sheetId="4" name="Sheet4"/> -* </sheets> -* <definedNames/> -* <calcPr calcId="125725"/> -* </workbook> -*--------------------------------------------------------------------* - - CLEAR me->mt_ref_formulae. " ins issue#284 - -*--------------------------------------------------------------------* -* §1 Get the position of files related to this workbook -* Entry into this method is with the filename of the workbook -*--------------------------------------------------------------------* - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = lv_filename - file_path = lv_path. - - CONCATENATE lv_path '_rels/' lv_filename '.rels' - INTO lv_full_filename. - lo_rels_workbook = me->get_ixml_from_zip_archive( lv_full_filename ). - - lo_node ?= lo_rels_workbook->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING ip_element = lo_node CHANGING cp_structure = ls_relationship ). - - CASE ls_relationship-type. - -*--------------------------------------------------------------------* -* §2.1 Shared strings - This holds all strings that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_shared_strings. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_shared_strings( lv_full_filename ). - -*--------------------------------------------------------------------* -* §2.3 Worksheets -* For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* Shared strings and styles have to be present before we can start with creating the worksheets -* thus we only store this information for use when parsing the workbookfile for sheetinformations -*--------------------------------------------------------------------* - WHEN lcv_worksheet. - APPEND ls_relationship TO lt_worksheets. - -*--------------------------------------------------------------------* -* §2.2 Styles - This holds the styles that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_styles. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_styles( ip_path = lv_full_filename - ip_excel = io_excel ). - - WHEN OTHERS. - - ENDCASE. - - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - -*--------------------------------------------------------------------* -* §3 Some information held in the workbookfile -*--------------------------------------------------------------------* - lo_workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - -*--------------------------------------------------------------------* -* §3.1 Names and order of of worksheets -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'sheet' ). - lv_workbook_index = 1. - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_sheet ). -*--------------------------------------------------------------------* -* Create new worksheet in workbook with correct name -*--------------------------------------------------------------------* - lv_worksheet_title = ls_sheet-name. - IF lv_workbook_index = 1. " First sheet has been added automatically by creating io_excel - lo_worksheet = io_excel->get_active_worksheet( ). - lo_worksheet->set_title( lv_worksheet_title ). - ELSE. - lo_worksheet = io_excel->add_new_worksheet( lv_worksheet_title ). - ENDIF. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - begin of coding -* Set status hidden if necessary -*--------------------------------------------------------------------* - CASE ls_sheet-state. - - WHEN lcv_worksheet_state_hidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - WHEN lcv_worksheet_state_veryhidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_veryhidden. - - ENDCASE. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - end of coding -*--------------------------------------------------------------------* -*--------------------------------------------------------------------* -* Load worksheetdata -*--------------------------------------------------------------------* - READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_sheet-id. - IF sy-subrc = 0. - <worksheet>-sheetid = ls_sheet-sheetid. "ins #235 - repeat rows/cols - needed to identify correct sheet - CONCATENATE lv_path <worksheet>-target - INTO lv_worksheet_path. - me->load_worksheet( ip_path = lv_worksheet_path - io_worksheet = lo_worksheet ). - <worksheet>-worksheet = lo_worksheet. - ENDIF. - - lo_node ?= lo_node->get_next( ). - ADD 1 TO lv_workbook_index. - - ENDWHILE. - SORT lt_worksheets BY sheetid. " needed for localSheetid -referencing - -*--------------------------------------------------------------------* -* #284: Set active worksheet - Resolve referenced formulae to -* explicit formulae those cells -*--------------------------------------------------------------------* - me->resolve_referenced_formulae( ). - " ins issue#284 -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin coding -* §3.2 Active worksheet -*--------------------------------------------------------------------* - lv_zexcel_active_worksheet = 1. " First sheet = active sheet if nothing else specified. - lo_node ?= lo_workbook->find_from_name( 'workbookView' ). - IF lo_node IS BOUND. - lv_active_sheet_string = lo_node->get_attribute( 'activeTab' ). - TRY. - lv_zexcel_active_worksheet = lv_active_sheet_string + 1. " EXCEL numbers the sheets from 0 onwards --> index into worksheettable is increased by one - CATCH cx_sy_conversion_error. "#EC NO_HANDLER - error here --> just use the default 1st sheet - ENDTRY. - ENDIF. - io_excel->set_active_sheet_index( lv_zexcel_active_worksheet ). -*--------------------------------------------------------------------* -* #229: Set active worksheet - end coding -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §3.3 Defined names -* So far I have encountered these -* - named ranges - sheetlocal -* - named ranges - workbookglobal -* - autofilters - sheetlocal ( special range ) -* - repeat rows/cols - sheetlocal ( special range ) -* -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'definedName' ). - WHILE lo_node IS BOUND. - - CLEAR lo_range. "ins issue #235 - repeat rows/cols - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_range ). - lv_range_value = lo_node->get_value( ). - - IF ls_range-localsheetid IS NOT INITIAL. " issue #163+ -* READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_range-localsheetid. "del issue #235 - repeat rows/cols " issue #163+ -* lo_range = <worksheet>-worksheet->add_new_range( ). "del issue #235 - repeat rows/cols " issue #163+ -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - begin -*--------------------------------------------------------------------* - lv_tabix = ls_range-localsheetid + 1. - READ TABLE lt_worksheets ASSIGNING <worksheet> INDEX lv_tabix. - IF sy-subrc = 0. - CASE ls_range-name. - -*--------------------------------------------------------------------* -* insert autofilters -*--------------------------------------------------------------------* - WHEN zcl_excel_autofilters=>c_autofilter. - lo_autofilter = io_excel->add_new_autofilter( io_sheet = <worksheet>-worksheet ) . - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = ls_area-row_start ). - ls_area-col_start = zcl_excel_common=>convert_column2int( lv_col_start_alpha ). - ls_area-col_end = zcl_excel_common=>convert_column2int( lv_col_end_alpha ). - lo_autofilter->set_filter_area( is_area = ls_area ). - -*--------------------------------------------------------------------* -* repeat print rows/columns -*--------------------------------------------------------------------* - WHEN zif_excel_sheet_printsettings=>gcv_print_title_name. - lo_range = <worksheet>-worksheet->add_new_range( ). -*--------------------------------------------------------------------* -* This might be a temporary solution. Maybe ranges get be reworked -* to support areas consisting of multiple rectangles -* But for now just split the range into row and columnpart -*--------------------------------------------------------------------* - CLEAR:lv_range_value_1, - lv_range_value_2. - IF lv_range_value IS INITIAL. -* Empty --> nothing to do - ELSE. - IF lv_range_value(1) = `'`. " Escaped - lv_regex = `^('[^']*')+![^,]*,`. - ELSE. - lv_regex = `^[^!]*![^,]*,`. - ENDIF. -* Split into two ranges if necessary - FIND REGEX lv_regex IN lv_range_value MATCH LENGTH sy-fdpos. - IF sy-subrc = 0 AND sy-fdpos > 0. - lv_range_value_2 = lv_range_value+sy-fdpos. - SUBTRACT 1 FROM sy-fdpos. - lv_range_value_1 = lv_range_value(sy-fdpos). - ELSE. - lv_range_value_1 = lv_range_value. - ENDIF. - ENDIF. -* 1st range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - -* 2nd range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - - WHEN OTHERS. - - ENDCASE. - ENDIF. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - end -*--------------------------------------------------------------------* - ELSE. " issue #163+ - lo_range = io_excel->add_new_range( ). " issue #163+ - ENDIF. " issue #163+ -* lo_range = ip_excel->add_new_range( ). " issue #163- - IF lo_range IS BOUND. "ins issue #235 - repeat rows/cols - lo_range->name = ls_range-name. - lo_range->set_range_value( lv_range_value ). - ENDIF. "ins issue #235 - repeat rows/cols - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - endmethod. - - - - - - method LOAD_WORKSHEET. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Header/footer -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, -* - ... -* changes: renaming variables to naming conventions -* aligning code (started) -* add a list of open ToDos here -* adding comments to explain what we are trying to achieve (started) -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_cell, - r TYPE string, - t TYPE string, - s TYPE string, - END OF lty_cell. - - TYPES: BEGIN OF lty_column, - min TYPE string, - max TYPE string, - width TYPE float, - customwidth TYPE string, - style TYPE string, - bestfit TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_column. - - TYPES: BEGIN OF lty_sheetview, - showgridlines TYPE zexcel_show_gridlines, - tabselected TYPE string, - zoomscalenormal TYPE string, - workbookviewid TYPE string, - showrowcolheaders TYPE string, - END OF lty_sheetview. - - TYPES: BEGIN OF lty_mergecell, - ref TYPE string, - END OF lty_mergecell. - - TYPES: BEGIN OF lty_row, - r TYPE string, - customheight TYPE string, - ht TYPE float, - spans TYPE string, - thickbot TYPE string, - customformat TYPE string, - thicktop TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_row. - - TYPES: BEGIN OF lty_page_setup, - id TYPE string, - orientation TYPE string, - scale TYPE string, - END OF lty_page_setup. - - TYPES: BEGIN OF lty_page_margins, - footer TYPE string, - header TYPE string, - bottom TYPE string, - top TYPE string, - right TYPE string, - left TYPE string, - END OF lty_page_margins. - - TYPES: BEGIN OF lty_sheetformatpr, - customheight TYPE string, - defaultrowheight TYPE string, - customwidth TYPE string, - defaultcolwidth TYPE string, - END OF lty_sheetformatpr. - - TYPES: BEGIN OF lty_headerfooter, - alignwithmargins TYPE string, - differentoddeven TYPE string, - END OF lty_headerfooter. - - TYPES: BEGIN OF lty_tabcolor, - rgb TYPE string, - theme TYPE string, - END OF lty_tabcolor. - - TYPES: BEGIN OF lty_datavalidation, - type TYPE zexcel_data_val_type, - allowblank TYPE flag, - showinputmessage TYPE flag, - showerrormessage TYPE flag, - showdropdown TYPE flag, - operator TYPE zexcel_data_val_operator, - formula1 TYPE zexcel_validation_formula1, - formula2 TYPE zexcel_validation_formula1, - sqref TYPE string, - cell_column TYPE zexcel_cell_column_alpha, - cell_column_to TYPE zexcel_cell_column_alpha, - cell_row TYPE zexcel_cell_row, - cell_row_to TYPE zexcel_cell_row, - error TYPE string, - errortitle TYPE string, - prompt TYPE string, - prompttitle TYPE string, - errorstyle TYPE zexcel_data_val_error_style, - END OF lty_datavalidation. - - - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1', - lc_rel_drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_rel_printer TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings'. - - DATA: lo_ixml_worksheet TYPE REF TO if_ixml_document, - lo_ixml_cells TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, - lo_ixml_row_elem TYPE REF TO if_ixml_element, - lo_ixml_cell_elem TYPE REF TO if_ixml_element, - ls_cell TYPE lty_cell, - lv_index TYPE i, - lo_ixml_value_elem TYPE REF TO if_ixml_element, - lo_ixml_formula_elem TYPE REF TO if_ixml_element, - lv_cell_value TYPE zexcel_cell_value, - lv_cell_formula TYPE zexcel_cell_formula, - lv_cell_column TYPE zexcel_cell_column_alpha, - lv_cell_row TYPE zexcel_cell_row, - lo_excel_style TYPE REF TO zcl_excel_style, - lv_style_guid TYPE zexcel_cell_style, - - lo_ixml_imension_elem TYPE REF TO if_ixml_element, "#+234 - lv_dimension_range TYPE string, "#+234 - - lo_ixml_sheetview_elem TYPE REF TO if_ixml_element, - ls_sheetview TYPE lty_sheetview, - lo_ixml_pane_elem TYPE REF TO if_ixml_element, - ls_excel_pane TYPE zexcel_pane, - lv_pane_cell_row TYPE zexcel_cell_row, - lv_pane_cell_col_a TYPE zexcel_cell_column_alpha, - lv_pane_cell_col TYPE zexcel_cell_column, - - lo_ixml_mergecells TYPE REF TO if_ixml_node_collection, - lo_ixml_mergecell_elem TYPE REF TO if_ixml_element, - ls_mergecell TYPE lty_mergecell, - lv_merge_column_start TYPE zexcel_cell_column_alpha, - lv_merge_column_end TYPE zexcel_cell_column_alpha, - lv_merge_row_start TYPE zexcel_cell_row, - lv_merge_row_end TYPE zexcel_cell_row, - - lo_ixml_sheetformatpr_elem TYPE REF TO if_ixml_element, - ls_sheetformatpr TYPE lty_sheetformatpr, - lv_height TYPE float, - - lo_ixml_headerfooter_elem TYPE REF TO if_ixml_element, - ls_headerfooter TYPE lty_headerfooter, - ls_odd_header TYPE zexcel_s_worksheet_head_foot, - ls_odd_footer TYPE zexcel_s_worksheet_head_foot, - ls_even_header TYPE zexcel_s_worksheet_head_foot, - ls_even_footer TYPE zexcel_s_worksheet_head_foot, - lo_ixml_hf_value_elem TYPE REF TO if_ixml_element, - - lo_ixml_pagemargins_elem TYPE REF TO if_ixml_element, - ls_pagemargins TYPE lty_page_margins, - lo_ixml_pagesetup_elem TYPE REF TO if_ixml_element, - ls_pagesetup TYPE lty_page_setup, - - lo_ixml_columns TYPE REF TO if_ixml_node_collection, - lo_ixml_column_elem TYPE REF TO if_ixml_element, - ls_column TYPE lty_column, - lv_column_alpha TYPE zexcel_cell_column_alpha, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_outline_level TYPE int4, - - lo_ixml_tabcolor TYPE REF TO if_ixml_element, - ls_tabcolor TYPE lty_tabcolor, - ls_excel_s_tabcolor TYPE zexcel_s_tabcolor, - - lo_ixml_rows TYPE REF TO if_ixml_node_collection, - ls_row TYPE lty_row, - lv_max_col TYPE i, "for use with SPANS element -* lv_min_col TYPE i, "for use with SPANS element " not in use currently - lv_max_col_s TYPE char10, "for use with SPANS element - lv_min_col_s TYPE char10, "for use with SPANS element - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, -*--- End of current code aligning --------------------------------------------------------------- - - lv_path TYPE string, - lo_ixml_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_ixml_rels_worksheet TYPE REF TO if_ixml_document, - lv_rels_worksheet_path TYPE string, - lv_stripped_name TYPE chkfile, - lv_dirname TYPE string, - - lo_ixml_datavalidations TYPE REF TO if_ixml_node_collection, - lo_ixml_datavalidation_elem TYPE REF TO if_ixml_element, - ls_datavalidation TYPE lty_datavalidation, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_datavalidation_range TYPE string, - lt_datavalidation_range TYPE TABLE OF string. - -*--------------------------------------------------------------------* -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets -*--------------------------------------------------------------------* - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = lv_stripped_name - file_path = lv_dirname. - CONCATENATE lv_dirname '_rels/' lv_stripped_name '.rels' - INTO lv_rels_worksheet_path. - TRY. " +#222 _rels/xxx.rels might not be present. If not found there can be no drawings --> just ignore this section - lo_ixml_rels_worksheet = me->get_ixml_from_zip_archive( lv_rels_worksheet_path ). - lo_ixml_node ?= lo_ixml_rels_worksheet->find_from_name( 'Relationship' ). - CATCH zcx_excel. "#EC NO_HANDLER +#222 - " +#222 No errorhandling necessary - node will be unbound if error occurs - ENDTRY. " +#222 - WHILE lo_ixml_node IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_node - CHANGING - cp_structure = ls_relationship ). - CONCATENATE lv_dirname ls_relationship-target INTO lv_path. - lv_path = resolve_path( lv_path ). - - CASE ls_relationship-type. - WHEN lc_rel_drawing. - " Read Drawings - me->load_worksheet_drawing( ip_path = lv_path - io_worksheet = io_worksheet ). - - WHEN lc_rel_printer. - " Read Printer settings - - WHEN OTHERS. - ENDCASE. - - lo_ixml_node ?= lo_ixml_node->get_next( ). - ENDWHILE. - - - lo_ixml_worksheet = me->get_ixml_from_zip_archive( ip_path ). - - - lo_ixml_tabcolor ?= lo_ixml_worksheet->find_from_name( 'tabColor' ). - IF lo_ixml_tabcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_tabcolor - CHANGING - cp_structure = ls_tabcolor ). -* Theme not supported yet - IF ls_tabcolor-rgb IS NOT INITIAL. - ls_excel_s_tabcolor-rgb = ls_tabcolor-rgb. - io_worksheet->set_tabcolor( ls_excel_s_tabcolor ). - ENDIF. - ENDIF. - - lo_ixml_rows = lo_ixml_worksheet->get_elements_by_tag_name( name = 'row' ). - lo_ixml_iterator = lo_ixml_rows->create_iterator( ). - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_row_elem IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_row_elem - CHANGING - cp_structure = ls_row ). - SPLIT ls_row-spans AT ':' INTO lv_min_col_s lv_max_col_s. - lv_index = lv_max_col_s. - IF lv_index > lv_max_col. - lv_max_col = lv_index. - ENDIF. - lv_cell_row = ls_row-r. - IF ls_row-customheight = '1' - OR ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int - OR ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int - OR ls_row-outlinelevel > '0'. - lo_row_dimension = io_worksheet->get_row_dimension( lv_cell_row ). - IF ls_row-customheight = '1'. - lo_row_dimension->set_row_height( ls_row-ht ). - ENDIF. - - IF ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int. - lo_row_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int. - lo_row_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_row-outlinelevel > ''. -* outline_level = condense( row-outlineLevel ). "For basis 7.02 and higher - CONDENSE ls_row-outlinelevel. - lv_outline_level = ls_row-outlinelevel. - IF lv_outline_level > 0. - lo_row_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - ENDIF. - - lo_ixml_cells = lo_ixml_row_elem->get_elements_by_tag_name( name = 'c' ). - lo_ixml_iterator2 = lo_ixml_cells->create_iterator( ). - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - WHILE lo_ixml_cell_elem IS BOUND. - CLEAR: lv_cell_value, - lv_cell_formula, - lv_style_guid. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_cell_elem CHANGING cp_structure = ls_cell ). - - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'v' ). - - CASE ls_cell-t. - WHEN 's'. " String values are stored as index in shared string table - lv_index = lo_ixml_value_elem->get_value( ) + 1. - READ TABLE shared_strings INTO lv_cell_value INDEX lv_index. - WHEN 'inlineStr'. " inlineStr values are kept in special node - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'is' ). - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - WHEN OTHERS. "other types are stored directly - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - ENDCASE. - - CLEAR lv_style_guid. - "read style based on index - IF ls_cell-s IS NOT INITIAL. - lv_index = ls_cell-s + 1. - READ TABLE styles INTO lo_excel_style INDEX lv_index. - IF sy-subrc = 0. - lv_style_guid = lo_excel_style->get_guid( ). - ENDIF. - ENDIF. - - lo_ixml_formula_elem = lo_ixml_cell_elem->find_from_name( name = 'f' ). - IF lo_ixml_formula_elem IS BOUND. - lv_cell_formula = lo_ixml_formula_elem->get_value( ). -*--------------------------------------------------------------------* -* Begin of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - DATA: BEGIN OF ls_formula_attributes, - ref TYPE string, - si TYPE i, - t TYPE string, - END OF ls_formula_attributes, - ls_ref_formula TYPE ty_ref_formulae. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_formula_elem CHANGING cp_structure = ls_formula_attributes ). - IF ls_formula_attributes-t = 'shared'. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - - TRY. - CLEAR ls_ref_formula. - ls_ref_formula-sheet = io_worksheet. - ls_ref_formula-row = lv_cell_row. - ls_ref_formula-column = zcl_excel_common=>convert_column2int( lv_cell_column ). - ls_ref_formula-si = ls_formula_attributes-si. - ls_ref_formula-ref = ls_formula_attributes-ref. - ls_ref_formula-formula = lv_cell_formula. - INSERT ls_ref_formula INTO TABLE me->mt_ref_formulae. - CATCH cx_root. - BREAK-POINT. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* End of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - ENDIF. - - IF lv_cell_value IS NOT INITIAL - OR lv_cell_formula IS NOT INITIAL - OR lv_style_guid IS NOT INITIAL. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - io_worksheet->set_cell( ip_column = lv_cell_column " cell_elem Column - ip_row = lv_cell_row " cell_elem row_elem - ip_value = lv_cell_value " cell_elem Value - ip_formula = lv_cell_formula - ip_data_type = ls_cell-t - ip_style = lv_style_guid ). - ENDIF. - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - ENDWHILE. - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -*--------------------------------------------------------------------* -*#234 - column width not read correctly - begin of coding -* reason - libre office doesn't use SPAN in row - definitions -*--------------------------------------------------------------------* - IF lv_max_col = 0. - lo_ixml_imension_elem = lo_ixml_worksheet->find_from_name( name = 'dimension' ). - IF lo_ixml_imension_elem IS BOUND. - lv_dimension_range = lo_ixml_imension_elem->get_attribute( 'ref' ). - IF lv_dimension_range CS ':'. - REPLACE REGEX '\D+\d+:(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ELSE. - REPLACE REGEX '(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ENDIF. - lv_max_col = zcl_excel_common=>convert_column2int( lv_dimension_range ). - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -*#234 - column width not read correctly - end of coding -*--------------------------------------------------------------------* - - "Get the customized column width - lo_ixml_columns = lo_ixml_worksheet->get_elements_by_tag_name( name = 'col' ). - lo_ixml_iterator = lo_ixml_columns->create_iterator( ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_column_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_column_elem - CHANGING - cp_structure = ls_column ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int - OR ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int - OR ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int - OR ls_column-outlinelevel > '' - OR ls_column-style > ''. - lv_index = ls_column-min. - WHILE lv_index <= ls_column-max AND lv_index <= lv_max_col. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_index ). - lo_column_dimension = io_worksheet->get_column_dimension( lv_column_alpha ). - - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-width IS NOT INITIAL. "+#234 - lo_column_dimension->set_width( ls_column-width ). - ENDIF. - - IF ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int. - lo_column_dimension->set_auto_size( abap_true ). - ENDIF. - - IF ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int. - lo_column_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int. - lo_column_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_column-outlinelevel > ''. -* outline_level = condense( column-outlineLevel ). - CONDENSE ls_column-outlinelevel. - lv_outline_level = ls_column-outlinelevel. - IF lv_outline_level > 0. - lo_column_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - - IF ls_column-style > ''. - sy-index = ls_column-style + 1. - READ TABLE styles INTO lo_excel_style INDEX sy-index. - DATA: dummy_zexcel_cell_style TYPE zexcel_cell_style. - dummy_zexcel_cell_style = lo_excel_style->get_guid( ). - lo_column_dimension->set_column_style_by_guid( dummy_zexcel_cell_style ). - ENDIF. - - ADD 1 TO lv_index. - ENDWHILE. - ENDIF. -* Fix 207 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 -* IF column-hidden = lc_xml_attr_true OR -* column-hidden = lc_xml_attr_true_int. -* index = column-min. -* WHILE index <= column-max. -* column_alpha = zcl_excel_common=>convert_column2alpha( index ). -* column_dimension = io_worksheet->get_column_dimension( column_alpha ). -* column_dimension->set_visible( abap_false ). -* ADD 1 TO index. -* ENDWHILE. -* ENDIF. - ENDWHILE. - - "Now we need to get information from the sheetView node - lo_ixml_sheetview_elem = lo_ixml_worksheet->find_from_name( name = 'sheetView' ). - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetview_elem CHANGING cp_structure = ls_sheetview ). - IF ls_sheetview-showgridlines IS INITIAL OR - ls_sheetview-showgridlines = lc_xml_attr_true OR - ls_sheetview-showgridlines = lc_xml_attr_true_int. - "If the attribute is not specified or set to true, we will show grid lines - ls_sheetview-showgridlines = abap_true. - ELSE. - ls_sheetview-showgridlines = abap_false. - ENDIF. - io_worksheet->set_show_gridlines( ls_sheetview-showgridlines ). - - - "Add merge cell information - lo_ixml_mergecells = lo_ixml_worksheet->get_elements_by_tag_name( name = 'mergeCell' ). - lo_ixml_iterator = lo_ixml_mergecells->create_iterator( ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_mergecell_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_mergecell_elem - CHANGING - cp_structure = ls_mergecell ). - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = ls_mergecell-ref - IMPORTING - e_column_start = lv_merge_column_start - e_column_end = lv_merge_column_end - e_row_start = lv_merge_row_start - e_row_end = lv_merge_row_end ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - io_worksheet->set_merge( EXPORTING - ip_column_start = lv_merge_column_start - ip_column_end = lv_merge_column_end - ip_row = lv_merge_row_start - ip_row_to = lv_merge_row_end ). - ENDWHILE. - - " read sheet format properties - lo_ixml_sheetformatpr_elem = lo_ixml_worksheet->find_from_name( 'sheetFormatPr' ). - IF lo_ixml_sheetformatpr_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetformatpr_elem CHANGING cp_structure = ls_sheetformatpr ). - IF ls_sheetformatpr-customheight = '1'. - lv_height = ls_sheetformatpr-defaultrowheight. - lo_row_dimension = io_worksheet->get_default_row_dimension( ). - lo_row_dimension->set_row_height( lv_height ). - ENDIF. - - " TODO... column - ENDIF. - - " Read in page margins - lo_ixml_pagemargins_elem = lo_ixml_worksheet->find_from_name( 'pageMargins' ). - IF lo_ixml_pagemargins_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagemargins_elem - CHANGING - cp_structure = ls_pagemargins ). - io_worksheet->sheet_setup->margin_bottom = ls_pagemargins-bottom. - io_worksheet->sheet_setup->margin_footer = ls_pagemargins-footer. - io_worksheet->sheet_setup->margin_header = ls_pagemargins-header. - io_worksheet->sheet_setup->margin_left = ls_pagemargins-left. - io_worksheet->sheet_setup->margin_right = ls_pagemargins-right. - io_worksheet->sheet_setup->margin_top = ls_pagemargins-top. - ENDIF. - - " Read in page setup - lo_ixml_pagesetup_elem = lo_ixml_worksheet->find_from_name( 'pageSetup' ). - IF lo_ixml_pagesetup_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagesetup_elem - CHANGING - cp_structure = ls_pagesetup ). - io_worksheet->sheet_setup->orientation = ls_pagesetup-orientation. - io_worksheet->sheet_setup->scale = ls_pagesetup-scale. - ENDIF. - - " Read header footer - lo_ixml_headerfooter_elem = lo_ixml_worksheet->find_from_name( 'headerFooter' ). - IF lo_ixml_headerfooter_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_headerfooter_elem CHANGING cp_structure = ls_headerfooter ). - io_worksheet->sheet_setup->diff_oddeven_headerfooter = ls_headerfooter-differentoddeven. - - lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name( 'oddFooter' ). - IF lo_ixml_hf_value_elem IS NOT INITIAL. - ls_odd_footer-left_value = lo_ixml_hf_value_elem->get_value( ). - ENDIF. - -* 2do§1 Header/footer - " TODO.. get the rest. - - io_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_odd_header - ip_odd_footer = ls_odd_footer - ip_even_header = ls_even_header - ip_even_footer = ls_even_footer ). - - ENDIF. - - " Start fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - " Read pane - lo_ixml_pane_elem = lo_ixml_sheetview_elem->find_from_name( name = 'pane' ). - IF lo_ixml_pane_elem IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_pane_elem CHANGING cp_structure = ls_excel_pane ). - " Issue #194 - " Replace REGEX with method from the common class - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_excel_pane-topleftcell - IMPORTING - e_column = lv_pane_cell_col_a " Cell Column - e_row = lv_pane_cell_row ). " Natural number - lv_pane_cell_col = zcl_excel_common=>convert_column2int( lv_pane_cell_col_a ). - SUBTRACT 1 FROM: lv_pane_cell_col, - lv_pane_cell_row. - IF lv_pane_cell_col > 0 - AND lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row - ip_num_columns = lv_pane_cell_col ). - ELSEIF lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row ). - ELSE. - io_worksheet->freeze_panes( ip_num_columns = lv_pane_cell_col ). - ENDIF. - ENDIF. - " End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - - " Start fix 276 Read data validations - lo_ixml_datavalidations = lo_ixml_worksheet->get_elements_by_tag_name( name = 'dataValidation' ). - lo_ixml_iterator = lo_ixml_datavalidations->create_iterator( ). - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_datavalidation_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_datavalidation_elem - CHANGING - cp_structure = ls_datavalidation ). - clear lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula1' ). - if lo_ixml_formula_elem is bound. - ls_datavalidation-formula1 = lo_ixml_formula_elem->get_value( ). - endif. - clear lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula2' ). - if lo_ixml_formula_elem is bound. - ls_datavalidation-formula2 = lo_ixml_formula_elem->get_value( ). - endif. - SPLIT ls_datavalidation-sqref AT space INTO TABLE lt_datavalidation_range. - LOOP AT lt_datavalidation_range INTO lv_datavalidation_range. - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_datavalidation_range - IMPORTING - e_column_start = ls_datavalidation-cell_column - e_column_end = ls_datavalidation-cell_column_to - e_row_start = ls_datavalidation-cell_row - e_row_end = ls_datavalidation-cell_row_to ). - lo_data_validation = io_worksheet->add_new_data_validation( ). - lo_data_validation->type = ls_datavalidation-type. - lo_data_validation->allowblank = ls_datavalidation-allowblank. - lo_data_validation->showinputmessage = ls_datavalidation-showinputmessage. - lo_data_validation->showerrormessage = ls_datavalidation-showerrormessage. - lo_data_validation->showdropdown = ls_datavalidation-showdropdown. - lo_data_validation->operator = ls_datavalidation-operator. - lo_data_validation->formula1 = ls_datavalidation-formula1. - lo_data_validation->formula2 = ls_datavalidation-formula2. - lo_data_validation->prompttitle = ls_datavalidation-prompttitle. - lo_data_validation->prompt = ls_datavalidation-prompt. - lo_data_validation->errortitle = ls_datavalidation-errortitle. - lo_data_validation->error = ls_datavalidation-error. - lo_data_validation->errorstyle = ls_datavalidation-errorstyle. - lo_data_validation->cell_row = ls_datavalidation-cell_row. - lo_data_validation->cell_row_to = ls_datavalidation-cell_row_to. - lo_data_validation->cell_column = ls_datavalidation-cell_column. - lo_data_validation->cell_column_to = ls_datavalidation-cell_column_to. - endloop. - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - " End fix 276 Read data validations - - endmethod. - - - - - - method LOAD_WORKSHEET_DRAWING. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: drawing TYPE REF TO if_ixml_document, - anchors TYPE REF TO if_ixml_node_collection, - node TYPE REF TO if_ixml_element, - coll_length TYPE i, - iterator TYPE REF TO if_ixml_node_iterator, - anchor_elem TYPE REF TO if_ixml_element, - - relationship TYPE t_relationship, - rel_drawings TYPE t_rel_drawings, - rel_drawing TYPE t_rel_drawing, - rels_drawing TYPE REF TO if_ixml_document, - rels_drawing_path TYPE string, - stripped_name TYPE chkfile, - dirname TYPE string, - - path TYPE string, - path2 TYPE text255, - file_ext2 TYPE char10. - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = stripped_name - file_path = dirname. - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_drawing_path. - rels_drawing_path = resolve_path( rels_drawing_path ). - rels_drawing = me->get_ixml_from_zip_archive( rels_drawing_path ). - node ?= rels_drawing->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - rel_drawing-id = relationship-id. - - CONCATENATE dirname relationship-target INTO path. - path = resolve_path( path ). - rel_drawing-content = me->get_from_zip_archive( path ). "------------> This is for template usage - - path2 = path. - zcl_excel_common=>split_file( EXPORTING ip_file = path2 - IMPORTING ep_extension = file_ext2 ). - rel_drawing-file_ext = file_ext2. - - "-------------Added by Alessandro Iannacci - Should load graph xml - CASE relationship-type. - WHEN lc_rel_chart. - "Read chart xml - rel_drawing-content_xml = me->get_ixml_from_zip_archive( path ). - WHEN OTHERS. - ENDCASE. - "---------------------------- - - - APPEND rel_drawing TO rel_drawings. - - node ?= node->get_next( ). - ENDWHILE. - - drawing = me->get_ixml_from_zip_archive( ip_path ). - -* one-cell anchor ************** - anchors = drawing->get_elements_by_tag_name( name = 'oneCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - -* two-cell anchor ****************** - anchors = drawing->get_elements_by_tag_name( name = 'twoCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - - endmethod. - - - - - METHOD read_from_applserver. - - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_max_length_line TYPE i, - lv_actual_length_line TYPE i, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - DESCRIBE FIELD ls_binary_data LENGTH lv_max_length_line IN BYTE MODE. - OPEN DATASET lv_filename FOR INPUT IN BINARY MODE. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - WHILE sy-subrc = 0. - - READ DATASET lv_filename INTO ls_binary_data MAXIMUM LENGTH lv_max_length_line ACTUAL LENGTH lv_actual_length_line. - APPEND ls_binary_data TO lt_binary_data. - lv_filelength = lv_filelength + lv_actual_length_line. - - ENDWHILE. - CLOSE DATASET lv_filename. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - ENDMETHOD. - - - - - METHOD read_from_local_file. - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - cl_gui_frontend_services=>gui_upload( EXPORTING - filename = lv_filename - filetype = 'BIN' " We are basically working with zipped directories --> force binary read - IMPORTING - filelength = lv_filelength - CHANGING - data_tab = lt_binary_data - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 ). - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - - ENDMETHOD. - - - - - method RESOLVE_PATH. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Determine whether the replacement should be done -* iterative to allow /../../.. or something alike -* 2do§2 Determine whether /./ has to be supported as well -* 2do§3 Create unit-test for this method -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: replaced previous coding by regular expression -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 This routine will receive a path, that may have a relative pathname (/../) included somewhere -* The output should be a resolved path without relative references -* Example: Input xl/worksheets/../drawings/drawing1.xml -* Output xl/drawings/drawing1.xml -*--------------------------------------------------------------------* - - rp_result = ip_path. -*--------------------------------------------------------------------* -* §1 Remove relative pathnames -*--------------------------------------------------------------------* -* Regular expression [^/]*/\.\./ -* [^/]* --> any number of characters other than / -* followed by /\.\./ --> the sequence /../ -* ==> worksheets/../ will be found in the example -*--------------------------------------------------------------------* - REPLACE REGEX '[^/]*/\.\./' IN rp_result WITH ``. - - - endmethod. - - - method RESOLVE_REFERENCED_FORMULAE. - TYPES: BEGIN OF ty_referenced_cells, - sheet TYPE REF TO zcl_excel_worksheet, - si TYPE i, - row_from TYPE i, - row_to TYPE i, - col_from TYPE i, - col_to TYPE i, - formula TYPE string, - ref_cell TYPE char10, - END OF ty_referenced_cells. - - DATA: ls_ref_formula LIKE LINE OF me->mt_ref_formulae, - lts_referenced_cells TYPE SORTED TABLE OF ty_referenced_cells WITH NON-UNIQUE KEY sheet si row_from row_to col_from col_to, - ls_referenced_cell LIKE LINE OF lts_referenced_cells, - lv_col_from TYPE zexcel_cell_column_alpha, - lv_col_to TYPE zexcel_cell_column_alpha, - lv_resulting_formula TYPE string, - lv_current_cell TYPE char10. - - - me->mt_ref_formulae = me->mt_ref_formulae. - -*--------------------------------------------------------------------* -* Get referenced Cells, Build ranges for easy lookup -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref <> space. - - CLEAR ls_referenced_cell. - ls_referenced_cell-sheet = ls_ref_formula-sheet. - ls_referenced_cell-si = ls_ref_formula-si. - ls_referenced_cell-formula = ls_ref_formula-formula. - - TRY. - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = ls_ref_formula-ref - IMPORTING e_column_start = lv_col_from - e_column_end = lv_col_to - e_row_start = ls_referenced_cell-row_from - e_row_end = ls_referenced_cell-row_to ). - ls_referenced_cell-col_from = zcl_excel_common=>convert_column2int( lv_col_from ). - ls_referenced_cell-col_to = zcl_excel_common=>convert_column2int( lv_col_to ). - - - CLEAR ls_referenced_cell-ref_cell. - TRY. - ls_referenced_cell-ref_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - ls_referenced_cell-ref_cell+3 = ls_ref_formula-row. - CONDENSE ls_referenced_cell-ref_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - INSERT ls_referenced_cell INTO TABLE lts_referenced_cells. - CATCH zcx_excel. - ENDTRY. - - ENDLOOP. - -* break x0009004. -*--------------------------------------------------------------------* -* For each referencing cell determine the referenced cell -* and resolve the formula -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref = space. - - - CLEAR lv_current_cell. - TRY. - lv_current_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - lv_current_cell+3 = ls_ref_formula-row. - CONDENSE lv_current_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - LOOP AT lts_referenced_cells INTO ls_referenced_cell WHERE sheet = ls_ref_formula-sheet - AND si = ls_ref_formula-si - AND row_from <= ls_ref_formula-row - AND row_to >= ls_ref_formula-row - AND col_from <= ls_ref_formula-column - AND col_to >= ls_ref_formula-column. - - TRY. - - lv_resulting_formula = zcl_excel_common=>determine_resulting_formula( iv_reference_cell = ls_referenced_cell-ref_cell - iv_reference_formula = ls_referenced_cell-formula - iv_current_cell = lv_current_cell ). - - ls_referenced_cell-sheet->set_cell_formula( ip_column = ls_ref_formula-column - ip_row = ls_ref_formula-row - ip_formula = lv_resulting_formula ). - CATCH zcx_excel. - ENDTRY. - EXIT. - - ENDLOOP. - - ENDLOOP. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - METHOD load_vbaproject. - - DATA lv_content TYPE xstring. - - lv_content = me->get_from_zip_archive( ip_path ). - - ip_excel->zif_excel_book_vba_project~set_vbaproject( lv_content ). - - ENDMETHOD. - - - method LOAD_WORKBOOK. - super->load_workbook( EXPORTING iv_workbook_full_filename = iv_workbook_full_filename - io_excel = io_excel ). - - CONSTANTS: lc_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject'. - - DATA: rels_workbook_path TYPE string, - rels_workbook TYPE REF TO if_ixml_document, - path TYPE string, - node TYPE REF TO if_ixml_element, - workbook TYPE REF TO if_ixml_document, - stripped_name TYPE chkfile, - dirname TYPE string, - relationship TYPE t_relationship, - fileversion TYPE t_fileversion, - workbookpr TYPE t_workbookpr. - - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = stripped_name - file_path = dirname. - - " Read Workbook Relationships - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_workbook_path. - - rels_workbook = me->get_ixml_from_zip_archive( rels_workbook_path ). - - node ?= rels_workbook->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - CASE relationship-type. - WHEN lc_vba_project. - " Read VBA binary - CONCATENATE dirname relationship-target INTO path. - me->load_vbaproject( ip_path = path - ip_excel = io_excel ). - WHEN OTHERS. - ENDCASE. - - node ?= node->get_next( ). - ENDWHILE. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'fileVersion' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = fileversion ). - - io_excel->zif_excel_book_vba_project~set_codename( fileversion-codename ). - ENDIF. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'workbookPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = workbookpr ). - - io_excel->zif_excel_book_vba_project~set_codename_pr( workbookpr-codename ). - ENDIF. - - endmethod. - - - method LOAD_WORKSHEET. - - super->load_worksheet( EXPORTING ip_path = ip_path - io_worksheet = io_worksheet ). - - DATA: path TYPE string, - node TYPE REF TO if_ixml_element, - worksheet TYPE REF TO if_ixml_document, - sheetpr TYPE t_sheetpr. - - -* " Read Workbook codeName -* workbook = me->get_ixml_from_zip_archive( ip_path ). -* node ?= workbook->find_from_name( 'fileVersion' ). -* IF node IS BOUND. -* -* fill_struct_from_attributes( EXPORTING ip_element = node -* CHANGING cp_structure = fileversion ). -* -* IO_WORKSHEET->zif_excel_book_vba_project~set_codename( fileversion-codename ). -* ENDIF. - - " Read Workbook codeName - worksheet = me->get_ixml_from_zip_archive( ip_path ). - node ?= worksheet->find_from_name( 'sheetPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = sheetpr ). - - io_worksheet->zif_excel_sheet_vba_project~set_codename_pr( sheetpr-codename ). - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - METHOD is_security_enabled. - IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. - ep_security_enabled = abap_true. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - orientation = me->c_orientation_default. - -* default margins - margin_bottom = '0.75'. - margin_footer = '0.3'. - margin_header = '0.3'. - margin_left = '0.7'. - margin_right = '0.7'. - margin_top = '0.75'. - -* clear page settings - CLEAR: black_and_white, - cell_comments, - copies, - draft, - errors, - first_page_number, - fit_to_page, - fit_to_height, - fit_to_width, - horizontal_dpi, - orientation, - page_order, - paper_height, - paper_size, - paper_width, - scale, - use_first_page_num, - use_printer_defaults, - vertical_dpi. - endmethod. - - - - - - - method GET_HEADER_FOOTER_STRING. -* ---------------------------------------------------------------------- - DATA: lc_marker_left(2) TYPE c VALUE '&L' - , lc_marker_right(2) TYPE c VALUE '&R' - , lc_marker_center(2) TYPE c VALUE '&C' - , lv_value TYPE string - . -* ---------------------------------------------------------------------- - IF ep_odd_header IS SUPPLIED. - - IF me->odd_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'CENTER' ). - CONCATENATE ep_odd_header lc_marker_center lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'RIGHT' ). - CONCATENATE ep_odd_header lc_marker_right lv_value INTO ep_odd_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_odd_footer IS SUPPLIED. - - IF me->odd_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'CENTER' ). - CONCATENATE ep_odd_footer lc_marker_center lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'RIGHT' ). - CONCATENATE ep_odd_footer lc_marker_right lv_value INTO ep_odd_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_header IS SUPPLIED. - - IF me->even_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'CENTER' ). - CONCATENATE ep_even_header lc_marker_center lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'RIGHT' ). - CONCATENATE ep_even_header lc_marker_right lv_value INTO ep_even_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_footer IS SUPPLIED. - - IF me->even_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'CENTER' ). - CONCATENATE ep_even_footer lc_marker_center lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'RIGHT' ). - CONCATENATE ep_even_footer lc_marker_right lv_value INTO ep_even_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - endmethod. - - - - - - method PROCESS_HEADER_FOOTER. - -* ---------------------------------------------------------------------- -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size - - DATA: lv_fname(12) TYPE c - , lv_string TYPE string - . - - FIELD-SYMBOLS: <lv_value> TYPE string - , <ls_font> TYPE zexcel_s_style_font - . - -* ---------------------------------------------------------------------- - CONCATENATE ip_side '_VALUE' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <lv_value>. - - CONCATENATE ip_side '_FONT' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <ls_font>. - - IF <ls_font> IS ASSIGNED AND <lv_value> IS ASSIGNED. - - IF <ls_font>-name IS NOT INITIAL. - CONCATENATE '&"' <ls_font>-name ',' INTO rv_processed_string. - ELSE. - rv_processed_string = '&"-,'. - ENDIF. - - IF <ls_font>-bold = abap_true. - CONCATENATE rv_processed_string 'Bold"' INTO rv_processed_string. - ELSE. - CONCATENATE rv_processed_string 'Standard"' INTO rv_processed_string. - ENDIF. - - IF <ls_font>-size IS NOT INITIAL. - lv_string = <ls_font>-size. - CONCATENATE rv_processed_string '&' lv_string INTO rv_processed_string. - ENDIF. - - CONCATENATE rv_processed_string <lv_value> INTO rv_processed_string. - - ENDIF. -* ---------------------------------------------------------------------- - - endmethod. - - - - - - - method SET_HEADER_FOOTER. - -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size -* -* usefull placeholders, which can be used in header/footer value strings -* '&P' - page number -* '&N' - total number of pages -* '&D' - Date -* '&T' - Time -* '&F' - File Name -* '&Z' - Path -* '&A' - Sheet name -* new line via class constant CL_ABAP_CHAR_UTILITIES=>newline -* -* Example Value String 'page &P of &N' -* -* DO NOT USE &L , &C or &R which automatically created as position markers - - me->odd_header = ip_odd_header. - me->odd_footer = ip_odd_footer. - me->even_header = ip_even_header. - me->even_footer = ip_even_footer. - - IF me->even_header IS NOT INITIAL OR me->even_footer IS NOT INITIAL. - me->diff_oddeven_headerfooter = abap_true. - ENDIF. - - - endmethod. - - - - - - - - - - method SET_PAGE_MARGINS. - DATA: lv_coef TYPE f, - lv_unit TYPE string. - - lv_unit = ip_unit. - TRANSLATE lv_unit TO UPPER CASE. - - CASE lv_unit. - WHEN 'IN'. lv_coef = 1. - WHEN 'CM'. lv_coef = '0.393700787'. - WHEN 'MM'. lv_coef = '0.0393700787'. - ENDCASE. - - IF ip_bottom IS SUPPLIED. margin_bottom = lv_coef * ip_bottom. ENDIF. - IF ip_footer IS SUPPLIED. margin_footer = lv_coef * ip_footer. ENDIF. - IF ip_header IS SUPPLIED. margin_header = lv_coef * ip_header. ENDIF. - IF ip_left IS SUPPLIED. margin_left = lv_coef * ip_left. ENDIF. - IF ip_right IS SUPPLIED. margin_right = lv_coef * ip_right. ENDIF. - IF ip_top IS SUPPLIED. margin_top = lv_coef * ip_top. ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - method CONSTRUCTOR. - - - CREATE OBJECT font. - CREATE OBJECT fill. - CREATE OBJECT borders. - CREATE OBJECT alignment. - CREATE OBJECT number_format. - CREATE OBJECT protection. - -* Start of insertion # issue 139 - Dateretention of cellstyles - IF ip_guid IS NOT INITIAL. - me->guid = ip_guid. - ELSE. -* End of insertion # issue 139 - Dateretention of cellstyles - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. -* Start of insertion # issue 139 - Dateretention of cellstyles - ENDIF. -* End of insertion # issue 139 - Dateretention of cellstyles - - endmethod. - - - - method GET_GUID. - - - ep_guid = me->guid. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - - - styles->add( ip_style ). - endmethod. - - - method CLEAR. - - - styles->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT styles. - endmethod. - - - - - method GET. - - - eo_style ?= styles->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - - - eo_iterator ?= styles->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - - - is_empty = styles->if_object_collection~is_empty( ). - endmethod. - - - - - method REGISTER_NEW_STYLE. - - - me->add( io_style ). - ep_style_code = me->size( ) - 1. "style count starts from 0 - endmethod. - - - - method REMOVE. - - - styles->remove( ip_style ). - endmethod. - - - - method SIZE. - - - ep_size = styles->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - styles_conditional->add( ip_style_conditional ). - endmethod. - - - method CLEAR. - styles_conditional->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT styles_conditional. - - endmethod. - - - - - method GET. - DATA lv_index TYPE i. - lv_index = ip_index. - eo_style_conditional ?= styles_conditional->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= styles_conditional->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = styles_conditional->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - styles_conditional->remove( ip_style_conditional ). - endmethod. - - - - method SIZE. - ep_size = styles_conditional->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - horizontal = me->c_horizontal_general. - vertical = me->c_vertical_bottom. - wrapText = abap_false. - shrinkToFit = abap_false. - endmethod. - - - - method GET_STRUCTURE. - - es_alignment-horizontal = me->horizontal. - es_alignment-vertical = me->vertical. - es_alignment-textrotation = me->textrotation. - es_alignment-wraptext = me->wraptext. - es_alignment-shrinktofit = me->shrinktofit. - es_alignment-indent = me->indent. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - border_style = zcl_excel_style_border=>c_border_none. - border_color-theme = zcl_excel_style_color=>c_theme_not_set. - border_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - method GET_STRUCTURE. -*initialize colors to 'not set' - es_fill-left_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-left_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-right_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-right_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-top_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-top_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-bottom_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-bottom_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-diagonal_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-diagonal_color-theme = zcl_excel_style_color=>c_theme_not_set. - -* Check if all borders is set otherwise check single border - IF me->allborders IS BOUND. - es_fill-left_color = me->allborders->border_color. - es_fill-left_style = me->allborders->border_style. - es_fill-right_color = me->allborders->border_color. - es_fill-right_style = me->allborders->border_style. - es_fill-top_color = me->allborders->border_color. - es_fill-top_style = me->allborders->border_style. - es_fill-bottom_color = me->allborders->border_color. - es_fill-bottom_style = me->allborders->border_style. - ELSE. - IF me->left IS BOUND. - es_fill-left_color = me->left->border_color. - es_fill-left_style = me->left->border_style. - ENDIF. - IF me->right IS BOUND. - es_fill-right_color = me->right->border_color. - es_fill-right_style = me->right->border_style. - ENDIF. - IF me->top IS BOUND. - es_fill-top_color = me->top->border_color. - es_fill-top_style = me->top->border_style. - ENDIF. - IF me->down IS BOUND. - es_fill-bottom_color = me->down->border_color. - es_fill-bottom_style = me->down->border_style. - ENDIF. - ENDIF. - -* Check if diagonal is set - IF me->diagonal IS BOUND. - es_fill-diagonal_color = me->diagonal->border_color. - es_fill-diagonal_style = me->diagonal->border_style. - CASE me->diagonal_mode. - WHEN 1. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 0. - WHEN 2. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 1. - WHEN 3. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 1. - WHEN OTHERS. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 0. - ENDCASE. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_NEW_ARGB. - - - CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - DATA: ls_iconset TYPE zexcel_conditional_iconset. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - - - me->rule = zcl_excel_style_conditional=>c_rule_none. -* me->iconset->operator = zcl_excel_style_conditional=>c_operator_none. - me->mode_iconset = ls_iconset. - me->priority = 1. - -* inizialize dimension range - me->stop_cell-cell_row = 1. - me->stop_cell-cell_column = 1. - me->start_cell-cell_row = 1. - me->start_cell-cell_column = 1. - endmethod. - - - - method GET_DIMENSION_RANGE. - IF stop_cell EQ start_cell. "only one cell - ep_dimension_range = start_cell-cell_coords. - ELSE. - CONCATENATE start_cell-cell_coords ':' stop_cell-cell_coords INTO ep_dimension_range. - ENDIF. - endmethod. - - - - - - - method SET_RANGE. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string. - - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - stop_cell-cell_row = 1. - stop_cell-cell_column = lv_column. - lv_row_alpha = ip_stop_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_stop_column lv_row_alpha INTO stop_cell-cell_coords. - - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - start_cell-cell_row = 1. - start_cell-cell_column = lv_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_start_column lv_row_alpha INTO start_cell-cell_coords. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - filltype = zcl_excel_style_fill=>c_fill_none. - fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. - bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. - rotation = 0. - endmethod. - - - - method GET_STRUCTURE. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgColor = me->fgColor. - es_fill-bgColor = me->bgColor. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CALCULATE_TEXT_WIDTH. - " Addition to solve issue #120, contribution by Stefan Schmöcker - r_width = strlen( i_text ). - " use scale factor based on default 11 - " ( don't know where defaultsetting is stored currently ) - r_width = r_width * me->size / 11. - endmethod. - - - method CONSTRUCTOR. - me->color-rgb = zcl_excel_style_color=>c_black. - me->color-theme = zcl_excel_style_color=>c_theme_not_set. - me->color-indexed = zcl_excel_style_color=>c_indexed_not_set. - me->scheme = zcl_excel_style_font=>c_scheme_minor. - me->underline_mode = zcl_excel_style_font=>c_underline_single. - endmethod. - - - - method GET_STRUCTURE. - - es_font-bold = me->bold. - es_font-italic = me->italic. - es_font-underline = me->underline. - es_font-underline_mode = me->underline_mode. - es_font-strikethrough = me->strikethrough. - es_font-size = me->size. - es_font-color = me->color. - es_font-name = me->name. - es_font-family = me->family. - es_font-scheme = me->scheme. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - format_code = me->c_format_general. - endmethod. - - - - method GET_STRUCTURE. - ep_number_format-numfmt = me->format_code. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method CONSTRUCTOR. - locked = me->c_protection_locked. - hidden = me->c_protection_unhidden. - endmethod. - - - - method GET_STRUCTURE. - ep_protection-locked = me->locked. - ep_protection-hidden = me->hidden. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method GET_BOTTOM_ROW_INTEGER. - DATA: lv_table_lines TYPE i. - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - IF settings-bottom_right_row IS NOT INITIAL. -* ev_row = zcl_excel_common=>convert_column2int( settings-bottom_right_row ). " del issue #246 - ev_row = settings-bottom_right_row . " ins issue #246 - EXIT. - ENDIF. - - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - - ev_row = settings-top_left_row + lv_table_lines. - - IF me->has_totals( ) = abap_true." ???? AND ip_include_totals_row = abap_true. - ADD 1 TO ev_row. - ENDIF. - endmethod. - - - - method GET_ID. - ov_id = id. - endmethod. - - - - method GET_NAME. - - IF me->name IS INITIAL. - me->name = zcl_excel_common=>number_to_excel_string( ip_value = me->id ). - CONCATENATE 'table' me->name INTO me->name. - ENDIF. - - ov_name = me->name. - endmethod. - - - - - method GET_REFERENCE. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - lv_right_column TYPE zexcel_cell_column_alpha, - ls_field_catalog TYPE zexcel_s_fieldcatalog, - lv_bottom_row TYPE zexcel_cell_row, - lv_top_row_string(10) TYPE c, - lv_bottom_row_string(10) TYPE c. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - -*column - lv_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - lv_table_lines = 0. - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO lv_table_lines. - ENDLOOP. - lv_column = lv_column + lv_table_lines - 1. - lv_right_column = zcl_excel_common=>convert_column2alpha( lv_column ). - -*row - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - lv_bottom_row = settings-top_left_row + lv_table_lines . - - IF me->has_totals( ) = abap_true AND ip_include_totals_row = abap_true. - ADD 1 TO lv_bottom_row. - ENDIF. - - lv_top_row_string = zcl_excel_common=>number_to_excel_string( settings-top_left_row ). - lv_bottom_row_string = zcl_excel_common=>number_to_excel_string( lv_bottom_row ). - - CONCATENATE settings-top_left_column lv_top_row_string - ':' - lv_right_column lv_bottom_row_string INTO ov_reference. - - endmethod. - - - - - method GET_RIGHT_COLUMN_INTEGER. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - ls_field_catalog TYPE zexcel_s_fieldcatalog. - - IF settings-bottom_right_column IS NOT INITIAL. - ev_column = zcl_excel_common=>convert_column2int( settings-bottom_right_column ). - EXIT. - ENDIF. - - ev_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO ev_column. - ENDLOOP. - - endmethod. - - - - - - method GET_TOTALS_FORMULA. - CONSTANTS: lc_function_id_sum TYPE string VALUE '109', - lc_function_id_min TYPE string VALUE '105', - lc_function_id_max TYPE string VALUE '104', - lc_function_id_count TYPE string VALUE '103', - lc_function_id_average TYPE string VALUE '101'. - - DATA: lv_function_id TYPE string. - - CASE ip_function. - WHEN zcl_excel_table=>totals_function_sum. - lv_function_id = lc_function_id_sum. - - WHEN zcl_excel_table=>totals_function_min. - lv_function_id = lc_function_id_min. - - WHEN zcl_excel_table=>totals_function_max. - lv_function_id = lc_function_id_max. - - WHEN zcl_excel_table=>totals_function_count. - lv_function_id = lc_function_id_count. - - WHEN zcl_excel_table=>totals_function_average. - lv_function_id = lc_function_id_average. - - WHEN zcl_excel_table=>totals_function_custom. " issue #292 - RETURN. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid totals formula. See ZCL_ for possible values'. - ENDCASE. - - CONCATENATE 'SUBTOTAL(' lv_function_id ',[' ip_column '])' INTO ep_formula. - endmethod. - - - - method HAS_TOTALS. - DATA: ls_field_catalog TYPE zexcel_s_fieldcatalog. - - ep_result = abap_false. - - LOOP AT fieldcat INTO ls_field_catalog. - IF ls_field_catalog-totals_function IS NOT INITIAL. - ep_result = abap_true. - EXIT. - ENDIF. - ENDLOOP. - - endmethod. - - - - METHOD set_data. - - DATA lr_temp TYPE REF TO data. - - FIELD-SYMBOLS: <lt_table_temp> TYPE ANY TABLE, - <lt_table> TYPE ANY TABLE. - - GET REFERENCE OF ir_data INTO lr_temp. - ASSIGN lr_temp->* TO <lt_table_temp>. - CREATE DATA table_data LIKE <lt_table_temp>. - ASSIGN me->table_data->* TO <lt_table>. - <lt_table> = <lt_table_temp>. - -ENDMETHOD. - - - - method SET_ID. - id = iv_id. - endmethod. - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - -*&---------------------------------------------------------------------* -*& Class (Implementation) C_OI_PROXY_ERROR -*&---------------------------------------------------------------------* -CLASS c_oi_proxy_error IMPLEMENTATION. - METHOD constructor. -* IMPORTING object_name TYPE c -* method_name TYPE c. - error_nr = ret_call_not_flushed. - me->i_oi_error~error_code = c_oi_errors=>ret_call_not_flushed. - me->i_oi_error~is_flushed = ' '. - me->i_oi_error~has_failed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->message_id = 'SOFFICEINTEGRATION'. - me->message_nr = '899'. - me->param1 = object_name. - me->param2 = method_name. - ENDMETHOD. "constructor - - METHOD i_oi_error~flush_error. - IF error_nr EQ 0. - me->i_oi_error~error_code = c_oi_errors=>ret_ok. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_failed = ' '. - me->i_oi_error~has_succeeded = 'X'. - me->message_id = ''. - me->message_nr = '000'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - IMPORTING - retcode = me->i_oi_error~error_code. - ELSEIF error_nr EQ ret_call_not_flushed. - "call still not flushed - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = me->param2 "method name - objectname = me->param1 - IMPORTING - retcode = me->i_oi_error~error_code. - ELSE. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->i_oi_error~has_failed = 'X'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = error_string - IMPORTING - retcode = me->i_oi_error~error_code. - CALL METHOD c_oi_errors=>get_message - IMPORTING - message_id = me->message_id - message_number = me->message_nr - param1 = me->param1 - param2 = me->param2 - param3 = me->param3 - param4 = me->param4. - ENDIF. - ENDMETHOD. "i_oi_error~flush_error - - METHOD i_oi_error~raise_message. -* IMPORTING type TYPE c. -* EXCEPTIONS message_raised flush_failed. - IF me->i_oi_error~has_succeeded IS INITIAL. - IF NOT me->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. "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->param1. param2 = me->param2. - param3 = me->param3. param4 = me->param4. - - message_id = me->message_id. - message_number = me->message_nr. - ENDMETHOD. "i_oi_error~get_message -ENDCLASS. "C_OI_PROXY_ERROR - -*&---------------------------------------------------------------------* -*& Class (Implementation) CL_GRID_ACCESSION -*&---------------------------------------------------------------------* -CLASS lcl_gui_alv_grid IMPLEMENTATION. - - METHOD get_alv_attributes. - CREATE DATA et_table LIKE io_grid->mt_outtab. - et_table = io_grid->mt_outtab. - ENDMETHOD. "get_data - -ENDCLASS. "CL_GRID_ACCESSION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method'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. "c_oi_proxy_error DEFINITION - -*--------------------------------------------------------------------* -* 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 " ALV grid - EXPORTING - et_table TYPE REF TO data. " dta table - -ENDCLASS. "lcl_gui_alv_grid DEFINITION - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_col_from, - me->print_title_col_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_row_from, - me->print_title_row_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS. - ev_columns_from = me->print_title_col_from. - ev_columns_to = me->print_title_col_to. - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS. - ev_rows_from = me->print_title_row_from. - ev_rows_to = me->print_title_row_to. - endmethod. - - - 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=>convert_column2int( iv_columns_from ). - lv_col_to_int = zcl_excel_common=>convert_column2int( iv_columns_to ). - -*--------------------------------------------------------------------* -* Check if valid range is supplied -*--------------------------------------------------------------------* - IF lv_col_from_int < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF lv_col_from_int > lv_col_to_int. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_col_from = iv_columns_from. - me->print_title_col_to = iv_columns_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - endmethod. - - - 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 < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF iv_rows_from > iv_rows_to. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_row_from = iv_rows_from. - me->print_title_row_to = iv_rows_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - 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->excel->get_default_style( ). - ENDIF. - endmethod. - - - method ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE. - - zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_showzero. - zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. - zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>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. - - - method ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE. - zif_excel_sheet_properties~style = ip_style. - endmethod. - - - method ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE. - - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_unprotected. - CLEAR me->zif_excel_sheet_protection~password. - me->zif_excel_sheet_protection~auto_filter = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_hyperlinks = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_noactive. -* me->zif_excel_sheet_protection~password = zif_excel_sheet_protection=>c_noactive. "issue #68 - me->zif_excel_sheet_protection~pivot_tables = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_locked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_unlocked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sort = zif_excel_sheet_protection=>c_noactive. - - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME. - me->zif_excel_sheet_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - - method ADD_DRAWING. - CASE ip_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - drawings->include( ip_drawing ). - WHEN zcl_excel_drawing=>type_chart. - charts->include( ip_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_CONDITIONAL_STYLE. - - CREATE OBJECT eo_conditional_style. - conditional_styles->add( eo_conditional_style ). - endmethod. - - - - method ADD_NEW_DATA_VALIDATION. - - CREATE OBJECT eo_data_validation. - data_validations->add( eo_data_validation ). - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - - - - - method BIND_ALV. - data: lo_converter type ref to zcl_excel_converter. - - create object lo_converter. - - try. - lo_converter->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. - - - - - - - - - - - - - - - - - - - - - - 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'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. "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: <f_collect00> type standard table. - field-symbols: <f_collect01> type standard table. - field-symbols: <f_collect02> type standard table. - field-symbols: <f_collect03> type standard table. - field-symbols: <f_collect04> type standard table. - field-symbols: <f_collect05> type standard table. - field-symbols: <f_collect06> type standard table. - field-symbols: <f_collect07> type standard table. - field-symbols: <f_collect08> type standard table. - field-symbols: <f_collect09> type standard table. - -* table before append subtotal lines - field-symbols: <f_alv_tab> 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: <f_excel_tab> type standard table. - field-symbols: <f_excel_line> type any. - -* dyn subtotal tables - field-symbols: <f_collect_tab> type standard table. - field-symbols: <f_collect_line> type any. - - field-symbols: <f_filter_idx_line> like line of LT_FILTER_IDX_KKBLO. - field-symbols: <f_fieldcat_line> like line of LT_FIELDCAT_KKBLO. - field-symbols: <f_grouplevels_line> like line of LT_GROUPLEVELS_KKBLO. - field-symbols: <f_line> 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. " currency / quantity flag - data: wa_t006 type t006. " decimal place of unit - - data: l_num type i. " table columns number - data: l_typ type c. " table type - data: wa type ref to data. - data: l_int type i. - data: l_counter type i. - - field-symbols: <f_excel_column> type any. - field-symbols: <f_fcat_column> 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. " exporting column number - data vkeycount type i. - data all type i. - data mit type i value 1. " index of recent row? - data li_col_pos type i value 1. " column position - data li_col_num type i. " table columns number - field-symbols: <line> type any. - field-symbols: <item> 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. "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 'X'. - data: li_head_top type i. "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->is_destroyed - IMPORTING - ret_value = l_is_closed. - -* if dun detroyed yet: close -> release proxy - - IF l_is_closed is initial. - call method lo_proxy->close_document -* EXPORTING -* do_save = do_save - IMPORTING - error = lo_error - retcode = lc_retcode. - ENDIF. - - call method lo_proxy->release_document - IMPORTING - error = lo_error - retcode = lC_retcode. - - else. - lc_retcode = c_oi_errors=>ret_document_not_open. - ENDIF. - -* Detroy control container - - IF lo_control is not initial. - CALL METHOD lo_control->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=>ret_ok. - close_document. - call method lo_error->raise_message - EXPORTING - type = 'E'. - clear: lo_error. - endif. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* SESSION 0: DOI CONSTRUCTOR -*--------------------------------------------------------------------* - -* check active windown - - call function 'GUI_HAS_ACTIVEX' - 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=>get_container_control - IMPORTING - control = lo_control - retcode = lC_retcode. - - error_doi. - -* Initialize Container control - - CALL METHOD lo_control->init_control - EXPORTING - parent = CL_GUI_CONTAINER=>DEFAULT_SCREEN - r3_application_name = '' - inplace_enabled = 'X' - no_flush = 'X' - register_on_close_event = 'X' - register_on_custom_event = 'X' - IMPORTING - error = lO_ERROR - retcode = lc_retcode. - - error_doi. - -* Get Proxy Document: -* check exist of document proxy, if exist -> 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 = 'Excel.Sheet.8'. - else. -* xlsx format, doctype = soi_doctype_excel_sheet - l_doctype_excel_sheet = 'Excel.Sheet'. - ENDIF. - - CALL METHOD lo_control->get_document_proxy - EXPORTING - document_type = l_doctype_excel_sheet - register_container = 'X' - 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->create_document - EXPORTING - create_view_data = 'X' - open_inplace = 'X' - no_flush = 'X' - 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->open_document - EXPORTING - document_url = i_document_url - open_inplace = 'X' - no_flush = 'X' - IMPORTING - error = lo_error - retcode = lc_retcode. - - error_doi. - - endif. - -* Check Spreadsheet Interface of Document Proxy - - CALL METHOD lo_proxy->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->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=>SCREEN0. - - call method lo_grid->get_alv_attributes - EXPORTING - io_grid = io_alv - IMPORTING - Et_table = lt_alv. - - assign lt_alv->* to <f_alv_tab>. - -* fieldcat - - CALL METHOD iO_alv->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 = '1'. - endif. - clear: wa_fieldcat_lvc. - -* sort table - - CALL METHOD IO_ALV->GET_SORT_CRITERIA - IMPORTING - ET_SORT = lt_sort_lvc. - - -* filter index - - CALL METHOD IO_ALV->GET_FILTERED_ENTRIES - IMPORTING - ET_FILTERED_ENTRIES = lt_filter_idx_lvc. - -* group level + subtotal - - CALL METHOD IO_ALV->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->* to <f_collect00>. - assign lt_collect01->* to <f_collect01>. - assign lt_collect02->* to <f_collect02>. - assign lt_collect03->* to <f_collect03>. - assign lt_collect04->* to <f_collect04>. - assign lt_collect05->* to <f_collect05>. - assign lt_collect06->* to <f_collect06>. - assign lt_collect07->* to <f_collect07>. - assign lt_collect08->* to <f_collect08>. - assign lt_collect09->* to <f_collect09>. - -* transfer to KKBLO struct - - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - 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 = <f_alv_tab> - EXCEPTIONS - IT_DATA_MISSING = 1 - IT_FIELDCAT_LVC_MISSING = 2 - OTHERS = 3. - IF SY-SUBRC <> 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 & total line - - create data lt_excel like <f_ALV_TAB>. - assign lt_excel->* to <f_excel_tab>. - - loop at <f_alv_tab> assigning <f_line>. - l_save_index = sy-tabix. - -* filter base on filter index table - - read table LT_FILTER_IDX_KKBLO assigning <f_filter_idx_line> - with key index = l_save_index - binary search. - if sy-subrc ne 0. - append <f_line> to <f_excel_tab>. - endif. - -* append subtotal lines - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - with key index_to = l_save_index - binary search. - if sy-subrc = 0. - l_tabix = sy-tabix. - do. - if <f_grouplevels_line>-subtot eq 'X' and - <f_grouplevels_line>-hide_level is initial and - <f_grouplevels_line>-cindex_from ne 0. - -* dynamic append subtotal line to excel table base on grouplevel table -* ex <f_GROUPLEVELS_line>-level = 1 -* then <f_collect_tab> = '<F_COLLECT01>' - - l_collect = <f_grouplevels_line>-level. - condense l_collect. - concatenate '<F_COLLECT0' - l_collect '>' -* '->*' - into l_collect. - - assign (l_collect) to <f_collect_tab>. - -* incase there're more than 1 total line of group, at the same level -* for example: subtotal of multi currency - - LOOP AT <f_collect_tab> assigning <f_collect_line>. - IF sy-tabix between <f_grouplevels_line>-cindex_from - and <f_grouplevels_line>-cindex_to. - - - append <f_collect_line> to <f_excel_tab>. - -* 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 'SUBTOT' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - clear: subrangeitem. - - ENDIF. - ENDLOOP. - unassign: <f_collect_tab>. - unassign: <f_collect_line>. - clear: l_collect. - endif. - -* check next subtotal level of group - - unassign: <f_grouplevels_line>. - add 1 to l_tabix. - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - index l_tabix. - if sy-subrc ne 0 - or <f_grouplevels_line>-index_to ne l_save_index. - exit. - endif. - - unassign: - <f_collect_tab>, - <f_collect_line>. - - enddo. - endif. - - clear: - l_tabix, - l_save_index. - - unassign: - <f_filter_idx_line>, - <f_grouplevels_line>. - - endloop. - -* free local data - - unassign: - <f_line>, - <f_collect_tab>, - <f_collect_line>, - <f_fieldcat_line>. - -* append grand total line - - IF <f_collect00> is assigned. - assign <f_collect00> to <f_collect_tab>. - if <f_collect_tab> is not initial. - LOOP AT <f_collect_tab> assigning <f_collect_line>. - - append <f_collect_line> to <f_excel_tab>. - -* 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 'TOTAL' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - ENDLOOP. - endif. - ENDIF. - - clear: - subrangeitem, - LT_SORT_KKBLO, - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>. - - unassign: - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>, - <f_collect_tab>, - <f_collect_line>. - -*--------------------------------------------------------------------* -* SESSION 3: MAP DATA TO SEMANTIC TABLE -*--------------------------------------------------------------------* - -* get dependent field field: currency and quantity - - create data wa like line of <f_excel_tab>. - assign wa->* to <f_excel_line>. - - describe field <f_excel_line> type l_typ components l_num. - - do l_num times. - l_save_index = sy-index. - assign component l_save_index of structure <f_excel_line> - to <f_excel_column>. - if sy-subrc ne 0. - message e059(0k) with 'FATAL ERROR' raising fatal_error. - endif. - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname. - assign component <f_fieldcat_line>-fieldname - of structure <f_excel_line> to <f_fcat_column>. - - describe distance between <f_excel_column> and <f_fcat_column> - 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 = <f_fieldcat_line>-fieldname. - wa_column_index-tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-cfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-ctabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - - if <f_fieldcat_line>-qfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-qfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-qtabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - -* rewrite field data type - - if <f_fieldcat_line>-inttype = 'X' - and <f_fieldcat_line>-datatype(3) = 'INT'. - <f_fieldcat_line>-inttype = 'I'. - endif. - - endloop. - - clear: l_save_index. - unassign: <f_fieldcat_line>. - - enddo. - -* build semantic tables - - l_n_hrz_keys = 1. - -* Get keyfigures - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - - clear wa_sema. - clear wa_hkey. - -* Units belong to keyfigures -> display as str - - read table lt_fieldcat_depf into wa_fieldcat_depf with key - fieldname = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-tabname. - - if sy-subrc = 0. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - -* Keyfigures - - else. - case <f_fieldcat_line>-datatype. - when 'QUAN'. - wa_sema-col_typ = 'N03'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. " no dependent field - endif. - - when 'DATS'. - wa_sema-col_typ = 'DAT'. - wa_sema-col_ops = 'NOP'. - - when 'CHAR' OR 'UNIT' OR 'CUKY'. " Added fieldformats UNIT and CUKY - dd. 26-10-2012 Wouter Heuvelmans - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. " dependent field - -* incase numeric, ex '00120' -> display as '12' - - when 'NUMC'. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - - when others. - wa_sema-col_typ = 'NUM'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. - 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 = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-cfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-qfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-qfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-currency is initial. - - select * from tcurx into table lt_tcurx. - sort lt_tcurx. - read table lt_tcurx into wa_tcurx - with key currkey = <f_fieldcat_line>-currency. - if sy-subrc = 0. - l_num_help = wa_tcurx-currdec. - concatenate 'N' 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 = <f_fieldcat_line>-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: - <f_fieldcat_line>, - <f_excel_line>, - <f_excel_column>, - <f_fcat_column>. - -*--------------------------------------------------------------------* -* 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=>ret_interface_not_supported. - call method c_oi_errors=>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 = 'OLE_DOCUMENT_PROXY' - method_name = 'get_ranges_names'. - - call method c_oi_errors=>add_error - EXPORTING - error = l_error. - - - describe table lt_sema lines datareal. - describe table <f_excel_tab> 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 ('.', ',', ...) in Office config - - call method lo_proxy->get_application_property - EXPORTING - property_name = 'INTERNATIONAL' - subproperty_name = 'DECIMAL_SEPARATOR' - 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 <g> type any. - data search_item(4) value ' #'. - - concatenate ',' decimal '.' decimal into comma_elim. - - data help type i. " table (with subtotal) line number - - help = datac. - - data: rowmax type i value 1. " header row number - data: columnmax type i value 0. " header columns number - - loop at lt_hkey into hkeyitem. - if hkeyitem-col_no > columnmax. - columnmax = hkeyitem-col_no. - endif. - - if hkeyitem-row_no > rowmax. - rowmax = hkeyitem-row_no. - endif. - endloop. - - data: hkeycolumns type i. " header columns no - - hkeycolumns = columnmax. - - if hkeycolumns < l_n_att_cols. - hkeycolumns = l_n_att_cols. - endif. - - columnmax = 0. - - loop at lt_vkey into vkeyitem. - if vkeyitem-col_no > columnmax. - columnmax = vkeyitem-col_no. - endif. - endloop. - - data overflow type i value 1. - data testname(10) type c. - data temp2 type i. " 1st item row position in excel - data realmit type i value 1. - data realoverflow type i value 1. " row index in content - - call method lo_spreadsheet->screen_update - EXPORTING - updating = ''. - - call method lo_spreadsheet->load_lib. - - data: str(40) type c. " range names of columns range (w/o col header) - data: rows type i. " 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 'TITLE'. - 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->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 'H'. "title - li_font_size = 16. - li_font_bold = 1. - li_font_italic = -1. - when 'S'. "subtile - li_font_size = -1. - li_font_bold = 1. - li_font_italic = -1. - when others. "'A' comment - li_font_size = -1. - li_font_bold = -1. - li_font_italic = 1. - endcase. - - call method lo_spreadsheet->set_font - EXPORTING - rangename = ls_commentary_range - family = '' - 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->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 = 'DAT' or semaitem-col_typ = 'MON' or - semaitem-col_typ = 'N00' or semaitem-col_typ = 'N01' or - semaitem-col_typ = 'N01' or semaitem-col_typ = 'N02' or - semaitem-col_typ = 'N03' or semaitem-col_typ = 'PCT' or - semaitem-col_typ = 'STR' or semaitem-col_typ = 'NUM'. - clear str. - str = semaitem-col_no. - condense str. - concatenate 'DATA' 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->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 <f_excel_tab> assigning <line>. - assign component semaitem-col_no of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - dec = typeinfo-decimals. - elseif typeinfo-type = 'I'. - dec = 0. - endif. - - describe field <line> type typ components count. - mit = 1. - do count times. - if mit = semaitem-col_src. - assign component sy-index of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - 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 = 'DAT'. - if semaitem-col_no > vkeycount. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = all - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'STR'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'MON'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 10 - no_flush = no_flush. - elseif semaitem-col_typ = 'N00'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'N01'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 1 - no_flush = no_flush. - elseif semaitem-col_typ = 'N02'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - elseif semaitem-col_typ = 'N03'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 3 - no_flush = no_flush. - elseif semaitem-col_typ = 'N04'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 4 - no_flush = no_flush. - elseif semaitem-col_typ = 'NUM'. - if dec eq -1. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = dec - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'PCT'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - 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 = ''. - curritem-size = -1. - curritem-bold = -1. - curritem-italic = -1. - curritem-align = -1. - curritem-frametyp = -1. - curritem-framecolor = -1. - curritem-currency = ''. - 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 <f_excel_tab> assigning <line>. - -* save line index to compare with lt_subtot_indexs, -* to discover line is a subtotal / totale line or not -* ex use to set 'dun display zero in subtotal / total line' - - 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 <line> to <item>. - else. - assign component sy-index - of structure <line> to <item>. - endif. - - contentsitem-row = realoverflow. - - if sy-subrc = 0. - move semaitem-col_ops to search_item(3). - search 'ADD#CNT#MIN#MAX#AVG#NOP#DFT#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - move semaitem-col_typ to search_item(3). - search 'NUM#N00#N01#N02#N03#N04#PCT#DAT#MON#STR#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - contentsitem-column = sy-index. - if semaitem-col_typ eq 'DAT' or semaitem-col_typ eq 'MON'. - if semaitem-col_no > vkeycount. - - " Hinweis 512418 - " EXCEL bezieht Datumsangaben - " auf den 31.12.1899, behandelt - " aber 1900 als ein Schaltjahr - " d.h. ab 1.3.1900 korrekt - " 1.3.1900 als Zahl = 61 - - data: genesis type d value '18991230'. - data: number_of_days type p. -* change for date in char format & sema_type = X - data: temp_date type d. - - if not <item> is initial and not <item> co ' ' and not - <item> co '0'. -* change for date in char format & sema_type = X starts - if sema_type = 'X'. - describe field <item> type typ. - if typ = 'C'. - temp_date = <item>. - number_of_days = temp_date - genesis. - else. - number_of_days = <item> - genesis. - endif. - else. - number_of_days = <item> - genesis. - endif. -* change for date in char format & sema_type = X ends - if number_of_days < 61. - number_of_days = number_of_days - 1. - endif. - - set country 'DE'. - 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 <item> to contentsitem-value. - endif. - elseif semaitem-col_typ eq 'NUM' or - semaitem-col_typ eq 'N00' or - semaitem-col_typ eq 'N01' or - semaitem-col_typ eq 'N02' or - semaitem-col_typ eq 'N03' or - semaitem-col_typ eq 'N04' or - semaitem-col_typ eq 'PCT'. - set country 'DE'. - describe field <item> type typ. - - if semaitem-col_cur is initial. - if typ ne 'F'. - write <item> to contentsitem-value no-grouping - no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - no-sign. - endif. - else. -* Treat of fixed curreny for column >>Y9CK007319 - if semaitem-col_cur < 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 'F'. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign. - endif. - endif. - else. - assign component semaitem-col_cur - of structure <line> to <g>. -* 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 <f_fieldcat_line> - with key tabname = l_tabname - tech = space - no_out = space - col_pos = semaitem-col_no. - IF sy-subrc = 0. - IF <f_fieldcat_line>-cfieldname is not initial. - l_def = 'C'. - else."if <f_fieldcat_line>-qfieldname is not initial. - l_def = 'Q'. - ENDIF. - ENDIF. - -* if field is amount field -* exporting of amount field base on currency decimal table: TCURX - IF l_def = 'C'. "field is amount field - select single * from tcurx into wa_tcurx - where currkey = <g>. -* if amount ref to un-know currency -> 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 'F'. - write <item> to contentsitem-value - currency <g> - no-sign no-grouping. - else. - write <item> to contentsitem-value - decimals 14 currency <g> - no-sign no-grouping. - endif. - -* if field is quantity field -* exporting of quantity field base on quantity decimal table: T006 - - else."if l_def = 'Q'. " field is quantity field - clear: wa_t006. - select single * from t006 into wa_t006 - where MSEHI = <g>. -* if quantity ref to un-know unit-> default decimal = 2 - if sy-subrc eq 0. - curritem-decimals = wa_t006-decan. - else. - curritem-decimals = 2. - endif. - append curritem to currcells. - - write <item> to contentsitem-value - unit <g> - no-sign no-grouping. - condense contentsitem-value. - - ENDIF. - - endif. "Y9CK007319 - endif. - condense contentsitem-value. - -* add function fieldcat-no zero display - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - if <f_fieldcat_line>-col_pos = semaitem-col_no. - if <f_fieldcat_line>-no_zero = 'X'. - if <item> = '0'. - 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 <item> = '0'. - clear: contentsitem-value. - endif. - ENDIF. - endif. - endif. - endloop. - unassign: <f_fieldcat_line>. - - if <item> lt 0. - search contentsitem-value for 'E'. - if sy-fdpos eq 0. - -* bring negative sign to front of amount - - translate contentsitem-value using '- '. - condense contentsitem-value no-gaps. - concatenate '-' contentsitem-value - into contentsitem-value. - else. - concatenate '-' 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 ":" enthalten. -* F#ƒÂ#r die -* darf keine Kommaseparierung stattfinden. -* Changing for correction request - Y6BK041073 - if contentsitem-value co '0123456789.,-+E '. - translate contentsitem-value using comma_elim. - endif. - else. - clear contentsitem-value. - -* if type is not numeric -> dun display with zero - - write <item> 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: <f_fieldcat_line>. - -* set item range for set_range_data method - - testname = mit / const. - condense testname. - - concatenate 'TEST' 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->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 = 'X'. - -* 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 > 1. - rowmaxtemp = rowmax - 1. - rowcount = 1. - do rowmaxtemp times. - columncount = 1. - do columnmax times. - contentsitem-column = columncount. - contentsitem-row = rowcount. - contentsitem-value = ''. - 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 = 'TESTHKEY'. - rangeitem-rows = rowmax. - rangeitem-columns = hkeycolumns. - append rangeitem to ranges. - clear: rangeitem. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'TESTHKEY' - 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. " 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: <f_source> type any. - field-symbols: <f_des> type any. - -* columns header format - - wa_format-front = -1. - wa_format-back = 15. "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 -* -> map input format - - if i_columns_header = 'X'. - wa_format-name = 'TESTHKEY'. - 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. " dun map range name - assign component sy-index of structure i_format_col_header - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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 = 'X'. - 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 = 'X'. - 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->cell_format - EXPORTING - cells = currcells - no_flush = no_flush. - -* item data: write item table content - - call method lo_spreadsheet->set_ranges_data - EXPORTING - ranges = ranges - contents = contents - no_flush = no_flush. - -* whole table range to format all table - - if i_columns_header = 'X'. - li_head_top = li_commentary_rows + 1. - else. - li_head_top = li_commentary_rows + 2. - help = help - 1. - endif. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'WHOLE_TABLE' - 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 = 'X'. - call method lo_spreadsheet->fit_widest - EXPORTING - name = 'WHOLE_TABLE' - 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=>FLUSH ) - - call method lo_spreadsheet->set_frame - EXPORTING - rangename = 'WHOLE_TABLE' - 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->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) = 'SUB'. - wa_format-back = 36. "subtotal line - wa_format_temp = i_format_subtotal. - else. - wa_format-back = 27. "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. " dun map range name - assign component sy-index of structure wa_format_temp - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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->set_ranges_format - EXPORTING - formattable = lt_format - no_flush = no_flush. - refresh: lt_format. - endif. -*--------------------------------------------------------------------* - call method lo_spreadsheet->screen_update - EXPORTING - updating = 'X'. - - call method c_oi_errors=>flush_errors. - - lo_error_w = l_error. - lc_retcode = lo_error_w->error_code. - -** catch no_flush -> led to dump ( optional ) -* go_error = l_error. -* gc_retcode = go_error->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, - <f_excel_tab>. - - clear: - lo_error_w. - - unassign: - <line>, - <item>, - <f_excel_tab>. - -*--------------------------------------------------------------------* -* SESSION 5: SAVE AND CLOSE FILE -*--------------------------------------------------------------------* - -* ex of save path: 'FILE://C:\temp\test.xlsx' - concatenate 'FILE://' I_save_path - into ls_path. - - call method lo_proxy->save_document_to_url - EXPORTING - no_flush = 'X' - url = ls_path - IMPORTING - error = lo_error - retcode = lc_retcode - CHANGING - document_size = li_document_size. - - error_doi. - -* if save successfully -> raise successful message -* message i499(sy) with 'Document is Exported to ' p_path. - message i499(sy) with 'Data has been exported successfully'. - - clear: - ls_path, - li_document_size. - - close_document. - endmethod. - - - - - - - - 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 'B', - lc_top_left_row TYPE zexcel_cell_row VALUE 3. - - 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, "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: - <ls_field_catalog> TYPE zexcel_s_fieldcatalog, - <ls_field_catalog_custom> TYPE zexcel_s_fieldcatalog, - <fs_table_line> TYPE ANY, - <fs_fldval> 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=>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=>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 -*--------------------------------------------------------------------* - "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. - - "Calculate the top left row of the current table - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - lv_row_int = ls_settings-top_left_row. - - "Get number of row for the current table - DESCRIBE TABLE ip_table LINES lv_rows. - - "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=>convert_column2alpha( lv_maxcol ). - ls_settings-bottom_right_row = lv_maxrow. - - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - - lo_iterator = me->tables->if_object_collection~get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_curtable ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF ( ( ls_settings-top_left_row GE lo_curtable->settings-top_left_row AND ls_settings-top_left_row LE lo_curtable->settings-bottom_right_row ) - OR - ( ls_settings-bottom_right_row GE lo_curtable->settings-top_left_row AND ls_settings-bottom_right_row LE lo_curtable->settings-bottom_right_row ) - ) - AND - ( ( lv_column_int GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_column_int LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - OR - ( lv_maxcol GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_maxcol LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - ). - lv_errormessage = 'Table overlaps with previously bound table and will not be added to worksheet.'(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->settings = ls_settings. - lo_table->set_data( ir_data = ip_table ). - lv_id = me->excel->get_next_table_id( ). - lo_table->set_id( iv_id = lv_id ). -* lo_table->fieldcat = lt_field_catalog[]. - - me->tables->add( lo_table ). - -* It is better to loop column by column (only visible column) - LOOP AT lt_field_catalog ASSIGNING <ls_field_catalog> WHERE dynpfld EQ abap_true. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - " Due restrinction of new table object we cannot have two column with the same name - " Check if a column with the same name exists, if exists add a counter - " If no medium description is provided we try to use small or long -* lv_value = <ls_field_catalog>-scrtext_m. - IF <ls_field_catalog>-scrtext_m IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_m. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_s IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_s. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_l IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_l. - ELSE. - lv_value = 'Column'. " default value as Excel does - <ls_field_catalog>-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 <> 0. - <ls_field_catalog>-scrtext_l = lv_value. - INSERT lv_value INTO TABLE lt_column_name_buffer. - EXIT. - ELSE. - lv_syindex = sy-index. - CONCATENATE <ls_field_catalog>-scrtext_l lv_syindex INTO lv_value. - ENDIF. - - ENDWHILE. - " First of all write column header - IF <ls_field_catalog>-style_header IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_value - ip_style = <ls_field_catalog>-style_header ). - ELSE. - me->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 <fs_table_line>. - - ASSIGN COMPONENT <ls_field_catalog>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - " issue #290 Add formula support in table - IF <ls_field_catalog>-formula EQ abap_true. - IF <ls_field_catalog>-style IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> ). - ENDIF. - ELSE. - IF <ls_field_catalog>-style IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> ). - ENDIF. - ENDIF. - ADD 1 TO lv_row_int. - - ENDLOOP. - IF sy-subrc <> 0. "create empty row if table has no data - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = space ). - ADD 1 TO lv_row_int. - ENDIF. - -*--------------------------------------------------------------------* - " totals -*--------------------------------------------------------------------* - IF <ls_field_catalog>-totals_function IS NOT INITIAL. - lv_formula = lo_table->get_totals_formula( ip_column = <ls_field_catalog>-scrtext_l ip_function = <ls_field_catalog>-totals_function ). - IF <ls_field_catalog>-style_total IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = lv_formula - ip_style = <ls_field_catalog>-style_total ). - ELSE. - me->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. - -*--------------------------------------------------------------------* - " conditional formatting -*--------------------------------------------------------------------* - IF <ls_field_catalog>-cond_style IS NOT INITIAL. - lv_first_row = ls_settings-top_left_row + 1. " +1 to exclude header - lv_last_row = ls_settings-top_left_row + lv_rows. - <ls_field_catalog>-cond_style->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. - -*--------------------------------------------------------------------* - " Set field catalog -*--------------------------------------------------------------------* - lo_table->fieldcat = lt_field_catalog[]. - - es_table_settings = ls_settings. - es_table_settings-bottom_right_column = lv_column_alpha. - " >> Issue #291 - IF ip_table IS INITIAL. - es_table_settings-bottom_right_row = ls_settings-top_left_row + 2. "Last rows - ELSE. - es_table_settings-bottom_right_row = ls_settings-top_left_row + lv_rows + 1. "Last rows - ENDIF. - " << Issue #291 - - endmethod. - - - - - - - *--------------------------------------------------------------------* -* issue #293 - Roberto Bianco -* - Christian Assig 2014-03-14 -* -* changes: - Calculate widths using SAPscript font metrics -* (transaction SE73) -* - Calculate the width of dates -* - Add additional width for auto filter buttons -* - Add cell padding to simulate Excel behavior -*--------------------------------------------------------------------* -METHOD calculate_cell_width. - - CONSTANTS: - lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT - lc_default_font_height TYPE tdfontsize VALUE '110', - lc_excel_cell_padding TYPE float VALUE '0.75'. - - DATA: ld_cell_value TYPE zexcel_cell_value, - ld_current_character TYPE c LENGTH 1, - ld_style_guid TYPE zexcel_cell_style, - ls_stylemapping TYPE zexcel_s_stylemapping, - lo_table_object TYPE REF TO object, - lo_table TYPE REF TO zcl_excel_table, - ld_table_top_left_column TYPE zexcel_cell_column, - ld_table_bottom_right_column TYPE zexcel_cell_column, - ld_flag_contains_auto_filter TYPE abap_bool VALUE abap_false, - ld_flag_bold TYPE abap_bool VALUE abap_false, - ld_flag_italic TYPE abap_bool VALUE abap_false, - ld_date TYPE d, - ld_date_char TYPE c LENGTH 50, - ld_font_height TYPE tdfontsize VALUE lc_default_font_height, - lt_itcfc TYPE STANDARD TABLE OF itcfc, - ld_offset TYPE i, - ld_uccp TYPE i, - ls_font_metric TYPE mty_s_font_metric, - ld_width_from_font_metrics TYPE i, - ld_font_family TYPE itcfh-tdfamily, - ld_font_name TYPE zexcel_style_font_name VALUE lc_default_font_name, - lt_font_families LIKE STANDARD TABLE OF ld_font_family, - ls_font_cache TYPE mty_s_font_cache. - - FIELD-SYMBOLS: <ls_font_cache> TYPE mty_s_font_cache, - <ls_font_metric> TYPE mty_s_font_metric, - <ls_itcfc> TYPE itcfc. - - " Determine cell content and cell style - me->get_cell( EXPORTING ip_column = ip_column - ip_row = ip_row - IMPORTING ep_value = ld_cell_value - ep_guid = ld_style_guid ). - - " ABAP2XLSX uses tables to define areas containing headers and - " auto-filters. Find out if the current cell is in the header - " of one of these tables. - LOOP AT me->tables->collection INTO lo_table_object. - " Downcast: OBJECT -> ZCL_EXCEL_TABLE - lo_table ?= lo_table_object. - - " Convert column letters to corresponding integer values - ld_table_top_left_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-top_left_column ). - - ld_table_bottom_right_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-bottom_right_column ). - - " Is the current cell part of the table header? - IF ip_column BETWEEN ld_table_top_left_column AND - ld_table_bottom_right_column AND - ip_row EQ lo_table->settings-top_left_row. - " Current cell is part of the table header - " -> Assume that an auto filter is present and that the font is - " bold - ld_flag_contains_auto_filter = abap_true. - ld_flag_bold = abap_true. - ENDIF. - ENDLOOP. - - " If a style GUID is present, read style attributes - IF ld_style_guid IS NOT INITIAL. - TRY. - " Read style attributes - ls_stylemapping = me->excel->get_style_to_guid( ld_style_guid ). - - " If the current cell contains the default date format, - " convert the cell value to a date and calculate its length - IF ls_stylemapping-complete_style-number_format-format_code = - zcl_excel_style_number_format=>c_format_date_std. - - " Convert excel date to ABAP date - ld_date = - zcl_excel_common=>excel_string_to_date( ld_cell_value ). - - " Format ABAP date using user's formatting settings - WRITE ld_date TO ld_date_char. - - " Remember the formatted date to calculate the cell size - ld_cell_value = ld_date_char. - - ENDIF. - - " Read the font size and convert it to the font height - " used by SAPscript (multiplication by 10) - IF ls_stylemapping-complete_stylex-font-size = abap_true. - ld_font_height = ls_stylemapping-complete_style-font-size * 10. - ENDIF. - - " If set, remember the font name - IF ls_stylemapping-complete_stylex-font-name = abap_true. - ld_font_name = ls_stylemapping-complete_style-font-name. - ENDIF. - - " If set, remember whether font is bold and italic. - IF ls_stylemapping-complete_stylex-font-bold = abap_true. - ld_flag_bold = ls_stylemapping-complete_style-font-bold. - ENDIF. - - IF ls_stylemapping-complete_stylex-font-italic = abap_true. - ld_flag_italic = ls_stylemapping-complete_style-font-italic. - ENDIF. - - CATCH zcx_excel ##NO_HANDLER. - " Style GUID is present, but style was not found - " Continue with default values - - ENDTRY. - ENDIF. - - " Check if the same font (font name and font attributes) was already - " used before - READ TABLE mth_font_cache - WITH TABLE KEY - font_name = ld_font_name - font_height = ld_font_height - flag_bold = ld_flag_bold - flag_italic = ld_flag_italic - ASSIGNING <ls_font_cache>. - - IF sy-subrc <> 0. - " Font is used for the first time - " Add the font to our local font cache - ls_font_cache-font_name = ld_font_name. - ls_font_cache-font_height = ld_font_height. - ls_font_cache-flag_bold = ld_flag_bold. - ls_font_cache-flag_italic = ld_flag_italic. - INSERT ls_font_cache INTO TABLE mth_font_cache - ASSIGNING <ls_font_cache>. - - " Determine the SAPscript font family name from the Excel - " font name - SELECT tdfamily - FROM tfo01 - INTO TABLE lt_font_families - UP TO 1 ROWS - WHERE tdtext = ld_font_name. - - " Check if a matching font family was found - " Fonts can be uploaded from TTF files using transaction SE73 - IF lines( lt_font_families ) > 0. - READ TABLE lt_font_families INDEX 1 INTO ld_font_family. - - " Load font metrics (returns a table with the size of each letter - " in the font) - CALL FUNCTION 'LOAD_FONT' - EXPORTING - family = ld_font_family - height = ld_font_height - printer = 'SWIN' - bold = ld_flag_bold - italic = ld_flag_italic - TABLES - metric = lt_itcfc - EXCEPTIONS - font_family = 1 - codepage = 2 - device_type = 3 - OTHERS = 4. - IF sy-subrc <> 0. - CLEAR lt_itcfc. - ENDIF. - - " For faster access, convert each character number to the actual - " character, and store the characters and their sizes in a hash - " table - LOOP AT lt_itcfc ASSIGNING <ls_itcfc>. - ld_uccp = <ls_itcfc>-cpcharno. - ls_font_metric-char = - cl_abap_conv_in_ce=>uccpi( ld_uccp ). - ls_font_metric-char_width = <ls_itcfc>-tdcwidths. - INSERT ls_font_metric - INTO TABLE <ls_font_cache>-th_font_metrics. - ENDLOOP. - - ENDIF. - ENDIF. - - " Calculate the cell width - " If available, use font metrics - IF lines( <ls_font_cache>-th_font_metrics ) = 0. - " Font metrics are not available - " -> Calculate the cell width using only the font size - ep_width = - strlen( ld_cell_value ) * ld_font_height / lc_default_font_height - + lc_excel_cell_padding. - - ELSE. - " Font metrics are available - - " Calculate the size of the text by adding the sizes of each - " letter - DO strlen( ld_cell_value ) TIMES. - " Subtract 1, because the first character is at offset 0 - ld_offset = sy-index - 1. - - " Read the current character from the cell value - ld_current_character = ld_cell_value+ld_offset(1). - - " Look up the size of the current letter - READ TABLE <ls_font_cache>-th_font_metrics - WITH TABLE KEY char = ld_current_character - ASSIGNING <ls_font_metric>. - IF sy-subrc = 0. - " The size of the letter is known - " -> Add the actual size of the letter - ADD <ls_font_metric>-char_width TO ld_width_from_font_metrics. - ELSE. - " The size of the letter is unknown - " -> Add the font height as the default letter size - ADD ld_font_height TO ld_width_from_font_metrics. - ENDIF. - ENDDO. - - " Add cell padding (Excel makes columns a bit wider than the space - " that is needed for the text itself) and convert unit - " (division by 100) - ep_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding. - ENDIF. - - " If the current cell contains an auto filter, make it a bit wider. - " The size used by the auto filter button does not depend on the font - " size. - IF ld_flag_contains_auto_filter = abap_true. - ADD 2 TO ep_width. - ENDIF. - -ENDMETHOD. - - - - 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." 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 float. - - FIELD-SYMBOLS: <column_dimension> LIKE LINE OF column_dimensions. - FIELD-SYMBOLS: <auto_size> LIKE LINE OF auto_sizes. - - column_dimensions[] = me->get_column_dimensions( ). - LOOP AT column_dimensions ASSIGNING <column_dimension>. - auto_size = <column_dimension>-column_dimension->get_auto_size( ). - IF auto_size = abap_true. - APPEND INITIAL LINE TO auto_sizes ASSIGNING <auto_size>. - <auto_size>-col_index = <column_dimension>-column_dimension->get_column_index( ). - <auto_size>-width = -1. - ENDIF. - ENDLOOP. - - " There is only something to do if there are some auto-size columns - IF NOT auto_sizes IS INITIAL. - highest_row = me->get_highest_row( ). - LOOP AT auto_sizes ASSIGNING <auto_size>. -* col_alpha = zcl_excel_common=>convert_column2alpha( <auto_size>-col_index )." issue #155 - less restrictive typing for ip_column - count = 1. - WHILE count <= highest_row. -* Start of change # issue 139 - Dateretention of cellstyles -* IF cell_style IS BOUND. -* CREATE OBJECT cell_style. -* ENDIF. -* me->get_cell( -* EXPORTING -* ip_column = col_alpha " Cell Column -* ip_row = count " Cell Row -* IMPORTING -* ep_value = cell_value " Cell Value -* ep_style = cell_style " Request Cell Style as well -* ). -* " For an easy start we just take the number of characters as the width -* width = strlen( cell_value ). -* " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker -* " Calculate width using Font Size and Font Type -* IF cell_style IS BOUND -* AND cell_style->font IS BOUND. -* width = cell_style->font->calculate_text_width( cell_value ). -* ENDIF. -* width = calculate_cell_width( ip_column = col_alpha " issue #155 - less restrictive typing for ip_column - width = calculate_cell_width( ip_column = <auto_size>-col_index " issue #155 - less restrictive typing for ip_column - ip_row = count ). -* End of change # issue 139 - Dateretention of cellstyles - IF width > <auto_size>-width. - <auto_size>-width = width. - ENDIF. - count = count + 1. - ENDWHILE. -* column_dimension = me->get_column_dimension( col_alpha ). " issue #155 - less restrictive typing for ip_column - column_dimension = me->get_column_dimension( <auto_size>-col_index ). " issue #155 - less restrictive typing for ip_column - column_dimension->set_width( <auto_size>-width ). - ENDLOOP. - ENDIF. - - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD change_cell_style. - " 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 zexcel_cell_style. "issue # 177 - -* We have a lot of parameters. Use some macros to make the coding more structured - - DEFINE clear_initial_colorxfields. - if &1-rgb is initial. - clear &2-rgb. - endif. - if &1-indexed is initial. - clear &2-indexed. - endif. - if &1-theme is initial. - clear &2-theme. - endif. - if &1-tint is initial. - clear &2-tint. - endif. - END-OF-DEFINITION. - - DEFINE move_supplied_borders. - if ip_&1 is supplied. " only act if parameter was supplied - if ip_x&1 is supplied. " - borderx = ip_x&1. " use supplied x-parameter - else. - clear borderx with 'X'. -* clear in a way that would be expected to work easily - if ip_&1-border_style is initial. - clear borderx-border_style. - endif. - clear_initial_colorxfields ip_&1-border_color borderx-border_color. - endif. - move-corresponding ip_&1 to complete_style-&2. - move-corresponding borderx to complete_stylex-&2. - endif. - END-OF-DEFINITION. - -* First get current stylsettings - TRY. - me->get_cell( EXPORTING ip_column = ip_column " Cell Column - ip_row = ip_row " Cell Row - IMPORTING ep_guid = l_guid )." Cell Value ). "issue # 177 - - - stylemapping = me->excel->get_style_to_guid( l_guid ). "issue # 177 - complete_style = stylemapping-complete_style. - complete_stylex = stylemapping-complete_stylex. - CATCH zcx_excel. -* Error --> 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 = 'Complete styleinfo has to be supplied with corresponding X-field'. - 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 'X' TO: fontx-bold, - fontx-italic, - fontx-strikethrough, - fontx-underline_mode. - CLEAR fontx-color WITH 'X'. - clear_initial_colorxfields ip_font-color fontx-color. - IF ip_font-family IS NOT INITIAL. - fontx-family = 'X'. - ENDIF. - IF ip_font-name IS NOT INITIAL. - fontx-name = 'X'. - ENDIF. - IF ip_font-scheme IS NOT INITIAL. - fontx-scheme = 'X'. - ENDIF. - IF ip_font-size IS NOT INITIAL. - fontx-size = 'X'. - ENDIF. - IF ip_font-underline_mode IS NOT INITIAL. - fontx-underline_mode = 'X'. - 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 'X'. - 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 'X'. - 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 'X'. - 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_protection TO complete_style-protection. - IF ip_xprotection IS SUPPLIED. - MOVE-CORRESPONDING ip_xprotection TO complete_stylex-protection. - ELSE. - IF ip_protection-hidden IS NOT INITIAL. - complete_stylex-protection-hidden = 'X'. - ENDIF. - IF ip_protection-locked IS NOT INITIAL. - complete_stylex-protection-locked = 'X'. - 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_&1 is supplied. - complete_style-&2 = ip_&1. - complete_stylex-&2 = 'X'. - 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&paste of styles is requested - ep_guid = me->excel->get_static_cellstyle_guid( ip_cstyle_complete = complete_style - ip_cstylex_complete = complete_stylex ). - me->set_cell_style( ip_column = ip_column - ip_row = ip_row - ip_style = ep_guid ). - -ENDMETHOD. - - - - - - method CONSTRUCTOR. - DATA: lv_title TYPE zexcel_sheet_title. - - me->excel = ip_excel. - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - lv_title = ip_title. - ELSE. -* lv_title = me->guid. " del issue #154 - Names of worksheets - lv_title = me->generate_title( ). " ins issue #154 - Names of worksheets - ENDIF. - - me->set_title( ip_title = lv_title ). - - CREATE OBJECT sheet_setup. - CREATE OBJECT conditional_styles. - CREATE OBJECT data_validations. - CREATE OBJECT tables. - CREATE OBJECT ranges. " issue #163 - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - me->zif_excel_sheet_protection~initialize( ). - me->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. - - - method DELETE_MERGE. - - DELETE sheet_content_merge INDEX 1. - DELETE sheet_content_merge INDEX 1. - - endmethod. - - - - - - 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 = 'Pleas provide number of rows and/or columns to freeze'. - ENDIF. - - IF ip_num_columns IS SUPPLIED AND ip_num_columns <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of columns to freeze should be positive'. - ENDIF. - - IF ip_num_rows IS SUPPLIED AND ip_num_rows <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of rows to freeze should be positive'. - ENDIF. - - freeze_pane_cell_column = ip_num_columns + 1. - freeze_pane_cell_row = ip_num_rows + 1. - endmethod. - - - - 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->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = abap_true. - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - title = lo_worksheet->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. " Start counting with next number - DO. - title = sheetnumber. - SHIFT title LEFT DELETING LEADING space. - CONCATENATE 'Sheet'(001) title INTO ep_title. - INSERT ep_title INTO TABLE t_titles. - IF sy-subrc = 0. " Title not used so far --> take it - EXIT. - ENDIF. - - ADD 1 TO sheetnumber. - ENDDO. - endmethod. - - - - - method GET_ACTIVE_CELL. - - DATA: lv_active_column TYPE zexcel_cell_column_alpha, - lv_active_row TYPE string. - - lv_active_column = zcl_excel_common=>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. - - - - - - - - - - method GET_CELL. - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = zcl_excel_common=>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. " issue 139 - added this to be used for columnwidth calculation - - " 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->excel->get_styles_iterator( ). - WHILE style_iterator->has_next( ) = 'X'. - style ?= style_iterator->get_next( ). - IF style->get_guid( ) = ls_sheet_content-cell_style. - ep_style = style. - EXIT. - ENDIF. - ENDWHILE. - ENDIF. - endmethod. - - - - - - method GET_COLUMN_DIMENSION. - FIELD-SYMBOLS: <fs_column_dimension> LIKE LINE OF column_dimensions. - DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. " issue #155 - less restrictive typing for ip_column - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column )." issue #155 - less restrictive typing for ip_column - READ TABLE me->column_dimensions ASSIGNING <fs_column_dimension> - WITH KEY column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - - IF NOT <fs_column_dimension> IS ASSIGNED. - CREATE OBJECT r_column_dimension - EXPORTING - ip_index = lv_column_alpha " issue #155 - less restrictive typing for ip_column - ip_excel = me->excel " issue #157 - Allow style for columns - ip_worksheet = me. " issue #157 - Allow style for columns - APPEND INITIAL LINE TO me->column_dimensions ASSIGNING <fs_column_dimension>. - <fs_column_dimension>-column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - <fs_column_dimension>-column_dimension = r_column_dimension. - ELSE. - r_column_dimension = <fs_column_dimension>-column_dimension. - ENDIF. - - endmethod. - - - - method GET_COLUMN_DIMENSIONS. - r_column_dimension[] = me->column_dimensions[]. - endmethod. - - - - method GET_COND_STYLES_ITERATOR. - - eo_iterator = me->conditional_styles->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_ITERATOR. - - eo_iterator = me->data_validations->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_SIZE. - ep_size = me->data_validations->size( ). - endmethod. - - - - method GET_DEFAULT_COLUMN_DIMENSION. - IF me->default_column_dimension IS NOT BOUND. - CREATE OBJECT me->default_column_dimension - EXPORTING - ip_index = 'A' " ???? - ip_worksheet = me - ip_excel = me->excel. - ENDIF. - - r_column_dimension = me->default_column_dimension. - endmethod. - - - - method GET_DEFAULT_EXCEL_DATE_FORMAT. - CONSTANTS: c_lang_e TYPE lang VALUE 'E'. - - IF default_excel_date_format IS NOT INITIAL. - ep_default_excel_date_format = default_excel_date_format. - RETURN. - ENDIF. - - "try to get defaults - TRY. - cl_abap_datfm=>get_date_format_des( EXPORTING im_langu = c_lang_e - IMPORTING ex_dateformat = default_excel_date_format ). - CATCH cx_abap_datfm_format_unknown. - - ENDTRY. - - " and fallback to fixed format - IF default_excel_date_format IS INITIAL. - default_excel_date_format = zcl_excel_style_number_format=>c_format_date_ddmmyyyydot. - ENDIF. - - ep_default_excel_date_format = default_excel_date_format. - endmethod. - - - - 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's get default - l_timefm = cl_abap_timefm=>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=>c_format_date_time6. - WHEN 1. -*1 12 Hour Format (Example: 12:05:10 PM) - default_excel_time_format = zcl_excel_style_number_format=>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=>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=>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=>c_format_date_time2. - WHEN OTHERS. - " and fallback to fixed format - default_excel_time_format = zcl_excel_style_number_format=>c_format_date_time6. - ENDCASE. - - ep_default_excel_time_format = default_excel_time_format. - endmethod. - - - - method GET_DEFAULT_ROW_DIMENSION. - IF me->default_row_dimension IS NOT BOUND. - CREATE OBJECT me->default_row_dimension. - ENDIF. - - r_row_dimension = me->default_row_dimension. - endmethod. - - - - - method GET_DIMENSION_RANGE. - - me->update_dimension_range( ). - IF upper_cell EQ lower_cell. "only one cell - " Worksheet not filled -* IF upper_cell-cell_coords = '0'. - IF upper_cell-cell_coords IS INITIAL. - ep_dimension_range = 'A1'. - ELSE. - ep_dimension_range = upper_cell-cell_coords. - ENDIF. - ELSE. - CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. - ENDIF. - - endmethod. - - - - - 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=>type_image. - r_drawings = drawings. - WHEN zcl_excel_drawing=>type_chart. - r_drawings = charts. - WHEN space. - CREATE OBJECT r_drawings - EXPORTING - ip_type = ''. - - lo_iterator = drawings->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - lo_iterator = charts->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - WHEN OTHERS. - ENDCASE. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = charts->get_iterator( ). - ENDCASE. - endmethod. - - - - - method GET_FREEZE_CELL. - ep_row = me->freeze_pane_cell_row. - ep_column = me->freeze_pane_cell_column. - endmethod. - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - - method GET_HIGHEST_COLUMN. - me->update_dimension_range( ). - r_highest_column = me->lower_cell-cell_column. - endmethod. - - - - - method GET_HIGHEST_ROW. - me->update_dimension_range( ). - r_highest_row = me->lower_cell-cell_row. - endmethod. - - - - method GET_HYPERLINKS_ITERATOR. - eo_iterator = hyperlinks->get_iterator( ). - endmethod. - - - - method GET_HYPERLINKS_SIZE. - ep_size = hyperlinks->size( ). - endmethod. - - - - - 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: <fs_sheet_content> 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 <fs_sheet_content>. - lv_index = lv_index + 1. - READ TABLE sheet_content_merge ASSIGNING <fs_sheet_content> INDEX lv_index. - lv_column_start = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-cell_column ). - lv_row = <fs_sheet_content>-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 <fs_sheet_content> INDEX lv_index. - lv_column_end = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-cell_column ). - lv_row = <fs_sheet_content>-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 ':'. - APPEND lv_merge_range TO merge_range. - ENDWHILE. -* ENDLOOP. - -* READ TABLE sheet_content_merge ASSIGNING <fs_sheet_content> INDEX 1. -* IF sy-subrc EQ 0 AND <fs_sheet_content> IS ASSIGNED. -* lv_column_start = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-cell_column ). -* lv_row = <fs_sheet_content>-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 <fs_sheet_content> INDEX 2. -* IF sy-subrc EQ 0 AND <fs_sheet_content> IS ASSIGNED. -* lv_column_end = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-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 ':'. -* ENDIF. - - endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - method GET_ROW_DIMENSION. - FIELD-SYMBOLS: <fs_row_dimension> LIKE LINE OF row_dimensions. - - READ TABLE me->row_dimensions ASSIGNING <fs_row_dimension> - WITH KEY row = ip_row. - - IF NOT <fs_row_dimension> IS ASSIGNED. - CREATE OBJECT r_row_dimension - EXPORTING - ip_index = ip_row. - APPEND INITIAL LINE TO me->row_dimensions ASSIGNING <fs_row_dimension>. - <fs_row_dimension>-row = ip_row. - <fs_row_dimension>-row_dimension = r_row_dimension. - ELSE. - r_row_dimension = <fs_row_dimension>-row_dimension. - ENDIF. - - endmethod. - - - - method GET_ROW_DIMENSIONS. - r_row_dimension[] = me->row_dimensions[]. - endmethod. - - - - method GET_TABCOLOR. - ev_tabcolor = me->tabcolor. - endmethod. - - - - method GET_TABLES_ITERATOR. - eo_iterator = tables->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TABLES_SIZE. - ep_size = tables->if_object_collection~size( ). - endmethod. - - - - - method GET_TITLE. - DATA lv_value TYPE string. - IF ip_escaped EQ abap_true. - lv_value = me->title. - ep_title = zcl_excel_common=>escape_string( lv_value ). - ELSE. - ep_title = me->title. - ENDIF. - endmethod. - - - - - - 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=>typekind_string. " Thats our default if something goes wrong. - - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ip_value ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - ENDTRY. - IF lo_addit IS BOUND. - lo_addit->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 'CONVERSION_EXIT_' ls_dfies-convexit '_OUTPUT' 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 <> 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->get_data_type_kind( ip_value ). - ENDIF. - ENDIF. - - endmethod. - - - 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->get_ranges_iterator( ). - WHILE lo_range_iterator->has_next( ) = abap_true. - - lo_range ?= lo_range_iterator->get_next( ). - IF lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - EXIT. " Found it - ENDIF. - CLEAR lo_range. - - ENDWHILE. - - - IF me->print_title_col_from IS INITIAL AND - me->print_title_row_from IS INITIAL. -*--------------------------------------------------------------------* -* No print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS BOUND. - me->ranges->remove( lo_range ). - ENDIF. - ELSE. -*--------------------------------------------------------------------* -* Print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS NOT BOUND. - lo_range = me->add_new_range( ). - lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - ENDIF. - - lv_repeat_range_sheetname = me->get_title( ). - lv_repeat_range_sheetname = zcl_excel_common=>escape_string( lv_repeat_range_sheetname ). - -*--------------------------------------------------------------------* -* Repeat-columns -*--------------------------------------------------------------------* - IF me->print_title_col_from IS NOT INITIAL. - CONCATENATE lv_repeat_range_sheetname - '!$' me->print_title_col_from - ':$' me->print_title_col_to - INTO lv_repeat_range_col. - ENDIF. - -*--------------------------------------------------------------------* -* Repeat-rows -*--------------------------------------------------------------------* - IF me->print_title_row_from IS NOT INITIAL. - lv_row_char_from = me->print_title_row_from. - lv_row_char_to = me->print_title_row_to. - CONCATENATE '!$' lv_row_char_from - ':$' 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 ','. - ENDIF. - - - lo_range->set_range_value( lv_repeat_range ). - ENDIF. - - - - endmethod. - - - - - - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_numeric> TYPE numeric, - <fs_date> TYPE d, - <fs_time> TYPE t, - <fs_value> TYPE simple. - - IF ip_value IS NOT SUPPLIED AND ip_formula IS NOT SUPPLIED. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please provide the value or formula'. - ENDIF. - -* Begin of change issue #152 - don't touch exisiting style if only value is passed -* lv_style_guid = ip_style. - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 - cell_column = lv_column. - IF sy-subrc = 0. - IF ip_style IS INITIAL. - " If no style is provided as method-parameter and cell is found use cell's current style - lv_style_guid = <fs_sheet_content>-cell_style. - ELSE. - " Style provided as method-parameter --> use this - lv_style_guid = ip_style. - ENDIF. - ELSE. - " No cell found --> use supplied style even if empty - lv_style_guid = ip_style. - ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - IF ip_value IS SUPPLIED. - "if data type is passed just write the value. Otherwise map abap type to excel and perform conversion - "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->* TO <fs_value>. - <fs_value> = 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 = <fs_value> ) . - ENDIF. - lv_value = <fs_value>. - 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 = <fs_value> - ep_value_type = lv_value_type ). - ENDIF. - CASE lv_value_type. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - lo_addit = cl_abap_elemdescr=>get_i( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - lo_addit = cl_abap_elemdescr=>get_f( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_char OR cl_abap_typedescr=>typekind_string OR cl_abap_typedescr=>typekind_num OR - cl_abap_typedescr=>typekind_hex. - lv_value = <fs_value>. - lv_data_type = 's'. - - WHEN cl_abap_typedescr=>typekind_date. - lo_addit = cl_abap_elemdescr=>get_d( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_date>. - IF sy-subrc = 0. - <fs_date> = <fs_value>. - lv_value = zcl_excel_common=>date_to_excel_string( ip_value = <fs_date> ) . - ENDIF. -* Begin of change issue #152 - don'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. "get default date format in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = get_default_excel_date_format( ). -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN cl_abap_typedescr=>typekind_time. - lo_addit = cl_abap_elemdescr=>get_t( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_time>. - IF sy-subrc = 0. - <fs_time> = <fs_value>. - lv_value = zcl_excel_common=>time_to_excel_string( ip_value = <fs_time> ). - ENDIF. -* Begin of change issue #152 - don'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. "get default time format for user in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_date_time6. -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid data type of input value'. - ENDCASE. - ENDIF. - - ENDIF. - - IF ip_hyperlink IS BOUND. - ip_hyperlink->set_cell_reference( ip_column = ip_column - ip_row = ip_row ). - me->hyperlinks->add( ip_hyperlink ). - ENDIF. - -* Begin of change issue #152 - don'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=>convert_column2int( ip_column ). - -* READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row -* cell_column = lv_column. -* -* IF sy-subrc EQ 0. - IF <fs_sheet_content> IS ASSIGNED. -* End of change issue #152 - don't touch exisiting style if only value is passed - <fs_sheet_content>-cell_value = lv_value. - <fs_sheet_content>-cell_formula = ip_formula. - <fs_sheet_content>-cell_style = lv_style_guid. - <fs_sheet_content>-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."del #152 - replaced with condense - should be faster -* SHIFT lv_row_alpha LEFT DELETING LEADING space. "del #152 - replaced with condense - should be faster - CONDENSE lv_row_alpha NO-GAPS. "ins #152 - replaced 2 shifts - should be faster - lv_col_alpha = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - CONCATENATE lv_col_alpha lv_row_alpha INTO ls_sheet_content-cell_coords. " issue #155 - less restrictive typing for ip_column - INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING <fs_sheet_content>. "ins #152 - Now <fs_sheet_content> always holds the data -* APPEND ls_sheet_content TO sheet_content. -* SORT sheet_content BY cell_row cell_column. - " me->update_dimension_range( ). - - ENDIF. - -* Begin of change issue #152 - don'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=>typekind_date. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_std. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_number_format_format_code = lo_format_code_datetime ). - - WHEN cl_abap_typedescr=>typekind_time. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_time6. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->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't touch exisiting style if only value is passed - -* Fix issue #162 - lv_value = ip_value. - IF lv_value CS cl_abap_char_utilities=>cr_lf. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_alignment_wraptext = abap_true ). - ENDIF. -* End of Fix issue #162 - - endmethod. - - - - - - - method SET_CELL_FORMULA. - DATA: - lv_column TYPE zexcel_cell_column, - ls_sheet_content LIKE LINE OF me->sheet_content. - - FIELD-SYMBOLS: - <sheet_content> LIKE LINE OF me->sheet_content. - -*--------------------------------------------------------------------* -* Get cell to set formula into -*--------------------------------------------------------------------* - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE me->sheet_content ASSIGNING <sheet_content> WITH TABLE KEY cell_row = ip_row - cell_column = lv_column. - IF sy-subrc <> 0. " Create new entry in sheet_content if necessary - CHECK ip_formula IS INITIAL. " no need to create new entry in sheet_content when no formula is passed - ls_sheet_content-cell_row = ip_row. - ls_sheet_content-cell_column = lv_column. - INSERT ls_sheet_content INTO TABLE me->sheet_content ASSIGNING <sheet_content>. - ENDIF. - -*--------------------------------------------------------------------* -* Fieldsymbol now holds the relevant cell -*--------------------------------------------------------------------* - <sheet_content>-cell_formula = ip_formula. - - - endmethod. - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_style_guid = ip_style. - - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row - cell_column = lv_column. - - IF sy-subrc EQ 0. - <fs_sheet_content>-cell_style = lv_style_guid. - ELSE. - set_cell( ip_column = ip_column ip_row = ip_row ip_value = '' ip_style = ip_style ). - ENDIF. - - endmethod. - - - - - - - method SET_COLUMN_WIDTH. - DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - DATA: width TYPE float. - - column_dimension = me->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 <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as column-width'. - ENDIF. - column_dimension->set_width( width ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - ENDIF. - -* If we get down to here, we have to use whatever is found in autosize. - column_dimension->set_auto_size( ip_width_autosize ). - - - endmethod. - - - - - method SET_DEFAULT_EXCEL_DATE_FORMAT. - - IF ip_default_excel_date_format IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Default date format cannot be blank'. - ENDIF. - - default_excel_date_format = ip_default_excel_date_format. - endmethod. - - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column_start = zcl_excel_common=>convert_column2int( ip_column_start ). - lv_column_end = zcl_excel_common=>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. - - - - method SET_PRINT_GRIDLINES. - me->print_gridlines = i_print_gridlines. - endmethod. - - - - - - method SET_ROW_HEIGHT. - DATA: row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: height TYPE float. - - row_dimension = me->get_row_dimension( ip_row ). - -* if a fix size is supplied use this - TRY. - height = ip_height_fix. - IF height <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as row-height'. - ENDIF. - row_dimension->set_row_height( height ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - - - - endmethod. - - - - method SET_SHOW_GRIDLINES. - me->show_gridlines = i_show_gridlines. - endmethod. - - - - method SET_SHOW_ROWCOLHEADERS. - me->show_rowcolheaders = i_show_rowcolheaders. - endmethod. - - - - method SET_TABCOLOR. - me->tabcolor = iv_tabcolor. - endmethod. - - - - - - - - - - - - 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 2, - lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - 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: <fs_table_line> TYPE ANY, - <fs_fldval> TYPE ANY, - <fs_dfies> TYPE dfies, - <fs_cell_value> TYPE zexcel_cell_value. - - lv_column_int = zcl_excel_common=>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=>describe_by_data_ref( lr_data ). - - ls_header = lo_tabdescr->get_ddic_header( ). - - lt_dfies = lo_tabdescr->get_ddic_field_list( ). - -* It is better to loop column by column - LOOP AT lt_dfies ASSIGNING <fs_dfies>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - IF ip_no_header = abap_false. - " First of all write column header - lv_cell_value = <fs_dfies>-scrtext_m. - me->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 <fs_table_line>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - ASSIGN COMPONENT <fs_dfies>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - MOVE <fs_fldval> TO lv_cell_value. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> "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=>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. - - - - - method SET_TITLE. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 The current coding for replacing a named ranges name -* after renaming a sheet should be checked if it is -* really working if sheetname should be escaped -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (wip ) 2012-12-08 -* - ... -* changes: aligning code -* message made to support multilinguality -*--------------------------------------------------------------------* -* issue#243 - ' is not allowed as first character in sheet title -* - Stefan Schmöcker, 2012-12-02 -* changes: added additional check for ' as first character -*--------------------------------------------------------------------* - 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, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Check whether title consists only of allowed characters -* Illegal characters are: / \ [ ] * ? : --> http://msdn.microsoft.com/en-us/library/ff837411.aspx -* Illegal characters not in documentation: ' as first character -*--------------------------------------------------------------------* - IF ip_title CA '/\[]*?:'. - lv_errormessage = 'Found illegal character in sheetname. List of forbidden characters: /\[]*?:'(402). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF ip_title IS NOT INITIAL AND ip_title(1) = `'`. - lv_errormessage = 'Sheetname may not start with &'(403). " & used instead of ' to allow fallbacklanguage - REPLACE '&' IN lv_errormessage WITH `'`. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -*--------------------------------------------------------------------* -* Check whether title is unique in workbook -*--------------------------------------------------------------------* - lo_worksheets_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = 'X'. - - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - CHECK me->guid <> lo_worksheet->get_guid( ). " Don't check against itself - IF ip_title = lo_worksheet->get_title( ). " Not unique --> raise exception - errormessage = 'Duplicate sheetname &'. - REPLACE '&' IN errormessage WITH ip_title. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = errormessage. - ENDIF. - - ENDWHILE. - -*--------------------------------------------------------------------* -* Remember old sheetname and rename sheet to desired name -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_old. - me->title = ip_title. - -*--------------------------------------------------------------------* -* After changing this worksheet's title we have to adjust -* all ranges that are referring to this worksheet. -*--------------------------------------------------------------------* -* 2do§1 - Check if the following quickfix is solid -* I fear it isn't - but this implementation is better then -* nothing at all since it handles a supposed majority of cases -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_new. - - lo_ranges_iterator = me->excel->get_ranges_iterator( ). - WHILE lo_ranges_iterator->has_next( ) = 'X'. - - lo_range ?= lo_ranges_iterator->get_next( ). - lv_range_value = lo_range->get_value( ). - REPLACE ALL OCCURRENCES OF lv_rangesheetname_old IN lv_range_value WITH lv_rangesheetname_new. - IF sy-subrc = 0. - lo_range->set_range_value( lv_range_value ). - ENDIF. - - ENDWHILE. - - - endmethod. - - - - 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. - "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=>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. - - "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=>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. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ADD. - - worksheets->add( ip_worksheet ). - - endmethod. - - - method CLEAR. - - worksheets->clear( ). - - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT worksheets. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_worksheet ?= worksheets->if_object_collection~get( lv_index ). - - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= worksheets->if_object_collection~get_iterator( ). - - endmethod. - - - - method IS_EMPTY. - - is_empty = worksheets->if_object_collection~is_empty( ). - - endmethod. - - - - method REMOVE. - - worksheets->remove( ip_worksheet ). - - endmethod. - - - - method SIZE. - - ep_size = worksheets->if_object_collection~size( ). - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - method CONSTRUCTOR. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - me->width = -1. - me->auto_size = abap_false. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - me->excel = ip_excel. "ins issue #157 - Allow Style for columns - me->worksheet = ip_worksheet. "ins issue #157 - Allow Style for columns - - " set default index to cellXf - me->xf_index = 0. - - endmethod. - - - - method GET_AUTO_SIZE. - r_auto_size = me->auto_size. - endmethod. - - - - method GET_COLLAPSED. - r_Collapsed = me->Collapsed. - endmethod. - - - - method GET_COLUMN_INDEX. - r_column_index = me->column_index. - endmethod. - - - - - method GET_COLUMN_STYLE_GUID. - IF me->style_guid IS NOT INITIAL. - ep_style_guid = me->style_guid. - ELSE. - ep_style_guid = me->worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - endmethod. - - - - method GET_OUTLINE_LEVEL. - r_outline_level = me->outline_level. - endmethod. - - - - method GET_VISIBLE. - r_Visible = me->Visible. - endmethod. - - - - method GET_WIDTH. - r_WIDTH = me->WIDTH. - endmethod. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - - method SET_AUTO_SIZE. - me->auto_size = ip_auto_size. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLLAPSED. - me->Collapsed = ip_Collapsed. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_INDEX. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_STYLE_BY_GUID. - DATA: stylemapping TYPE zexcel_s_stylemapping. - - IF me->excel IS NOT BOUND. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Internal error - reference to ZCL_EXCEL not bound'. - ENDIF. - TRY. - stylemapping = me->excel->get_style_to_guid( ip_style_guid ). - me->style_guid = stylemapping-guid. - - CATCH zcx_excel . - EXIT. " leave as is in case of error - ENDTRY. - - endmethod. - - - - method SET_OUTLINE_LEVEL. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_VISIBLE. - me->Visible = ip_Visible. - r_worksheet_columndime = me. - endmethod. - - - - - - method SET_WIDTH. - TRY. - me->width = ip_width. - r_worksheet_columndime = me. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret width as number'. - ENDTRY. - endmethod. - - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - r_worksheet_columndime = me. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - method CONSTRUCTOR. - " Initialise values - me->row_index = ip_index. - me->row_height = -1. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - - " set row dimension as unformatted by default - me->xf_index = 0. - endmethod. - - - - method GET_COLLAPSED. - r_collapsed = me->collapsed. - endmethod. - - - - method GET_OUTLINE_LEVEL. - r_outline_level = me->outline_level. - endmethod. - - - - method GET_ROW_HEIGHT. - r_row_height = me->row_height. - endmethod. - - - - method GET_ROW_INDEX. - r_row_index = me->row_index. - endmethod. - - - - method GET_VISIBLE. - r_visible = me->visible. - endmethod. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - method SET_COLLAPSED. - me->collapsed = ip_collapsed. - endmethod. - - - - - method SET_OUTLINE_LEVEL. - IF ip_outline_level < 0 - OR ip_outline_level > 7. - - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Outline level must range between 0 and 7.'. - - ENDIF. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_ROW_HEIGHT. - TRY. - me->row_height = ip_row_height. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret ip_row_height as number'. - ENDTRY. - endmethod. - - - - method SET_ROW_INDEX. - me->row_index = ip_index. - endmethod. - - - - method SET_VISIBLE. - me->visible = ip_visible. - endmethod. - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - - ep_file = me->create( ). - endmethod. - - - - method CREATE. - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - - "-------------Added by Alessandro Iannacci - Only if template exist - IF lv_content IS NOT INITIAL AND me->excel->use_template EQ abap_true. - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ELSE. "ADD CUSTOM CHART!!!! - lv_content = me->create_xl_charts( lo_drawing ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDIF. - "------------------------------------------------- - ENDWHILE. - -********************************************************************** -* STEP 12: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - - method CREATE_CONTENT_TYPES. - - -** Constant node name - DATA: lc_xml_node_types TYPE string VALUE 'Types', - lc_xml_node_override TYPE string VALUE 'Override', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - " Node namespace - lc_xml_node_types_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/content-types', - " Node extension - lc_xml_node_rels_ext TYPE string VALUE 'rels', - lc_xml_node_xml_ext TYPE string VALUE 'xml', - " Node partnumber - lc_xml_node_theme_pn TYPE string VALUE '/xl/theme/theme1.xml', - lc_xml_node_styles_pn TYPE string VALUE '/xl/styles.xml', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_props_pn TYPE string VALUE '/docProps/app.xml', - lc_xml_node_worksheet_pn TYPE string VALUE '/xl/worksheets/sheet#.xml', - lc_xml_node_strings_pn TYPE string VALUE '/xl/sharedStrings.xml', - lc_xml_node_core_pn TYPE string VALUE '/docProps/core.xml', - lc_xml_node_chart_pn TYPE string VALUE '/xl/charts/chart#.xml', - " Node contentType - lc_xml_node_theme_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.theme+xml', - lc_xml_node_styles_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', - lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', - lc_xml_node_rels_ct TYPE string VALUE 'application/vnd.openxmlformats-package.relationships+xml', - lc_xml_node_xml_ct TYPE string VALUE 'application/xml', - lc_xml_node_props_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.extended-properties+xml', - lc_xml_node_worksheet_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', - lc_xml_node_strings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', - lc_xml_node_core_ct TYPE string VALUE 'application/vnd.openxmlformats-package.core-properties+xml', - lc_xml_node_table_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml', - lc_xml_node_drawings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawing+xml', - lc_xml_node_chart_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table. - - DATA: lv_worksheets_num TYPE i, - lv_worksheets_numc TYPE numc3, - lv_xml_node_worksheet_pn TYPE string, - lv_xml_size TYPE i, - lv_value TYPE string, - lv_drawing_index TYPE i VALUE 1, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node types - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_types - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_types_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_rels_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_rels_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_xml_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_xml_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_theme_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_theme_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_styles_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_styles_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Workbook node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_workb_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Properties node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_props_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_props_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Worksheet node - lv_worksheets_num = excel->get_worksheets_size( ). - DO lv_worksheets_num TIMES. - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - - MOVE sy-index TO lv_worksheets_numc. - SHIFT lv_worksheets_numc LEFT DELETING LEADING '0'. - lv_xml_node_worksheet_pn = lc_xml_node_worksheet_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_worksheet_pn WITH lv_worksheets_numc. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_xml_node_worksheet_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_worksheet_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - lo_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - - lv_value = lo_table->get_name( ). - CONCATENATE '/xl/tables/' lv_value '.xml' INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_table_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Drawings - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lv_index_str = lv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - CONCATENATE '/' me->c_xl_drawings INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_drawings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - - " media mimes - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - lt_media_type TYPE TABLE OF mimetypes-extension, - lv_media_type TYPE mimetypes-extension, - lv_mime_type TYPE mimetypes-type. - - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_media_type = lo_drawing->get_media_type( ). - COLLECT lv_media_type INTO lt_media_type. - ENDWHILE. - - LOOP AT lt_media_type INTO lv_media_type. - CALL FUNCTION 'SDOK_MIMETYPE_GET' - EXPORTING - extension = lv_media_type - IMPORTING - mimetype = lv_mime_type. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lv_value = lv_media_type. - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lv_value ). - lv_value = lv_mime_type. - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - - " Charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lv_index_str = lo_drawing->get_index( ). - CONDENSE lv_index_str. - lv_value = lc_xml_node_chart_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_value WITH lv_index_str. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_chart_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_strings_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_strings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_core_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_core_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_APP. - - -** Constant node name - DATA: lc_xml_node_properties TYPE string VALUE 'Properties', - lc_xml_node_application TYPE string VALUE 'Application', - lc_xml_node_docsecurity TYPE string VALUE 'DocSecurity', - lc_xml_node_scalecrop TYPE string VALUE 'ScaleCrop', - lc_xml_node_headingpairs TYPE string VALUE 'HeadingPairs', - lc_xml_node_vector TYPE string VALUE 'vector', - lc_xml_node_variant TYPE string VALUE 'variant', - lc_xml_node_lpstr TYPE string VALUE 'lpstr', - lc_xml_node_i4 TYPE string VALUE 'i4', - lc_xml_node_titlesofparts TYPE string VALUE 'TitlesOfParts', - lc_xml_node_company TYPE string VALUE 'Company', - lc_xml_node_linksuptodate TYPE string VALUE 'LinksUpToDate', - lc_xml_node_shareddoc TYPE string VALUE 'SharedDoc', - lc_xml_node_hyperlinkschanged TYPE string VALUE 'HyperlinksChanged', - lc_xml_node_appversion TYPE string VALUE 'AppVersion', - " Namespace prefix - lc_vt_ns TYPE string VALUE 'vt', - lc_xml_node_props_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', - lc_xml_node_props_vt_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - " Node attributes - lc_xml_attr_size TYPE string VALUE 'size', - lc_xml_attr_basetype TYPE string VALUE 'baseType'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element_vector TYPE REF TO if_ixml_element, - lo_sub_element_variant TYPE REF TO if_ixml_element, - lo_sub_element_lpstr TYPE REF TO if_ixml_element, - lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node properties - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_properties - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_props_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:vt' - value = lc_xml_node_props_vt_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Application - lo_element = lo_document->create_simple_element( name = lc_xml_node_application - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~application. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " DocSecurity - lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~docsecurity. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " ScaleCrop - lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~scalecrop ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HeadingPairs - lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = '2' ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_variant ). - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** i4 node - lo_sub_element_i4 = lo_document->create_simple_element_ns( name = lc_xml_node_i4 - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_i4 ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " HeadingPairs - - - " TitlesOfParts - lo_element = lo_document->create_simple_element( name = lc_xml_node_titlesofparts - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = lv_value ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_lpstr ). - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " ** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->get_title( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_vector->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - ENDWHILE. - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " TitlesOfParts - - - - " Company - IF excel->zif_excel_book_properties~company IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_company - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~company. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " LinksUpToDate - lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~linksuptodate ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " SharedDoc - lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~shareddoc ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HyperlinksChanged - lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~hyperlinkschanged ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " AppVersion - lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~appversion. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_CORE. - - -** Constant node name - DATA: lc_xml_node_coreproperties TYPE string VALUE 'coreProperties', - lc_xml_node_creator TYPE string VALUE 'creator', - lc_xml_node_description TYPE string VALUE 'description', - lc_xml_node_lastmodifiedby TYPE string VALUE 'lastModifiedBy', - lc_xml_node_created TYPE string VALUE 'created', - lc_xml_node_modified TYPE string VALUE 'modified', - " Node attributes - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_target TYPE string VALUE 'dcterms:W3CDTF', - " Node namespace - lc_cp_ns TYPE string VALUE 'cp', - lc_dc_ns TYPE string VALUE 'dc', - lc_dcterms_ns TYPE string VALUE 'dcterms', -* lc_dcmitype_ns TYPE string VALUE 'dcmitype', - lc_xsi_ns TYPE string VALUE 'xsi', - lc_xml_node_cp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', - lc_xml_node_dc_ns TYPE string VALUE 'http://purl.org/dc/elements/1.1/', - lc_xml_node_dcterms_ns TYPE string VALUE 'http://purl.org/dc/terms/', - lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', - lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_value TYPE string, - lv_date TYPE sydatum, - lv_time TYPE syuzeit. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node coreProperties - lo_element_root = lo_document->create_simple_element_ns( name = lc_xml_node_coreproperties - prefix = lc_cp_ns - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:cp' - value = lc_xml_node_cp_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dc' - value = lc_xml_node_dc_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcterms' - value = lc_xml_node_dcterms_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcmitype' - value = lc_xml_node_dcmitype_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:xsi' - value = lc_xml_node_xsi_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Creator node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_creator - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~creator. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Description node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_description - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~description. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " lastModifiedBy node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby - prefix = lc_cp_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~lastmodifiedby. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Created node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - - CONVERT TIME STAMP excel->zif_excel_book_properties~created TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~created. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Modified node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - CONVERT TIME STAMP excel->zif_excel_book_properties~modified TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~modified. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_rId1_id TYPE string VALUE 'rId1', - lc_xml_node_rId2_id TYPE string VALUE 'rId2', - lc_xml_node_rId3_id TYPE string VALUE 'rId3', - " Node type - lc_xml_node_rId1_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - lc_xml_node_rId2_tp TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lc_xml_node_rId3_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - " Node target - lc_xml_node_rId1_tg TYPE string VALUE 'xl/workbook.xml', - lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', - lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId3_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId3_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId2_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId2_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId1_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId1_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_CHARTS. - - -** Constant node name - CONSTANTS: lc_xml_node_chartspace TYPE string VALUE 'c:chartSpace', - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_date1904 TYPE string VALUE 'c:date1904', - lc_xml_node_lang TYPE string VALUE 'c:lang', - lc_xml_node_roundedcorners TYPE string VALUE 'c:roundedCorners', - lc_xml_node_altcont TYPE string VALUE 'mc:AlternateContent', - lc_xml_node_altcont_ns_mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_choice TYPE string VALUE 'mc:Choice', - lc_xml_node_choice_ns_requires TYPE string VALUE 'c14', - lc_xml_node_choice_ns_c14 TYPE string VALUE 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart', - lc_xml_node_style TYPE string VALUE 'c14:style', - lc_xml_node_fallback TYPE string VALUE 'mc:Fallback', - lc_xml_node_style2 TYPE string VALUE 'c:style', - - "---------------------------CHART - lc_xml_node_chart TYPE string VALUE 'c:chart', - lc_xml_node_autotitledeleted TYPE string VALUE 'c:autoTitleDeleted', - "plotArea - lc_xml_node_plotarea TYPE string VALUE 'c:plotArea', - lc_xml_node_layout TYPE string VALUE 'c:layout', - lc_xml_node_varycolors TYPE string VALUE 'c:varyColors', - lc_xml_node_ser TYPE string VALUE 'c:ser', - lc_xml_node_idx TYPE string VALUE 'c:idx', - lc_xml_node_order TYPE string VALUE 'c:order', - lc_xml_node_tx TYPE string VALUE 'c:tx', - lc_xml_node_v TYPE string VALUE 'c:v', - lc_xml_node_val TYPE string VALUE 'c:val', - lc_xml_node_cat TYPE string VALUE 'c:cat', - lc_xml_node_numref TYPE string VALUE 'c:numRef', - lc_xml_node_strref TYPE string VALUE 'c:strRef', - lc_xml_node_f TYPE string VALUE 'c:f', "this is the range - "note: numcache avoided - lc_xml_node_dlbls TYPE string VALUE 'c:dLbls', - lc_xml_node_showlegendkey TYPE string VALUE 'c:showLegendKey', - lc_xml_node_showval TYPE string VALUE 'c:showVal', - lc_xml_node_showcatname TYPE string VALUE 'c:showCatName', - lc_xml_node_showsername TYPE string VALUE 'c:showSerName', - lc_xml_node_showpercent TYPE string VALUE 'c:showPercent', - lc_xml_node_showbubblesize TYPE string VALUE 'c:showBubbleSize', - "plotArea->pie - lc_xml_node_piechart TYPE string VALUE 'c:pieChart', - lc_xml_node_showleaderlines TYPE string VALUE 'c:showLeaderLines', - lc_xml_node_firstsliceang TYPE string VALUE 'c:firstSliceAng', - "plotArea->line - lc_xml_node_linechart TYPE string VALUE 'c:lineChart', - lc_xml_node_symbol TYPE string VALUE 'c:symbol', - lc_xml_node_marker TYPE string VALUE 'c:marker', - lc_xml_node_smooth TYPE string VALUE 'c:smooth', - "plotArea->bar - lc_xml_node_invertifnegative TYPE string VALUE 'c:invertIfNegative', - lc_xml_node_barchart TYPE string VALUE 'c:barChart', - lc_xml_node_bardir TYPE string VALUE 'c:barDir', - lc_xml_node_gapwidth TYPE string VALUE 'c:gapWidth', - "plotArea->line + plotArea->bar - lc_xml_node_grouping TYPE string VALUE 'c:grouping', - lc_xml_node_axid TYPE string VALUE 'c:axId', - lc_xml_node_catax TYPE string VALUE 'c:catAx', - lc_xml_node_valax TYPE string VALUE 'c:valAx', - lc_xml_node_scaling TYPE string VALUE 'c:scaling', - lc_xml_node_orientation TYPE string VALUE 'c:orientation', - lc_xml_node_delete TYPE string VALUE 'c:delete', - lc_xml_node_axpos TYPE string VALUE 'c:axPos', - lc_xml_node_numfmt TYPE string VALUE 'c:numFmt', - lc_xml_node_majorgridlines TYPE string VALUE 'c:majorGridlines', - lc_xml_node_majortickmark TYPE string VALUE 'c:majorTickMark', - lc_xml_node_minortickmark TYPE string VALUE 'c:minorTickMark', - lc_xml_node_ticklblpos TYPE string VALUE 'c:tickLblPos', - lc_xml_node_crossax TYPE string VALUE 'c:crossAx', - lc_xml_node_crosses TYPE string VALUE 'c:crosses', - lc_xml_node_auto TYPE string VALUE 'c:auto', - lc_xml_node_lblalgn TYPE string VALUE 'c:lblAlgn', - lc_xml_node_lbloffset TYPE string VALUE 'c:lblOffset', - lc_xml_node_nomultilvllbl TYPE string VALUE 'c:noMultiLvlLbl', - lc_xml_node_crossbetween TYPE string VALUE 'c:crossBetween', - "legend - lc_xml_node_legend TYPE string VALUE 'c:legend', - "legend->pie - lc_xml_node_legendpos TYPE string VALUE 'c:legendPos', -* lc_xml_node_layout TYPE string VALUE 'c:layout', "already exist - lc_xml_node_overlay TYPE string VALUE 'c:overlay', - lc_xml_node_txpr TYPE string VALUE 'c:txPr', - lc_xml_node_bodypr TYPE string VALUE 'a:bodyPr', - lc_xml_node_lststyle TYPE string VALUE 'a:lstStyle', - lc_xml_node_p TYPE string VALUE 'a:p', - lc_xml_node_ppr TYPE string VALUE 'a:pPr', - lc_xml_node_defrpr TYPE string VALUE 'a:defRPr', - lc_xml_node_endpararpr TYPE string VALUE 'a:endParaRPr', - "legend->bar + legend->line - lc_xml_node_plotvisonly TYPE string VALUE 'c:plotVisOnly', - lc_xml_node_dispblanksas TYPE string VALUE 'c:dispBlanksAs', - lc_xml_node_showdlblsovermax TYPE string VALUE 'c:showDLblsOverMax', - "---------------------------END OF CHART - - lc_xml_node_printsettings TYPE string VALUE 'c:printSettings', - lc_xml_node_headerfooter TYPE string VALUE 'c:headerFooter', - lc_xml_node_pagemargins TYPE string VALUE 'c:pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'c:pageSetup'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - DATA: lv_rel_id TYPE i. - - DATA lo_element TYPE REF TO if_ixml_element. - DATA lo_element2 TYPE REF TO if_ixml_element. - DATA lo_element3 TYPE REF TO if_ixml_element. - DATA lo_el_rootchart TYPE REF TO if_ixml_element. - DATA lo_element4 TYPE REF TO if_ixml_element. - DATA lo_element5 TYPE REF TO if_ixml_element. - DATA lo_element6 TYPE REF TO if_ixml_element. - DATA lo_element7 TYPE REF TO if_ixml_element. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_chartspace - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - -********************************************************************** -* STEP 4: Create chart - - DATA lo_chartb TYPE REF TO zcl_excel_graph_bars. - DATA lo_chartp TYPE REF TO zcl_excel_graph_pie. - DATA lo_chartl TYPE REF TO zcl_excel_graph_line. - DATA lo_chart TYPE REF TO zcl_excel_graph. - - DATA ls_serie TYPE zcl_excel_graph=>s_series. - DATA ls_ax TYPE zcl_excel_graph_bars=>s_ax. - DATA lv_str TYPE string. - - "Identify chart type - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - lo_chartb ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_pie. - lo_chartp ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_line. - lo_chartl ?= io_drawing->graph. - WHEN OTHERS. - ENDCASE. - - - lo_chart = io_drawing->graph. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_date1904 - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_1904val ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_lang - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_langval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_roundedcorners - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_roundedcornersval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_altcont - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_altcont_ns_mc ). - - "Choice - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_choice - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'Requires' - value = lc_xml_node_choice_ns_requires ). - lo_element2->set_attribute_ns( name = 'xmlns:c14' - value = lc_xml_node_choice_ns_c14 ). - - "C14:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_c14styleval ). - - "Fallback - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_fallback - parent = lo_element ). - - "C:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style2 - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_styleval ). - - "---------------------------CHART - lo_element = lo_document->create_simple_element( name = lc_xml_node_chart - parent = lo_element_root ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_autotitledeleted - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_autotitledeletedval ). - - "plotArea - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotarea - parent = lo_element ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_barchart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bardir - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_bardirval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_varycolorsval ). - - "series - LOOP AT lo_chartb->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_invertifnegative - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-invertifnegative ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_gapwidth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_gapwidthval ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartb->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_bars=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_bars=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_piechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_varycolorsval ). - - "series - LOOP AT lo_chartp->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showbubblesizeval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showleaderlines - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showleaderlinesval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_firstsliceang - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_firstsliceangval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_linechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_varycolorsval ). - - "series - LOOP AT lo_chartl->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_symbol - parent = lo_element5 ). - lo_element6->set_attribute_ns( name = 'val' - value = ls_serie-symbol ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-smooth ). - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_MARKERVAL ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_SMOOTHVAL ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartl->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_line=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). -* lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt -* parent = lo_element3 ). -* lo_element4->set_attribute_ns( name = 'formatCode' -* value = ls_ax-formatcode ). -* lo_element4->set_attribute_ns( name = 'sourceLinked' -* value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_line=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN OTHERS. - ENDCASE. - - "legend - IF lo_chart->print_label EQ abap_true. - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_legend - parent = lo_element ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_overlayval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_txpr - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bodypr - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lststyle - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_p - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_ppr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'rtl' - value = lo_chartp->ns_pprrtl ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_defrpr - parent = lo_element5 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_endpararpr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'lang' - value = lo_chartp->ns_endpararprlang ). - WHEN OTHERS. - ENDCASE. - ENDIF. - - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotvisonly - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_plotvisonlyval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_dispblanksas - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_dispblanksasval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_showdlblsovermax - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_showdlblsovermaxval ). - "---------------------------END OF CHART - - "printSettings - lo_element = lo_document->create_simple_element( name = lc_xml_node_printsettings - parent = lo_element_root ). - "headerFooter - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_element ). - "pageMargins - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'b' - value = lo_chart->pagemargins-b ). - lo_element2->set_attribute_ns( name = 'l' - value = lo_chart->pagemargins-l ). - lo_element2->set_attribute_ns( name = 'r' - value = lo_chart->pagemargins-r ). - lo_element2->set_attribute_ns( name = 't' - value = lo_chart->pagemargins-t ). - lo_element2->set_attribute_ns( name = 'header' - value = lo_chart->pagemargins-header ). - lo_element2->set_attribute_ns( name = 'footer' - value = lo_chart->pagemargins-footer ). - "pageSetup - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS. - - -** Constant node name - CONSTANTS: lc_xml_node_wsdr TYPE string VALUE 'xdr:wsDr', - lc_xml_node_ns_xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main'. - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - DATA: lv_rel_id TYPE i. - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_wsdr - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:xdr' - value = lc_xml_node_ns_xdr ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - -********************************************************************** -* STEP 4: Create drawings - - CLEAR: lv_rel_id. - - lo_drawings = io_worksheet->get_drawings( ). - - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - ADD 1 TO lv_rel_id. - lo_element_cellanchor = me->create_xl_drawing_anchor( - io_drawing = lo_drawing - io_document = lo_document - ip_index = lv_rel_id ). - - lo_element_root->append_child( new_child = lo_element_cellanchor ). - - ENDWHILE. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS_RELS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lv_value TYPE string, - lv_counter TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_counter = 0. - lo_drawings = io_worksheet->get_drawings( ). - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_counter. - - lv_value = lv_counter. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - lv_value = lo_drawing->get_media_name( ). - CASE lo_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - CONCATENATE '../media/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_image_tp ). - - WHEN zcl_excel_drawing=>type_chart. - CONCATENATE '../charts/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_chart_tp ). - - ENDCASE. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - method CREATE_XL_DRAWING_ANCHOR. - -** Constant node name - CONSTANTS: lc_xml_node_onecellanchor TYPE string VALUE 'xdr:oneCellAnchor', - lc_xml_node_twocellanchor TYPE string VALUE 'xdr:twoCellAnchor', - lc_xml_node_from TYPE string VALUE 'xdr:from', - lc_xml_node_to TYPE string VALUE 'xdr:to', - lc_xml_node_pic TYPE string VALUE 'xdr:pic', - lc_xml_node_ext TYPE string VALUE 'xdr:ext', - lc_xml_node_clientdata TYPE string VALUE 'xdr:clientData', - - lc_xml_node_col TYPE string VALUE 'xdr:col', - lc_xml_node_coloff TYPE string VALUE 'xdr:colOff', - lc_xml_node_row TYPE string VALUE 'xdr:row', - lc_xml_node_rowoff TYPE string VALUE 'xdr:rowOff', - - lc_xml_node_nvpicpr TYPE string VALUE 'xdr:nvPicPr', - lc_xml_node_cnvpr TYPE string VALUE 'xdr:cNvPr', - lc_xml_node_cnvpicpr TYPE string VALUE 'xdr:cNvPicPr', - lc_xml_node_piclocks TYPE string VALUE 'a:picLocks', - - lc_xml_node_sppr TYPE string VALUE 'xdr:spPr', - lc_xml_node_apgeom TYPE string VALUE 'a:prstGeom', - lc_xml_node_aavlst TYPE string VALUE 'a:avLst', - - lc_xml_node_graphicframe TYPE string VALUE 'xdr:graphicFrame', - lc_xml_node_nvgraphicframepr TYPE string VALUE 'xdr:nvGraphicFramePr', - lc_xml_node_cnvgraphicframepr TYPE string VALUE 'xdr:cNvGraphicFramePr', - lc_xml_node_graphicframelocks TYPE string VALUE 'a:graphicFrameLocks', - lc_xml_node_xfrm TYPE string VALUE 'xdr:xfrm', - lc_xml_node_aoff TYPE string VALUE 'a:off', - lc_xml_node_aext TYPE string VALUE 'a:ext', - lc_xml_node_agraphic TYPE string VALUE 'a:graphic', - lc_xml_node_agraphicdata TYPE string VALUE 'a:graphicData', - - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_cchart TYPE string VALUE 'c:chart', - - lc_xml_node_blipfill TYPE string VALUE 'xdr:blipFill', - lc_xml_node_ablip TYPE string VALUE 'a:blip', - lc_xml_node_astretch TYPE string VALUE 'a:stretch', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'. - - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_element_graphicframe TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_element3 TYPE REF TO if_ixml_element, - lo_element_from TYPE REF TO if_ixml_element, - lo_element_to TYPE REF TO if_ixml_element, - lo_element_ext TYPE REF TO if_ixml_element, - lo_element_pic TYPE REF TO if_ixml_element, - lo_element_clientdata TYPE REF TO if_ixml_element, - - ls_position TYPE zexcel_drawing_position, - - lv_col TYPE string, " zexcel_cell_column, - lv_row TYPE string, " zexcel_cell_row. - lv_col_offset TYPE string, - lv_row_offset TYPE string, - lv_value TYPE string. - - ls_position = io_drawing->get_position( ). - - IF ls_position-anchor = 'ONE'. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_onecellanchor - parent = io_document ). - ELSE. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_twocellanchor - parent = io_document ). - ENDIF. - -* from cell ****************************** - lo_element_from = io_document->create_simple_element( name = lc_xml_node_from - parent = io_document ). - - lv_col = ls_position-from-col. - lv_row = ls_position-from-row. - lv_col_offset = ls_position-from-col_offset. - lv_row_offset = ls_position-from-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_from->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_from ). - - IF ls_position-anchor = 'ONE'. - -* ext ****************************** - lo_element_ext = io_document->create_simple_element( name = lc_xml_node_ext - parent = io_document ). - - lv_value = io_drawing->get_width_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cx' - value = lv_value ). - lv_value = io_drawing->get_height_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cy' - value = lv_value ). - ep_anchor->append_child( new_child = lo_element_ext ). - - ELSEIF ls_position-anchor = 'TWO'. - -* to cell ****************************** - lo_element_to = io_document->create_simple_element( name = lc_xml_node_to - parent = io_document ). - - lv_col = ls_position-to-col. - lv_row = ls_position-to-row. - lv_col_offset = ls_position-to-col_offset. - lv_row_offset = ls_position-to-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_to->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_to ). - - ENDIF. - - CASE io_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. -* pic ********************************** - lo_element_pic = io_document->create_simple_element( name = lc_xml_node_pic - parent = io_document ). -* nvPicPr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvpicpr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). - -* cNvPicPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpicpr - parent = io_document ). - -* picLocks - lo_element3 = io_document->create_simple_element( name = lc_xml_node_piclocks - parent = io_document ). - lo_element3->set_attribute_ns( name = 'noChangeAspect' - value = '1' ). - - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_pic->append_child( new_child = lo_element ). - -* blipFill - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = io_document->create_simple_element( name = lc_xml_node_blipfill - parent = io_document ). - lo_element2 = io_document->create_simple_element( name = lc_xml_node_ablip - parent = io_document ). - lo_element2->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element2->set_attribute_ns( name = 'r:embed' - value = lv_value ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_astretch - parent = io_document ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - -* spPr - lo_element = io_document->create_simple_element( name = lc_xml_node_sppr - parent = io_document ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_apgeom - parent = io_document ). - lo_element2->set_attribute_ns( name = 'prst' - value = 'rect' ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_aavlst - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_pic ). - WHEN zcl_excel_drawing=>type_chart. -* graphicFrame ********************************** - lo_element_graphicframe = io_document->create_simple_element( name = lc_xml_node_graphicframe - parent = io_document ). -* nvGraphicFramePr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvgraphicframepr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). -* cNvGraphicFramePr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvgraphicframepr - parent = io_document ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_graphicframelocks - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* xfrm - lo_element = io_document->create_simple_element( name = lc_xml_node_xfrm - parent = io_document ). -* off - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aoff - parent = io_document ). - lo_element2->set_attribute_ns( name = 'y' value = '0' ). - lo_element2->set_attribute_ns( name = 'x' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). -* ext - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aext - parent = io_document ). - lo_element2->set_attribute_ns( name = 'cy' value = '0' ). - lo_element2->set_attribute_ns( name = 'cx' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* graphic - lo_element = io_document->create_simple_element( name = lc_xml_node_agraphic - parent = io_document ). -* graphicData - lo_element2 = io_document->create_simple_element( name = lc_xml_node_agraphicdata - parent = io_document ). - lo_element2->set_attribute_ns( name = 'uri' value = lc_xml_node_ns_c ). - -* chart - lo_element3 = io_document->create_simple_element( name = lc_xml_node_cchart - parent = io_document ). - - lo_element3->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element3->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element3->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_graphicframe ). - - ENDCASE. - -* client data *************************** - lo_element_clientdata = io_document->create_simple_element( name = lc_xml_node_clientdata - parent = io_document ). - ep_anchor->append_child( new_child = lo_element_clientdata ). - - endmethod. - - - - method CREATE_XL_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_sheet_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lc_xml_node_rid_theme_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - lc_xml_node_rid_styles_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lc_xml_node_rid_shared_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - " Node target - lc_xml_node_ridx_tg TYPE string VALUE 'worksheets/sheet#.xml', - lc_xml_node_rid_shared_tg TYPE string VALUE 'sharedStrings.xml', - lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', - lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_syindex(3) TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 2. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_styles_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( new_child = lo_element ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size - 1. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_theme_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( new_child = lo_element ). - - lv_size = excel->get_worksheets_size( ). - - DO lv_size TIMES. - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - lv_xml_node_ridx_tg = lc_xml_node_ridx_tg. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_tg WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_sheet_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 3 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_shared_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_XL_SHAREDSTRINGS. - - -** Constant node name - DATA: lc_xml_node_sst TYPE string VALUE 'sst', - lc_xml_node_si TYPE string VALUE 'si', - lc_xml_node_t TYPE string VALUE 't', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_value TYPE string, - lv_count_str TYPE string, - lv_uniquecount_str TYPE string, - lv_sytabix TYPE sytabix, - lv_count TYPE i, - lv_uniquecount TYPE i. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_sheet_string> TYPE zexcel_s_shared_string. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - DESCRIBE TABLE lt_cell_data LINES lv_count. - MOVE lv_count TO lv_count_str. - - SHIFT lv_count_str RIGHT DELETING TRAILING space. - SHIFT lv_count_str LEFT DELETING LEADING space. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - DESCRIBE TABLE lt_cell_data LINES lv_uniquecount. - MOVE lv_uniquecount TO lv_uniquecount_str. - - SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. - SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - lv_sytabix = sy-tabix - 1. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. - APPEND ls_shared_string TO shared_strings. - ENDLOOP. - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_sst - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_count - value = lv_count_str ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_uniquecount - value = lv_uniquecount_str ). - -********************************************************************** -* STEP 4: Create subnode - LOOP AT shared_strings ASSIGNING <fs_sheet_string>. - lo_element = lo_document->create_simple_element( name = lc_xml_node_si - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). - lo_sub_element->set_value( value = <fs_sheet_string>-string_value ). - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - METHOD create_xl_sheet. -*--------------------------------------------------------------------* -* issue #330 - Adding ColorScale conditional formatting -* - Ivan Femia, 2014-08-25 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF colors, - colorrgb TYPE zexcel_color, - END OF colors. - -*--------------------------------------------------------------------* -* issue #237 - Error writing column-style -* - Stefan Schmöcker, 2012-11-01 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF cfvo, - value TYPE zexcel_conditional_value, - type TYPE zexcel_conditional_type, - END OF cfvo. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - start -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, - END OF lty_table_area. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - end -*--------------------------------------------------------------------* - - -** Constant node name - DATA: lc_xml_node_worksheet TYPE string VALUE 'worksheet', - lc_xml_node_sheetpr TYPE string VALUE 'sheetPr', - lc_xml_node_tabcolor TYPE string VALUE 'tabColor', - lc_xml_node_outlinepr TYPE string VALUE 'outlinePr', - lc_xml_node_dimension TYPE string VALUE 'dimension', - lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', - lc_xml_node_sheetview TYPE string VALUE 'sheetView', - lc_xml_node_selection TYPE string VALUE 'selection', - lc_xml_node_pane TYPE string VALUE 'pane', - lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', - lc_xml_node_cols TYPE string VALUE 'cols', - lc_xml_node_col TYPE string VALUE 'col', - lc_xml_node_sheetdata TYPE string VALUE 'sheetData', - lc_xml_node_row TYPE string VALUE 'row', - lc_xml_node_c TYPE string VALUE 'c', - lc_xml_node_v TYPE string VALUE 'v', - lc_xml_node_f TYPE string VALUE 'f', - lc_xml_node_sheetprotection TYPE string VALUE 'sheetProtection', - lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'pageSetup', - lc_xml_node_pagesetuppr TYPE string VALUE 'pageSetUpPr', - lc_xml_node_condformatting TYPE string VALUE 'conditionalFormatting', - lc_xml_node_cfrule TYPE string VALUE 'cfRule', - lc_xml_node_color TYPE string VALUE 'color', " Databar by Albert Lladanosa - lc_xml_node_databar TYPE string VALUE 'dataBar', " Databar by Albert Lladanosa - lc_xml_node_colorscale TYPE string VALUE 'colorScale', - lc_xml_node_iconset TYPE string VALUE 'iconSet', - lc_xml_node_cfvo TYPE string VALUE 'cfvo', - lc_xml_node_formula TYPE string VALUE 'formula', - lc_xml_node_datavalidations TYPE string VALUE 'dataValidations', - lc_xml_node_datavalidation TYPE string VALUE 'dataValidation', - lc_xml_node_formula1 TYPE string VALUE 'formula1', - lc_xml_node_formula2 TYPE string VALUE 'formula2', - lc_xml_node_mergecell TYPE string VALUE 'mergeCell', - lc_xml_node_mergecells TYPE string VALUE 'mergeCells', - lc_xml_node_drawing TYPE string VALUE 'drawing', - lc_xml_node_headerfooter TYPE string VALUE 'headerFooter', - lc_xml_node_oddheader TYPE string VALUE 'oddHeader', - lc_xml_node_oddfooter TYPE string VALUE 'oddFooter', - lc_xml_node_evenheader TYPE string VALUE 'evenHeader', - lc_xml_node_evenfooter TYPE string VALUE 'evenFooter', - lc_xml_node_autofilter TYPE string VALUE 'autoFilter', - lc_xml_node_filtercolumn TYPE string VALUE 'filterColumn', - lc_xml_node_filters TYPE string VALUE 'filters', - lc_xml_node_filter TYPE string VALUE 'filter', - " Node attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_summarybelow TYPE string VALUE 'summaryBelow', - lc_xml_attr_summaryright TYPE string VALUE 'summaryRight', - lc_xml_attr_tabselected TYPE string VALUE 'tabSelected', - lc_xml_attr_showzeros TYPE string VALUE 'showZeros', - lc_xml_attr_zoomscale TYPE string VALUE 'zoomScale', - lc_xml_attr_zoomscalenormal TYPE string VALUE 'zoomScaleNormal', - lc_xml_attr_zoomscalepageview TYPE string VALUE 'zoomScalePageLayoutView', - lc_xml_attr_zoomscalesheetview TYPE string VALUE 'zoomScaleSheetLayoutView', - lc_xml_attr_workbookviewid TYPE string VALUE 'workbookViewId', - lc_xml_attr_showgridlines TYPE string VALUE 'showGridLines', - lc_xml_attr_gridlines TYPE string VALUE 'gridLines', - lc_xml_attr_showrowcolheaders TYPE string VALUE 'showRowColHeaders', - lc_xml_attr_activecell TYPE string VALUE 'activeCell', - lc_xml_attr_sqref TYPE string VALUE 'sqref', - lc_xml_attr_min TYPE string VALUE 'min', - lc_xml_attr_max TYPE string VALUE 'max', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_width TYPE string VALUE 'width', - lc_xml_attr_defaultwidth TYPE string VALUE '9.10', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_bestfit TYPE string VALUE 'bestFit', - lc_xml_attr_customheight TYPE string VALUE 'customHeight', - lc_xml_attr_customwidth TYPE string VALUE 'customWidth', - lc_xml_attr_collapsed TYPE string VALUE 'collapsed', - lc_xml_attr_defaultrowheight TYPE string VALUE 'defaultRowHeight', - lc_xml_attr_defaultcolwidth TYPE string VALUE 'defaultColWidth', - lc_xml_attr_outlinelevelrow TYPE string VALUE 'x14ac:outlineLevelRow', - lc_xml_attr_outlinelevelcol TYPE string VALUE 'x14ac:outlineLevelCol', - lc_xml_attr_outlinelevel TYPE string VALUE 'outlineLevel', - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_s TYPE string VALUE 's', - lc_xml_attr_spans TYPE string VALUE 'spans', - lc_xml_attr_t TYPE string VALUE 't', - lc_xml_attr_password TYPE string VALUE 'password', - lc_xml_attr_sheet TYPE string VALUE 'sheet', - lc_xml_attr_objects TYPE string VALUE 'objects', - lc_xml_attr_scenarios TYPE string VALUE 'scenarios', - lc_xml_attr_autofilter TYPE string VALUE 'autoFilter', - lc_xml_attr_deletecolumns TYPE string VALUE 'deleteColumns', - lc_xml_attr_deleterows TYPE string VALUE 'deleteRows', - lc_xml_attr_formatcells TYPE string VALUE 'formatCells', - lc_xml_attr_formatcolumns TYPE string VALUE 'formatColumns', - lc_xml_attr_formatrows TYPE string VALUE 'formatRows', - lc_xml_attr_insertcolumns TYPE string VALUE 'insertColumns', - lc_xml_attr_inserthyperlinks TYPE string VALUE 'insertHyperlinks', - lc_xml_attr_insertrows TYPE string VALUE 'insertRows', - lc_xml_attr_pivottables TYPE string VALUE 'pivotTables', - lc_xml_attr_selectlockedcells TYPE string VALUE 'selectLockedCells', - lc_xml_attr_selectunlockedcell TYPE string VALUE 'selectUnlockedCells', - lc_xml_attr_sort TYPE string VALUE 'sort', - lc_xml_attr_left TYPE string VALUE 'left', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_header TYPE string VALUE 'header', - lc_xml_attr_footer TYPE string VALUE 'footer', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_iconset TYPE string VALUE 'iconSet', - lc_xml_attr_showvalue TYPE string VALUE 'showValue', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_dxfid TYPE string VALUE 'dxfId', - lc_xml_attr_priority TYPE string VALUE 'priority', - lc_xml_attr_operator TYPE string VALUE 'operator', - lc_xml_attr_allowblank TYPE string VALUE 'allowBlank', - lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage', - lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage', - lc_xml_attr_errortitle TYPE string VALUE 'errorTitle', - lc_xml_attr_error TYPE string VALUE 'error', - lc_xml_attr_prompttitle TYPE string VALUE 'promptTitle', - lc_xml_attr_prompt TYPE string VALUE 'prompt', - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_blackandwhite TYPE string VALUE 'blackAndWhite', - lc_xml_attr_cellcomments TYPE string VALUE 'cellComments', - lc_xml_attr_copies TYPE string VALUE 'copies', - lc_xml_attr_draft TYPE string VALUE 'draft', - lc_xml_attr_errors TYPE string VALUE 'errors', - lc_xml_attr_firstpagenumber TYPE string VALUE 'firstPageNumber', - lc_xml_attr_fittopage TYPE string VALUE 'fitToPage', - lc_xml_attr_fittoheight TYPE string VALUE 'fitToHeight', - lc_xml_attr_fittowidth TYPE string VALUE 'fitToWidth', - lc_xml_attr_horizontaldpi TYPE string VALUE 'horizontalDpi', - lc_xml_attr_orientation TYPE string VALUE 'orientation', - lc_xml_attr_pageorder TYPE string VALUE 'pageOrder', - lc_xml_attr_paperheight TYPE string VALUE 'paperHeight', - lc_xml_attr_papersize TYPE string VALUE 'paperSize', - lc_xml_attr_paperwidth TYPE string VALUE 'paperWidth', - lc_xml_attr_scale TYPE string VALUE 'scale', - lc_xml_attr_usefirstpagenumber TYPE string VALUE 'useFirstPageNumber', - lc_xml_attr_useprinterdefaults TYPE string VALUE 'usePrinterDefaults', - lc_xml_attr_verticaldpi TYPE string VALUE 'verticalDpi', - lc_xml_attr_differentoddeven TYPE string VALUE 'differentOddEven', - lc_xml_attr_colid TYPE string VALUE 'colId', - lc_xml_attr_filtermode TYPE string VALUE 'filterMode', - lc_xml_attr_tabcolor_rgb TYPE string VALUE 'rgb', - lc_xml_attr_tabcolor_theme TYPE string VALUE 'theme', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_comp_pref TYPE string VALUE 'x14ac', - lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_table TYPE REF TO zcl_excel_table, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, - default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_value TYPE string, - lt_range_merge TYPE string_table, - lv_merge TYPE string, - lv_column_p TYPE zexcel_cell_column_alpha, - lv_column TYPE zexcel_cell_column, - lv_cell_value TYPE zexcel_cell_value, - lv_style_guid TYPE zexcel_cell_style, - lv_flag TYPE c, - ls_databar TYPE zexcel_conditional_databar, " Databar by Albert Lladanosa - ls_colorscale TYPE zexcel_conditional_colorscale, - ls_iconset TYPE zexcel_conditional_iconset, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - lt_cfvo TYPE TABLE OF cfvo, - ls_cfvo TYPE cfvo, - lt_colors TYPE TABLE OF colors, - ls_colors TYPE colors, - lv_cell_row_s TYPE string, - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping, - lv_freeze_cell_row TYPE zexcel_cell_row, - lv_freeze_cell_column TYPE zexcel_cell_column, - lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, - row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - lv_relation_id TYPE i VALUE 0, - outline_level_row TYPE i VALUE 0, - outline_level_col TYPE i VALUE 0, - col_count TYPE int4, - merge_count TYPE int4, - write_current_row TYPE boolean, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values, - lv_guid TYPE uuid, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter, - l_autofilter_hidden TYPE flag, - ls_area TYPE zexcel_s_autofilter_area, - lv_ref TYPE string, - lv_style_index TYPE i. " issue #237 - - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data, - <fs_range_merge> LIKE LINE OF lt_range_merge, - <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - start -*--------------------------------------------------------------------* - DATA: lt_table_areas TYPE SORTED TABLE OF lty_table_area WITH NON-UNIQUE KEY left right top bottom, - ls_table_area LIKE LINE OF lt_table_areas. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - end -*--------------------------------------------------------------------* - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_worksheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_comp_ns ). - lo_element_root->set_attribute_ns( name = 'mc:Ignorable' - value = lc_xml_node_comp_pref ). - lo_element_root->set_attribute_ns( name = 'xmlns:x14ac' - value = lc_xml_node_ig_ns ). - - -********************************************************************** -* STEP 4: Create subnodes - " sheetPr - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetpr - parent = lo_document ). - " TODO tabColor - IF io_worksheet->tabcolor IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_tabcolor - parent = lo_element ). -* Theme not supported yet - start with RGB - lv_value = io_worksheet->tabcolor-rgb. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - ENDIF. - - " outlinePr - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_outlinepr - parent = lo_document ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summarybelow. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summarybelow - value = lv_value ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summaryright. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summaryright - value = lv_value ). - - lo_element->append_child( new_child = lo_element_2 ). - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_pagesetuppr - parent = lo_document ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_fittopage - value = `1` ). - lo_element->append_child( new_child = lo_element_2 ). " pageSetupPr node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - - " dimension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension - parent = lo_document ). - lv_value = io_worksheet->get_dimension_range( ). - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " sheetViews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews - parent = lo_document ). - " sheetView node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_sheetview - parent = lo_document ). - IF io_worksheet->zif_excel_sheet_properties~show_zeros EQ abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showzeros - value = '0' ). - ENDIF. - IF iv_active = abap_true - OR io_worksheet->zif_excel_sheet_properties~selected EQ abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '0' ). - ENDIF. - " Zoom scale - IF io_worksheet->zif_excel_sheet_properties~zoomscale GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscale - value = lv_value ). - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_normal LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_normal. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalenormal - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalepageview - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalesheetview - value = lv_value ). - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid - value = '0' ). - " showGridLines attribute - IF io_worksheet->show_gridlines = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '0' ). - ENDIF. - - " showRowColHeaders attribute - IF io_worksheet->show_rowcolheaders = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '0' ). - ENDIF. - - - " freeze panes - io_worksheet->get_freeze_cell( IMPORTING ep_row = lv_freeze_cell_row - ep_column = lv_freeze_cell_column ). - - IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_pane - parent = lo_element_2 ). - - IF lv_freeze_cell_row > 1. - lv_value = lv_freeze_cell_row - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'ySplit' - value = lv_value ). - ENDIF. - - IF lv_freeze_cell_column > 1. - lv_value = lv_freeze_cell_column - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'xSplit' - value = lv_value ). - ENDIF. - - lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ). - CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value. - lo_element_3->set_attribute_ns( name = 'topLeftCell' - value = lv_value ). - - lo_element_3->set_attribute_ns( name = 'activePane' - value = 'bottomRight' ). - - lo_element_3->set_attribute_ns( name = 'state' - value = 'frozen' ). - - lo_element_2->append_child( new_child = lo_element_3 ). - ENDIF. - " selection node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection - parent = lo_document ). - lv_value = io_worksheet->get_active_cell( ). - lo_element_3->set_attribute_ns( name = lc_xml_attr_activecell - value = lv_value ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " sheetView node - - lo_element->append_child( new_child = lo_element_2 ). " sheetView node - - lo_element_root->append_child( new_child = lo_element ). " sheetViews node - - - column_dimensions[] = io_worksheet->get_column_dimensions( ). - " Calculate col - IF NOT column_dimensions IS INITIAL. - io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). - ENDIF. - row_dimensions[] = io_worksheet->get_row_dimensions( ). - " sheetFormatPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetformatpr - parent = lo_document ). - " defaultRowHeight - default_row_dimension = io_worksheet->get_default_row_dimension( ). - IF default_row_dimension IS BOUND. - IF default_row_dimension->get_row_height( ) >= 0. - lo_element->set_attribute_ns( name = lc_xml_attr_customheight - value = lc_xml_attr_true ). - lv_value = default_row_dimension->get_row_height( ). - ELSE. - lv_value = '12.75'. - ENDIF. - ELSE. - lv_value = '12.75'. - ENDIF. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight - value = lv_value ). - " defaultColWidth - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - lv_value = default_col_dimension->get_width( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultcolwidth - value = lv_value ). - ENDIF. - ENDIF. - " outlineLevelRow - LOOP AT row_dimensions ASSIGNING <row_dimension>. - IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. - outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - lv_value = outline_level_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow - value = lv_value ). - " outlineLevelCol - LOOP AT column_dimensions ASSIGNING <column_dimension>. - IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. - outline_level_col = <column_dimension>-column_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - lv_value = outline_level_col. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelcol - value = lv_value ). -* lv_value = 0. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_dydescent -* value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). " sheetFormatPr node - - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL OR NOT column_dimensions IS INITIAL. - " cols node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cols - parent = lo_document ). - " This code have to be enhanced in order to manage also column style properties - " Now it is an out/out - IF NOT column_dimensions IS INITIAL. - LOOP AT column_dimensions ASSIGNING <column_dimension>. - " col node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). - lv_value = <column_dimension>-column_dimension->get_column_index( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - " Width - IF <column_dimension>-column_dimension->get_width( ) < 0. - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - ELSE. - lv_value = <column_dimension>-column_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lv_value ). - ENDIF. - " Column visibility - IF <column_dimension>-column_dimension->get_visible( ) = abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lc_xml_attr_true ). - ENDIF. - " Auto size? - IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_bestfit - value = lc_xml_attr_true ). - ENDIF. - " Custom width? - IF default_col_dimension IS BOUND. - IF <column_dimension>-column_dimension->get_width( ) - <> default_col_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - - ENDIF. - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - ENDIF. - " Collapsed - IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_collapsed - value = lc_xml_attr_true ). - ENDIF. - " outlineLevel - IF <column_dimension>-column_dimension->get_outline_level( ) > 0. - lv_value = <column_dimension>-column_dimension->get_outline_level( ). - - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_outlinelevel - value = lv_value ). - ENDIF. - " Style -* lv_value = <column_dimension>-column_dimension->get_xf_index( ). "del issue #157 - set column style - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). "ins issue #157 - set column style -* lv_value = me->excel->get_style_index_in_styles( lv_style_guid ). "del issue #237 - CLEAR ls_style_mapping. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. - lv_style_index = ls_style_mapping-style. - IF lv_style_index > 0. "ins issue #237 - lv_value = lv_style_index - 1. "ins issue #237 - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. "ins issue #237 - - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. -* ELSE. "del issue #157 - set sheet style ( add missing columns -* IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. "del issue #157 - set sheet style ( add missing columns -* Begin of insertion issue #157 - set sheet style ( add missing columns - ENDIF. -* Always pass through this coding - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. - DATA: lts_sorted_columns TYPE SORTED TABLE OF zexcel_cell_column WITH UNIQUE KEY table_line. - TYPES: BEGIN OF ty_missing_columns, - first_column TYPE zexcel_cell_column, - last_column TYPE zexcel_cell_column, - END OF ty_missing_columns. - DATA: t_missing_columns TYPE STANDARD TABLE OF ty_missing_columns WITH NON-UNIQUE DEFAULT KEY, - missing_column LIKE LINE OF t_missing_columns. - -* First collect columns that were already handled before. The rest has to be inserted now - LOOP AT column_dimensions ASSIGNING <column_dimension>. - lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-column ). - INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. - -* Now find all columns that were missing so far - missing_column-first_column = 1. - LOOP AT lts_sorted_columns INTO lv_column. - IF lv_column > missing_column-first_column. - missing_column-last_column = lv_column - 1. - APPEND missing_column TO t_missing_columns. - ENDIF. - missing_column-first_column = lv_column + 1. - ENDLOOP. - missing_column-last_column = zcl_excel_common=>c_excel_sheet_max_col. - APPEND missing_column TO t_missing_columns. -* Now apply stylesetting ( and other defaults - I copy it from above. Whoever programmed that seems to know what to do :o) - LOOP AT t_missing_columns INTO missing_column. -* End of insertion issue #157 - set column style - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). -* lv_value = zcl_excel_common=>c_excel_sheet_min_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-first_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). -* lv_value = zcl_excel_common=>c_excel_sheet_max_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-last_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. - lv_value = ls_style_mapping-style. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. "ins issue #157 - set sheet style ( add missing columns - - ENDIF. - lo_element_root->append_child( new_child = lo_element ). " cols node - ENDIF. - " sheetData node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata - parent = lo_document ). - " Get column count - col_count = io_worksheet->get_highest_column( ). - " Get autofilter - lv_guid = io_worksheet->get_guid( ) . - lo_autofilters = excel->get_autofilters_reference( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = lv_guid ) . - IF lo_autofilter IS BOUND. - lt_values = lo_autofilter->get_values( ) . - ls_area = lo_autofilter->get_filter_area( ) . - l_autofilter_hidden = abap_true. " First defautl is not showing - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - start -*--------------------------------------------------------------------* -* Build table to hold all table-areas attached to this sheet - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). - ls_table_area-right = lo_table->get_right_column_integer( ). - ls_table_area-top = lo_table->settings-top_left_row. - ls_table_area-bottom = lo_table->get_bottom_row_integer( ). - INSERT ls_table_area INTO TABLE lt_table_areas. - ENDWHILE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end -*--------------------------------------------------------------------* - - LOOP AT io_worksheet->sheet_content ASSIGNING <ls_sheet_content>. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - CLEAR ls_style_mapping. - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - IF ls_last_row-cell_row IS NOT INITIAL. - " Row visibility of previos row. - IF row_dimension->get_visible( ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - " Add new row - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - " r - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - " Spans - lv_value = col_count. - CONCATENATE '1:' lv_value INTO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = lv_value ). - row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). - " Do we need the row dimension attributes? - IF row_dimension->get_row_height( ) >= 0 OR - row_dimension->get_collapsed( ) = abap_true OR - row_dimension->get_outline_level( ) > 0 OR - row_dimension->get_xf_index( ) <> 0 OR - l_autofilter_hidden = abap_true. - " Row dimensions - IF row_dimension->get_row_height( ) >= 0. - lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). - lv_value = row_dimension->get_row_height( ). - lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). - ENDIF. - " Collapsed - IF row_dimension->get_collapsed( ) = abap_true. - lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). - ENDIF. - " Outline level - IF row_dimension->get_outline_level( ) > 0. - lv_value = row_dimension->get_outline_level( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). - ENDIF. - " Style - IF row_dimension->get_xf_index( ) <> 0. - lv_value = row_dimension->get_xf_index( ). - lo_element_2->set_attribute_ns( name = 's' value = lv_value ). - lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). - ENDIF. - ENDIF. - l_autofilter_hidden = abap_true. " First default is not showing - ENDIF. - - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_r - value = <ls_sheet_content>-cell_coords ). - -* begin of change issue #157 - allow column cellstyle -* if no cellstyle is set, look into column, then into sheet - IF <ls_sheet_content>-cell_style IS NOT INITIAL. - lv_style_guid = <ls_sheet_content>-cell_style. - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - start -*--------------------------------------------------------------------* -* Check if cell in any of the table areas - LOOP AT lt_table_areas TRANSPORTING NO FIELDS WHERE top <= <ls_sheet_content>-cell_row - AND bottom >= <ls_sheet_content>-cell_row - AND left <= <ls_sheet_content>-cell_column - AND right >= <ls_sheet_content>-cell_column. - EXIT. - ENDLOOP. - IF sy-subrc = 0. - CLEAR lv_style_guid. " No style --> EXCEL will use built-in-styles as declared in the tables-section - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - end -*--------------------------------------------------------------------* - lv_column_p = zcl_excel_common=>convert_column2alpha( <ls_sheet_content>-cell_column ). - READ TABLE column_dimensions WITH KEY column = lv_column_p ASSIGNING <column_dimension>. - IF sy-subrc = 0. - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). - IF lv_style_guid IS INITIAL. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - ELSE. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - start -*--------------------------------------------------------------------* - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - end -*--------------------------------------------------------------------* - ENDIF. -* IF <ls_sheet_content>-cell_style IS NOT INITIAL. -* READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. - IF lv_style_guid IS NOT INITIAL. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* end of change issue #157 - allow column cellstyles - lv_value = ls_style_mapping-style. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_3->set_attribute_ns( name = lc_xml_attr_s - value = lv_value ). - ENDIF. - - " For cells with formula ignore the value - Excel will calculate it - IF <ls_sheet_content>-cell_formula IS NOT INITIAL. - " fomula node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_formula. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " fomula node - ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL. "cell can have just style or formula - IF <ls_sheet_content>-data_type IS NOT INITIAL. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = <ls_sheet_content>-data_type ). - ENDIF. - - " value node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_document ). - - IF <ls_sheet_content>-data_type EQ 's'. - lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ELSE. - lv_value = <ls_sheet_content>-cell_value. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ENDIF. - - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDIF. - - lo_element_2->append_child( new_child = lo_element_3 ). " column node - ls_last_row = <ls_sheet_content>. - ENDLOOP. - IF sy-subrc = 0. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - " Row visibility of previos row. - IF row_dimension->get_visible( ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " sheetData node - - IF lo_autofilter IS BOUND. -* Create node autofilter - lo_element = lo_document->create_simple_element( name = lc_xml_node_autofilter - parent = lo_document ). - lv_ref = lo_autofilter->get_filter_range( ) . - CONDENSE lv_ref NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - lt_values = lo_autofilter->get_values( ) . - IF lt_values IS NOT INITIAL. -* If we filter we need to set the filter mode to 1. - lo_element_2 = lo_document->find_from_name( name = lc_xml_node_sheetpr ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_filtermode - value = '1' ). -* Create node filtercolumn - CLEAR lv_column. - LOOP AT lt_values INTO ls_values. - IF ls_values-column <> lv_column. - IF lv_column IS NOT INITIAL. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_filtercolumn - parent = lo_element ). - lv_column = ls_values-column - lo_autofilter->filter_area-col_start. - lv_value = lv_column. - CONDENSE lv_value NO-GAPS. - lo_element_2->set_attribute_ns( name = lc_xml_attr_colid - value = lv_value ). - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_filters - parent = lo_element_2 ). - lv_column = ls_values-column. - ENDIF. - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_filter - parent = lo_element_3 ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = ls_values-value ). - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDLOOP. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - IF io_worksheet->zif_excel_sheet_protection~protected EQ abap_true. - " sheetProtection node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetprotection - parent = lo_document ). - MOVE io_worksheet->zif_excel_sheet_protection~password TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_password - value = lv_value ). - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_protection~auto_filter. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_autofilter - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deletecolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deleterows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_hyperlinks. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_inserthyperlinks - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~objects. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_objects - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~pivot_tables. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_pivottables - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~scenarios. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scenarios - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_locked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectlockedcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_unlocked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectunlockedcell - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sheet. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sheet - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sort. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sort - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " Merged cells - lt_range_merge = io_worksheet->get_merge( ). - IF lt_range_merge IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_mergecells - parent = lo_document ). - DESCRIBE TABLE lt_range_merge LINES merge_count. - lv_value = merge_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - LOOP AT lt_range_merge ASSIGNING <fs_range_merge>. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_mergecell - parent = lo_document ). - - lo_element_2->set_attribute_ns( name = lc_xml_attr_ref - value = <fs_range_merge> ). - lo_element->append_child( new_child = lo_element_2 ). - lo_element_root->append_child( new_child = lo_element ). - io_worksheet->delete_merge( ). - ENDLOOP. - ENDIF. - - " Conditional formatting node - lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_style_conditional->rule IS INITIAL. - CONTINUE. - ENDIF. - lo_element = lo_document->create_simple_element( name = lc_xml_node_condformatting - parent = lo_document ). - lv_value = lo_style_conditional->get_dimension_range( ) . - lo_element->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - " cfRule node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_cfrule - parent = lo_document ). - lv_value = lo_style_conditional->rule. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = lo_style_conditional->priority. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_priority - value = lv_value ). - - CASE lo_style_conditional->rule. - " Start >> Databar by Albert Lladanosa - WHEN zcl_excel_style_conditional=>c_rule_databar. - - ls_databar = lo_style_conditional->mode_databar. - - CLEAR lt_cfvo. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_databar - parent = lo_document ). - - MOVE ls_databar-cfvo1_value TO ls_cfvo-value. - MOVE ls_databar-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_databar-cfvo2_value TO ls_cfvo-value. - MOVE ls_databar-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_databar-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - " End << Databar by Albert Lladanosa - WHEN zcl_excel_style_conditional=>c_rule_colorscale. - - ls_colorscale = lo_style_conditional->mode_colorscale. - - CLEAR: lt_cfvo, lt_colors. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_colorscale - parent = lo_document ). - - MOVE ls_colorscale-cfvo1_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo2_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo3_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - APPEND ls_colorscale-colorrgb1 TO lt_colors. - APPEND ls_colorscale-colorrgb2 TO lt_colors. - APPEND ls_colorscale-colorrgb3 TO lt_colors. - - LOOP AT lt_cfvo INTO ls_cfvo. - - IF ls_cfvo IS INITIAL. - CONTINUE. - ENDIF. - - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - LOOP AT lt_colors INTO ls_colors. - - IF ls_colors IS INITIAL. - CONTINUE. - ENDIF. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_colors-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - ENDLOOP. - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - WHEN zcl_excel_style_conditional=>c_rule_iconset. - - ls_iconset = lo_style_conditional->mode_iconset. - - CLEAR lt_cfvo. - " iconset node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_iconset - parent = lo_document ). - IF ls_iconset-iconset NE zcl_excel_style_conditional=>c_iconset_3trafficlights. - lv_value = ls_iconset-iconset. - lo_element_3->set_attribute_ns( name = lc_xml_attr_iconset - value = lv_value ). - ENDIF. - - " Set the showValue attribute - lv_value = ls_iconset-showvalue. - lo_element_3->set_attribute_ns( name = lc_xml_attr_showvalue - value = lv_value ). - - CASE ls_iconset-iconset. - WHEN zcl_excel_style_conditional=>c_iconset_3trafficlights2 OR - zcl_excel_style_conditional=>c_iconset_3arrows OR - zcl_excel_style_conditional=>c_iconset_3arrowsgray OR - zcl_excel_style_conditional=>c_iconset_3flags OR - zcl_excel_style_conditional=>c_iconset_3signs OR - zcl_excel_style_conditional=>c_iconset_3symbols OR - zcl_excel_style_conditional=>c_iconset_3symbols2 OR - zcl_excel_style_conditional=>c_iconset_3trafficlights OR - zcl_excel_style_conditional=>c_iconset_3trafficlights2. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_4arrows OR - zcl_excel_style_conditional=>c_iconset_4arrowsgray OR - zcl_excel_style_conditional=>c_iconset_4rating OR - zcl_excel_style_conditional=>c_iconset_4redtoblack OR - zcl_excel_style_conditional=>c_iconset_4trafficlights. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_5arrows OR - zcl_excel_style_conditional=>c_iconset_5arrowsgray OR - zcl_excel_style_conditional=>c_iconset_5quarters OR - zcl_excel_style_conditional=>c_iconset_5rating. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo5_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo5_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN OTHERS. - CLEAR lt_cfvo. - ENDCASE. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - - lo_element_2->append_child( new_child = lo_element_3 ). " iconset node - WHEN zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis = lo_style_conditional->mode_cellis. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_cellis-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - lv_value = ls_cellis-operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_cellis-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - WHEN zcl_excel_style_conditional=>c_rule_expression. - ls_expression = lo_style_conditional->mode_expression. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_expression-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_expression-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - ENDCASE. - - lo_element->append_child( new_child = lo_element_2 ). " cfRule node - - lo_element_root->append_child( new_child = lo_element ). " Conditional formatting node - ENDWHILE. - - IF io_worksheet->get_data_validations_size( ) GT 0. - " dataValidations node - lo_element = lo_document->create_simple_element( name = lc_xml_node_datavalidations - parent = lo_document ). - " Conditional formatting node - lo_iterator = io_worksheet->get_data_validations_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_data_validation ?= lo_iterator->if_object_collection_iterator~get_next( ). - " dataValidation node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_datavalidation - parent = lo_document ). - lv_value = lo_data_validation->type. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - IF NOT lo_data_validation->operator IS INITIAL. - lv_value = lo_data_validation->operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - ENDIF. - IF lo_data_validation->allowblank EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_allowblank - value = lv_value ). - IF lo_data_validation->showinputmessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showinputmessage - value = lv_value ). - IF lo_data_validation->showerrormessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showerrormessage - value = lv_value ). - IF NOT lo_data_validation->errortitle IS INITIAL. - lv_value = lo_data_validation->errortitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_errortitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->error IS INITIAL. - lv_value = lo_data_validation->error. - lo_element_2->set_attribute_ns( name = lc_xml_attr_error - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompttitle IS INITIAL. - lv_value = lo_data_validation->prompttitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompttitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompt IS INITIAL. - lv_value = lo_data_validation->prompt. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompt - value = lv_value ). - ENDIF. - lv_cell_row_s = lo_data_validation->cell_row. - CONDENSE lv_cell_row_s. - CONCATENATE lo_data_validation->cell_column lv_cell_row_s INTO lv_value. - IF lo_data_validation->cell_row_to IS NOT INITIAL. - lv_cell_row_s = lo_data_validation->cell_row_to. - CONDENSE lv_cell_row_s. - CONCATENATE lv_value ':' lo_data_validation->cell_column_to lv_cell_row_s INTO lv_value. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - " formula1 node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula1 - parent = lo_document ). - lv_value = lo_data_validation->formula1. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula1 node - " formula2 node - IF NOT lo_data_validation->formula2 IS INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula2 - parent = lo_document ). - lv_value = lo_data_validation->formula2. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula2 node - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). " dataValidation node - ENDWHILE. - lo_element_root->append_child( new_child = lo_element ). " dataValidations node - ENDIF. - - " Hyperlinks - DATA: lv_hyperlinks_count TYPE i, - lo_link TYPE REF TO zcl_excel_hyperlink. - - lv_hyperlinks_count = io_worksheet->get_hyperlinks_size( ). - IF lv_hyperlinks_count > 0. - lo_element = lo_document->create_simple_element( name = 'hyperlinks' - parent = lo_document ). - - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element_2 = lo_document->create_simple_element( name = 'hyperlink' - parent = lo_element ). - - lv_value = lo_link->get_ref( ). - lo_element_2->set_attribute_ns( name = 'ref' - value = lv_value ). - - IF lo_link->is_internal( ) = abap_true. - lv_value = lo_link->get_url( ). - lo_element_2->set_attribute_ns( name = 'location' - value = lv_value ). - ELSE. - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - - " PrintOptions - IF io_worksheet->print_gridlines = abap_true OR - io_worksheet->sheet_setup->vertical_centered = abap_true OR - io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element = lo_document->create_simple_element( name = 'printOptions' - parent = lo_document ). - - IF io_worksheet->print_gridlines = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_gridlines - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element->set_attribute_ns( name = 'horizontalCentered' - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_centered = abap_true. - lo_element->set_attribute_ns( name = 'verticalCentered' - value = 'true' ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - " pageMargins node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_document ). - - lv_value = io_worksheet->sheet_setup->margin_left. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_left - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_right. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_right - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_top. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_top - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_bottom. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_bottom - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_header. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_header - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_footer. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_footer - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). " pageMargins node - -* pageSetup node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_document ). - - IF io_worksheet->sheet_setup->black_and_white IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_blackandwhite - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->cell_comments IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_cellcomments - value = io_worksheet->sheet_setup->cell_comments ). - ENDIF. - - IF io_worksheet->sheet_setup->copies IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->copies. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_copies - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->draft IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_draft - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->errors IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_errors - value = io_worksheet->sheet_setup->errors ). - ENDIF. - - IF io_worksheet->sheet_setup->first_page_number IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->first_page_number. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_firstpagenumber - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->fit_to_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittoheight - value = lv_value ). - lv_value = io_worksheet->sheet_setup->fit_to_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittowidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->horizontal_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_horizontaldpi - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->orientation IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->orientation. - lo_element->set_attribute_ns( name = lc_xml_attr_orientation - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->page_order IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_pageorder - value = io_worksheet->sheet_setup->page_order ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_height IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperheight - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_size IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_size. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_papersize - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_width IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperwidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->scale IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->scale. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scale - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->use_first_page_num IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_usefirstpagenumber - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->use_printer_defaults IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_useprinterdefaults - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->vertical_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_verticaldpi - value = lv_value ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " pageSetup node - -* { headerFooter necessary? > - IF io_worksheet->sheet_setup->odd_header IS NOT INITIAL - OR io_worksheet->sheet_setup->odd_footer IS NOT INITIAL - OR io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_document ). - - " Different header/footer for odd/even pages? - IF io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_differentoddeven - value = '1' ). - ENDIF. - - " OddHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " OddFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - - lo_element_root->append_child( new_child = lo_element ). " headerFooter - - ENDIF. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_drawing - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute( name = 'r:id' - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -* tables - DATA lv_table_count TYPE i. - - lv_table_count = io_worksheet->get_tables_size( ). - IF lv_table_count > 0. - lo_element = lo_document->create_simple_element( name = 'tableParts' - parent = lo_document ). - lv_value = lv_table_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element_2 = lo_document->create_simple_element( name = 'tablePart' - parent = lo_element ). - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - - ENDIF. - - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - method CREATE_XL_SHEET_RELS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', - lc_xml_val_external TYPE string VALUE 'External', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', - lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_link TYPE REF TO zcl_excel_hyperlink. - - DATA: lv_value TYPE string, - lv_relation_id TYPE i, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_relation_id = 0. - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_link_tp ). - - lv_value = lo_link->get_url( ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_target_mode - value = lc_xml_val_external ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_drawing_tp ). - - lv_index_str = iv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - MOVE me->c_xl_drawings TO lv_value. - REPLACE 'xl' WITH '..' INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_table_tp ). - - lv_value = lo_table->get_name( ). - CONCATENATE '../tables/' lv_value '.xml' INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* IF io_worksheet->get_print_settings( )->is_empty( ) = abap_false. -* ADD 1 TO lv_relation_id. -* lv_value = lv_relation_id. -* CONDENSE lv_value. -* CONCATENATE 'rId' lv_value INTO lv_value. -* -* lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship -* parent = lo_document ). -* lo_element->set_attribute_ns( name = lc_xml_attr_id -* value = lv_value ). -* lo_element->set_attribute_ns( name = lc_xml_attr_type -* value = lc_xml_node_rid_printer_tp ). -* -* lv_index_str = iv_printer_index. -* CONDENSE lv_index_str NO-GAPS. -* MOVE me->c_xl_printersettings TO lv_value. -* REPLACE 'xl' WITH '..' INTO lv_value. -* REPLACE '#' WITH lv_index_str INTO lv_value. -* lo_element->set_attribute_ns( name = lc_xml_attr_target -* value = lv_value ). -* -* lo_element_root->append_child( new_child = lo_element ). -* ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - METHOD create_xl_styles. - - -** Constant node name - CONSTANTS: lc_xml_node_stylesheet TYPE string VALUE 'styleSheet', - " font - lc_xml_node_fonts TYPE string VALUE 'fonts', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - " fill - lc_xml_node_fills TYPE string VALUE 'fills', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - lc_xml_node_gradientfill TYPE string VALUE 'gradientFill', - lc_xml_node_stop TYPE string VALUE 'stop', - " borders - lc_xml_node_borders TYPE string VALUE 'borders', - lc_xml_node_border TYPE string VALUE 'border', - lc_xml_node_left TYPE string VALUE 'left', - lc_xml_node_right TYPE string VALUE 'right', - lc_xml_node_top TYPE string VALUE 'top', - lc_xml_node_bottom TYPE string VALUE 'bottom', - lc_xml_node_diagonal TYPE string VALUE 'diagonal', - " numfmt - lc_xml_node_numfmts TYPE string VALUE 'numFmts', - lc_xml_node_numfmt TYPE string VALUE 'numFmt', - " Styles - lc_xml_node_cellstylexfs TYPE string VALUE 'cellStyleXfs', - lc_xml_node_xf TYPE string VALUE 'xf', - lc_xml_node_cellxfs TYPE string VALUE 'cellXfs', - lc_xml_node_cellstyles TYPE string VALUE 'cellStyles', - lc_xml_node_cellstyle TYPE string VALUE 'cellStyle', - lc_xml_node_dxfs TYPE string VALUE 'dxfs', - lc_xml_node_dxf TYPE string VALUE 'dxf', - lc_xml_node_tablestyles TYPE string VALUE 'tableStyles', - " Colors - lc_xml_node_colors TYPE string VALUE 'colors', - lc_xml_node_indexedcolors TYPE string VALUE 'indexedColors', - lc_xml_node_rgbcolor TYPE string VALUE 'rgbColor', - lc_xml_node_mrucolors TYPE string VALUE 'mruColors', - " Alignment - lc_xml_node_alignment TYPE string VALUE 'alignment', - " Protection - lc_xml_node_protection TYPE string VALUE 'protection', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_position TYPE string VALUE 'position', - lc_xml_attr_degree TYPE string VALUE 'degree', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_attr_numfmtid TYPE string VALUE 'numFmtId', - lc_xml_attr_fontid TYPE string VALUE 'fontId', - lc_xml_attr_fillid TYPE string VALUE 'fillId', - lc_xml_attr_borderid TYPE string VALUE 'borderId', - lc_xml_attr_xfid TYPE string VALUE 'xfId', - lc_xml_attr_applynumberformat TYPE string VALUE 'applyNumberFormat', - lc_xml_attr_applyprotection TYPE string VALUE 'applyProtection', - lc_xml_attr_applyfont TYPE string VALUE 'applyFont', - lc_xml_attr_applyfill TYPE string VALUE 'applyFill', - lc_xml_attr_applyborder TYPE string VALUE 'applyBorder', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_builtinid TYPE string VALUE 'builtinId', - lc_xml_attr_defaulttablestyle TYPE string VALUE 'defaultTableStyle', - lc_xml_attr_defaultpivotstyle TYPE string VALUE 'defaultPivotStyle', - lc_xml_attr_applyalignment TYPE string VALUE 'applyAlignment', - lc_xml_attr_horizontal TYPE string VALUE 'horizontal', - lc_xml_attr_formatcode TYPE string VALUE 'formatCode', - lc_xml_attr_vertical TYPE string VALUE 'vertical', - lc_xml_attr_wraptext TYPE string VALUE 'wrapText', - lc_xml_attr_textrotation TYPE string VALUE 'textRotation', - lc_xml_attr_shrinktofit TYPE string VALUE 'shrinkToFit', - lc_xml_attr_indent TYPE string VALUE 'indent', - lc_xml_attr_locked TYPE string VALUE 'locked', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_diagonalup TYPE string VALUE 'diagonalUp', - lc_xml_attr_diagonaldown TYPE string VALUE 'diagonalDown', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_fonts TYPE REF TO if_ixml_element, - lo_element_font TYPE REF TO if_ixml_element, - lo_element_fills TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_borders TYPE REF TO if_ixml_element, - lo_element_border TYPE REF TO if_ixml_element, - lo_element_numfmts TYPE REF TO if_ixml_element, - lo_element_numfmt TYPE REF TO if_ixml_element, - lo_element_cellxfs TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator2 TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style TYPE REF TO zcl_excel_style. - - - DATA: lt_fonts TYPE zexcel_t_style_font, - ls_font TYPE zexcel_s_style_font, - lt_fills TYPE zexcel_t_style_fill, - ls_fill TYPE zexcel_s_style_fill, - lt_borders TYPE zexcel_t_style_border, - ls_border TYPE zexcel_s_style_border, - lt_numfmts TYPE zexcel_t_style_numfmt, - ls_numfmt TYPE zexcel_s_style_numfmt, - lt_protections TYPE zexcel_t_style_protection, - ls_protection TYPE zexcel_s_style_protection, - lt_alignments TYPE zexcel_t_style_alignment, - ls_alignment TYPE zexcel_s_style_alignment, - lt_cellxfs TYPE zexcel_t_cellxfs, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_styles_mapping TYPE zexcel_s_styles_mapping, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - lt_colors TYPE zexcel_t_style_color_argb, - ls_color LIKE LINE OF lt_colors. - - DATA: lv_value TYPE string, - lv_dfx_count TYPE i, - lv_fonts_count TYPE i, - lv_fills_count TYPE i, - lv_borders_count TYPE i, - lv_cellxfs_count TYPE i, - lv_index TYPE i, - lv_align_flag TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_stylesheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lo_element_fonts = lo_document->create_simple_element( name = lc_xml_node_fonts - parent = lo_document ). - - lo_element_fills = lo_document->create_simple_element( name = lc_xml_node_fills - parent = lo_document ). - - lo_element_borders = lo_document->create_simple_element( name = lc_xml_node_borders - parent = lo_document ). - - lo_element_cellxfs = lo_document->create_simple_element( name = lc_xml_node_cellxfs - parent = lo_document ). - - lo_element_numfmts = lo_document->create_simple_element( name = lc_xml_node_numfmts - parent = lo_document ). - - -* Compress styles - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_font = lo_style->font->get_structure( ). - ls_fill = lo_style->fill->get_structure( ). - ls_border = lo_style->borders->get_structure( ). - ls_alignment = lo_style->alignment->get_structure( ). - ls_protection = lo_style->protection->get_structure( ). - ls_numfmt = lo_style->number_format->get_structure( ). - - CLEAR ls_cellxfs. - - -* Compress fonts - READ TABLE lt_fonts FROM ls_font TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fontid = sy-tabix. - ELSE. - APPEND ls_font TO lt_fonts. - DESCRIBE TABLE lt_fonts LINES ls_cellxfs-fontid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fontid. - -* Compress alignment - READ TABLE lt_alignments FROM ls_alignment TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-alignmentid = sy-tabix. - ELSE. - APPEND ls_alignment TO lt_alignments. - DESCRIBE TABLE lt_alignments LINES ls_cellxfs-alignmentid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - -* Compress fills - READ TABLE lt_fills FROM ls_fill TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fillid = sy-tabix. - ELSE. - APPEND ls_fill TO lt_fills. - DESCRIBE TABLE lt_fills LINES ls_cellxfs-fillid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fillid. - -* Compress borders - READ TABLE lt_borders FROM ls_border TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-borderid = sy-tabix. - ELSE. - APPEND ls_border TO lt_borders. - DESCRIBE TABLE lt_borders LINES ls_cellxfs-borderid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-borderid. - -* Compress protection - IF ls_protection-locked EQ c_on AND ls_protection-hidden EQ c_off. - ls_cellxfs-applyprotection = 0. - ELSE. - READ TABLE lt_protections FROM ls_protection TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-protectionid = sy-tabix. - ELSE. - APPEND ls_protection TO lt_protections. - DESCRIBE TABLE lt_protections LINES ls_cellxfs-protectionid. - ENDIF. - ls_cellxfs-applyprotection = 1. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - -* Compress number formats - - "----------- - IF ls_numfmt-numfmt NE zcl_excel_style_number_format=>c_format_date_std." and ls_numfmt-NUMFMT ne 'STD_NDEC'. " ALE Changes on going - "--- - IF ls_numfmt IS NOT INITIAL. - - READ TABLE lt_numfmts FROM ls_numfmt TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-numfmtid = sy-tabix. - ELSE. - APPEND ls_numfmt TO lt_numfmts. - DESCRIBE TABLE lt_numfmts LINES ls_cellxfs-numfmtid. - ENDIF. - ADD zcl_excel_common=>c_excel_numfmt_offset TO ls_cellxfs-numfmtid. " Add OXML offset for custom styles - ls_cellxfs-applynumberformat = 1. - ELSE. - ls_cellxfs-applynumberformat = 0. - ENDIF. - "----------- " ALE changes on going - ELSE. - ls_cellxfs-applynumberformat = 1. - IF ls_numfmt-numfmt EQ zcl_excel_style_number_format=>c_format_date_std. - ls_cellxfs-numfmtid = 14. -* elseif ls_numfmt-NUMFMT eq 'STD_NDEC'. -* ls_cellxfs-numfmtid = 2. - ENDIF. - ENDIF. - "--- - - IF ls_cellxfs-fontid NE 0. - ls_cellxfs-applyfont = 1. - ELSE. - ls_cellxfs-applyfont = 0. - ENDIF. - IF ls_cellxfs-alignmentid NE 0. - ls_cellxfs-applyalignment = 1. - ELSE. - ls_cellxfs-applyalignment = 0. - ENDIF. - IF ls_cellxfs-fillid NE 0. - ls_cellxfs-applyfill = 1. - ELSE. - ls_cellxfs-applyfill = 0. - ENDIF. - IF ls_cellxfs-borderid NE 0. - ls_cellxfs-applyborder = 1. - ELSE. - ls_cellxfs-applyborder = 0. - ENDIF. - -* Remap styles - READ TABLE lt_cellxfs FROM ls_cellxfs TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_styles_mapping-style = sy-tabix. - ELSE. - APPEND ls_cellxfs TO lt_cellxfs. - DESCRIBE TABLE lt_cellxfs LINES ls_styles_mapping-style. - ENDIF. - SUBTRACT 1 FROM ls_styles_mapping-style. - ls_styles_mapping-guid = lo_style->get_guid( ). - APPEND ls_styles_mapping TO me->styles_mapping. - ENDWHILE. - - " create numfmt elements - LOOP AT lt_numfmts INTO ls_numfmt. - lo_element_numfmt = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_document ). - lv_value = sy-tabix + zcl_excel_common=>c_excel_numfmt_offset. - CONDENSE lv_value. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - lv_value = ls_numfmt-numfmt. -* REPLACE ALL OCCURRENCES OF '.' IN lv_value WITH '\.'. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_formatcode - value = lv_value ). - lo_element_numfmts->append_child( new_child = lo_element_numfmt ). - ENDLOOP. - - " create font elements - LOOP AT lt_fonts INTO ls_font. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz - parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). - - "name - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name - parent = lo_document ). - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family - parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "scheme - IF ls_font-scheme IS NOT INITIAL. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - lo_element_fonts->append_child( new_child = lo_element_font ). - ENDLOOP. - - " create fill elements - LOOP AT lt_fills INTO ls_fill. - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - lo_element_fill->append_child( new_child = lo_sub_element )."pattern - lo_element_fills->append_child( new_child = lo_element_fill ). - ENDLOOP. - - " create border elements - LOOP AT lt_borders INTO ls_border. - lo_element_border = lo_document->create_simple_element( name = lc_xml_node_border - parent = lo_document ). - - IF ls_border-diagonalup IS NOT INITIAL. - lv_value = ls_border-diagonalup. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonalup - value = lv_value ). - ENDIF. - - IF ls_border-diagonaldown IS NOT INITIAL. - lv_value = ls_border-diagonaldown. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonaldown - value = lv_value ). - ENDIF. - - "left - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_left - parent = lo_document ). - IF ls_border-left_style IS NOT INITIAL. - lv_value = ls_border-left_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-left_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "right - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right - parent = lo_document ). - IF ls_border-right_style IS NOT INITIAL. - lv_value = ls_border-right_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-right_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "top - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top - parent = lo_document ). - IF ls_border-top_style IS NOT INITIAL. - lv_value = ls_border-top_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-top_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "bottom - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom - parent = lo_document ). - IF ls_border-bottom_style IS NOT INITIAL. - lv_value = ls_border-bottom_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-bottom_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "diagonal - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal - parent = lo_document ). - IF ls_border-diagonal_style IS NOT INITIAL. - lv_value = ls_border-diagonal_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-diagonal_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - lo_element_borders->append_child( new_child = lo_element_border ). - ENDLOOP. - - " update attribute "count" - DESCRIBE TABLE lt_fonts LINES lv_fonts_count. - MOVE lv_fonts_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fonts->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_fills LINES lv_fills_count. - MOVE lv_fills_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fills->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_borders LINES lv_borders_count. - MOVE lv_borders_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_borders->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_cellxfs LINES lv_cellxfs_count. - MOVE lv_cellxfs_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_cellxfs->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - - " Append to root node - lo_element_root->append_child( new_child = lo_element_numfmts ). - lo_element_root->append_child( new_child = lo_element_fonts ). - lo_element_root->append_child( new_child = lo_element_fills ). - lo_element_root->append_child( new_child = lo_element_borders ). - - " cellstylexfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fontid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fillid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT lt_cellxfs INTO ls_cellxfs. - lo_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - MOVE ls_cellxfs-numfmtid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - MOVE ls_cellxfs-fontid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fontid - value = lv_value ). - MOVE ls_cellxfs-fillid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fillid - value = lv_value ). - MOVE ls_cellxfs-borderid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_borderid - value = lv_value ). - MOVE ls_cellxfs-xfid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_xfid - value = lv_value ). - IF ls_cellxfs-applynumberformat EQ 1. - MOVE ls_cellxfs-applynumberformat TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applynumberformat - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfont EQ 1. - MOVE ls_cellxfs-applyfont TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfont - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfill EQ 1. - MOVE ls_cellxfs-applyfill TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfill - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyborder EQ 1. - MOVE ls_cellxfs-applyborder TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyborder - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyalignment EQ 1. " depends on each style not for all the sheet - MOVE ls_cellxfs-applyalignment TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyalignment - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_alignment - parent = lo_document ). - ADD 1 TO ls_cellxfs-alignmentid. "Table index starts from 1 - READ TABLE lt_alignments INTO ls_alignment INDEX ls_cellxfs-alignmentid. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - IF ls_alignment-horizontal IS NOT INITIAL. - MOVE ls_alignment-horizontal TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_horizontal - value = lv_value ). - ENDIF. - IF ls_alignment-vertical IS NOT INITIAL. - MOVE ls_alignment-vertical TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_vertical - value = lv_value ). - ENDIF. - IF ls_alignment-wraptext EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_wraptext - value = c_on ). - ENDIF. - IF ls_alignment-textrotation IS NOT INITIAL. - MOVE ls_alignment-textrotation TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_textrotation - value = lv_value ). - ENDIF. - IF ls_alignment-shrinktofit EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_shrinktofit - value = c_on ). - ENDIF. - IF ls_alignment-indent IS NOT INITIAL. - MOVE ls_alignment-indent TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indent - value = lv_value ). - ENDIF. - - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_cellxfs-applyprotection EQ 1. - MOVE ls_cellxfs-applyprotection TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_applyprotection - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_protection - parent = lo_document ). - ADD 1 TO ls_cellxfs-protectionid. "Table index starts from 1 - READ TABLE lt_protections INTO ls_protection INDEX ls_cellxfs-protectionid. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - IF ls_protection-locked IS NOT INITIAL. - MOVE ls_protection-locked TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_locked - value = lv_value ). - ENDIF. - IF ls_protection-hidden IS NOT INITIAL. - MOVE ls_protection-hidden TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - lo_element_cellxfs->append_child( new_child = lo_element ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element_cellxfs ). - - " cellStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_cellstyle - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = 'Normal' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xfid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - " dxfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs - parent = lo_document ). - - lo_iterator = me->excel->get_worksheets_iterator( ). - " get sheets - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - " Conditional formatting styles into exch sheet - lo_iterator2 = lo_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator2->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator2->if_object_collection_iterator~get_next( ). - CASE lo_style_conditional->rule. - WHEN zcl_excel_style_conditional=>c_rule_cellis. - "if style defined - ls_cellis = lo_style_conditional->mode_cellis. - IF ls_cellis-cell_style IS INITIAL. - CONTINUE. - ENDIF. - READ TABLE me->styles_mapping INTO ls_styles_mapping WITH KEY guid = ls_cellis-cell_style. - ADD 1 TO ls_styles_mapping-style. " the numbering starts from 0 - READ TABLE lt_cellxfs INTO ls_cellxfs INDEX ls_styles_mapping-style. - ADD 1 TO ls_cellxfs-fillid. " the numbering starts from 0 - - " Style already mapped? - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY style = ls_styles_mapping-style. - IF sy-subrc EQ 0. - ls_style_cond_mapping-guid = ls_cellis-cell_style. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ELSE. - ls_style_cond_mapping-guid = ls_cellis-cell_style. - ls_style_cond_mapping-style = ls_styles_mapping-style. - ls_style_cond_mapping-dxf = lv_dfx_count. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ADD 1 TO lv_dfx_count. - - " dxf node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_dxf - parent = lo_document ). - - "Conditional formatting font style correction by Alessandro Iannacci START - lv_index = ls_cellxfs-fontid + 1. - READ TABLE lt_fonts INTO ls_font INDEX lv_index. - IF ls_font IS NOT INITIAL. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). - lo_sub_element->append_child( new_child = lo_element_font ). - ENDIF. - "---Conditional formatting font style correction by Alessandro Iannacci END - - - READ TABLE lt_fills INTO ls_fill INDEX ls_cellxfs-fillid. - IF ls_fill IS NOT INITIAL. - " fill properties - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - lo_element_fill->append_child( new_child = lo_sub_element_2 ). "pattern - - lo_sub_element->append_child( new_child = lo_element_fill ). - ENDIF. - ENDIF. - - lo_element->append_child( new_child = lo_sub_element ). - WHEN zcl_excel_style_conditional=>c_rule_expression. - "if style defined - ls_expression = lo_style_conditional->mode_expression. - IF ls_expression-cell_style IS INITIAL. - CONTINUE. - ENDIF. - READ TABLE me->styles_mapping INTO ls_styles_mapping WITH KEY guid = ls_expression-cell_style. - ADD 1 TO ls_styles_mapping-style. " the numbering starts from 0 - READ TABLE lt_cellxfs INTO ls_cellxfs INDEX ls_styles_mapping-style. - ADD 1 TO ls_cellxfs-fillid. " the numbering starts from 0 - - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY style = ls_styles_mapping-style. - IF sy-subrc EQ 0. - ls_style_cond_mapping-guid = ls_expression-cell_style. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ELSE. - ls_style_cond_mapping-guid = ls_expression-cell_style. - ls_style_cond_mapping-style = ls_styles_mapping-style. - ls_style_cond_mapping-dxf = lv_dfx_count. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ADD 1 TO lv_dfx_count. - - " dxf node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_dxf - parent = lo_document ). - - READ TABLE lt_fills INTO ls_fill INDEX ls_cellxfs-fillid. - IF ls_fill IS NOT INITIAL. - " fill properties - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - lo_element_fill->append_child( new_child = lo_sub_element_2 ). "pattern - - lo_sub_element->append_child( new_child = lo_element_fill ). - ENDIF. - ENDIF. - - lo_element->append_child( new_child = lo_sub_element ). - WHEN OTHERS. - CONTINUE. - ENDCASE. - ENDWHILE. - ENDWHILE. - - lv_value = lv_dfx_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " tableStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaulttablestyle - value = zcl_excel_table=>builtinstyle_medium9 ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle - value = zcl_excel_table=>builtinstyle_pivot_light16 ). - lo_element_root->append_child( new_child = lo_element ). - - "write legacy color palette in case any indexed color was changed - IF excel->legacy_palette->is_modified( ) = abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_colors - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_indexedcolors - parent = lo_document ). - lo_element->append_child( new_child = lo_sub_element ). - - lt_colors = excel->legacy_palette->get_colors( ). - LOOP AT lt_colors INTO ls_color. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_rgbcolor - parent = lo_document ). - lv_value = ls_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - method CREATE_XL_STYLES_COLOR_NODE. - DATA: lo_sub_element TYPE REF TO if_ixml_element, - lv_value TYPE string. - - CONSTANTS: lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint'. - -"add node only if at least one attribute is set - CHECK is_color-rgb IS NOT INITIAL OR - is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set OR - is_color-theme <> zcl_excel_style_color=>c_theme_not_set OR - is_color-tint IS NOT INITIAL. - - lo_sub_element = io_document->create_simple_element( - name = iv_color_elem_name - parent = io_parent ). - - IF is_color-rgb IS NOT INITIAL. - lv_value = is_color-rgb. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - ENDIF. - - IF is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-indexed ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_indexed - value = lv_value ). - ENDIF. - - IF is_color-theme <> zcl_excel_style_color=>c_theme_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-theme ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_theme - value = lv_value ). - ENDIF. - - IF is_color-tint IS NOT INITIAL. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-tint ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_tint - value = lv_value ). - ENDIF. - - io_parent->append_child( new_child = lo_sub_element ). - endmethod. - - - - - METHOD create_xl_table. - - DATA: lc_xml_node_table TYPE string VALUE 'table', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_display_name TYPE string VALUE 'displayName', - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_totals TYPE string VALUE 'totalsRowShown', - " Node namespace - lc_xml_node_table_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - - lv_table_name TYPE string, - lv_id TYPE i, - lv_match TYPE i, - lv_syindex TYPE char3, - lv_ref TYPE string, - lv_value TYPE string, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_num_columns TYPE i, - ls_fieldcat TYPE zexcel_s_fieldcatalog. - - -********************************************************************** -* STEP 1: Create xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node table - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_table - parent = lo_document ). - - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_table_ns ). - - lv_id = io_table->get_id( ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_id ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - FIND ALL OCCURRENCES OF REGEX '[^_a-zA-Z0-9]' IN io_table->settings-table_name IGNORING CASE MATCH COUNT lv_match. - IF io_table->settings-table_name IS NOT INITIAL AND lv_match EQ 0. - lv_table_name = io_table->settings-table_name. - ELSE. - lv_table_name = io_table->get_name( ). - ENDIF. - lo_element_root->set_attribute_ns( name = lc_xml_attr_name - value = lv_table_name ). - - lo_element_root->set_attribute_ns( name = lc_xml_attr_display_name - value = lv_table_name ). - - lv_ref = io_table->get_reference( ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - IF io_table->has_totals( ) = abap_true. - lo_element_root->set_attribute_ns( name = 'totalsRowCount' - value = '1' ). - ELSE. - lo_element_root->set_attribute_ns( name = lc_xml_attr_totals - value = '0' ). - ENDIF. - -********************************************************************** -* STEP 4: Create subnodes - - " autoFilter - IF io_table->settings-nofilters EQ abap_false. - lo_element = lo_document->create_simple_element( name = 'autoFilter' - parent = lo_document ). - - lv_ref = io_table->get_reference( ip_include_totals_row = abap_false ). - lo_element->set_attribute_ns( name = 'ref' - value = lv_ref ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - "columns - lo_element = lo_document->create_simple_element( name = 'tableColumns' - parent = lo_document ). - -* lo_columns = io_table->get_columns( ). - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - ADD 1 TO lv_num_columns. - ENDLOOP. - - lv_value = lv_num_columns. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - lo_element2 = lo_document->create_simple_element_ns( name = 'tableColumn' - parent = lo_element ). - - lv_value = ls_fieldcat-position. - SHIFT lv_value LEFT DELETING LEADING '0'. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lv_value = ls_fieldcat-scrtext_l. - lo_element2->set_attribute_ns( name = 'name' - value = lv_value ). - - IF ls_fieldcat-totals_function IS NOT INITIAL. - lo_element2->set_attribute_ns( name = 'totalsRowFunction' - value = ls_fieldcat-totals_function ). - ENDIF. - - lo_element->append_child( new_child = lo_element2 ). - ENDLOOP. - - - lo_element = lo_document->create_simple_element( name = 'tableStyleInfo' - parent = lo_element_root ). - - lo_element->set_attribute_ns( name = 'name' - value = io_table->settings-table_style ). - - lo_element->set_attribute_ns( name = 'showFirstColumn' - value = '0' ). - - lo_element->set_attribute_ns( name = 'showLastColumn' - value = '0' ). - - IF io_table->settings-show_row_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showRowStripes' - value = lv_value ). - - IF io_table->settings-show_column_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showColumnStripes' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - method CREATE_XL_THEME. - - -* @TODO * - - DATA: lv_xl_theme TYPE string, - lv_xl_theme_01 TYPE string, - lv_xl_theme_02 TYPE string, - lv_xl_theme_03 TYPE string, - lv_xl_theme_04 TYPE string, - lv_xl_theme_05 TYPE string, - lv_xl_theme_06 TYPE string, - lv_xl_theme_07 TYPE string, - lv_xl_theme_08 TYPE string, - lv_xl_theme_09 TYPE string, - lv_xl_theme_10 TYPE string, - lv_xl_theme_11 TYPE string, - lv_xl_theme_12 TYPE string, - lv_xl_theme_13 TYPE string, - lv_xl_theme_14 TYPE string, - lv_xl_theme_15 TYPE string, - lv_xl_theme_16 TYPE string, - lv_xl_theme_17 TYPE string, - lv_xl_theme_18 TYPE string, - lv_xl_theme_19 TYPE string, - lv_xl_theme_20 TYPE string, - lv_xl_theme_21 TYPE string, - lv_xl_theme_22 TYPE string, - lv_xl_theme_23 TYPE string, - lv_xl_theme_24 TYPE string, - lv_xl_theme_25 TYPE string, - lv_xl_theme_26 TYPE string, - lv_xl_theme_27 TYPE string, - lv_xl_theme_28 TYPE string, - lv_xl_theme_29 TYPE string, - lv_xl_theme_30 TYPE string, - lv_xl_theme_31 TYPE string, - lv_xl_theme_32 TYPE string. - - lv_xl_theme_01 = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'. - lv_xl_theme_02 = '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" '. - lv_xl_theme_03 = 'lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr '. - lv_xl_theme_04 = 'val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink>'. - lv_xl_theme_05 = '<a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_06 = '<a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" '. - lv_xl_theme_07 = 'typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font '. - lv_xl_theme_08 = 'script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" '. - lv_xl_theme_09 = 'typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_10 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_11 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_12 = '<a:font script="Arab" typeface="Arial"/><a:font script="Hebr" '. - lv_xl_theme_13 = 'typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font '. - lv_xl_theme_14 = 'script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font '. - lv_xl_theme_15 = 'script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_16 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_17 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_18 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod '. - lv_xl_theme_19 = 'val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1">'. - lv_xl_theme_20 = '<a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs '. - lv_xl_theme_21 = 'pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" '. - lv_xl_theme_22 = 'algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr '. - lv_xl_theme_23 = 'val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst>'. - lv_xl_theme_24 = '<a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst>'. - lv_xl_theme_25 = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" '. - lv_xl_theme_26 = 'dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig '. - lv_xl_theme_27 = 'rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_28 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade '. - lv_xl_theme_29 = 'val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" '. - lv_xl_theme_30 = 't="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr '. - lv_xl_theme_31 = 'val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme>'. - lv_xl_theme_32 = '</a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>'. - - - CONCATENATE lv_xl_theme_01 lv_xl_theme_02 lv_xl_theme_03 lv_xl_theme_04 lv_xl_theme_05 lv_xl_theme_06 lv_xl_theme_07 lv_xl_theme_08 lv_xl_theme_09 lv_xl_theme_10 lv_xl_theme_11 lv_xl_theme_12 lv_xl_theme_13 lv_xl_theme_14 lv_xl_theme_15 - lv_xl_theme_16 lv_xl_theme_17 lv_xl_theme_18 lv_xl_theme_19 lv_xl_theme_20 lv_xl_theme_21 lv_xl_theme_22 lv_xl_theme_23 lv_xl_theme_24 lv_xl_theme_25 lv_xl_theme_26 lv_xl_theme_27 lv_xl_theme_28 lv_xl_theme_29 lv_xl_theme_30 - lv_xl_theme_31 lv_xl_theme_32 - INTO lv_xl_theme SEPARATED BY space. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - text = lv_xl_theme - IMPORTING - buffer = ep_content. - - - endmethod. - - - - method CREATE_XL_WORKBOOK. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-01 -* changes: correction of pointer to localSheetId -*--------------------------------------------------------------------* - -** Constant node name - DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', - lc_xml_node_fileversion TYPE string VALUE 'fileVersion', - lc_xml_node_workbookpr TYPE string VALUE 'workbookPr', - lc_xml_node_bookviews TYPE string VALUE 'bookViews', - lc_xml_node_workbookview TYPE string VALUE 'workbookView', - lc_xml_node_sheets TYPE string VALUE 'sheets', - lc_xml_node_sheet TYPE string VALUE 'sheet', - lc_xml_node_calcpr TYPE string VALUE 'calcPr', - lc_xml_node_workbookprotection TYPE string VALUE 'workbookProtection', - lc_xml_node_definednames TYPE string VALUE 'definedNames', - lc_xml_node_definedname TYPE string VALUE 'definedName', - " Node attributes - lc_xml_attr_appname TYPE string VALUE 'appName', - lc_xml_attr_lastedited TYPE string VALUE 'lastEdited', - lc_xml_attr_lowestedited TYPE string VALUE 'lowestEdited', - lc_xml_attr_rupbuild TYPE string VALUE 'rupBuild', - lc_xml_attr_themeversion TYPE string VALUE 'defaultThemeVersion', - lc_xml_attr_xwindow TYPE string VALUE 'xWindow', - lc_xml_attr_ywindow TYPE string VALUE 'yWindow', - lc_xml_attr_windowwidth TYPE string VALUE 'windowWidth', - lc_xml_attr_windowheight TYPE string VALUE 'windowHeight', - lc_xml_attr_activetab TYPE string VALUE 'activeTab', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_sheetid TYPE string VALUE 'sheetId', - lc_xml_attr_state TYPE string VALUE 'state', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_calcid TYPE string VALUE 'calcId', - lc_xml_attr_lockrevision TYPE string VALUE 'lockRevision', - lc_xml_attr_lockstructure TYPE string VALUE 'lockStructure', - lc_xml_attr_lockwindows TYPE string VALUE 'lockWindows', - lc_xml_attr_revisionspassword TYPE string VALUE 'revisionsPassword', - lc_xml_attr_workbookpassword TYPE string VALUE 'workbookPassword', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_localsheetid TYPE string VALUE 'localSheetId', - " Node namespace - lc_r_ns TYPE string VALUE 'r', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_range TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator_range TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - - DATA: lv_xml_node_ridx_id TYPE string, - lv_value TYPE string, - lv_syindex TYPE string, - l_guid TYPE uuid, - lv_active_sheet TYPE zexcel_active_worksheet. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_workbook - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnode - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_fileversion - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_appname - value = 'xl' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lastedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lowestedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild - value = '4506' ). - lo_element_root->append_child( new_child = lo_element ). - - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_themeversion - value = '124226' ). - lo_element_root->append_child( new_child = lo_element ). - - " workbookProtection node - IF me->excel->zif_excel_book_protection~protected EQ abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookprotection - parent = lo_document ). - MOVE me->excel->zif_excel_book_protection~workbookpassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_workbookpassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~revisionspassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_revisionspassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~lockrevision TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockrevision - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockstructure TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockstructure - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockwindows TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockwindows - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " bookviews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews - parent = lo_document ). - " bookview node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_workbookview - parent = lo_document ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xwindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_ywindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowwidth - value = '19035' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight - value = '8445' ). - " Set Active Sheet - lv_active_sheet = excel->get_active_sheet_index( ). - IF lv_active_sheet > 1. - lv_active_sheet = lv_active_sheet - 1. - lv_value = lv_active_sheet. - CONDENSE lv_value. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_activetab - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element )." bookview node - lo_element_root->append_child( new_child = lo_element )." bookviews node - - " sheets node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets - parent = lo_document ). - lo_iterator = excel->get_worksheets_iterator( ). - - " ranges node - lo_element_range = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 + - parent = lo_document ). " issue 163 + - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " sheet node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index. " question by Stefan Schmöcker 2012-12-02: sy-index seems to do the job - but is it proven to work or purely coincedence - lv_value = lo_worksheet->get_title( ). - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_sheetid - value = lv_syindex ). - IF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_hidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'hidden' ). - ELSEIF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_veryhidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'veryHidden' ). - ENDIF. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_id - prefix = lc_r_ns - value = lv_xml_node_ridx_id ). - lo_element->append_child( new_child = lo_sub_element ). " sheet node - - " issue 163 >>> - lo_iterator_range = lo_worksheet->get_ranges_iterator( ). - -*--------------------------------------------------------------------* -* Defined names sheetlocal: Ranges, Repeat rows and columns -*--------------------------------------------------------------------* - WHILE lo_iterator_range->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator_range->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - -* lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid "del #235 Repeat rows/cols - EXCEL starts couting from zero -* value = lv_xml_node_ridx_id ). "del #235 Repeat rows/cols - and needs absolute referencing to localSheetId - lv_value = lv_syindex - 1. "ins #235 Repeat rows/cols - CONDENSE lv_value NO-GAPS. "ins #235 Repeat rows/cols - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - " issue 163 <<< - - ENDWHILE. - lo_element_root->append_child( new_child = lo_element )." sheets node - - -*--------------------------------------------------------------------* -* Defined names workbookgolbal: Ranges -*--------------------------------------------------------------------* -* " ranges node -* lo_element = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 - -* parent = lo_document ). " issue 163 - - lo_iterator = excel->get_ranges_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - -*--------------------------------------------------------------------* -* Defined names - Autofilters ( also sheetlocal ) -*--------------------------------------------------------------------* - lo_autofilters = excel->get_autofilters_reference( ). - IF lo_autofilters->is_empty( ) = abap_false. - lo_iterator = excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index - 1 . - l_guid = lo_worksheet->get_guid( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = l_guid ) . - IF lo_autofilter IS BOUND. - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lv_value = lo_autofilters->c_autofilter. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lv_syindex. - CONDENSE lv_value NO-GAPS. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - lv_value = '1'. " Always hidden - lo_sub_element->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - lv_value = lo_autofilter->get_filter_reference( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - ENDIF. - - ENDWHILE. - ENDIF. - lo_element_root->append_child( new_child = lo_element_range ). " ranges node - - - " calcPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_calcid - value = '125725' ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method FLAG2BOOL. - - - IF ip_flag EQ abap_true. - ep_boolean = 'true'. - ELSE. - ep_boolean = 'false'. - ENDIF. - endmethod. - - - - - method GET_SHARED_STRING_INDEX. - - - DATA ls_shared_string TYPE zexcel_s_shared_string. - - READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH. - ep_index = ls_shared_string-string_no. - - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - ep_file = me->create( ). - endmethod. - - - - method CREATE. - -* .csv format with ; delimiter - - ep_excel = me->CREATE_CSV( ). - - endmethod. - - - - method CREATE_CSV. - - TYPES: BEGIN OF lty_format, - cmpname TYPE SEOCMPNAME, - attvalue TYPE SEOVALUE, - END OF lty_format. - DATA: lt_format TYPE STANDARD TABLE OF lty_format, - ls_format LIKE LINE OF lt_format, - lv_date TYPE DATS, - lv_tmp TYPE string, - lv_time TYPE CHAR08. - - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - lv_row TYPE sytabix, - lv_col TYPE sytabix, - lv_string TYPE string, - lc_value TYPE string, - lv_attrname TYPE SEOCMPNAME. - - DATA: ls_numfmt TYPE zexcel_s_style_numfmt, - lo_style TYPE REF TO zcl_excel_style. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - -* --- Retrieve supported cell format - REFRESH lt_format. - SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_format - FROM seocompodf - WHERE clsname = 'ZCL_EXCEL_STYLE_NUMBER_FORMAT' - AND typtype = 1 - AND type = 'ZEXCEL_NUMBER_FORMAT'. - -* --- Retrieve SAP date format - CLEAR ls_format. - SELECT ddtext INTO ls_format-attvalue FROM dd07t WHERE domname = 'XUDATFM' - AND ddlanguage = sy-langu. - ls_format-cmpname = 'DATE'. - CONDENSE ls_format-attvalue. - CONCATENATE '''' ls_format-attvalue '''' INTO ls_format-attvalue. - APPEND ls_format TO lt_format. - ENDSELECT. - - - LOOP AT lt_format INTO ls_format. - TRANSLATE ls_format-attvalue TO UPPER CASE. - MODIFY lt_format FROM ls_format. - ENDLOOP. - - -* STEP 1: Collect strings from the first worksheet - lo_iterator = excel->get_worksheets_iterator( ). - data: current_worksheet_title type ZEXCEL_SHEET_TITLE. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - IF worksheet_name IS NOT INITIAL. - current_worksheet_title = lo_worksheet->get_title( ). - CHECK current_worksheet_title = worksheet_name. - ELSE. - IF worksheet_index IS INITIAL. - worksheet_index = 1. - ENDIF. - CHECK worksheet_index = sy-index. - ENDIF. - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - EXIT. " Take first worksheet only - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - SORT lt_cell_data BY cell_row - cell_column. - lv_row = 1. - lv_col = 1. - CLEAR lv_string. - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - -* --- Retrieve Cell Style format and data type - CLEAR ls_numfmt. - IF <fs_sheet_content>-data_type IS INITIAL AND <fs_sheet_content>-cell_style IS NOT INITIAL. - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_style->get_guid( ) = <fs_sheet_content>-cell_style. - ls_numfmt = lo_style->number_format->get_structure( ). - EXIT. - ENDWHILE. - ENDIF. - IF <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - " determine data-type - CLEAR lv_attrname. - CONCATENATE '''' ls_numfmt-NUMFMT '''' INTO ls_numfmt-NUMFMT. - TRANSLATE ls_numfmt-numfmt TO UPPER CASE. - READ TABLE lt_format INTO ls_format WITH KEY attvalue = ls_numfmt-NUMFMT. - IF sy-subrc = 0. - lv_attrname = ls_format-cmpname. - ENDIF. - - IF lv_attrname IS NOT INITIAL. - FIND FIRST OCCURRENCE OF 'DATETIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'TIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 't'. - ELSE. - FIND FIRST OCCURRENCE OF 'DATE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'CURRENCY' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'NUMBER' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'PERCENTAGE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ENDIF. " Purcentage - ENDIF. " Number - ENDIF. " Currency - ENDIF. " Date - ENDIF. " TIME - ENDIF. " DATETIME - ENDIF. " lv_attrname IS NOT INITIAL. - ENDIF. " <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - -* --- Add empty rows - WHILE lv_row < <fs_sheet_content>-cell_row. -* CONCATENATE lv_string cl_abap_char_utilities=>newline INTO lv_string. -* CONCATENATE lv_string cl_abap_char_utilities=>cr_lf INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>eol INTO lv_string. - lv_row = lv_row + 1. - lv_col = 1. - ENDWHILE. - -* --- Add empty columns - WHILE lv_col < <fs_sheet_content>-cell_column. -* CONCATENATE lv_string ';' INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>delimiter INTO lv_string. - lv_col = lv_col + 1. - ENDWHILE. - -* ----- Use format to determine the data type and display format. - CASE <fs_sheet_content>-data_type. -* WHEN 'n' OR 'N'. -* lc_value = zcl_excel_common=>excel_number_to_string( ip_value = <fs_sheet_content>-cell_value ). - - WHEN 'd' OR 'D'. - lc_value = zcl_excel_common=>excel_string_to_date( ip_value = <fs_sheet_content>-cell_value ). - TRY. - lv_date = lc_value. - CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' - EXPORTING - DATE_INTERNAL = lv_date - IMPORTING - DATE_EXTERNAL = lv_tmp - EXCEPTIONS - DATE_INTERNAL_IS_INVALID = 1 - OTHERS = 2 - . - IF SY-SUBRC = 0. - lc_value = lv_tmp. - ENDIF. - - CATCH CX_SY_CONVERSION_NO_NUMBER. - - ENDTRY. - - WHEN 't' OR 'T'. - lc_value = zcl_excel_common=>excel_string_to_time( ip_value = <fs_sheet_content>-cell_value ). - write lc_value to lv_time USING EDIT MASK '__:__:__'. - lc_value = lv_time. - WHEN OTHERS. - lc_value = <fs_sheet_content>-cell_value. - - ENDCASE. - -* REPLACE ALL OCCURRENCES OF '"' in lc_value with '""'. - CONCATENATE zcl_excel_writer_csv=>enclosure zcl_excel_writer_csv=>enclosure INTO lv_tmp. - CONDENSE lv_tmp. - REPLACE ALL OCCURRENCES OF zcl_excel_writer_csv=>enclosure in lc_value with lv_tmp. - -* FIND FIRST OCCURRENCE OF ';' IN lc_value. - FIND FIRST OCCURRENCE OF zcl_excel_writer_csv=>delimiter IN lc_value. - IF sy-subrc = 0. - CONCATENATE lv_string zcl_excel_writer_csv=>enclosure lc_value zcl_excel_writer_csv=>enclosure INTO lv_string. - ELSE. - CONCATENATE lv_string lc_value INTO lv_string. - ENDIF. - - ENDLOOP. " AT lt_cell_data - - CLEAR ep_content. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - TEXT = lv_string -* MIMETYPE = ' ' -* ENCODING = - IMPORTING - BUFFER = ep_content - EXCEPTIONS - FAILED = 1 - OTHERS = 2 - . - - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX. - CLEAR WORKSHEET_NAME. - WORKSHEET_INDEX = i_active_worksheet. - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX_BY_NAME. - CLEAR WORKSHEET_INDEX. - WORKSHEET_NAME = i_worksheet_name. - endmethod. - - - - method SET_DELIMITER. - delimiter = ip_value. - endmethod. - - - - method SET_ENCLOSURE. - zcl_excel_writer_csv=>enclosure = ip_value. - endmethod. - - - - method SET_ENDOFLINE. - zcl_excel_writer_csv=>eol = ip_value. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - method CREATE. - - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 9: Add vbaProject.bin to zip - lo_zip->add( name = me->c_xl_vbaproject - content = me->excel->zif_excel_book_vba_project~vbaproject ). - -********************************************************************** -* STEP 12: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - method CREATE_CONTENT_TYPES. -** Constant node name - DATA: lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.ms-excel.sheet.macroEnabled.main+xml', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - lc_xml_attr_codename TYPE string VALUE 'codeName', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_bin_ext TYPE string VALUE 'bin', - lc_xml_node_bin_ct TYPE string VALUE 'application/vnd.ms-office.vbaProject'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_contenttype TYPE string, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard contentType - ep_content = super->create_content_types( ). - -********************************************************************** -* STEP 2: modify XML adding the extension bin definition - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_bin_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_bin_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: modify XML changing the contentType of node Override /xl/workbook.xml - - lo_collection = lo_document->get_elements_by_tag_name( 'Override' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lv_contenttype = lo_element->get_attribute_ns( lc_xml_attr_partname ). - IF lv_contenttype EQ lc_xml_node_workb_pn. - lo_element->remove_attribute_ns( lc_xml_attr_contenttype ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - EXIT. - ENDIF. - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - method CREATE_XL_RELATIONSHIPS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_vba_tp TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', - " Node target - lc_xml_node_rid_vba_tg TYPE string VALUE 'vbaProject.bin'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_relationships( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 4 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_vba_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_vba_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - method CREATE_XL_SHEET. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_sheet( io_worksheet = io_worksheet - iv_active = iv_active ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - -* lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). -* lo_iterator = lo_collection->create_iterator( ). -* lo_element ?= lo_iterator->get_next( ). -* WHILE lo_element IS BOUND. -* lo_element->set_attribute_ns( name = lc_xml_attr_codename -* value = me->excel->zif_excel_book_vba_project~codename ). -* lo_element ?= lo_iterator->get_next( ). -* ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'sheetPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = io_worksheet->zif_excel_sheet_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - endmethod. - - - method CREATE_XL_WORKBOOK. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_workbook( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'workbookPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - method IF_MESSAGE~GET_LONGTEXT. - - IF me->error IS NOT INITIAL - OR me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this as longtext as well -*--------------------------------------------------------------------* - result = me->get_text( ). - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - super->if_message~get_longtext( EXPORTING - preserve_newlines = preserve_newlines - RECEIVING - result = result ). - ENDIF. - endmethod. - - - method IF_MESSAGE~GET_TEXT. - - IF me->error IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this -*--------------------------------------------------------------------* - result = me->error . - ELSEIF me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied by syst create messagetext now -*--------------------------------------------------------------------* - MESSAGE ID syst_at_raise-msgid TYPE syst_at_raise-msgty NUMBER syst_at_raise-msgno - WITH syst_at_raise-msgv1 syst_at_raise-msgv2 syst_at_raise-msgv3 syst_at_raise-msgv4 - INTO result. - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - CALL METHOD super->if_message~get_text - RECEIVING - result = result. - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - ranges->add( ip_range ). - endmethod. - - - method CLEAR. - ranges->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT ranges. - - endmethod. - - - - - method GET. - eo_range ?= ranges->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= ranges->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = ranges->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - ranges->remove( ip_range ). - endmethod. - - - - method SIZE. - ep_size = ranges->if_object_collection~size( ). - endmethod. - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - -* Signal "not found" -class lcx_not_found implementation. - method constructor. - super->constructor( textid = textid previous = previous ). - me->error = error. - endmethod. "constructor - method if_message~get_text. - result = error. - endmethod. "if_message~get_text -endclass. "lcx_not_found IMPLEMENTATION - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - -* Signal for "Not found" -class lcx_not_found definition inheriting from cx_static_check. - public section. - data error type string. - methods constructor - importing error type string - textid type sotr_conc optional - previous type ref to cx_root optional. - methods if_message~get_text redefinition. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes -class lcl_test definition deferred. -class zcl_excel_reader_huge_file definition local friends lcl_test. - -* -class lcl_test definition for testing " #AU Risk_Level Harmless - inheriting from cl_aunit_assert. " #AU Duration Short - - private section. - data: - out type ref to zcl_excel_reader_huge_file, " object under test - excel type ref to zcl_excel, - worksheet type ref to zcl_excel_worksheet. - methods: - setup, - test_number for testing, - test_shared_string for testing, - test_shared_string_missing for testing, - test_inline_string for testing, - test_empty_cells for testing, - test_boolean for testing, - test_style for testing, - test_style_missing for testing, - test_formula for testing, - test_read_shared_strings for testing, - test_skip_to_inexistent for testing, - get_reader importing iv_xml type string returning value(eo_reader) type ref to if_sxml_reader, - assert_value_equals importing iv_row type i default 1 iv_col type i default 1 iv_value type string, - assert_formula_equals importing iv_row type i default 1 iv_col type i default 1 iv_formula type string, - assert_style_equals importing iv_row type i default 1 iv_col type i default 1 iv_style type ZEXCEL_CELL_STYLE, - assert_datatype_equals importing iv_row type i default 1 iv_col type i default 1 iv_datatype type string. - -endclass. "lcl_test DEFINITION - -* -class lcl_test implementation. - -* - method test_number. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><v>17</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `17` ). - assert_datatype_equals( `n` ). - endmethod. "test_shared_string - -* - method test_shared_string. - data lo_reader type ref to if_sxml_reader. - append `Test1` to out->shared_strings. - append `Test2` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Test2` ). - assert_datatype_equals( `s` ). - endmethod. "test_shared_string -* - method test_shared_string_missing. - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `Test` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Index to non-existent shared string should give an error`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. -* - method test_inline_string. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Alpha` ). - assert_datatype_equals( `inlineStr` ). - endmethod. "test_inline_string - -* - method test_boolean. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="b"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `1` ). - assert_datatype_equals( `b` ). - endmethod. "test_boolean - -* - method test_formula. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><f>A2*A2</f></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_formula_equals( `A2*A2` ). - assert_datatype_equals( `n` ). - endmethod. "test_formula - -* - method test_empty_cells. - -* There is no need to store an empty cell in the ABAP worksheet structure - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `` to out->shared_strings. - append `t` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>0</v></c>` && - `<c r="A2" t="inlineStr"><is><t></t></is></c>` && - `<c r="A3" t="s"><v>1</v></c>` - ). - - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). - - endmethod. - -* - method test_style. - data: - lo_reader type ref to if_sxml_reader, - lo_style type ref to zcl_excel_style, - lv_guid type ZEXCEL_CELL_STYLE. - create object lo_style. - append lo_style to out->styles. - lv_guid = lo_style->get_guid( ). - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_style_equals( lv_guid ). - - endmethod. "test_style - -* - method test_style_missing. - - data: - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Reference to non-existent style should throw an lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. "test_style - -* - method test_read_shared_strings. - data: lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. - lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( - `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - ) ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `Bravo` to lt_exp. - - lt_act = out->read_shared_strings( lo_reader ). - - assert_equals( act = lt_act - exp = lt_exp ). - - endmethod. - -* - method test_skip_to_inexistent. - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( - `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - ) ). - try. - out->skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ). - fail(`Skipping to non-existing element must raise lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " May inspect exception text in debugger - endtry. - endmethod. - -* - method get_reader. - data: lv_full type string. - concatenate `<root><sheetData><row>` iv_xml `</row></sheetData></root>` into lv_full. - eo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( lv_full ) ). - endmethod. "get_reader -* - method assert_value_equals. - - constants: lc_empty_string type string value is initial. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data, - <lv_value> type string. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - if sy-subrc eq 0. - assign <ls_cell_data>-cell_value to <lv_value>. - else. - assign lc_empty_string to <lv_value>. - endif. - - assert_equals( act = <lv_value> - exp = iv_value ). - - endmethod. "assert_value_equals -** - method assert_formula_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_formula - exp = iv_formula ). - - endmethod. "assert_formula_equals -* - method assert_style_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_style - exp = iv_style ). - - endmethod. -* - method assert_datatype_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-data_type - exp = iv_datatype ). - - endmethod. "assert_datatype_equals - method setup. - create object out. - create object excel. - create object worksheet - exporting - ip_excel = excel. - endmethod. "setup -endclass. "lcl_test IMPLEMENTATION - - - - - - - - - - - - - - - - method FILL_CELL_FROM_ATTRIBUTES. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_attribute( ). - if io_reader->node_type ne c_attribute. - exit. - endif. - case io_reader->name. - when `t`. - es_cell-datatype = io_reader->value. - when `s`. - if io_reader->value is not initial. - es_cell-style = get_style( io_reader->value ). - endif. - when `r`. - es_cell-coord = get_cell_coord( io_reader->value ). - endcase. - endwhile. - -endmethod. - - - - - method GET_CELL_COORD. - - zcl_excel_common=>convert_columnrow2column_a_row( - exporting - i_columnrow = iv_coord - importing - e_column = es_coord-column - e_row = es_coord-row - ). - -endmethod. - - - - - - method GET_SHARED_STRING. - data: lv_tabix type i. - lv_tabix = iv_index + 1. - read table shared_strings into ev_value index lv_tabix. - if sy-subrc ne 0. - raise exception type lcx_not_found - exporting - error = |Entry { iv_index } not found in Shared String Table|. - endif. -endmethod. - - - - - - method GET_STYLE. - - data: lv_tabix type i, - lo_style type ref to zcl_excel_style. - - if gs_buffer_style-index ne iv_index. - lv_tabix = iv_index + 1. - read table styles into lo_style index lv_tabix. - if sy-subrc ne 0. - raise exception type lcx_not_found - exporting - error = |Entry { iv_index } not found in Style Table|. - else. - gs_buffer_style-index = iv_index. - gs_buffer_style-guid = lo_style->get_guid( ). - endif. - endif. - - ev_style_guid = gs_buffer_style-guid. - -endmethod. - - - - - - method GET_SXML_READER. - - data: lv_xml type xstring. - - lv_xml = get_from_zip_archive( iv_path ). - eo_reader = cl_sxml_string_reader=>create( lv_xml ). - -endmethod. - - - method LOAD_SHARED_STRINGS. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - shared_strings = read_shared_strings( lo_reader ). - -endmethod. - - - method LOAD_WORKSHEET. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - read_worksheet_data( io_reader = lo_reader - io_worksheet = io_worksheet ). - -endmethod. - - - - - method PUT_CELL_TO_WORKSHEET. - check is_cell-value is not initial - or is_cell-formula is not initial - or is_cell-style is not initial. - call method io_worksheet->set_cell - exporting - ip_column = is_cell-column - ip_row = is_cell-row - ip_value = is_cell-value - ip_formula = is_cell-formula - ip_data_type = is_cell-datatype - ip_style = is_cell-style. -endmethod. - - - - - method READ_SHARED_STRINGS. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - if io_reader->node_type eq c_element_close and - io_reader->name eq `t`. - append io_reader->value to et_shared_strings. - endif. - endwhile. - -endmethod. - - - - - - method READ_WORKSHEET_DATA. - - data: ls_cell type t_cell. - -* Skip to <sheetData> element - skip_to( iv_element_name = `sheetData` io_reader = io_reader ). - -* Main loop: Evaluate the <c> elements and its children - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - case io_reader->node_type. - when c_element_open. - if io_reader->name eq `c`. - ls_cell = fill_cell_from_attributes( io_reader ). - endif. - when c_node_value. - case io_reader->name. - when `f`. - ls_cell-formula = io_reader->value. - when `v`. - if ls_cell-datatype eq `s`. - ls_cell-value = get_shared_string( io_reader->value ). - else. - ls_cell-value = io_reader->value. - endif. - when `t` or `is`. - ls_cell-value = io_reader->value. - endcase. - when c_element_close. - case io_reader->name. - when `c`. - put_cell_to_worksheet( is_cell = ls_cell io_worksheet = io_worksheet ). - when `sheetData`. - exit. - endcase. - endcase. - endwhile. - -endmethod. - - - - - - method SKIP_TO. - -* Skip forward to given element - while io_reader->name ne iv_element_name or - io_reader->node_type ne c_element_open. - io_reader->next_node( ). - if io_reader->node_type = c_end_of_stream. - raise exception type lcx_not_found - exporting - error = |XML error: Didn't find element <{ iv_element_name }>|. - endif. - endwhile. - - -endmethod. - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS zcl_tc_excel DEFINITION DEFERRED. -CLASS zcl_excel DEFINITION LOCAL FRIENDS zcl_tc_excel. - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel DEFINITION FOR TESTING - DURATION SHORT - RISK LEVEL HARMLESS -. -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>zcl_Tc_Excel -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - f_cut TYPE REF TO zcl_excel. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. - METHODS: create_empty_excel FOR TESTING. - -ENDCLASS. "zcl_Tc_Excel - - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel IMPLEMENTATION. -* ================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - -*// START TEST METHODS - - METHOD create_empty_excel. -* ================================== - - DATA: lv_count TYPE i. - lv_count = f_cut->get_worksheets_size( ). - - cl_abap_unit_assert=>assert_equals( act = lv_count - exp = 1 - msg = 'Testing number of sheet' - level = if_aunit_constants=>tolerable ). - ENDMETHOD. "create_empty_excel - -*// END TEST METHODS - - -ENDCLASS. "zcl_Tc_Excel - - - - - - - - - - - - - - - METHOD zif_excel_book_properties~initialize. - DATA: lv_timestamp TYPE timestampl. - - me->zif_excel_book_properties~application = 'Microsoft Excel'. - me->zif_excel_book_properties~appversion = '12.0000'. - - GET TIME STAMP FIELD lv_timestamp. - me->zif_excel_book_properties~created = lv_timestamp. - me->zif_excel_book_properties~creator = sy-uname. - me->zif_excel_book_properties~description = zcl_excel=>version. - me->zif_excel_book_properties~modified = lv_timestamp. - me->zif_excel_book_properties~lastmodifiedby = sy-uname. -ENDMETHOD. - - - method ZIF_EXCEL_BOOK_PROTECTION~INITIALIZE. - me->zif_excel_book_protection~protected = zif_excel_book_protection=>c_unprotected. - me->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_unlocked. - CLEAR me->zif_excel_book_protection~workbookpassword. - CLEAR me->zif_excel_book_protection~revisionspassword. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME. - me->zif_excel_book_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_book_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_VBAPROJECT. - me->zif_excel_book_vba_project~vbaproject = ip_vbaproject. - endmethod. - - - - - method ADD_NEW_AUTOFILTER. -* Check for autofilter reference: new or overwrite; only one per sheet - ro_autofilter = autofilters->add( io_sheet = io_sheet ) . - endmethod. - - - - - - method ADD_NEW_DRAWING. - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_drawing - EXPORTING - ip_type = ip_type - ip_title = ip_title. - - CASE ip_type. - WHEN 'image'. - drawings->add( eo_drawing ). - WHEN 'chart'. - charts->add( eo_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - method ADD_NEW_STYLE. -* Start of deletion # issue 139 - Dateretention of cellstyles -* CREATE OBJECT eo_style. -* styles->add( eo_style ). -* End of deletion # issue 139 - Dateretention of cellstyles -* Start of insertion # issue 139 - Dateretention of cellstyles -* Create default style - CREATE OBJECT eo_style - EXPORTING - ip_guid = ip_guid. - styles->add( eo_style ). - - DATA: style2 TYPE zexcel_s_stylemapping. -* Copy to new representations - style2 = stylemapping_dynamic_style( eo_style ). - INSERT style2 INTO TABLE t_stylemapping1. - INSERT style2 INTO TABLE t_stylemapping2. -* End of insertion # issue 139 - Dateretention of cellstyles - - endmethod. - - - - - - method ADD_NEW_WORKSHEET. - DATA: lv_guid TYPE guid_16. - -* Create default blank worksheet - CREATE OBJECT eo_worksheet - EXPORTING - ip_excel = me - ip_title = ip_title. - - worksheets->add( eo_worksheet ). - worksheets->active_worksheet = worksheets->size( ). - endmethod. - - - method ADD_STATIC_STYLES. - " # issue 139 -* sp#ƒÂ¤ter hier noch die Worksheets abklappern, welche Styles #ƒÂ#berhaupt noch ben#ƒÂ#tigt werden -* und nur diese dann auch hier zur Verf#ƒÂ#gung stellen -* Da muss ich noch mal nachfragen, ob die beiden ersten Styles, die scheinbar immer mit dem -* EXCEL-Objekt erzeugt werden evtl. immer ben#ƒÂ#tigt werden, egal ob verwendet oder nicht -* Aber als Start fange ich mal an einfach alle static styles der Reihe nach hinzuzuf#ƒÂ#gen - FIELD-SYMBOLS: <style1> LIKE LINE OF t_stylemapping1, - <style2> LIKE LINE OF t_stylemapping2. - DATA: style TYPE REF TO zcl_excel_style. - - LOOP AT me->t_stylemapping1 ASSIGNING <style1> WHERE added_to_iterator IS INITIAL. - READ TABLE me->t_stylemapping2 ASSIGNING <style2> WITH TABLE KEY guid = <style1>-guid. - CHECK sy-subrc = 0. " Should always be true since these tables are being filled parallel - - style = me->add_new_style( <style1>-guid ). - - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <style1>-complete_style - i_sourcex = <style1>-complete_stylex - CHANGING e_target = style ). - - ENDLOOP. - endmethod. - - - method CONSTRUCTOR. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style. - -* Inizialize instance objects - CREATE OBJECT security. - CREATE OBJECT worksheets. - CREATE OBJECT ranges. - CREATE OBJECT styles. - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - CREATE OBJECT legacy_palette. - CREATE OBJECT autofilters. - - me->zif_excel_book_protection~initialize( ). - me->zif_excel_book_properties~initialize( ). - - me->add_new_worksheet( ). - me->add_new_style( ). " Standard style - lo_style = me->add_new_style( ). " Standard style with fill gray125 - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_pattern_gray125. - - endmethod. - - - - method GET_ACTIVE_SHEET_INDEX. - r_active_worksheet = me->worksheets->active_worksheet. - endmethod. - - - - method GET_ACTIVE_WORKSHEET. - - eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). - - endmethod. - - - - method GET_AUTOFILTERS_REFERENCE. - - ro_autofilters = autofilters. - - endmethod. - - - - method GET_DEFAULT_STYLE. - ep_style = me->default_style. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = me->drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = me->charts->get_iterator( ). - WHEN OTHERS. - ENDCASE. - - endmethod. - - - - method GET_NEXT_TABLE_ID. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_tables_count TYPE i. - - lo_iterator = me->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_tables_count = lo_worksheet->get_tables_size( ). - ADD lv_tables_count TO ep_id. - - ENDWHILE. - - ADD 1 TO ep_id. - - endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - - method GET_STATIC_CELLSTYLE_GUID. -" # issue 139 - DATA: style LIKE LINE OF me->t_stylemapping1. - - READ TABLE me->t_stylemapping1 INTO style - WITH TABLE KEY dynamic_style_guid = style-guid " no dynamic style --> look for initial guid here - complete_style = ip_cstyle_complete - complete_stylex = ip_cstylex_complete. - IF sy-subrc <> 0. - style-complete_style = ip_cstyle_complete. - style-complete_stylex = ip_cstylex_complete. - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = style-guid. - INSERT style INTO TABLE me->t_stylemapping1. - INSERT style INTO TABLE me->t_stylemapping2. - - ENDIF. - - ep_guid = style-guid. - endmethod. - - - - method GET_STYLES_ITERATOR. - - eo_iterator = me->styles->get_iterator( ). - - endmethod. - - - - - - method GET_STYLE_INDEX_IN_STYLES. - DATA: index TYPE syindex. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style TYPE REF TO zcl_excel_style. - - CHECK ip_guid IS NOT INITIAL. - - - lo_iterator = me->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) = 'X'. - ADD 1 TO index. - lo_style ?= lo_iterator->get_next( ). - IF lo_style->get_guid( ) = ip_guid. - ep_index = index. - EXIT. - ENDIF. - ENDWHILE. - - IF ep_index IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index not found'. - else. - SUBTRACT 1 from ep_index. " In excel list starts with "0" - ENDIF. - endmethod. - - - - - - method GET_STYLE_TO_GUID. - " # issue 139 - - READ TABLE me->t_stylemapping2 INTO ep_stylemapping WITH TABLE KEY guid = ip_guid. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'GUID not found'. - ENDIF. - - IF ep_stylemapping-dynamic_style_guid IS NOT INITIAL. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = ep_stylemapping-cl_style - CHANGING e_target = ep_stylemapping-complete_style - e_targetx = ep_stylemapping-complete_stylex ). - ENDIF. - - - endmethod. - - - - method GET_WORKSHEETS_ITERATOR. - - eo_iterator = me->worksheets->get_iterator( ). - - endmethod. - - - - method GET_WORKSHEETS_NAME. - - ep_name = me->worksheets->name. - - endmethod. - - - - method GET_WORKSHEETS_SIZE. - - ep_size = me->worksheets->size( ). - - endmethod. - - - - - method GET_WORKSHEET_BY_NAME. - - DATA: lv_index TYPE zexcel_active_worksheet, - l_size TYPE i. - - l_size = get_worksheets_size( ). - - DO l_size TIMES. - lv_index = sy-index. - eo_worksheet = me->worksheets->get( lv_index ). - IF eo_worksheet->get_title( ) = ip_sheet_name. - RETURN. - ENDIF. - ENDDO. - - CLEAR eo_worksheet. - - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX. - me->worksheets->active_worksheet = i_active_worksheet. - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX_BY_NAME. - - DATA: ws_it TYPE REF TO cl_object_collection_iterator, - ws TYPE REF TO zcl_excel_worksheet, - lv_title TYPE ZEXCEL_SHEET_TITLE, - count TYPE i VALUE 1. - - ws_it = me->worksheets->get_iterator( ). - - WHILE ws_it->if_object_collection_iterator~has_next( ) = abap_true. - ws ?= ws_it->if_object_collection_iterator~get_next( ). - lv_title = ws->get_title( ). - IF lv_title = i_worksheet_name. - me->worksheets->active_worksheet = count. - EXIT. - ENDIF. - count = count + 1. - ENDWHILE. - - endmethod. - - - - - method SET_DEFAULT_STYLE. - me->default_style = ip_style. - endmethod. - - - - - method STYLEMAPPING_DYNAMIC_STYLE. -" # issue 139 - eo_style2-dynamic_style_guid = ip_style->get_guid( ). - eo_style2-guid = eo_style2-dynamic_style_guid. - eo_style2-added_to_iterator = abap_true. - eo_style2-cl_style = ip_style. - -* don't care about attributes here, since this data may change -* dynamically - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method CONSTRUCTOR. - worksheet = io_sheet. - endmethod. - - - - method GET_FILTER_AREA. - - validate_area( ). - - rs_area = filter_area. - - endmethod. - - - - method GET_FILTER_RANGE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - - CONCATENATE l_col_start_c l_row_start_c ':' l_col_end_c l_row_end_c INTO r_range. - - endmethod. - - - - method GET_FILTER_REFERENCE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - l_value = worksheet->get_title( ) . - - r_ref = zcl_excel_common=>escape_string( ip_value = l_value ). - - CONCATENATE r_ref '!$' l_col_start_c '$' l_row_start_c ':$' l_col_end_c '$' l_row_end_c INTO r_ref. - - endmethod. - - - - method GET_VALUES. - - rt_filter = values. - - endmethod. - - - - method SET_FILTER_AREA. - - filter_area = is_area. - - endmethod. - - - - - method SET_VALUE. - DATA: ls_values TYPE zexcel_s_autofilter_values. - -* Checks a re missing. - ls_values-column = i_column. - ls_values-value = i_value. - - INSERT ls_values INTO TABLE values. -* Now we need to be sure we don't get the same value again. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. - - endmethod. - - - - method SET_VALUES. - -* Checks are missing. - values = it_values. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. - - endmethod. - - - method VALIDATE_AREA. - DATA: l_col TYPE zexcel_cell_column, - l_row TYPE zexcel_cell_row. - - l_row = worksheet->get_highest_row( ) . - l_col = worksheet->get_highest_column( ) . - - IF filter_area IS INITIAL. - filter_area-row_start = 1. - filter_area-col_start = 1. - filter_area-row_end = l_row . - filter_area-col_end = l_col . - ENDIF. - - IF filter_area-row_start < 1. - filter_area-row_start = 1. - ENDIF. - IF filter_area-col_start < 1. - filter_area-col_start = 1. - ENDIF. - IF filter_area-row_end > l_row OR - filter_area-row_end < 1. - filter_area-row_end = l_row. - ENDIF. - IF filter_area-col_end > l_col OR - filter_area-col_end < 1. - filter_area-col_end = l_col. - ENDIF. - IF filter_area-row_start >= filter_area-row_end. - filter_area-row_start = filter_area-row_end - 1. - IF filter_area-row_start < 1. - filter_area-row_start = 1. - filter_area-row_end = 2. - ENDIF. - ENDIF. - IF filter_area-col_start > filter_area-col_end. - filter_area-col_start = filter_area-col_end. - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_objects, - sheet_guid TYPE uuid, - autofilter TYPE REF TO zcl_excel_autofilter, - END OF ts_objects, - - tt_objects TYPE HASHED TABLE OF ts_objects WITH UNIQUE KEY sheet_guid. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - method ADD. - DATA: ls_autofilters TYPE ts_objects, - l_guid TYPE uuid. - l_guid = io_sheet->get_guid( ) . - READ TABLE autofilters INTO ls_autofilters WITH TABLE KEY sheet_guid = l_guid. - IF sy-subrc = 0. - ro_autofilter = ls_autofilters-autofilter. - ELSE. - CREATE OBJECT ro_autofilter - EXPORTING - io_sheet = io_sheet. - ls_autofilters-autofilter = ro_autofilter. - ls_autofilters-sheet_guid = l_guid. - INSERT ls_autofilters INTO TABLE autofilters . - ENDIF. - endmethod. - - - method CLEAR. - - REFRESH autofilters. - - endmethod. - - - - - method GET. - - DATA: ls_autofilters TYPE ts_objects. - - READ TABLE autofilters INTO ls_autofilters WITH TABLE KEY sheet_guid = i_sheet_guid. - IF sy-subrc = 0. - ro_autofilter = ls_autofilters-autofilter. - ELSE. - CLEAR ro_autofilter. - ENDIF. - - endmethod. - - - - method IS_EMPTY. - IF autofilters IS INITIAL. - r_empty = abap_true. - ENDIF. - endmethod. - - - - method REMOVE. - DATA: ls_autofilters TYPE ts_objects. - - DELETE autofilters WHERE sheet_guid = i_sheet_guid. - - endmethod. - - - - method SIZE. - DESCRIBE TABLE autofilters LINES r_size. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS lcl_excel_common_test DEFINITION DEFERRED. -CLASS zcl_excel_common DEFINITION LOCAL FRIENDS lcl_excel_common_test. - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmless - . "#AU Duration Short -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>lcl_Excel_Common_Test -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL_COMMON -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - lx_excel TYPE REF TO zcx_excel, - ls_symsg_act TYPE symsg, " actual messageinformation of exception - ls_symsg_exp TYPE symsg, " expected messageinformation of exception - f_cut TYPE REF TO zcl_excel_common. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. -* METHODS: char2hex FOR TESTING. - METHODS: convert_column2alpha FOR TESTING. - METHODS: convert_column2int FOR TESTING. - METHODS: date_to_excel_string FOR TESTING. - METHODS: encrypt_password FOR TESTING. - METHODS: excel_string_to_date FOR TESTING. - METHODS: excel_string_to_time FOR TESTING. -* METHODS: number_to_excel_string FOR TESTING. - METHODS: time_to_excel_string FOR TESTING. - METHODS: split_file FOR TESTING. - METHODS: convert_range2column_a_row FOR TESTING. - METHODS: describe_structure FOR TESTING. - METHODS: calculate_cell_distance FOR TESTING. - METHODS: shift_formula FOR TESTING. -ENDCLASS. "lcl_Excel_Common_Test - - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test IMPLEMENTATION. -* =========================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - - - METHOD convert_column2alpha. -* ============================ - DATA ep_column TYPE zexcel_cell_column_alpha. - -* Test 1. Simple test - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 1 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column for OXML #16,384 = XFD - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16384 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'XFD' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 0 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum index 0 is out of bounds, min column index is 1' - level = if_aunit_constants=>fatal - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16385 ). - - zcl_excel_common=>assert_differs( - act = ep_column - exp = 'XFE' - msg = 'Colum index 16385 is out of bounds, max column index is 16384' - level = if_aunit_constants=>fatal - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "convert_Column2alpha - - - METHOD convert_column2int. -* ========================== - DATA ep_column TYPE zexcel_cell_column. - -* Test 1. Basic test - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'A' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 1 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFD' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 16384 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( '' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = '0' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - CLEAR: ls_symsg_act, - ls_symsg_exp. - ls_symsg_exp-msgid = 'ZABAP2XLSX'. - ls_symsg_exp-msgno = '800'. - ls_symsg_act-msgid = lx_excel->syst_at_raise-msgid. - ls_symsg_act-msgno = lx_excel->syst_at_raise-msgno. - zcl_excel_common=>assert_equals( act = ls_symsg_act - exp = ls_symsg_exp - msg = 'Colum name should be a valid string' - level = if_aunit_constants=>fatal ). - ENDTRY. - -* Test 4. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFE' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = 16385 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum XFE is out of range' - level = if_aunit_constants=>fatal ). - ENDTRY. - ENDMETHOD. "convert_Column2int - - - METHOD date_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000101' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 1 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000228' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 59 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000301' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 61 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '99991212' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 2958446 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - DATA: lv_date TYPE d. - ep_value = zcl_excel_common=>date_to_excel_string( lv_date ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - DATA exp_value TYPE zexcel_cell_value VALUE 0. - ep_value = zcl_excel_common=>date_to_excel_string( '18991231' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = exp_value - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Dates prior of 1900 are not available in excel' - level = if_aunit_constants=>critical - ). - ENDTRY. - - ENDMETHOD. "date_To_Excel_String - - - METHOD encrypt_password. -* ======================== - DATA lv_encrypted_pwd TYPE zexcel_aes_password. - - TRY. - lv_encrypted_pwd = zcl_excel_common=>encrypt_password( 'test' ). - - zcl_excel_common=>assert_equals( - act = lv_encrypted_pwd - exp = 'CBEB' - msg = 'Wrong password encryption' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - ENDMETHOD. "encrypt_Password - - - METHOD excel_string_to_date. -* ============================ - DATA ep_value TYPE d. - - -* Test 1. Simple test -> ABAP Manage also date prior of 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '18991231' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '59' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000228' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '61' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000301' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000101' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958446' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958447' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '00000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Date - - - METHOD excel_string_to_time. -* ============================ - DATA ep_value TYPE t. - -* Test 1. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0.99999' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '235959' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Also string greater than 1 should be managed - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '4.1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '022400' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. string is not a number - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( 'NaN' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Unable to interpret time' - msg = 'Time should be a valid string' - level = if_aunit_constants=>fatal - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Time - - - METHOD time_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000001' ). - " A test directly in Excel returns the value 0.0000115740740740741000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.0000115740740741' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '235959' ). - " A test directly in Excel returns the value 0.9999884259259260000000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.9999884259259260' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000000' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '022400' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.1000000000000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - ENDMETHOD. "time_To_Excel_String - - METHOD split_file. -* ============================ - - DATA: ep_file TYPE text255, - ep_extension TYPE char10, - ep_dotextension TYPE char10. - - -* Test 1. Basic conversion - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename.xml' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = 'xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '.xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - -* Test 2. no extension - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "split_file - - METHOD convert_range2column_a_row. - DATA: lv_range TYPE string. - DATA: lv_column_start TYPE zexcel_cell_column_alpha, - lv_column_end TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row, - lv_sheet TYPE string. - -* a) input empty --> nothing to do - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 - lv_range = `'Sheet 1'!$B$6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet 1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 - lv_range = `Sheet1!B6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* d) no sheetname - just area example $B$6:$D$13 - lv_range = `$B$6:D13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - ENDMETHOD. "convert_range2column_a_row - - - METHOD describe_structure. - DATA: ls_test TYPE scarr. - DATA: lo_structdescr TYPE REF TO cl_abap_structdescr. - DATA: lt_structure TYPE ddfields. - FIELD-SYMBOLS: <line> LIKE LINE OF lt_structure. - - " Test with DDIC Type - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_test ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'MANDT' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - " Test with local defined structure having DDIC and non DDIC elements - TYPES: - BEGIN OF t_test, - carrid TYPE s_carr_id, - carrname TYPE s_carrname, - carrdesc TYPE string, - END OF t_test. - DATA: ls_ttest TYPE t_test. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_ttest ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'CARRID' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "describe_structure - - - METHOD calculate_cell_distance. - DATA: lv_offset_rows TYPE i, - lv_offset_cols TYPE i, - lv_message TYPE string. - - DEFINE macro_calculate_cell_distance. - zcl_excel_common=>calculate_cell_distance( exporting iv_reference_cell = &1 - iv_current_cell = &2 - importing ev_row_difference = lv_offset_rows - ev_col_difference = lv_offset_cols ). -* Check delta columns - concatenate 'Error calculating column difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_cols - exp = &3 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). -* Check delta rows - concatenate 'Error calculating row difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_rows - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - END-OF-DEFINITION. - - - macro_calculate_cell_distance: - 'C12' 'C12' 0 0 , " Same cell - 'C12' 'C13' 0 1 , " Shift down 1 place - 'C12' 'C25' 0 13 , " Shift down some places - 'C12' 'C11' 0 -1 , " Shift up 1 place - 'C12' 'C1' 0 -11 , " Shift up some place - 'C12' 'D12' 1 0 , " Shift right 1 place - 'C12' 'AA12' 24 0 , " Shift right some places - 'C12' 'B12' -1 0 , " Shift left 1 place - 'AA12' 'C12' -24 0 , " Shift left some place - 'AA121' 'C12' -24 -109 . " The full package. - - ENDMETHOD. "CALCULATE_CELL_DISTANCE - - METHOD shift_formula. - DATA: lv_resulting_formula TYPE string, - lv_message TYPE string, - lv_counter TYPE num8. - - DEFINE macro_shift_formula. - add 1 to lv_counter. - clear lv_resulting_formula. - try. - lv_resulting_formula = zcl_excel_common=>shift_formula( iv_reference_formula = &1 - iv_shift_cols = &2 - iv_shift_rows = &3 ). - concatenate 'Wrong result in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - catch zcx_excel. - concatenate 'Unexpected exception occurred in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - endtry. - END-OF-DEFINITION. - -* Test shifts that should result in a valid output - macro_shift_formula: - 'C17' 0 0 'C17', " Very basic check - 'C17' 2 3 'E20', " Check shift right and down - 'C17' -2 -3 'A14', " Check shift left and up - '$C$17' 1 1 '$C$17', " Fixed columns/rows - 'SUM($C17:C$23)+C30' 1 11 'SUM($C28:D$23)+D41', " Operators and Ranges, mixed fixed rows or columns - 'RNGNAME1+C7' -1 -4 'RNGNAME1+B3', " Operators and Rangename - '"Date:"&TEXT(B2)' 1 1 '"Date:"&TEXT(C3)', " String literals and string concatenation - '[TEST6.XLSX]SHEET1!A1' 1 11 '[TEST6.XLSX]SHEET1!B12', " External sheet reference - `X(B13, "KK" ) ` 1 1 `X(C14,"KK")`, " superflous blanks, multi-argument functions, literals in function, unknown functions -* 'SIN((((((B2))))))' 1 1 'SIN((((((C3))))))', " Deep nesting -* 'SIN(SIN(SIN(SIN(E22))))' 0 1 'SIN(SIN(SIN(SIN(E23))))', " Different type of deep nesting - `SIN(SIN(SIN(SIN(E22))))` 0 1 'SIN(SIN(SIN(SIN(E23))))', " same as above - but with string input instead of Char-input - 'HEUTE()' 2 5 'HEUTE()', " Functions w/o arguments, No cellreferences - '"B2"' 2 5 '"B2"', " No cellreferences - '' 2 5 '', " Empty - 'A1+$A1+A$1+$A$1+B2' -1 0 '#REF!+$A1+#REF!+$A$1+A2', " Referencing error , column only , underflow - 'A1+$A1+A$1+$A$1+B2' 0 -1 '#REF!+#REF!+A$1+$A$1+B1', " Referencing error , row only , underflow - 'A1+$A1+A$1+$A$1+B2' -1 -1 '#REF!+#REF!+#REF!+$A$1+A1'. " Referencing error , row and column , underflow - ENDMETHOD. "SHIFT_FORMULA - - - - - -ENDCLASS. "lcl_Excel_Common_Test - - - - - - - - - - - - - - - - ABAP - - - - - - - - - - - - - - - - - - method ASSERT_DIFFERS. - DATA: ls_seoclass TYPE seoclass. - -" Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -" Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -endmethod. - - - - - - - - - - - METHOD assert_equals. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -ENDMETHOD. - - - - - - - - METHOD calculate_cell_distance. - - DATA: lv_reference_row TYPE i, - lv_reference_col_alpha TYPE zexcel_cell_column_alpha, - lv_reference_col TYPE i, - lv_current_row TYPE i, - lv_current_col_alpha TYPE zexcel_cell_column_alpha, - lv_current_col TYPE i. - -*--------------------------------------------------------------------* -* Split reference cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_reference_cell - IMPORTING - e_column = lv_reference_col_alpha - e_row = lv_reference_row ). - lv_reference_col = convert_column2int( lv_reference_col_alpha ). - -*--------------------------------------------------------------------* -* Split current cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_current_cell - IMPORTING - e_column = lv_current_col_alpha - e_row = lv_current_row ). - lv_current_col = convert_column2int( lv_current_col_alpha ). - -*--------------------------------------------------------------------* -* Calculate row and column difference -* Positive: Current cell below reference cell -* or Current cell right of reference cell -* Negative: Current cell above reference cell -* or Current cell left of reference cell -*--------------------------------------------------------------------* - ev_row_difference = lv_current_row - lv_reference_row. - ev_col_difference = lv_current_col - lv_reference_col. - -ENDMETHOD. - - - - - method CHAR2HEX. - - IF o_conv IS NOT BOUND. - o_conv = cl_abap_conv_out_ce=>create( endian = 'L' - ignore_cerr = abap_true - replacement = '#' ). - ENDIF. - - CALL METHOD o_conv->reset( ). - CALL METHOD o_conv->write( data = i_char ). - r_hex+1 = o_conv->get_buffer( ). " x'65' must be x'0065' - -endmethod. - - - - - - METHOD convert_column2alpha. - - DATA: lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - -* Propagate zcx_excel if error occurs " issue #155 - less restrictive typing for ip_column - lv_column = convert_column2int( ip_column ). " issue #155 - less restrictive typing for ip_column - -*--------------------------------------------------------------------* -* Check whether column is in allowed range for EXCEL to handle ( 1-16384 ) -*--------------------------------------------------------------------* - IF lv_column > 16384 - OR lv_column < 1. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDIF. - -*--------------------------------------------------------------------* -* Build alpha representation of column -*--------------------------------------------------------------------* - WHILE lv_column GT 0. - - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - - ENDWHILE. - -ENDMETHOD. - - - - - - METHOD convert_column2int. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-29 -* - ... -* changes: renaming variables to naming conventions -* removing unused variables -* removing commented out code that is inactive for more then half a year -* message made to support multilinguality -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#246 - error converting lower case column names -* - Stefan Schmöcker, 2012-12-29 -* changes: translating the correct variable to upper dase -* adding missing exception if input is a number -* that is out of bounds -* adding missing exception if input contains -* illegal characters like german umlauts -*--------------------------------------------------------------------* - - DATA: lv_column TYPE zexcel_cell_column_alpha, - lv_column_c TYPE char10, - lv_column_s TYPE string, - lv_errormessage TYPE string, " Can't pass '...'(abc) to exception-class - lv_modulo TYPE i. - -*--------------------------------------------------------------------* -* This module tries to identify which column a user wants to access -* Numbers as input are just passed back, anything else will be converted -* using EXCEL nomenclatura A = 1, AA = 27, ..., XFD = 16384 -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Normalize input ( upper case , no gaps ) -*--------------------------------------------------------------------* - lv_column_c = ip_column. -* TRANSLATE lv_column TO UPPER CASE. " Fix #246 - TRANSLATE lv_column_c TO UPPER CASE. " Fix #246 - CONDENSE lv_column_c NO-GAPS. - IF lv_column_c EQ ''. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* If a number gets passed, just convert it to an integer and return -* the converted value -*--------------------------------------------------------------------* - TRY. - IF lv_column_c CO '1234567890 '. " Fix #164 - ep_column = lv_column_c. " Fix #164 -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - EXIT. - ENDIF. - CATCH cx_sy_conversion_no_number. "#EC NO_HANDLER - " Try the character-approach if approach via number has failed - ENDTRY. - -*--------------------------------------------------------------------* -* Raise error if unexpected characters turns up -*--------------------------------------------------------------------* - lv_column_s = lv_column_c. - IF lv_column_s CN sy-abcde. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* Interpret input as number to base 26 with A=1, ... Z=26 -* Raise error if unexpected character turns up -*--------------------------------------------------------------------* -* 1st character -*--------------------------------------------------------------------* - lv_column = lv_column_c. - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+0(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = lv_modulo. " Leftmost digit - -*--------------------------------------------------------------------* -* 2nd character if present -*--------------------------------------------------------------------* - CHECK lv_column+1(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+1(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if second digit is present first digit is for 26^1 - -*--------------------------------------------------------------------* -* 3rd character if present -*--------------------------------------------------------------------* - CHECK lv_column+2(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+2(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if third digit is present first digit is for 26^2 and second digit for 26^1 - -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -ENDMETHOD. - - - - - - method CONVERT_COLUMNROW2COLUMN_A_ROW. -*--------------------------------------------------------------------* - "issue #256 - replacing char processing with regex -*--------------------------------------------------------------------* -* Stefan Schmöcker, 2013-08-11 -* Allow input to be CLIKE instead of STRING -*--------------------------------------------------------------------* - - DATA: pane_cell_row_a TYPE string, - lv_columnrow type string. - - lv_columnrow = i_columnrow. " Get rid of trailing blanks - - FIND REGEX '^(\D+)(\d+)$' IN lv_columnrow SUBMATCHES e_column - pane_cell_row_a. - e_row = pane_cell_row_a. - -endmethod. - - - - - - - - - - method CONVERT_RANGE2COLUMN_A_ROW. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* added exceptionclass -* added errorhandling for invalid range -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#241 - error when sheetname contains "!" -* - sheetname should be returned unescaped -* - Stefan Schmöcker, 2012-12-07 -* changes: changed coding to support sheetnames with "!" -* unescaping sheetname -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-07 -* changes: i_range changed to clike -* e_sheet changed to clike -*--------------------------------------------------------------------* - - DATA: lv_sheet TYPE string, - lv_range TYPE string, - lv_columnrow_start TYPE string, - lv_columnrow_end TYPE string, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Split input range into sheetname and Area -* 4 cases - a) input empty --> nothing to do -* - b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 -* - c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 -* - d) no sheetname - just area example $B$6:$D$13 -*--------------------------------------------------------------------* -* Initialize output parameters - CLEAR: e_column_start, - e_column_end, - e_row_start, - e_row_end, - e_sheet. - - IF i_range IS INITIAL. " a) input empty --> nothing to do - EXIT. - - ELSEIF i_range(1) = `'`. " b) sheetname existing - starts with ' - FIND REGEX '\![^\!]*$' IN i_range MATCH OFFSET sy-fdpos. " Find last ! - IF sy-subrc = 0. - lv_sheet = i_range(sy-fdpos). - ADD 1 TO sy-fdpos. - lv_range = i_range. - SHIFT lv_range LEFT BY sy-fdpos PLACES. - ELSE. - lv_errormessage = 'Invalid range'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ELSEIF i_range CS '!'. " c) sheetname existing - does not start with ' - SPLIT i_range AT '!' INTO lv_sheet lv_range. - - ELSE. " d) no sheetname - just area - lv_range = i_range. - ENDIF. - - REPLACE ALL OCCURRENCES OF '$' IN lv_range WITH ''. - SPLIT lv_range AT ':' INTO lv_columnrow_start lv_columnrow_end. - - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_start - IMPORTING - e_column = e_column_start - e_row = e_row_start ). - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_end - IMPORTING - e_column = e_column_end - e_row = e_row_end ). - - e_sheet = unescape_string( lv_sheet ). " Return in unescaped form -endmethod. - - - - - method DATE_TO_EXCEL_STRING. - DATA: lv_date_diff TYPE i. - - CHECK ip_value IS NOT INITIAL. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ip_value > c_excel_1900_leap_year. - lv_date_diff = ip_value - c_excel_baseline_date + 2. - ELSE. - lv_date_diff = ip_value - c_excel_baseline_date + 1. - ENDIF. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_date_diff ). -endmethod. - - - - - method DESCRIBE_STRUCTURE. - DATA: lt_components TYPE abap_component_tab, - lt_comps TYPE abap_component_tab, - lo_struct TYPE REF TO cl_abap_structdescr, - ls_component TYPE abap_componentdescr, - lo_elemdescr TYPE REF TO cl_abap_elemdescr, - ls_dfies TYPE dfies, - l_position TYPE tabfdpos. - - "for DDIC structure get the info directly - IF io_struct->is_ddic_type( ) = abap_true. - rt_dfies = io_struct->get_ddic_field_list( ). - ELSE. - lt_components = io_struct->get_components( ). - - LOOP AT lt_components INTO ls_component. - structure_case( EXPORTING is_component = ls_component - CHANGING xt_components = lt_comps ) . - ENDLOOP. - LOOP AT lt_comps INTO ls_component. - CLEAR ls_dfies. - IF ls_component-type->kind = cl_abap_typedescr=>kind_elem. "E Elementary Type - ADD 1 TO l_position. - lo_elemdescr ?= ls_component-type. - IF lo_elemdescr->is_ddic_type( ) = abap_true. - ls_dfies = lo_elemdescr->get_ddic_field( ). - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ELSE. - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ls_dfies-inttype = lo_elemdescr->type_kind. - ls_dfies-leng = lo_elemdescr->length. - ls_dfies-outputlen = lo_elemdescr->length. - ls_dfies-decimals = lo_elemdescr->decimals. - ls_dfies-fieldtext = ls_component-name. - ls_dfies-reptext = ls_component-name. - ls_dfies-scrtext_s = ls_component-name. - ls_dfies-scrtext_m = ls_component-name. - ls_dfies-scrtext_l = ls_component-name. - ls_dfies-dynpfld = abap_true. - ENDIF. - INSERT ls_dfies INTO TABLE rt_dfies. - ENDIF. - ENDLOOP. - ENDIF. -endmethod. - - - - - - - - METHOD determine_resulting_formula. - - DATA: lv_row_difference TYPE i, - lv_col_difference TYPE i. - -*--------------------------------------------------------------------* -* Calculate distance of reference and current cell -*--------------------------------------------------------------------* - calculate_cell_distance( EXPORTING - iv_reference_cell = iv_reference_cell - iv_current_cell = iv_current_cell - IMPORTING - ev_row_difference = lv_row_difference - ev_col_difference = lv_col_difference ). - -*--------------------------------------------------------------------* -* and shift formula by using the row- and columndistance -*--------------------------------------------------------------------* - ev_resulting_formula = shift_formula( iv_reference_formula = iv_reference_formula - iv_shift_rows = lv_row_difference - iv_shift_cols = lv_col_difference ). - -ENDMETHOD. "determine_resulting_formula - - - - - method ENCRYPT_PASSWORD. - - DATA lv_curr_offset TYPE i. - DATA lv_curr_char TYPE c LENGTH 1. - DATA lv_curr_hex TYPE zexcel_pwd_hash. - DATA lv_pwd_len TYPE zexcel_pwd_hash. - DATA lv_pwd_hash TYPE zexcel_pwd_hash. - - CONSTANTS: - lv_0x7fff TYPE zexcel_pwd_hash VALUE '7FFF', - lv_0x0001 TYPE zexcel_pwd_hash VALUE '0001', - lv_0xce4b TYPE zexcel_pwd_hash VALUE 'CE4B'. - - DATA lv_pwd TYPE zexcel_aes_password. - - lv_pwd = i_pwd(15). - - lv_pwd_len = STRLEN( lv_pwd ). - lv_curr_offset = lv_pwd_len - 1. - - WHILE lv_curr_offset GE 0. - - lv_curr_char = lv_pwd+lv_curr_offset(1). - lv_curr_hex = char2hex( lv_curr_char ). - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex. - SUBTRACT 1 FROM lv_curr_offset. - ENDWHILE. - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b. - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len. - - WRITE lv_pwd_hash TO r_encrypted_pwd. - -endmethod. - - - - - method ESCAPE_STRING. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-08 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#242 - Support escaping for white-spaces -* - Escaping also necessary when ' encountered in input -* - Stefan Schmöcker, 2012-12-08 -* changes: switched check if escaping is necessary to regular expression -* and moved the "REPLACE" -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-08 -* changes: ip_value changed to clike -*--------------------------------------------------------------------* - DATA: lv_value TYPE string. - -*--------------------------------------------------------------------* -* There exist various situations when a space will be used to separate -* different parts of a string. When we have a string consisting spaces -* that will cause errors unless we "escape" the string by putting ' at -* the beginning and at the end of the string. -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -* Now any remaining spaces ( white-spaces or normal spaces ) should -* trigger the escaping as well as any ' -*--------------------------------------------------------------------* - lv_value = ip_value. - - - FIND REGEX `\s|'` IN lv_value. " \s finds regular and white spaces - IF sy-subrc = 0. - REPLACE ALL OCCURRENCES OF `'` IN lv_value WITH `''`. - CONCATENATE `'` lv_value `'` INTO lv_value . - ENDIF. - - ep_escaped_value = lv_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_DATE. - DATA: lv_date_int TYPE i. - - TRY. - lv_date_int = ip_value. - ep_value = lv_date_int + c_excel_baseline_date - 2. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ep_value < c_excel_1900_leap_year. - ep_value = ep_value + 1. - ENDIF. - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDTRY. -endmethod. - - - - - - method EXCEL_STRING_TO_TIME. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_seconds_in_day TYPE i VALUE 86400. - - TRY. - - lv_day_fraction = ip_value. - lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day. - - ep_value = lv_seconds_in_day. - - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret time'. - ENDTRY. -endmethod. - - - - - - - method FAIL. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. - -endmethod. - - - - - method GET_FIELDCATALOG. - DATA: lr_dref_tab TYPE REF TO data, - lo_salv_table TYPE REF TO cl_salv_table, - lo_salv_columns_table TYPE REF TO cl_salv_columns_table, - lt_salv_t_column_ref TYPE salv_t_column_ref, - ls_salv_t_column_ref LIKE LINE OF lt_salv_t_column_ref, - lo_salv_column_table TYPE REF TO cl_salv_column_table. - - FIELD-SYMBOLS: <tab> TYPE STANDARD TABLE. - FIELD-SYMBOLS: <fcat> LIKE LINE OF ep_fieldcatalog. - -* Get copy of IP_TABLE-structure <-- must be changeable to create salv - CREATE DATA lr_dref_tab LIKE ip_table. - ASSIGN lr_dref_tab->* TO <tab>. -* Create salv --> implicitly create fieldcat - TRY. - cl_salv_table=>factory( IMPORTING - r_salv_table = lo_salv_table - CHANGING - t_table = <tab> ). - lo_salv_columns_table = lo_salv_table->get_columns( ). - lt_salv_t_column_ref = lo_salv_columns_table->get( ). - CATCH cx_root. -* maybe some errorhandling here - just haven't made up my mind yet - ENDTRY. - -* Loop through columns and set relevant fields ( fieldname, texts ) - LOOP AT lt_salv_t_column_ref INTO ls_salv_t_column_ref. - - lo_salv_column_table ?= ls_salv_t_column_ref-r_column. - APPEND INITIAL LINE TO ep_fieldcatalog ASSIGNING <fcat>. - <fcat>-position = sy-tabix. - <fcat>-fieldname = ls_salv_t_column_ref-columnname. - <fcat>-scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ). - <fcat>-scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ). - <fcat>-scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ). - - <fcat>-dynpfld = 'X'. " What in the world would we exclude here? - IF <fcat>-position = 1. " except for the MANDT-field of most tables ( 1st column that is ) - IF lo_salv_column_table->get_ddic_datatype( ) = 'CLNT'. - CLEAR <fcat>-dynpfld. - ENDIF. - ENDIF. - -* For fields that don't a description ( i.e. defined by "field type i," ) -* just use the fieldname as description - that is better than nothing - IF <fcat>-scrtext_s IS INITIAL - AND <fcat>-scrtext_m IS INITIAL - AND <fcat>-scrtext_l IS INITIAL. - CONCATENATE 'Col:' <fcat>-fieldname INTO <fcat>-scrtext_l SEPARATED BY space. - <fcat>-scrtext_m = <fcat>-scrtext_l. - <fcat>-scrtext_s = <fcat>-scrtext_l. - ENDIF. - - ENDLOOP. - -endmethod. - - - - - method NUMBER_TO_EXCEL_STRING. - DATA: lv_value_c TYPE c LENGTH 100. - - WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN. - REPLACE ALL OCCURRENCES OF ',' IN lv_value_c WITH '.'. - - ep_value = lv_value_c. - CONDENSE ep_value. - - IF ip_value < 0. - CONCATENATE '-' ep_value INTO ep_value. - ELSEIF ip_value EQ 0. - ep_value = '0'. - ENDIF. -endmethod. - - - - - - method RECURSIVE_CLASS_TO_STRUCT. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any. - - - descr ?= cl_abap_structdescr=>describe_by_data( e_target ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_targetx TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CLEAR flag_class. -* maybe source is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'i_source->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0. - EXIT. - ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursio -* IF flag_class = abap_true. -** Only borders will be passed as unbound references. But since we want to set a value we have to create an instance -* ENDIF. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = <attribute> - CHANGING e_target = <field> - e_targetx = <fieldx> ). - WHEN OTHERS. - <field> = <attribute>. - <fieldx> = abap_true. - - ENDCASE. - ENDLOOP. - -endmethod. - - - - - - method RECURSIVE_STRUCT_TO_CLASS. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any, - <attribute_s> TYPE ANY TABLE. - - - descr ?= cl_abap_structdescr=>describe_by_data( i_source ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_sourcex TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CHECK <fieldx> CA abap_true. - CLEAR flag_class. -* maybe target is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'E_TARGET->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0.EXIT.ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursion - IF flag_class = abap_true AND <attribute> IS INITIAL. -* Only borders will be passed as unbound references. But since we want to set a value we have to create an instance - CREATE OBJECT o_border. - <attribute> = o_border. - ENDIF. - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <field> - i_sourcex = <fieldx> - CHANGING e_target = <attribute> ). -* WHEN cl_abap_structdescr=>typekind_struct2. " String -* CHECK <fieldx> = abap_true. " Marked for change -* <attribute_s> = <field>. - WHEN OTHERS. - CHECK <fieldx> = abap_true. " Marked for change - <attribute> = <field>. - - ENDCASE. - ENDLOOP. - -endmethod. - - - - - - - - METHOD shift_formula. - - CONSTANTS: lcv_operators TYPE string VALUE '+-/*^%=<>&, !', - lcv_letters TYPE string VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$', - lcv_digits TYPE string VALUE '0123456789', - lcv_cell_reference_error TYPE string VALUE '#REF!'. - - DATA: lv_tcnt TYPE i, " Counter variable - lv_tlen TYPE i, " Temp variable length - lv_cnt TYPE i, " Counter variable - lv_cnt2 TYPE i, " Counter variable - lv_offset1 TYPE i, " Character offset - lv_numchars TYPE i, " Number of characters counter - lv_tchar(1) TYPE c, " Temp character - lv_tchar2(1) TYPE c, " Temp character - lv_cur_form(132) TYPE c, " Formula for current cell - lv_ref_cell_addr TYPE string, " Reference cell address - lv_tcol1 TYPE string, " Temp column letter - lv_tcol2 TYPE string, " Temp column letter - lv_tcoln TYPE i, " Temp column number - lv_trow1 TYPE string, " Temp row number - lv_trow2 TYPE string, " Temp row number - lv_flen TYPE i, " Length of reference formula - lv_tlen2 TYPE i, " Temp variable length - lv_substr1 TYPE string, " Substring variable - lv_abscol TYPE string, " Absolute column symbol - lv_absrow TYPE string, " Absolute row symbol - - lv_errormessage TYPE string. - - FIELD-SYMBOLS: <find_my_include> TYPE ANY. - -*--------------------------------------------------------------------* -* When copying a cell in EXCEL to another cell any inherent formulas -* are copied as well. Cell-references in the formula are being adjusted -* by the distance of the new cell to the original one -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -* §2 Identify Cell-references -* §3 Shift cell-reference -* §4 Build resulting formula -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* No distance --> Reference = resulting cell/formula -*--------------------------------------------------------------------* - IF iv_shift_cols = 0 - AND iv_shift_rows = 0. - ev_resulting_formula = iv_reference_formula. - EXIT. " done - ENDIF. - - - lv_flen = STRLEN( iv_reference_formula ). - lv_numchars = 1. - -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -*--------------------------------------------------------------------* - DO lv_flen TIMES. - - CLEAR: lv_tchar, - lv_substr1, - lv_ref_cell_addr. - lv_cnt2 = lv_cnt + 1. - IF lv_cnt2 > lv_flen. - EXIT. " Done - ENDIF. - -*--------------------------------------------------------------------* -* Here we have the current character in the formula -*--------------------------------------------------------------------* - lv_tchar = iv_reference_formula+lv_cnt(1). - -*--------------------------------------------------------------------* -* Operators or opening parenthesis will separate possible cellreferences -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators - OR lv_tchar CA '(' ) - AND lv_cnt2 = 1. - lv_substr1 = iv_reference_formula+lv_offset1(1). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - -*--------------------------------------------------------------------* -* Quoted literal text holds no cell reference --> advance to end of text -*--------------------------------------------------------------------* - IF lv_tchar EQ '"'. - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - WHILE lv_tchar NE '"'. - - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - - ENDWHILE. - lv_cnt2 = lv_cnt + 1. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - IF lv_cnt = lv_flen. - EXIT. - ENDIF. - lv_offset1 = lv_cnt. - lv_numchars = 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - lv_cnt2 = lv_cnt + 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - -*--------------------------------------------------------------------* -* Operators or parenthesis or last character in formula will separate possible cellreferences -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA '():' - OR lv_cnt2 = lv_flen. - IF lv_cnt > 0. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). -*--------------------------------------------------------------------* -* Check for text concatenation and functions -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators AND lv_tchar EQ lv_substr1 ) OR lv_tchar EQ '('. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - lv_tlen = lv_cnt2 - lv_offset1. -*--------------------------------------------------------------------* -* Exclude mathematical operators and closing parentheses -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - IF lv_cnt2 = lv_flen - AND lv_numchars = 1. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ELSE. - lv_tlen = lv_tlen - 1. - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -* Capture reference cell address -*--------------------------------------------------------------------* - TRY. - MOVE: iv_reference_formula+lv_offset1(lv_tlen) TO lv_ref_cell_addr. "Ref cell address - CATCH cx_root. - lv_errormessage = 'Internal error in Class ZCL_EXCEL_COMMON Method SHIFT_FORMULA Spot 1 '. " Change to messageclass if possible - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - -*--------------------------------------------------------------------* -* Split cell address into characters and numbers -*--------------------------------------------------------------------* - CLEAR: lv_tlen, - lv_tcnt, - lv_tcol1, - lv_trow1. - lv_tlen = STRLEN( lv_ref_cell_addr ). - IF lv_tlen <> 0. - CLEAR: lv_tcnt. - DO lv_tlen TIMES. - CLEAR: lv_tchar2. - lv_tchar2 = lv_ref_cell_addr+lv_tcnt(1). - IF lv_tchar2 CA lcv_letters. - CONCATENATE lv_tcol1 lv_tchar2 INTO lv_tcol1. - ELSEIF lv_tchar2 CA lcv_digits. - CONCATENATE lv_trow1 lv_tchar2 INTO lv_trow1. - ENDIF. - lv_tcnt = lv_tcnt + 1. - ENDDO. - ENDIF. -*--------------------------------------------------------------------* -* Check for invalid cell address -*--------------------------------------------------------------------* - IF lv_tcol1 IS INITIAL OR lv_trow1 IS INITIAL. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for range names -*--------------------------------------------------------------------* - CLEAR: lv_tlen. - lv_tlen = STRLEN( lv_tcol1 ). - IF lv_tlen GT 3. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for valid row -*--------------------------------------------------------------------* - IF lv_trow1 GT 1048576. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for absolute column or row reference -*--------------------------------------------------------------------* - CLEAR: lv_tcol2, - lv_trow2, - lv_abscol, - lv_absrow. - lv_tlen2 = STRLEN( lv_tcol1 ) - 1. - IF lv_tcol1 IS NOT INITIAL. - lv_abscol = lv_tcol1(1). - ENDIF. - IF lv_tlen2 GE 0. - lv_absrow = lv_tcol1+lv_tlen2(1). - ENDIF. - IF lv_abscol EQ '$' AND lv_absrow EQ '$'. - lv_tlen2 = lv_tlen2 - 1. - IF lv_tlen2 > 0. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ENDIF. - lv_tlen2 = lv_tlen2 + 1. - ELSEIF lv_abscol EQ '$'. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ELSEIF lv_absrow EQ '$'. - lv_tcol1 = lv_tcol1(lv_tlen2). - ENDIF. -*--------------------------------------------------------------------* -* Check for valid column -*--------------------------------------------------------------------* - TRY. - lv_tcoln = zcl_excel_common=>convert_column2int( lv_tcol1 ) + iv_shift_cols. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. -*--------------------------------------------------------------------* -* Check whether there is a referencing problem -*--------------------------------------------------------------------* - lv_trow2 = lv_trow1 + iv_shift_rows. - IF ( lv_tcoln < 1 AND lv_abscol <> '$' ) " Maybe we should add here max-column and max row-tests as well. - OR ( lv_trow2 < 1 AND lv_absrow <> '$' ). " Check how EXCEL behaves in this case -*--------------------------------------------------------------------* -* Referencing problem encountered --> set error -*--------------------------------------------------------------------* - CONCATENATE lv_cur_form lcv_cell_reference_error INTO lv_cur_form. - ELSE. -*--------------------------------------------------------------------* -* No referencing problems --> adjust row and column -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Adjust column -*--------------------------------------------------------------------* - IF lv_abscol EQ '$'. - CONCATENATE lv_cur_form lv_abscol lv_tcol1 INTO lv_cur_form. - ELSEIF iv_shift_cols EQ 0. - CONCATENATE lv_cur_form lv_tcol1 INTO lv_cur_form. - ELSE. - TRY. - lv_tcol2 = zcl_excel_common=>convert_column2alpha( lv_tcoln ). - CONCATENATE lv_cur_form lv_tcol2 INTO lv_cur_form. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* Adjust row -*--------------------------------------------------------------------* - IF lv_absrow EQ '$'. - CONCATENATE lv_cur_form lv_absrow lv_trow1 INTO lv_cur_form. - ELSEIF iv_shift_rows = 0. - CONCATENATE lv_cur_form lv_trow1 INTO lv_cur_form. -* elseif lv_trow2 < 1. -* CONCATENATE lv_cur_form lc_cell_reference_error INTO lv_cur_form. - ELSE. - CONCATENATE lv_cur_form lv_trow2 INTO lv_cur_form. - ENDIF. - ENDIF. - - lv_numchars = 0. - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - CONCATENATE lv_cur_form lv_tchar INTO lv_cur_form. - ENDIF. - lv_offset1 = lv_cnt2. - ENDIF. - ENDIF. - lv_numchars = lv_numchars + 1. - lv_cnt = lv_cnt + 1. - lv_cnt2 = lv_cnt + 1. - - ENDDO. - - - -*--------------------------------------------------------------------* -* Return resulting formula -*--------------------------------------------------------------------* - IF lv_cur_form IS NOT INITIAL. - MOVE lv_cur_form TO ev_resulting_formula. - ENDIF. - -ENDMETHOD. - - - - - method SHL01. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i VALUE 2, - lv_prev_pos TYPE i VALUE 1. - - DO 15 TIMES. - GET BIT lv_curr_pos OF i_pwd_hash INTO lv_bit. - SET BIT lv_prev_pos OF r_pwd_hash TO lv_bit. - ADD 1 TO lv_curr_pos. - ADD 1 TO lv_prev_pos. - ENDDO. - SET BIT 16 OF r_pwd_hash TO 0. - -endmethod. - - - - - method SHR14. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i, - lv_next_pos TYPE i. - - r_pwd_hash = i_pwd_hash. - - DO 14 TIMES. - lv_curr_pos = 15. - lv_next_pos = 16. - - DO 15 TIMES. - GET BIT lv_curr_pos OF r_pwd_hash INTO lv_bit. - SET BIT lv_next_pos OF r_pwd_hash TO lv_bit. - SUBTRACT 1 FROM lv_curr_pos. - SUBTRACT 1 FROM lv_next_pos. - ENDDO. - SET BIT 1 OF r_pwd_hash TO 0. - ENDDO. - -endmethod. - - - - - - - method SPLIT_FILE. - - DATA: lt_hlp TYPE TABLE OF text255, - ls_hlp TYPE text255. - - DATA: lf_ext(10) TYPE c, - lf_dot_ext(10) TYPE c. - DATA: lf_str TYPE text255, - lf_anz TYPE i, - lf_len TYPE i. -** --------------------------------------------------------------------- - - CLEAR: lt_hlp, - ep_file, - ep_extension, - ep_dotextension. - -** Split the whole file at '.' - SPLIT ip_file AT '.' INTO TABLE lt_hlp. - -** get the extenstion from the last line of table - DESCRIBE TABLE lt_hlp LINES lf_anz. - IF lf_anz <= 1. - ep_file = ip_file. - EXIT. - ENDIF. - - READ TABLE lt_hlp INTO ls_hlp INDEX lf_anz. - ep_extension = ls_hlp. - lf_ext = ls_hlp. - IF NOT lf_ext IS INITIAL. - CONCATENATE '.' lf_ext INTO lf_dot_ext. - ENDIF. - ep_dotextension = lf_dot_ext. - -** get only the filename - lf_len = strlen( ip_file ) - strlen( lf_dot_ext ). - IF lf_len > 0. - ep_file = ip_file(lf_len). - ENDIF. - -endmethod. - - - - - method STRUCTURE_CASE. - DATA: lt_comp_str TYPE abap_component_tab. - - CASE is_component-type->kind. - WHEN cl_abap_typedescr=>kind_elem. "E Elementary Type - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_table. "T Table - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_struct. "S Structure - lt_comp_str = structure_recursive( is_component = is_component ). - INSERT LINES OF lt_comp_str INTO TABLE xt_components. - WHEN OTHERS. "cl_abap_typedescr=>kind_ref or cl_abap_typedescr=>kind_class or cl_abap_typedescr=>kind_intf. -* We skip it. for now. - ENDCASE. -endmethod. - - - - - method STRUCTURE_RECURSIVE. - DATA: lo_struct TYPE REF TO cl_abap_structdescr, - lt_components TYPE abap_component_tab, - ls_components TYPE abap_componentdescr. - - REFRESH rt_components. - - lo_struct ?= is_component-type. - lt_components = lo_struct->get_components( ). - - LOOP AT lt_components INTO ls_components. - structure_case( EXPORTING is_component = ls_components - CHANGING xt_components = rt_components ) . - ENDLOOP. - -endmethod. - - - - - method TIME_TO_EXCEL_STRING. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_time_baseline TYPE t VALUE '000000', - lc_seconds_in_day TYPE i VALUE 86400. - - lv_seconds_in_day = ip_value - lc_time_baseline. - lv_day_fraction = lv_seconds_in_day / lc_seconds_in_day. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_day_fraction ). -endmethod. - - - - - - method UNESCAPE_STRING. - - CONSTANTS lcv_regex TYPE string VALUE `^'[^']` & `|` & " Beginning single ' OR - `[^']'$` & `|` & " Trailing single ' OR - `[^']'[^']`. " Single ' somewhere in between - - - DATA: lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - -*--------------------------------------------------------------------* -* This method is used to extract the "real" string from an escaped string. -* An escaped string can be identified by a beginning ' which must be -* accompanied by a trailing ' -* All '' in between beginning and trailing ' are treated as single ' -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -*--------------------------------------------------------------------* - ev_unescaped_string = iv_escaped. " Pass through if not escaped - - CHECK ev_unescaped_string IS NOT INITIAL. " Nothing to do if empty - CHECK ev_unescaped_string(1) = `'`. " Nothing to do if not escaped - -*--------------------------------------------------------------------* -* Remove leading and trailing ' -*--------------------------------------------------------------------* - REPLACE REGEX `^'(.*)'$` IN ev_unescaped_string WITH '$1'. - IF sy-subrc <> 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Any remaining single ' should not be here -*--------------------------------------------------------------------* - FIND REGEX lcv_regex IN ev_unescaped_string. - IF sy-subrc = 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Replace '' with ' -*--------------------------------------------------------------------* - REPLACE ALL OCCURRENCES OF `''` IN ev_unescaped_string WITH `'`. - - -endmethod. - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -TYPES: BEGIN OF ts_alv_types, - seoclass TYPE seoclsname, - clsname TYPE seoclsname, - END OF ts_alv_types, - tt_alv_types TYPE HASHED TABLE OF ts_alv_types WITH UNIQUE KEY seoclass. - -TYPES: BEGIN OF ts_sort_values, - fieldname TYPE fieldname, - row_int TYPE zexcel_cell_row, - value TYPE REF TO data, - new TYPE flag, - sort_level TYPE int4, - is_collapsed type flag, - END OF ts_sort_values, - - tt_sort_values TYPE HASHED TABLE OF ts_sort_values WITH UNIQUE KEY fieldname. -TYPES: BEGIN OF ts_subtotal_rows, - row_int TYPE zexcel_cell_row, - row_int_start TYPE zexcel_cell_row, - columnname TYPE fieldname, - END OF ts_subtotal_rows, - - tt_subtotal_rows TYPE HASHED TABLE OF ts_subtotal_rows WITH UNIQUE KEY row_int. - -TYPES: BEGIN OF ts_styles, - type TYPE char1, - alignment TYPE zexcel_alignment, - inttype TYPE inttype, - decimals TYPE int1, - style TYPE REF TO zcl_excel_style, - guid TYPE zexcel_cell_style, - END OF ts_styles, - - tt_styles TYPE HASHED TABLE OF ts_styles WITH UNIQUE KEY type alignment inttype decimals. - -TYPES: BEGIN OF ts_color_styles, - guid_old TYPE zexcel_cell_style, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - style_new TYPE REF TO zcl_excel_style, - END OF ts_color_styles, - - tt_color_styles TYPE HASHED TABLE OF ts_color_styles WITH UNIQUE KEY guid_old fontcolor fillcolor. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ASK_OPTION. - DATA: ls_sval TYPE sval, - lt_sval TYPE STANDARD TABLE OF sval, - l_returncode TYPE string, - lt_fields TYPE ddfields, - ls_fields TYPE dfies. - - FIELD-SYMBOLS: <fs> TYPE ANY. - - rs_option = ws_option. - - CALL FUNCTION 'DDIF_FIELDINFO_GET' - EXPORTING - tabname = 'ZEXCEL_S_CONVERTER_OPTION' -* FIELDNAME = ' ' -* LANGU = sy-langu -* LFIELDNAME = ' ' -* ALL_TYPES = ' ' -* GROUP_NAMES = ' ' -* UCLEN = -* IMPORTING -* X030L_WA = -* DDOBJTYPE = -* DFIES_WA = -* LINES_DESCR = - TABLES - dfies_tab = lt_fields -* FIXED_VALUES = - EXCEPTIONS - not_found = 1 - internal_error = 2 - OTHERS = 3 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - LOOP AT lt_fields INTO ls_fields. - ASSIGN COMPONENT ls_fields-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - CLEAR ls_sval. - ls_sval-tabname = ls_fields-tabname. - ls_sval-fieldname = ls_fields-fieldname. - ls_sval-value = <fs>. - ls_sval-field_attr = space. - ls_sval-field_obl = space. - ls_sval-comp_code = space. - ls_sval-fieldtext = ls_fields-scrtext_m. - ls_sval-comp_tab = space. - ls_sval-comp_field = space. - ls_sval-novaluehlp = space. - INSERT ls_sval INTO TABLE lt_sval. - ENDIF. - ENDLOOP. - - CALL FUNCTION 'POPUP_GET_VALUES' - EXPORTING -* NO_VALUE_CHECK = space - popup_title = 'Excel creation options'(008) -* START_COLUMN = '5' -* START_ROW = '5' - IMPORTING - returncode = l_returncode - TABLES - fields = lt_sval - EXCEPTIONS - error_in_fields = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ELSE. - IF l_returncode = 'A'. - RAISE EXCEPTION TYPE zcx_excel. - ELSE. - LOOP AT lt_sval INTO ls_sval. - ASSIGN COMPONENT ls_sval-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - <fs> = ls_sval-value. - ENDIF. - ENDLOOP. - set_option( is_option = ws_option ) . - rs_option = ws_option. - ENDIF. - ENDIF. - endmethod. - - - - - method BIND_CELLS. - -* Do we need subtotals with grouping - READ TABLE wt_fieldcatalog TRANSPORTING NO FIELDS WITH KEY is_subtotalled = abap_true. - IF sy-subrc = 0 . - r_freeze_col = loop_subtotal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ELSE. - r_freeze_col = loop_normal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ENDIF. - - endmethod. - - - - - - method BIND_TABLE. - data: lt_field_catalog type zexcel_t_fieldcatalog, - ls_field_catalog type zexcel_s_fieldcatalog, - ls_fcat type zexcel_s_converter_fcat, - lo_col_dim type ref to zcl_excel_worksheet_columndime, - lo_row_dim type ref to zcl_excel_worksheet_rowdimensi, - l_col_int type zexcel_cell_column, - l_col_alpha type zexcel_cell_column_alpha, - ls_settings type zexcel_s_table_settings, - l_line type i. - - field-symbols: <fs_tab> type any table. - - assign wo_data->* to <fs_tab> . - - ls_settings-table_style = i_style_table. - ls_settings-top_left_column = zcl_excel_common=>convert_column2alpha( ip_column = w_col_int ). - ls_settings-top_left_row = w_row_int. - ls_settings-show_row_stripes = ws_layout-is_stripped. - - describe table wt_fieldcatalog lines l_line. - l_line = l_line + 1 + w_col_int. - ls_settings-bottom_right_column = zcl_excel_common=>convert_column2alpha( ip_column = l_line ). - - describe table <fs_tab> lines l_line. - ls_settings-bottom_right_row = l_line + 1 + w_row_int. - sort wt_fieldcatalog by position. - loop at wt_fieldcatalog into ls_fcat. - move-corresponding ls_fcat to ls_field_catalog. - ls_field_catalog-dynpfld = abap_true. - insert ls_field_catalog into table lt_field_catalog. - endloop. - - wo_worksheet->bind_table( - exporting - ip_table = <fs_tab> - it_field_catalog = lt_field_catalog - is_table_settings = ls_settings - importing - es_table_settings = ls_settings - ). - loop at wt_fieldcatalog into ls_fcat. - l_col_int = w_col_int + ls_fcat-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Freeze panes - if ls_fcat-fix_column = abap_true. - add 1 to r_freeze_col. - endif. -* Now let's check for optimized - if ls_fcat-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - endif. -* Now let's check for visible - if ls_fcat-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - endif. - endloop. - - endmethod. - - - method CLASS_CONSTRUCTOR. - DATA: ls_objects TYPE ts_alv_types. - DATA: ls_option TYPE zexcel_s_converter_option, - l_uname TYPE sy-uname. - - GET PARAMETER ID 'ZUS' FIELD l_uname. - IF l_uname IS INITIAL OR l_uname = space. - l_uname = sy-uname. - ENDIF. - -* Object CL_GUI_ALV_GRID - ls_objects-seoclass = 'CL_GUI_ALV_GRID'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_ALV_GRID'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_TABLE - ls_objects-seoclass = 'CL_SALV_TABLE'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_SALV_TABLE'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_RESULT - ls_objects-seoclass = 'CL_SALV_EX_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_EX'. - INSERT ls_objects INTO TABLE wt_objects. -* Object CL_SALV_WD_RESULT - ls_objects-seoclass = 'CL_SALV_WD_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_WD'. - INSERT ls_objects INTO TABLE wt_objects. - - CONCATENATE 'EXCEL_' sy-uname INTO ws_indx-srtfd. - - IMPORT p1 = ls_option FROM DATABASE indx(xl) TO ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = ls_option. - ELSE. - init_option( ) . - ENDIF. - - endmethod. - - - method CLEAN_FIELDCATALOG. - DATA: l_position TYPE int1. - - FIELD-SYMBOLS: <fs_sfcat> TYPE zexcel_s_converter_fcat. - - SORT wt_fieldcatalog BY position col_id. - - CLEAR l_position. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - ADD 1 TO l_position. - <fs_sfcat>-position = l_position. -* Default stype with alignment and format - <fs_sfcat>-style_hdr = get_style( i_type = c_type_hdr - i_alignment = <fs_sfcat>-alignment ). - IF ws_layout-is_stripped = abap_true. - <fs_sfcat>-style_stripped = get_style( i_type = c_type_str - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDIF. - <fs_sfcat>-style_normal = get_style( i_type = c_type_nor - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_subtotal = get_style( i_type = c_type_sub - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_total = get_style( i_type = c_type_tot - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDLOOP. - - endmethod. - - - - - - - - - - - - - method CONVERT. - - IF is_option IS SUPPLIED. - ws_option = is_option. - ENDIF. - - TRY. - execute_converter( EXPORTING io_object = io_alv - it_table = it_table ) . - ENDTRY. - - IF io_worksheet IS SUPPLIED AND io_worksheet IS BOUND. - wo_worksheet = io_worksheet. - ENDIF. - IF co_excel IS SUPPLIED. - IF co_excel IS NOT BOUND. - CREATE OBJECT co_excel. - co_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - wo_excel = co_excel. - ENDIF. - -* Move table to data object and clean it up - IF wt_fieldcatalog IS NOT INITIAL. - create_table( ). - ELSE. - wo_data = wo_table . - ENDIF. - - IF wo_excel IS NOT BOUND. - CREATE OBJECT wo_excel. - wo_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - IF wo_worksheet IS NOT BOUND. - " Get active sheet - wo_worksheet = wo_excel->get_active_worksheet( ). - wo_worksheet->set_title( ip_title = 'Sheet1'(001) ). - ENDIF. - - IF i_row_int <= 0. - w_row_int = 1. - ELSE. - w_row_int = i_row_int. - ENDIF. - IF i_column_int <= 0. - w_col_int = 1. - ELSE. - w_col_int = i_column_int. - ENDIF. - - create_worksheet( i_table = i_table - i_style_table = i_style_table ) . - - endmethod. - - - - - - method CREATE_COLOR_STYLE. - DATA: ls_styles TYPE ts_styles. - DATA: lo_style TYPE REF TO zcl_excel_style. - - READ TABLE wt_styles INTO ls_styles WITH KEY guid = i_style. - IF sy-subrc = 0. - lo_style = wo_excel->add_new_style( ). -* lo_style->borders = ls_styles-style->borders. -* lo_style->protection = ls_styles-style->protection. - lo_style->font->bold = ls_styles-style->font->bold. - lo_style->alignment->horizontal = ls_styles-style->alignment->horizontal. - lo_style->number_format->format_code = ls_styles-style->number_format->format_code. - - lo_style->font->color-rgb = is_colors-fontcolor. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = is_colors-fillcolor. - - ro_style = lo_style. - ENDIF. - endmethod. - - - - - - - - method CREATE_FORMULAR_SUBTOTAL. - data: l_row_alpha_start type string, - l_row_alpha_end type string, - l_func_num type string. - - l_row_alpha_start = i_row_int_start. - l_row_alpha_end = i_row_int_end. - - l_func_num = get_function_number( i_totals_function = i_totals_function ). - concatenate 'SUBTOTAL(' l_func_num ',' i_column l_row_alpha_start ':' i_column l_row_alpha_end ')' into r_formula. - endmethod. - - - - - - - method CREATE_FORMULAR_TOTAL. - data: l_row_alpha type string, - l_row_e_alpha type string. - - l_row_alpha = w_row_int + 1. - l_row_e_alpha = i_row_int. - - concatenate i_totals_function '(' i_column l_row_alpha ':' i_column l_row_e_alpha ')' into r_formula. - endmethod. - - - - method CREATE_PATH. - DATA: l_sep TYPE c , - l_path TYPE string, - l_return TYPE i . - - CLEAR r_path. - - " Save the file - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING - sapworkdir = l_path - EXCEPTIONS - get_sapworkdir_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - ). - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - CONCATENATE 'Excel_' w_fcount '.xlsx' INTO r_path. - ELSE. - DO. - ADD 1 TO w_fcount. -*-obtain file separator character--------------------------------------- - CALL METHOD cl_gui_frontend_services=>get_file_separator - CHANGING - file_separator = l_sep - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4. - - IF sy-subrc <> 0. - l_sep = ''. - ENDIF. - - CONCATENATE l_path l_sep 'Excel_' w_fcount '.xlsx' INTO r_path. - - IF cl_gui_frontend_services=>file_exist( file = r_path ) = abap_true. - cl_gui_frontend_services=>file_delete( EXPORTING filename = r_path - CHANGING rc = l_return - EXCEPTIONS OTHERS = 1 ). - IF sy-subrc = 0 . - RETURN. - ENDIF. - ELSE. - RETURN. - ENDIF. - ENDDO. - ENDIF. - - endmethod. - - - - - method CREATE_STYLE_HDR. - data: lo_style type ref to zcl_excel_style. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - lo_style->font->color-rgb = zcl_excel_style_color=>c_white. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FF4F81BD'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - ro_style = lo_style . - endmethod. - - - - - - - method CREATE_STYLE_NORMAL. - DATA: lo_style TYPE REF TO zcl_excel_style, - l_format TYPE zexcel_number_format. - - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - ENDIF. - IF l_format IS NOT INITIAL OR - ( i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL ) . - - lo_style = wo_excel->add_new_style( ). - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - - ro_style = lo_style . - - ENDIF. - endmethod. - - - - - - - method CREATE_STYLE_STRIPPED. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFDBE5F1'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - ro_style = lo_style. - - endmethod. - - - - - - - method CREATE_STYLE_SUBTOTAL. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - - ro_style = lo_style . - - endmethod. - - - - - - - method CREATE_STYLE_TOTAL. - DATA: lo_style TYPE REF TO zcl_excel_style. - DATA: l_format TYPE zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - CREATE OBJECT lo_style->borders->top. - lo_style->borders->top->border_style = zcl_excel_style_border=>c_border_thin. - lo_style->borders->top->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->right. - lo_style->borders->right->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->right->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->down. - lo_style->borders->down->border_style = zcl_excel_style_border=>c_border_double. - lo_style->borders->down->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->left. - lo_style->borders->left->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->left->border_color-rgb = zcl_excel_style_color=>c_black. - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - ENDIF. - - ro_style = lo_style . - - endmethod. - - - method CREATE_TABLE. - TYPES: BEGIN OF ts_output, - fieldname TYPE fieldname, - function TYPE funcname, - END OF ts_output. - - DATA: lo_data TYPE REF TO data. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lt_fieldcatalog TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat, - <fs_stab> TYPE ANY, - <fs_ttab> TYPE STANDARD TABLE, - <fs> TYPE ANY, - <fs_table> TYPE STANDARD TABLE. - - SORT wt_fieldcatalog BY position. - ASSIGN wo_table->* TO <fs_table>. - - READ TABLE <fs_table> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc EQ 0 . - LOOP AT wt_fieldcatalog ASSIGNING <fs_scat>. - ASSIGN COMPONENT <fs_scat>-columnname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - ls_components-name = <fs_scat>-columnname. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - DELETE TABLE wt_fieldcatalog FROM <fs_scat>. - ENDTRY. - IF lo_addit IS BOUND. - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ENDIF. - ENDIF. - ENDLOOP. - IF lt_components_tab IS NOT INITIAL. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( P_COMPONENTS = lt_components_tab - P_STRICT = abap_false ). - CATCH cx_sy_struct_creation. - RETURN. " We can not do anything in this case. - ENDTRY. - - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA wo_data TYPE HANDLE lo_table. - CREATE DATA lo_data TYPE HANDLE lo_struc. - - ASSIGN wo_data->* TO <fs_ttab>. - ASSIGN lo_data->* TO <fs_stab>. - LOOP AT <fs_table> ASSIGNING <fs>. - CLEAR <fs_stab>. - MOVE-CORRESPONDING <fs> TO <fs_stab>. - APPEND <fs_stab> TO <fs_ttab>. - ENDLOOP. - ENDIF. - ENDIF. - - endmethod. - - - - - - METHOD create_text_subtotal. - DATA: l_string(256) TYPE c, - l_func TYPE string. - - CASE i_totals_function. - WHEN zcl_excel_table=>totals_function_sum. " Total - l_func = 'Total'(003). - WHEN zcl_excel_table=>totals_function_min. " Minimum - l_func = 'Minimum'(004). - WHEN zcl_excel_table=>totals_function_max. " Maximum - l_func = 'Maximum'(005). - WHEN zcl_excel_table=>totals_function_average. " Mean Value - l_func = 'Average'(006). - WHEN zcl_excel_table=>totals_function_count. " Count - l_func = 'Count'(007). - WHEN OTHERS. - CLEAR l_func. - ENDCASE. - - MOVE i_value TO l_string. - - CONCATENATE l_string l_func INTO r_text SEPARATED BY space. - -ENDMETHOD. - - - - - - method CREATE_WORKSHEET. - DATA: l_freeze_col TYPE i. - DATA: l_guid TYPE oltpguid16. - - IF wo_data IS BOUND AND wo_worksheet IS BOUND. - - wo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. " By default is on - - IF wt_fieldcatalog IS INITIAL. - set_fieldcatalog( ) . - ELSE. - clean_fieldcatalog( ) . - ENDIF. - - IF i_table = abap_true. - l_freeze_col = bind_table( i_style_table = i_style_table ) . - ELSE. -* Let's check for filter. - IF wt_filter IS NOT INITIAL. - wo_autofilter = wo_excel->add_new_autofilter( io_sheet = wo_worksheet ). - l_freeze_col = bind_cells( ) . - set_autofilter_area( ) . - ELSE. - l_freeze_col = bind_cells( ) . - ENDIF. - - ENDIF. - -* Check for freeze panes - IF ws_layout-is_fixed = abap_true. - IF l_freeze_col = 0. - l_freeze_col = w_col_int. - ENDIF. - wo_worksheet->freeze_panes( EXPORTING ip_num_columns = l_freeze_col - ip_num_rows = w_row_int ) . - ENDIF. - ENDIF. - - endmethod. - - - - - - method EXECUTE_CONVERTER. - DATA: lt_fieldcatalog TYPE zexcel_t_fieldcatalog, - ls_fieldcatalog TYPE zexcel_s_converter_fcat, - lo_if TYPE REF TO zif_excel_converter, - ls_types TYPE ts_alv_types, - lo_addit TYPE REF TO cl_abap_classdescr. - - IF io_object IS BOUND. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_object_ref( io_object ). - CATCH cx_sy_move_cast_error. - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - ls_types-seoclass = lo_addit->get_relative_name( ). - READ TABLE wt_objects INTO ls_types WITH TABLE KEY seoclass = ls_types-seoclass. - IF sy-subrc = 0. - CREATE OBJECT lo_if TYPE (ls_types-clsname). - - TRY. - lo_if->create_fieldcatalog( - EXPORTING - is_option = ws_option - io_object = io_object - it_table = it_table - IMPORTING - es_layout = ws_layout - et_fieldcatalog = wt_fieldcatalog - eo_table = wo_table - et_colors = wt_colors - et_filter = wt_filter - ). - ENDTRY. -* data lines of highest level. - IF ws_layout-max_subtotal_level > 0. - ADD 1 TO ws_layout-max_subtotal_level. - ENDIF. - ELSE. - RAISE EXCEPTION TYPE zcx_excel. - ENDIF. - ELSE. - REFRESH wt_fieldcatalog. - GET REFERENCE OF it_table INTO wo_table. - ENDIF. - - endmethod. - - - - - - - method GET_COLOR_STYLE. - DATA: ls_colors TYPE zexcel_s_converter_col, - ls_color_styles TYPE ts_color_styles, - lo_style TYPE REF TO zcl_excel_style. - - r_style = i_style. " Default we change nothing - - IF wt_colors IS NOT INITIAL. -* Full line has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = space. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - r_style = lo_style->get_guid( ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - ENDIF. - ELSE. -* Only field has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = i_fieldname. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - r_style = ls_color_styles-style_new->get_guid( ). - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - - endmethod. - - - - - - method GET_FILE. - data: lo_excel_writer type ref to zif_excel_writer, - lo_excel type ref to zcl_excel. - - data: ls_seoclass type seoclass. - - - if wo_excel is bound. - create object lo_excel_writer type zcl_excel_writer_2007. - e_file = lo_excel_writer->write_file( wo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = e_file - receiving - et_solix = et_file. - e_bytecount = xstrlen( e_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = e_file - importing - output_length = e_bytecount - tables - binary_tab = et_file. - endif. - endif. - - endmethod. - - - - - method GET_FUNCTION_NUMBER. -*Number Function -*1 AVERAGE -*2 COUNT -*3 COUNTA -*4 MAX -*5 MIN -*6 PRODUCT -*7 STDEV -*8 STDEVP -*9 SUM -*10 VAR -*11 VARP - - case i_totals_function. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_SUM. " Total - r_function_number = 9. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MIN. " Minimum - r_function_number = 5. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MAX. " Maximum - r_function_number = 4. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_AVERAGE. " Mean Value - r_function_number = 1. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_count. " Count - r_function_number = 2. - when others. - clear r_function_number. - endcase. - endmethod. - - - - method GET_OPTION. - - rs_option = ws_option. - - endmethod. - - - - - - - - method GET_STYLE. - DATA: ls_styles TYPE ts_styles, - lo_style TYPE REF TO zcl_excel_style. - - CLEAR r_style. - - READ TABLE wt_styles INTO ls_styles WITH TABLE KEY type = i_type - alignment = i_alignment - inttype = i_inttype - decimals = i_decimals. - IF sy-subrc = 0. - r_style = ls_styles-guid. - ELSE. - CASE i_type. - WHEN c_type_hdr. " Header - lo_style = create_style_hdr( i_alignment = i_alignment ). - WHEN c_type_str. "Stripped - lo_style = create_style_stripped( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_nor. "Normal - lo_style = create_style_normal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_sub. "Subtotals - lo_style = create_style_subtotal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_tot. "Totals - lo_style = create_style_total( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - ENDCASE. - IF lo_style IS NOT INITIAL. - r_style = lo_style->get_guid( ). - ls_styles-type = i_type. - ls_styles-alignment = i_alignment. - ls_styles-inttype = i_inttype. - ls_styles-decimals = i_decimals. - ls_styles-guid = r_style. - ls_styles-style = lo_style. - INSERT ls_styles INTO TABLE wt_styles. - ENDIF. - ENDIF. - endmethod. - - - method INIT_OPTION. - - ws_option-filter = abap_true. - ws_option-hidenc = abap_true. - ws_option-subtot = abap_true. - - endmethod. - - - - - - - method LOOP_NORMAL. - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - -* It is better to loop column by column - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - -* Only if the Header is required create it. - IF ws_option-hidehd IS INITIAL. - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - ENDIF. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true . - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. -* Now let's check for total versus subtotal. - IF <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_total( i_row_int = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_total ). - ENDIF. - ENDLOOP. - endmethod. - - - - - - - method LOOP_SUBTOTAL. - - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_subtotalled TYPE flag, - l_text TYPE string, - ls_sort_values TYPE ts_sort_values, - ls_subtotal_rows TYPE ts_subtotal_rows, - l_sort_level TYPE int4, - l_hidden TYPE int4, - l_line TYPE i, - l_guid TYPE guid_22, - l_tabix TYPE sy-tabix, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i, - lt_fcat TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_sortval> TYPE ANY, - <fs_sortv> TYPE ts_sort_values, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - REFRESH: wt_sort_values, - wt_subtotal_rows. - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - - READ TABLE <fs_tab> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc = 0. - l_row_int = i_row_int + 1. - lt_fcat = wt_fieldcatalog. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - ls_sort_values-fieldname = <fs_sfcat>-columnname. - ls_sort_values-row_int = l_row_int. - ls_sort_values-sort_level = <fs_sfcat>-sort_level. - ls_sort_values-is_collapsed = <fs_sfcat>-is_collapsed. - CREATE DATA ls_sort_values-value LIKE <fs_fldval>. - ASSIGN ls_sort_values-value->* TO <fs_sortval>. - <fs_sortval> = <fs_fldval>. - INSERT ls_sort_values INTO TABLE wt_sort_values. - ENDLOOP. - ENDIF. - l_row_int = i_row_int. -* Let's check if we need to hide a sort level. - DESCRIBE TABLE wt_sort_values LINES l_line. - IF l_line <= 1. - CLEAR l_hidden. - ELSE. - LOOP AT wt_sort_values INTO ls_sort_values WHERE is_collapsed = abap_false. - IF l_hidden < ls_sort_values-sort_level. - l_hidden = ls_sort_values-sort_level. - ENDIF. - ENDLOOP. - ENDIF. - ADD 1 TO l_hidden. " As this is the first level we show. -* First loop without formular only addtional rows with subtotal text. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - ADD 1 TO l_row_int. " 1 is for header row. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - IF sy-subrc = 0. - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - IF <fs_sortval> <> <fs_fldval> OR <fs_sortv>-new = abap_true. -* First let's remmember the subtotal values as it has to appear later. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* Now let's write the subtotal line - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = <fs_sfcat>-sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's change the key - ADD 1 TO l_row_int. - <fs_sortval> = <fs_fldval>. - <fs_sortv>-new = abap_false. - l_line = <fs_sortv>-sort_level. - LOOP AT wt_sort_values ASSIGNING <fs_sortv> WHERE sort_level >= l_line. - <fs_sortv>-row_int = l_row_int. - ENDLOOP. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - ENDLOOP. - ADD 1 TO l_row_int. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* First let's write the value as it has to appear. - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - - l_sort_level = <fs_sfcat>-sort_level. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. - ADD 1 TO l_row_int. - ENDIF. - ENDLOOP. -* Let's write the Grand total - l_sort_level = 0. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . -* lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . Not on grand total - - l_text = create_text_subtotal( i_value = 'Grand'(002) - i_totals_function = <fs_sfcat>-totals_function ). - - l_col_alpha_start = zcl_excel_common=>convert_column2alpha( i_col_int ). - wo_worksheet->set_cell( ip_column = l_col_alpha_start - ip_row = l_row_int - ip_value = l_text - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - -* It is better to loop column by column second time around -* Second loop with formular and data. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Let's set the row dimension values - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = ws_layout-max_subtotal_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim->set_visible( ip_visible = abap_false ) . - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Now let's check for Grand total - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_start = i_row_int + 1. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - ENDIF. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDLOOP. - - endmethod. - - - method OPEN_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string, - l_sep type c. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - - l_dir = create_path( ) . - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - cl_gui_frontend_services=>execute( - exporting - document = l_dir -* application = -* parameter = -* default_directory = -* maximized = -* minimized = -* synchronous = -* operation = 'OPEN' - exceptions - cntl_error = 1 - error_no_gui = 2 - bad_parameter = 3 - file_not_found = 4 - path_not_found = 5 - file_extension_unknown = 6 - error_execute_failed = 7 - synchronous_failed = 8 - not_supported_by_gui = 9 - ). - if sy-subrc <> 0. - message id sy-msgid type sy-msgty number sy-msgno - with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - endif. - - endif. - - - endmethod. - - - method SET_AUTOFILTER_AREA. - DATA: ls_area TYPE zexcel_s_autofilter_area, - l_lines TYPE i, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values. - -* Let's check for filter. - IF wo_autofilter IS BOUND. - ls_area-row_start = 1. - lt_values = wo_autofilter->get_values( ) . - SORT lt_values BY column ASCENDING. - DESCRIBE TABLE lt_values LINES l_lines. - READ TABLE lt_values INTO ls_values INDEX 1. - IF sy-subrc = 0. - ls_area-col_start = ls_values-column. - ENDIF. - READ TABLE lt_values INTO ls_values INDEX l_lines. - IF sy-subrc = 0. - ls_area-col_end = ls_values-column. - ENDIF. - wo_autofilter->set_filter_area( is_area = ls_area ) . - ENDIF. - - endmethod. - - - - - - method SET_CELL_FORMAT. - DATA: l_format TYPE zexcel_number_format. - - CLEAR r_format. - CASE i_inttype. - WHEN cl_abap_typedescr=>typekind_date. - r_format = wo_worksheet->get_default_excel_date_format( ). - WHEN cl_abap_typedescr=>typekind_time. - r_format = wo_worksheet->get_default_excel_time_format( ). - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - IF i_decimals > 0 . - l_format = '#,##0.'. - DO i_decimals TIMES. - CONCATENATE l_format '0' INTO l_format. - ENDDO. - r_format = l_format. - ENDIF. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - r_format = '#,##0'. - ENDCASE. - - endmethod. - - - method SET_FIELDCATALOG. - - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - ls_fieldcatalog TYPE zexcel_s_fieldcatalog. - DATA: ls_fcat TYPE zexcel_s_converter_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN wo_data->* TO <fs_tab> . - - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - LOOP AT lt_dfies INTO ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. - ls_fcat-columnname = ls_dfies-fieldname. - INSERT ls_fcat INTO TABLE wt_fieldcatalog. - ENDLOOP. - - clean_fieldcatalog( ). - - endmethod. - - - - method SET_OPTION. - - IF ws_indx-begdt IS INITIAL. - ws_indx-begdt = sy-datum. - ENDIF. - - ws_indx-aedat = sy-datum. - ws_indx-usera = sy-uname. - ws_indx-pgmid = sy-cprog. - - EXPORT p1 = is_option TO DATABASE indx(xl) FROM ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = is_option. - ENDIF. - - endmethod. - - - - method WRITE_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - if i_path is initial. - l_dir = create_path( ) . - else. - l_dir = i_path. - endif. - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - endif. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_col_converter, - col TYPE lvc_col, - int TYPE lvc_int, - inv TYPE lvc_inv, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - END OF ts_col_converter, - - tt_col_converter TYPE HASHED TABLE OF ts_col_converter WITH UNIQUE KEY col int inv. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - ABAP - KKBLO - - - - - - - - - - method APPLY_SORT. - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE, - <fs_sort> TYPE lvc_s_sort. - - CREATE DATA eo_table LIKE it_table. - ASSIGN eo_table->* TO <fs_table>. - - <fs_table> = it_table. - - SORT wt_sort BY spos. - LOOP AT wt_sort ASSIGNING <fs_sort>. - IF <fs_sort>-up = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_false. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - IF <fs_sort>-down = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_true. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - ENDLOOP. - IF lt_otab IS NOT INITIAL. - SORT <fs_table> BY (lt_otab). - ENDIF. - - endmethod. - - - method CLASS_CONSTRUCTOR. -* let's fill the color conversion routines. - DATA: ls_color TYPE ts_col_converter. -* 0 all combination the same - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Blue - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFB0E4FC'. " 176 228 252 blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFB0E4FC'. " 176 228 252 blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF5FCBFE'. " 095 203 254 Int blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF5FCBFE'. " 095 203 254 - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 - INSERT ls_color INTO TABLE wt_colors. - -* Gray - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. - ls_color-fillcolor = 'FFE5EAF0'. " 229 234 240 gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFE5EAF0'. " 229 234 240 gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFD8E8F4'. " 216 234 244 int gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFD8E8F4'. " 216 234 244 int gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -*Yellow - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFEFEB8'. " 254 254 184 yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFEFEB8'. " 254 254 184 yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFF9ED5D'. " 249 237 093 int yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFF9ED5D'. " 249 237 093 int yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* light blue - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEE7FB'. " 206 231 251 light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEE7FB'. " 206 231 251 light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF9ACCEF'. " 154 204 239 int light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF9ACCEF'. " 154 204 239 int light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Green - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEF8AE'. " 206 248 174 Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEF8AE'. " 206 248 174 Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF7AC769'. " 122 199 105 int Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF7AC769'. " 122 199 105 int Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Red - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFDBBBC'. " 253 187 188 Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFDBBBC'. " 253 187 188 Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFB6B6B'. " 251 107 107 int Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFB6B6B'. " 251 107 107 int Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - endmethod. - - - - - method GET_COLOR. - DATA: ls_con_col TYPE zexcel_s_converter_col, - ls_color TYPE ts_col_converter, - l_line TYPE i, - l_color(4) TYPE c. - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_stab> TYPE ANY, - <fs> TYPE ANY, - <fs_tcol> TYPE lvc_t_scol, - <fs_scol> TYPE lvc_s_scol. - -* Loop trough the table to set the color properties of each line. The color properties field is -* Char 4 and the characters is set as follows: -* Char 1 = C = This is a color property -* Char 2 = 6 = Color code (1 - 7) -* Char 3 = Intensified on/of = 1 = on -* Char 4 = Inverse display = 0 = of - - ASSIGN io_table->* TO <fs_tab>. - - IF ws_layo-info_fname IS NOT INITIAL OR - ws_layo-ctab_fname IS NOT INITIAL. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - IF ws_layo-info_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-info_fname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF <fs> IS NOT INITIAL. - l_color = <fs>. - IF l_color(1) = 'C'. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = l_color+1(1) - int = l_color+2(1) - inv = l_color+3(1). - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = space. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - IF ws_layo-ctab_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-ctab_fname OF STRUCTURE <fs_stab> TO <fs_tcol>. - IF sy-subrc = 0. - LOOP AT <fs_tcol> ASSIGNING <fs_scol>. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = <fs_scol>-color-col - int = <fs_scol>-color-int - inv = <fs_scol>-color-inv. - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = <fs_scol>-fname. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - ls_con_col-nokeycol = <fs_scol>-nokeycol. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDLOOP. - ENDIF. - ENDIF. - ENDLOOP. - ENDIF. - endmethod. - - - - - METHOD get_filter. - DATA: ls_filt TYPE lvc_s_filt, - l_line TYPE i, - ls_filter TYPE zexcel_s_converter_fil. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lo_trange TYPE REF TO data, - lo_srange TYPE REF TO data, - lo_ltabdata TYPE REF TO data. - - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_ltab> TYPE STANDARD TABLE, - <fs_stab> TYPE any, - <fs> TYPE any, - <fs1> TYPE any, - <fs_srange> TYPE any, - <fs_trange> TYPE STANDARD TABLE. - - IF ws_option-filter = abap_false. - REFRESH et_filter. - RETURN. - ENDIF. - - ASSIGN xo_table->* TO <fs_tab>. - - CREATE DATA lo_ltabdata LIKE <fs_tab>. - ASSIGN lo_ltabdata->* TO <fs_ltab>. - - LOOP AT wt_filt INTO ls_filt. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - ASSIGN COMPONENT ls_filt-fieldname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF l_line = 1. - REFRESH lt_components_tab. - ls_components-name = 'SIGN'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-sign ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'OPTION'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-option ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'LOW'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'HIGH'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( p_components = lt_components_tab - p_strict = abap_false ). - CATCH cx_sy_struct_creation. - CONTINUE. - ENDTRY. - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA lo_trange TYPE HANDLE lo_table. - CREATE DATA lo_srange TYPE HANDLE lo_struc. - - ASSIGN lo_trange->* TO <fs_trange>. - ASSIGN lo_srange->* TO <fs_srange>. - ENDIF. - REFRESH <fs_trange>. - ASSIGN COMPONENT 'SIGN' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-sign. - ASSIGN COMPONENT 'OPTION' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-option. - ASSIGN COMPONENT 'LOW' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-low. - ASSIGN COMPONENT 'HIGH' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-high. - INSERT <fs_srange> INTO TABLE <fs_trange>. - IF <fs> IN <fs_trange>. - IF ws_option-filter = abap_true. - ls_filter-rownumber = l_line. - ls_filter-columnname = ls_filt-fieldname. - INSERT ls_filter INTO TABLE et_filter. - ELSE. - INSERT <fs_stab> INTO TABLE <fs_ltab>. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - IF ws_option-filter = abap_undefined. - <fs_tab> = <fs_ltab>. - REFRESH <fs_ltab>. - ENDIF. - ENDLOOP. - -ENDMETHOD. - - - - - method UPDATE_CATALOG. - DATA: ls_fieldcatalog TYPE zexcel_s_converter_fcat, - ls_ref TYPE salv_s_ddic_reference, - ls_fcat TYPE lvc_s_fcat, - ls_sort TYPE lvc_s_sort, - l_decimals TYPE lvc_decmls. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat. - - IF ws_layo-zebra IS NOT INITIAL. - cs_layout-is_stripped = abap_true. - ENDIF. - IF ws_layo-no_keyfix IS INITIAL OR - ws_layo-no_keyfix = '0'. - cs_layout-is_fixed = abap_true. - ENDIF. - - LOOP AT wt_fcat INTO ls_fcat. - CLEAR: ls_fieldcatalog, - l_decimals. - CASE ws_option-hidenc. - WHEN abap_false. " We make hiden columns visible - CLEAR ls_fcat-no_out. - WHEN abap_true. -* We convert column and hide it. - WHEN abap_undefined. "We don't convert hiden columns - IF ls_fcat-no_out = abap_true. - ls_fcat-tech = abap_true. - ENDIF. - ENDCASE. - IF ls_fcat-tech = abap_false. - ls_fieldcatalog-tabname = ls_fcat-tabname. - ls_fieldcatalog-fieldname = ls_fcat-fieldname . - ls_fieldcatalog-columnname = ls_fcat-fieldname . - ls_fieldcatalog-position = ls_fcat-col_pos. - ls_fieldcatalog-col_id = ls_fcat-col_id. - ls_fieldcatalog-convexit = ls_fcat-convexit. - ls_fieldcatalog-inttype = ls_fcat-inttype. - ls_fieldcatalog-scrtext_s = ls_fcat-scrtext_s . - ls_fieldcatalog-scrtext_m = ls_fcat-scrtext_m . - ls_fieldcatalog-scrtext_l = ls_fcat-scrtext_l. - l_decimals = ls_fcat-decimals_o. - IF l_decimals IS NOT INITIAL. - ls_fieldcatalog-decimals = l_decimals. - ELSE. - ls_fieldcatalog-decimals = ls_fcat-decimals . - ENDIF. - CASE ws_option-subtot. - WHEN abap_false. " We ignore subtotals - CLEAR ls_fcat-do_sum. - WHEN abap_true. " We convert subtotals and detail - - WHEN abap_undefined. " We should only take subtotals and displayed detail -* for now abap_true - ENDCASE. - CASE ls_fcat-do_sum. - WHEN abap_true. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. - WHEN 'A'. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_min. - WHEN 'B' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_max. - WHEN 'C' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_average. - WHEN OTHERS. - CLEAR ls_fieldcatalog-totals_function . - ENDCASE. - ls_fieldcatalog-fix_column = ls_fcat-fix_column. - IF ws_layo-cwidth_opt IS INITIAL. - IF ls_fcat-col_opt IS NOT INITIAL. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - ELSE. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - IF ls_fcat-no_out IS NOT INITIAL. - ls_fieldcatalog-is_hidden = abap_true. - ls_fieldcatalog-position = ls_fieldcatalog-col_id. " We hide based on orginal data structure - ENDIF. -* Alignment in each cell - CASE ls_fcat-just. - WHEN 'R'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_right. - WHEN 'L'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_left. - WHEN 'C'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_center. - WHEN OTHERS. - CLEAR ls_fieldcatalog-alignment. - ENDCASE. -* Check for subtotals. - READ TABLE wt_sort INTO ls_sort WITH KEY fieldname = ls_fcat-fieldname. - IF sy-subrc = 0 AND ws_option-subtot <> abap_false. - ls_fieldcatalog-sort_level = 0 . -* IF ls_fieldcatalog-totals_function IS INITIAL. " Not clear why not -* CLEAR ls_fieldcatalog-is_subtotalled. -* ELSE. - ls_fieldcatalog-is_subtotalled = ls_sort-subtot. -* ENDIF. - ls_fieldcatalog-is_collapsed = ls_sort-expa. - IF ls_fieldcatalog-is_subtotalled = abap_true. - ls_fieldcatalog-sort_level = ls_sort-spos. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. " we need function for text - ENDIF. - ENDIF. - APPEND ls_fieldcatalog TO ct_fieldcatalog. - ENDIF. - ENDLOOP. - - SORT ct_fieldcatalog BY sort_level ASCENDING. - cs_layout-max_subtotal_level = 0. - LOOP AT ct_fieldcatalog ASSIGNING <fs_scat> WHERE sort_level > 0. - cs_layout-max_subtotal_level = cs_layout-max_subtotal_level + 1. - <fs_scat>-sort_level = cs_layout-max_subtotal_level. - ENDLOOP. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - data: lo_alv type REF TO cl_gui_alv_grid. - - try. - lo_alv ?= io_object. - catch cx_sy_move_cast_error . - raise exception type zcx_excel. - endtry. - -endmethod. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_alv TYPE REF TO cl_gui_alv_grid. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_alv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_alv IS BOUND. - lo_alv->get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ). - lo_alv->get_frontend_layout( IMPORTING es_layout = ws_layo ). - lo_alv->get_sort_criteria( IMPORTING et_sort = wt_sort ) . - lo_alv->get_filter_criteria( IMPORTING et_filter = wt_filt ) . - - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method GET_TABLE. - DATA: lo_object TYPE REF TO object, - ls_seoclass TYPE seoclass, - l_method TYPE string. - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'IF_SALV_BS_DATA_SOURCE'. - - IF sy-subrc = 0. - l_method = 'GET_TABLE_REF'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ELSE. - l_method = 'GET_REF_TO_TABLE'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table, - lo_ex_cm TYPE REF TO cl_salv_ex_cm, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - lo_ex_cm ?= lo_result->r_model->r_model. - ws_layo = lo_ex_cm->s_layo. -* T_DRDN Instance Attribute Public Type LVC_T_DROP - wt_fcat = lo_ex_cm->t_fcat. - wt_filt = lo_ex_cm->t_filt. -* T_HYPE Instance Attribute Public Type LVC_T_HYPE -* T_SELECTED_CELLS Instance Attribute Public Type LVC_T_CELL -* T_SELECTED_COLUMNS Instance Attribute Public Type LVC_T_COL - wt_sort = lo_ex_cm->t_sort. - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - else. -* We have a problem and should stop here. - ENDIF. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - wo_config ?= lo_result->r_model->r_model. - - IF wo_config IS BOUND. - wt_fields = wo_config->if_salv_wd_field_settings~get_fields( ) . - wt_columns = wo_config->if_salv_wd_column_settings~get_columns( ) . - ENDIF. - - create_wt_fcat( io_table = lo_data ). - create_wt_sort( ). - create_wt_filt( ). - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - -* get_color( EXPORTING io_table = eo_table -* IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ELSE. -* We have a problem and should stop here - ENDIF. - ENDIF. -ENDMETHOD. - - - - method CREATE_WT_FCAT. - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - lv_sytabix TYPE sytabix. - - DATA: ls_fcat TYPE lvc_s_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN io_table->* TO <fs_tab> . - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - loop at lt_dfies into ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. -* ls_fcat-columnname = ls_dfies-fieldname. - ls_fcat-col_pos = ls_dfies-position. - ls_fcat-key = ls_dfies-keyflag. - get_fields_info( CHANGING xs_fcat = ls_fcat ) . - - ls_fcat-col_opt = abap_true. - - get_columns_info( CHANGING xs_fcat = ls_fcat ) . - - INSERT ls_fcat INTO TABLE wt_fcat. - endloop. - - endmethod. - - - method CREATE_WT_FILT. -* No neeed for superclass. -* Only for WD - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - DATA: lt_filters TYPE salv_wd_t_filter_rule_ref, - ls_filt TYPE lvc_s_filt. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref, - <fs_filter> TYPE salv_wd_s_filter_rule_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - REFRESH lt_filters. - lt_filters = <fs_fields>-r_field->if_salv_wd_filter~get_filter_rules( ) . - LOOP AT lt_filters ASSIGNING <fs_filter>. - ls_filt-fieldname = <fs_fields>-fieldname. - IF <fs_filter>-r_filter_rule->get_included( ) = abap_true. - ls_filt-sign = 'I'. - ELSE. - ls_filt-sign = 'E'. - ENDIF. - ls_filt-option = <fs_filter>-r_filter_rule->get_operator( ). - ls_filt-high = <fs_filter>-r_filter_rule->get_high_value( ) . - ls_filt-low = <fs_filter>-r_filter_rule->get_low_value( ) . - INSERT ls_filt INTO TABLE wt_filt. - ENDLOOP. - ENDLOOP. - - endmethod. - - - method CREATE_WT_SORT. - DATA: lo_sort TYPE REF TO cl_salv_wd_sort_rule, - l_sort_order TYPE salv_wd_constant, - ls_sort TYPE lvc_s_sort. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - lo_sort = <fs_fields>-r_field->if_salv_wd_sort~get_sort_rule( ) . - IF lo_sort IS BOUND. - l_sort_order = lo_sort->get_sort_order( ). - IF l_sort_order <> if_salv_wd_c_sort=>sort_order. - CLEAR ls_sort. - ls_sort-spos = lo_sort->get_sort_position( ). - ls_sort-fieldname = <fs_fields>-fieldname. -* ls_sort-GROUP - ls_sort-subtot = lo_sort->get_group_aggregation( ). -* ls_sort-COMP -* ls_sort-EXPA -* ls_sort-SELTEXT -* ls_sort-OBLIGATORY -* ls_sort-LEVEL -* ls_sort-NO_OUT - IF l_sort_order = if_salv_wd_c_sort=>sort_order_ascending. - ls_sort-up = abap_true. - ELSE. - ls_sort-down = abap_true. - ENDIF. - INSERT ls_sort INTO TABLE wt_sort. - ENDIF. - ENDIF. - ENDLOOP. - - endmethod. - - - - method GET_COLUMNS_INFO. - DATA: l_numc2 TYPE salv_wd_constant. - - - FIELD-SYMBOLS: <fs_column> TYPE salv_wd_s_column_ref. - - READ TABLE wt_columns ASSIGNING <fs_column> WITH KEY id = xs_fcat-fieldname . - IF sy-subrc = 0. - xs_fcat-col_pos = <fs_column>-r_column->get_position( ) . - l_numc2 = <fs_column>-r_column->get_fixed_position( ). - IF l_numc2 = '02'. - xs_fcat-fix_column = abap_true . - ENDIF. - l_numc2 = <fs_column>-r_column->get_visible( ). - IF l_numc2 = '01'. - xs_fcat-no_out = abap_true . - ENDIF. - ENDIF. - - endmethod. - - - - method GET_FIELDS_INFO. - DATA: lo_aggr TYPE REF TO cl_salv_wd_aggr_rule, - l_aggrtype TYPE salv_wd_constant. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - READ TABLE wt_fields ASSIGNING <fs_fields> WITH KEY fieldname = xs_fcat-fieldname. - IF sy-subrc = 0. - lo_aggr = <fs_fields>-r_field->if_salv_wd_aggr~get_aggr_rule( ) . - IF lo_aggr IS BOUND. - l_aggrtype = lo_aggr->get_aggregation_type( ) . - CASE l_aggrtype. - WHEN if_salv_wd_c_aggregation=>aggrtype_total. - xs_fcat-do_sum = abap_true. - WHEN if_salv_wd_c_aggregation=>aggrtype_minimum. - xs_fcat-do_sum = 'A'. - WHEN if_salv_wd_c_aggregation=>aggrtype_maximum . - xs_fcat-do_sum = 'B'. - WHEN if_salv_wd_c_aggregation=>aggrtype_average . - xs_fcat-do_sum = 'C'. - WHEN OTHERS. - CLEAR xs_fcat-do_sum . - ENDCASE. - ENDIF. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD zif_excel_converter~can_convert_object. - - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - lo_salv ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_salv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog, - et_colors . - - IF lo_salv IS BOUND. - load_data( EXPORTING io_salv = lo_salv - it_table = it_table ). - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - - method LOAD_DATA. - DATA: lo_columns TYPE REF TO cl_salv_columns_table, - lo_aggregations TYPE REF TO cl_salv_aggregations, - lo_sorts TYPE REF TO cl_salv_sorts, - lo_filters TYPE REF TO cl_salv_filters, - lo_functional TYPE REF TO cl_salv_functional_settings, - lo_display TYPE REF TO cl_salv_display_settings, - lo_selections TYPE REF TO cl_salv_selections. - - DATA: ls_vari TYPE disvariant, - lo_layout TYPE REF TO cl_salv_layout. - - DATA: lr_form_tol TYPE REF TO cl_salv_form, - lr_form_eol TYPE REF TO cl_salv_form. - - DATA lt_kkblo_fieldcat TYPE kkblo_t_fieldcat. - DATA ls_kkblo_layout TYPE kkblo_layout. - DATA lt_kkblo_filter TYPE kkblo_t_filter. - DATA lt_kkblo_sort TYPE kkblo_t_sortinfo. - - lo_layout = io_salv->get_layout( ) . - lo_columns = io_salv->get_columns( ). - lo_aggregations = io_salv->get_aggregations( ) . - lo_sorts = io_salv->get_sorts( ) . - lo_filters = io_salv->get_filters( ) . - lo_display = io_salv->get_display_settings( ) . - lo_functional = io_salv->get_functional_settings( ) . - - REFRESH: wt_fcat, - wt_sort, - wt_filt. - -* First update metadata if we can. - IF io_salv->is_offline( ) = abap_false. - io_salv->get_metadata( ) . - ELSE. -* If we are offline we need to build this. - cl_salv_controller_metadata=>get_variant( - EXPORTING - r_layout = lo_layout - CHANGING - s_variant = ls_vari ). - ENDIF. - -*... get the column information - wt_fcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog( - r_columns = lo_columns - r_aggregations = lo_aggregations ). - -*... get the layout information - cl_salv_controller_metadata=>get_lvc_layout( - EXPORTING - r_functional_settings = lo_functional - r_display_settings = lo_display - r_columns = lo_columns - r_aggregations = lo_aggregations - CHANGING - s_layout = ws_layo ). - -* the fieldcatalog is not complete yet! - CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' - EXPORTING - i_complete = 'X' - i_refresh_buffer = space - i_buffer_active = space - is_layout = ws_layo - i_test = '1' - i_fcat_complete = 'X' - IMPORTING -* E_EDIT = - es_layout = ws_layo - CHANGING - ct_fieldcat = wt_fcat. - - IF ls_vari IS NOT INITIAL AND io_salv->is_offline( ) = abap_true. - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - EXPORTING - it_fieldcat_lvc = wt_fcat - is_layout_lvc = ws_layo - IMPORTING - et_fieldcat_kkblo = lt_kkblo_fieldcat - es_layout_kkblo = ls_kkblo_layout - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - it_fieldcat_lvc_missing = 2 - OTHERS = 3. - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LT_VARIANT_LOAD' - EXPORTING -* I_TOOL = 'LT' - i_tabname = '1' -* I_TABNAME_SLAVE = - i_dialog = ' ' -* I_USER_SPECIFIC = ' ' -* I_DEFAULT = 'X' -* I_NO_REPTEXT_OPTIMIZE = -* I_VIA_GRID = - i_fcat_complete = 'X' - IMPORTING -* E_EXIT = - et_fieldcat = lt_kkblo_fieldcat - et_sort = lt_kkblo_sort - et_filter = lt_kkblo_filter - CHANGING - cs_layout = ls_kkblo_layout - ct_default_fieldcat = lt_kkblo_fieldcat - cs_variant = ls_vari - EXCEPTIONS - wrong_input = 1 - fc_not_complete = 2 - not_found = 3 - OTHERS = 4 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO' - EXPORTING -* I_TECH_COMPLETE = -* I_STRUCTURE_NAME = - it_fieldcat_kkblo = lt_kkblo_fieldcat - it_sort_kkblo = lt_kkblo_sort - it_filter_kkblo = lt_kkblo_filter -* IT_SPECIAL_GROUPS_KKBLO = -* IT_FILTERED_ENTRIES_KKBLO = -* IT_GROUPLEVELS_KKBLO = -* IS_SUBTOT_OPTIONS_KKBLO = - is_layout_kkblo = ls_kkblo_layout -* IS_REPREP_ID_KKBLO = -* I_CALLBACK_PROGRAM_KKBLO = -* IT_ADD_FIELDCAT = -* IT_EXCLUDING_KKBLO = -* IT_EXCEPT_QINFO_KKBLO = - IMPORTING - et_fieldcat_lvc = wt_fcat - et_sort_lvc = wt_sort - et_filter_lvc = wt_filt -* ET_SPECIAL_GROUPS_LVC = -* ET_FILTER_INDEX_LVC = -* ET_GROUPLEVELS_LVC = -* ES_TOTAL_OPTIONS_LVC = - es_layout_lvc = ws_layo -* ES_VARIANT_LVC = -* E_VARIANT_SAVE_LVC = -* ES_PRINT_INFO_LVC = -* ES_REPREP_LVC = -* E_REPREP_ACTIVE_LVC = -* ET_EXCLUDING_LVC = -* ET_EXCEPT_QINFO_LVC = - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - ELSE. -* ... get the sort information - wt_sort = cl_salv_controller_metadata=>get_lvc_sort( lo_sorts ). - -* ... get the filter information - wt_filt = cl_salv_controller_metadata=>get_lvc_filter( lo_filters ). - ENDIF. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - " Initialise instance variables - formula1 = ''. - formula2 = ''. - type = me->c_type_none. - errorstyle = me->c_style_stop. - operator = ''. - allowblank = abap_false. - showdropdown = abap_false. - showinputmessage = abap_true. - showerrormessage = abap_true. - errortitle = ''. - error = ''. - prompttitle = ''. - prompt = ''. -* inizialize dimension range - cell_row = 1. - cell_column = 'A'. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method ADD. - data_validations->add( ip_data_validation ). - endmethod. - - - method CLEAR. - data_validations->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT data_validations. - - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= data_validations->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = data_validations->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - data_validations->remove( ip_data_validation ). - endmethod. - - - - method SIZE. - ep_size = data_validations->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - - me->type = ip_type. - -* inizialize dimension range - anchor = anchor_one_cell. - from_loc-col = 1. - from_loc-row = 1. - endmethod. - - - - method CREATE_MEDIA_NAME. - -* if media name is initial, create unique name - CHECK media_name IS INITIAL. - - index = ip_index. - CONCATENATE me->type index INTO media_name. - CONDENSE media_name NO-GAPS. - endmethod. - - - - method GET_FROM_COL. - r_from_col = me->from_loc-col. - endmethod. - - - - method GET_FROM_ROW. - r_from_row = me->from_loc-row. - endmethod. - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_HEIGHT_EMU_STR. - r_height = pixel2emu( size-height ). - CONDENSE r_height NO-GAPS. - endmethod. - - - - method GET_INDEX. - rp_index = me->index. - endmethod. - - - - METHOD get_media. - - DATA: lv_language TYPE sylangu. - DATA: lt_bin_mime TYPE sdokcntbins. - DATA: lt_mime TYPE tsfmime, - lv_filesize TYPE i, - lv_filesizec(10). - - CASE media_source. - WHEN c_media_source_xstring. - r_media = media. - WHEN c_media_source_www. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = media_key_www - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. - - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - WHEN c_media_source_mime. - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = me->io - IMPORTING - filesize = lv_filesize - bin_data = lt_bin_mime - CHANGING - language = lv_language ). - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_bin_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - ENDCASE. -ENDMETHOD. - - - - method GET_MEDIA_NAME. - CONCATENATE media_name `.` media_type INTO r_name. - endmethod. - - - - method GET_MEDIA_TYPE. - r_type = media_type. - endmethod. - - - - method GET_NAME. - r_name = title. - endmethod. - - - - method GET_POSITION. - rp_position-anchor = anchor. - rp_position-from = from_loc. - rp_position-to = to_loc. - rp_position-size = size. - endmethod. - - - - method GET_TO_COL. - r_to_col = me->to_loc-col. - endmethod. - - - - method GET_TO_ROW. - r_to_row = me->to_loc-row. - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method GET_WIDTH_EMU_STR. - r_width = pixel2emu( size-width ). - CONDENSE r_width NO-GAPS. - endmethod. - - - - method LOAD_CHART_ATTRIBUTES. - DATA: node TYPE REF TO if_ixml_element. - DATA: node2 TYPE REF TO if_ixml_element. - DATA: node3 TYPE REF TO if_ixml_element. - DATA: node4 TYPE REF TO if_ixml_element. - DATA: iterator TYPE REF TO if_ixml_node_iterator. - - DATA: chartspace TYPE REF TO if_ixml_node_collection. - DATA: coll_length TYPE i. - DATA: chartelem TYPE REF TO if_ixml_element. - - DATA lo_barchart TYPE REF TO zcl_excel_graph_bars. - DATA lo_piechart TYPE REF TO zcl_excel_graph_pie. - DATA lo_linechart TYPE REF TO zcl_excel_graph_line. - - TYPES: BEGIN OF t_prop, - val TYPE string, - rtl TYPE string, - lang TYPE string, - formatcode TYPE string, - sourcelinked TYPE string, - END OF t_prop. - - TYPES: BEGIN OF t_pagemargins, - b TYPE string, - l TYPE string, - r TYPE string, - t TYPE string, - header TYPE string, - footer TYPE string, - END OF t_pagemargins. - - DATA ls_prop TYPE t_prop. - DATA ls_pagemargins TYPE t_pagemargins. - - DATA lo_collection TYPE REF TO if_ixml_node_collection. - DATA lo_node TYPE REF TO if_ixml_node. - DATA lo_iterator TYPE REF TO if_ixml_node_iterator. - DATA lv_idx TYPE i. - DATA lv_order TYPE i. - DATA lv_invertifnegative TYPE string. - DATA lv_symbol TYPE string. - DATA lv_smooth TYPE c. - DATA lv_sername TYPE string. - DATA lv_label TYPE string. - DATA lv_value TYPE string. - DATA lv_axid TYPE string. - DATA lv_orientation TYPE string. - DATA lv_delete TYPE string. - DATA lv_axpos TYPE string. - DATA lv_formatcode TYPE string. - DATA lv_sourcelinked TYPE string. - DATA lv_majortickmark TYPE string. - DATA lv_minortickmark TYPE string. - DATA lv_ticklblpos TYPE string. - DATA lv_crossax TYPE string. - DATA lv_crosses TYPE string. - DATA lv_auto TYPE string. - DATA lv_lblalgn TYPE string. - DATA lv_lbloffset TYPE string. - DATA lv_nomultilvllbl TYPE string. - DATA lv_crossbetween TYPE string. - - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - CASE me->graph_type. - WHEN c_graph_bars. - CREATE OBJECT lo_barchart. - me->graph = lo_barchart. - WHEN c_graph_pie. - CREATE OBJECT lo_piechart. - me->graph = lo_piechart. - WHEN c_graph_line. - CREATE OBJECT lo_linechart. - me->graph = lo_linechart. - WHEN OTHERS. - ENDCASE. - - "Fill properties - node2 ?= node->find_from_name( name = 'date1904' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_1904val = ls_prop-val. - node2 ?= node->find_from_name( name = 'lang' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_langval = ls_prop-val. - node2 ?= node->find_from_name( name = 'roundedCorners' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_roundedcornersval = ls_prop-val. - - "style - node2 ?= node->find_from_name( name = 'style' namespace = 'c14' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_c14styleval = ls_prop-val. - node2 ?= node->find_from_name( name = 'style' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_styleval = ls_prop-val. - "---------------------------Read graph properties - node2 ?= node->find_from_name( name = 'autoTitleDeleted' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_autotitledeletedval = ls_prop-val. - - "plotArea - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'barDir' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_bardirval = ls_prop-val. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'invertIfNegative' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_invertifnegative = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_barchart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_invertifnegative = lv_invertifnegative - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'gapWidth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_gapwidthval = ls_prop-val. - - "Load axes - node2 ?= node->find_from_name( name = 'barChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_piechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showLeaderLines' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showleaderlinesval = ls_prop-val. - node2 ?= node->find_from_name( name = 'firstSliceAng' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_firstsliceangval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'symbol' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_symbol = ls_prop-val. - node3 ?= node2->find_from_name( name = 'smooth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_smooth = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_linechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_symbol = lv_symbol - ip_smooth = lv_smooth - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showbubblesizeval = ls_prop-val. - - node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - node2 ?= node->find_from_name( name = 'marker' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_MARKERVAL = ls_prop-val. - node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_SMOOTHVAL = ls_prop-val. - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - "Load axes - node2 ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. -* node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). -* zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). -* lv_formatcode = ls_prop-formatcode. -* lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - WHEN OTHERS. - ENDCASE. - - "legend - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_overlayval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_overlayval = ls_prop-val. - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_overlayval = ls_prop-val. - node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_pprrtl = ls_prop-rtl. - node2 ?= node->find_from_name( name = 'endParaRPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_endpararprlang = ls_prop-lang. - - WHEN OTHERS. - ENDCASE. - - node2 ?= node->find_from_name( name = 'plotVisOnly' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_plotvisonlyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'dispBlanksAs' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_dispblanksasval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showDLblsOverMax' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_showdlblsovermaxval = ls_prop-val. - "--------------------- - - node2 ?= node->find_from_name( name = 'pageMargins' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_pagemargins ). - me->graph->pagemargins = ls_pagemargins. - - - endmethod. - - - - - - method PIXEL2EMU. -* suppose 96 DPI - IF ip_dpi IS SUPPLIED. - r_emu = ip_pixel * 914400 / ip_dpi. - ELSE. -* suppose 96 DPI - r_emu = ip_pixel * 914400 / 96. - ENDIF. - endmethod. - - - - - - - method SET_MEDIA. - IF ip_media IS SUPPLIED. - media = ip_media. - ENDIF. - media_type = ip_media_type. - media_source = c_media_source_xstring. - IF ip_width IS SUPPLIED. - size-width = ip_width. - ENDIF. - IF ip_height IS SUPPLIED. - size-height = ip_height. - ENDIF. - endmethod. - - - - - - METHOD set_media_mime. - - DATA: lv_language TYPE sylangu. - - io = ip_io. - media_source = c_media_source_mime. - size-width = ip_width. - size-height = ip_height. - - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = ip_io - IMPORTING - filename = media_name - "mimetype = media_type - CHANGING - language = lv_language ). - - SPLIT media_name AT '.' INTO media_name media_type. - -ENDMETHOD. - - - - - - method SET_MEDIA_WWW. - DATA: lv_value(20). - - media_key_www = ip_key. - media_source = c_media_source_www. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'fileextension' - IMPORTING - value = lv_value. - media_type = lv_value. - SHIFT media_type LEFT DELETING LEADING '.'. - - size-width = ip_width. - size-height = ip_height. - endmethod. - - - - - - - method SET_POSITION. - from_loc-col = zcl_excel_common=>convert_column2int( ip_from_col ) - 1. - IF ip_coloff IS SUPPLIED. - from_loc-col_offset = ip_coloff. - ENDIF. - from_loc-row = ip_from_row - 1. - IF ip_rowoff IS SUPPLIED. - from_loc-row_offset = ip_rowoff. - ENDIF. - anchor = anchor_one_cell. - endmethod. - - - - - - method SET_POSITION2. - - data: lv_anchor type zexcel_drawing_anchor. - lv_anchor = ip_anchor. - - IF lv_anchor IS INITIAL. - IF ip_to IS NOT INITIAL. - lv_anchor = anchor_two_cell. - ELSE. - lv_anchor = anchor_one_cell. - ENDIF. - ENDIF. - - CASE lv_anchor. - WHEN anchor_absolute OR anchor_one_cell. - CLEAR: me->to_loc. - WHEN anchor_two_cell. - CLEAR: me->size. - ENDCASE. - - me->from_loc = ip_from. - me->to_loc = ip_to. - me->anchor = lv_anchor. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method ADD. - DATA: lv_index TYPE i. - - drawings->add( ip_drawing ). - lv_index = drawings->if_object_collection~size( ). - ip_drawing->create_media_name( - ip_index = lv_index ). - endmethod. - - - method CLEAR. - - drawings->clear( ). - endmethod. - - - - method CONSTRUCTOR. - - CREATE OBJECT drawings. - type = ip_type. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_drawing ?= drawings->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= drawings->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method INCLUDE. - drawings->add( ip_drawing ). - endmethod. - - - - method IS_EMPTY. - - is_empty = drawings->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - - drawings->remove( ip_drawing ). - endmethod. - - - - method SIZE. - - ep_size = drawings->if_object_collection~size( ). - endmethod. - - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - "Load default values - me->pagemargins-b = '0.75'. - me->pagemargins-l = '0.7'. - me->pagemargins-r = '0.7'. - me->pagemargins-t = '0.75'. - me->pagemargins-header = '0.3'. - me->pagemargins-footer = '0.3'. - endmethod. - - - - - - - - - - - - - - - - - - - - method CREATE_SERIE. - DATA ls_serie TYPE s_series. - - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7. - - - IF ip_lbl IS NOT SUPPLIED. - lv_stop_row_c = ip_lbl_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_lbl_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-lbl = ip_sheet. - ls_serie-lbl = zcl_excel_common=>escape_string( ip_value = ls_serie-lbl ). - CONCATENATE ls_serie-lbl '!$' ip_lbl_from_col '$' lv_start_row_c ':$' ip_lbl_to_col '$' lv_stop_row_c INTO ls_serie-lbl. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-lbl = ip_lbl. - ENDIF. - IF ip_ref IS NOT SUPPLIED. - lv_stop_row_c = ip_ref_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_ref_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-ref = ip_sheet. - ls_serie-ref = zcl_excel_common=>escape_string( ip_value = ls_serie-ref ). - CONCATENATE ls_serie-ref '!$' ip_ref_from_col '$' lv_start_row_c ':$' ip_ref_to_col '$' lv_stop_row_c INTO ls_serie-ref. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-ref = ip_ref. - ENDIF. - ls_serie-idx = ip_idx. - ls_serie-order = ip_order. - ls_serie-invertifnegative = ip_invertifnegative. - ls_serie-symbol = ip_symbol. - ls_serie-smooth = ip_smooth. - ls_serie-sername = ip_sername. - APPEND ls_serie TO me->series. - SORT me->series BY order ASCENDING. - endmethod. - - - - method SET_PRINT_LBL. - me->print_label = ip_value. - endmethod. - - - - method SET_STYLE. - me->ns_c14styleval = ip_style-c14style. - CONDENSE me->ns_c14styleval NO-GAPS. - me->ns_styleval = ip_style-cstyle. - CONDENSE me->ns_styleval NO-GAPS. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - if ip_type = c_catax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '1'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'b'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '2'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_auto is SUPPLIED. - ls_ax-auto = ip_auto. - else. - ls_ax-auto = '1'. - endif. - if ip_lblAlgn is SUPPLIED. - ls_ax-lblAlgn = ip_lblAlgn. - else. - ls_ax-lblAlgn = 'ctr'. - endif. - if ip_lblOffset is SUPPLIED. - ls_ax-lblOffset = ip_lblOffset. - else. - ls_ax-lblOffset = '100'. - endif. - if ip_noMultiLvlLbl is SUPPLIED. - ls_ax-noMultiLvlLbl = ip_noMultiLvlLbl. - else. - ls_ax-noMultiLvlLbl = '0'. - endif. - elseif ip_type = c_valax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '2'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'l'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '1'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_crossBetween is SUPPLIED. - ls_ax-crossBetween = ip_crossBetween. - else. - ls_ax-crossBetween = 'between'. - endif. - endif. - - APPEND ls_ax TO me->axes. - sort me->axes by axid ascending. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - IF ip_type = c_catax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '1'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'b'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '2'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_auto IS SUPPLIED. - ls_ax-auto = ip_auto. - ELSE. - ls_ax-auto = '1'. - ENDIF. - IF ip_lblalgn IS SUPPLIED. - ls_ax-lblalgn = ip_lblalgn. - ELSE. - ls_ax-lblalgn = 'ctr'. - ENDIF. - IF ip_lbloffset IS SUPPLIED. - ls_ax-lbloffset = ip_lbloffset. - ELSE. - ls_ax-lbloffset = '100'. - ENDIF. - IF ip_nomultilvllbl IS SUPPLIED. - ls_ax-nomultilvllbl = ip_nomultilvllbl. - ELSE. - ls_ax-nomultilvllbl = '0'. - ENDIF. - ELSEIF ip_type = c_valax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '2'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'l'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '1'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_crossbetween IS SUPPLIED. - ls_ax-crossbetween = ip_crossbetween. - ELSE. - ls_ax-crossbetween = 'between'. - ENDIF. - ENDIF. - - APPEND ls_ax TO me->axes. - SORT me->axes BY axid ASCENDING. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEADER_LINES. - ns_showleaderlinesval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - method CREATE. - data: lo_hyperlink type REF TO zcl_excel_hyperlink. - - create OBJECT lo_hyperlink. - - lo_hyperlink->location = iv_url. - lo_hyperlink->internal = iv_internal. - - ov_link = lo_hyperlink. - endmethod. - - - - - method CREATE_EXTERNAL_LINK. - - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_url - iv_internal = abap_false ). - endmethod. - - - - - method CREATE_INTERNAL_LINK. - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_location - iv_internal = abap_true ). - endmethod. - - - - method GET_REF. - ev_ref = row. - CONDENSE ev_ref. - CONCATENATE column ev_ref INTO ev_ref. - endmethod. - - - - method GET_URL. - ev_url = me->location. - endmethod. - - - - method IS_INTERNAL. - ev_ret = me->internal. - endmethod. - - - - - - method SET_CELL_REFERENCE. - me->column = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - me->row = ip_row. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method CONSTRUCTOR. - " default Excel palette based on - " http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.indexedcolors.aspx - - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800000' TO colors. - APPEND '00008000' TO colors. - APPEND '00000080' TO colors. - APPEND '00808000' TO colors. - - APPEND '00800080' TO colors. - APPEND '00008080' TO colors. - APPEND '00C0C0C0' TO colors. - APPEND '00808080' TO colors. - APPEND '009999FF' TO colors. - APPEND '00993366' TO colors. - APPEND '00FFFFCC' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00660066' TO colors. - APPEND '00FF8080' TO colors. - - APPEND '000066CC' TO colors. - APPEND '00CCCCFF' TO colors. - APPEND '00000080' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800080' TO colors. - APPEND '00800000' TO colors. - APPEND '00008080' TO colors. - APPEND '000000FF' TO colors. - - APPEND '0000CCFF' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00CCFFCC' TO colors. - APPEND '00FFFF99' TO colors. - APPEND '0099CCFF' TO colors. - APPEND '00FF99CC' TO colors. - APPEND '00CC99FF' TO colors. - APPEND '00FFCC99' TO colors. - APPEND '003366FF' TO colors. - APPEND '0033CCCC' TO colors. - - APPEND '0099CC00' TO colors. - APPEND '00FFCC00' TO colors. - APPEND '00FF9900' TO colors. - APPEND '00FF6600' TO colors. - APPEND '00666699' TO colors. - APPEND '00969696' TO colors. - APPEND '00003366' TO colors. - APPEND '00339966' TO colors. - APPEND '00003300' TO colors. - APPEND '00333300' TO colors. - - APPEND '00993300' TO colors. - APPEND '00993366' TO colors. - APPEND '00333399' TO colors. - APPEND '00333333' TO colors. - - endmethod. - - - - - - method GET_COLOR. - DATA: lv_index type i. - - lv_index = ip_index + 1. - READ TABLE colors INTO ep_color INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - endmethod. - - - - method GET_COLORS. - ep_colors = colors. - endmethod. - - - - method IS_MODIFIED. - ep_modified = modified. - endmethod. - - - - - method SET_COLOR. - DATA: lv_index TYPE i. - - FIELD-SYMBOLS: <lv_color> LIKE LINE OF colors. - - lv_index = ip_index + 1. - READ TABLE colors ASSIGNING <lv_color> INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - - IF <lv_color> <> ip_color. - modified = abap_true. - <lv_color> = ip_color. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_VALUE. - - ep_value = me->value. - - endmethod. - - - - method SET_RANGE_VALUE. - me->value = ip_value. - endmethod. - - - - - - - - method SET_VALUE. - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7, - lv_value TYPE string. - lv_stop_row_c = ip_stop_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_start_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - lv_value = ip_sheet_name. - me->value = zcl_excel_common=>escape_string( ip_value = lv_value ). - - CONCATENATE me->value '!$' ip_start_column '$' lv_start_row_c ':$' ip_stop_column '$' lv_stop_row_c INTO me->value. - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel30. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: lv_value TYPE string, - lv_count TYPE i VALUE 10, - lv_packed TYPE p LENGTH 16 DECIMALS 1 VALUE '1234567890.5'. - -CONSTANTS: lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string, - lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed, - lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num, - lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date. - -CONSTANTS: gc_save_file_name TYPE string VALUE '30_CellDataTypes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Cell data types' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Number as String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = '11' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Negative Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.01-' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = '0 %' - ip_abap_type = lc_typekind_num ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = 'Date' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = '20110831' - ip_abap_type = lc_typekind_date ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.02' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %' - ip_abap_type = lc_typekind_num ). - - WHILE lv_count <= 15. - lv_value = lv_count. - CONCATENATE 'Positive Value with' lv_value 'Digits' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_packed ). - CONCATENATE 'Positive Value with' lv_value 'Digits formated as string' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_string ). - lv_packed = lv_packed * 10. - lv_count = lv_count + 1. - ENDWHILE. - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). - column_dimension->set_auto_size( abap_true ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel31. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: fieldval TYPE text80, - row TYPE i, - style_column_a TYPE REF TO zcl_excel_style, - style_column_a_guid TYPE zexcel_cell_style, - style_column_b TYPE REF TO zcl_excel_style, - style_column_b_guid TYPE zexcel_cell_style, - style_column_c TYPE REF TO zcl_excel_style, - style_column_c_guid TYPE zexcel_cell_style, - style_font TYPE REF TO zcl_excel_style_font. - -CONSTANTS: gc_save_file_name TYPE string VALUE '31_AutosizeWithDifferentFontSizes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - " Use active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Regular Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a_guid = style_column_a->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c_guid = style_column_c->get_guid( ). - - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Bold Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->bold = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->bold = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->bold = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Italic Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->italic = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->italic = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->italic = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - lo_excel->set_active_sheet_index( i_active_worksheet = 1 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL32 -* Demo for export options from ALV GRID: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -REPORT zdemo_excel32. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '32_Export_ALV.xlsx', - lv_default_file_name2 TYPE string VALUE '32_Export_Convert.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 100 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - - -* export file to save file path - CASE sy-ucomm. - WHEN 'EXCELBIND'. - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - PERFORM export_to_excel_bind. - - WHEN 'EXCELCONV'. - - CONCATENATE l_path lv_file_separator lv_default_file_name2 - INTO l_path. - PERFORM export_to_excel_conv. - - ENDCASE. -ENDFORM. " USER_COMMAND -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_CONV -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_conv. - DATA: lo_converter TYPE REF TO zcl_excel_converter. - - CREATE OBJECT lo_converter. -*TRY. - lo_converter->convert( - EXPORTING - io_alv = lo_salv - it_table = gt_sbook - i_row_int = 2 - i_column_int = 2 -* i_table = -* i_style_table = -* io_worksheet = -* CHANGING -* co_excel = - ). -* CATCH zcx_excel . -*ENDTRY. - lo_converter->write_file( i_path = l_path ). - -ENDFORM. "EXPORT_TO_EXCEL_CONV - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_BIND -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_bind. -* create zcl_excel_worksheet object - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object -*try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). -* catch zcx_excel . -*endtry. - - - PERFORM write_file. - -ENDFORM. "EXPORT_TO_EXCEL_BIND -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -FORM write_file . - DATA: lt_file TYPE solix_tab, - l_bytecount TYPE i, - l_file TYPE xstring. - - DATA: lo_excel_writer TYPE REF TO zif_excel_writer. - - DATA: ls_seoclass TYPE seoclass. - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_BCS_CONVERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>xstring_to_solix - EXPORTING - iv_xstring = l_file - RECEIVING - et_solix = lt_file. - - l_bytecount = XSTRLEN( l_file ). - ELSE. - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = l_file - IMPORTING - output_length = l_bytecount - TABLES - binary_tab = lt_file. - ENDIF. - - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - CHANGING data_tab = lt_file ). - -ENDFORM. " WRITE_FILE - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel33. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_converter TYPE REF TO zcl_excel_converter, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - -DATA lt_test TYPE TABLE OF t005t. - -DATA: l_cell_value TYPE zexcel_cell_value, - ls_area TYPE zexcel_s_autofilter_area. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '33_autofilter.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - SELECT * UP TO 2 ROWS FROM t005t INTO TABLE lt_test. "#EC CI_NOWHERE - - CREATE OBJECT lo_converter. - - lo_converter->convert( EXPORTING - it_table = lt_test - i_row_int = 1 - i_column_int = 1 - io_worksheet = lo_worksheet - CHANGING - co_excel = lo_excel ) . - - lo_autofilter = lo_excel->add_new_autofilter( io_sheet = lo_worksheet ) . - - ls_area-row_start = 1. - ls_area-col_start = 1. - ls_area-row_end = lo_worksheet->get_highest_row( ). - ls_area-col_end = lo_worksheet->get_highest_column( ). - - lo_autofilter->set_filter_area( is_area = ls_area ). - - lo_worksheet->get_cell( EXPORTING - ip_column = 'C' - ip_row = 2 - IMPORTING - ep_value = l_cell_value ). - lo_autofilter->set_value( i_column = 3 - i_value = l_cell_value ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel34. - -CONSTANTS: width TYPE f VALUE '10.14'. -CONSTANTS: height TYPE f VALUE '57.75'. - -DATA: current_row TYPE i, - col TYPE i, - col_alpha TYPE zexcel_cell_column_alpha, - row TYPE i, - row_board TYPE i, - colorflag TYPE i, - color TYPE zexcel_style_color_argb, - - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - - writing1 TYPE string, - writing2 TYPE string. - - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -CONSTANTS: gc_save_file_name TYPE string VALUE '34_Static Styles_Chess.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Spassky_vs_Bronstein' ). - -* Header - current_row = 1. - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'White' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Spassky, Boris V -- wins in turn 23' ). - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'Black' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Bronstein, David I' ). - - ADD 1 TO current_row. -* Set size of column + Writing above chessboard - DO 8 TIMES. - - writing1 = zcl_excel_common=>convert_column2alpha( sy-index ). - writing2 = sy-index . - row = current_row + sy-index. - - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - -* Set size of column - column_dimension = lo_worksheet->get_column_dimension( col_alpha ). - column_dimension->set_width( width ). - -* Set size of row - row_dimension = lo_worksheet->get_row_dimension( row ). - row_dimension->set_row_height( height ). - -* Set writing on chessboard - lo_worksheet->set_cell( ip_row = row - ip_column = 'A' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'A' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = 'J' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'J' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - - row = current_row + 9. - lo_worksheet->set_cell( ip_row = current_row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = current_row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'J' ). - column_dimension->set_auto_size( abap_true ). - -* Set win-position - CONSTANTS: c_pawn TYPE string VALUE 'Pawn'. - CONSTANTS: c_rook TYPE string VALUE 'Rook'. - CONSTANTS: c_knight TYPE string VALUE 'Knight'. - CONSTANTS: c_bishop TYPE string VALUE 'Bishop'. - CONSTANTS: c_queen TYPE string VALUE 'Queen'. - CONSTANTS: c_king TYPE string VALUE 'King'. - - row = current_row + 1. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_knight ). - row = current_row + 2. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_king ). - row = current_row + 3. - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 4. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_knight ). - row = current_row + 5. - lo_worksheet->set_cell( ip_row = row ip_column = 'E' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - row = current_row + 6. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_bishop ). - row = current_row + 7. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 8. - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_king ). - -* Set Chessboard - DO 8 TIMES. - IF sy-index <= 3. " Black - color = zcl_excel_style_color=>c_black. - ELSE. - color = zcl_excel_style_color=>c_white. - ENDIF. - row_board = sy-index. - row = current_row + sy-index. - DO 8 TIMES. - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - TRY. -* Borders around outer limits - IF row_board = 1. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_top_style = zcl_excel_style_border=>c_border_thick - ip_borders_top_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF row_board = 8. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_down_style = zcl_excel_style_border=>c_border_thick - ip_borders_down_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 2. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_left_style = zcl_excel_style_border=>c_border_thick - ip_borders_left_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 9. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_right_style = zcl_excel_style_border=>c_border_thick - ip_borders_right_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. -* Style for writing - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_font_color_rgb = color - ip_font_bold = 'X' - ip_font_size = 16 - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid ). -* Color of field - colorflag = ( row + col ) MOD 2. - IF colorflag = 0. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFB5866A' ). - ELSE. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFF5DEBF' ). - ENDIF. - - - - CATCH zcx_excel . - ENDTRY. - - ENDDO. - ENDDO. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel35. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '35_Static_Styles.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>GET_DESKTOP_DIRECTORY( CHANGING DESKTOP_DIRECTORY = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - sy-title = 'ZDEMO_EXCEL2;Issue 139: Change cellstyle retroactivly'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - -* Demonstrate how to retroactivly change the cellstyle -*Filled text and underlinded text - lo_worksheet->change_cell_style( ip_column = 'B' - ip_row = 5 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - lo_worksheet->change_cell_style( ip_column = 'D' - ip_row = 4 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL36 -REPORT zdemo_excel36. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - col TYPE i. - -DATA: lo_style_arial20 TYPE REF TO zcl_excel_style, - lo_style_times11 TYPE REF TO zcl_excel_style, - lo_style_cambria8red TYPE REF TO zcl_excel_style. - -DATA: lv_style_arial20_guid TYPE zexcel_cell_style, - lv_style_times11_guid TYPE zexcel_cell_style, - lv_style_cambria8red_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '36_DefaultStyles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create a bold / italic style - lo_style_arial20 = lo_excel->add_new_style( ). - lo_style_arial20->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_arial20->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_arial20->font->size = 20. - lv_style_arial20_guid = lo_style_arial20->get_guid( ). - - lo_style_times11 = lo_excel->add_new_style( ). - lo_style_times11->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_times11->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_times11->font->size = 11. - lv_style_times11_guid = lo_style_times11->get_guid( ). - - lo_style_cambria8red = lo_excel->add_new_style( ). - lo_style_cambria8red->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_cambria8red->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_cambria8red->font->size = 8. - lo_style_cambria8red->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_cambria8red_guid = lo_style_cambria8red->get_guid( ). - - lo_excel->set_default_style( lv_style_arial20_guid ). " Default for all new worksheets - -* 1st sheet - do not change anything --> defaultstyle from lo_excel should apply - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Style for complete document' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 2nd sheet - defaultstyle for this sheet set explicitly ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for this sheet' ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Times New Roman, fontsize 11' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because this style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'thus the default style from zcl_excel does not apply to this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 3rd sheet - defaultstyle for columns ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for 3 columns' ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'F' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'The columns B,C and F are set to Times New Roman' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 10 ip_value = 'All other cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 11 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 12 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - - lo_worksheet->set_cell( ip_column = 8 ip_row = 1 ip_value = 'Of course' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 2 ip_value = 'setting a specific style to a cell' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 3 ip_value = 'takes precedence over all defaults' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 4 ip_value = 'Here: Cambria 8 in red' ip_style = lv_style_cambria8red_guid ). - - -* Set entry into each of the first 10 columns - DO 20 TIMES. - col = sy-index. - CASE col. - WHEN 2 " B - OR 3 " C - OR 6." F - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Times 11' ). - WHEN OTHERS. - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Arial 20' ). - ENDCASE. - ENDDO. - - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - - - lo_excel->set_active_sheet_index( 1 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - REPORT zdemo_excel37. - -DATA: excel TYPE REF TO zcl_excel, - reader TYPE REF TO zif_excel_reader, - go_error TYPE REF TO cx_root, - gv_message type string. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '37-passthrough.xlsx'. - -SELECTION-SCREEN BEGIN OF BLOCK blx WITH FRAME. -PARAMETERS: p_upfile TYPE string DEFAULT 'c:\temp\whatever.xlsx' LOWER CASE. -SELECTION-SCREEN END OF BLOCK blx. - -INCLUDE zdemo_excel_outputopt_incl. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile. - PERFORM f4_p_upfile CHANGING p_upfile. - - -START-OF-SELECTION. - - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. -* CREATE OBJECT reader TYPE zcl_excel_reader_xlsm. - excel = reader->load_file( p_upfile ). - - "Use template for charts - excel->use_template = abap_true. -*--------------------------------------------------------------------* -* CL_ABAP_ZIP may have problems reading LibreOffice generated files -* You may have to use alternate ZIP-Class - see comments in issue #234 in abap2xlsx at developers network -* excel = reader->load_file( i_filename = p_upfile -* iv_use_alternate_zip = 'ZCL_EXCEL_ABAP_ZIP' ). -*--------------------------------------------------------------------* - -*** Create output - lcl_output=>output( excel ). - CATCH cx_root INTO go_error. - MESSAGE 'Error reading excelfile' TYPE 'I'. - gv_message = go_error->get_text( ). - IF gv_message IS NOT INITIAL. - MESSAGE gv_message TYPE 'I'. - ENDIF. - ENDTRY. - - -*&---------------------------------------------------------------------* -*& Form F4_P_UPFILE -*&---------------------------------------------------------------------* -FORM f4_p_upfile CHANGING p_upfile TYPE string. - - DATA: lv_repid TYPE syrepid, - lt_fields TYPE dynpread_tabtype, - ls_field LIKE LINE OF lt_fields, - lt_files TYPE filetable. - - lv_repid = sy-repid. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = lv_repid - dynumb = '1000' - request = 'A' - TABLES - dynpfields = lt_fields - EXCEPTIONS - invalid_abapworkarea = 01 - invalid_dynprofield = 02 - invalid_dynproname = 03 - invalid_dynpronummer = 04 - invalid_request = 05 - no_fielddescription = 06 - undefind_error = 07. - READ TABLE lt_fields INTO ls_field WITH KEY fieldname = 'P_UPFILE'. - p_upfile = ls_field-fieldvalue. - - cl_gui_frontend_services=>file_open_dialog( EXPORTING - default_filename = p_upfile - file_filter = zcl_excel_common=>c_xlsx_file_filter - CHANGING - file_table = lt_files - rc = sy-tabix - EXCEPTIONS - OTHERS = 1 ). - READ TABLE lt_files INDEX 1 INTO p_upfile. - -ENDFORM. " F4_P_UPFILE - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_drawing TYPE REF TO zcl_excel_drawing. - -TYPES: BEGIN OF gty_icon, -* name TYPE icon_name, "Fix #228 - name TYPE iconname, "Fix #228 - objid TYPE w3objid, - END OF gty_icon, - gtyt_icon TYPE STANDARD TABLE OF gty_icon WITH NON-UNIQUE DEFAULT KEY. - -DATA: lt_icon TYPE gtyt_icon, - lv_row TYPE sytabix, - ls_wwwdatatab TYPE wwwdatatab, - lt_mimedata TYPE STANDARD TABLE OF w3mime WITH NON-UNIQUE DEFAULT KEY, - lv_xstring TYPE xstring. - -FIELD-SYMBOLS: <icon> LIKE LINE OF lt_icon, - <mimedata> LIKE LINE OF lt_mimedata. - -CONSTANTS: gc_save_file_name TYPE string VALUE '38_SAP-Icons.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -TABLES: icon. -SELECT-OPTIONS: s_icon FOR icon-name DEFAULT 'ICON_LED_*' OPTION CP. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Icons' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - lo_column_dimension->set_auto_size( 'X' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( 'X' ). - -* Get all icons - SELECT name - INTO TABLE lt_icon - FROM icon - WHERE name IN s_icon - ORDER BY name. - LOOP AT lt_icon ASSIGNING <icon>. - - lv_row = sy-tabix. -*--------------------------------------------------------------------* -* Set name of icon -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'A' - ip_value = <icon>-name ). -*--------------------------------------------------------------------* -* Check whether the mime-repository holds some icondata for us -*--------------------------------------------------------------------* - -* Get key - SELECT SINGLE objid - INTO <icon>-objid - FROM wwwdata - WHERE text = <icon>-name. - CHECK sy-subrc = 0. " :o( - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'B' - ip_value = <icon>-objid ). - -* Load mimedata - CLEAR lt_mimedata. - CLEAR ls_wwwdatatab. - ls_wwwdatatab-relid = 'MI' . - ls_wwwdatatab-objid = <icon>-objid. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_wwwdatatab - TABLES - mime = lt_mimedata - EXCEPTIONS - wrong_object_type = 1 - import_error = 2 - OTHERS = 3. - CHECK sy-subrc = 0. " :o( - - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = lv_row - ip_from_col = 'C' ). - CLEAR lv_xstring. - LOOP AT lt_mimedata ASSIGNING <mimedata>. - CONCATENATE lv_xstring <mimedata>-line INTO lv_xstring IN BYTE MODE. - ENDLOOP. - - lo_drawing->set_media( ip_media = lv_xstring - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = 16 - ip_height = 14 ). - lo_worksheet->add_drawing( lo_drawing ). - - ENDLOOP. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel39. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - -DATA lv_value TYPE i. - -DATA: ls_io TYPE skwf_io. - -DATA: ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location. - -DATA lo_bar1 TYPE REF TO zcl_excel_graph_bars. -DATA lo_bar2 TYPE REF TO zcl_excel_graph_bars. -DATA lo_pie TYPE REF TO zcl_excel_graph_pie. -DATA lo_line TYPE REF TO zcl_excel_graph_line. - -CONSTANTS: gc_save_file_name TYPE string VALUE '39_Charts.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Create a pie chart and series - CREATE OBJECT lo_pie. - - CALL METHOD lo_pie->create_serie - EXPORTING - ip_order = 0 - ip_sheet = 'Values' - ip_lbl_from_col = 'B' - ip_lbl_from_row = '1' - ip_lbl_to_col = 'B' - ip_lbl_to_row = '3' - ip_ref_from_col = 'A' - ip_ref_from_row = '1' - ip_ref_to_col = 'A' - ip_ref_to_row = '3' - ip_sername = 'My serie 1'. - - " Set style - lo_pie->set_style( zcl_excel_graph=>c_style_15 ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar1. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set style - lo_bar1->set_style( zcl_excel_graph=>c_style_default ). - - " Set label to none - lo_bar1->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar2. - - CALL METHOD lo_bar2->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_yes - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set layout - lo_bar2->set_show_legend_key( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_values( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_cat_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_ser_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_percent( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_varycolor( zcl_excel_graph_bars=>c_show_true ). - - " Create a line chart, series and axes - CREATE OBJECT lo_line. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 0 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 1 - ip_symbol = zcl_excel_graph_line=>c_symbol_none - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 2 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$F$1:$F$3' - ip_ref = 'Values!$E$1:$E$3' - ip_sername = 'My serie 3'. - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - - - - - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet (Pie sheet) - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'PieChart' ). - - " Create global drawing, set type as pie chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART PIE' ). - lo_drawing->graph = lo_pie. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_pie. - - "Set chart position (anchor 2 cells) - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart1 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart1' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 2 SERIES' ). - lo_drawing->graph = lo_bar1. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 11. - ls_lower-row = 22. - ls_lower-col = 21. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart2 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart2' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 1 SERIE' ). - lo_drawing->graph = lo_bar2. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " LineChart sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'LineChart' ). - - " Create global drawing, set type as line chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART LINES' ). - lo_drawing->graph = lo_line. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_line. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " Values sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for chart - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = lv_value ). - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = lv_value ). - lv_value = -1. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'One (Minus)' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = lv_value ). - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'F' ip_row = 3 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 1 ip_value = 'Three' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL4 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - - lv_tabcolor TYPE zexcel_s_tabcolor, - - ls_header TYPE zexcel_s_worksheet_head_foot, - ls_footer TYPE zexcel_s_worksheet_head_foot. - -CONSTANTS: gc_save_file_name TYPE string VALUE '04_Sheets.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). -* Set color to tab with sheetname - Red - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = 'FF' - ip_green = '00' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to second sheet' ip_hyperlink = lo_hyperlink ). - - " Page printing settings - lo_worksheet->sheet_setup->set_page_margins( ip_header = '1' ip_footer = '1' ip_unit = 'cm' ). - lo_worksheet->sheet_setup->black_and_white = 'X'. - lo_worksheet->sheet_setup->fit_to_page = 'X'. " you should turn this on to activate fit_to_height and fit_to_width - lo_worksheet->sheet_setup->fit_to_height = 0. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->fit_to_width = 2. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lo_worksheet->sheet_setup->page_order = zcl_excel_sheet_setup=>c_ord_downthenover. - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->scale = 80. " used only if ip_fit_to_page = SPACE - - " Header and Footer - ls_header-right_value = 'print date &D'. - ls_header-right_font-size = 8. - ls_header-right_font-name = zcl_excel_style_font=>c_name_arial. - - ls_footer-left_value = '&Z&F'. "Path / Filename - ls_footer-left_font = ls_header-right_font. - ls_footer-right_value = 'page &P of &N'. "page x of y - ls_footer-right_font = ls_header-right_font. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). -* Set color to tab with sheetname - Green - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to first sheet' ip_hyperlink = lo_hyperlink ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Sheet3 is hidden' ). - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). -* Set color to tab with sheetname - Blue - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = '00' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). -* Set color to tab with sheetname - other color - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Cell B3 has value 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 0 ). - lo_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_hidezero. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_row TYPE zexcel_cell_row, - lv_col TYPE i, - lv_row_char TYPE char10, - lv_value TYPE string, - ls_fontcolor TYPE zexcel_style_color_argb. - -CONSTANTS: gc_save_file_name TYPE string VALUE '40_Printsettings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Printsettings' ). - -*--------------------------------------------------------------------* -* Prepare sheet with trivial data -* - first 4 columns will have fontocolor set -* - first 3 rows will have fontcolor set -* These marked cells will be used for repeatable rows/columns on printpages -*--------------------------------------------------------------------* - DO 100 TIMES. " Rows - - lv_row = sy-index . - WRITE lv_row TO lv_row_char. - - DO 20 TIMES. - - lv_col = sy-index - 1. - CONCATENATE sy-abcde+lv_col(1) lv_row_char INTO lv_value. - lv_col = sy-index. - lo_worksheet->set_cell( ip_row = lv_row - ip_column = lv_col - ip_value = lv_value ). - - TRY. - IF lv_row <= 3. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid - ip_fill_fgcolor_rgb = zcl_excel_style_color=>c_yellow ). - ENDIF. - IF lv_col <= 4. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_font_color_rgb = zcl_excel_style_color=>c_red ). - ENDIF. - CATCH zcx_excel . - ENDTRY. - - ENDDO. - - - - ENDDO. - - -*--------------------------------------------------------------------* -* Printsettings -*--------------------------------------------------------------------* - TRY. - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = 'A' - iv_columns_to = 'D' ). - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = 1 - iv_rows_to = 3 ). - CATCH zcx_excel . - ENDTRY. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL5 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel5. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset TYPE zexcel_conditional_iconset. - - - -CONSTANTS: gc_save_file_name TYPE string VALUE '05_Conditional.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '33'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '66'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_false. - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 500 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL6 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel6. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_row TYPE syindex, - lv_formula TYPE string. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '06_Formulas.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -*--------------------------------------------------------------------* -* Get some testdata -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = -10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - -*--------------------------------------------------------------------* -* Demonstrate using formulas -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_formula = 'SUM(C4:C8)' ). - - -*--------------------------------------------------------------------* -* Demonstrate standard EXCEL-behaviour when copying a formula to another cell -* by calculating the resulting formula to put into another cell -*--------------------------------------------------------------------* - DO 10 TIMES. - - lv_formula = zcl_excel_common=>shift_formula( iv_reference_formula = 'SUM(C4:C8)' - iv_shift_cols = 0 " Offset in Columns - here we copy in same column --> 0 - iv_shift_rows = sy-index ). " Offset in Row - here we copy downward --> sy-index - lv_row = 9 + sy-index. " Absolute row = sy-index rows below reference cell - lo_worksheet->set_cell( ip_row = lv_row ip_column = 'C' ip_formula = lv_formula ). - - ENDDO. - -*--------------------------------------------------------------------* -*** Create output -*--------------------------------------------------------------------* - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL7 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel7. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset3 TYPE zexcel_conditional_iconset, - ls_iconset4 TYPE zexcel_conditional_iconset, - ls_iconset5 TYPE zexcel_conditional_iconset, - ls_databar TYPE zexcel_conditional_databar, - ls_colorscale2 TYPE zexcel_conditional_colorscale, - ls_colorscale3 TYPE zexcel_conditional_colorscale. - -CONSTANTS: gc_save_file_name TYPE string VALUE '07_ConditionalAll.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - ls_iconset3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo1_value = '0'. - ls_iconset3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo2_value = '33'. - ls_iconset3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo3_value = '66'. - ls_iconset3-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset4-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo1_value = '0'. - ls_iconset4-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo2_value = '25'. - ls_iconset4-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo3_value = '50'. - ls_iconset4-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo4_value = '75'. - ls_iconset4-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset5-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo1_value = '0'. - ls_iconset5-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo2_value = '20'. - ls_iconset5-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo3_value = '40'. - ls_iconset5-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo4_value = '60'. - ls_iconset5-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo5_value = '80'. - ls_iconset5-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_databar-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_databar-cfvo1_value = '0'. - ls_databar-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_databar-cfvo2_value = '0'. - ls_databar-colorrgb = 'FF638EC6'. - - ls_colorscale2-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale2-cfvo1_value = '0'. - ls_colorscale2-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale2-cfvo2_value = '50'. - ls_colorscale2-colorrgb1 = 'FFF8696B'. - ls_colorscale2-colorrgb2 = 'FF63BE7B'. - - ls_colorscale3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale3-cfvo1_value = '0'. - ls_colorscale3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale3-cfvo2_value = '50'. - ls_colorscale3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_colorscale3-cfvo3_value = '0'. - ls_colorscale3-colorrgb1 = 'FFF8696B'. - ls_colorscale3-colorrgb2 = 'FFFFEB84'. - ls_colorscale3-colorrgb3 = 'FF63BE7B'. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -* ICONSET - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrows. - - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 5 - ip_stop_column = 'B' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'C_ICONSET_3ARROWS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 5 - ip_stop_column = 'C' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'C_ICONSET_3ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = 50 ). - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3flags. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 5 - ip_stop_column = 'D' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'C_ICONSET_3FLAGS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 5 - ip_stop_column = 'E' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'C_ICONSET_3TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 5 - ip_stop_column = 'F' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'C_ICONSET_3TRAFFICLIGHTS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3signs. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'G' - ip_start_row = 5 - ip_stop_column = 'G' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = 'C_ICONSET_3SIGNS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'G' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'G' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'G' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'G' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'G' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'H' - ip_start_row = 5 - ip_stop_column = 'H' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'H' ip_value = 'C_ICONSET_3SYMBOLS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'H' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'H' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'H' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'H' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'H' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'I' - ip_start_row = 5 - ip_stop_column = 'I' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'I' ip_value = 'C_ICONSET_3SYMBOLS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'I' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'I' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'I' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'I' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'I' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrows. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 12 - ip_stop_column = 'B' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = 'C_ICONSET_4ARROWS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 12 - ip_stop_column = 'C' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'C' ip_value = 'C_ICONSET_4ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4redtoblack. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 12 - ip_stop_column = 'D' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'D' ip_value = 'C_ICONSET_4REDTOBLACK' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4rating. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 12 - ip_stop_column = 'E' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'E' ip_value = 'C_ICONSET_4RATING' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4trafficlights. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 12 - ip_stop_column = 'F' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'F' ip_value = 'C_ICONSET_4TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 19 - ip_stop_column = 'B' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'B' ip_value = 'C_ICONSET_5ARROWS' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 19 - ip_stop_column = 'C' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'C' ip_value = 'C_ICONSET_5ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5rating. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 19 - ip_stop_column = 'D' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'D' ip_value = 'C_ICONSET_5RATING' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5quarters. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 19 - ip_stop_column = 'E' - ip_stop_row = 23 ). - -* DATABAR - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'B' ip_value = 'DATABAR' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_databar. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_databar = ls_databar. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 26 - ip_stop_column = 'B' - ip_stop_row = 30 ). - -* COLORSCALE - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'C' ip_value = 'COLORSCALE 2 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 26 - ip_stop_column = 'C' - ip_stop_row = 30 ). - - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'D' ip_value = 'COLORSCALE 3 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 26 - ip_stop_column = 'D' - ip_stop_row = 30 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL8 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel8. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range. - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '08_Range.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Sheet1'. - lo_worksheet->set_title( lv_title ). - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'range'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - " Define another Range with a name longer than 40 characters that - " tests the fix of issue #168 ranges namescan be only up to 20 chars - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'A_range_with_a_name_that_is_longer_than_20_characters'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Range Value 1' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Range Value 2' ). - - " issue #163 - " Define another Range with sheet visibility - lo_range = lo_worksheet->add_new_range( ). - lo_range->name = 'A_range_with_sheet_visibility'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'Range Value 3' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 'Range Value 4' ). - " issue #163 - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL9 -*& -*&---------------------------------------------------------------------* -*& abap2xlsx Demo: Data validations -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel9. - -CONSTANTS: c_fruits TYPE string VALUE 'Fruits', - c_vegetables TYPE string VALUE 'Vegetables', - c_meat TYPE string VALUE 'Meat', - c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: row TYPE zexcel_cell_row. - - -DATA: lv_title TYPE zexcel_sheet_title. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '09_DataValidation.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_sbook TYPE flag. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = c_meat ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Pork' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Beef' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Chicken' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'Turkey' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_meat. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'B' - ip_start_row = 4 - ip_stop_column = 'B' - ip_stop_row = 7 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fruits. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = c_vegetables ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Cucumber' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Sweet pepper ' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Lettuce' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_vegetables. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 6 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Table with Data Validation'. - lo_worksheet->set_title( lv_title ). - - " Maximum Text length - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'Validate Maximum Text length of <= 10 in Cell A2:' ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'abcdefghij' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_textlength. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_lessthanorequal. - lo_data_validation->formula1 = 10. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'A'. - - " Integer Value between 1 and 10 - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Validate Integer Value between 1 and 10 in Cell A5:' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = '5' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_whole. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_between. - lo_data_validation->formula1 = 1. - lo_data_validation->formula2 = 10. - lo_data_validation->prompttitle = 'Range'. - lo_data_validation->prompt = 'Enter a value between 1 and 10'. - lo_data_validation->errortitle = 'Error'. - lo_data_validation->error = 'You have entered a wrong value. Please use only numbers between 1 and 10.'. - lo_data_validation->cell_row = 5. - lo_data_validation->cell_column = 'A'. - - " Evaluation by Formula from issue #161 - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Validate if B8 contains a "-":' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Text' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = '-' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lo_data_validation->formula1 = '"IF(B8<>"""";INDIRECT(LEFT(B8;SEARCH(""-"";B8;1)));EMPTY)"'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'A'. - - " There was an error when data validation was combined with cell merges this should test that: - lo_worksheet->set_cell( ip_row = 10 ip_column = 'A' ip_value = 'Demo for data validation with a dropdown list' ). - lo_worksheet->set_merge( ip_row = 10 ip_column_start = 'A' ip_column_end = 'F' ). - - " Headlines - lo_worksheet->set_cell( ip_row = 11 ip_column = 'A' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = c_vegetables ). - - row = 12. - WHILE row < 20. " Starting with 14500 the data validation is dropped 14000 are still ok - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fruits. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'A'. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = 'Select a value' ). - " 2nd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_vegetables. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'B'. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = 'Select a value' ). - " 3rd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_meat. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = 'Select a value' ). - " 4th - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'D'. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = 'Select a value' ). - " Increment row - row = row + 1. - ENDWHILE. - - IF p_sbook = abap_true. - DATA: bookings type TABLE OF sbook. - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'SBOOK'. - lo_worksheet->set_title( lv_title ). - - SELECT * from sbook INTO TABLE bookings UP TO 4000 ROWS. - - lo_worksheet->bind_table( - EXPORTING - ip_table = bookings -* it_field_catalog = " Table binding field catalog -* is_table_settings = " Excel table binding settings -* IMPORTING -* es_table_settings = " Excel table binding settings - ). - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_EXCEL_OUTPUTOPT_INCL -*&---------------------------------------------------------------------* -CLASS lcl_output DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: output IMPORTING cl_excel TYPE REF TO zcl_excel, - f4_path RETURNING value(selected_folder) TYPE string, - parametertexts. - - PRIVATE SECTION. - METHODS: download_frontend, - download_backend, - display_online, - send_email. - - DATA: xdata TYPE xstring, " Will be used for sending as email - t_rawdata TYPE solix_tab, " Will be used for downloading or open directly - bytecount TYPE i. " Will be used for downloading or open directly -ENDCLASS. "lcl_output DEFINITION - - -SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE txt_bl1. -PARAMETERS: rb_down RADIOBUTTON GROUP rb1 DEFAULT 'X' USER-COMMAND space. - -PARAMETERS: rb_back RADIOBUTTON GROUP rb1. - -PARAMETERS: rb_show RADIOBUTTON GROUP rb1. - -PARAMETERS: rb_send RADIOBUTTON GROUP rb1. - -PARAMETERS: p_path TYPE string LOWER CASE MODIF ID pat. -PARAMETERS: p_email TYPE string LOWER CASE MODIF ID ema. -PARAMETERS: p_backfn TYPE text40 NO-DISPLAY. -SELECTION-SCREEN END OF BLOCK bl1. - - -AT SELECTION-SCREEN OUTPUT. - LOOP AT SCREEN. - - IF rb_down IS INITIAL AND screen-group1 = 'PAT'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - IF rb_send IS INITIAL AND screen-group1 = 'EMA'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - MODIFY SCREEN. - - ENDLOOP. - -INITIALIZATION. - IF sy-batch IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = p_path ). - cl_gui_cfw=>flush( ). - ENDIF. - lcl_output=>parametertexts( ). " If started in language w/o textelements translated set defaults - sy-title = gc_save_file_name. - txt_bl1 = 'Output options'(bl1). - p_backfn = gc_save_file_name. " Use as default if nothing else is supplied by submit - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - p_path = lcl_output=>f4_path( ). - - -*----------------------------------------------------------------------* -* CLASS lcl_output IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_output IMPLEMENTATION. - METHOD output. - - DATA: cl_output TYPE REF TO lcl_output, - cl_writer TYPE REF TO zif_excel_writer. - - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. - cl_output->xdata = cl_writer->write_file( cl_excel ). - -* After 6.40 via cl_bcs_convert - cl_output->t_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstring = cl_output->xdata ). - cl_output->bytecount = xstrlen( cl_output->xdata ). - -* before 6.40 -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = cl_output->xdata -* IMPORTING -* output_length = cl_output->bytecount -* TABLES -* binary_tab = cl_output->t_rawdata. - - CASE 'X'. - WHEN rb_down. - IF sy-batch IS INITIAL. - cl_output->download_frontend( ). - ELSE. - MESSAGE e001(00) WITH 'Frontenddownload impossible in background processing'. - ENDIF. - - WHEN rb_back. - cl_output->download_backend( ). - - WHEN rb_show. - IF sy-batch IS INITIAL. - cl_output->display_online( ). - ELSE. - MESSAGE e001(00) WITH 'Online display absurd in background processing'. - ENDIF. - - WHEN rb_send. - cl_output->send_email( ). - - ENDCASE. - ENDMETHOD. "output - - METHOD f4_path. - DATA: new_path TYPE string, - repid TYPE syrepid, - dynnr TYPE sydynnr, - lt_dynpfields TYPE TABLE OF dynpread, - ls_dynpfields LIKE LINE OF lt_dynpfields. - -* Get current value - dynnr = sy-dynnr. - repid = sy-repid. - ls_dynpfields-fieldname = 'P_PATH'. - APPEND ls_dynpfields TO lt_dynpfields. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = repid - dynumb = dynnr - TABLES - dynpfields = lt_dynpfields - EXCEPTIONS - invalid_abapworkarea = 1 - invalid_dynprofield = 2 - invalid_dynproname = 3 - invalid_dynpronummer = 4 - invalid_request = 5 - no_fielddescription = 6 - invalid_parameter = 7 - undefind_error = 8 - double_conversion = 9 - stepl_not_found = 10 - OTHERS = 11. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - EXIT. - ENDIF. - - READ TABLE lt_dynpfields INTO ls_dynpfields INDEX 1. - - new_path = ls_dynpfields-fieldvalue. - selected_folder = new_path. - - cl_gui_frontend_services=>directory_browse( - EXPORTING - window_title = 'Select path to download EXCEL-file' - initial_folder = new_path - CHANGING - selected_folder = new_path - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4 - ). - cl_gui_cfw=>flush( ). - CHECK new_path IS NOT INITIAL. - selected_folder = new_path. - - ENDMETHOD. "f4_path - - METHOD parametertexts. -* If started in language w/o textelements translated set defaults -* Furthermore I don't have to change the selectiontexts of all demoreports. - DEFINE default_parametertext. - if %_&1_%_app_%-text = '&1' or - %_&1_%_app_%-text is initial. - %_&1_%_app_%-text = &2. - endif. - END-OF-DEFINITION. - - default_parametertext: rb_down 'Save to frontend', - rb_back 'Save to backend', - rb_show 'Direct display', - rb_send 'Send via email', - - p_path 'Frontend-path to download to', - p_email 'Email to send xlsx to'. - - ENDMETHOD. "parametertexts - - METHOD: download_frontend. - DATA: filename TYPE string. -* I don't like p_path here - but for this include it's ok - filename = p_path. -* Add trailing "\" or "/" - IF filename CA '/'. - REPLACE REGEX '([^/])\s*$' IN filename WITH '$1/' . - ELSE. - REPLACE REGEX '([^\\])\s*$' IN filename WITH '$1\\'. - ENDIF. - - CONCATENATE filename gc_save_file_name INTO filename. -* Get trailing blank - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = bytecount - filename = filename - filetype = 'BIN' - CHANGING data_tab = t_rawdata ). - ENDMETHOD. "download_frontend - - METHOD download_backend. - DATA: bytes_remain TYPE i. - FIELD-SYMBOLS: <rawdata> LIKE LINE OF t_rawdata. - - OPEN DATASET p_backfn FOR OUTPUT IN BINARY MODE. - CHECK sy-subrc = 0. - - bytes_remain = bytecount. - - LOOP AT t_rawdata ASSIGNING <rawdata>. - - AT LAST. - CHECK bytes_remain >= 0. - TRANSFER <rawdata> TO p_backfn LENGTH bytes_remain. - EXIT. - ENDAT. - - TRANSFER <rawdata> TO p_backfn. - SUBTRACT 255 FROM bytes_remain. " Solix hat Länge 255 - - ENDLOOP. - - CLOSE DATASET p_backfn. - - - - - IF sy-calld = 'X'. " no need to display anything if download was selected and report was called for demo purposes - LEAVE PROGRAM. - ELSE. - MESSAGE 'Data transferred to default backend directory' TYPE 'I'. - ENDIF. - ENDMETHOD. "download_backend - - METHOD display_online. - DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control,"OIContainerCtrl - cl_document TYPE REF TO i_oi_document_proxy. "Office Dokument - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = cl_gui_container=>screen0 - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - WRITE: '.'. " To create an output. That way screen0 will exist - ENDMETHOD. "display_online - - METHOD send_email. -* Needed to send emails - DATA: bcs_exception TYPE REF TO cx_bcs, - errortext TYPE string, - cl_send_request TYPE REF TO cl_bcs, - cl_document TYPE REF TO cl_document_bcs, - cl_recipient TYPE REF TO if_recipient_bcs, - cl_sender TYPE REF TO cl_cam_address_bcs, - t_attachment_header TYPE soli_tab, - wa_attachment_header LIKE LINE OF t_attachment_header, - attachment_subject TYPE sood-objdes, - - sood_bytecount TYPE sood-objlen, - mail_title TYPE so_obj_des, - t_mailtext TYPE soli_tab, - wa_mailtext LIKE LINE OF t_mailtext, - send_to TYPE adr6-smtp_addr, - sent TYPE os_boolean. - - - mail_title = 'Mail title'. - wa_mailtext = 'Mailtext'. - APPEND wa_mailtext TO t_mailtext. - - TRY. -* Create send request - cl_send_request = cl_bcs=>create_persistent( ). -* Create new document with mailtitle and mailtextg - cl_document = cl_document_bcs=>create_document( i_type = 'RAW' "#EC NOTEXT - i_text = t_mailtext - i_subject = mail_title ). -* Add attachment to document -* since the new excelfiles have an 4-character extension .xlsx but the attachment-type only holds 3 charactes .xls, -* we have to specify the real filename via attachment header -* Use attachment_type xls to have SAP display attachment with the excel-icon - attachment_subject = gc_save_file_name. - CONCATENATE '&SO_FILENAME=' attachment_subject INTO wa_attachment_header. - APPEND wa_attachment_header TO t_attachment_header. -* Attachment - sood_bytecount = bytecount. " next method expects sood_bytecount instead of any positive integer *sigh* - cl_document->add_attachment( i_attachment_type = 'XLS' "#EC NOTEXT - i_attachment_subject = attachment_subject - i_attachment_size = sood_bytecount - i_att_content_hex = t_rawdata - i_attachment_header = t_attachment_header ). - -* add document to send request - cl_send_request->set_document( cl_document ). - -* set sender in case if no own email is availabe -* cl_sender = cl_cam_address_bcs=>create_internet_address( 'sender@sender.sender' ). -* cl_send_request->set_sender( cl_sender ). - -* add recipient(s) - here only 1 will be needed - send_to = p_email. - IF send_to IS INITIAL. - send_to = 'no_email@no_email.no_email'. " Place into SOST in any case for demonstration purposes - ENDIF. - cl_recipient = cl_cam_address_bcs=>create_internet_address( send_to ). - cl_send_request->add_recipient( cl_recipient ). - -* Und abschicken - sent = cl_send_request->send( i_with_error_screen = 'X' ). - - COMMIT WORK. - - IF sent IS INITIAL. - MESSAGE i500(sbcoms) WITH p_email. - ELSE. - MESSAGE s022(so). - MESSAGE 'Document ready to be sent - Check SOST or SCOT' TYPE 'I'. - ENDIF. - - CATCH cx_bcs INTO bcs_exception. - errortext = bcs_exception->if_message~get_text( ). - MESSAGE errortext TYPE 'I'. - - ENDTRY. - ENDMETHOD. "send_email - - -ENDCLASS. "lcl_output IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched1. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo01' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_reader TYPE REF TO zif_excel_reader, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lt_files TYPE filetable, - ls_file TYPE file_table, - lv_rc TYPE i, - lv_value TYPE zexcel_cell_value. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'TechEd01.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - -******************************* -* abap2xlsx read XLSX * -******************************* - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_2007. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_worksheet->get_cell( EXPORTING ip_column = 'C' - ip_row = 10 - IMPORTING ep_value = lv_value ). - - WRITE: 'abap2xlsx total score is ', lv_value. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED2 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched2. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lv_style_title_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - -* ls_key-relid = 'MI'. -* ls_key-objid = 'WBLOGO'. -* lo_drawing->set_media_www( ip_key = ls_key -* ip_width = 140 -* ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lo_send_request TYPE REF TO cl_bcs, - lo_document TYPE REF TO cl_document_bcs, - lo_sender TYPE REF TO cl_sapuser_bcs, - lo_recipient TYPE REF TO cl_sapuser_bcs, - lo_recipient_i TYPE REF TO CL_CAM_ADDRESS_BCS. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lv_bytecount_c TYPE sood-objlen, - lt_file_tab TYPE solix_tab. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - lv_bytecount_c = lv_bytecount. - - " Send via email - lo_document = cl_document_bcs=>create_document( i_type = 'RAW' - i_subject = 'Demo TechEd' ). - - lo_document->add_attachment( i_attachment_type = 'EXT' - i_attachment_subject = 'abap2xlsx.xlsx' - i_attachment_size = lv_bytecount_c - i_att_content_hex = lt_file_tab ). - - lo_sender = cl_sapuser_bcs=>create( sy-uname ). - lo_recipient = cl_sapuser_bcs=>create( sy-uname ). -* lo_recipient_i = cl_cam_address_bcs=>create_internet_address( 'ivan.femia@techedge.it' ). - - lo_send_request = cl_bcs=>create_persistent( ). - lo_send_request->set_document( lo_document ). - lo_send_request->set_sender( lo_sender ). - lo_send_request->add_recipient( lo_recipient ). - lo_send_request->set_send_immediately( abap_true ). - lo_send_request->send( ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel3. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: ls_table_settings TYPE zexcel_s_table_settings. - - -DATA: lv_title TYPE zexcel_sheet_title, - lt_carr TYPE TABLE OF scarr, - row TYPE zexcel_cell_row VALUE 2, - lo_range TYPE REF TO zcl_excel_range. -DATA: lo_data_validation TYPE REF TO zcl_excel_data_validation. -FIELD-SYMBOLS: <carr> LIKE LINE OF lt_carr. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '03_iTab.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_empty TYPE flag. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - DATA lt_test TYPE TABLE OF sflight. - - IF p_empty <> abap_true. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - ENDIF. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - ls_table_settings-nofilters = abap_true. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). "make date field a bit wider - column_dimension->set_width( ip_width = 11 ). - " Add another table for data validations - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = c_airlines ). - SELECT * FROM scarr INTO TABLE lt_carr. "#EC CI_NOWHERE - LOOP AT lt_carr ASSIGNING <carr>. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = <carr>-carrid ). - row = row + 1. - ENDLOOP. - row = row - 1. - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_airlines. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 2 - ip_stop_column = 'A' - ip_stop_row = row ). - " Set Data Validation - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_airlines. - lo_data_validation->cell_row = 4. - lo_data_validation->cell_column = 'C'. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZABAP2XLSX_DEMO_SHOW -*&---------------------------------------------------------------------* -REPORT zabap2xlsx_demo_like_se83. - - -*----------------------------------------------------------------------* -* CLASS lcl_perform DEFINITION -*----------------------------------------------------------------------* -CLASS lcl_perform DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: setup_objects, - collect_reports, - - handle_nav FOR EVENT double_click OF cl_gui_alv_grid - IMPORTING e_row. - - PRIVATE SECTION. - TYPES: BEGIN OF ty_reports, - progname TYPE reposrc-progname, - sort TYPE reposrc-progname, - filename TYPE string, - END OF ty_reports. - - CLASS-DATA: - lo_grid TYPE REF TO cl_gui_alv_grid, - lo_text TYPE REF TO cl_gui_textedit, - cl_document TYPE REF TO i_oi_document_proxy, - - t_reports TYPE STANDARD TABLE OF ty_reports WITH NON-UNIQUE DEFAULT KEY. - CLASS-DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control. "Office Dokument - -ENDCLASS. "lcl_perform DEFINITION - - -START-OF-SELECTION. - lcl_perform=>collect_reports( ). - lcl_perform=>setup_objects( ). - -END-OF-SELECTION. - - WRITE '.'. " Force output - - -*----------------------------------------------------------------------* -* CLASS lcl_perform IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_perform IMPLEMENTATION. - METHOD setup_objects. - DATA: lo_split TYPE REF TO cl_gui_splitter_container, - lo_container TYPE REF TO cl_gui_container. - - DATA: it_fieldcat TYPE lvc_t_fcat, - is_layout TYPE lvc_s_layo, - is_variant TYPE disvariant. - FIELD-SYMBOLS: <fc> LIKE LINE OF it_fieldcat. - - - CREATE OBJECT lo_split - EXPORTING - parent = cl_gui_container=>screen0 - rows = 1 - columns = 3 - no_autodef_progid_dynnr = 'X'. - lo_split->set_column_width( EXPORTING id = 1 - width = 20 ). - lo_split->set_column_width( EXPORTING id = 2 - width = 40 ). - -* Left: List of reports - lo_container = lo_split->get_container( row = 1 - column = 1 ). - - CREATE OBJECT lo_grid - EXPORTING - i_parent = lo_container. - SET HANDLER lcl_perform=>handle_nav FOR lo_grid. - - is_variant-report = sy-repid. - is_variant-handle = '0001'. - - is_layout-cwidth_opt = 'X'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'PROGNAME'. - <fc>-tabname = 'REPOSRC'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'SORT'. - <fc>-ref_field = 'PROGNAME'. - <fc>-ref_table = 'REPOSRC'. - - - lo_grid->set_table_for_first_display( EXPORTING - is_variant = is_variant - i_save = 'A' - is_layout = is_layout - CHANGING - it_outtab = t_reports - it_fieldcatalog = it_fieldcat - EXCEPTIONS - invalid_parameter_combination = 1 - program_error = 2 - too_many_lines = 3 - OTHERS = 4 ). - -* Middle: Text with coding - lo_container = lo_split->get_container( row = 1 - column = 2 ). - CREATE OBJECT lo_text - EXPORTING - parent = lo_container. - lo_text->set_readonly_mode( cl_gui_textedit=>true ). - lo_text->set_font_fixed( ). - - - -* right: DemoOutput - lo_container = lo_split->get_container( row = 1 - column = 3 ). - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = lo_container - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - - ENDMETHOD. "setup_objects - - "collect_reports - METHOD collect_reports. - FIELD-SYMBOLS:<report> LIKE LINE OF t_reports. - DATA: t_source TYPE STANDARD TABLE OF text255 WITH NON-UNIQUE DEFAULT KEY. - -* Get all demoreports - SELECT progname - INTO CORRESPONDING FIELDS OF TABLE t_reports - FROM reposrc - WHERE progname LIKE 'ZDEMO_EXCEL%' - AND progname <> sy-repid - AND subc = '1'. - - LOOP AT t_reports ASSIGNING <report>. - -* Check if already switched to new outputoptions - READ REPORT <report>-progname INTO t_source. - IF sy-subrc = 0. - FIND 'INCLUDE zdemo_excel_outputopt_incl.' IN TABLE t_source IGNORING CASE. - ENDIF. - IF sy-subrc <> 0. - DELETE t_reports. - CONTINUE. - ENDIF. - - -* Build half-numeric sort - <report>-sort = <report>-progname. - REPLACE REGEX '(ZDEMO_EXCEL)(\d\d)\s*$' IN <report>-sort WITH '$1\0$2'. " REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE - - REPLACE REGEX '(ZDEMO_EXCEL)(\d)\s*$' IN <report>-sort WITH '$1\0\0$2'. - ENDLOOP. - SORT t_reports BY sort progname. - - ENDMETHOD. "collect_reports - - METHOD handle_nav. - CONSTANTS: filename TYPE text80 VALUE 'ZABAP2XLSX_DEMO_SHOW.xlsx'. - DATA: wa_report LIKE LINE OF t_reports, - t_source TYPE STANDARD TABLE OF text255, - t_rawdata TYPE solix_tab, - wa_rawdata LIKE LINE OF t_rawdata, - bytecount TYPE i, - length TYPE i, - add_selopt TYPE flag. - - - READ TABLE t_reports INTO wa_report INDEX e_row-index. - CHECK sy-subrc = 0. - -* Set new text into middle frame - READ REPORT wa_report-progname INTO t_source. - lo_text->set_text_as_r3table( EXPORTING table = t_source ). - - -* Unload old xls-file - cl_document->close_document( ). - -* Get the demo -* If additional parameters found on selection screen, start via selection screen , otherwise start w/o - CLEAR add_selopt. - FIND 'PARAMETERS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ELSE. - FIND 'SELECT-OPTIONS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ENDIF. - ENDIF. - IF add_selopt IS INITIAL. - SUBMIT (wa_report-progname) AND RETURN - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ELSE. - SUBMIT (wa_report-progname) VIA SELECTION-SCREEN AND RETURN - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ENDIF. - - OPEN DATASET filename FOR INPUT IN BINARY MODE. - IF sy-subrc = 0. - DO. - CLEAR wa_rawdata. - READ DATASET filename INTO wa_rawdata LENGTH length. - IF sy-subrc <> 0. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - EXIT. - ENDIF. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - ENDDO. - CLOSE DATASET filename. - ENDIF. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - ENDMETHOD. "handle_nav - -ENDCLASS. "lcl_perform IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZANGRY_BIRDS -*& Just for fun -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zangry_birds. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_border_light TYPE REF TO zcl_excel_style_border, - lo_style_color0 TYPE REF TO zcl_excel_style, - lo_style_color1 TYPE REF TO zcl_excel_style, - lo_style_color2 TYPE REF TO zcl_excel_style, - lo_style_color3 TYPE REF TO zcl_excel_style, - lo_style_color4 TYPE REF TO zcl_excel_style, - lo_style_color5 TYPE REF TO zcl_excel_style, - lo_style_color6 TYPE REF TO zcl_excel_style, - lo_style_color7 TYPE REF TO zcl_excel_style, - lo_style_credit TYPE REF TO zcl_excel_style, - lo_style_link TYPE REF TO zcl_excel_style, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_style_color0_guid TYPE zexcel_cell_style, - lv_style_color1_guid TYPE zexcel_cell_style, - lv_style_color2_guid TYPE zexcel_cell_style, - lv_style_color3_guid TYPE zexcel_cell_style, - lv_style_color4_guid TYPE zexcel_cell_style, - lv_style_color5_guid TYPE zexcel_cell_style, - lv_style_color6_guid TYPE zexcel_cell_style, - lv_style_color7_guid TYPE zexcel_cell_style, - lv_style_credit_guid TYPE zexcel_cell_style, - lv_style_link_guid TYPE zexcel_cell_style, - lv_style TYPE zexcel_cell_style. - -DATA: lv_col_str TYPE zexcel_cell_column_alpha, - lv_row TYPE i, - lv_col TYPE i, - lt_mapper TYPE TABLE OF zexcel_cell_style, - ls_mapper TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'angry_birds.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_white. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - - " Create color white - lo_style_color0 = lo_excel->add_new_style( ). - lo_style_color0->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color0->fill->fgcolor-rgb = 'FFFFFFFF'. - lo_style_color0->borders->allborders = lo_border_light. - lv_style_color0_guid = lo_style_color0->get_guid( ). - - " Create color black - lo_style_color1 = lo_excel->add_new_style( ). - lo_style_color1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color1->fill->fgcolor-rgb = 'FF252525'. - lo_style_color1->borders->allborders = lo_border_light. - lv_style_color1_guid = lo_style_color1->get_guid( ). - - " Create color dark green - lo_style_color2 = lo_excel->add_new_style( ). - lo_style_color2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color2->fill->fgcolor-rgb = 'FF75913A'. - lo_style_color2->borders->allborders = lo_border_light. - lv_style_color2_guid = lo_style_color2->get_guid( ). - - " Create color light green - lo_style_color3 = lo_excel->add_new_style( ). - lo_style_color3->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color3->fill->fgcolor-rgb = 'FF9DFB73'. - lo_style_color3->borders->allborders = lo_border_light. - lv_style_color3_guid = lo_style_color3->get_guid( ). - - " Create color green - lo_style_color4 = lo_excel->add_new_style( ). - lo_style_color4->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color4->fill->fgcolor-rgb = 'FF92CF56'. - lo_style_color4->borders->allborders = lo_border_light. - lv_style_color4_guid = lo_style_color4->get_guid( ). - - " Create color 2dark green - lo_style_color5 = lo_excel->add_new_style( ). - lo_style_color5->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color5->fill->fgcolor-rgb = 'FF506228'. - lo_style_color5->borders->allborders = lo_border_light. - lv_style_color5_guid = lo_style_color5->get_guid( ). - - " Create color yellow - lo_style_color6 = lo_excel->add_new_style( ). - lo_style_color6->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color6->fill->fgcolor-rgb = 'FFC3E224'. - lo_style_color6->borders->allborders = lo_border_light. - lv_style_color6_guid = lo_style_color6->get_guid( ). - - " Create color yellow - lo_style_color7 = lo_excel->add_new_style( ). - lo_style_color7->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color7->fill->fgcolor-rgb = 'FFB3C14F'. - lo_style_color7->borders->allborders = lo_border_light. - lv_style_color7_guid = lo_style_color7->get_guid( ). - - " Credits - lo_style_credit = lo_excel->add_new_style( ). - lo_style_credit->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_credit->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_credit->font->size = 20. - lv_style_credit_guid = lo_style_credit->get_guid( ). - - " Link - lo_style_link = lo_excel->add_new_style( ). - lo_style_link->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_link->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. -* lo_style_link->font->size = 20. - lv_style_link_guid = lo_style_link->get_guid( ). - - " Create image map " line 2 - DO 30 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 3 - DO 28 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 4 - DO 27 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 5 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 6 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 7 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 8 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 9 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 10 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 11 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 12 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 13 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 14 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 12 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 15 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 16 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 17 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 18 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 19 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 27 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 20 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 21 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 19 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 22 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 23 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 24 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 25 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 26 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 27 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 28 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 29 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 30 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 31 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 32 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 33 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 34 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 35 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 36 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 37 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 38 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 39 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 22 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 40 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 41 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 42 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 43 - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 44 - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 45 - DO 16 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 46 - DO 18 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Angry Birds' ). - - lv_row = 1. - lv_col = 1. - - LOOP AT lt_mapper INTO ls_mapper. - lv_col_str = zcl_excel_common=>convert_column2alpha( lv_col ). - IF ls_mapper IS INITIAL. - lo_row_dimension = lo_worksheet->get_row_dimension( ip_row = lv_row ). - lo_row_dimension->set_row_height( ip_row_height = 8 ). - lv_col = 1. - lv_row = lv_row + 1. - CONTINUE. - ENDIF. - lo_worksheet->set_cell( ip_column = lv_col_str - ip_row = lv_row - ip_value = space - ip_style = ls_mapper ). - lv_col = lv_col + 1. - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = lv_col_str ). - lo_column_dimension->set_width( ip_width = 2 ). - ENDLOOP. - - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 15 - ip_value = 'Created with abap2xlsx' - ip_style = lv_style_credit_guid ). - - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 24 - ip_value = 'http://www.abap2xlsx.org' - ip_style = lv_style_link_guid - ip_hyperlink = lo_hyperlink ). - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'AP' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->set_merge( ip_row = 15 ip_column_start = 'AP' ip_row_to = 22 ip_column_end = 'AR' ). - lo_worksheet->set_merge( ip_row = 24 ip_column_start = 'AP' ip_row_to = 26 ip_column_end = 'AR' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_CALENDAR -*& abap2xlsx Demo: Create Calendar with Pictures -*&---------------------------------------------------------------------* -*& This report creates a monthly calendar in the specified date range. -*& Each month is put on a seperate worksheet. The pictures for each -*& month can be specified in a tab delimited file called "Calendar.txt" -*& which is saved in the Export Directory. By default this is the SAP -*& Workdir. The file contains 3 fields: -*& -*& Month (with leading 0) -*& Image Filename -*& Image Description -*& URL for the Description -*& -*& The Images should be landscape JPEG's with a 3:2 ratio and min. -*& 450 pixel height. They must also be saved in the Export Directory. -*& In my tests I've discovered a limit of 20 MB in the -*& cl_gui_frontend_services=>gui_download method. So keep your images -*& smaller or chnage to a server export using OPEN DATASET. -*&---------------------------------------------------------------------* - -REPORT zdemo_calendar. - -TYPE-POOLS: abap. -CONSTANTS: gc_save_file_name TYPE string VALUE 'Calendar.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. -INCLUDE zdemo_calendar_classes. - -DATA: lv_workdir TYPE string. - -PARAMETERS: p_from TYPE dfrom DEFAULT '20130101', - p_to TYPE dto DEFAULT '20131231'. - -SELECTION-SCREEN BEGIN OF BLOCK orientation WITH FRAME TITLE orient. -PARAMETERS: p_portr TYPE flag RADIOBUTTON GROUP orie, - p_lands TYPE flag RADIOBUTTON GROUP orie DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK orientation. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - orient = 'Orientation'(000). - -START-OF-SELECTION. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lo_style_month TYPE REF TO zcl_excel_style, - lv_style_month_guid TYPE zexcel_cell_style. - DATA: lo_style_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lv_style_border_guid TYPE zexcel_cell_style. - DATA: lo_style_center TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lv_full_path TYPE string, - image_descr_path TYPE string, - lv_file_separator TYPE c. - DATA: lv_content TYPE xstring, - width TYPE i, - lv_height TYPE i, - lv_from_row TYPE zexcel_cell_row. - - DATA: month TYPE i, - month_nr TYPE fcmnr, - count TYPE i VALUE 1, - title TYPE zexcel_sheet_title, - value TYPE string, - image_path TYPE string, - date_from TYPE datum, - date_to TYPE datum, - row TYPE zexcel_cell_row, - to_row TYPE zexcel_cell_row, - to_col TYPE zexcel_cell_column_alpha, - to_col_end TYPE zexcel_cell_column_alpha, - to_col_int TYPE i. - - DATA: month_names TYPE TABLE OF t247. - FIELD-SYMBOLS: <month_name> LIKE LINE OF month_names. - - TYPES: BEGIN OF tt_datatab, - month_nr TYPE fcmnr, - filename TYPE string, - descr TYPE string, - url TYPE string, - END OF tt_datatab. - - DATA: image_descriptions TYPE TABLE OF tt_datatab. - FIELD-SYMBOLS: <img_descr> LIKE LINE OF image_descriptions. - - CONSTANTS: lv_default_file_name TYPE string VALUE 'Calendar', "#EC NOTEXT - c_from_row_portrait TYPE zexcel_cell_row VALUE 28, - c_from_row_landscape TYPE zexcel_cell_row VALUE 38, - from_col TYPE zexcel_cell_column_alpha VALUE 'C', - c_height_portrait TYPE i VALUE 450, " Image Height in Portrait Mode - c_height_landscape TYPE i VALUE 670, " Image Height in Landscape Mode - c_factor TYPE f VALUE '1.5'. " Image Ratio, default 3:2 - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name '.xlsx' INTO lv_full_path. "#EC NOTEXT - - " Read Image Names for Month and Description - CONCATENATE p_path lv_file_separator lv_default_file_name '.txt' INTO image_descr_path. "#EC NOTEXT - cl_gui_frontend_services=>gui_upload( - EXPORTING - filename = image_descr_path " Name of file - filetype = 'ASC' " File Type (ASCII, Binary) - has_field_separator = 'X' - read_by_line = 'X' " File Written Line-By-Line to the Internal Table - CHANGING - data_tab = image_descriptions " Transfer table for file contents - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create Styles - " Create an underline double style - lo_style_month = lo_excel->add_new_style( ). - " lo_style_month->font->underline = abap_true. - " lo_style_month->font->underline_mode = zcl_excel_style_font=>c_underline_single. - lo_style_month->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_month->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_month->font->family = zcl_excel_style_font=>c_family_roman. - lo_style_month->font->bold = abap_true. - lo_style_month->font->size = 36. - lv_style_month_guid = lo_style_month->get_guid( ). - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lo_style_border->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_border_guid = lo_style_border->get_guid( ). - "Create style alignment center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_center->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_center_guid = lo_style_center->get_guid( ). - - " Get Month Names - CALL FUNCTION 'MONTH_NAMES_GET' - TABLES - month_names = month_names. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = p_from - i_date_to = p_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - date_from = p_from. - - WHILE count <= month. - IF count = 1. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - ELSE. - lo_worksheet = lo_excel->add_new_worksheet( ). - ENDIF. - - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - - title = count. - value = count. - CONDENSE title. - CONDENSE value. - lo_worksheet->set_title( title ). - lo_worksheet->set_print_gridlines( abap_false ). - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_col_dim = lo_worksheet->get_column_dimension( 'A' ). - lo_col_dim->set_width( '1.0' ). - lo_col_dim = lo_worksheet->get_column_dimension( 'B' ). - lo_col_dim->set_width( '2.0' ). - IF p_lands = abap_true. - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lv_height = c_height_landscape. - lv_from_row = c_from_row_landscape. - lo_worksheet->sheet_setup->margin_top = '0.10'. - lo_worksheet->sheet_setup->margin_left = '0.10'. - lo_worksheet->sheet_setup->margin_right = '0.10'. - lo_worksheet->sheet_setup->margin_bottom = '0.10'. - ELSE. - lo_col_dim = lo_worksheet->get_column_dimension( 'K' ). - lo_col_dim->set_width( '3.0' ). - lo_worksheet->sheet_setup->margin_top = '0.80'. - lo_worksheet->sheet_setup->margin_left = '0.55'. - lo_worksheet->sheet_setup->margin_right = '0.05'. - lo_worksheet->sheet_setup->margin_bottom = '0.30'. - lv_height = c_height_portrait. - lv_from_row = c_from_row_portrait. - ENDIF. - - " Add Month Name - month_nr = date_from+4(2). - IF p_portr = abap_true. - READ TABLE month_names WITH KEY mnr = month_nr ASSIGNING <month_name>. - CONCATENATE <month_name>-ltx ` ` date_from(4) INTO value. - row = lv_from_row - 2. - to_col = from_col. - ELSE. - row = lv_from_row - 1. - to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 32. - to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). - to_col_int = to_col_int + 1. - to_col_end = zcl_excel_common=>convert_column2alpha( to_col_int ). - CONCATENATE month_nr '/' date_from+2(2) INTO value. - to_row = row + 2. - lo_worksheet->set_merge( - EXPORTING - ip_column_start = to_col " Cell Column Start - ip_column_end = to_col_end " Cell Column End - ip_row = row " Cell Row - ip_row_to = to_row " Cell Row - ). - ENDIF. - lo_worksheet->set_cell( - EXPORTING - ip_column = to_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = lv_style_month_guid - ). - -* to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 7. -* to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). -* -* lo_worksheet->set_merge( -* EXPORTING -* ip_column_start = from_col " Cell Column Start -* ip_column_end = to_col " Cell Column End -* ip_row = row " Cell Row -* ip_row_to = row " Cell Row -* ). - - " Add drawing from a XSTRING read from a file - UNASSIGN <img_descr>. - READ TABLE image_descriptions WITH KEY month_nr = month_nr ASSIGNING <img_descr>. - IF <img_descr> IS ASSIGNED. - value = <img_descr>-descr. - IF p_portr = abap_true. - row = lv_from_row - 3. - ELSE. - row = lv_from_row - 2. - ENDIF. - IF NOT <img_descr>-url IS INITIAL. - hyperlink = zcl_excel_hyperlink=>create_external_link( <img_descr>-url ). - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - ELSE. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ). - ENDIF. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '22.0' ). - - " In Landscape mode the row between the description and the - " dates should be not so high - IF p_lands = abap_true. - row = lv_from_row - 3. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '7.0' ). - row = lv_from_row - 1. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - ENDIF. - - CONCATENATE p_path lv_file_separator <img_descr>-filename INTO image_path. - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 1 - ip_from_col = 'B' ). - - lv_content = zcl_helper=>load_image( image_path ). - width = lv_height * c_factor. - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = width - ip_height = lv_height ). - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - " Add Calendar - CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH' - EXPORTING - day_in = date_from - IMPORTING - last_day_of_month = date_to. - IF p_portr = abap_true. - zcl_helper=>add_calendar( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ELSE. - zcl_helper=>add_calendar_landscape( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ENDIF. - count = count + 1. - date_from = date_to + 1. - ENDWHILE. - - lo_excel->set_active_sheet_index_by_name( '1' ). -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_CALENDAR_CLASSES -*&---------------------------------------------------------------------* - -*&---------------------------------------------------------------------* -*& Class ZCL_DATE_CALCULATION -*&---------------------------------------------------------------------* -* Text -*----------------------------------------------------------------------* -CLASS zcl_date_calculation DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: months_between_two_dates - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_incl_to TYPE flag - EXPORTING - e_month TYPE i. -ENDCLASS. "ZCL_DATE_CALCULATION - - -*----------------------------------------------------------------------* -* CLASS ZCL_DATE_CALCULATION IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation IMPLEMENTATION. - METHOD months_between_two_dates. - DATA: date_to TYPE datum. - DATA: BEGIN OF datum_von, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_von. - - DATA: BEGIN OF datum_bis, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_bis. - - e_month = 0. - - CHECK NOT ( i_date_from IS INITIAL ) - AND NOT ( i_date_to IS INITIAL ). - - date_to = i_date_to. - IF i_incl_to = abap_true. - date_to = date_to + 1. - ENDIF. - - datum_von = i_date_from. - datum_bis = date_to. - - e_month = ( datum_bis-jjjj - datum_von-jjjj ) * 12 - + ( datum_bis-mm - datum_von-mm ). - ENDMETHOD. "MONTHS_BETWEEN_TWO_DATES -ENDCLASS. "ZCL_DATE_CALCULATION IMPLEMENTATION - -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test DEFINITION FOR TESTING - " DURATION SHORT - " RISK LEVEL HARMLESS - "#AU Duration Medium - "#AU Risk_Level Harmless - . - PUBLIC SECTION. - METHODS: - months_between_two_dates FOR TESTING. -ENDCLASS. "zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test IMPLEMENTATION. - METHOD months_between_two_dates. - - DATA: date_from TYPE datum VALUE '20120101', - date_to TYPE datum VALUE '20121231'. - DATA: month TYPE i. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - cl_aunit_assert=>assert_equals( - exp = 12 " Data Object with Expected Type - act = month " Data Object with Current Value - msg = 'Calculated date is wrong' " Message in Case of Error - ). - - ENDMETHOD. "months_between_two_dates -ENDCLASS. "zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* CLASS zcl_helper DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: - load_image - IMPORTING - filename TYPE string - RETURNING value(r_image) TYPE xstring, - add_calendar - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calendar_landscape - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_a2x_footer - IMPORTING - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calender_week - IMPORTING - i_date TYPE datum - i_row TYPE zexcel_cell_row - i_col TYPE zexcel_cell_column_alpha - i_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet. -ENDCLASS. "zcl_helper DEFINITION - -*----------------------------------------------------------------------* -* CLASS zcl_helper IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper IMPLEMENTATION. - METHOD load_image. - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = filename - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = r_image - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - ENDMETHOD. "load_image - METHOD add_calendar. - DATA: day_names TYPE TABLE OF t246. - DATA: row TYPE zexcel_cell_row, - row_max TYPE i, - col_int TYPE zexcel_cell_column, - col_max TYPE i, - from_col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha, - lr_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lr_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: lv_date TYPE datum, - value TYPE string, - weekday TYPE wotnr, - weekrow TYPE wotnr VALUE 1, - day TYPE i, - width TYPE f, - height TYPE f. - DATA: hyperlink TYPE REF TO zcl_excel_hyperlink. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - from_col_int = zcl_excel_common=>convert_column2int( i_from_col ). - " Add description for Calendar Week - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = 'CW'(001) " Cell Value - ip_style = i_cw_style - ). - - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - LOOP AT day_names ASSIGNING <day_name>. - row = i_from_row. - col_int = from_col_int + <day_name>-wotnr. - col = zcl_excel_common=>convert_column2alpha( col_int ). - value = <day_name>-langt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - ENDLOOP. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - - row = i_from_row + weekrow. - col_int = from_col_int + weekday. - col = zcl_excel_common=>convert_column2alpha( col_int ). - - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - - IF weekday = 7. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - weekrow = weekrow + 1. - ENDIF. - lv_date = lv_date + 1. - ENDWHILE. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - " Add Created with abap2xlsx - row = row + 2. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - col_int = from_col_int. - col_max = from_col_int + 7. - WHILE col_int <= col_max. - col = zcl_excel_common=>convert_column2alpha( col_int ). - IF sy-index = 1. - width = '5.0'. - ELSE. - width = '11.4'. - ENDIF. - lr_col_dim = c_worksheet->get_column_dimension( col ). - lr_col_dim->set_width( width ). - col_int = col_int + 1. - ENDWHILE. - row = i_from_row + 1. - row_max = i_from_row + 6. - WHILE row <= row_max. - height = 50. - lr_row_dim = c_worksheet->get_row_dimension( row ). - lr_row_dim->set_row_height( height ). - row = row + 1. - ENDWHILE. - ENDMETHOD. "add_calendar - METHOD add_a2x_footer. - DATA: value TYPE string, - hyperlink TYPE REF TO zcl_excel_hyperlink. - - value = 'Created with abap2xlsx. Find more information at http://abap2xlsx.org.'(002). - hyperlink = zcl_excel_hyperlink=>create_external_link( 'http://abap2xlsx.org' ). "#EC NOTEXT - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - - ENDMETHOD. "add_a2x_footer - METHOD add_calendar_landscape. - DATA: day_names TYPE TABLE OF t246. - - DATA: lv_date TYPE datum, - day TYPE i, - value TYPE string, - weekday TYPE wotnr. - DATA: row TYPE zexcel_cell_row, - from_col_int TYPE zexcel_cell_column, - col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha. - DATA: lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - " Day name row - row = i_from_row. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - READ TABLE day_names ASSIGNING <day_name> - WITH KEY wotnr = weekday. - value = <day_name>-kurzt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - - " Day row - row = i_from_row + 1. - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - - - lv_date = lv_date + 1. - ENDWHILE. - " Add ABAP2XLSX Footer - row = i_from_row + 2. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = c_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - row = i_from_row + 3. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - - " Set with for all 31 coulumns - WHILE day < 32. - day = day + 1. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - ENDWHILE. - ENDMETHOD. "ADD_CALENDAR_LANDSCAPE - - METHOD add_calender_week. - DATA: week TYPE kweek, - week_int TYPE i, - value TYPE string. - " Add Calender Week - CALL FUNCTION 'DATE_GET_WEEK' - EXPORTING - date = i_date " Date for which the week should be calculated - IMPORTING - week = week. " Week for date (format:YYYYWW) - value = week+4(2). - week_int = value. - value = week_int. - CONDENSE value. - c_worksheet->set_cell( - EXPORTING - ip_column = i_col " Cell Column - ip_row = i_row " Cell Row - ip_value = value " Cell Value - ip_style = i_style - ). - ENDMETHOD. "add_calender_week -ENDCLASS. "zcl_helper IMPLEMENTATION - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel. - -DATA: lv_workdir TYPE string, - lv_upfile TYPE string. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = sy-lisel ). - CONCATENATE p_path sy-lisel '01_HelloWorld.xlsx' INTO lv_upfile. - - SUBMIT zdemo_excel1 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Hello world - SUBMIT zdemo_excel2 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Styles - SUBMIT zdemo_excel3 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: iTab binding - SUBMIT zdemo_excel4 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Multi sheets, page setup and sheet properties - SUBMIT zdemo_excel5 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel6 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Formulas - SUBMIT zdemo_excel7 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel8 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Ranges - SUBMIT zdemo_excel9 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Data validation - SUBMIT zdemo_excel10 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Bind table with field catalog - " zdemo_excel11 is not added because it has a selection screen and - " you also need to have business partners maintained in transaction BP - SUBMIT zdemo_excel12 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Column size - SUBMIT zdemo_excel13 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Merge cell - SUBMIT zdemo_excel14 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Alignment - SUBMIT zdemo_excel16 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Drawing - SUBMIT zdemo_excel17 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Lock sheet - SUBMIT zdemo_excel18 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Lock workbook - SUBMIT zdemo_excel19 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Set active sheet - " zdemo_excel20 is not added because it uses ALV and cannot be processed (OLE2) - SUBMIT zdemo_excel21 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Color Picker - SUBMIT zdemo_excel22 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Bind table with field catalog & sheet style - SUBMIT zdemo_excel23 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Multiple sheets with and w/o grid lines, print options - SUBMIT zdemo_excel24 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Multiple sheets with different default date formats - SUBMIT zdemo_excel25 AND RETURN. " abap2xlsx Demo: Create and xlsx on Application Server (could be executed in batch mode) - " zdemo_excel26 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel27 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional Formatting - SUBMIT zdemo_excel28 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: CSV writer - " SUBMIT zdemo_excel29 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Macro enabled workbook - SUBMIT zdemo_excel30 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: ABAP Cell data types - SUBMIT zdemo_excel31 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Autosize Column with different Font sizes - " zdemo_excel32 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel33 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Table autofilter - SUBMIT zdemo_excel34 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Static Styles Chess - SUBMIT zdemo_excel35 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Static Styles - SUBMIT zdemo_excel36 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Style applied to sheet, column and single cell - SUBMIT zdemo_excel37 WITH p_upfile = lv_upfile - WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Simplest call of the reader and writer - passthrough data - SUBMIT zdemo_excel38 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Show off integration of drawings ( here using the SAP-Icons ) - SUBMIT ZDEMO_EXCEL39 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Charts - " - " Reader/Writer Demo must always run at the end - " to make sure all documents where created - " - SUBMIT zdemo_excel15 WITH p_path = p_path AND RETURN. " Read Excel and write it back - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel1. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -CONSTANTS: gc_save_file_name TYPE string VALUE '01_HelloWorld.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). -* lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_width( ip_width = 11 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL10 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel10. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_iconset TYPE zexcel_conditional_iconset. - -CONSTANTS: gc_save_file_name TYPE string VALUE '10_iTabFieldCatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - "Conditional style - lo_style_conditional2 = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional2->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional2->mode_iconset = ls_iconset. - lo_style_conditional2->priority = 1. - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_count. - WHEN 'CONNID'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'PRICE'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - <fs_field_catalog>-cond_style = lo_style_conditional2. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). "make date field a bit wider - column_dimension->set_width( ip_width = 13 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL11 -*& Export Organisation and Contact Persons using ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel11. - -TYPE-POOLS: abap. - -DATA: central_search TYPE bapibus1006_central_search, - addressdata_search TYPE bapibus1006_addr_search, - others_search TYPE bapibus1006_other_data. -DATA: searchresult TYPE TABLE OF bapibus1006_bp_addr, - return TYPE TABLE OF bapiret2. -DATA: lines TYPE i. -FIELD-SYMBOLS: <searchresult_line> LIKE LINE OF searchresult. -DATA: centraldata TYPE bapibus1006_central, - centraldataperson TYPE bapibus1006_central_person, - centraldataorganization TYPE bapibus1006_central_organ. -DATA: addressdata TYPE bapibus1006_address. -DATA: relationships TYPE TABLE OF bapibus1006_relations. -FIELD-SYMBOLS: <relationship> LIKE LINE OF relationships. -DATA: relationship_centraldata TYPE bapibus1006002_central. -DATA: relationship_addresses TYPE TABLE OF bapibus1006002_addresses. -FIELD-SYMBOLS: <relationship_address> LIKE LINE OF relationship_addresses. - -DATA: lt_download TYPE TABLE OF zexcel_s_org_rel. -FIELD-SYMBOLS: <download> LIKE LINE OF lt_download. - -CONSTANTS: gc_save_file_name TYPE string VALUE '11_Export_Org_and_Contact.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -PARAMETERS: md TYPE flag RADIOBUTTON GROUP act. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-00a. -PARAMETERS: partnerc TYPE bu_type DEFAULT 2, " Organizations - postlcod TYPE ad_pstcd1 DEFAULT '8334*', - country TYPE land1 DEFAULT 'DE', - maxsel TYPE bu_maxsel DEFAULT 100. -SELECTION-SCREEN END OF BLOCK a. - -PARAMETERS: rel TYPE flag RADIOBUTTON GROUP act DEFAULT 'X'. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-00b. -PARAMETERS: reltyp TYPE bu_reltyp DEFAULT 'BUR011', - partner TYPE bu_partner DEFAULT '191'. -SELECTION-SCREEN END OF BLOCK b. - -START-OF-SELECTION. - IF md = abap_true. - " Read all Companies by Master Data - central_search-partnercategory = partnerc. - addressdata_search-postl_cod1 = postlcod. - addressdata_search-country = country. - others_search-maxsel = maxsel. - others_search-no_search_for_contactperson = 'X'. - - CALL FUNCTION 'BAPI_BUPA_SEARCH_2' - EXPORTING - centraldata = central_search - addressdata = addressdata_search - OTHERS = others_search - TABLES - searchresult = searchresult - return = return. - - SORT searchresult BY partner. - DELETE ADJACENT DUPLICATES FROM searchresult COMPARING partner. - ELSEIF rel = abap_true. - " Read by Relationship - SELECT but050~partner1 AS partner FROM but050 - INNER JOIN but000 ON but000~partner = but050~partner1 AND but000~type = '2' - INTO CORRESPONDING FIELDS OF TABLE searchresult - WHERE but050~partner2 = partner - AND but050~reltyp = reltyp. - ENDIF. - - DESCRIBE TABLE searchresult LINES lines. - WRITE: / 'Number of search results: ', lines. - - LOOP AT searchresult ASSIGNING <searchresult_line>. - " Read Details of Organization - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - centraldataorganization = centraldataorganization. - " Read Standard Address of Organization - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - addressdata = addressdata. - - " Add Organization to Download - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - " Fill Organization Partner Numbers - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - CLEAR: addressdata. - - " Read all Relationships - CLEAR: relationships. - CALL FUNCTION 'BAPI_BUPA_RELATIONSHIPS_GET' - EXPORTING - businesspartner = <searchresult_line>-partner - TABLES - relationships = relationships. - DELETE relationships WHERE relationshipcategory <> 'BUR001'. - LOOP AT relationships ASSIGNING <relationship>. - " Read details of Contact person - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - centraldata = centraldata - centraldataperson = centraldataperson. - " Read details of the Relationship - CALL FUNCTION 'BAPI_BUPR_CONTP_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - IMPORTING - centraldata = relationship_centraldata. - " Read relationship address - CLEAR: relationship_addresses. - - CALL FUNCTION 'BAPI_BUPR_CONTP_ADDRESSES_GET' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - TABLES - addresses = relationship_addresses. - - READ TABLE relationship_addresses - ASSIGNING <relationship_address> - WITH KEY standardaddress = 'X'. - - IF <relationship_address> IS ASSIGNED. - " Read Relationship Address - CLEAR addressdata. - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - addressguid = <relationship_address>-addressguid - IMPORTING - addressdata = addressdata. - - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner1 - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - businesspartnerout = <download>-contpers_number - businesspartnerguidout = <download>-contpers_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - MOVE-CORRESPONDING centraldataperson TO <download>. - MOVE-CORRESPONDING relationship_centraldata TO <download>. - - WRITE: / <relationship>-partner1, <relationship>-partner2. - WRITE: centraldataorganization-name1(20), centraldataorganization-name2(10). - WRITE: centraldataperson-firstname(15), centraldataperson-lastname(15). - WRITE: addressdata-street(25), addressdata-house_no, - addressdata-postl_cod1, addressdata-city(25). - ENDIF. - ENDLOOP. - - ENDLOOP. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_body TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_style_body_even_guid TYPE zexcel_cell_style, - lv_style_body_green TYPE zexcel_cell_style. - - DATA: row TYPE zexcel_cell_row. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings. - - DATA: column TYPE zexcel_cell_column, - column_alpha TYPE zexcel_cell_column_alpha, - value TYPE zexcel_cell_value. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border even - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_yellow. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_even_guid = lo_style_body->get_guid( ). - "Create style with border and green fill - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_green = lo_style_body->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_download ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'ORG_NUMBER'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CONTPERS_NUMBER'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME1'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME2'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'STREET'. - <fs_field_catalog>-position = 5. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'HOUSE_NO'. - <fs_field_catalog>-position = 6. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'POSTL_COD1'. - <fs_field_catalog>-position = 7. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CITY'. - <fs_field_catalog>-position = 8. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'COUNTRYISO'. - <fs_field_catalog>-position = 9. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FIRSTNAME'. - <fs_field_catalog>-position = 10. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'LASTNAME'. - <fs_field_catalog>-position = 11. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FUNCTIONNAME'. - <fs_field_catalog>-position = 12. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'DEPARTMENTNAME'. - <fs_field_catalog>-position = 13. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_NUMBR'. - <fs_field_catalog>-position = 14. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_EXT'. - <fs_field_catalog>-position = 15. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_NUMBER'. - <fs_field_catalog>-position = 16. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_EXTENS'. - <fs_field_catalog>-position = 17. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'E_MAIL'. - <fs_field_catalog>-position = 18. - <fs_field_catalog>-dynpfld = abap_true. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = '2'. - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_download - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - LOOP AT lt_download ASSIGNING <download>. - row = sy-tabix + 2. - IF NOT <download>-org_number IS INITIAL - AND <download>-contpers_number IS INITIAL. - " Mark fields of Organization which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'C' - ip_row = row - ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'D' - ip_row = row - ip_style = lv_style_body_green - ). -* CATCH zcx_excel. " Exceptions for ABAP2XLSX - ELSEIF NOT <download>-org_number IS INITIAL - AND NOT <download>-contpers_number IS INITIAL. - " Mark fields of Relationship which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'L' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'M' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'N' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'O' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'P' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'Q' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'R' ip_row = row ip_style = lv_style_body_green - ). - ENDIF. - ENDLOOP. - " Add Fieldnames in first row and hide the row - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog> - WHERE position <> '' AND dynpfld = abap_true. - column = <fs_field_catalog>-position. - column_alpha = zcl_excel_common=>convert_column2alpha( column ). - value = <fs_field_catalog>-fieldname. - lo_worksheet->set_cell( ip_column = column_alpha - ip_row = 1 - ip_value = value - ip_style = lv_style_body_even_guid ). - ENDLOOP. - " Hide first row - row_dimension = lo_worksheet->get_row_dimension( 1 ). - row_dimension->set_visible( abap_false ). - - DATA: highest_column TYPE zexcel_cell_column, - count TYPE int4, - col_alpha TYPE zexcel_cell_column_alpha. - - highest_column = lo_worksheet->get_highest_column( ). - count = 1. - WHILE count <= highest_column. - col_alpha = zcl_excel_common=>convert_column2alpha( ip_column = count ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = col_alpha ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - count = count + 1. - ENDWHILE. -* " Set Column width manuall -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). -* column_dimension->set_width( ip_width = 35 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). -* column_dimension->set_width( ip_width = 18 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). -* column_dimension->set_width( ip_width = 5 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). -* column_dimension->set_width( ip_width = 6 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). -* column_dimension->set_width( ip_width = 3 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'J' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'K' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'L' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'M' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'N' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'O' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'P' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'Q' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'R' ). -* column_dimension->set_width( ip_width = 40 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL12 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel12. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: gc_save_file_name TYPE string VALUE '12_HideSizeOutlineRowsAndColumns.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world in AutoSize column' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Hello world in a column width size 50' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Hello world (hidden column)' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'Outline column level 0' ). - lo_worksheet->set_cell( ip_column = 'G' ip_row = 2 ip_value = 'Outline column level 1' ). - lo_worksheet->set_cell( ip_column = 'H' ip_row = 2 ip_value = 'Outline column level 2' ). - lo_worksheet->set_cell( ip_column = 'I' ip_row = 2 ip_value = 'Small' ). - - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Hello world (hidden row)' ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 5 ip_value = 'Hello world in a row height size 20' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Outline row level 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Outline row level 1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Outline row level 2' ). - - lo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. " By default is on - lo_worksheet->zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>c_right_off. " By default is on - - " Column Settings - " Auto size - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - " Manual Width - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_width( ip_width = 50 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_visible( ip_visible = abap_false ). - " Implementation in the Writer is not working yet ===== TODO ===== - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). - column_dimension->set_outline_level( ip_outline_level = 0 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). - column_dimension->set_outline_level( ip_outline_level = 1 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). - column_dimension->set_outline_level( ip_outline_level = 2 ). - - row_dimension = lo_worksheet->get_row_dimension( ip_row = 1 ). - row_dimension->set_visible( ip_visible = abap_false ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 5 ). - row_dimension->set_row_height( ip_row_height = 20 ). - " Implementation in the Writer is not working yet ===== TODO ===== - row_dimension = lo_worksheet->get_row_dimension( ip_row = 6 ). - row_dimension->set_outline_level( ip_outline_level = 0 ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 7 ). - row_dimension->set_outline_level( ip_outline_level = 1 ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 8 ). - row_dimension->set_outline_level( ip_outline_level = 2 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL13 -*& -*&---------------------------------------------------------------------* -*& Example by: Alvaro "Blag" Tejada Galindo. -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel13. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_bold_border_guid TYPE zexcel_cell_style, - lo_style_bold_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '13_MergedCells.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - - lo_style_bold_border = lo_excel->add_new_style( ). - lo_style_bold_border->font->bold = abap_true. - lo_style_bold_border->font->italic = abap_false. - lo_style_bold_border->font->color-rgb = zcl_excel_style_color=>c_black. - lo_style_bold_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_bold_border->borders->allborders = lo_border_dark. - lv_style_bold_border_guid = lo_style_bold_border->get_guid( ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - - lo_worksheet->set_merge( ip_row = 4 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test also if merge works when oher merged chells are empty - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Tomato' ). - lo_worksheet->set_merge( ip_row = 6 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test the patch provided by Victor Alekhin to merge cells in one column - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 'Merge cells also over multiple rows by Victor Alekhin' ). - lo_worksheet->set_merge( ip_row = 8 ip_column_start = 'B' ip_column_end = 'G' ip_row_to = 10 ). - - " Test the patch provided by Alexander Budeyev with different column merges - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 'Merge cells with different merges by Alexander Budeyev' ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - - " Test merge (issue) - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'B' ip_column_end = 'C' ip_row_to = 15 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'D' ip_column_end = 'D' ip_row_to = 14 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'E' ip_column_end = 'F' ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL14 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel14. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_center TYPE REF TO zcl_excel_style, - lo_style_right TYPE REF TO zcl_excel_style, - lo_style_left TYPE REF TO zcl_excel_style, - lo_style_general TYPE REF TO zcl_excel_style, - lo_style_bottom TYPE REF TO zcl_excel_style, - lo_style_middle TYPE REF TO zcl_excel_style, - lo_style_top TYPE REF TO zcl_excel_style, - lo_style_justify TYPE REF TO zcl_excel_style, - lo_style_mixed TYPE REF TO zcl_excel_style, - lo_style_mixed_wrap TYPE REF TO zcl_excel_style, - lo_style_rotated TYPE REF TO zcl_excel_style, - lo_style_shrink TYPE REF TO zcl_excel_style, - lo_style_indent TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style, - lv_style_right_guid TYPE zexcel_cell_style, - lv_style_left_guid TYPE zexcel_cell_style, - lv_style_general_guid TYPE zexcel_cell_style, - lv_style_bottom_guid TYPE zexcel_cell_style, - lv_style_middle_guid TYPE zexcel_cell_style, - lv_style_top_guid TYPE zexcel_cell_style, - lv_style_justify_guid TYPE zexcel_cell_style, - lv_style_mixed_guid TYPE zexcel_cell_style, - lv_style_mixed_wrap_guid TYPE zexcel_cell_style, - lv_style_rotated_guid TYPE zexcel_cell_style, - lv_style_shrink_guid TYPE zexcel_cell_style, - lv_style_indent_guid TYPE zexcel_cell_style. - -DATA: lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '14_Alignment.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - "Center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lv_style_center_guid = lo_style_center->get_guid( ). - "Right - lo_style_right = lo_excel->add_new_style( ). - lo_style_right->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lv_style_right_guid = lo_style_right->get_guid( ). - "Left - lo_style_left = lo_excel->add_new_style( ). - lo_style_left->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_left. - lv_style_left_guid = lo_style_left->get_guid( ). - "General - lo_style_general = lo_excel->add_new_style( ). - lo_style_general->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_general. - lv_style_general_guid = lo_style_general->get_guid( ). - "Bottom - lo_style_bottom = lo_excel->add_new_style( ). - lo_style_bottom->alignment->vertical = zcl_excel_style_alignment=>c_vertical_bottom. - lv_style_bottom_guid = lo_style_bottom->get_guid( ). - "Middle - lo_style_middle = lo_excel->add_new_style( ). - lo_style_middle->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_middle_guid = lo_style_middle->get_guid( ). - "Top - lo_style_top = lo_excel->add_new_style( ). - lo_style_top->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_top_guid = lo_style_top->get_guid( ). - "Justify - lo_style_justify = lo_excel->add_new_style( ). - lo_style_justify->alignment->vertical = zcl_excel_style_alignment=>c_vertical_justify. - lv_style_justify_guid = lo_style_justify->get_guid( ). - - "Shrink - lo_style_shrink = lo_excel->add_new_style( ). - lo_style_shrink->alignment->shrinktofit = abap_true. - lv_style_shrink_guid = lo_style_shrink->get_guid( ). - - "Indent - lo_style_indent = lo_excel->add_new_style( ). - lo_style_indent->alignment->indent = 5. - lv_style_indent_guid = lo_style_indent->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed_wrap = lo_excel->add_new_style( ). - lo_style_mixed_wrap->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed_wrap->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_mixed_wrap->alignment->wraptext = abap_true. - lv_style_mixed_wrap_guid = lo_style_mixed_wrap->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed = lo_excel->add_new_style( ). - lo_style_mixed->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_mixed_guid = lo_style_mixed->get_guid( ). - - "Center - lo_style_rotated = lo_excel->add_new_style( ). - lo_style_rotated->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_rotated->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_rotated->alignment->textrotation = 165. " -75° == 90° + 75° - lv_style_rotated_guid = lo_style_rotated->get_guid( ). - - - " Set row size for first 7 rows to 40 - DO 7 TIMES. - lo_row_dimension = lo_worksheet->get_row_dimension( sy-index ). - lo_row_dimension->set_row_height( 40 ). - ENDDO. - - "Horizontal alignment - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Centered Text' ip_style = lv_style_center_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Right Text' ip_style = lv_style_right_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Left Text' ip_style = lv_style_left_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'General Text' ip_style = lv_style_general_guid ). - - " Shrink & indent - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'Text shrinked' ip_style = lv_style_shrink_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 'Text indented' ip_style = lv_style_indent_guid ). - - "Vertical alignment - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Bottom Text' ip_style = lv_style_bottom_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Middle Text' ip_style = lv_style_middle_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Top Text' ip_style = lv_style_top_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 'Justify Text' ip_style = lv_style_justify_guid ). - - " Wrapped - lo_worksheet->set_cell( ip_row = 10 ip_column = 'B' - ip_value = 'This is a wrapped text centered in the middle' - ip_style = lv_style_mixed_wrap_guid ). - - " Rotated - lo_worksheet->set_cell( ip_row = 10 ip_column = 'D' - ip_value = 'This is a centered text rotated by -75°' - ip_style = lv_style_rotated_guid ). - - " forced line break - DATA: lv_value TYPE string. - CONCATENATE 'This is a wrapped text centered in the middle' cl_abap_char_utilities=>cr_lf - 'and a manuall line break.' INTO lv_value. - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' - ip_value = lv_value - ip_style = lv_style_mixed_guid ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL15 -*& -*&---------------------------------------------------------------------* -*& 2010-10-30, Gregor Wolf: -*& Added the functionality to ouput the read table content -*& 2011-12-19, Shahrin Shahrulzaman: -*& Added the functionality to have multiple input and output files -*&---------------------------------------------------------------------* - -REPORT zdemo_excel15. - -TYPE-POOLS: abap. - -TYPES: - BEGIN OF t_demo_excel15, - input TYPE string, - END OF t_demo_excel15. - -DATA: excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - reader TYPE REF TO zif_excel_reader. - -DATA: ex TYPE REF TO zcx_excel, - msg TYPE string. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_workdir TYPE string, - output_file_path TYPE string, - input_file_path TYPE string, - lv_file_separator TYPE c. - -DATA: worksheet TYPE REF TO zcl_excel_worksheet, - highest_column TYPE zexcel_cell_column, - highest_row TYPE int4, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha, - row TYPE int4 VALUE 1, - value TYPE zexcel_cell_value. - -DATA: - lt_files TYPE TABLE OF t_demo_excel15. -FIELD-SYMBOLS: <wa_files> TYPE t_demo_excel15. - -PARAMETERS: p_path TYPE zexcel_export_dir, - p_noout TYPE xfeld DEFAULT abap_true. - - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '01_HelloWorld.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '02_Styles.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '03_iTab.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '04_Sheets.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '08_Range.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '13_MergedCells.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '31_AutosizeWithDifferentFontSizes.xlsx'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - - LOOP AT lt_files ASSIGNING <wa_files>. - CONCATENATE p_path lv_file_separator <wa_files>-input INTO input_file_path. - CONCATENATE p_path lv_file_separator '15_' <wa_files>-input INTO output_file_path. - REPLACE '.xlsx' IN output_file_path WITH 'FromReader.xlsx'. - - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( input_file_path ). - - IF p_noout EQ abap_false. - worksheet = excel->get_active_worksheet( ). - highest_column = worksheet->get_highest_column( ). - highest_row = worksheet->get_highest_row( ). - - WRITE: 'Highest column: ', highest_column, 'Highest row: ', highest_row. - WRITE: /. - - WHILE row <= highest_row. - WHILE column <= highest_column. - col_str = zcl_excel_common=>convert_column2alpha( column ). - worksheet->get_cell( - EXPORTING - ip_column = col_str - ip_row = row - IMPORTING - ep_value = value - ). - WRITE: value. - column = column + 1. - ENDWHILE. - WRITE: /. - column = 1. - row = row + 1. - ENDWHILE. - ENDIF. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = output_file_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - CATCH zcx_excel INTO ex. " Exceptions for ABAP2XLSX - msg = ex->get_text( ). - WRITE: / msg. - ENDTRY. - ENDLOOP. - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel16. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - - -DATA: ls_io TYPE skwf_io. - -CONSTANTS: gc_save_file_name TYPE string VALUE '16_Drawings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_objid TYPE sdok_docid DEFAULT '456694429165174BE10000000A1550C0', " Question mark in standard Web Dynpro WDT_QUIZ - p_class TYPE sdok_class DEFAULT 'M_IMAGE_P', - pobjtype TYPE skwf_ioty DEFAULT 'P'. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i, - lv_content TYPE xstring, - ls_key TYPE wwwdatatab. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = 'c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp' - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. -* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno -* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = lv_content - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Image from web repository (SMW0)' ). - - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 3 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Image from a file (c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 9 - ip_from_col = 'B' ). - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_bmp - ip_width = 83 - ip_height = 160 ). - - lo_worksheet->add_drawing( lo_drawing ). - - ls_io-objid = p_objid. - ls_io-class = p_class. - ls_io-objtype = pobjtype. - IF ls_io IS NOT INITIAL. - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_value = 'Mime repository (by default Question mark in standard Web Dynpro WDT_QUIZ)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 19 - ip_from_col = 'B' ). - lo_drawing->set_media_mime( ip_io = ls_io - ip_width = 126 - ip_height = 145 ). - - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL17 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel17. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_protection TYPE REF TO zcl_excel_style, - lv_style_protection_guid TYPE zexcel_cell_style, - lo_style TYPE REF TO zcl_excel_style, - lv_style TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '17_SheetProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_pwd TYPE zexcel_aes_password LOWER CASE DEFAULT 'secret'. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. -* lo_worksheet->zif_excel_sheet_protection~password = 'DAA7'. "it is the encoded word "secret" - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( p_pwd ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - " First style to unlock a cell - lo_style_protection = lo_excel->add_new_style( ). - lo_style_protection->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - lv_style_protection_guid = lo_style_protection->get_guid( ). - " Another style which should not affect the unlock style - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFCC3333'. - lv_style = lo_style->get_guid( ). - lo_worksheet->set_cell( ip_row = 3 ip_column = 'C' ip_value = 'This cell is locked locked and has the second formating' ip_style = lv_style ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL26 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel29. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_excel_reader TYPE REF TO zif_excel_reader. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_filename TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -PARAMETERS: p_path TYPE zexcel_export_dir OBLIGATORY. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - DATA: lt_filetable TYPE filetable, - lv_rc TYPE i. - - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - CALL METHOD cl_gui_frontend_services=>file_open_dialog - EXPORTING - window_title = 'Select Macro-Enabled Workbook template' - default_extension = '*.xlsm' - file_filter = 'Excel Macro-Enabled Workbook (*.xlsm)|*.xlsm' - initial_directory = lv_workdir - CHANGING - file_table = lt_filetable - rc = lv_rc - EXCEPTIONS - file_open_dialog_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - OTHERS = 5. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - READ TABLE lt_filetable INTO lv_filename INDEX 1. - p_path = lv_filename. - -START-OF-SELECTION. - - lv_full_path = p_path. - - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_xlsm. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_xlsm. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE '.xlsm' IN lv_full_path WITH 'FromReader.xlsm'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL28 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel28. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_file_name TYPE string, - lv_file_path TYPE string, - lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '28_HelloWorld.csv'. - -PARAMETERS: p_path TYPE string. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = p_path - CHANGING selected_folder = p_path ). - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_width( 11 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_csv. - zcl_excel_writer_csv=>set_delimiter( ip_value = cl_abap_char_utilities=>horizontal_tab ). - zcl_excel_writer_csv=>set_enclosure( ip_value = '''' ). - zcl_excel_writer_csv=>set_endofline( ip_value = cl_abap_char_utilities=>cr_lf ). - - zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). -* zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet2' ). - - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - REPLACE FIRST OCCURRENCE OF '.csv' IN lv_full_path WITH '_Sheet2.csv'. - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - -* zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). - zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet1' ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE FIRST OCCURRENCE OF '_Sheet2.csv' IN lv_full_path WITH '_Sheet1.csv'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL27 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel27. - -CONSTANTS: c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_1 TYPE REF TO zcl_excel_style, - lo_style_2 TYPE REF TO zcl_excel_style, - lv_style_1_guid TYPE zexcel_cell_style, - lv_style_2_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis. - - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '27_ConditionalFormatting.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - lo_style_1 = lo_excel->add_new_style( ). - lo_style_1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_1->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_1_guid = lo_style_1->get_guid( ). - - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_2->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_2_guid = lo_style_2->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = 'Select a value' ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Anchovy"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_1_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Carp"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_2_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL26 -* Demo for method zcl_excel_worksheet-bind_object: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -report zdemo_excel26. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events definition. - public section. - methods: - on_user_command for event added_function of cl_salv_events - importing e_salv_function. -endclass. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events implementation. - method on_user_command. - perform user_command." using e_salv_function text-i08. - endmethod. "on_user_command -endclass. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -data: lo_excel type ref to zcl_excel, - lo_worksheet type ref to zcl_excel_worksheet, - lo_salv type ref to cl_salv_table, - gr_events type ref to lcl_handle_events, - lr_events type ref to cl_salv_events_table, - gt_sbook type table of sbook. - -data: l_path type string, " local dir - lv_workdir type string, - lv_file_separator type c. - -constants: - lv_default_file_name type string value '26_Bind_ALV.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -start-of-selection. - -* get data -* ------------------------------------------ - - select * - into table gt_sbook[] - from sbook "#EC CI_NOWHERE - up to 10 rows. - -* Display ALV -* ------------------------------------------ - - try. - cl_salv_table=>factory( - exporting - list_display = abap_false - importing - r_salv_table = lo_salv - changing - t_table = gt_sbook[] ). - catch cx_salv_msg . - endtry. - - try. - lo_salv->set_screen_status( - exporting - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - catch cx_salv_msg . - endtry. - - lr_events = lo_salv->get_event( ). - create object gr_events. - set handler gr_events->on_user_command for lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -form user_command . - if sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( changing sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - exporting initial_folder = l_path - changing selected_folder = l_path ). - - if l_path is initial. - cl_gui_frontend_services=>get_sapgui_workdir( - changing sapworkdir = lv_workdir ). - l_path = lv_workdir. - endif. - - cl_gui_frontend_services=>get_file_separator( - changing file_separator = lv_file_separator ). - - concatenate l_path lv_file_separator lv_default_file_name - into l_path. - -* export file to save file path - perform export_to_excel. - - endif. -endform. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -form export_to_excel. - data: lo_converter type ref to zcl_excel_converter. -* create zcl_excel_worksheet object - - create object lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object - try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). - catch zcx_excel . - endtry. - - perform write_file. - -endform. "EXPORT_TO_EXCEL -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -form write_file . - data: lt_file type solix_tab, - l_bytecount type i, - l_file type xstring. - - data: lo_excel_writer type ref to zif_excel_writer. - - data: ls_seoclass type seoclass. - - create object lo_excel_writer type zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = l_file - receiving - et_solix = lt_file. - - l_bytecount = xstrlen( l_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = l_file - importing - output_length = l_bytecount - tables - binary_tab = lt_file. - endif. - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - changing data_tab = lt_file ). - -endform. " WRITE_FILE - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL25 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel25. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_exception TYPE REF TO cx_root. - -DATA: lv_file TYPE xstring. - -CONSTANTS: lv_file_name TYPE string VALUE '25_HelloWorld.xlsx'. -DATA: lv_default_file_name TYPE string. -DATA: lv_error TYPE string. - -CALL FUNCTION 'FILE_GET_NAME_USING_PATH' - EXPORTING - logical_path = 'LOCAL_TEMPORARY_FILES' " Logical path' - file_name = lv_file_name " File name - IMPORTING - file_name_with_path = lv_default_file_name. " File name with path -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->set_title( ip_title = 'Sheet1' ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - -CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -lv_file = lo_excel_writer->write_file( lo_excel ). - -TRY. - OPEN DATASET lv_default_file_name FOR OUTPUT IN BINARY MODE. - TRANSFER lv_file TO lv_default_file_name. - CLOSE DATASET lv_default_file_name. - CATCH cx_root INTO lo_exception. - lv_error = lo_exception->get_text( ). - MESSAGE lv_error TYPE 'I'. -ENDTRY. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel24. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lv_value TYPE string. - -CONSTANTS: gc_save_file_name TYPE string VALUE '24_Sheets_with_different_default_date_formats.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Default Date Format' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!A1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmdd ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYYMMDD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " TODO: It seems that the zcl_excel_style_number_format=>c_format_date_yyyymmddslash - " does not produce a valid output - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmddslash ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYY/MM/DD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the 4th sheet' ip_hyperlink = lo_hyperlink ). - - " 4th sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " Illustrate the Problem caused by: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year. - " http://support.microsoft.com/kb/214326/en-us - lo_worksheet->set_title( ip_title = 'Sheet4' ). - " Loop from Start Date to the Max Date current data in daily steps - CONSTANTS: lv_max type d VALUE '19000302'. - - DATA: lv_date TYPE d VALUE '19000226', - lv_row TYPE i. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Formated date' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Integer value for this date' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'Date as string' ). - - lv_row = 4. - WHILE lv_date < lv_max. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_row ip_value = lv_date ). - lv_value = zcl_excel_common=>date_to_excel_string( lv_date ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_row ip_value = lv_value ). - lv_value = lv_date. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_row ip_value = lv_value ). - lv_date = lv_date + 1. - lv_row = lv_row + 1. - ENDWHILE. - - lv_row = lv_row + 1. - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_row ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel23. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '23_Sheets_with_and_without_grid_lines.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet with grid lines and print centered horizontal & vertical' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet with grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 160. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_PAGELAYOUTVIEW = 200. - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the third sheet without grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_false ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the fourth sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 170. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_SHEETLAYOUTVIEW = 150. - - " Fourth sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the fourth sheet with grid lines and print centered ONLY horizontal' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - -" lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL18 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel18. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_protection_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '18_BookProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_excel->zif_excel_book_protection~protected = zif_excel_book_protection=>c_protected. - lo_excel->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_locked. - - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL19 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel19. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '19_SetActiveSheet.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_noout TYPE xfeld DEFAULT abap_true. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " First Worksheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'First' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 1' ). - - " Second Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Second' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 2' ). - - " Third Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Third' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 3' ). - - IF p_noout EQ abap_false. - " lo_excel->set_active_sheet_index_by_name( data_sheet_name ). - DATA: active_sheet_index TYPE zexcel_active_worksheet. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index before: ', active_sheet_index. - ENDIF. - lo_excel->set_active_sheet_index( '2' ). - IF p_noout EQ abap_false. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index after: ', active_sheet_index. - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel2. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: gc_save_file_name TYPE string VALUE '02_Styles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - -* CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -* lv_file = lo_excel_writer->write_file( lo_excel ). -* -* " Convert to binary -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = lv_file -* IMPORTING -* output_length = lv_bytecount -* TABLES -* binary_tab = lt_file_tab. -** " This method is only available on AS ABAP > 6.40 -** lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -** lv_bytecount = xstrlen( lv_file ). -* -* " Save the file -* cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount -* filename = lv_full_path -* filetype = 'BIN' -* CHANGING data_tab = lt_file_tab ). - - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL22 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel22. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style, - lo_style_date TYPE REF TO zcl_excel_style, - lo_style_editable TYPE REF TO zcl_excel_style, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_table_settings_out TYPE zexcel_s_table_settings. - -DATA: lv_style_guid TYPE zexcel_cell_style. - -DATA: lv_row TYPE char10. - -FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - -CONSTANTS: gc_save_file_name TYPE string VALUE '22_itab_fieldcatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'PN_MASSIVE'). - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - " sheet style (white background) - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lv_style_guid = lo_style->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_guid ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( 'test' ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - - " Create cell style for display only fields - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_text. - - " Create cell style for display only date field - lo_style_date = lo_excel->add_new_style( ). - lo_style_date->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_date->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style_date->number_format->format_code = zcl_excel_style_number_format=>c_format_date_ddmmyyyy. - - " Create cell style for editable fields - lo_style_editable = lo_excel->add_new_style( ). - lo_style_editable->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'CONNID'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_date->get_guid( ). - WHEN 'PRICE'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_editable->get_guid( ). - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( EXPORTING - ip_table = lt_test - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - IMPORTING - es_table_settings = ls_table_settings_out ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lv_row = ls_table_settings_out-top_left_row. - CONDENSE lv_row. - CONCATENATE 'ISNUMBER(' ls_table_settings_out-top_left_column lv_row ')' INTO lo_data_validation->formula1. - lo_data_validation->cell_row = ls_table_settings_out-top_left_row. - lo_data_validation->cell_column = ls_table_settings_out-top_left_column. - lo_data_validation->cell_row_to = ls_table_settings_out-bottom_right_row. - lo_data_validation->cell_column_to = ls_table_settings_out-bottom_right_column. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL21 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel21. - -TYPES: - BEGIN OF t_color_style, - color TYPE zexcel_style_color_argb, - style TYPE zexcel_cell_style, - END OF t_color_style. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_filled TYPE REF TO zcl_excel_style. - -DATA: color_styles TYPE TABLE OF t_color_style. - -FIELD-SYMBOLS: <color_style> LIKE LINE OF color_styles. - -CONSTANTS: max TYPE i VALUE 255, - step TYPE i VALUE 51. - -DATA: red TYPE i, - green TYPE i, - blue TYPE i, - red_hex(1) TYPE x, - green_hex(1) TYPE x, - blue_hex(1) TYPE x, - red_str TYPE string, - green_str TYPE string, - blue_str TYPE string. - -DATA: color TYPE zexcel_style_color_argb, - tint TYPE zexcel_style_color_tint. - -DATA: row TYPE i, - row_tmp TYPE i, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha. - -CONSTANTS: gc_save_file_name TYPE string VALUE '21_BackgroundColorPicker.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - WHILE red <= max. - green = 0. - WHILE green <= max. - blue = 0. - WHILE blue <= max. - red_hex = red. - red_str = red_hex. - green_hex = green. - green_str = green_hex. - blue_hex = blue. - blue_str = blue_hex. - " Create filled - CONCATENATE 'FF' red_str green_str blue_str INTO color. - APPEND INITIAL LINE TO color_styles ASSIGNING <color_style>. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = color. - <color_style>-color = color. - <color_style>-style = lo_style_filled->get_guid( ). - blue = blue + step. - ENDWHILE. - green = green + step. - ENDWHILE. - red = red + step. - ENDWHILE. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Color Picker' ). - LOOP AT color_styles ASSIGNING <color_style>. - row_tmp = ( max / step + 1 ) * 3. - IF row = row_tmp. - row = 0. - column = column + 1. - ENDIF. - row = row + 1. - col_str = zcl_excel_common=>convert_column2alpha( column ). - - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = col_str - ip_row = row - ip_value = <color_style>-color - ip_style = <color_style>-style ). - ENDLOOP. - - row = row + 2. - tint = '-0.5'. - DO 10 TIMES. - column = 1. - DO 10 TIMES. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = sy-index - 1. - lo_style_filled->fill->fgcolor-tint = tint. - <color_style>-style = lo_style_filled->get_guid( ). - col_str = zcl_excel_common=>convert_column2alpha( column ). - lo_worksheet->set_cell_style( ip_column = col_str - ip_row = row - ip_style = <color_style>-style ). - - ADD 1 TO column. - ENDDO. - ADD '0.1' TO tint. - ADD 1 TO row. - ENDDO. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL20 -* Demo for method zcl_excel_worksheet-bind_alv: -* export data from ALV (CL_GUI_ALV_GRID) object to excel -*--------------------------------------------------------------------* -REPORT zdemo_excel20. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_alv TYPE REF TO cl_gui_alv_grid, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook, - gt_listheader TYPE slis_t_listheader, - wa_listheader LIKE LINE OF gt_listheader. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '20_BindAlv.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 10 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - IF sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - -* export file to save file path - - PERFORM export_to_excel. - - ENDIF. -ENDFORM. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel. - -* create zcl_excel_worksheet object - - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - -* get ALV object from screen - - CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' - IMPORTING - e_grid = lo_alv. - -* build list header - - wa_listheader-typ = 'H'. - wa_listheader-info = sy-title. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'S'. - wa_listheader-info = 'Created by: ABAP2XLSX Group'. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'A'. - wa_listheader-info = - 'Project hosting at https://cw.sdn.sap.com/cw/groups/abap2xlsx'. - APPEND wa_listheader TO gt_listheader. - -* write to excel using method Bin_ALV - - lo_worksheet->bind_alv_ole2( - EXPORTING -* I_DOCUMENT_URL = SPACE " excel template -* I_XLS = 'X' " create in xls format? - i_save_path = l_path - io_alv = lo_alv - it_listheader = gt_listheader - i_top = 2 - i_left = 1 -* I_COLUMNS_HEADER = 'X' -* I_COLUMNS_AUTOFIT = 'X' -* I_FORMAT_COL_HEADER = -* I_FORMAT_SUBTOTAL = -* I_FORMAT_TOTAL = - EXCEPTIONS - miss_guide = 1 - ex_transfer_kkblo_error = 2 - fatal_error = 3 - inv_data_range = 4 - dim_mismatch_vkey = 5 - dim_mismatch_sema = 6 - error_in_sema = 7 - OTHERS = 8 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - -ENDFORM. "EXPORT_TO_EXCEL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/old_releases/ABAP2XLSX_V_7_0_1.nugg.zip b/build/old_releases/ABAP2XLSX_V_7_0_1.nugg.zip deleted file mode 100644 index 606a0c7ccdcfb4ce4cb2235758a8a41c6bda317f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296803 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 #OrSRlO-uKPrO_bvO2uL>0&V{yWqf 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%0A{EeAQ}QhPa4r%@wYszha(1yw2& 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 z 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%0DFM^WIguoyjY80+Ew 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 L2oC{m00I3!w;JU~ diff --git a/build/old_releases/ABAP2XLSX_V_7_0_1.zip b/build/old_releases/ABAP2XLSX_V_7_0_1.zip deleted file mode 100644 index c2a828e7abae9e619db10695cdcb664efe800ee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1521842 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

    Q- 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�Qeb$-xbE-dYyzDRuk8U&Z4_T0ci740%~4*<bb4TYh>t*1Cw#H zeiCD>ysW6#!%vB+W=^DeE%T)_!eQ6Q1h|a&l04~}nOoTdA<_gNHG-KcfbpJff6B_$ zpm&{{GdO~<`b#@8I0wzwN*iDKLKahp7ECHflTh!J6c)&?^6yXCt+zXAyEW@YvrIsC zDqp7g-|63Aqq1!(g5wbG3gpZFd;Lr445sZl*S9;{aweHzt}+T9SJ>ixTK7YCu`{{m zDOFVpHvxtweV(FN{p4$Su|fxolWsqjQ2djL`Hs=|7xN(CErKFJKW$Ckk{bH49Qyoq zkDJ&0SHceTC(IinC!_qQwY-%$pWZ>I1{&|HIISnew*{B9e>jl)FwzL!=Dz-~wdYSh za#+5A2f2r>t2I0q^r5y*ieF>YBI)=zghAd3yJnZwj%mN`O*7%Tw_~kuuifZsrICUwR-)6I(OzyjAIPo8RfkAN3B~p z(vdez!&yR}Ecr+CP%kf~F*;E+ebcqvZE&g46Ii8b_6; z>HXJuW1Fs=y_M@2J3qX=SSNjp&+o-?w*Bq!b9A^@V1d_-GTA%t`y7iMio#?W)XFq% z-3id(-X2Dd&t=uZO)yUC4VuJOY?mZ0;g~h(w$*jQfi8?Z`qFM;F-Bwq#uwx-u6Nch z3F+%eVs8Tk8MICS&BR`fD#uFaseXTUDMXj~Lu)g{D>1X3=%4zn#+DBQDTmJI9=vA= zWIKGe&6El2m7qHFc1{dy-hQPO>(Hit%LaZ*`TZCFsT5|SLG{SU#Bc24kG(EfzYPE> zGVT7@a*v-|DN12pB-i8DH`crgfQi9gjvi;208t#Y524a0kz-Gac7A05Po(Lmw?Y=X z1OusyW~J?Ty0$|B+|R@863y_db*j_Dq}?rt{CRU4Ty3lyLV~B0?7~hpB>Tl$$f++1 zDYfgL&VbFUbSTHF+G zZ_1#h4F_ru6927i)AfF+pwuzVrO_|>K~W>z$*=LoH-EZTDlc8bH_kMTjaWD{aZ%v? zTKYMuM-g>#@2MZl{>aUr%&nPK#rBGjG-J| zr9?A02k9ReS=SGf9VW7bXR9kzT0H8Q3&WeuIivbibc>wsBd+QZ=JGAO_f?}UX6 zEw%8w@Q2)~a!n0(TB8K;s;Lq^*RkyNNIlf)r+CvT6Js|qFssL}&$BvJI9gbz>0s># zRbA7<4E6(E45i&dt(g}#*J%j0?jXrWl<5b;tF}9wT3jc=9~L$xBG5Gr5I8x zhO|&ydex8B{s;H++apba=R+73{_rhx`~RDX4l*I2t!<%!OkspjP_k4OZ{+!?#K!A` z=Zz;)Zt60Kvmf4c(0z^C>i5uhEa$#ZJ7>#+Xz6~0-zaqlLT>Q>z(;_cHG|%qyO~Pr zcq-mMoZd=eq>!YQ_Npzv0}}k33BZz~v07ey*O)8jtm;>)Ax9{xof!i4=Y3d1hC&C-V0Hs z0GFEoHz8Kfm#N$<>A~S^@4xw)1l=^UoA!Gp^$H^XdQQw&M2$4&pRN1pdD>~xMR&jc z`k>UP6)q}rKPKc(Lx`Yb(uLLkx>o22SHMx-lLoYmPa-Kt(uLsayp#G|up^^0_!K?T zP~Qu+BNm=SB#Hx=*TfzRO@A)GbJ^2a09ilFOFa3scl%W}$X9a#cNYhp273F7rgqSsL%(>QKYCH!Zm*r!= zWgjEBK}X;@ZQ>24czPQ8ab^7xcwxJ@zOf*t=sb1m$?==xTM1%iJhK~E&tG^?Tx%V0 zKT772>ysCXfh!){w9{~A{%*|31Q-1rGzeowIL2P= z%^VKpjRwi#O5pcCnUnS2^GiW**0q&Bc>eU)KB9M?-|E5hyLM8N?e;!lT~FnTD)?&C zr{Q?$GEl1{JmA(o{*(|qe=x=I2pgQV!htl4qf}#D?9N~qhO@7^Qvix6Wi!HOXb#1& zdwUQW?KW9huaD0}WV`3E>A*|F%d><-f7PTIY}SdP|IL`r7JY<2}ufIWZp}~YRa`eNn>xWOL9GS=c z|0$=bQh?rUxGv=kvU?D+tB6AIkldoL(kJdSdC8f07}Nd*1&VmNmCyM_E5`|XZNUjP zKGbuaUtJ+F%Yyx$_J0Xnu8rC3PGmj6!wVYtIP9sJ=5m=A1&yMpAdS@h^ zB%$+E^LNe#I?SmRu6c<$MtSig^QHnIW4~EIg(XU_>G+)ok85t7XY6iF?`V6WFSy(}8D8JGS6>QcvyADpuv$K0wv!*) z@N&*WNd~gXW>yXEh&r$*Zptiz)o_t-9xbkBz|V93FMx()L2zSmH_V=XFkH`{6L!u{ zsr{OjY3?vVuh-c>k1yBylTC)eU_0#)Q59VH+csBR|z$ zuI$o(ye#CH57kh95Nl4WqdiXFtvtzbca9SX0fH>rrP|E{XZevgETTv>EaSj69D4Lb zY68g}fy16YpN%Ox%*~XFTpR=xuP1ieinhAC*Ef1^+h4@VZ0+C0$%%ps+J7SGun?Jh zrTnNvJ(>TLO$$Rrc=W{UITT;AIxD(ZEycznLSTQWMy$$lKxHU6={l@gu1Wl_NRKp_ z!GKA^`_p8(lHY;)`2kYR715y5Dcs!r_sX}~N@=&4GEtterW3Q_5vBQDo)o!oL9qz* zcWMpxh#Fdw`Q0IVv=^q2HgaNkrfnp;!gFXnRIVGjQ5rsL?`bv8qDS-0Lg%M8bR;^`i`Q+r4eFB%~iz#Gq{l-Qp#3a`;~YqL7jMQy>PLpk5?1 z=lK2$cw%%1PnMLEJ2=JROJDhr7v2{ngg-h*yvCrWZ^a!4od(o?@Y>u8n(>R9FY#sFof zKf(QvB9#C4*h`sk`>-*RPj}wr=lVmFYV|wiYo&0jJ7zSTw9ut3>zrQ#ts7mO$K9Kz32D-&wv%!J}U3`bEi`&_ac@{ z^OHGqDZTZ2EU$^dr;Nn-)d(t1yCF7Bza5>q!B(SVgnNM_Mf<&em-~@&^>pVb>@22? z)7Smo4dz?_daP&17W%;hD*R=)_#~Z~i{(-HtSejv^*fH!Y~?KFnz62KOIUC;ho7uM zN2v#a6F&s(arAC)P?HJ(0G4DfhuPdEK9|>h#2h$gbUwE{@BW43ySPt=Aebiv@qflM zlbqj77m`TF!4hrut%fi5>yj$Ch%J#PU?_J~qRD7K#tyPC<&-xkNf*}ZTq$$VfR_-j zQNNTE`Mn>!`XAW%f99ASUS!%$t~g;TQ80GkV(_UbloFzfYugw2}6f~S*?;kIAjC+wbzM{3NV ze&=qN?#k(`>C?KCk`5@qxo))dEduBUvo}2rKR+nv=>6H-Yr@nsv9%!^q&sn5^byy@ zHL~7k8IPP51MHvwll&3;Z~0?JvsR^v5k2E^gV8Ow<;vgF>wo5<+U@?V1o8?+4}M{f z>4!z1=jYH(Ejx8m-*q*h@LqhWf}@6lPShC_h^-s^)V854w(Ew3so#nApw%TfJ%RGTdsET( z1&N_k8}nqL;#v|VLx9;CfAz}{dp`@BUD>LQ47K@L2HkZSW+U!nf|tQkDuD7^WRmQc zD}0LFxm~BqNK-^5g+{qXjWmwu?O1#VAzBS9ek<#&Ikvl6X)kfb8Tp;4*o}%Q0lVdD z3CkcGg!Ra+YYAcwY_q|CqsV{YF_iK4!RfNa^FsdQ7W3~CaH)GL?_@)5r*Kk;c0x}K zox-fni1CIr$= za&Rrx=zh?=o(^CHdzQJ{*fa*+>oVRpC@wC-%Te*DAb#79u#C|5fqbGbKJP%fDKUta zu5Qb?g)sl;|V=y2CvSCIi8ES zz!5)><9>u~PJS1sZV~hwBvv-6;nt6chF{0cnO3N0v36I+{ z=t0AQtb>OtUUV~C^TSY7H@rvt-apwMUao8ivb1E_yacpGZ7T#2)*=4EC8%HMopjoke}z8u2*E?f+9D)^5Jxg9u%hG=p;KosTh6 z?!59Hp71Sxn!+&|=fEw`qkWbk*dz1_i|44W%G8ymUrBPltZvo@7{fD2Qe>0ldm2cc zE=SxZp@* zc;)#kPdTfBfs{ig91Mpu7d1Q1@E&D){sQ97M_GZDKrgS*$km!$Y}%M_VkHOyh|J)g z`k}LfSC|#8cMOO*PikEeLj+4?1^W zl90t@F49vwPxK>jgeiyBu+_8F^TpC3PU(cv=D)vWthlDVCz0439oL-qvo5bai$tkB zgV^GRwt)0Oi)t1Kq!01%ueR)X09m7{sUhu%}L!*(G)A?{U#$B zLLkZ{2VI+C2SHK29WRC}-{D@z#39NZ2p+61*w@n)hvif0v1*$`05WbfPU^(!Os?4a z$P^rYbSzNLIrdxp?)f*0qG$(n=QD1NTr-dAIi4P?fbOyHK!V`^$G*VUhZ30ETracu zucCh!%cIAy9zhb37e6pXucn|I=Vl7I!M*)9$>6y|_P=09{hHhO76=`Q9Gv zHVeEl|E$|*WZ4!+^@ zmv8H=Kv(=!1f-WU$`^YY0lSooe+QC%){q747JwXp4qlPCbfHjMSLdCu z2%P~{-8PPn%!GLDkIoi;_!4E>8aDP_{Z}n2piIW9`y>L0>Ha>i67DG|`S4`Nuqnj5 zmQpY5`gMO?WUvg=@&;FNABVnYcU4p0sn|!WTUgSOH-Xn8JHx*3uTtJGd8m++xwvLBpCy#GXk`>W_P$91XxZ7Y zm*m);5?UQ@ZP{Dex9gE4C)+8*w7Rg;fY=35{Y)L8wPqvJQhX=7(l>z^skx-wm~r15 zRsg*8_Q&~G0vDNAounuWgOxIe{7C=!8I?F6IN)1U9U`Qk@`<&4i|pM>0iTLFOt^>I z8))jp_%sbZoj9Q;Cua8RC$?daa54m*F25qBi{WM3=kT};b-*;wLEp|lD3m|=a@hth z&2!H);dU8=vg&L2QmcmIKD$51k^EA>ebBOV&No7XZ5YmCq^YI$c>m2*5~ICawz0`o^YXVi(;?6{J*|idqw!3>tnW<1em#J zW3+n79WWXlV!JHGjJg?+)hY)f5D$UichU z*Huq9+F&*=Pu@Da2d?GP$QU?N^~tNG^d7y7$tmNB{;ywcHC|toYzpizMc;Xg zeBZ$~^U5ra^ee`A#yf#wBq8CGVv?Gvd(e@_H& z?V#Q$HuG7jeOqN0a^u!qh!?1Gb^N%~#rMt!tbACJ>sO9Ql3`jZNSQRkx8pJNY?g4( z{#N{>F|AZFI?S}x{JVC!?TwG2S)XSoeVj}lJ6*t{LD2>J%^!^VfA<*e*st|KmJ_*@ zaG(F;xZ*RP!wbExIC=S_D+>RWED15Or7d~bc5gZY2THlDm+E-fRflfp7WP_XM4vk!6a3p z1y)M6`;-Uw`6|~N8z*O~pz1+@)uHm%QT{p9@tcb~AJEXxn%esBD6N6`hkNx9M3>$h z&cC=9$$M*fuDXzkMflw2RXMygG%jhNKi>YTjfP4E#54bC|0nsE5dcAtIy6nk$6h8V zuYg=g1I~YC-;d84>RtHRui5WFBU4@q#tAha&~**Ochxk)$5v8SB#|(eyCSW-6|*W00XkjpC5Jdo*cI%xdi5E`wb&W5Gk7=n^q8iY z_vy?H)_toK_g?;ILO2@Slyk=g33(3!3x?EpCBH_G}pba z1iYBaEb52*-__)AxM#Haau;e|dWF@ltNoc)zTZ90etTdJiIk{Ff3{JK{$|__Z-`#l zywZR&@`t4Qt>Y0Y*vpV4UGbFUx}IAYN)r_onGaEx8$r;1@Cxq_V~i34!LNhvq1)v( zqDY*G*xFqq&qKl8CF>5~eBDFelrpv8mye<-V%r(?HA+l8-8N8^<{=MpPiCz`F2b;2 z33O-oZ78A~O5rV-j9^GCv$B~B2*BxaBIh04vy(d02(2$z%a|KNKR+v$MNQ5;Nf}%F zN?iC&FTa<61+SmH|0<(1O-Ui&Q%y5DQ+P@x7I~t& zm8=kNGEG9T06ks1xsg7Z#=0PZV4eHqr#w_*Q7srk=g9}ZRQtQ!=lfq`;8W5sGVQ7} zW`my5$SwI}oE0dRdI$!{5Q@5$7ME-qu^E>T6bvtaVg_7IgtG9MPS8>w4sKmmLIzF^ zade(x*P#?UZSjNk1}aT88yn(MUl>(s-?q9CqN%+-l8)iw9^x(6D$%sYFS7M;Fk|8a z(Zu7%y53^+W<+`|@p=SBC@qa}b1JK|i15mxN-{o~H=#Dgbtr`2?yo41=Qr8jJRp1K1w%$TQBpT1yKdrb3Q33F&JBRV857Hi$_P7zgkd#% zyj`nnA;5PjXVhDK^`vJdr8S zrn~~C{exNk*N@`d1E~)^1-Q5|;GfZ}LXDpL2_yu%Z&;&WoT#yemw_NDYPAnEn>%@! z*_u9!oKzkhF-MM;q-Y4+Q7km{#N!S1^)&b7YrOx2O&#tM$$8-1UI$vXa{8-KNF(Q@ zp>Ulp(T}`cq?l_FPuY}}220vd)S7ZGa0f;?&T7Kc*yqmf{AH5^JCIee!9|gKL9n%w zvg-wKrAAi@hrcIkh;R~tLz*MiT8p=Dh50GqhB~U9j8a-=zjrwcykGsjy6RM_Db4Mz z$I54DnaP>@`wpc)hN~fq?j^G@DYQuUJJX+egYDaTaM(#rl&+-d)IlBmwxX1Qi455i z7d7C89OIKyUN_a1=v$}&=+M_9>Q#1^1{#~2(`TT45e!OS?y z@f6&E*tHyPNQ@0#ZMQPFmBCk$zZxpnj^zXHz#Sqn)T+F1g}A^gXd#%MSD`s`9PbT(H9MySc8VN}2L>i0QZ z8Q=;dUxn1G)PYTd#vqOK#_opE(z_o_c?G(MC6M$tAM&z)#=W8onrawG9XHp_T%cdpv)|q7`0!R0K2L`(2%_1 z5v;jFTgDaePkRKTR6~C1@dRS^oN^I$lJRR7>QhQdDqe485+8UqsnbLB>hEKsaoY~- zQ;*Grts(gjNfz0Q_7^evwm+*WxA4XkX(LED4I5C;?QIVTx7kuV%;~91TqpP1)qJ}) z&3}7!W!dFUysD>fGc3_z>V716Z{^+ak1OFTMrOQHrYZ>RWryY z_w`qpz9t*Br_Zd%jhWr6rk^t)F!5K!B5Izm;k=+N720I%yW!MFC2!WKxj2_P-Doll zRmQmg?!`Iph-lcp$6n_^*SmV0r;%PO6LL+ zyH0lpcaKjSFJz2E?H@ZC`H#^AxU(C8u#%?%OIU>UHaq3XzH5r+H2}P2mi%OZrF+#_ z$=vQ0pXA=9=gqpZ%-S&+QKM#eXuoZ3@I;=b#bS24z0l3W!*S{C;zDE1fuPptQVqo>0xCut#Eg=P;;{Ya+s+7RVaok z{f2g234NN>caE)Mj>qcc!-Er{}FYx1D%=Z4#e6 z+Q+GP;D&C%4g)Z%f2ihTN>MEx&)klf4Xu-^r`?8OlIl9`f#NB@ZkjFEXx{%~dOLN* z%X2V88#5byvd16YF~IqmH2|AkYo!Xsl4}9h+Rn9%EF!cTwr10b`Wx-UVU-Z;V)hEH zPvVMeu-am$j6t%u(J#qi3 zM*WzDC7cKAqM`BJ_ZoWxVKM?M4C}GOn9f2Idx1$?f$Fi)GSf-@1gB&h`DJ@CeMhD| zP!e*M=Yb9k?YB%OocgoA^Ffh5( z)e}#whSah%&g$W*GF*g)nGcZW)AH)z;I7xqy`lVljnSw`ArYGLkLGAeLJ(HqJFOox zuXb5Opsg}$f}MQ!>S!)!dT9wO_1(CH z9&@cI7g%9PDxWBTTqrt|nhDnnk2gp`X|tJd`5%ZU(Td`nI?SU}^-@L}tetZYD1 z!3pAp>_U^-w}IiBwe>O!Kp?S-3^I^rM_^8Q@AZ0F7=m78v|$Tb!}S=r`Sx<)ndjBf zzLw|h)yjA({)eoFv^?u6O)FWb+(35RB;fQ4V7VW)hrrs`MenP6tUc#lAbemATe*s%#VYUY1?wb=9GtbID#?rCsUl_4wIbYa41yUj|0zZK7FcE-h~tXLMRIrARw zD90XZV{P(=O?+PgiQXKv1#vjYyHZ?0a$_iAwQ_PAt-6uy*84W+%EB(Ygpz77rH$0{ zjRnmc+H>S;(e4gC#p$`eXw6B(w-VWgWpAeVed&>XZt#-%(gipJUVvhz@RuoacqVZA zLhW|?*wEhC@GJ#-wXb`-qE~XH$I$m}4<_?Sonq2Y$F8pIGmrYwI0nu>4c$qyH=JZ1 zEazM~cMCw_T4O{yH|Mk}&y@-k$)iqWwmq@GdD3KH4v01%ECuxickmQtYg1w7u8QIz!X%HUU`3u@uT-ACXAeb$=v| zPoOk_C0>E8{aTb+@mRm7WDOHB5Z`4(W+!Yj7tk-hERmTKBOJv1ymDrKIyw0T|KQsU z!MB|7uu;pStnO%W z&k@RmyuLkndQby@nP_t$p-a;MIm1}Thbg1fufV#>8Kh)Zd9774*s= zBuV3BFT>~1mPJH{a68fFy3j4L5JJKeThEpPOkk2kn05-a8=H<4mR`BhEg6f#Yq_cB zR*$ud@v?pq(Z@xUk-q4)ObUI2c*t!=Hx=3Oq1{(ePcaF0#+l>Nc^9X*@R`qM>9^w< zD_azY$8yKzM}@Odd0AsOE;!(EeY!`wt^s7B#0v16M<@nfVw2wjv`8OYkgp!Es}q*i zl6wwKZY5whbM_JnFu5l4C~6_cb|F?yY&0N_#W0i_#+e*GmOo@XG_X_)2vCu%_X_Z| zAWm-}4n1K5b#@GBIBqygkVnlb{W zud_fXHV76|2eM~8VI3~?_CgJxxI6hwo7$K0MVY`?{rOE&>Y?&^?@UuVCW+&VmW&pn zJygp!yh+>mw&!^-hLDM}?bY|YR{Im4zG|6KO12` zedZSV_R>&+>a*2VV>?STa-8C&VNlcbJLw4e<_->%Xj!t^c;)b&-OO3CxyJW4&8G(U4_q zi5D?|&Zy)p@X&$v#2Mee6z>-tG~2Ymg>G&0LE~=~=Ar(WbYO~vuRiPZr6Tk*x{qc$ z8w?Aol&taVM%%^i2%^3KE5pdC&=pYwa(mPLoPyo?Eu(cgqUU_Ay9?I7$?Wq zN*fQQ@_;>_(FHsUy|C?Bsr(6ZdhvnJMQRSo;4gaR3zgj28vClqyB;iCtV!RK+9uRq zj>W$*ckN*3@Hwh7Vo9jdVcqo|gAJ65EXv@6u}bT=GJPy@duF3u(VhM*llF`6QAe43 z+2$kGP66lW_j$u`tHlSd@iobOq8($V4)ZF+a%lt+`NUy)E99_SL_*|M9Tt$IRt_H$ zpN?wv3%pOQvKh~j;CfbM&6kOCx+bnJVU+oit$WkFRNy; zjMXwlPfnu9taeWP(&9+z00Vkd;wC*&!5^W=(!(YD3A4c=NmA+4 zj-A$~LG$b~)GiwIMO?AwG9+0M>1| zLI>%I%VX&z(jA^GYa&I$9qqxZM>z6R28oj$a09hKx|J(u@2vCW4C;Msgo@kM5l8!} zmlCu`E7c=>Q|ybo(;?;760E{-&yJ%BUZm1q%|%7LP|-I|+dafBY(KDz1Wkuou<7;i zr#k_Ox8sDjr(Y!RD@Su@CZXy??}XkTCcDf@OW{U; zgeKr(SrOgNON44hN0x+Us4Hqa-~zM%OXBZOysXg>z}5tD@76ns_@c7fCUNv7Ucgc! zUVZ1VrIF(qM4w7;y>a#fv)gG-pYmmBeGg^?4X`2Z62eImO=?cK_4>-l@DFyySzEN* z3|^F}$jS9;#Th8|<#nlk{Tw>|d5wPA z3v={UA|%X>ZvtL+p<&-yvkp@x?fQ$A+3j5SQmm|Qd$Du+ocH$mOn7^X2At~GC~jp_ zv}FI+`y+X(H?a3aDK=YaOzEhF%j-{;ArqFV_wRxSVYGQtz6lz$LG$NXFwPV-{OgP?~ZUb8g z?OE9D*zk#QV@4gS*cRo1>+t=Oker*E#qF~eCp~?1O;ODpD4lt>&iIev*7Q`^$ed~? z`8sZS-u($ZxgjvRmkWhnuJQ6OYMm_~;jtV#UsDf{R{(-ZOed~bX`L}l79M~yY*qnj zC7eHDMwlWO*zf1)(SX?NhymHU`lxJ33VVoI{=XcVp)>2pkOFdquRQ+Wkj!QN;^@pYGZi$w4}}IxJeIFZ;-Ew2A(&DVzib7Z($P7k(Pb}czB7k;_ z4eMTuTgpNWj~9{MK;ggdKLVuCKa?Qftz|9!s@lxmU;TK_BS552q?3Vh%G93ugy$8W zkjo19sg3JeNhgW1WxJ`-8Obdn(++AAGAgp>qc0#epS?eG=i^^Kww|F0IPTf(EOc0* z$LV}RH4E)!Ng)<(Gy8v)A)>w_IkIcE=@{ z!FZn_w+5V)vx>FtE@a3&@uF)bN;y19=B>3uimOqwHII&GUEhV|N26QVj@6eAnNc<7 z8W(0fpDv~nLSW|l6I_@0!7( zHwifbg4b?X5oX-@&yvDM13!~py_6>$pFHIZFdetJr|OD+do26sJ%3~N)q~n%BGoGYtRUpiyG*~phW*6B$Ck3f(`o}3BS0#p zjw;mN$?dF89hvd^>Ae4}q^FJQX%?v`3PcMZ{8xg`G?&4fkU#PfIxL6;PUpZ$O+jk# zj4g;bY&^ZAhtQA(=TkZZ_FfGfk$RyxF+ge>4*s=TR?yJidl`~Ksl72pq#WKlV~k>r z;4ydGCcmQ#GGZe&{*QW}-L+EbcVp&Nk-HxcwvxTNN z5mppLL1m0BV=Ar~e?VT%vNzE8Qo)EAYvlXYT-jLg9NOnKeyU<)r?dB1h$*GUa|ShZ z6bqLe!fJ)KH+9fkWW-5_qN3&Wq&Fx}pMbf(II8)bac<-OkFnWu5_tyb0X)>;(ff#x zRbah5LPbCyvGlF$sb~==+gdz=14W6arp^$vQB%$)ojsHZfo*D)htm#Y$5*#qg8^4_ z=i&le5C86Ih)I|*Ba`$m!KwN!MyYmsMRtTkwVutrK<1~nH`M6zkyA`rnRS%|lNWwR zr8IbGEQ2%EKP!!ON;ilPJum^-xj!T1=)b%(?i0Vl1*%=K`U~v0_oDdW&NyTS$%wq_ zPXjiyua|0*JwNfKCTvww-=Q)P)QwfyLd3Kz$fcoKd zzy#|{Dcl@p6*oTCQ_m{`@D#Z;cBv?Y+_p^YT5P$KX$cA7-Bg4X)pLHFK6;ST2Oc9= z&Ef3;?lL=g++& z(`c$=3zS`RUs?5U(W+VL_%1*-?6bbJYR2Iv4|Bss%Rv!P_u*cB>ko(rtaPoDt+(aw-_u)otfNvc>b~04*C3C(>f(`g_EjeE)Da`-jG@P&ZoNauMJ4Zg zS76t;+JESP-)BG4v)YfLPwjgg=#>qktSNXrK4ZW?F=;a2Ipsu=|HJO%!>ucv@&@4$ zXQT*QO|SANqPs(R`^?sf9dkfspydXyu$}wIq!Z`sVhnUYm4()q`wez*BimreJ@VAK zESAf;%nMN;WUSdzS| z$w1*XL~CB5bJ>nF6W4*4;EU$RdEAj`+T1Tmi`^m@!@q|W@y5^kMOP^Elqt-P@dZAptuwPz0G(D+>+$+8oaq54)|oRB|?DV=M5u`{OOQcsMaxj7n2B4X#X$9 zXpk@!Rr2h9Pa;UUP^flcRSQc`4OVuzx*vyHOeH>UT#b{bcaK}RMCV1B^Y|&( zOUFX~x1UM(Ts&DIujTMRAKS1H`@MYi68@lr?uDrKM>xnY!(H6H`xXo@+Vvj!IXSe% zXLAgHWP4vM0nO0tXX57+Js#eLc<#fRt53PkluK9p*)BhI!zFIu)xgy8|4~iP%4Y6N zivLSCfoyXIp*S{F6R;-t(8X8(0%rt+Txe74N@ZEOI!sRnujx(j9`-FZ9$@hN(Ue)i{&Vc2aH5u{gTX_G@!wV+PbZdtwSe1e z!{igL{H$DPb?6fBqGlmYVM=WoO(?zP5U2{j6lccrQA@TNtpRW8f;M;wK1>CEnJPz; zHE2fp4SWt#!>TC&2eo<<3-gMA>Tg@1DC{@(VlFZ9aKi|n&m#i(75qDjl1Ogr) z2-VSgMP8o~+T+>Qf8Qh^!K~aoi%cJ<;->^ZYj2#wUZX#_cv4&tM$QNqz4>MNVuMVz z8vpjgWfMQrwpf>bb7>Nqlb^H5frd`l{G0&E%Q1JX;tTQ7X9~*Sv&Ujr(@L$Wdy)(N zKJGqwAtxJ8VQD*2OLuJlaJVKXv$g}4?6l*iXBm@NdgI^5Ep#ui;^dzXw362aN41fn3_i!&!lstdMc`ar_mBVk6W z7MjB5k2V=x!6)%JAN;GwJ1oOQ&qs61n^e#tqd-q8QqPgIzZa}ed<$Wz$+dyQsIfTU zSPXMn`H-$*t@LeuhURnsI(eJ;u_@=IRlQxJ1%27%r*CN%^@%(5uR}ZwKH`~J_bnUF zF3Ipkdx`WGLY2Fj1th8sbyd_B1W=NiPcpkRN68!~S~WpgCYsihT9>O|C;_I_5aw`Q zBUd^-n40iwLI^*37JB|FE7aYi3JQCNppL}M7`h%dt_$>dkBnEup0WSpAn9o z!DmEcOuo8sFrINxeTCNY{uyr2vmVDUoTW{vhfKS#W(VCTcV5Xe()1x#uzR;F@x}X< zM%eH2qp_B7GtTmfAd#nf@_PZ#c?3KjnI|7Vwp;H*cJkj1Hbvepu(7BpT&C-;w=n8p zm2Gk?S2u++L7}ZMU)X(9P|;aG5UHcmFdJ0is7FE{$c7emfFO`EAAP7HNXV)0x)67p z;F6u|#ya!_?wFff#RlQsqT>NB6fgD8#u;A-0L9JK1NbmPAM;5aL)EXwo9X*CWHxTL zo4H7(6oDSl7Ozws@QFsfh)oi6DPUjHQa6=^(vnlHc9%pyrt`vg=_WZDxn$ry<(F`m z%@lisdHOn$8M$)qzA~n9Q$hVEe9B*-37WBf!4$)mrk%AiS7tv~G`4%JJDaO^HA0ZQ z=Gc0F_?UC%O+I64= zXnQGW$M|d=-u5{O+1#$oB&e*EQd+pVerHKzxcDT{(C*0S^64gZ6ljC?`Xd{i?AFSR;O^cc-`DH-g&vA_S1<(cH8z9e z>NrzDzoLo7>U>b5(euq!Rt-Q2?n2_%@uSb4M~ZLzV2{Y|eyek{P){HAU@Ub3#Cnqo zq(W!u#)nwGhT3dAr}tq=J1}^=BtjD(u@YZW7lvfgFR$Z>alIjED@zplP6kIQhHLzK zbbw;jJt{L)U4xDFFa_hamj?$c5{4Bi(BDxgjeT~mh?sj>!&JNFPuYFFa9D>@a1nb-70NV?s zqn`_eYR&bbs9EPZf)jztRUy&!X%mL!WslwCRTWE^-k7Kp#6a;9cPqv!kcoYvHD=jf&bze|hd}-OUCe{q(}|$g=L4`9P!F z7wPUZa#SYz^MylLixU1h@x_ktd_DfXS3)0IT6j5%u9G1Z2ic+Y63qE^>gcO;uhGz09&m zGxC%SrAxVmTXs*5d#=GH=POhPLB7z-yCmGsS2)xWFu;1jH=mEE>j4S~aExY>w#=sv z=(7lGMBHcy9!-cd&Q+b`>H6$QW-G0#($fAiiMS0R9NnPhN7CcQkEE;b2R)iSzt|}Wh256yzrdz zx|WsjTr1P93!X=tQhSKO&FR^@#!kui8`k&<3+vI5?vNhRnD*SO==& zw8(1>zK88@ZFeu@1*9ui4N`|yBy9PnycXqU-4?a^Buau^M%+$3Bz_6}6!a>AmHUPM zXS(av#AT%w6{nMs_vw+JwaQv7|)9`)B8bMBnn6+Kc-&MNkZd)5$@<(lm>{0KC@~$DecD zyeAR^^VOr#ITobObmU1PJ9liUUlf;WQQ#eruBquH?cBWL(`kOL6(Q3nFAaKxJ5NgT zs$CLGm!+DIYmAu}H$-QZ8hPX!!;HRMz?S}7KWWm53|M=Ve6faLx5&_35vjb-5#kPC zyqcID#0y0-3`uSZ}n(8_fx1ss#uNknv?Ig#3H6$cvv%+)Z;%@t+}Ly2ZyqQiC@ zC9Q5pgIp-auk0teKV*3#!LOGDc~Fjl_$Kf{hiaNytmw1n z2#fZSJ^gNTcT7}0qR~axi{*qYQB)m-TaV8JuFkJVLul`}m^4p4Qly5~LRk4I@?Oew z7$?NU|GTI<*k5amcYZ{M(L$ddR>7@yEl{9RP%UmB{>XOXnNqcwL8tF|NK5+1dbpnY z*R`T=dR+GGGjLyJK*g9B~348(1OhdFQo zyy}UqrKUMI=Dq}cU?w)gr`PY@qQ0bkbm(2qcUi0u7A+_LHsWF#fP)rO1vD;UChxh6W zH>xj-jNkEI`k%k~VvrxjBt9Jp;4|=HMZ_pZZmcSI8eEp$JR>k1pI!+R#8~Z6Y*RqE zs*!W^eo7!~^|^fNunX0D>yc!|H)SNg4AOFmw?mn|<-3#ZU>*>Rm+Z8$jlI9Jm#qEp zUT#-RItnK%Qz8yA=$(1Kdbv5t%kC8MWV|<*3r#omlvMiP5=)n8uleKz7PfBcwh7kP zXqRqO`?MSz+v@g<8(YM=sI1DHG0CE0uPgCDDJc6bU*{`dC_Yx%!>hHYbs!hpgmp>T z0U?@jnng{|RjXuJi|v?cAzDpe&d9D$vT`&{h%K2RF~qWp?M`njpH{x<<7}$>8lAAf z-87Ngauc<^yNnxMeORd@z6^o{?K&pniZl% zQ~-wCbVci*dYa4HGVfhY{iAS8Z{pax@hyi_+?X@PW1_Wl%uZ})^Zs+YT#|UspCUTD z=HCd9q24N9W7f4w7k+IB$w5NvjmVMNmUy<@=tOH>=zP8-l(swt*|5nutkH(mIj&m4 z@%4N8vC?7{tl4%L%^9BW+<<>S> zzPA@;n{5*LB)b~x5L^`kGTCS+mygYN@!_~3+JSVHuMnXE=69hdk zE&AcAYk=%(Rfzz(71Uh0B#Q4XlZDgs@EKvXbQ~qaxci=mp7P4JpyeZ(_M}ya@l5_t z=KLGM#z*p)Emg%JkN2rL9UKO|gO4(1+;K)Y(1Q1v({^&s-zg@CW@fD#x5*@1%BY42 zBtm6?=1keJ74lVdD$**WIYq`z;XD1~r<=!e9H2f;nz%I98m(i~W4^x$y;gxN&144E z7KlZL1USpuN9^s5P`pe1xMc|Qm2a^*0b2pJ88etlX8B7U=|X<GCV05kfJr^ zFTd4ZFG)7WqfU8WiiDEu@ z?>V&{161M490hk=E*0{u{0(7N&i;t0)ysKvOap@kCMJXanyxIn1sA!`YShOki}xt{ zN$YU};L%U=+1+f~0@pu17J-_tmFAT!Oq7T}0bG}Z+NVh6(2VSPWeh7AV+B}LH9oKX zwK*Gg*X3ZMo~fQ!K#Iy_mriov9L|tBIZ{tfIOcRJpsu+j;kE1%}j;T9%^ zCruEjX*rMmB!F&{z`g5`5xYa%Q3yrKB$)Tv?3Z*}_ih!&qNn9VQyv*ZPVVm}wlSHg zJ7wy=&}*Niq`b;1Q?ilrdSXd?YkshHaIIyk+3UL>#;n}ZqwO}{()PUj zavJfh8dLu}w-c2j6Qg0bdm(ARJ;P*Pvki;UDW*Ez;=H4aqAhd#I2N&`uLRci%sgV5 zVrmNzR=udjq#55$%tVuAQgkp#dT}o3Ew@XW;To)_fr#La#xjB8F{+C#dY&o(or&7+ zQX6;PeNZp3KoLA|&KbDpA>4fHUh*}J$lUqeFNO;J*{r~<9RBr!E%5VwFn4#)jwjIxV@6a47(sV;KwFgW*>M&fK+g|R1O$l%uvjl3wh@#QtMccwB(d+CjwTN%9V8!V8q%E9uHfmJ6h z6~^@ZiB>5(QWG(&?7i)Ys^RJI{f z(>;}JyGUEcLr3ZL%`0)ABVi`LDntV`?JEl2qake*>}=;+qO5b(+~8PM+SRts^Jpw@ z>jMmT;nun0@+-ksT!*~vP>Djp<7`DlL8aW9wm3QtSf92F(odycm{m60`KEuGzM>x! zcL>io_~Zoq?8FwgZiX3Wl-c-sf6^`jWzks|FHDY5`Ptxmo-@52Ks8UgYgi!~ca^BN zSx3aSXlWM3r;poDA=qvAo&;1|H$1l?0e?@$Z>GXDN*U*%P-L$$9v-M0EBrFsjYu-& zKti81*gGDRm22s7{#AW?V>Ht8_*SIafZzUE+sCp*HX=Z4LFX+~)9dOs?)ly<>FRj) z4*s@H)5Z#TsEw{c)%nch8;r^$udu7xvO&hMC7ckKfwYvKZs(5<*pFOr4%8jJr!5k? zR^yB62s7ZI8e+~UhVt{a8SAu>gYeCo;qeb^$5@B(MQwuoIWp5Qp-@bxT2HH*(K)_n zLfqO046QXddx@! za+zyG1h3c(Cdt5qQW*?%?Z9^3N|d}1%90e_V9VRP*1X}rOPPWT!+ z`vpQ>id=2~my5AUE-26Y!o=f}yn{vSpNLnFuFs-X7MpMW{kSmEM+Gbu9d_nq8W`;i zN;dfLLxZ;ZlhX2DdY#F|=Qukn64Zww5&DBD%@-r2loVeuU{ptwcxdecbJKCx@N`K8 zSB=P4(L(uCsE2A$--8kjt81R2(v~TW6Y>)K4qeN%e$c$wxm$< z3g-nELpz}z?Ne5!$Kw-5tm-nah4Ff=inKTOE!*;+=fGPvz0&wn#iEbDs35!4#9GFz zznxL9F8KQ6aWC?`k6KGfbumKmV;r2cnBifZ2$_$;eKtn!!HB6UEl%V$=)qcOpaTjH zBjK60tmn+?tZf<3eY_rx*s_VsQh)D;wvJhOHB7CZH*7Q=*~g4Is1gl2;Q4fxaE^D1 z&{M0!YHYZw#Ngn*swBId>?EkkA^Wu13*0ZpNjyPiBtGEsC5+eCh$ia&e)5*l(=s~C z8u?v$hW9K-R5buTxg2fN?&-FySHlh;fbIvuo#NMfCo~A^u&abBMd4{L@`&i3u7J8- zoiHju&n`FU=3rN8(1+dHj~C@i$Sz{vN;13Y*S_P8@(qUMfn|%OK40hcnbv(l^}X4J zaU_;V6ZKt7zF$T#vwDBI@%kx#lUBPk1^2YC2|;liM_~rBa==;x8tA*pHPW+`QSc5i z@bQ|07iT7e&?&Q=5m6RbldII5<_+N93`E-AOHk+wWY6Z*ysO;H^Ak7XJscp`cP-f} z*ZnF>DKO52DS`Pq$!7b(ZEA3a&CUC{#)D{bv`Uffh2G2b>V2)1a}JE+6_g~9Bgr6O zU?E%i8CDqII>BTsrxo>}vzpD|Y@pqOV$yNda#A%0u%VCxXwmT>zvXNW-jiznpfkrsLbU>vgpWgJ(v^)-lSE z!$v9H!q?=}nYp_}Sy*(qT&iABx*mDFyBtplw{`1DY^nAf{Xm2@ezQX!| z=}H1x=vZAv0qhFOIVTwn%lsy?O(a`Yp?ARZa8(bfVKYt+XB-BOehoM2n~?t?l>b6} zRgQFgAWoob>FbXes!>zZDma5iQ_s6FF-&P(6uWm_K9Wwb0cM)2K-Ke9`6-~}mpZ94 zjOK!le7b=)j=OoVsqbc+7{=F5(H9KI4i4gk*2$`dc6iEHcDFX?%VqHF0kafb7kq#l z`c=WSCsIQi(+l(Nr5K*`E0~F%>v+B3JrEG`WUy%nSF4raIBf4VYR(mzJWQ-DH9 zw&F0QZcfoXWRz%?Ca`4i@I{wx(w9l%XCTZkj;b~POnWUvfy>8DIZaqd-6bMEoM#R! zNL|e43>}D^urz9laWfb2)KP5BtrJBQ76nQw)#{Fn@Zk2&l2Z*{-C#MpJu;;IcT;@K z7pJFB7S_p@mLf#fv#L_34%<7yeuhrf$y)Cy8Q$M@m2SFx0d#T3eUGw zs;91$>SPz#0sKT??2Ft2Z=6g1oX!BPA7;eC(<;RO92Q|xjrbPXJDmca$nhxVfawK( zpbE5(w#Y~(Z{?hbMv4eoW+e0`KL6WP4VrU7TWiQy?*TPS3KyP#{MT2_CnctUlh3N1 zUWXDCQCL@%6DJkRk+i{(QkjeHh3i?NJ!4_>tWeO~cF}LLLOClXXv3^M^T&vpccssA zPwdq{!>KJynbdPi3~B2liI0;oPn~f#?Yfx6Un>2B%KhbRYkb^!HF|E&Q2&`Sb#;Iduwm0lLgn@0$w zZIWzSr^6zQ&p0D-N{w#l-?j|A%@B6zdVX<&2_e&4>)_!qTrbp4plaf^F_{;Qkj zx(FG*LkHh;Rb-G9zx;D-f4{f{h37&IdF*zyR#$se^5|!tA-?Is^Y|l;<;Aa$8vEut zfUAJ7e-o%VH#b%)IAylcNywK}y1TSmfpCJkfUyOUlnR|zsoT5?x}2KEoVRiuH!;SM z2fmfBRB!5X&!HWmKi42{>y3j`?0~7rYm~L-$Qt__9@~nRFyUY)Wk%e+B?aq zdsC14QWrt#5KS|hyDJeewv^oLP*s!DNSVt>?(7_SJh8INI5@(t?#G+AiGf5I~!fqvLI4iSmAk4Q#tSuLoUHUNS489#}R&{KO(0lxQF&r zg8tV87r$%Wqx>Np?s!s3GND)B|HXVQlFbe0*!TfV9fzRk!s@f& z2E8T|{IdXpHa6RF6nV+5t`u=szmWJ@ZbOH&8vc*f(=X?EM!VHb!SRJg4(3fRqg>mw z+eW)>!=65F6fB*!_6lsp6}-|_mnW)V_hL2ko8%W!pi|J$vyG%^tN$l9q7?3jrpg{N zMW>&J_4gfF-=08TfLYZX&LEk)?Dy=t033fGR{zw)esc4}%#G(as_Nf<1>^YD=g?2& zPF$hrheeGe+Dl$?L{N}nXV^TnOb02hz~g1K--3MzH}Z53alJmF(L!zDcNTF z|I&B$7#ZNlu&xR8+fcSR5b#d8vUt>dJ~uqd5zdPGDH!oa!s{yk%VTs^9RCA~Bwon? zNdMB@XSp! z(cwE7>O!>74wdP=8uK#DhHwBWmjuA8W*iF_njDCu0jbBVyBn(XC% zuN5TolC>F!RNrki(1hV8zOz)91cwG=$NAMZqrE>n$hpcM`eN>MV{nJOjQCyN>BgUB>M1y6NwF@-VIW zpLCd~Yu{kq8#x%UJ@Dr~#u>W#%;(TPcc9ne3+o(d9LCb{cVdbN=*#$u`!S7UmHg1} zC%)LZi4~tY<25{e0)7l%6g13lbo-Z&X@p7h+;g0{U50r&!I9DWF`ueP!aPDR>@FkW zcA(&>U*aYuw<~hwNME|fvE#GiT7bvyuW>Kqr-T42+uQOAO0T=T|C;&c=b6t7z0kO+#4z{g|8n8wR#RJK!V` z=S`7jQbExG8sFhZ$Iy$NteVqeSxH|mWoyy#X^pSn05N^lHgM}Jhu1+cNdpNIOaEq6 zc=T=D!`?0k%n!6_KgZu!$p3~FCr1qFbf{ja1{y$TBflQWcHOd7J7uK0jwsLlI(Ya( zG-t$X($@Ou_(Kb&IQuSxhuUqcrhPcUTO z&;;Ja`DAsAb(Gcv4Nl1^b6tOHZk}CLJEh?{eT}Jh+s_^a+NB?SwxK~?d~|bU^pM(| z`3B(rbde7@=m`WoPf`-@)pnXdYc>4zG@FJ)4AR56w!ey!Xt+NQgz(2~ZNF}faVft> z_D^SUOUH^Ajgy3q)uHsl5t6OgOm>-5)DUTdwPiyc<@8t$wvSv4yTk6J+79&U|G*S+ zTMl*rJ#wz;G{ZAGG1QVQsu92lh{`M8un4^$xufp#>5JBN(9|?tbtR#bs1?d!K;cqc zy+a3V-(IDrL25RmS-q#F($Mb`9EZWXWbx7k1fqtLzs0!As>381FL-p10g`DA`@NTs zK9w_JULR}!=|raM^nqMNTwLo>{&fXvLGgYLEqw8pXAi=l?_lvlME*E(KdRDU+>)i> zIgpI2a7}dZ9XHC2KmJ_UBdDC--zR$i;n((tX4oCpf=rr%T+x*mKcI5YM(gl*KyjMh z#qk0lEOR1Y#?9c^jK;!IWjjUYy~tA16mDpmnW7|vC1AUM*HV$Jnww^4`ku5gj666H zBeBa(W}Y>wTF|_{x!1tI$;tUnPD5^j&VZOx2p6L@g&#@vzfJ2l;qRpZi@2yS|C1*B zNk6E*C$fWygjsr9Aq0&jhi*}qLszXplrciYnMkpn8iM$lj-QteGz(uS6m#~Os z_V4f6!(B(4u*VYk3|)f`$0hWo0->~~EMHyrWT&rY)~U_St9Ihu*kHQa2X#U;Tsz^% z_R8~TQnDFqd3AJ@VnGkO)c2rE{rAMf*&av<-uH%jRS=CRUiYX*_qZ7Thb}diAJJU` zTkb!^)jr1q^WeT+A4>SUyI(>Nd*g#5^IDn-$zGON!>{g7nomz-4g7_>CzRYhZyp#i z)Rr?RgkOx9ha$B9GDRp6-jEH^60UfRZZIXyRlvg-aND}>)Md-e9?s*Qx!NnqEovC( ziAS%tSzsPmC8fTrrm!Kah&E7}Z%iRQP>99j7XynL^`N%k!7qD2zzC`o#3{PrQw;^~L& zmHAXh*o24MIC1fBk6c#Q0VV<$PPBMvZb_9^|8$V|e~03v=sh1K0`s02D)N_^BK|Pb zRL%5Lo>qN<8uUu!R^cbYi3_=17ULF7RIiQXU!<&va!nW@-S=o1Py!j|4|T%jh#OP!3xv+OAstnFLH#v--i-$s>Z%JCwXsu z^g`QKrS3fG3hz%-K)s>mcPT`GP3nyc<38 z1|`wc2!737Y2q37J&O?e``U-@k6i+fT-10Xe@+~2{#T5??_bL3Z$EHf2nqIfE&s@U z)zj(G=`g)e7mtTtBlb%FL4Mgq-MliAyE_6TPI>o%dy>}uQJnfD9Uu8^XHn3DAe)28 zX-Zpgo`zOYw|e*x*y78kiEvsAm>j#_MT5Gs&AGG6`9$D#s_8&0Zz-#~{A7``_Ch0Q zI7!_vGB&%eIpy1|IVvHci9TJWt0B050yw6X%7_gv4o8x5(+}(cVJ%orl?Uu(AVY<5ko6O4r+@`fTPPVskG^( z6N#-g!MB|zhk2m)$AA4>9p;ko?o4vM-s!b3Z4rfanFh)kC!&~5I~2wPve25n8l0HR zmY<#E(6gGn-Z!ObU*-cWE2O)4_Xv`UE+_ktPsQ z2J{|X54)4q$->!uWHaVc$`o!gU^%y;@%XiZMgAEjw3iOD zZw~kS54X^UcYcZ)MIggFUCME*rVzKH1aqzED-O}g2EnHm!NzlQ!> z*f5~#eQt!No6JlUqKXA~4|8Q84P!(81t(p29}W)Zn(o4Zv9&&l!NJ}EO>*Ra+i!l8#6k>5j&=%L2D zJr7ob&;AM3nskp-?_hs(>?s7)A1J2%E5vW};J)E*@okD>1|Zh;Uq zBuX$_qkPzGUY~K)>p?OBE+anNN;={z6waD>2+Zon|C*k!DtbtdZs}6w7C*o_a7<6r zC0UI;7xjZ>?G3ndVt24VC}THdcfS2(ifSi-piQ;z#vfs#%}6GiSIWZHwe?O&zb~Zy zO-Nn$702HTsXwiO=nl_D{s&-jg+Kq0nZq^EegyshE92gB`24&=;0LY1(GY?TK&~@? zxH5hR_Ysn%eC!9W9^gJv#3wL^wzcN}1}6Sal_Kv{X+O6)=vjYBD+=6>c{MbclPyj+ z=rQS0DEBIx*0h@s??jbVsv9fpJ?KZ!aPNGwvR%iBZ%k1eej8#>vnMNaJC`i#tA-H`Tvh8PzJZv33{TrT|kwtiQ4T z%H`tuO?E%hM&ZQd(DC}TOQxfx9Rly#Un($d z?Kiq!&E}a%W6ll-QqeWq?kt)_*eCF|(>3F`EK+6cEb-XYu}n2IU;=yBYRsoT2o)(z zPTx`=`28%maOe)N=?8_RP>c=jYLf@GD1hccewFe784oTYB?gM45GKsM3nCWsnT|v*Cg>X@=uQ< z`+86RsGXW~b5HVvcu()^vk21NHYFK6`1GZMfxP1HD7cDby=!SF2$(Glb%>^Mt8(*| z`cc@6=cCW)qTlSI89F$)@_AKHQ}FP7PN{7_gX7kmx^y}PGDGRzr{iye9YO2iu6vG+ zmhQ(Eo%d}M97JF26#4!@DHcQYg8Bhtxw=00`%M(1mIQ^!@V+|uo>6cYbW5`oyVe82 zpI`bU-`AqMXR8Auc0aJB7&V&{X=dDzAW9QH`gGiH|G(A~d&|pqSJgptpm&qH0q_#| z5qehnJOw#Z&pQy|3S=vi(xC0k`gd8?@Xe#ECE0~_h-Mkh1@G&yUp@8=b@t1ca@||| z_cVyYmMqv1*~4tQ=BCa93emV1QX8GaUIRRR+>BAv%+;g!)h(L$Y_=0Tvyj%@uS1R@ zRE^f;fBE~{orfUnEEZH}@&A(ZHik!#8e}49H%?p_0-%k3C5xHq5Ai@=Fu>+78Ow6R zcYj$30`YQ8|L0{Pi)xRz$WN9jLYw!7A=aVw-i$Ey3PEGNMz?5?zYC*ba^PoNw8ZV8 zt8nHCiq`vPo~PQjv$f}3I6oYwc|8}F7Ks0}+^Gf1^ajQP(cAU0o%tt}LZ{=}ga*!slLf?Y&*hwn}NaKNE^dZR$XqPgs%w{tSTnTQel zz70U?bJwxLv>OVi(Hvj()FquD#eSky64G$JqQ@W5x<6o}RaXQLCW<)ZL;H_)Zfaw= za_>^_gSX!Wpy{b7>h4W6zeyy6X!xUl_&u|0hrTr4-2#L0kc-?o%aQ)BZ2j+r za#`?WofQIK{bc$-ra|)}`L*67clavih0kl+K(=}L*x9_Wk&S1g!Y|f2`Bsgki5uis z7gvWMBF&cSfIU-R|EzH?tAiSDzMCC-|ygR32XJ6&wBF$s(a$3oI}& ztB9LbO!N+#><4c3q1W7x@68g}Tl^2HqNzHf1JduvO57>W~ zoBvg@bV&357;vHF#D8MD8NT@fGI*cY*eRMmvvx3D6j3x|FDoJBN+<*I_Ivv5$Cr#Z zk;cp4C~!qSiVMF zws?tvRgDZ0XRz>utOR?iSbl zMU_tvG zYswh;%(DDvN9boDtPd?FTg!H%|H@Q*tL}O2{o0}qUU3@hZ%??n6TOdNsnMr&LvhPv zsA(*k%5u{UvfrSdErjae)or8b1zQgBsxPFm`M9@^?#&a)v~7=BA9oYm#qZj25AEKY zsVjWlgATSUuHxdU1(n)QdG4#3H{An`S@ywa#>vq#|80&gzUI08z;k2oP!d%C;<O(#JjhaCeNqr`<-5wxW0^V4&cppNSZl+Kpf2v0@JjoUz@Pg*v;tf zt#X;yJ>I@=0CQh)`_NhYlji>W4|XdvcrO>oNrF0spK?k5EjMxrtU87^eV|!QF)`48 z%#fO7q=HP85_%tcmnJG{Tz&oo#=djtHGg3~@FR6fP7WG!m${`Ql+*D+!^PkE3e&~P zMo}sX7q*tjU0~5vl{;E=Smgj*851;7Mw|7s*t+ChkDK>!-AGw%L!%m7XdY@kRXKmz zO=4GD=tF>2<=F&22yQ99g(FRS6L=Q`$T}AUpo(YDSMNRfqppq3Ya^^dAroH^|-@oRe7wMulGDWD`t-9wJ3)0ex=`k z`e6&a_E2iZn7GUr{uNk$OVJvI`<%UV?*hww8hkLt%!xGbeM4v)-Pc6eO?=PQEW_*$ zEs|&CT8~bO>?ZmCu_9wI+fjRF(=0z1L@rsa&j)i8E$aQe<^PNV5wh70MJIn1IqPk$uBr6>!cd+;L#9l{g>mxD6!J6i)I-Uv* z%jef(+;~7CP!rZBwB^;{k3-uNY)#U4c6$_X41wF#oAYN$$jj=ZhuL^&bLxCQZ?NRg zyQsWI4oqiga0xa9qJ&}!362DQc}cawbYH?0*$oxJ8XkKtpxPJK@O{DyK>UoH2*M>c z_rJ^G%hq<(-S!;wTo3*6;gT3y7S70Yn!n-VIK*YN7p%cbB+{ExmD^QuXd845j1}LZ zktzfUfPz{u!&fcWnnppB`$UT1E|F@xFmZB%C$SS$3$ySvp9SVO6aGzFsOCFGs-pW3 zXyn1kUEZOQivP&i*7RvTr1CIfPjn!E6G{Dioy3pI-NQmn$w*|)!0YExLdb8}cXQVq z#=DG#1f;Q0MmdkeJ>3HiL{=A#AtGmIvi^7>^WVNS*xpii*>jxPU&bM=s?ql83{^aI z3V?*YZyq*WM08CwUN-WwaO6PjKO0zPo8l|VH3L0x+V7^vzGs(^)9mip@P3;$_ook| zVT_$-t6phv^t`q0)ZS?p;A1-spd`DFPWW4eKotA8KEvDEhyFt6D56c{|5sOsZ+is) zJ|0`@d}Z?;^n6CMR;7s%J=1Z6(Ji;-Us4xvbbCOa_}-@;G)Y!b4c&}`C^82@*%BDDT4sNR}1 z2PvUXE&0M?JycpCZIeocLk7ALMHBg_uNEdovyUUD(}X$5t9Ol($$!3wW zYN_NNBEtX0j^stkir}EK7HR_uCkGCxwyjqE zc~bBnh_4Tg2RAu4beiFMLDY&Ivz8cVPtUro1p;6bL%H$IZ;X$*)!-5bTbtk~clYxK zS~*Ku@#U3@@AR$Vp*ZkBaWtmsPYTzHH%_Cy(EBgz%~qQK!lsMpoF7 zMA=;m8TIBwG!Ww_T|sMGC)ED0adq0}p`t#yzfAZvhC@3rc{f`}OE(0c74s{@eob5F zdNo^fS!KoM+?oCGO-iENgFfilEDDrVI%?7dYIq!Q?DfEoA6))lw zSm)bD)%zbjTW?kVopIiL2XrvQ7TB~rCRd|vbqOV~#h1IwxK{3b9RJi6CZ1Ys6`h5G zy<0jf%>BhMy!uOjoa_PD!qJp$ru!}hqp%+}m$mzv%dAn=;Lf=lXp$L9@TWWhy2q*T zX$@ArmyeSF1FQSTU%F}S-Ae;ml35q#cY66ZX-o`5{U!}a9l6&df9q7Ix_&h%bzjNc zG}a=%Gt-*a_nqnz|0#@4JJ{3lg18494})RN)JwkgC26t=*?&A6X$Y=cPm*(7@?0oyKGnL9D zU6=^4`1h#+^-lQG2UH9;NXMz!;F+S$)De1ES1Y}#^&*1O_H^)0c12FEq@hgQ?DXk1 zhdPm8tSA!`eW|-?S8fQ%(UV7y;en(T(y=%#>|M_q2brZ*mtMGM%Pu$qIEb{ZiyDId z@%Gm3;seR%^_?pH=k#NfA6fi!Xui8F{&9rF6GRHs$Jy0m1BMd~RTB<-$5$&>e*x+h zzsPg#>ObCxyYC`~ApDeDq4AUV&=>J>`jy`?1z{7fp@aq2UU&U2c`H z9YTw#tYZRF?ttP}Q}UW@B&H`y0b>9YzcZBOm|?rY;>=m5U5EzCE)W1XfJ>VN4H6>& z=L__|EGN1I96fu;3@V70e>Mr_{Ll|MN6Xi4 zBC`)9`I7AMJ3}j8_vUpE6I`tO3r6MIRZwRftzp%P8@_F*eAjQM*fMIuE8EVM6&anDbhIv9@Ld<- z+}~7EbgU-fGG0sN&2rd}-<$@W?C#unJhm!-8vOOPJUG8b79R}&Z zv8=y+enlU3t<~)(AY~4h(z|nb(y^!bG*!*~CXp!$bg@75j3S9PgZcrUkl@B8|E!4; z65#&0pOp9>_bm09k5KvxPpg%(av~Nxbzsw9v@~7oH0j6nB=VPd&I`XI=~SWpTPZ?` zxQSNw%!?UGB^WcqGaJmw;CfnP4{Zv0G*&A6Y2VlmUNPAn_GjJ*;wK?PP<5sJLuP9* z+fsWz2TI!Sz~I6r7WMThEGya54P;x#)(-aQ!7x&mYs?;cU@^{w{t)}Y?y1@D5NJCA9z658=dO;zDE61q^+xJ)5^Yj#K zmDVTg=^ZLP4;nhwwJz>*jPsj|M_J`Zlz$$=jMuNpJd{hTm-pCy6I1g~&o}d)zz!w@ zW`s#n0vfAI?8hzHrtDUa?rHCL!1FH|tcWdUcSfEH6&#usG!*HX@dtnXEaF{`fdD+B z*$dYT;f1YmQ1m{2irZf*?1S5vf}xr?JH?x|3oJ#XHh0s~BB zos&B-H!-xkb>;$VWj9vhsvqGTPhjN0SAOVm+C>co_`z}F78MvAAMqSGFX$cvE_{z} zF7K?`1^Az-l5vK=$pqnWrRN_D5QTLie=9(cdc&!mlyCmHX6}0(e!p|yZFmINZ?Uqw zrKkH*q{Nah@b47o&k}ZcDR+Rc+({@DL0VbY%Bat}=~W0kchuLCEtMs0JG1(nl4~|a z9UqG!f@BJOJ-jwH`vHGW!(G?pQ9daHCN=)*eDF47!$3&eUIcu<#7^9dv+2sp){qi> z=YzDmaf=EKuFvkIHSfFb$>jSpaQv+^1Xu5&Zu-degM-@q?=lUtAGe2--XYwaGQ9Zs z6!QpVR<%Qun#fsXm&$$9`4?35lRN?UZE=tVo#SQNKaZnmdba{W(B^8#P{|cqBGRFy zqn+COdqv9Q+?g*9b3z)kuSqGse)upsH6~p@bIV~sNfe5g&>uK^C2UR(thutCJJ0tL zf)qMg8cHjf-Ca#|hyW<=5;qsl2z#jcti&Qa)Zdchr?zWi6A|P-xd;?PnGt=`FV)7xdu|=mhfhi;0Ab9%2N6I#yLKYN#$>7^OBJXJOJB z3xQZNIFr+O1h}&8>RRnxHP%*R)SO$B)8D^xUnSv6d%_xjt=!aJPgBi*7%KN!tXwty zF@FsIAzjz5Oaq!zyBhYs?VMDodFB5jMJNxJH} zypcJ|y>bgIt7`O>m`7P2A4Tax+0nFCc1d3y`Oke{mJgY;r4Fkh+10^IGd!YPFsN}4 zbd3F;@ZF=M9^P?mrE$jfkmlq`lR6SW?x}mc&^`;~Cg~Ae<|KCH!eVbBVIm)HLteO= zUzzQU2SMX-Eu?ioNYdoUA0c?H$EV+ zQfD^wH5p9t(;6pDCJ|MHF)rJ_!iMGb_p*x-W~>WI3u-(0k!pM6PVCY3A=A*!IsGxk z(Yvt+h~E&BNn+QAHV~~U-=qPv?|zDBaqqc7XeiyAigPsa*kiHCV((M*V52XF%hV^T zULG5j&la%i$kJRnN(=T)JX}73gFM{r zj%XLQZNbR<_OoYsZvG(G8h3w3tnwkg0<^0`tHXZ6+M`3&Ci3%&rl=4Va{7t1yw7TT zZVeOamNz~I@vLN+u9|WLW|9x{ke-au+!X#yGb{i*E~?cn95;8i3P!G-i3nwbsY$8` z3db#pX`(PuKxD^=Vyb)nIt$Ny#whWu)S>oPk39!LDk;|28F5<+o7~+Th{YWScpJu( zad0tvOh@r0ob2TWK4aQ4L11?dBTsRqq`5n>^Aw+9G>dVGBus(RXJp!?6yL2Oa&D@)HM&+f(*?3T(nm+ZGzXSr#oK z7q~m=>Iri}fh{-Dt|^jEn(@5M6NeFWyE+r78kPk4B(VpAZBFKVGzm7S>o6Ppo39+7 ztL#ig@0($wIk%oSDz2~X&Y(9@I`w=yg>Q|Mw7JK|T);2(R(3+O&I^d!AqVOwJGqv2 z6Du|<&sG|bpHID)8c!T-7n(d*Np`2M=&r~bl`IkN3;;(^y|x>NiNie=ul9D9Y@OJS?d*OO zPN#b=|6`CP`5c82Jitk5_HOiC`LUA#ev=P;nMy6f9!lh6w!;8NM8x8_;PCxaxOw$8O(dI16! zM**5$#Q{pkh!}ZAs^5JDsDSA05E#WGL&b^Prx#iB7emyuZaUwCsId|b>_;un=i~o8 zVGaaX)1($g-btG-ZJlHQg~yh`#zmCEmgHC0ImbhQV555u)nSaK<8R~P?ctX;;>{E9 zQv|FuW?H_b{VvPc+q-9RZ=z(>FtNOU>=ZuEoZe0J^-R07N%FjZbO~*HdQJ&-Ip%S1 z3cmMqmvacMV|gNJuv`o{aX6oE@?2ec{`oj>9;$LY)&|x0sFL*CzF%x~EiVr1h0<)r zz18RNO{=?s3&R zeqQG|e}7JN2W?H+Px@xa`K~u4Jz5GdpcJ#|cPw!KLaL$``Sffp`4B5P=3FGqJ?*n6 zVE5|0H#Y_lh=zQC6UBd2_Y{}Y6G&2cbwvzrej=|FctqQUzGTR6V^w5B##XXIos${x z@P2*&Gw}hR9;g^T{rfZ67IMV;*H@>*oFbn9Ili5M85y918IVywjS3$BXG2`LZv$vf z*_DhD3}+-3LriWe?HlV-;68v42AV4nytg_SF`8o4K_VW4VWz4zwDLTWyvPBkVxd(U9syyv?1j^4ra9NgZz> z&&%4e08gk-7Ix(w0n1z0&S`9$DCD7q)6&Wldv#b4w9z z?a`}osd(qry(r0f_^q^KHSBrueaR;Ld+YnbDX0hUt=>Pk>2z!GJ>2bc-7Pm&&6{TL zhjsOuFT?uu)u{GrR{I9%biFBC&+hHehs3r99wGMz>G-+4i)0KViEF}Tw@6>a4$rp= z+k=@$ECNl#E2h5+IIov9^O>JyUOYtH z0+&*|wQ0x$z5112SECwuevZBu!s`dwOf9`LWV@R3D|qQl&d@BDZx3&UQr8(Bl;EK} zyGqc16PJI=yaxBd-xhH^V|%l8ZvqJ=ZGiXfyYTHE2p(UcR^8X}yy6HHP_%v@^R(CG zRWxzIKnshT{BYYcn@<$X{>_TsifYGClVIQs-nAGmlgh+19S%XU%f)Ijj+% zTY}2kf+XcvFZ{N8s)}mvUWfiDv3)e;l@(x_eA5d@K*_J;f$d9BO8c9bCnD3r2CCfm zoUz$f#$zi80hNHBFS3h43te6%1y4*qtc(8BeaOGr6;Pz92Cm#4j{M;mmpRIK_?K4A zH^z0gCyk)U!9V3a2j=evXl(zgdbnksKTkHk6iHYz_hRnJr?7eWdWj_@zx`4v_eVm; zjd9RF%ia1rQ7_>!l__u`h+!>M|JYu@i5`U z)%YDAC)Jzl*72yK$}JvsXKq}1N{53^k-l!hd0I_AOWknVWv7SmND><&Dmp&Xg*7i~ zr-SI+Eqb=rxVTV0$9gIUj0F@D(G%zVL(2Z_T_I+i24 zQFk>J7`!!`&h@6^hq)Di&|lITarpY4kyKyMYY9+3<7R2!*5?lcrRH_u=!(@bon;Tr zfLkzBmg4)Xx))<(PbyCt+Oz)>Pg6lbntAZd70FoCT&|AvR_DVp~h(g^)ppkuoIGz*KxXE15ROK9iyw4jVL;W_6S91O_WdLj*7eUns@ zm(4sdOPh>37w`3`3Ihq<8GZaMuq$(!&u^MNC*w5Bu)`I)>)#A^ZhK!>y(;f(Kc8gf zW@;fXP?#ff^1mL3zNg{U@{0eO{dcHM1svg97< zj0MPl(*O?4ZHw=@kd8av{@ur}%=N)*60_rfS#~8d^MqmO+k3Q`9>Y3kCyk=~^uIb# zet$OfCw>ZU8$;Ol_on3aPPAKgIPgsx!psLGAH(TPmWya zQLw;zLPBP*Kavif5O(8+B z2Q)Rfnt|(b-}o~zvKyy8gYR$b?@)g{_gAGoPntSis*vr?rn_;A zOCv=R5SJ}RZKi>F6D5+grMb0gZTH4+3d;izZXp`@cVMt{R#z9ubHj^DH<7Mq^4+$s zYA1((a)2+RjKoxMWLkMF%Q#)Cu<;uD+!4t4b4c%bGW0nZw|Py#19(+K*Y-Wn8yCy< zw?bcezBZ!f^ckk1d9h^kL>1lMnrFn-^4WfBbt^@d4J%UZR4;!Q_+7_WgS+J2i{dK^ zeGxvEx{CS_cczs)R}dI|Xc3Ahwb z|KbGcYoWaU$)^UewJGr@Nc655_1W`7gtfDfu{(!Ct+A9K$o*PmHKSFi-j*xkp@aeL z7RGdYnD6CFes>atG5S(;u>4uP4+=}Q?2 zQaADYzPeznuRmY(td!xFM^YTV)e$knL6-gI@?!{Fp+DAInP;340*}tq3*r$*qdm`d zP~fbIHxKt;ZIPsWq7{|mLK?B8;*R&0jv@e=>*USVHuGaCFvq4TqbdXk{Q7$7EgQhY zN-8}L7{GMYrhnGlSc$U*qK1FFJv;V3viKlM+3ohCmzi%12GSKLjR*CzJbi ztz3@X6T>ffO+)4*8nsy_6S6in4DTuFAb{`|plzw7&cEP1on!Zx``5MfrF5vjHZX!GtaiC={4;mt@3Q`-fa}|KQZMkU z2(J(?*P>{Rk~38GGZN8Jv~;}b={%imQKRz0yN_NPvC?O^7c-je2O6}r_WfpprFI}; zghnv2$9-T8i^EV6q&>G_WLc{?5|@*VKRIjZfdRxb<{eYUH0rIxNG`D(>$P$9{!Nma zlb~fiZ)*V=-z1v#0nhUNjYQXFN@vy+b5hCy7>oH~4!hbb1nYo(kc-MD4&OCR(@H^W zL|a_TXu$kd!E9!VJkbfSTk}H~o|~jU{F{`nKfEA=SXLcgr%=V%XqA~FJ^VRQJ7hmD zZzQLPo?|^{zfM&X_iyHm$xAAcT2HvV6+;dy?Z~E?N5ZzRI^=p2>tQKF3w3v+wfHyq zDLYTv#6=HzwXi9+RtjB(j>ecx*dUkR<8@R|*EF5u$ty=U>f$tCYT0hve8 zUcc?qjjx?PBm(~MPSr$_U*l~XpjaSmP&>XCTGCNM5fV)qDfh@+>M0-hCW_nM(`I6E zCz#CCtZNf=85lDieL~|f0TjEmsOP#oYVsFlV5ZM>!q;u_|0Fl{7pgE(OpjvZ78C9} z!Oq8@wRjfQvuB5B%i?TOI==YaFc8*xG^Att%feK4yKv01&V2O*qt2+nAxmYgUpDR> zvg0=+-n!5wBwqQ3MtA!NmAzUAs807`i8${EKFrMTxud|i7&p=^y!kdL1$xI6=&}@N zG!AR6G(ey1b+T-X__#h^+^8Z28h#40DgDVV4y>@md0Z*N^+`j@65mA7Lm{FiPeIXr zT&%rvXBCC{kXf}_FFSS>y)ivY4X`kIX#2evzU0&$-EZl8eXhY3h8NcpbrCEpLMfK`i#lx1IeE6UnEC%N+l0 zz(`H&6FA2g-ld_GV}^&&k=H;Bt^q@4YV7;cczZ`far?AO#w~n;z1LV~Ot;nh+f{x( z%iA2MpOL36ryJ<~Q-=K8?p^uD*JBvns~O`6)|(4p9F6;GVx)B9B{( zsU;c`+N}E8bpH*t!e{q-L2sB#3hyOsJp7GJ3F_uKIKrVehcAO zORV>^PUBw}P=d`x;8)Kqk)O-4EN-=gh0=|+`jP>ErHOYVRQJ(Hou&M%>m1(9q3uvM z97=u@ZgzpMr`yR#zUf02CBp~Y!%NmU6^C!s=3lRwy%V@+3)ogU>?$zgwFh3I*RwXb zdc={F26zL967vs;o21humPQ9XA-L4s!(*=~?3=240m45$O+PGzf3rn1$%-unX&v59AfL%Q+S30R(-z3(97JgWj4xl?Z!cs%T_5iC&i(;3 z$w@6)wl(J-seFZKb%%yGx^?uW?;!@eXw%PA8MWU0zoMwjl4P{i^rZj=Q(4 z@UG@RNPis|Nx|LTXK;=EibWi)USx&|0-o6okHcd15gLK|yX^LSawVel7?o4BED;W`@b z5-T~_2VrN>T&s*O!aa;4q~z`49Hop&w2`PizmS(jJxD18R~Z{G3lE{lH=f=ppAxke zTDx+uk-CHbunk`RdFkb<}H+j`9B z=G>*3ajZ=6fyp<1=h?mzoNmc3`)NJM}ZBl*y0{`vm4mcg#-5hdBRJicS~M=%7vg@C1=JR z#yxx=5rJ6V#-Nfp;%Gz@Iyko-N~^&X{+WIkP4q$*^zA}R7wlb8&VzQB^V&0G+iEv! ztV@ct63>JugHHQuOmhR0U9H%5ut5T<=OBWcRX;p4aGF>}oaGoLeI6xUgpVGVF|`O2 z+dZHgMniZ;=1;2(yN{lVFrG$^evE2KMlUHzqp8s45)HGLO7)EL^_ir$AEZ2pU8_-s zis3lMP^=|%hTU^-SKH@NOo-Nq<$E)E9NmcB8wgiWLY0~(P^?LR8_`gH7Q}ulVMt>4 zY?ND?dGHs+;|Qn&=%LRL2Iu;gHHWmzKxy(r? z<=anoxEd^(=|X|*=+|!Vqn5VME=vGJLTK{2OtAb{-qj9nPqK<0TyXk`7Cn|9Z!YP5 zw^xu#efIpd^f)z8cfB?->OlT*jR;T^tv>$B%+bnoT3@|S65QlI-*c~rS3HWB*(%`9 zBetzc?LGQH@Qs4mw&cxqJi0**^Al23m$O%Y=VP~dbCFHkcAM^iZPPfOcB#s*YULt1 zpR$a;H_gg`q z<_v~KF0U=mv0AXJTizr#u%x+f`mtRT)aAoI{r5!tP%uY$8_$>n0}rxxq>)!)`=8-b ztQAGg(HaoGxtrWXJH2sBWh}$~;AYRT*x>l7`915AHo&GYc`U>^0-Nw&LR@&(=j#OD z!6f(-#xm>A$E?BA9`)AA1o;z4hpd=q40XDOKIt65Hoj#!r0w0$0%-hB`v~%*6aR*h zMw9K$FJTvtXanANSdE80)X^`Qw_z(If{$dmoMG3Q zOBjDL9hMd+WdM$^g;>Xzn#xP7LM;N-IJ20Mmi$#?7WipY;SkE~BoW>mC6_ZYRb{_U zI1CHV7}W@j$Q0W~3zM+Gu|}#}y75HOh98-mEJsI8m6K~rx`DmkQz}5i#a-xyQAC$R z^la`@>-EdFLGmaY)LUiEzL1#A%>iK_vNhnKQdUXMFC*+4w4C9xr9FhGla#|oqIWKE z+`CWrPqOLaA$D5n+wc#_$kw?JoV{!yL%j5JvknHB3^>2sb7R=Bfn%*UFMU(thi_bu z%v{PH6!=Nxj;0n}Uq-FW(B+u4eM-$3c^0knDwT|JR*n+zPJEPmTs^nC`xXan($J$n zdAl()5v`~=svGg7$$kaKiP)eIv zpFO469oC%nf!87SC;%dM9xdAD&aBa2qhh)+O+B{!J?!2hNXB?My?Yv5(r~qPOAt=% zjcrN9CwX-#RX+Qi7^$wqd|@gV$Ur2E-j^Ztj$owD#`dH%pvCiS^cmEr3&SvCGu?x; zZ<%T1X)MYDBR@w?pDQmc7kA+ggzo2%YsXH!<=7ePmO3R=c;j09(ac1#HxE2?V)axk zOzXU34)Dr}DwCHIG(`#u*^hsXi$#W;Af~eZU&uk_#X#?uPP3%M55 zzAUZkvxXg2lHv67&g1^%&u=ApnND!|rJHw#(!3_+eE9lSN)x_jJ1>gB3%s6fa`kZM zw^9RWUe!gKivsG`_Xfz_k$qvhup<|0OTvyP4xt~bO9ZKO_=QJAKRhmpEqrz_yqUiA zNljlY|Ck|*g+Wn0p@N06Vy)cYcWqV2NzYDmbi`OkwQcC1F=o1L7#7?y^xWH?rJP2z z_?i65CM>ds%8X;aW}WwYyaR{Ys*|uDl@^QjicPt&dAw6w4g7v$LR*cM{z@&5rT)sM zWa*YYL0AhyAeLDMW^`1qjq~(m$Z^SoDkx>pmT}$aK8CUrcS8JX zGox2S4IRn*_MG1a9WPE^_9?OaGtXf3{#*%Ur84-5%ypJ>WaA-ZCBtPCOWrzsWt+tL z7XAfIMN*asyd}DAP2{xo?7E=5rpZhA*3-bFn`z`b&iA)H=!<4p4A_v6}v%qTYjQs@5co` zS&|czIUX;ZS;RAAQh@fViKSdg;-fF5z$+w=BvrR^Yyiuw0NGmMP+~aqLFjGy)E#e8 z@XbOZoYTWNcX?NdYpYAgQUi~*9#k~qoJHmWpFU9++p3@UYW136o%T6T#rFknwsx%w zEL)pzhOa?V2q){=3;3+dHk2zLDsX~2XFZ03a|BEi6EIWz>*+CDlY(;i2=_l+7s}dj z`>^WOdsdw1!}UlRb97EY(ZZ zUr!V=)7KyXwN)+dEUy_tVrd1xbuy5KlZ_j4U0DZFO@k!v5Xu?dldZ+Q)h=9a7Od7) zK0$>gzcvkiCU}#ND7L58@bst|3>M0!&kz= zk)ZHeg#4X+8hguI9Yw1?+b@H#D-avaOc(0v(fl)8jM|O&kMVlucAf|hj;~8@3-(dg z_gvNV@s|GV?`xA~qqWHA)5-IY=j&pZmEThwU{&myQjz!f`oO7fv6xcV!1i}mEbb~@ zYM``|(eSL<_e`h~l;KaexsfwhN`6l1XFN0KAfxanuf1@m1L{2gp{FK z=}32T1ds3Ve7u)s=lT5Jd4t1Fb2GjlPBDBeP$z7;`SSa&y=x>=ynGY3FlwhoB3l!?OMqErV7@C8)jVQq zTd&nToa!w-+&l;758R|Y93O@*il5uP6S{0{SVFIy2-0x)Pg|NI@beU%8@#laFChX8 z28iD#x9T(w4TdME`XxPR_pDL3Z_|p*EfY?=%jylCGQ>0wnM4G5q24C<@Uq4@Nu2Q$ zCPw+c*74ahZ$s3H&h4J#u-}RDx2&M;yJ$Q8m~u=Wiw@U$H-OI*RHCW#;0#e&=)*t1 zOdIIszX`=;7>DT$hC0Ygl4P$M;F!Ted8a3c76WH569?}U21E>a<<-J^_NsT*i(}Kv zbYWCtMLotX)`^=tmeLP5X1}6q{<`wgrLAz8_8N@fTNuP=ew*uPlb>l?zIATDi z2O@YAc@lK1x}S;bot}szd-N5reR1DrFA-O&Dyx$RH#+vGTP`BemlJ--_G%2d*XQ!( zE}rSj3g+tHZ?w)&Gjz?Q%W7%v%Idd&wu4|UjM0Er6ky^#OHf#AzhXeT^ctnot4dS% znFXz+`MA??O)NT4}407GZ0APUyOZyr|{#w2r@Bz z{X(AdN*OS&)f2DHdDOG5^hI53(fxsk4QePSMu`b8yX{qyv9?!y5x@UfMjC3R=pFa} zb{0!MbT_UZa&2hTloIcM@|8Y8h4F>|15MJ|aN1}MF?A@N^@QX_8P-_*ebJtQ>c@wA zkrfE5p&w?wr!Yj)^?5MxBCw` zBhe+AKFI2rDa%F}uC7xa1mf#_KE!BU)EGG0FAEU62<+cXA$J)@QWd`mRER7T-BNSSZw+gW$QfI#cnm*W(o$kYg;+Q6Rbm+4)M0e zOrXa-ik+cvpKERV?BfLGd9YJ3x}(N1>V8OPzlL&a-cCm)%Vn1+MChO8s(v7-mU- zsohY4t^!sT$+QPuE9kVnCAk|HvVE&6fTWjco7DFE`{LYZd=px)Lw{17Lz>ZfT$x82 zU$puB?hkcxl&AY?+pxPZ$18I0H?y}2@2d`oklrSED^Pb!KWo~+_sa$9Wp)o|W@fsP z5UwoudtK?d$3sDQi&d-ZQ{hgB>A3~V9RazcX)QcXyaW$`iPQT#W>@}3-u^Hpe4{>7 zh~0_Ynl0VHH_@%d)k+IVJDH7b5?p~ieB$|=1sA_uMz ztzm7PRX%d)K}EX+S$I#ka_xPw0K7XTfr+@yu@@`a7&&KZWU*=oD+zQI{5zh8z7!vuPL!u(c+=$4Xq|dSjkl|Ae`sdOO{{?EG`=>xmmK(#fRs=G<0O&(S>w z3W13yood)sO+eGWcRRJTq}`x1j<%)aTb`z*T`#uAgyw+*kLq%;jY&S!#qCjj!Ipw+ zGxv+u^GV*4)#tgy_k)r(Y0AgP=(x_cTb_ZtpV!tCIL%P|nMOXT*26_v?+--x>qc)q zq_fNC!*Yn$OOxpcX3p*Q?rg_d+=GT+l==zVr(y2aNZ&^xI|+-jP@{cv zSdcd1?f6mEpL(BX&@zpr&Ns+*Ijo4HQZCXJ{eVN_4M{U`1z0K*4j#3v-z@}+D5N`z z3%BsT*C|d>hfPW=s$42R4G($*K$o(IX3|6zi}ixI8IVpRdvQW5@9%VmY^^l2j3W5S zeA<*BnR8;jy{EFSLr=!86lA4u0cp))rz)T}4@=v)VgNTl$iE%?-tlwfB>##4HWrpv zkc3XSvrG8;rNjuGla-h=3>-v3b}Wgtk*lc+k^Oo*uFj=~XiURer6GQhAsT+R3n}wd zx~QQVaSn`+a%aIgY+eGHN99?!cX53}teHJ@K1?hqIzC)EI;^7DyI2T2w8e=pRoI#A z?mA_0X~5Fn+_9Jw=t1FSR;@K>tB@Ard7B%%#IqJw#zI3RI-xofn@zn}B{r!>NNeMV zZE36NcR%guEP1;aEqPPCsNR5p)+JDnpvul~22;9FeGqezF;-nD-q-mWl#8A{?XH+X zP~1~=)MBB9taA9-J!RQ;8oS(*U|6_dCM&Gw3!SeNc090)db2iAE(msW@loA~k z0Drtmndk+#?w@5PqY72XtMX)}IOAe6j;|-1YL@IB#a`>HS&j zF#$;_ZT`JGu5<2|)kb7$TgBAgENzQYVx@RlrA@+OoT4HqYZ4+A$Jfl?=c*nfThkDH zeLlRv87Ig!&0gq|l^0ziN@tqOtolk8B^DO+02(4Fev(HL-`5g-BWyg|WfSh>OQaM_ zzd<{m20t};zOC0o?$%*iDQB8#w{>GE4Z>qsI_asX$?WrR^&`n!z3vK&Rz->FoMryS z4%9p@>CLg2Qxc<_AGs~*yHcvqS~RWX6Qaelk~JxR8E04d!C;x7DVJg{=1C>yT|Ad# z5zD2*b9C!zVx`Ie+EY-)={tj0?>jke_K~12k1ThHF=^lTI_0^y)uVIA>Qt5HYM3oT zF@m3iA8!lI=v##>S$fR%v_8ex&YL8fEtg7d`r_dlTtfr}^K4;4B$PxUD!hg3eeMD$JQ=5JGD)xPK zz=YH>zbf;NEePmdqDH5_Y(bC0G_jt>La$|+(9+4Aq+)%SCq{+TIzI-S4+b} zIS+K!#jw`#!T@v(USW+YduNy`c&9i9_@r!9R-rr>@2#abs%qCPU$@&b7bvcTr}L|7 z)>MUEH_7w%UwQZ46LM=r?KIIHQJ;sD(PX614$)dVP?G%6^bD!64>Zz4S5-8n6zkEM z3K#zxrRx>Wq;zVZw$ycSBzotB<^XJ4=>*C_+0h>K zV|(&DEaQ5)i>}uAm3xU6-DrN$)Kyr?h?WU|zRZBm+EKZ9idDztbNI#p7%!G#JB7CJ zT9<4`d*RiOsx$v8wUq*ow44rJVR&XH#)5 z-~J$WPc(kegjcLw)oTBO2czq6L>Jgl&ZPzIFiFdi7*JYGsl^n{g_0Yel% zYXbZdq~ik1wQw?E`Do^no-{JWyjT!H5hgk=UwG0y=dk#( zq}wB(aAsgcx^$9}geOX6wNdxy3&CkQCVPCceXaS;Rv#H@Fsn6tKv~2~U-m=NsM!lsz^I@wKs zsZq6Wl_!dj%y044M4=eBQKhDbx5+73f-Cm)kKA-1fKS!!&y;WZgmITpyczi3Y-EFB zx}H7#gb9Uvg0gLikh6~}wlrQ#)Y`S~+PbHk51hj1{&8hkok4a?pf+@fIPsGp;!Fy1 z^)to7`4YvO&a$A5nxE@NDf5<81QeaP!c=S&>R#|OT9rLxmyC$5yh8!cn_`Ds<6SOw zHN7mSJD~A%W8DirK6CQt{cK+k4IWf6;nXq9)s#J>o=z|2>{1-XTOk$I>jaxwG+%(0 z=yv&){a#G9)N%hZU3i=5VOEB4E@f#nn`jom*ILyBGtXsjYrNhV^pUL2*-UYq7g5#{ z$WI59%QEMa1D*}>Yxq?DE`S5V7pZuskFS0$Y;}kn6nl5d_EF^qo{siqEJYR{J(im8 zPPAtXEeHlX$#~5R^uMW;Xj9LQw|B85lrFfI?%Bhm0#zYsSV@OqEQI)yQ%S{17$ zCxdXw!3E2_lPXFY+f9q%fkRb#|Ly#zW0NtprJw0Eb??_kC||S6ygAE4)zhM+ZW3(9 z4s3!x=j?sS1k%z1N(3^SaNCc8i#%K9djf*lMm-sZPgMR(p00&cvTp5Pf?CJ+2&;Su zfU0+Vs$%J?OZO^R9+2DO;C*Y#b9L0unbaiX)a`j%nNgQUT>bA(a=G`_9!lSVUgA*= zb-W7_;CwWy*Z8HTeFBAzyDcT?-UC;WcACV_d_I7AW0($Y%%x1Q0MBY%P3=IV_Z`^w zf+g5;y7=#4CHtS2-qYcntrUFtN3n`s7W4tNhuBZcRtl4BH^aMY!eNekC0RhVe5qSa z9+sgL#oe&9nJ`E4i3QJ)Yif4e*>M>MavBcQ-LPwum~oW}3Y$&UThC@N3m`S{E@b~& zdeinX@0hPNTt}skR1Lo~>t2?sM|X$fvn-Ih@Zh5?u4x51UJPddm-d$R<1kR7kxD=A)@v8zqc{b3=+p6qyHoKU{vViZ-`mUlmxq?4;)GO8`RipSKa_X&pqsbH21y z&p7l38^kFxJjJid*fX#P+rHuJ!-KFSC|D_z+$SE3_sq^G0KuCb^RfaQtj%YLCB7g(3y1pM!6PV2u5-y+~FPpzN4GLt`2>R({5H1n{#-P3VCyZa3MMaAf z5BKWlUt4MVoqT-dj~T#Gx;)TE$hS%(dVfpdrb((eybRJaEe9h zg&E8PC4+N0<4^HJ;^*D+NT%r1^m|AKBaXTiLLJPq!?@7zoDMM}awQE?f#`M1ztUa( z&~Ik_CR{e!tPSyvE;##_ijp5wyv9Y#x`}O09HV*?_Ntb1lF@`QhPV~R!*XtVSrBsY zGXleQ3c80O8_V~cA}2cM{WTBgH>rr1dlZ2jNLfSFup!69QBI2S)|!zf1*HiKD7(?- z_0pck=q+9R zqt{klv8TS;6m%Ig4aQ=vRIA`4joz=)(P7B5a+PRmIJ~m{U>dEt z7Fd)tFZ(mp0O)(m6|y4@E7sIa0gqZ1^-CFx&y~8j?(0Xdn`H}IG-B>SneXBEOWGy! zDTg{;lE;7UAaCYcNPfH{hq$ScHFs{V6J4^s#GPN!!i09QgaA&%Pq z`v%UsS~_9RX|A(}k*oEsVdK>iTdKR~-q0P1v+E z|GDj~w=M*Y%-fnJz}2y#?;U^fIV+pV7xEsKX+0e~I&?Qljc<9mDYTHKE*DC{MXDMN zE|xKUNls{yT&;PIr1SKe!@eD^SKqTIcbK!NPfqalw8q*k$GlX2e&0N0EBN|;m%2U- zN#A;9TeVd4`%gR%IlmYrG6WR6T6U zb>|RZe43GPK^?V09b?jmZ>VRFmNaHZ(aU8D@EK9>bx$a|Jza)wj&HkWJ8G^eM;~8X zP;yaq27CK!3+J$S($o7t)3gR2S%}{rD~|OAOqNkhQbuN0LeyG>abuyYkdBU(-r5?* zA7Sg-<1AxsoR&p-nfqB$M=pCMV=05>KD~v7r=G2p?sKl^y(QcAsO^!0i0sicT2!k8 zZ@*=@+=Xj|tNa1eMTG98^pPR~Tl088A!Wx;Hs$u?O*e^sPK!;xq??k+X{s}(9J=~C zanKT^Vm@Sk;ku;ZMWNpqY-ZpJkc>1aJ zfQe~ZQ;(_Yr^Rx1GlC9d+u6zE%7f7_&u2d%t<;9iL z9dKwCf*NIUn-q#d>*%O%8_vFK3nm?32N>Q?D*m#^%2@#RbGcj_iLXsww5_3en>Jvz zSjKBFs`8H|5KdT5Ah8 zDdD#`@3vO^nT|<3_E9C>2^N;hSoKt_)jW}5qBI&WlcCb)IClI$G56r36>WP#W+~-n z&pYwxen${N={S-zEv94MS6~yb@lj`1e%!B#il>o11wx3mWT9}XZDyjZwu%gfk8!4M zs=bBxR7jgO*^#S;(Vr!^D{whxvNSljx3OgLy0qkztd-A>T07A6l#eM;m+q%Kf!MSi zBlB+BL-KBINv6h14^nutB8tQ|k;ZSNlCI~+dZ3H&T1&=e66!U@Vphb|0xVa0Te$g3 zU6^rHBi`MO;SdL|EsW{>ZgDj|MpZ~g#w_0WY&@#QG58#{MPPOw#(l`H1_?iFirK*6t_>}+z!2aq)I=gTGKkjagk^ubghqO zzLj%Vh8H9xhZ!c`>SVaa0DCgmeCjX*8WGsc%$a9!%b~#vsCxaja6DZ;TsBd#INpBh zNEKQdlXHZi$hKOfY^Aoud0kemH5-|rt>zj&Es!oOvy(7zlsh4)qm_u;U!303%EB|< zBr;SDKQ@vwkZZm>+O|7-gR<$teI0j`gEG+Su(xKnM_F*>!R?3#(>D>ZG1>+$SqmmcM_&c%CU==nUFT8E@KyUcLn#+9Ijf&9!I zi5zLs{?ISIC9)9GQeye=T3(*vE_tLK=sXRgrcL7ct;W`<$ihh{okblrxRu(RtEjgf zjfS`SEM(UTU`jnjspa3pX?Fs&bomJL$CI6L=hhVd6ZSvyNc-f!@rxn!N$KlHFi|0) zkF$l4xzkDo3U1-4tU2i8P?FkO_zzewx~BII9ggQG+@YtOeRyQ{r)|dVENz!-Tx_M# z7xztSWs0b>%Q@WmaNNI)verSInH(?Wm`1JHMqfytb+?hGe`w8iJAQVmaTWu6!GJ5n4S!kAz?m411b85r- ze!?35%cOwc_uD=Sqr_J4u=hYFi#e!3+KTV%aWG7s^Y3Ad*YbN9hwRh2oxq^3jnhee z@quJZ+h6pt6qP>Tr+m$K3|&nSv1g1lLWnuh4>v+5^zgpf*#>)RsLs01kA`ZBjxHUs z5I5{b8sWf~wA1t!r8CQBKAF67l2Nn!UhglatX4&lT0_oP%pO2K`l?ayPFOM5IGo@- zb&g!MHy9wMT;ZG+g{z*5yw-MJ`xMEZ^RS`han)EFOR<%SzQ_luyM>1~ps*~nk;wEi zAJfhn!Daa<@zola4@GU%C%AJ8j2I-+Fz?LtL2tp&#h6pgnX;9NcwrVc9|1_%%( z=j28fBdNtZT_6(ySjpxcdIk^7w5DWfd$k&$qF3fiP2EIMeMw-6OE-_FS4E9cG+1 zFhg6an{wo^Iy8lZT3kd?cY?HY_7Laxo48qr&uD(*Cn zewk{LT{}Lv?qRDcH+-2$Vf%{vtZF*;ZEln{jz!hXN!^v%(8|2uW_T@3qM{W1nMJ;0V%QCZDOZoht&wjL;C@(w!hOAs4U|_Hz zr+BK5E8U$meY&;AVT9O5@d>z#h$A{z(|S-Rz^9dn{l^uB zu<$szXpPX~X~nZ3h|UbBxQ?Yv)yz|KUw<9XW{GtE?VGkn6-5?Qo%Ya)=MuSc>5qUP zZby`UyCV9n(Z+&f<5ElZHz&;mu*=6-(Z++2g(?!=LhQ;Pu6+k1Dc7Gl*1QW>2J^r* z!Ka_Ic5xF*4M)|O?i4Sz>w_n3r|HLYB*p8g%3L+QzGLmY1K3wOyb@T{ds2cg_9(t3 z43DJPvsf)BQL8DsfNhPJL3nh0y?=D)N1uCA&^D8y>2Km6IHtE4z_J2ynFQS8@zWAku&2$X9!Lm z^**jAHng#%FS*ii+h?5zgL+2VIRbJt_^xm_n+SNePG%y=EUy_9JZGJDfS^x<#T4XvYR^;;{{FrQJPb8V%U5 z=Bf?-1ZAm>sMKcb&E|a&UwMFF&4a<7i4CGWG!W={YuRjN{$X0+;~RGR0rra1dI}z} zHLA1~>=c`J1UF6NF)6z7d=Ki)sM4x#Swh`9jR@cK3ZK@c@DZjq`g?$C`@#!lcaQTHSRwJ{6X zc6%ssb6~I44N@Tb5uq23@74aZli~#Zp-PtF+k%2CRB0qqHxrSQ=GUdp`fo^4z{z8w zWvHZxLmDZ~V+Gc;NepgLJb`I03on`TQ0FY1dQ*(U&Sl{^=HM}xjTMM?uSt(&-z%7C#ZW5@=l@8wXlkSwor)AgS zZkgrqD*>QU1k22)9TFb!u`@P}BnJ;T#}zBZRmlg`Zyb4PL-4vgKSYm@R379-82^>kusln4;{pt|E~N|N7uPug(G z9xSD8RLJ=O$|fkb(;)cKG#pL^~qvyu%mmAc8qS;k?8x$B;W&utDjOQkACD+C-ilqYaG9g7Ad z#KAf8`>~^`UanBKrlZGt3OkT|_|}-e#X_FCyeFkR#C5Oh;P zJRq}-^z0DQ>PwQjq7|n79OIDgd|NqoGv;DkXP6vc4*pnkb_b8?D z`|4+(`ephWwaqg%%`l{>W(r7)nzZ~XS4SaU^-fzlLsd5(Caku$tFE?V$wAOwt??eM zu?d@=a(I|mz2ZmpaJYk@qFUK?JU6nMyCS_Euwbv)DOsZ+?+-n*KuplOo{9J$iE}_@ zJm|7^N{r^3)>j>5ql5&mKjM}K@*hdmo2E)qRH2L}S*)%X@|$*>*d-#vMs(tAd|fP+ zu`H)h_R_S>>wtzMJ|1k**YjBj?>DJyMmy1yGoXWo+$898nKTyX-O{_?pYI^hW5aG&c@x@u^%^Tm4;sqb z6l20yQrO*spgic8MMPf6M=ykf9E~!gzIU)F@F%b~tc=ZJ{D;ng6s%5y{PO(+0Aa`U z!fpO*jN`;n?jpGF#R-xJTlR791mFVi8-b@mkY3vjsvCUaFab$TigLufv10c1# zz^<`G!V}Hc_Y_}Ym^CImZZI-#aH+vPaDHm|@@n{IxLnPYQof^Xc(%hMxH$qb6#A)7 zQ4~Hebkd_#|`=cTqUMNign^|<_VSgGy0~275YQqjcfxyck z>uMu=V0u}8s)Ce}e2MJO$iL8r*#p#2uu3d;YHWnkLy=*&|16Enn#@ropcsaC!Tz~w zK9Ev>3?Doy9UO*q)`TPDHVTzy7)o9K^=C;;5TMq_lkwMzSMf-xM^c#u!zkpfrs}Dk z%IWv!YpqWBnJ$Iwe(WY<4yGKR>m~%}&Z|)hZhzGv<(vz6+~BS7~ed z?iv6KEGPj+7Pc2H3Z`)>JCgX8I;wyWy;kPm^Y)Okr8x^{9-2F)%oV1LEk}aedEli< zoMiwpAcZYPm&`=7Hpz!5u5RC^H(YURfT$z^{+Tx5zMnPrPGMdpJfUl>tm)7Ci~8*0 zK=E=k`!AZ2uolKL_c%|}|_kCk+_(Y{o zJ8C3Gfrwt)(@ATp)^Zg9>sWOJwKGe#m~?QLz6#y7L1tIit5Slj)H(qx_fS)Q!gaOj z1Cxdr&)6@T89<6hr?O(kPzG0#Xfn*H)Lg}FUMjEwZm{<1-Gs8IQQU6rnm9T&xpSkH z>jrW2o_TKeJ<c`j)DJK+Re(%H_e914OxhKn7x?4YUi6)rZU0#i zW8<+|`Re9ySc1@vE}DjY`s;X&aEu7jSaOIu#+Q&w(}sj`$5&3w>ove}QXp zh9W_HwB!#tYYV0Cv=%Xf&K{x6N&OoKc^&+2&#Vv~+4~Q0Q(6dQXgjK{#G(!lUQs(R z(ssc*zT-S!WuZ_39tIL~1yz_f9L! zNcbm3<_A3tu=g*Dx#uMTWjt;Uy7G%z&C}=do9b=}_QsENQc%~cp9?-({`|o&6&0<4 z)f}|I0Hp$GsT}>ulv+g;y}zsM-k|ewuQS0i3}@>#Fo1U3+1dZ8GCo-QGXG#Gvz3Ue zP~#Hfik7dc%v(SDV@r=N3$1F61z&xKKYIWR4Jpz-RrHEx4a#zZqQ+=fd{gzd zIj>2Htx}inYkPsdY%zuyzp;1F20yfKIsIxe!E^ro<|}_qVX@>LuJD`pR^M>zFN#7U zlRk^YUV4qRW7S$UY0hA~ zwS{SW>~E#0mPA!{A38#XZ0|WhFD$}296@9I+Br>(R{WqB3a`L*O!h3>qFjzK*8Ft~ zk7Md_ly9@zMkVX9z2cA~H$f`G+^E!Dfwc#>UcqmuZZ*aXBHO&#(v_Jc@9t-Fujb3039a^Bx-seNSAS(bkc ztUs+HCTIkYkMCgZTjsdBa8vNtsM^_RP1JCS@g?bYS*Yms6@oqv?`jEew}_XPEQYpC z$~oY|=ntY1HMVK1RUxsfm?uY~E|7Vz-8QE32RVNfely~ct;*U4OZ?Jy@;RkC+`5FR zW)HD8++HiO`-i6$#`e0}&M)>hp-QXkJyz@M!fM$)LiI*>&(ubD?L~6O9~3LB70UIp z*Z5iKsEtc#SH?Kcq~56+Fj;Dgdtlaewxd7r+!qW<-LK*5l}8npm2ZQiu(tMB&6$LC z0Z1(ILGcO6Ib8uE;;N22Kk7oJxJH}kbmfl^@5HMp1kkDY*@MNH@y$t%k~p!=rF>2l zIrq$ZnxJwrJ(vx{x=6Rp$fNwW?#_&16MhunF0tm+OVFOpt!XR=sJd#Mebt^Vw*4`v{k%DIawfsKFNy|^iiW4sz{!<4mIp<=@TFkY&y_M~ z{md~KIl_7=*#)HN^CuVp`RQ9dfAT;1(Q~vEHV~WZ(sJ&fE3UVDRnw3;<=TUBjY&O+ z{6(SD$vPEitC>{U*9}key~c>5e~2#yugv(YfhPt`B1rr)oANSYN=?Z$_vT|+d#VxB z`uwAF9^S&GPV=1bJ;4--?^)N=#3=#=u4FsexhOA?6u?m-_MNAtoXtb6$&}5b(5Ss6 zE33ixIzN>!iSr^1gVW?^n%dRg=4r1PSE2#8+K3HQpQ+@6Vpc$t!d`gl&*>s%*@`9h zlpAY(vIWIX4HqeNHbo=acy-C5FL+yS0bN-rO)~_Fm-VSxu1OLq2O2x2oMLmAXppxE zxi~9Z(%{p+ykME=67NPBxqRF|mwucbescTjBZGoH$tD%V`s)#IZHrShQyVV-gaMc0 zAx(+k)~G&Nf`PFBSEf6; zel;Dtr39VmEnz06AGM*3+^`Y2kjoK8z9%_1H|fZpPivcW+VZ|g@pLW@eBK;T@)LC9 zVBl?raKJa0lSn<{_gEcy-<`u#4XO6b^#pxe-5fo}c>`m>;bG5L?VUsQ`vT!hJzTg5 zK7M{0$_mbV{Pi2UdYm4Ne#u=pbsFbg?*lZ7I02oCPsp-%qkU5WSuMBQX}22|4YCSa zk13md_IJ z2t8}%0*o^$Qz4h=3pHq0gM!NaxnKRR@vVlAH`&w%Y0`@fmaFDe$_MS|j7ORs@(Kv- zI$ZSC-X$K-i|y+&=!Rmj@7r7O%9_!2jA@30hW*(yCeMwBv<^a(%tGFkEWdmAGvhQj z!Zi^JBy3|%_lE7f+FyEHi6GH64<>{zCRDM)#fVn@ zt#8~PA?A%9TBwKVha1!D_VoN-YzV8|_*eZM1rEfL(}a=e4jzczx*)G3HqBXV;|M@! z3AS-uWIk!_Jndv&Y3UJ79>;Cjb~!UaZf%QL>!!!Evt=F!%(9(b4SUFKwOxKqQbXE| zeV6l%Rw|7rqFf0(mMO~)>+PqVsEw-u(r@ZB)9tD<*YG7m+yx6ipCP! z#=d^fKTQ;z2>8xAkyckDlnVT|WKli7rp}IS_u6_6UN^1(y6?7R_G6Drg&jNJJt{Wx zllj>@@L7=9*CLbN168i=ME>!3rs%rJt9(m+nnm_?y2^>O%n|9ek7nW*$xbxYBSzJ_ z?hCN(!?`b}HOXw!fQL*O;Fn>TB|(sNbvu7u`O{uH@k-+0mzB;v>7BsotG0lNzYf3V z1iM`RJCN`{fpAV;Vke(iC2;dRr?g~x$}4aF|ADci{(AZHCx!tA7u-Al@t?EE@$v~j ziz;IBPl>G~XR5^uQ$=RuE@qoeXKLBx*~sUhjtU}eartCVw5D8$A8hPc{@lrId*j0T z8|}!NWB+OYt>}qPx4Iu+-I#NQ8s->IDxcFJ_@g#1Pu0bXv1y#izDN`0i4jkb^-(EF zV)ER1$IcxcR9jm8tp}`aUCb#)qi$g6uY4DvC6DF!n03}7cg^;*YU&?E3WgnF6c9^a ze#h;YE0&PEUeYZX{~s)@q3{1!;0FDAe}$&OP|=>D82)}6*<|Ds!iorD(szHqL0X1( z#xg|h2E$cYb)$$r9?nH$H5?TaDIbQCY;q6y$zb@k8sl5PJMPi`3FvV{hsuf)=6ogl(q3`d!i{e1bRns4It$oJ6T18znqII~s$A&j%*O41N ze!9Mve9pGNVl1E4gv7P7)iQ8PC`(JZ-L|uuu;0py(1L&U^bmg~*Io7grEivWUWUq@ z|7fr5Md;Cu1_z}*qe1>s0O9`xjI{GF{AMuRsoJ%me^5GXc_6^S5Q7HNPDo~{n#;KZ z6rho}`gz=S)X7)K;RVS=dS$xu*XC4r7?2P}J~V7os#MkaZvWpvquK-`mM(b9+cTW~ zFbLucT6AEI_&pbssOg5_>et|F|5bK;Rx;rI%V^aihcoxPsr#8#?>*aoSw2TJ$JX`n zY7^I4KN?rT3n>@z7pvdx6`DH@*AH6{Kf5Gl}#oX6n{e2qsU*lH)!zXkK)$hK1 zGPqxoiF~_EN5*~TN9{A7*DpE#e?Xtu^_u%P4n6E9<^wZxc6RPm_Yt2*Jm94tHHI4^cS3!vvIhISGim5cEdsB>5IOeV}{<-uTbAN?>%Pn^{AKWG2bAA{fgZ($Pu&kOk( z-XZ=Pw{z;TF#icEOzjUA2P^|crIFsRI}CUV)BG3Iu=Kw`*DaJyXOmG#Eyt8S?=G+o z6Cfa-!M`3W1?+J>bNsI#!%NQKN#1+Drt>W%6k0o>C~#NzW%(MxAig~fgCOfuJkxZL zz0WwCeASY{nB$t4CPf7xb7l&@i6!V@Ez6VA?Vb!o=IPNMKDY$G0Cu0pT9X@*W&Eq` zNGIz!`I%{Aw@sxA_2sEbK}OcFCq8yR&%AS-AwK%PmZ^J0(-Y(UTH*g3NBH*eO8t*b zkl(&>EB)ik{sUyfx-G0FU?|stssJfo1p3vgwTQk+RnKS=Atfy&$I(k4_gFZLLkNmO z@gw*CuZI6F6g`jJc*F09>Q$Rp-ybq+u%-@xf2Uj?V-U_IHCk=n-ZQ#KlU7wdFnlNL zcz*LMb&(4fpq|Af^nSMvFu2!UE*jF+mEW+wYmKtT3ksb!zLO<)x#i`kW^3@a*dJ)) z)nf|z0}w;rX%aScJjD(o4Z3<$n}>Sfqygnp{J*foRCWHs8~QMP*el%j_lTj#+eSo$ z&_{ja8qxs^)Y2dp6bvw19kN&Lubf28_~m&`))tqsw6tX{ITcOXaop|&D)KdQryfz( z%pAT_Ni3@6P1r4=l{fis6sh7RDRrJdXPoKrnxv|Zn>&=(6=qD-j*$k_)(sK2MN_OU zoZFrs{9_($HI*UR0#+ekt~mMm%CrugO5+40|VzoSzDP2oom2JN(m*14+k*Q|vujsI&C zBTa<5k82~L{h=R;3rVgqzfRO- zxepv?9Qd-b+#;S^9es+~*w}_UC0^9-!UkUzv*KCGkKeOmW&E630cDWO80sB6J6`Gt zSV6GntKU8almcNpU)BFSg$7|muk);W`#8hTwdDvGPHMXUE$IHPt-qWZLc`LRo&T^% z)jxXv)1%ze{oyMWM%w?u6bJcm99zO$?)nT9hfWe>;q!?bg_wKdb zJS;QtaQ=Re~!_58tSVtwz!#*%9$85mP@ z*EqKq45NvnwExQH5j;$8@jSkGOBG%%e}dWAVi~olzohF)bAko*RO5d51MwPoy3n{D z6gr)MC(X=rJW*lQRd+icwbphsf%)>JJs3>R&)jF++_yLIBIFMGZ6$Kxu5#{&7@z{pUn$ zFjB_GE5H8`+_uKOM1=Vzo6*ZHwymy$D9FSp3<8NXDAM(+SuIN1P-0msWFy^Y$hu6u z;ZYg_!V_D88&>F&_kVi9HlGMnX5Mq{1MS1<`xkSf*_xj0+k&~2${By53ez%ARQG;j z>7+Pz%e26?)EOwi9k;Ak=)!HozF;A5Prcc^#YP_Ii?og!<1~_@I?o^Jcy@=2!n1L0 z?&KSJT?bYuZaT}k^$D*V71+IbdOcSuAg8I+jJZ?0GW-E#v!_bU+Qk{BNV3&ICUULp z2!D4k{%->J7ihnI{&VX0;9k$x->Cidz)vIQJzp``bv=%R4`zksZjf*lO1ND{F^h6^ zFr_4W>Y1>FD69$c5N7v}Zf1QUM}PGH`jlo7k?$K@Q=V|y)K$=Tqe(C*RaZ7h-(7c{JstelYfgUaXpO1=fq@OqG-0ILoc6+7$k@+9V$8MQIz%t8lLayhn@D{XyjP1)Uzrit)o=&q z@G(w}O5eDf$ZWQ4>8%5g0h#C0IX10H@kaYQ%HJ+<6@qdoS zCVLl6czxsXScEUu zTtA}qz16)M6ad%t`sa-du8Fpfsrk?8^>eI$;_N{9^amtv`vb|GK=bIzipEb(hoo{i z4nvH1pST%+ehrTH9XQ|WJzEyWL0O2b5K%q#W(j3oPFRrFvb2_@YWlblx*QfXFd!+m zJ23pATiF@abd$d+dd!Y@DLTlcO{X3|WhUf=F?_luMT|USAn$^giwhStyV9!Zjwsah zqFsVToS)pIFGWVOi%Al|DejMgYY40A_k(qNczz{jg3o4Vf=1_!!;Yf%4tx^Jft?LuW!a}eNtDLg{T z%JCj6{uPXin%)HA3(q^IE%Gtpef#ScMNTIAEhi7= zAg#OHE?|n2D8Q)*X%79?<-j$1*i&gmjE}{n%L`1=wI4;FExtgmOL|h@XSqMFjaQ3Q zp>J>{x{E!w8Ox+( z<{X(dnIP$M_KfGdM0QvVK)h33H%my<7sZ_-4TYl}xr^8)s(3velH*`|i2Zj{p39xB zwxqwBPCUh5GxzfAD!s?7QURN(h^i=J&)GX*T>srv`?CJ=yqegLT5SIAd8Tpp`MyZ> zAC*y>+Lka7p?|A${D42zC6J()$o)z$`2EqGK)&*>MC7At#0mFR2iR?DY+;w8awLDI zmGJLM9Qm_5S<&B>R$cG)*iUY?aBzD?*1Rn%0~mkt(#)z{A^2DM=Dys%)Tjy_QiV}m z;i@FmL{H}|X1b)xFU{HCJ}k56V7yYVHK-X$350^b%|y@B0jg8>*iklw-#>fuQg zuou+v&exJT>F7q#*+N-YeErgO5x9KxtcmyLkmxp=Qs&6OFEF8Fzju8-I_HikybeH= zPkNwdYUcX%x=VYRSvQsyr{O$S4du(_c%RUR4@~11*l_gO3uDQ;X0ZVt%bu4#r)RZn zSvfu~{dEWcv9!!u%|GeF9v&-=IS(uFd~na7!4+Xwu(Jcx^QD;y!BImc10@@YXe!cr z+Gky~T+MM=Z5B?ex8>SSJWpCz`1|DAY%v*6a9}a3#ixTPL*uQKU5v!fp@yEWCHUVS zL}KJw!D2uBwpSjAP2qUa_mvBHz00T3zAOlOEF{amQ!L90FPuj zir!kCqvyVM>p==jBC-oH>UGq1w%lsR)!aiTAw%Emj*Ufge1cWfH>r(CmG(n-9yy8~ zrN=Zd+k~#6cD%*0AImlpX>hMUe$`&^@6(Mebdt)k#5wgrYCd7;C34PNZ!gXSBB12) z1Tmm)uLlykE0#{K^uOZcpKqQ+tSH&Ey?m*o zOUn&%wXFWGe#d&xFUr&C7J0LMi+L&(=?p%MFbcL#uh2=FKa$6w9@1tP%CbikJ+w+A zp$!}J{Ao1^jyGJINQnyQ6_nY|vxcj%qifaYC9&)irRE~oTPk)zw+tG{!#|tQ|A5gP zX@|2lr7D-nByvVeR(4O5IpcJ@zK|V`c(R7{x?c7v;EaR3LmD>5bLlmr+F^R4_(`Hg9W(olEc5;{sbNauDtmW@zFbp| zfXfqCC3+LHTso12>197ylX+-qovsv&W*9`ey8xhFZLNx(I>1%ayD<%*7 zn2^9+D!jqBQOUnPW^jEAIZt+I0@q%2I4p~6)I|SKcn)pGb4eIc@Z@3kM}?VdbaS`1 z?(J`SWBp*LY?{5>IQ$qM!$5gjLx=Hwg0+&pn(OXWmvif7-JPo79P#5yhaIik=uho2 zVNJBQl{kDhN@J{4_s4nVO^NM~rrt6cMGcBZUqEmtg?J@Jk8>=xKUZXL*Qneay>6BD z{`Gj4xEnE~6s9&0gJ9jtUS#*IhtX685%EjhrF%!gM@miNk_aD9P1-8Gv~qvCiK2yb zl&Gt?hh2_3YbiFQc~)sD7J%y{p{Zg74C+ZidxVEG>d7YrQbyvnXh;RD0DpG&cJ(v8 zeDgIr?ZIjP^_H^$ao3gT=Z9x+KJryZivew*876Dn9pMtX8XI6}9mfrEHmWhvTuf0a(lxKyl%Pt9VFBLJP`!`_S2AIl9hcc-!5~ns7^N+xR6P!SGc!*!S>kb4{7I z^XF^0z3vRrl1*-}(`#)*W?4hoLCA?Y74_xan(Jn;K z?s~%&9`f|ac5v%)f29~h;&UT6-Tbqe)u$^GMG%)j*KI3WgUAUNEnO*fy#WEr0j~)I zl_O>w-&!wMC(d7SS;f54?(^k0L|;~UFV}@ij`c-31{?}Op1kH~OVfe0+X17Z2tu}g z8#4*zr<8tHLNWS=L6YE)9)8Q^!!DR;IdVr})o+x+~_Ok1c&`V1|_V^L+>ZXs7hZ{)32Zaj!|yv%Ec z7#(dlU+AC$y)h*o>*^C9>@7bWcMB)W3Q@?nlX z+lbR>WU+qo-iv=UKc?=?VGSa35oT}{H@xWxG1jHWn_}yaKE!+dxI%MMgdb&;K0;Y3 zUc5G)RlU&`30!@0@8^0jf|YN9N>M32@oB6|!}&4&tXYNS;b+8K({#^La_7^CpP)F} zmUUaL=QfV_x$`)sLvk&@VS{Yw>a!&?>P}`ZKT#a(LI;hl3Vxmj##o=0O7C@2YYQ0F zzPsDhFN z%wEX~w`KVU602t}2aQD_S8P!|6)xAXLw+b;kFOEvL+}^Dl5Fi7*n4$6=?=9im z{mgM}zev9HYq*d>7JAbSbCzRe_u&X&#T8W?_4Z|sjm_6EcU(80=TqufK~s0yxhprm zFYa->_Jl6#Y3uYqV92RonFgC{2Qn3- zQ3u)5-DM9{=3$45@C=7Xh(fwjhsrB^a@Gt>%0*X%qgS~h?T%gM;ohWJN&fMMBbnI5 z9onbBIOOqGxN{8-kl_;R_&l2JZu*+AbVv1s1G~JrGUqdf5zh_RY4#mH>?ZA2{KiBP zY!;Ii#RjZxm)J2S{SXN7OgI9i^j_phSj?L1^8!;O%~;e_#F+OJ!3;}Ie^S( zW5-7*ReME1_RiOIiKoD=kzf2Hy}Sjo23rK=%)>Zan(Gi1?wUE7ps{g0=vZ&qbEPsb z_zAA_$M!E7BtC#3!91*hx&;gB2CW{;hRk1O84Gccih1S=VJEC4&G#aaH|OwLj)gp@e9 z$Z*1p9oq%!F)KjyW+#Pnmd8VO-gUWf?M%dTOkzf6B*tj6WHVipB4{@~#rieQTgBBE z;fF!;JlOqWc!YwARBhVfqE%DS99P8MW$5XAx^0u&@qoznNzkkaH={vNEsJLp&UT=tc<|UV zK}?{leCoVes>58&=0WBA+uVwWWjD?9=g-PML?ZL|#!U3hjJc<*$BI~CZobd;<&gy7 z?E1sLrVaK_tx;FHhe>Eu7(VtZVj^_WAAM?EM_7^_TaS<-r)o*2~{1Bj>aOeavzsdKw z#!aIRoVc2OWXpVwcX^fokyP0bp`JtKw{IhNQ(R5qUy0>@q*9HiD~)3bJ0{pSk$(-J z$Ub)fd(lwy>_L+?lW4jLESwcTWSgeH62_hh(JhRK>6hxqfA#kkQczLDV5V23CcC|q zAp&fGxE8#H+broN`34XM4|2MGY8XY36I%C@tYx=P7|EM|TMgKe8KBI{)}2q!JLTBP z=bg)y7hv(cc00hUC4m}h9pJm;*_k_EcU`r?Vq(i%OLqeq&Iq3-GNGIIKclCG;fJ>u zHo+VZYmkOgG1Lrx?ISjdf@@8`GXuXIB*cvt*{z@>haOy#k=Ysp;@A(p`l$Dl#WHUn zpDkK86H0zHCN18 z{&Ah|xoVfsDA*c=Nt8VokJK{qP)0f|@pZUsdzq)vuXd4(Dgxi#1?R#mo-dxPRfpX$ z{LU~IgUK4|@LZfSMpwx+AB5LdfpHkU?Hw-b{v7Lr@+0<*?DbP^tlX_CAoNC3hD+$l zq`H1!kZk*#!H2bl5hbNb{FDm%X(omI)MUT7h(R z>vburoD+?)Et+0#vR!m1HE?QLk3c;^`O5uS8bB~-aKrMd7-YA~YYkKE$Tf|DIX*WasX3))OuBrmbkboS`Z3nmZih+QQPt|?HFle0d zIjMemSG%C|qN#3uW??QO_~HOWWzBtqvI<+LbpVgk1+PdR9 zzsJZQced%cpIMOV#6dZ8tnv3*YH00Wv4iHt-sY3BsM9F>>tIyyBI@d;?*DLRU4S}m zDV)ze7oJpDo*R-YNPS(IL`p~T)WVc=Bm=%FipO71WNh=*Ct*(8vKC2y3F&wB20()l zH8f*`U9(<(9(7A=w7*`qFTL`@+DB)Ve`uQL2c&052Hn6jekDL??)J3w)g~)y?cq9~ zc{Y}3`-xTwycx>0kSGOfa_Em~uf37XD)kdSxxW0IWzgury>;ZswWG%`=N7FNr~>A* zt=RZre#BE-?55VOLA;s#;H4Y)VsRi5R@f1o*j}1uhE%(}y>GMiEmTC{l?1Mf=$wxL z%F7fNpMJycs&?hAbv&mjdaQIuW$$yUKq=Uj1R7zqO4H3NY*H<#Xe=rH$iu1cqETfV zm_8&P!aB}3R5x5JR4Pr5cyY!=k~O4K9nPjQwe4OIc(M5Ib#^#d(>OHG(76vUe>F@E zs-a%0*ua~q99fQ9?D8|B*K_dh(0K%={m}l@;`fTSOO@x*Wcs{kL>6`eHEY1 zog2BW*qU!x#%+}xtdUt;f@~csF1!+NkSMqt?!ux*a!uqb`&V19pvMmCNxOo0U3T4F z4wtZ2NEs~;?aTPH@M^u8DKtebyQ&$_V6?R>KaAmDB~&c0-mO*N9@u0DP7PpG9ztnq z|1z&V8PYXO=NWe?AGkx-lYno&K{7e`;(pU`5Mq|d*TVf;B85#+Ydd-I5jr4uyR~YVV!nf>1h`n<7p!z1f52=%yf6AOJo|882=h2^ zrqpVLUgSXLE_+7N_}&3F7O1LNYjb*IV2iXcX?JWS)40Uc%p(WQfR8!SLIL? zU9>)B#bs5M|8)FQ`f#PPyTYA(DUnQeCcnvG{ecB7@;@p5HC ze%h&OeB+8Wh_?6?d$qOElI+m*nOth+w9yuA)&N3RrF*6vdR@s=Zq3ocqm|6A z7L^K8jHcJW0zWszQS2svN0=vIm9Rs)8K3Y>;0d>6mX}*m%bKT1P^kc)MIp;JM0u-* ztZ;Keg))B-yai1=O^+uQhti$LTsx3cv97u83YHy}Ngo zOt;KxakS0>+Cj%!q0TI^K4w*G&EqX{QEw>jK1z5zD-z6UKb*HuP1^bT?>$#ts+ul6 z5ftA8Eu`Y*Lc=t#I7*$pQq`&XW>WnK+rCUxPoz=*#DT>WkQphZ= z^@gk`Dp(Fivrl2!EO{D?GfqQ)Sx;2Wq}69+7g_@o%Nsh9Rx1b?26KQg0d|UU7>4K2}*732u$R5lcrm?sVQLoO-xrm+pTTUeWzdh`?CCWHrBcE ze{7se`9~DGHnp(q%DRxWEUJyC4_-K3LQbKzZB7CCm;XV|_omt0)4$uott*8$YFm}S zvRQk=(6RlGQa9)t%-a4%D4){#C&&naWxaUt_W>>D6DJ<&5V?$A?U%y@e%NcqMzE(Y zT{7+ZRId_dMDdkvo-@gF2jpdzPHdO+1e@o#8Rj(gPMD49C4DAxT0y`3f?e0Kf(&CC zOtW7aX>VPkgJ%1gv*9}#%!NP)i9XY89pc{6Q5VP3CU>nd3V>-i@5Ftt@Lf8KDhC$X z{#-SR$wF!GgFLnUWZiOJWZ;38f*o6N0&$)3X?Qtc^BR0vcgD44T|bvzD1jU~r*KQD zwtOYJ#HCFt1APh2i3fqLYNaKfcHc!%u?)GhaB1U$Fa}MT;6?pYqQ9E8j@-HdHI>`7(vF8ELX@N) zCK0XCx<|HO8*Ynb$_gEyyFvqwP%6(8`Gsm+Su#HAESb$~(IZqyLQ7{r>)eftZdwI&AGIA z$5?2u@)s<#H$_XVrUXy=e09G!M2Qif1COKtzLvU3-=z$;h(zf1p&2{3ue5XLXk`*b zn*vdW(#3zevmvNu`A_w=xNTlKwFSHqWh-BRS%ojV4pl8^SF#POi)EG}gUl9{!L2` z)r2lzZW*M-)Cf`;BvkcoR6*sqm;fq&K3Os3!p~ZN6`xo#$1;lAWe-UR$zJ^V0R1=x zwSA%XPlTIp#rl_m!je-$wEmo^+SZhKBIXEt5vScZP8;^OBp(-bywKLLHB_po*)+9j z+>ih^!$}>$XV#OS^W{LYKB&f+&Y3xz(t;NHW)Dg~u>Mr+d-!(nvX~2>2bi_bY7bM9ZfEZiD52xweg`k2f54y$E$LyF60-g zjepTVM05#Ql)u^@TaFzBM#FM9F^3jFbbzrAG1 zR;5sxxU{~&etRQcF=v13Q{|w_8rD@v!G1h9|sc8qoO-zVL4BYM)o?L zM2G5NPE(w{A|!BY!ZFG&PhY`iVR1#bC5Q*|>Pddz(0~o0L>ZDBeg9b?kOne1Jdeq> zaAR7-u4H2uUZPo%vF~Tu-UfF|$?|Ci0$UT(0ux+LiR%HZIHeXUMu6?_279YUlUFshRC4t&;t=^`BhCs-BOk$_Zu0 zPvP&%KE6e|ERVAe!QPOwT~Q-dwI$fX^UT5mkGe-{-W;10d0CA@KX=+&2+*3Z0&qM6 z1Fj8^-YME4_aEhfTxprcdrxA`zqIwPkvb7G5YVO`6_EZ<{=Ms6{8?`Xg9hV=Quupz z(n|^P4#YQVlhM%crcNEes~YcF2Pa zAdvv@z5l<;4*A~~hOJNqysX}{g8IOv%I!n~`Jzjmc*P^B*fosL6dWqIcA}1vv@6*X zb=m~xF!LKW_^n?jPni0vz0XaDfaT`H6p6fTx(tY1+WG3elq?)u+?$sH&(CcFnN$zA zdO69dy`%B5`*a-d!wm7!)=SCRj`RF|@4PDiRwR}F&pY37PCmH%pQR=4Vld1gFv3J8 z=+vu$I(2&$ek^}i)6Vx3Io7eVRCTs03*EW)Qg_ws(mmDx&jn5U41eX7qcYIG{=J>w zrlp(^R#?#KCGKQ(o;r-DVHOG%$(hLJg+gEOr$Gc7PIl^hhpx-}aIUcBP{R`^Y@Ya*3B-dWCBueV2!V+Sj& z?i^#rM|Cex>XhL@T29GQrFI~tNAVZ`$7P!}pe=8>`=@vJV#Djw#dd1;s<5%L|Nc+P z6oJ2T?y*jeDa-!89cv!iM1;Tf?`$9HbZmo*p<&{ZkwhlrSRdMMtz8}u^Ujl;Pt_ak z<}f;nhJa`T!yb?voLK6z|F0fHd#->VS!ENCb{|0H_bX#Gj_jv@fX&E7X)bhh&Hf4-l zpsD<$gz^f<^aC>AOt07-)o%5B`XBzuV#>8wXyyvTi<8-&74<`uMN;!9G5sHsQq0^< z-5{2DVnEf5@u(fKz2m?anJGwh8)2%&tx3iw!D?3;^YlsJI^@N;!RrkLLqFl;QHQTl zYgG8l29b*MH)+k{Q<4l?zlN$8xCf1l=-i(dfpFMNtvfxs(Fe0tHxlW4>v0N*Hj9Tk zA_14Salgp*mRGS=vAWgOd-}NUTRV$r3iGQLC?D-k7Wr#@Y!3YN1TRY4;ylrpfdUBC z58iSZ&fS4R>%2q%B>(^Ki}lJ^P{3;zWOs6ZazvYl2@6s2j)))A!}O+hp%-EI)v`7% zWb!CghXQJFa0vV`nklxBy$~oyVsm&yaX!(Ye(;bJiLU0FtbTIHDSkWps0_i8?bTZl z*9BIxdi#=UiMy(m9^S8(Y8&+(SMKQ1tr z$d&WRI%zW6npFCec}e6~HfNW^`!oX(GN%1$fb^YS7BF*hT-VypxY4B1M4_I~>OJNyLwO`$MbNb(f=Ou``yeSDFz0?O z9(|7(&|^QRu&l_z~tcR&A+8Q z2e~fL;gmM_ZGJ}mQz2NX5eL6#@Iq4e({>djZ))$=c*DBJSKy~o!a5|YXirszeR_?e zxgct-n`@=>;}=Pt&RPDW=Sy_5n|HlrpFdzHyRP9u61d9;n<@T1jsMSO+z9pn_&jpV zcAJ#;Cc8v{vZQLb6ki8|)Tp#E1HX$OZi>BHJD*fsLVq-%W|k|ioZZuqB)QL(#%oA9oC?)E z6R`y9<2U!*ght}XuO)Z~5tcU0n?ko=m`%>tRIBq8hsIX(i>IijZ@cIP_v?n+9J;q4 zpHLVHUf2UcM;7>tGG_TzJ-W=}W)>2SaEIWJzuQXgkt>|g0uS};W`4LzIqRy#s2L1i z{wmij^O}SngxW{=vw%yFu7x~QzRQEp$m24;fHQDhrABV5uF@v+0SS~Cl`6V9se9;R z^MJh(-EK?Z=F#7x^8Z*Gc%o5J9Jt=UnCE6p0i$rMrF=CPX{MFbc$UZt6bkJ&!A2Km(1=;v87( zu7I(pcv?x|>iLU$Kgyk->KV#_Dt_(GqoRUY@=^qnX4>aZb;Yntu$hrWXNL>Co*0Eb zYkHb8hrM&Vg_d14_u2__X)o=FkVE(TI&*o*rW5msaP7|durQkdte2B)(!+NDKr5XW zfIl*3thzZdWImES?K8*{e%4XIYBVTyM`@FTXXaT1_*%&rb+~e=H|K6!>&)JbdEZ)s zs52K>#@InioJfS*{gK2fb3MyGOniN0MwV~U;yA01*X3|`V&(x3l$l1LGu*P&hQp>L z71(f?G!mfN7!b-n)ElnkXA<1UM=3ul;d08X*6gL2-bmd9!GT7S%Uh;WM{cx*1`6#X14enogbm}lS3$%#kM4U9%<;z6og}fn=BNx- z4@`Ze7v`O8pA2@|o1aL%9_E8?(yzeu<^$3MnHm_yy@@XRs7wP1HfDTbf>XD#y}oQ; zxzFz!&U(U>MjPeU!enDF%&%Ti99f>oEv~~o4eqPK&O9NU+VW_og`|VM&%sH9dmX)b ziG>>5EC(D=VP*MU?NgBW|E9GG1ow*8J{Gahf9N;3AwkKwG9+x2s4xW9=u1Ol2{+mK z7|t}*tVjf6<+C(Zd-l5S0ufna6ZcrNc2kZzPZxpKE%8Le*rwO5yqsItJxx>p%VYn# zbpc@y*k1q^wCf~7xF+AXaC@q*AJ~Q5WVMU#RN!=Z!8B>7+U^snW+)*}zUF7mENCz= zkA1RNAE+!Mo9=WNMk^%>L+0$j-|n`19c)=*Q#NBNm|B0xt@P}x{H1x(I@i|n)d(C7 zCo%Tdy$gnvpf8nqT(ZH7^cOZnvaa1oqZO~4Cj+_VgJOlPj4W+{*y<7BBxkC9Jws^7 z2}p>>(C0NwS=Xp?Z6 z6D?^AF!%|(M%%a1Vlc7QfeYjb@&)kx3vILIu&dJ&u36^1*lGXS$Ks%APKcVhg`((-4PBD3EFim7Zd;-^4;cNmbE znt2rxZWNE|W>T5x@G8D$=%*eJ4i0!mb%==XS5OdTx!7fFV)Q0l>+x2~(P(0Aj395V zS0dH5huF_n>Inwimm2?!@+z(mcnv%eq-$*Fddt_u&lpaq%CTt_%o1l5uL1)4x8(P( zDMG&YuDAdwpZFgpG>YqkF8Lsu-Pn%tmamNv4@juWK|YHlOll;m_}+N)o+KXx&WF@r z_@HGVP}-t)rrCNe-Sn}?X-BlH{-xGhy3|_5shw-ZP|i(=j`HPj{qOlG-Ulnal9*9bIH=RSRLsb?P(!2$=>VB3G839tJo*A-%W#b-9*x`JPx zoikN>slI|UuGE*933-#mZKiRP2y?urc+T%_9<>F`if!HSy59c*?hu&Yy>tjrpZ?Y% zNI*u^I9?8LO4GbQIxYSfaz=6KYwoI0 zXoA(Fk)+AhrV19GF2vxdiRkAplG3p|r<#V$6!PoZ_SPk>gmTX~kie$7_8y7;RiF3B z^ILbRMbSI||3d0tyScw6wcV$~&xJyXk{Mzt^J00Bh0GYiK|x;J2H=+$&wQ>u+cY8k zv!>#YxUhE5-)S1eal}HN*~TNMF!x#!4~(dS|;1?bDHwg#We2^NgLm5 zUc-UezY;P+>pEpM{mz6S=QJ{!&0!9J3%jvrN7(`~Zxw(RnCxgm6sED9Pc)zJ5mgBj z3okTuY6g+X@%xaR91U^LjO48p^2@e|+E%|Tn&v9cfX@4p|HpUg*8i3+L6}!Q7d8G7 zQAh(AP%k42iF83CS8N(XGO_!9!5;(0tLWn`7hU~=HDqY;8n9fT>pN;g!PVUyq9yFtF z5+@tg0f$tqt%7XS?b*plEadAv4&pm!`B$qa=j}&g_U*bd>#h=l6LW#&j8L{g{~cC+ zUtp_AFcPkI0hb`Jl*I%d{wVkbSB1s|U+LEgDT34ie#8rvijEl&vd?E&X2hAi#`saD z=uJzIW(u3Kh*>HT?nyU?h_~5S67RefOFbWn|J8&3*Df}6kzd)4BrDAx%FYcJgr8_qJO3R&7bL@UHn&0jHl(TRCSQ*?On*$-J zHK1JTv+=+`6eIMa1MC6!3&3urTgY{(DzOkpNt5s(J_!nXzQ-yI34$F&tbBRKDKSS} z76K)GV*pDo8P9dY+T;AC*Lg&5L>fzG2SIL;;nnVSTU*|9b-X|Hz7^AGi*|UE$GIe#R8`TqU74s$;$;x$MjMorV4;eM;o2xP&)Vej=5wO$d=jtfS*Ey6Ye|JbC^LAr_KN`|z!vfw5qALCw)>@Ox|%GDHZ zQe-^)G#S;rdaS(;(yHl?S9urtoG zx6m&?1HUFBSOXQ`Pjr@M^!TP9==tK<*yCYpxzDfL9hYdhT;$PjWcl9`SwC$L{S|Km!B zfEkH2eXo|4L1vA58K9CV=32T&@d1At4R})M(yZgcJn~P%Pplwi5Pc7H=Hq*BCB!!_ zK3v@DVS>9?t;Er=WDO*kX8A=aYFeecOL&zwfK;&Q^&TxKT5uAK##@yOjCIa8{J>!r zoR{rcr}r}+ITT-a)rO>ict7x)C5O{CI^3A?Hd~GG=>hfnB3#X%h?YUY`=MOn^R5C7 z5KwAl!s$-8of!Q$`)7*AKbPqkF1drwT_-z!I4W5~%1!Qu&|3A*>V+3 zN?~W0l#PbtJRur^=Nz>@eq%8KT%a(U2`&Yyw6tVYrug+NKdi*DNAzNIX9E)rH5*0a znAG1Z<;eE8+ltwiY5{y6*;VQG^7f6YM*&>>xkD85gx;hEY%%YR*U{wcfvR{XINESw zQIV?nlppjY%-U+Wk$W8m7Z!N<4wAYP9Hsl~XXCm{$;{p~ zV8)gO>&^Jn4jKA{HtI^Y-Gi6cSQY2P6^Xzik^SvB`?z@MOKG!rAaIE(N!3ss z4D|+bRP3>nm%Qp*ElWZa>3i*T6oCw-gYk1NEp2xf$97tlLD@I$QVP?2FC)ikc;sk7 z504xH4wIA=8seOdA@1MJhjYA{R60Cz6yF`yhcUZ1(dgL)C10A4CPp=4c;xsQuyz?a z9&pqw?u9b}McYq?d%1JgBAyrWOT*1aP&(WbZu~Qz@I~kq4#I{HEury`?egG5w$LP(b;rn(@)jrKfQU;*2wyT{ z_wbStB1?|Oy?x+V1FknC1~Vp;i+tL`7fv}%8CTx$6S)2GTdaDhR}yIKgB$itByV3I zzj=@c6nV{c?X}~L<+8?EO@}Z+p?Tu?uhpfIs`>YaG3~z^M~$qBh1(c9wXa=+q%=ky zY*bqUhm*hPIHrZt&N$rAhew7DzeI+o(5;(r4d$I@vEu(@Z$SC$Et7o_yIcxdhzZU#){A{m9&b=OQ);s z|CE}TUrSBIZ=|LH@|{^sZ$?aK3?}FJG=(qhuZ;aAv*h5+io9f&NHLsQusBM2 zS?8huN*K>64b#7}8Bk>x#Gf|fXK6T!(pcN>O-HDcCcqpoE7aLwDmWOUIbinIA*zix zW%G!`;>JejXnVrE7z(HhU>v=>Bo|nOhKv2k5N9V~@;jwZNk8kW68Uc**VBQU?p z%{phJ5nNX5)BcmG4~{+{-b{W7Cy}&gkMQYkS~cDozPEeve|)1qUT$z-pj|~5X;LJ> zUv2FlnW=e}PY{ zuXpTCr~grjIIi;Tj{Sucj79HV%cVSk!|Mf(#Yr=xXx2?QRl}xq!&mh>$e-RxrWj933#0o7w0Sw^1lJ zm`p@7Hp7*oURw`THGircE?5TzImkgs2Gh9GiGtS5y7D@7p*sIXlEjGoldJ?=s%$B?F_Ju3!Qm6H z0Tr#Db!y_?0J^-P8SZrlZkhoIF2=q{hoF}pxur_KBy~|w1)%D{IyRL}7ic#^=BB%8CN9fd|NBKTcu8PSnm~GNg$aS*mZXYV|4g*fz<6r@lCd zEX?3uSG(ajrLD$8p2iSOb_%HzHoC34_OeXSl)&tyh)13N4s&&@aGKq#y#DIaKoe%} zVNCO{c2Q9y0e7admy6;3GrE#QtpdExZg-U&(Vmgsa@TPe_>>jaf%dKZ+iUCqak;Ah z;v?jHW3^_`o0k90O<>@Di;C>PS7m0N7M*ksofbI8WaR6wjA`fh>QSIyiCMy|U)j_B z$~W|v_QNQ(EaC%hE`DvVl5igXf<=dMlRmTC0aqH0krjCnreH`F`I^XycLi*0qR3tK zTOH8@UPlxuCg<&>uXr79Ye>{wu_FEtG~QpjNPd9by>?E2K~VI(q#cV4nBr{S&~goHUxUEqdG&rUE^A#L*z4&G zbXj(Q-$4ezw}6AO`9^fj`q0v4Xp2N!uYNk}V--)fdVssZR5&CFmIOZ8+y*~wwoMb0 zhi|cKc!`ofnyRehZPZXvTiG#1yPxtS?UB7ewny5D!3v`664PW5UBpgFbKq2)Cc@w` z%6cSRna43BGgFsn^JGO@i|UhhY0nccV6G{>?vTRDIknQFfXw1a!;0R4kIj>uG!$a< z{3nyi7KAexeV@O|NfnfbJJa7+RWGnJ?M}A<_%3bhbgL(Om4|}gxlhhOMm8$VL_j@v zKwf6^l+&d}>QK%7Fp<4mi`y7)T_xPr|BYWqy;xVKV=|F`;HNvLqehI<@*~L~oK-@t zJDi~QFjwOjZN>)2S1ck?w8!SeJYA)hbE3NP5aN8#>EN~Zhc}KgAlOD z?e8>sq39h3VX%9F@s`h|DEy2nvLAr6f13!sBhucFtB`SQ<`Hj6MmFwRiZwIIdyA4j z=CAch-XeX$yGLQjmxiC8v*Rjy3|=eUESWJ9OcuW2QTiS|Ua+u;FxzTGk}Qx}KJMU! zTay*IH5vPrHNd3Y4&8{sisijNNW7{JV@q3!AAK3e`2J$^NW+3zo<!e8$^nN57wRGx8TDb(|PqlsI2z2L+^Xl>L z^#Bdwp5b4>6#kc?Ui#)0F(j3h{067hrf`MRlEU6WU>zu7)E&0}53k6U;qXqOP@hUR zt3@aVkq|va%;XbW8?(ctFE744eeogcVJ9Tn?0! z`8#@rO;AX%W3m7jNM_jfn_@iOaLKS1SDR`XJY~;O6V{JaM6cs;&M^&<9?{9?&8%PI zyeh`~{0W))6U&-s-zxAnhb3`8(k14w>S>{(qRy7x;sCq8$E|^u?K`DY_>Aw*gmVBdv64T&3x^HRw zpQs31kgj9JwEt2POojO<&hv2PPoueF8_m8^+xl)I#o&MQf$iR8<8}Rk51g)I2f0F< z;^h1uZJHp8pm9X#@06y=^G^dJchyn7D|pJ@6}J96Jmr>sxX5=r7m`tmy=r?^77V&$g z#))X+lF{uoKN#Kc;?^vP*m9L|X-o}C&%tx<;^~%5`aIgczgtOk z!z+pElN*3lD*cy?OIKUDrt2uQI2EMlLv+O`oIsx)ZWcjiJT;?NyTu_^Ubtb;8WJ`e zshifwzh{f3mdhG`Bp~gt;ExeR%K1dlt+CuY^(V_yJ02Z)kaWYzdGE$}N0FI?rIaHt z?wR7CCD&fzKIqopb-aGN^hrFt!sS^OzXo0ZO$7fNnQ9CE=7wdk4t+zLp2OWRSG=}Z z`oYI4A8~aaZ>JnRcQEsSm|kIsJP?`dBE$qhr@a5Sz@)(ihHP+V{vPA{JSKM}(N_*~ zFoO8Hk)Yyx!%eD4yB1Au@NG>)Nh$IoWN1mOfd>F(cpNI=Qk8^8v=f5oNdZQNLs(=# zr*&GY@jeqetmvMXmVfC0Pe8E0euX2Fxk}o%!;|)Y#^=mS&0fQsjm&;IvT0;So5N^; zefIf1KeH~D&8=WdoeD@dV_eDoGSlF)B;o14OA8Xxk0*N76toVhxAZ9-VXrk!hvSGa zMC<=|H_9I@k=?FB_~(>1LGAy6l}G*-UO2t!xbriFm-uO!Z60npDVa;ms}LyhnSE=y zl0D=U*B*R`%5H(ck{sXmxA%d8Ck9pOf$z{|1pk!Ozz-dArLsarH+n3&FFZDmjfw;ZOPUL~w; z%OaAMb!qnPM>%|(`8tl()8R`=c`EsbaVOs_hx&h5j>XC)(QhSS>mW`1A7%pXeqpvE zU^*od${vDOR8Xff8}-Z0&8k~^VQFX3s)&E#q_VF-->Yoc;QNVtKNzh1-O0v-GkD>e zjtn68dpf`7*Y=5GBqHsJRCY4Yt9SUIF2G&af#eBHiYE`)ajq&QjW@oyQv_n%;cKFO zn!>?oB-Fxz!q=h)uWR9^%%|i%?GRoF!NZz@+x7|c7@UdGkG_{qmQ9ColP~k(K6g5e zkqvn|W^za!`H2Wv1hBHYad4`ikRT5^!}|{O+JCudvCM3M^&KTFas_&<6OU_V`81w8TlF>Ls@Sg!CpzkB zGK`zomFht_fUuxOx9Im}yxP_IH}T=s(40Q=G?E|7ZvN7`jbJ zPdHC_5`s?aC~qH#QJ70eFe;b-e5IYojH1ZrxyP<%=28CQ3wbUoaUY|u{t>SqSRwR^ zOMiF2>?_Qc208AButYfb7aT~LVI@Ca0vQqYnhjoMyL!rudZz^DCUGRKerCINb;epy zh9Q^sU9}!C;rs(E1QZ3>+s-AG?OFU1oU~pBCmvV9$zLY=g{#-MV*6}(apHfNV|1H4 z-be=IO%lZ4Aie*wt>G48m0H&BeK}--hKn~wuo6w*^!bBBDTLH0gXci5u)h^K3QdbY z2c8JiUFs}O(s^`#AkiWR`5Y1=sZry5v5raQlsUgLhYn#*Pe}>hihCz+>;6xotgYe> z7%%-@BhFbi)4F3~`8Vvm5oUe`fpz2)mojm(vbs{qguLWU@HFH7{>;F+;B+-KF+J=Gp98)Z$N!F69u+g6xL4bdRX*gud8PZd&HKb;M6X z{D=9&zj<-8kZJ+akaNP4*8eO5LyNT9V$kCynT1tJ@8tWrb@Cf2ZmK=bA?8b=(|j8= zQRaDKu5Fkx0JD0$#=bxck&?MF*jcb&8Am<3$O%lR%e&pV9lSOLo=Eiby&zyzde6zl z?RC|@iLjv4Ci^pLp30)b3{WH#L6#CjCQzutuzUB81RHndQ9PvtDJmK2`Gfc`EUpXj z&%TDx;pMityR%nUFZd8nXE{;Ue;!h>w_TG3oHd5RMBQ_JprX#L(0V5CTe0T(uCj)< zxk81GeV>OV^^b?BhrO|e`ty*rtV2r57z!3*)vYR%rGs7afcCdtvSYJzQ%t zz4J^`HT$Wm7t3lO1@fo|S9!yK<(Ko!j^~w__4_XUNYOO@QhG3G0JjrtgE|&TCVtYyW_r**{00qWLOSlYH z5F@__E2)>kihA(|$7V@-L7FegRi-5@F!WK}?fVs>A1r*GhKnPO&xOXHiRAr~^TKgm zOK`-+9Qz4)9ZjG}^Fp&LZYW0#+edvBt*?-3MM!;Yn zEUm(4q|)x@kA}k6;REj=z4EjeJCHB=pylzM51v*A-_1K6qL0xJUzp2^?$W$_cX-3i zJKJx~dx;V>O6~zc*Qq=6tE2oexSv%kBq%uv_p=N-_mj-N`&suP-2%hK0+pA3*6O#e zhNylP=#`%p>4`CtQlQS&xI_)lXOTB}{*up<_SK;e30=|e_ciGTJ8?GU0V4x zNbtPlI#7Oda%ygZDEc)%lEx8X*6#q2#dSGvqb@bqrNA&=3Jf=JEH_iQ4egk(;~|}R z`{^YMSx(8PPLto=(){&W_3w%%!lgbEfO?PG3R?O`}LM`$RNeq3^bz z2N(;_c5xep^2d;gq{n9LVHaGb>JJ@v1?{y?>CCuh{P*F(yLwgBKKIhJDaSvr!6Scj zfUSU%8Rb8?{Hw%c$G9PRlVO=8tx0$?LpSkHoR)smjV=2Eq3V#kx8rb-(9*al1bwR= zUE^)d9*ZTxo2+t<++j0+^25X(yxp<)1srPEJ-Q`TB^KbgpSyg^&W|;46lA>2v46*` zYBo3YY(wUhx!|L8h2ro)Rr^gI`bJs)*}IOS<0Ljk_KNVlCN;XkzM58_pbe}2 zor%Zr-o;S%A>gBX%?`nfqm#W9Xqn*x5o53QU0~0~&+gJx*P9v*xj>!HOVEb3g z0jqCmM~ikN@6|s_@^%k@qxHAeMZ)m^+}BT-<8Y{NJ6!JT(?#HvZbK>+T30@M)3_Pi zBDgpAAA%pzd!&9zWW8@eD^vvg)e9VZr@RlNisU3>?1;3BlrGF2n*p_f219F%Nlchz zwU$Ox&w0QJ@?4a<(z|xdnQ)#tlc~ztALI5P+aLO#uf!Z+z&`S*lQ&Z zB}XNB8bVCi^<@t9ac0k6T)|J9s+D&&W_Fm}TezmTUexlbyA+2+bcEj<4tG7YQVpFp z+TC=opAUqwaoB7(H1_bP+sZfsy&95i-GZ<3ScbpuTs)0Ex;p;UGg3N9^*3GD*e|XT zYNV)K>MnK;$`?dC2bLA<%;}ttI*l zQ+_WjUi&*ezY&(eOJSkOry-eXqfTJUJ}E-os_FR-Si$kgFLI9)n#EzOYL!i4BGG7n zYSeMZvP00Tf>8o0;_*GrLRjfG16@o3@n-XziRkz7PKv_>m(rG8f6b?VW@s<`zm1H@ z^ao)4k?I-%eiJ9-9zu90aEBNo^&e0go7Ur!(!En%smZzxy|4XuA=l!jJ?^Fd@2Ag)^6C6HG`(YQU!azGsq3&aOk18_XCZD$jHrZS=YPK2b?T z--;R6{?UEJfjM3m_X7_7jAu4P>Msjq^pd^XtLFLi>rcOdge3^Ca6=>p{5+lf!*BYo zbk-nTXN}E`^+RmP>^8B5_kWbz1%Owu`4Yn`pq+Lsbxqjv_onxQ0zR|`CC7&8gr%e- z5AGQ|f<9=1XA*SouerRUpeuZqi}TCcra#E;`Zu)Bj!O`0XZ0k((&x&ncUL2Y(z-{P~Py@@3#LK^`_UPllc{M^0-4 zuU5_7_STub3-@>N=&BZTqqkq2y=E%nPro}{VU+F|UVw*B6KPjU6cLekS5tpwR_rl)P^$hQt>y#f(G7gv^e1h3^yHRNI&?&4>v>!s&&o0MBj zFL5oDTNIAujp}ge7A;KNRDgOb%d6e`&p`etd;99lW54E{-XG(1imuccsvqScA3rzh zBUT)~caKpMrsa5(HDMv}X=f0Me{0&AplO<~tuCDJcnd>hls`;Xx||wz;Clv4ikZ8D zl_B_9(l|k4IEpy-;FCr_rlOE}gxe`$klj}|ld@tP1*+(;6-;$nvpsq_mF*E4D z^T|fwn7}7YC}ZWq{pimB=okEJ7cC@@gyBSCu2j`K{TYRz;6EB~1wmeexQza~ zz8Kx7T7YdzH4=#SKZ_vKs&gF5-oCCqH2N$t@qH^s8Ofal$KB9dYL#wA8v@Ei8jkDI z9Yb{QFCD^lCumD3mrK@C8F5-_QG9SO%OK8nLRWHG5nmx;Bj_BqJ}pyS+NmmAmUsd9 z(kRBke{Udde831mmY7Gx+o;WY!4~+ep>hJ?)>@ljx%FRdADH*zYSPp_-pZFhk~Y>k zr_Q*6bCg~(b%B+Ibd;(@%IDnIsfMUkN>oxc-0{idLt-8VsA03Qh)o{FoH?eH#e<$a zU?)J(s#WZS^k)7;fAF`(Y^fd7gsi%o@s;LE`OPH2_!oRj18xqx7MfHDu~CiPbmt{3Bou2ffm? z^mEwCu#iCno0SG^tZ{z&;*y3dTQ^zUa4m_+%v^*78nsz{BRttDqV#oS-f^7FtY4)y z-A7Kae#}~#{%=JYnt$(H=>1>42u`x9xS^!{@Q?vp#Bb+<6#XL2o{HqD_oVj`ZA0k}91m{XfzT#RcM>5IsNx z{ssGk0NTLAMXQ7*quwuoJ2AaCxqT7}6AG$Ln@hU$`4qDn`Z&sqiYc}ufOF#^oKx>j zMJX4zy-41SO_3w3x62gvGyvSAz(`5AiJysSqN`L^3)JcFzuOW#$sGcDL>^4xaF*`=AjXW$j}559D&f z0?$*^bw5>&_`el0i0U_KcwlVv#=_V;b;NXHv8w0X<=|v_;=Ws{B+uH_NL)I4+39Rr zTSJM=*4|KGNXf!Z`ZmTA_$VR_t*)0lz2*P(taciXXs(1kjU;vR*Z5GpORHMbPSMqC zp6ADRXNFRB714hFl0=b{6`|8%w-@vzYFzQ}(sy;;GYJ@Y@r)5cK`>HG2&97bds_UR zWxxium=M(Qt*d>Ii0Pk&z)zIu^UP&4wS{LSy{0%-*H*tD3fW|}Xdf(=6 znsAYxA)w&XtG@CTmf?F5OXJ&U+5_Bq0tdi({!2+H&=quq^#qX|_REv=rW`b7;i%FT zARr-iA_2YKq;3ekATH};)pn|vjygFVOZiI|1{Ac*h-WDYJ~2!D@q^`iO|3`#SzwtT zlOF>X?}!O(`V5(EzaY}HZ@capiEm%`DC9cS?TN8QrlC`N6_!haBlK94_2yCtUizJQ1^Ili>wM&P-li)~=t z1v}AKR^1D9lm4z?`juBX&m}T@+9DeUnLi!QEPtEi%v%?BbnE;-{La6=w2iqEdP>)e zsnnlB&zpxPZh#$_Qx1!-7qb*1(wflv?-jxG<7Jq-1o^)sZ)FY&`++>{Q0J2siw9gN9 ztZO*gNc79TKyM$)nk`dl+zmgAI$^0ie?#{+D#unwX3MFd{x_qqPmB1jkQLs@Jib5X z7<`rjJVLn6j(`{zliS=#PItH14s!uIVl_6V-bXr84I=Xe{|m5Ipt`sBISQN^_#r?9 z+MnpZseDRQe?>x(g4&R=YBCn|cziX#$B)9E4+=Y17aS+N^`SJQp-KgdTkJ(VvX!_g zCwVPll804<{-UEI&vCnY#@!1aq>Cz1V11C ztQvY~KEy`N#Dl&S}Ko{#ksh+iw0DV-LDfW?bI=~v;kCa*cSQtcD#c&iizBRQe1Af z9b;z2M_xI4%H+)et+h?LwdJDLAaNn2@#jf{_34xdP72IZY@^#h^RzZ<*hp7%bubd8 z6PT~|N3hB-`-3>bhcZXP-zoCes)jyw9S%R=5g|Jto35AKdBopg&zOq?tH^<1pX>Gu zjBN9S^3_Kv#Uq>-ZfYmbjConZkaLS!IV$T<9Mv=JWY$S5-dh3_3?>^~)kgPn?_dp0nYwARM=bxhs08UM<)yir)c{8Zs5$tb9v+BQ$J0)T|aey>j79J@^Q9P|FY z-Uy@A_9N!~gB)Ky@7k+`OTx9&>u$e%+e~kPiiebe8I;cj?9mGS&ey1}lRbKDhZc-0 zNPf0%!UW>D=q1eQao>dcm`wFS};ddM;VBM~&Uqy2<3ICBf920ep-fpEDZtj~XIz>535On%rZU3jtI&n`$#YFZFiF4$QmLJmc9{(9ug*>}nW zr+&p=tx)a{cfHX{?RIbr`zdjO-}4Cv)_3j3VpaD^WKl7!6|FP2=$k3*s8@Mv;%y35 zivVa+hI~mlO9#ML5Rh$yqbWJ)8X}UR(KQE(*d_{k9<0R5&|Yncr2=Z0+8g)0&N@}& zX+}<4y#IO`y{M9M3vh*XW$ESvkWuTD;Z?ifVZF5r;gS!eGfJ+@c}d)pP4AH=uD+yM zYsr)_%-5l~GZjv(u1rr`Sll~3;zmwo1lz>Tm(GqQ{`IUb$Hh_j(_QJbZSu7Fp`hs zBJ>*hA@f;p=T|dg_KV;H5z~%*0jYG*>oX)}wN#^C-kI&T{PRM(;UFjB$3nhlWBk;c znaWwN14CXOqAWEc+l~E=Sbs>dBjImY0gXz|=K?=LlpO+SNQ!sr@2cIc7=~TLUkl}U z`xyT|$Md%9*35TsaWm*f4@rCqW8-h2+@%r^Sgv<$>7AH5Fbzscee!te*0muK!9P(N z_$$j|@2t0=3DQB^ZG7t#@J&3F@Z8|qDlv?BzP{csW;PTfRR*fDUAjw@@FId%QY2r; z-1=AwS7El4mX1NP`pm)AK?drx3^60mW{f8ns`ySoOvn}RlG_uSm=8$WWP&9RT}pzi z&KWD3y*MW9C0_KSfg)L5Eu#)tzZi%vRdaTbOmnngpPcsW#g@rdMNJ78J;te*-2JR} zX1L++yc*=zfe0WFGIZ~&=Cw(i;k?RJA$Z=&7RURQ??#7k{Q&~vjI0mwK{}ut2Z^Ma zbR_#SDEstpjumme3d$s#1o_E-Rq=5qM)9K*LS?+G_hQxJ`As9V517p_AEUlbz5ZP3 z!@CIBT_ILHup{;pq#9QA-bs4s#@HIgN}2jiRA18BStHUN=ikqbv8xMuT{J;S!TDm@KnLM{o~6Wsnc^ESyQFFw&cAZcykoRk~f< z*OBw!#yZD}o%+~qr^~GL4nTBUxOmpAP^0ng}ACZn7&y3!H+3&TtBLU;q zsacjZW+O@@M%492y%|lhV4KMe2KhwdTKZ+u&QcT{rdE|e(dO-2uBw3lGr{mbmyHq~Ssr4@Lhr#K>IrbAM19W$BEZN=%f21T2ZEVwLN=y0N zX~8j7PBEOCD8vww$h$jb#-#Y}oD9Jes%w&t`;ls?n)*-w_yO{i_NyBaqY%G_4m4A; zZhPsQPo@UtQp6eD5dFmH6v|ts5;b&73R`FO?k5V)$mpk0)Tt`6UE<5$>e&$2^v9SmegZV)wuPG^Md6?{<-+ z^b&5png^N7gy4RSYh(zvXi104%SOlbOqNglHp&yvD(j8b+A2mLLD6$o3&q#<3@W&K zTscyEhu`z(ZJ*N!wF(P0labDqkw3exd|DkqaN2Xntj5jO54TTVGhk{z5^X>2B1fxX z=H9W(%0?~pdX7?+%j6WwjCav^a-?nil=VCCiEI7Yfo=;{_9}0@QO~LRsgJ&PeI*oX zIpcXF&i`c`v?-eX%g#o_p!tytRJP|Jgx28Q;zT_!%S;aZW!r=4&tB=8w^6hjraT9C zyltKkKL2)Oz>ga@K75-r`tsfa+m9+mCaEJJgb>|tmb6`JD=D2UBNq8F5-REo|C5;) zuK_6cH9<(y3Sc?C*$SQ9w#|FlGwZ&GJXh`SfNrZ7Qf^<>2jj)0D3Ubflqi@hM#Pa5JAWW}kD3hm0gC}h6B z#`f(s%?7q#uIMKPw(O)rOph8ku>uwaL47;k*2L&Nu4&1Of{k1yUI&vSaoHzY0m+M= zTvs>9?xbEY8C<xzYzYZpqnI@TM!ps?%XWVV#plO~Kmw!isV-gY?@c2RzYi<9E+Zi=nNw_3>LSPoRY9ByOAb`XpYu@YjGI z(59OAW_v?PTa-vO|tK~9Zj~~K-?A`riXVql3 z1iN|_;?{G1(>!(jYr0L0FQalHx9e5R496izKo9+vy4{BYNvBMKx@J&s%w*b6^k2w(^Ei`@rGLjyA^YN+RzRUXp6S3=k(=k zx;<5E);*UWya#e0`RY68yVeFy&CDFo*4gGB+<@NeE@Lj}_l2Ut=iOK<+;|_P79!M# zu8F=9aepQ%;H|~$k;gpqglJ=TO%$wdxX8cqJl{ZfhmpIJ^l8(r&MMlzatWvtUbPmo z{VEc^^Im_#tMQJ6Q;z$I^Oy%=vs{x>>d9(R_@Ew(Quxd)SI0q80ccxBq&V`>)pw@g z)1V#6nI3mPP4@9o71U!s{ls#Re;D8QRc~J9B+;iqi|RN1Nnp0U+6nWSz4jvDD_~E3 zixxON#xr2AtqADQHV#_vHxS-tx`^m^2`+C3xt<^K`sl$x_k0RrAotS?%kv|6jC37B zLCyc8Wx{+$#$_V#J;PJi$2m^NuPRrmnM$5x7~ktDWqDAFCGCQ1dzyDvSm?pu_Ug4? z#sh%NjvID}*x^TdJ>7n4%G+68ZAuH&cvuzMibl0}kSm5>iZQ!zaP2BOhbupRgYZ`L z5s9&4Mvl(pySTMuB=78H-_>RMN9W3)LH(};4drEy)D3SEL#l6v+`G`$X~tGp5TM!j z?`|CKw(VD16dv5WJ?7NazR=j={tno@K8joq($HD@p|(~jz_b)&$hH~QZ8=AaNNT6tANiba^|k9 zm+1_ip+Brfn}Q~Q6_L|(H@by;btV0!;mD@o=FO0Tq4M-d7t!K+$uljAu2&bL-0V)4 z&WMNotcCj^WakSyu?TrgpCkiT1$(SjBhp1a&)lfti;XA55A~x}_wV~Cf!w$nWwju_ z>&59}w`0<4&d~)Wi673ysK%Ww+&H;+cl*dZEYUo~wE(?5zf~~)zMtM}_}`6_Mud#T z*J7%7x&+efrG1cOv|c3STF-giwn1Nhu@M|A`Gwaw)>}i=xr^OqRGuoNUmk0--^MXU z?DEZ{RpTJ^qVTID^1A7#1E|N5`K3alN6kLyPh@2Hdp~bq%Cr7wC0-{y$Co(Q*CerRu7o_gz+XQaL! zW9AesLFO?Y)Y`7g1~&{-@UhUZM}Me)XTFy8)H^ZT=44ZF!*=k#zkdSV{Q^r--)kts zQL;W9K5witYB+K{-T8v|&m%^O>_b1^eW;w}|CB;eQsjeEeivQ zof+on{&&aX2cuJ>B=gqtloX9Gz&1+<&I{neB0Y1~n=%}QY5GE*VJE|xso@(tjKn@8B1{Bgh#h0vKCgm1Un5q$=?eJK-g?Q!V~a0fomp?M=`V3&6qw@oV+T!pD$4Wb^2CpM4VPL9 zQ<%~=bcf##eKTLR$}l{^6=@5*E!={qb+M=D-Kk@`x8KXb^mQ+cZg|tjk;}Aj<}EEg z<=2hcw+1ro*L#cOWkFnJwZhWaI3M}E+jOR$x?v{v^lrMp2&XXjPA;uY zv+n5qT82}7v;^iV^Yp6d?d{{8D97Te1(Ui>)EiEOl!LLu0F-jIL zhYEH)aXwhrUg9kCB!8WW`Ou*}Q^b&U#rI+5ArGj$;jCN7^!;M5;pY=HhcB_J@$Xz0 z=Dv9Dvp6OO#Bm8Cmm2^|)@4f5y111`4tZRqftPnT_ui$gZV*+?ms6=(%Z&{kLt1=v zf3wp)JIMXuo?~L7kVrDe#GXiWyaLFjZ~fld*y`Tq!#lZqnaO>9XX7qe)4t=)qXXSBLQAf`Zyf4W_emxY!^sqgIdnI7C0sJ8#T7CA7s%qxkwTGj@$i@B{9G z=n9#{H=zq9srRE{G=NtEWt6>H=JZNWbMKP*kiWnq;i*Ft;ct2h2dH^q-wRBU?==t%xio+oq{h^ ztMN32!tcCOxR#Ap51k~to)|_<&@qUjz0qOQe|V%7Opdj}FH0%t^n|7pd&C8IoGxsj zL00>71Wgga+}a}Mg#GL)*FaYWYvL9LS!10(P4azj1?8G=>xPJ0N?@4%Jj+uc7+d3k} zzR3ObEG3joih(*JrK4nH)&b0N1O^a1q4fInqvi=ATe7kb+FCidRyj|rt&**U{VN~TPqf6T+x6(9z1d`;*6H3I z20_n`CU_~%&wAEeFFty2or?}!Q`T(#h_Y>0-7{QuV9OoD&FDa9C~vd&yx;%%mke-c zL8d8Hm0ZC7Vx2@4k{MIRs=Fig)1k3iUimi?3g?D56zWVCH?ds`dQTBj56@5NdiPo3>rmrX7{^N-N$Npm!l!LVslW zwJ=$h=Ds7#yb;Q`Zxc8tWSxvt^n_7lT6H?#iX;2pgvHSNI}HLP-X!k`LiT0<)kyS;Pe;ktp%F4Zt-8#;E22{GG`R0yjUMDQ1ZeWG- zz20bOE}}l0xta=DCwSSiJv5i$y{x7pve|*}J-n^A_+HuKH%nLP`5f%5=)FW$J=|&dgqu|aBs6OrPVQSQS2gEsl zx>c)NT~V~qnxF?_e+MWs!4U@Itt6uCGJEQ?*>6^VZelL={=`;KuD6{%jNHDaIMaES z_PLY5Rcqp~gm=aZnbzR6iG|O!(rDb7%kG}h*ynBV%c6M0(@y2*${kVq5WuZunZxi` zGpzY$^Hq^Ei)ypXH0XFxqT4}|b<>vD@8c2yP}Frxz>AHl} zqk_jgX!#Sn`=5n+>n$FTRS1uDg9~reI;M)(P~`gZqd~gGxm(=u+U`VJ#8yl?Vc0~w zeOy(c)x!edlXUO(Z+;wlWV-Tf;$hlYpa!QLA-`m(X5sv42p5^?Qepn$uqI23rV5!r zTnY!5Jt}|hutNMAQ5)AB-TvCMa!D~$C~;&yuNfUDV2!HfgLoq;qoiU)lW~`Qvj#Da z^jqZC`Jp;2(869=>;wmvx&bPze6IB4PPxGszp_jyFqv>p)0TS1ln>C!%~>ZGwkoyy z#CCP?UTbln4)9-5=HSyB@e(o=T_g&BzFT`OYN*J2 zQm)s36R@B9)sURg2ZcXMPalPhB}}xQwZ~qoEHphYJ6!H7*0Ub*MbOKRwlYIrrW;BL zVWi7+kOzfWVWiJtj+DHTR%$mFq{`Dsm*LIv$dPtmmVN+3rwhyX?%Or{E~a zwI;y3!&=K6TagPUe4LzY1;uxJqKP{380{fag~X~dMee!Z`RDTl5tTDwB40zh+;tAV zS*~t&5l8-+6s~h2qsjNGHCZ=P-(Dc)FR+?^1FM*JmBpdS({ID zpif}ALb@1LMR63mXTX+SnQDt-{xQ%A(e#9Uo|@vJLV85wfa0Ek`-`JCYO(9N-*oQ24`)=8XTkO7F#+Zg)=WdlzYXHi~pF zeCUbM3dvlhq|WgR9_c|?3^G#gbSyXIS=-AE+cE2=_ShHOATh}_(Uxql(2|v+eey}A zXu?yd^NpsZ_Kj>+OX!%S<%P9Iug9m)M9>C=kkN=Cfw&2m$<`#i{u$lb55BH=o?8e^ z*?#p(LuIPVU;#wS&;u_zCFlH^cee`$>2}l)t!2$C1H5i5lAZ1iti6ck%`h8Rk@Zb|=5W`q|&8+T?qxb7&5D10g4`#?9-CvIj^#EtH=&+K?sMDF7`M8B z`aGZ30hHwU?JzF?O%QEVEUU4vr`##ehZ~Z|2;K=7_vLjx>x5Q)1w}FhcW$nlyuMdw zq?SMBc0e0fw+&Ql>UNqQ^EVYNFPu%yx_r}A(YIRf*`6b-k2tWZIY3+&jfId9bzVJ@ zd*q8^ZL31u$$vy>Wltk)({xXV>osqTSELBeboJdcz2}rCcO~?rcEzhhsb_u6TC}Gg zu=(7`uMU@om@W6Y1!hSyc&$Bg(a+eFT*?TZQFHb;*kf)%J*;=7$i&Jbn;?zMw`?rN z>nliayRLt$J=e@S2?P$=3=z)TQ_DZ#?Aa-UBoEd23CG-C3=qDk!SM9(;tbilU&$%$ z91vAy=G*pIq|Cel3%vZ$RqPnE8+_nTGL{CaOMRp!JO7L#3RJOj{@4e_ICVMg@Uu%^ULJvMH;BU6w&W@6yJHm2DKKj6^yFO-pZ2wt& zMshr*I9?Gvbt0fO{v1pVfeIfbC(+z1?`k1WZY-MHAzwZ6%{pO-4{1bmezr9x+FfN0 zee%&%)+5efiq-1t;^}Q`ZzNsKbz1~n--iOwF{6UHNEvso0%9KsgYxn(6PB!9UNwqjH5w=*7o7}Gxe)`=?*%%iNdjAqmycJ zj6BdZQ>$sblCD%{RjX;yzR@~1!x%x$?9tEbIfNwVE}w&Cr;QU0!9o^tC-7V^3f(KT zfs-GQmb9-MbT*IX29x#nsOrqW#%AQAn=3gp?X?iby`$yev^uv@!0%+$y^cd=4!iE{ zFY++GRQ(J{l)}N&A#O-AXcAd`Bgza2vF(7R5^1aP;V6PiwVa;b1(YT(r`R2P&(m~$niOH>S_HVzkwCw z#)fKc1eZ;g^XmQe;SYn$Dxg%0Ol8>ml46dPXTfupp7991@#4?J4fiHwi!9XZECzKS z7iHB8zvYtC8e(b`rp+NQs2xLNK06sUya{S{4QL3n)7JlT%Xt@s)+-6+KZNMdp=m& zBT77N-mVVqPWwp*!{XBTT4b5J7(P-1OTvW*?LBWrsCcP-jyVeD6@auORj$FLo@%bU zE3q02V{y646L~}RF0)_Lr8DHPY}%YqCcSi(?jcX-v)JY_6;jzoJfG^5V_WQFSF+D^ z<`uN|$Z`mVm6lp(-8NHs``9FdI<}+@LzjP_Veq*LCq;q3uo-p|=IDpRS_eVo)aH{xQRcsFs(8>q&35qD0M{gFe6npr{ z1vQ#aW~VI4TqT#Sut`lRbzL@d^=UZRcP|kN+I6w*mC0m`zNZ4~H7@Tlv5{B`b@XBO zmTF`zcoTF_#RJMd8e=0_2ek}ZO%Qox44S&s~H<2iJcK!YxX!@u0IYINlP|aiA z!=&!I3(Z0qJ0ME@z1)|*hwWmEMns`cO+`2R6zo&FA8#&L_nr&u;KeG<8osM(A^GUy z6PESLLTLLKVwC+9Ji+*pZ@M;4Z(*59+Sv4?n_AUFwwsIAqyvaP=qmzdD8l2dGf2Z+ zmFhV0Y7C@_ru8;oKZaIzY+uNxSA7v46r0BHaQmS2hLZ%xNBn8o+!rgIMQdVJ`HUQ< z1-YiE#?ZWH?cn}_jraLspZItXK z*9u4-BU(vs|LB&wGT^zJxl_+r`rb@ zEu1BPNLL^RM?blb9BS9lNoIbEy34`%=xF|_Dezhv&o)7r(dU}TbJ>nju`s=64j$x8 z8lz%eg>aKzzQsh5&o34^U3tJ9!@&nrz}ZT_xJb1&)o7^gr#_xHykn9iyazmP{@D9aShPi6u$&;rw#X+_pdv#W6dCluXAZ0xMsz>C+nkrs`dDy9ONdcj zLs9X)2Uuqzp6dW^B@owclgfquVkL5fEj4Y312ZZ~c(!m%uZ6J^<}|VE7H^5Wzld?O zqPMQ;Vn;+weOZAxR=h}asG&ys#6C5ij5aRya~zN_4o_HavtKo9jYxNpW$Fw4v78zj zC1mFm6;VJa7FyY0f44p}(9xwN3LdE;iCPw0%7xW40rYM2)?pyfi6 zNf0?|e?)?;mLXv~9K&PiTIM?e7sW5QCrS;`{2E;v4~t9;?x+A*(RZRd8LAX^zTCkK z@Jl;_Y8>!#q;iCl-ly}so_DM z+IFj8w$?cd!9*((pY_Etmb?Rv{8-x41<^R?0A2YPWH_19(YCtTL(OUZ%_5(|>X=+& zlEDl@aSgWN?I_(`vm6qVLTXKq8_XwEEV;Cj2($V_rz9a?OkRBoPKXRiA8~7|jG!lP zb!r>b7&WD&KF<3X)9laFhv$vCkan)Xh^de^ytSR2$)7Ikto}acq0~@40wP5Pl(FdBbGcuy~DJxYd#cGkOQ}EilQ)bMJGz zattVm{$l*YTPDY0s}K;^q=bh>mtg&??44Rn;qd#|d44x`H+w+ue57}q9c?RzJYRtT zRzRu092Y?L`s?0DpU_@++ZMSpjEcpmeTtp4H{iC;OAj(qm`?Ldk#*ozR~dOg5IF_G z%Joxh_{84Lizj)M-NG=VLb#ZWp6R7*@Ya@bm*D~~>InPQBy#V56#r9e;Aq|#d?F29 zB7T}UI&cg@v^A1g#SNYD5I&MnJM+!y=ZRAm@Ge;$4^?ZLnD%_rr4067i zJY29o9-gBuvPjVl!}!O2wD&F=xZp?(F(u~N^q-w$L}mByzz?^O6Z3tLTIwvTubpM& z{aF?J&8mWqz@7ewZO!eCb0FtcD#iRA3w)LjkOi7*-Y(i((+8+*lP?JL7HP+%(U}WBx>rV2NFx8STHo;^(0f{=B+-VLsbffs zN-E{uLCHZoKdA98jYz@Lx?{bVv30CR+dG932%oWtv5si{G0y}~YB}%dJ+%w0S|5yd z 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ú$OoQ_gwBLyk>)GY8CTZN60+MTtGHi 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 z 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%0DB$f;cb#!6?4!3Poff>KxAKy$xG4%b+H`C!QRd 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

    CQQIfWVTY2 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 M} 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

    5vjSqP2P)E(LId_b1KI#Fdz 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 z zDtaBG1KbXZH}m)pu>gbR8~mG8rnIDDSqHX;7Jm}=+_eaOkm4oGuXP~a!AqgD$+xqOt)RN`?B zuX+%Z9N!SA)^g2%`#N=E9&pBE%)Y6~JhINn~3>}QI z`5_Hi`~*|~)xPfstb};~)jp=b+J`H!;y4>LK^G>A!!>UjA_V*%eEv@A2sGs!n=(?v zmM&GbzkE&m@I~hu9-g4$>i~cu+o7*2JjQV%ANdTETxE@V0lw}OMompO{K=y)Wc9cb znYZo{<&zF<8BV|l%v6&`NIQ_ujt{W=LPWw1X+MSkJ=}dionI&DBgxiHDfneKT7s#! zXE2{PhunVZiT|4R*T+}89QzMsdZge(>#9ahP~BLKp~Ezg6A(B$mm&uWG{9LznSKF) z>V_Q+F`evzVKwU0DB#gbJ1=IFt){scy$>LZMC=O#4C+~>$xN}u37J=cY7^Hx@N5d*J9LY~eP(y@@jhcQ9XG4XW$=cGm8_@~;Y0{OBc z*AfeOkB_EqLG;Zfp6NJdUr4lJo|$*f!6_yiET8dg z;@gMO8ojuEPOR~m+|Ulej)Cm1p%;Fa_Q#lDezC%<6Q+{H_|@`KOEL31N6UthMO9k` zRTY;^6e$&z?mWinP@s^?@dvPl%4~)CaE+mo>+lK@=d4X5D!5LTno~@rmL7DV{EuV^ zP(kGw3C#14hl7+ zRep=t(P#S%mgMVQ1Ex$D>9rXmX-nmEC%V;5yhZF@Efeuw?9*lC@n<3CE77PkHEH%$ zv+cHxf|fEduj=Da3v2w&BJxuF+c3J-mBkRz(E6bUn;cicLi*MGyBW)c4~DXlnfXZ1 zxT6D3r}lUXFbCF-r|wA!<(Hd$x?gXdkCHRtH(Xz?h*-5R`srY8y)#O*O%iU-nM%@> zv#Xfe%SyzaIkh=^#Z(NA-{Hm5lmr4j@}R(fOL9UR;P^a||JNCglsFye`{!m#Nl-YS z*q$|>YC9IssCZpfKZ;RtAiyy%MR&O%Ha5Siil z?&+f^g24w-P3E4OHZq(@L1GWWLuN!+*YnhHkTse=+T?;uD~)4S8)I)33MZ1jLoqdH zJsda=Gob=en5Yubb`_N~pNh@^)4VZHOuEDz4!mWs#md~*=Tu5O%u|OkjAZ`#$=_ai zrk{+SOXdv=dY$R(^V3IZZA|pLH;&d(S*a`5*(mUSpX{sxS79Byaz!E*MUdN{Xi%q;;~≠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 x7lo^hdr+D@ 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

    `gc=VDdIG+MZ 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

    $YO(csK&3|Kfw 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

    kup3g$QvT>DWwHb`rHIc1s|9BTy9E_o3akH01F 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 qg1`Sr{GZKYOl5T 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

    ~Hk1N%m$g;Mmo@9+71%+4STQA!6By}0$$k{9^ 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 z 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%0Ac1t!WyToU7(JPx2nI`W52Jmj=Mh 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 h9<6I~eYv~(H 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

    hf^uG%#pjIr;uKD(yn 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∨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�C!?2NBP`AM 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 z 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 z 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

      _dD-`$pkS)bGS-sE9(s`@5!!{ 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

      =2e!4 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

      *I*QDf2+*A8&Oar4uH1v51SCkw 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é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

      SNC^Wy4o>ufZm+~}%`_8;y{l)v1W5znDX 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͏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%0D))=pweRpR8gDRSbZqvWFan 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≶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%0Drp}`BKv-dseH2shklwwj2-uQ+py(nBbVKaZEm6 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 - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS zcl_tc_excel DEFINITION DEFERRED. -CLASS zcl_excel DEFINITION LOCAL FRIENDS zcl_tc_excel. - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel DEFINITION FOR TESTING - DURATION SHORT - RISK LEVEL HARMLESS -. -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>zcl_Tc_Excel -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - f_cut TYPE REF TO zcl_excel. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. - METHODS: create_empty_excel FOR TESTING. - -ENDCLASS. "zcl_Tc_Excel - - -*----------------------------------------------------------------------* -* CLASS zcl_Tc_Excel IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_tc_excel IMPLEMENTATION. -* ================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - -*// START TEST METHODS - - METHOD create_empty_excel. -* ================================== - - DATA: lv_count TYPE i. - lv_count = f_cut->get_worksheets_size( ). - - cl_abap_unit_assert=>assert_equals( act = lv_count - exp = 1 - msg = 'Testing number of sheet' - level = if_aunit_constants=>tolerable ). - ENDMETHOD. "create_empty_excel - -*// END TEST METHODS - - -ENDCLASS. "zcl_Tc_Excel - - - - - - - - - - - - - - - METHOD zif_excel_book_properties~initialize. - DATA: lv_timestamp TYPE timestampl. - - me->zif_excel_book_properties~application = 'Microsoft Excel'. - me->zif_excel_book_properties~appversion = '12.0000'. - - GET TIME STAMP FIELD lv_timestamp. - me->zif_excel_book_properties~created = lv_timestamp. - me->zif_excel_book_properties~creator = sy-uname. - me->zif_excel_book_properties~description = zcl_excel=>version. - me->zif_excel_book_properties~modified = lv_timestamp. - me->zif_excel_book_properties~lastmodifiedby = sy-uname. -ENDMETHOD. - - - method ZIF_EXCEL_BOOK_PROTECTION~INITIALIZE. - me->zif_excel_book_protection~protected = zif_excel_book_protection=>c_unprotected. - me->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_unlocked. - me->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_unlocked. - CLEAR me->zif_excel_book_protection~workbookpassword. - CLEAR me->zif_excel_book_protection~revisionspassword. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME. - me->zif_excel_book_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_book_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - method ZIF_EXCEL_BOOK_VBA_PROJECT~SET_VBAPROJECT. - me->zif_excel_book_vba_project~vbaproject = ip_vbaproject. - endmethod. - - - - - method ADD_NEW_AUTOFILTER. -* Check for autofilter reference: new or overwrite; only one per sheet - ro_autofilter = autofilters->add( io_sheet = io_sheet ) . - endmethod. - - - - - - method ADD_NEW_DRAWING. - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_drawing - EXPORTING - ip_type = ip_type - ip_title = ip_title. - - CASE ip_type. - WHEN 'image'. - drawings->add( eo_drawing ). - WHEN 'chart'. - charts->add( eo_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - method ADD_NEW_STYLE. -* Start of deletion # issue 139 - Dateretention of cellstyles -* CREATE OBJECT eo_style. -* styles->add( eo_style ). -* End of deletion # issue 139 - Dateretention of cellstyles -* Start of insertion # issue 139 - Dateretention of cellstyles -* Create default style - CREATE OBJECT eo_style - EXPORTING - ip_guid = ip_guid. - styles->add( eo_style ). - - DATA: style2 TYPE zexcel_s_stylemapping. -* Copy to new representations - style2 = stylemapping_dynamic_style( eo_style ). - INSERT style2 INTO TABLE t_stylemapping1. - INSERT style2 INTO TABLE t_stylemapping2. -* End of insertion # issue 139 - Dateretention of cellstyles - - endmethod. - - - - - - method ADD_NEW_WORKSHEET. - DATA: lv_guid TYPE guid_16. - -* Create default blank worksheet - CREATE OBJECT eo_worksheet - EXPORTING - ip_excel = me - ip_title = ip_title. - - worksheets->add( eo_worksheet ). - worksheets->active_worksheet = worksheets->size( ). - endmethod. - - - METHOD add_static_styles. - " # issue 139 - FIELD-SYMBOLS: <style1> LIKE LINE OF t_stylemapping1, - <style2> LIKE LINE OF t_stylemapping2. - DATA: style TYPE REF TO zcl_excel_style. - - LOOP AT me->t_stylemapping1 ASSIGNING <style1> WHERE added_to_iterator IS INITIAL. - READ TABLE me->t_stylemapping2 ASSIGNING <style2> WITH TABLE KEY guid = <style1>-guid. - CHECK sy-subrc = 0. " Should always be true since these tables are being filled parallel - - style = me->add_new_style( <style1>-guid ). - - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <style1>-complete_style - i_sourcex = <style1>-complete_stylex - CHANGING e_target = style ). - - ENDLOOP. -ENDMETHOD. - - - method CONSTRUCTOR. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style. - -* Inizialize instance objects - CREATE OBJECT security. - CREATE OBJECT worksheets. - CREATE OBJECT ranges. - CREATE OBJECT styles. - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - CREATE OBJECT legacy_palette. - CREATE OBJECT autofilters. - - me->zif_excel_book_protection~initialize( ). - me->zif_excel_book_properties~initialize( ). - - me->add_new_worksheet( ). - me->add_new_style( ). " Standard style - lo_style = me->add_new_style( ). " Standard style with fill gray125 - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_pattern_gray125. - - endmethod. - - - - method GET_ACTIVE_SHEET_INDEX. - r_active_worksheet = me->worksheets->active_worksheet. - endmethod. - - - - method GET_ACTIVE_WORKSHEET. - - eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). - - endmethod. - - - - method GET_AUTOFILTERS_REFERENCE. - - ro_autofilters = autofilters. - - endmethod. - - - - method GET_DEFAULT_STYLE. - ep_style = me->default_style. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = me->drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = me->charts->get_iterator( ). - WHEN OTHERS. - ENDCASE. - - endmethod. - - - - method GET_NEXT_TABLE_ID. - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_tables_count TYPE i. - - lo_iterator = me->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_tables_count = lo_worksheet->get_tables_size( ). - ADD lv_tables_count TO ep_id. - - ENDWHILE. - - ADD 1 TO ep_id. - - endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - - method GET_STATIC_CELLSTYLE_GUID. -" # issue 139 - DATA: style LIKE LINE OF me->t_stylemapping1. - - READ TABLE me->t_stylemapping1 INTO style - WITH TABLE KEY dynamic_style_guid = style-guid " no dynamic style --> look for initial guid here - complete_style = ip_cstyle_complete - complete_stylex = ip_cstylex_complete. - IF sy-subrc <> 0. - style-complete_style = ip_cstyle_complete. - style-complete_stylex = ip_cstylex_complete. - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = style-guid. - INSERT style INTO TABLE me->t_stylemapping1. - INSERT style INTO TABLE me->t_stylemapping2. - - ENDIF. - - ep_guid = style-guid. - endmethod. - - - - method GET_STYLES_ITERATOR. - - eo_iterator = me->styles->get_iterator( ). - - endmethod. - - - - - - method GET_STYLE_INDEX_IN_STYLES. - DATA: index TYPE syindex. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style TYPE REF TO zcl_excel_style. - - CHECK ip_guid IS NOT INITIAL. - - - lo_iterator = me->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) = 'X'. - ADD 1 TO index. - lo_style ?= lo_iterator->get_next( ). - IF lo_style->get_guid( ) = ip_guid. - ep_index = index. - EXIT. - ENDIF. - ENDWHILE. - - IF ep_index IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index not found'. - else. - SUBTRACT 1 from ep_index. " In excel list starts with "0" - ENDIF. - endmethod. - - - - - - method GET_STYLE_TO_GUID. - " # issue 139 - - READ TABLE me->t_stylemapping2 INTO ep_stylemapping WITH TABLE KEY guid = ip_guid. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'GUID not found'. - ENDIF. - - IF ep_stylemapping-dynamic_style_guid IS NOT INITIAL. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = ep_stylemapping-cl_style - CHANGING e_target = ep_stylemapping-complete_style - e_targetx = ep_stylemapping-complete_stylex ). - ENDIF. - - - endmethod. - - - - method GET_WORKSHEETS_ITERATOR. - - eo_iterator = me->worksheets->get_iterator( ). - - endmethod. - - - - method GET_WORKSHEETS_NAME. - - ep_name = me->worksheets->name. - - endmethod. - - - - method GET_WORKSHEETS_SIZE. - - ep_size = me->worksheets->size( ). - - endmethod. - - - - - method GET_WORKSHEET_BY_NAME. - - DATA: lv_index TYPE zexcel_active_worksheet, - l_size TYPE i. - - l_size = get_worksheets_size( ). - - DO l_size TIMES. - lv_index = sy-index. - eo_worksheet = me->worksheets->get( lv_index ). - IF eo_worksheet->get_title( ) = ip_sheet_name. - RETURN. - ENDIF. - ENDDO. - - CLEAR eo_worksheet. - - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX. - me->worksheets->active_worksheet = i_active_worksheet. - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX_BY_NAME. - - DATA: ws_it TYPE REF TO cl_object_collection_iterator, - ws TYPE REF TO zcl_excel_worksheet, - lv_title TYPE ZEXCEL_SHEET_TITLE, - count TYPE i VALUE 1. - - ws_it = me->worksheets->get_iterator( ). - - WHILE ws_it->if_object_collection_iterator~has_next( ) = abap_true. - ws ?= ws_it->if_object_collection_iterator~get_next( ). - lv_title = ws->get_title( ). - IF lv_title = i_worksheet_name. - me->worksheets->active_worksheet = count. - EXIT. - ENDIF. - count = count + 1. - ENDWHILE. - - endmethod. - - - - - method SET_DEFAULT_STYLE. - me->default_style = ip_style. - endmethod. - - - - - method STYLEMAPPING_DYNAMIC_STYLE. -" # issue 139 - eo_style2-dynamic_style_guid = ip_style->get_guid( ). - eo_style2-guid = eo_style2-dynamic_style_guid. - eo_style2-added_to_iterator = abap_true. - eo_style2-cl_style = ip_style. - -* don't care about attributes here, since this data may change -* dynamically - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method CONSTRUCTOR. - worksheet = io_sheet. - endmethod. - - - - method GET_FILTER_AREA. - - validate_area( ). - - rs_area = filter_area. - - endmethod. - - - - method GET_FILTER_RANGE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - - CONCATENATE l_col_start_c l_row_start_c ':' l_col_end_c l_row_end_c INTO r_range. - - endmethod. - - - - method GET_FILTER_REFERENCE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. - - validate_area( ). - - l_row_end_c = filter_area-row_end. - CONDENSE l_row_end_c NO-GAPS. - - l_row_start_c = filter_area-row_start. - CONDENSE l_row_start_c NO-GAPS. - - l_col_start_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_start ) . - l_col_end_c = zcl_excel_common=>convert_column2alpha( ip_column = filter_area-col_end ) . - l_value = worksheet->get_title( ) . - - r_ref = zcl_excel_common=>escape_string( ip_value = l_value ). - - CONCATENATE r_ref '!$' l_col_start_c '$' l_row_start_c ':$' l_col_end_c '$' l_row_end_c INTO r_ref. - - endmethod. - - - - method GET_VALUES. - - rt_filter = values. - - endmethod. - - - - method SET_FILTER_AREA. - - filter_area = is_area. - - endmethod. - - - - - method SET_VALUE. - DATA: ls_values TYPE zexcel_s_autofilter_values. - -* Checks a re missing. - ls_values-column = i_column. - ls_values-value = i_value. - - INSERT ls_values INTO TABLE values. -* Now we need to be sure we don't get the same value again. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. - - endmethod. - - - - method SET_VALUES. - -* Checks are missing. - values = it_values. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. - - endmethod. - - - method VALIDATE_AREA. - DATA: l_col TYPE zexcel_cell_column, - l_row TYPE zexcel_cell_row. - - l_row = worksheet->get_highest_row( ) . - l_col = worksheet->get_highest_column( ) . - - IF filter_area IS INITIAL. - filter_area-row_start = 1. - filter_area-col_start = 1. - filter_area-row_end = l_row . - filter_area-col_end = l_col . - ENDIF. - - IF filter_area-row_start < 1. - filter_area-row_start = 1. - ENDIF. - IF filter_area-col_start < 1. - filter_area-col_start = 1. - ENDIF. - IF filter_area-row_end > l_row OR - filter_area-row_end < 1. - filter_area-row_end = l_row. - ENDIF. - IF filter_area-col_end > l_col OR - filter_area-col_end < 1. - filter_area-col_end = l_col. - ENDIF. - IF filter_area-row_start >= filter_area-row_end. - filter_area-row_start = filter_area-row_end - 1. - IF filter_area-row_start < 1. - filter_area-row_start = 1. - filter_area-row_end = 2. - ENDIF. - ENDIF. - IF filter_area-col_start > filter_area-col_end. - filter_area-col_start = filter_area-col_end. - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_objects, - sheet_guid TYPE uuid, - autofilter TYPE REF TO zcl_excel_autofilter, - END OF ts_objects, - - tt_objects TYPE HASHED TABLE OF ts_objects WITH UNIQUE KEY sheet_guid. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - method ADD. - DATA: ls_autofilters TYPE ts_objects, - l_guid TYPE uuid. - l_guid = io_sheet->get_guid( ) . - READ TABLE autofilters INTO ls_autofilters WITH TABLE KEY sheet_guid = l_guid. - IF sy-subrc = 0. - ro_autofilter = ls_autofilters-autofilter. - ELSE. - CREATE OBJECT ro_autofilter - EXPORTING - io_sheet = io_sheet. - ls_autofilters-autofilter = ro_autofilter. - ls_autofilters-sheet_guid = l_guid. - INSERT ls_autofilters INTO TABLE autofilters . - ENDIF. - endmethod. - - - method CLEAR. - - REFRESH autofilters. - - endmethod. - - - - - method GET. - - DATA: ls_autofilters TYPE ts_objects. - - READ TABLE autofilters INTO ls_autofilters WITH TABLE KEY sheet_guid = i_sheet_guid. - IF sy-subrc = 0. - ro_autofilter = ls_autofilters-autofilter. - ELSE. - CLEAR ro_autofilter. - ENDIF. - - endmethod. - - - - method IS_EMPTY. - IF autofilters IS INITIAL. - r_empty = abap_true. - ENDIF. - endmethod. - - - - method REMOVE. - DATA: ls_autofilters TYPE ts_objects. - - DELETE autofilters WHERE sheet_guid = i_sheet_guid. - - endmethod. - - - - method SIZE. - DESCRIBE TABLE autofilters LINES r_size. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - CLASS lcl_excel_common_test DEFINITION DEFERRED. -CLASS zcl_excel_common DEFINITION LOCAL FRIENDS lcl_excel_common_test. - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmless - . "#AU Duration Short -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>lcl_Excel_Common_Test -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL_COMMON -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE>X -*?</GENERATE_FIXTURE> -*?<GENERATE_CLASS_FIXTURE>X -*?</GENERATE_CLASS_FIXTURE> -*?<GENERATE_INVOCATION>X -*?</GENERATE_INVOCATION> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> - PRIVATE SECTION. -* ================ - DATA: - lx_excel TYPE REF TO zcx_excel, - ls_symsg_act TYPE symsg, " actual messageinformation of exception - ls_symsg_exp TYPE symsg, " expected messageinformation of exception - f_cut TYPE REF TO zcl_excel_common. "class under test - - CLASS-METHODS: class_setup. - CLASS-METHODS: class_teardown. - METHODS: setup. - METHODS: teardown. -* METHODS: char2hex FOR TESTING. - METHODS: convert_column2alpha FOR TESTING. - METHODS: convert_column2int FOR TESTING. - METHODS: date_to_excel_string FOR TESTING. - METHODS: encrypt_password FOR TESTING. - METHODS: excel_string_to_date FOR TESTING. - METHODS: excel_string_to_time FOR TESTING. -* METHODS: number_to_excel_string FOR TESTING. - METHODS: time_to_excel_string FOR TESTING. - METHODS: split_file FOR TESTING. - METHODS: convert_range2column_a_row FOR TESTING. - METHODS: describe_structure FOR TESTING. - METHODS: calculate_cell_distance FOR TESTING. - METHODS: shift_formula FOR TESTING. - METHODS: is_cell_in_range FOR TESTING. -ENDCLASS. "lcl_Excel_Common_Test - - -*----------------------------------------------------------------------* -* CLASS lcl_Excel_Common_Test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_excel_common_test IMPLEMENTATION. -* =========================================== - - METHOD class_setup. -* =================== - - - ENDMETHOD. "class_Setup - - - METHOD class_teardown. -* ====================== - - - ENDMETHOD. "class_Teardown - - - METHOD setup. -* ============= - - CREATE OBJECT f_cut. - ENDMETHOD. "setup - - - METHOD teardown. -* ================ - - - ENDMETHOD. "teardown - - - METHOD convert_column2alpha. -* ============================ - DATA ep_column TYPE zexcel_cell_column_alpha. - -* Test 1. Simple test - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 1 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column for OXML #16,384 = XFD - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16384 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'XFD' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 0 ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 'A' - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum index 0 is out of bounds, min column index is 1' - level = if_aunit_constants=>fatal - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2alpha( 16385 ). - - zcl_excel_common=>assert_differs( - act = ep_column - exp = 'XFE' - msg = 'Colum index 16385 is out of bounds, max column index is 16384' - level = if_aunit_constants=>fatal - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "convert_Column2alpha - - - METHOD convert_column2int. -* ========================== - DATA ep_column TYPE zexcel_cell_column. - -* Test 1. Basic test - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'A' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 1 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Max column - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFD' ). - - zcl_excel_common=>assert_equals( - act = ep_column - exp = 16384 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( '' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = '0' - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - CLEAR: ls_symsg_act, - ls_symsg_exp. - ls_symsg_exp-msgid = 'ZABAP2XLSX'. - ls_symsg_exp-msgno = '800'. - ls_symsg_act-msgid = lx_excel->syst_at_raise-msgid. - ls_symsg_act-msgno = lx_excel->syst_at_raise-msgno. - zcl_excel_common=>assert_equals( act = ls_symsg_act - exp = ls_symsg_exp - msg = 'Colum name should be a valid string' - level = if_aunit_constants=>fatal ). - ENDTRY. - -* Test 4. Out of bounds - TRY. - ep_column = zcl_excel_common=>convert_column2int( 'XFE' ). - - zcl_excel_common=>assert_differs( act = ep_column - exp = 16385 - msg = 'Wrong column conversion' - level = if_aunit_constants=>critical ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Colum XFE is out of range' - level = if_aunit_constants=>fatal ). - ENDTRY. - ENDMETHOD. "convert_Column2int - - - METHOD date_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000101' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 1 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000228' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 59 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '19000301' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 61 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>date_to_excel_string( '99991212' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = 2958446 - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - DATA: lv_date TYPE d. - ep_value = zcl_excel_common=>date_to_excel_string( lv_date ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - DATA exp_value TYPE zexcel_cell_value VALUE 0. - ep_value = zcl_excel_common=>date_to_excel_string( '18991231' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = exp_value - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Dates prior of 1900 are not available in excel' - level = if_aunit_constants=>critical - ). - ENDTRY. - - ENDMETHOD. "date_To_Excel_String - - - METHOD encrypt_password. -* ======================== - DATA lv_encrypted_pwd TYPE zexcel_aes_password. - - TRY. - lv_encrypted_pwd = zcl_excel_common=>encrypt_password( 'test' ). - - zcl_excel_common=>assert_equals( - act = lv_encrypted_pwd - exp = 'CBEB' - msg = 'Wrong password encryption' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - ENDMETHOD. "encrypt_Password - - - METHOD excel_string_to_date. -* ============================ - DATA ep_value TYPE d. - - -* Test 1. Simple test -> ABAP Manage also date prior of 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '18991231' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. -* Check around the "Excel Leap Year" 1900 - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '59' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000228' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '61' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000301' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '19000101' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Index 0 is out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958446' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Exception should be thrown index out of bounds - TRY. - ep_value = zcl_excel_common=>excel_string_to_date( '2958447' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '99991212' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '00000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>fatal - ). - - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Index out of bounds' - msg = 'Wrong exception is thrown' - level = if_aunit_constants=>tolerable - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Date - - - METHOD excel_string_to_time. -* ============================ - DATA ep_value TYPE t. - -* Test 1. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>tolerable - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Simple test - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '0.99999' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '235959' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. Also string greater than 1 should be managed - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( '4.1' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '022400' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 4. string is not a number - TRY. - ep_value = zcl_excel_common=>excel_string_to_time( 'NaN' ). - - zcl_excel_common=>assert_differs( - act = ep_value - exp = '000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>assert_equals( - act = lx_excel->error - exp = 'Unable to interpret time' - msg = 'Time should be a valid string' - level = if_aunit_constants=>fatal - ). - ENDTRY. - ENDMETHOD. "excel_String_To_Time - - - METHOD time_to_excel_string. -* ============================ - DATA ep_value TYPE zexcel_cell_value. - -* Test 1. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000001' ). - " A test directly in Excel returns the value 0.0000115740740740741000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.0000115740740741' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '235959' ). - " A test directly in Excel returns the value 0.9999884259259260000000 - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.9999884259259260' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 3. Initial date - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '000000' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - -* Test 2. Basic conversion - TRY. - ep_value = zcl_excel_common=>time_to_excel_string( '022400' ). - - zcl_excel_common=>assert_equals( - act = ep_value - exp = '0.1000000000000000' - msg = 'Wrong date conversion' - level = if_aunit_constants=>critical - ). - CATCH zcx_excel INTO lx_excel. - zcl_excel_common=>fail( - msg = 'unexpected exception' - level = if_aunit_constants=>critical " Error Severity - ). - ENDTRY. - - ENDMETHOD. "time_To_Excel_String - - METHOD split_file. -* ============================ - - DATA: ep_file TYPE text255, - ep_extension TYPE char10, - ep_dotextension TYPE char10. - - -* Test 1. Basic conversion - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename.xml' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = 'xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '.xml' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - -* Test 2. no extension - zcl_excel_common=>split_file( EXPORTING ip_file = 'filename' - IMPORTING ep_file = ep_file - ep_extension = ep_extension - ep_dotextension = ep_dotextension ). - - zcl_excel_common=>assert_equals( - act = ep_file - exp = 'filename' - msg = 'Split filename failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_extension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - zcl_excel_common=>assert_equals( - act = ep_dotextension - exp = '' - msg = 'Split extension failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "split_file - - METHOD convert_range2column_a_row. - DATA: lv_range TYPE string. - DATA: lv_column_start TYPE zexcel_cell_column_alpha, - lv_column_end TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row, - lv_sheet TYPE string. - -* a) input empty --> nothing to do - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 - lv_range = `'Sheet 1'!$B$6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet 1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 - lv_range = `Sheet1!B6:$D$13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = 'Sheet1' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). -* d) no sheetname - just area example $B$6:$D$13 - lv_range = `$B$6:D13`. - zcl_excel_common=>convert_range2column_a_row( - EXPORTING - i_range = lv_range - IMPORTING - e_column_start = lv_column_start " Cell Column Start - e_column_end = lv_column_end " Cell Column End - e_row_start = lv_row_start " Cell Row - e_row_end = lv_row_end " Cell Row - e_sheet = lv_sheet " Title - ). - - zcl_excel_common=>assert_equals( - act = lv_column_start - exp = 'B' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_column_end - exp = 'D' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_start - exp = '6' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_row_end - exp = '13' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - zcl_excel_common=>assert_equals( - act = lv_sheet - exp = '' - msg = 'Conversion of range failed' - level = if_aunit_constants=>critical ). - ENDMETHOD. "convert_range2column_a_row - - - METHOD describe_structure. - DATA: ls_test TYPE scarr. - DATA: lo_structdescr TYPE REF TO cl_abap_structdescr. - DATA: lt_structure TYPE ddfields. - FIELD-SYMBOLS: <line> LIKE LINE OF lt_structure. - - " Test with DDIC Type - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_test ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'MANDT' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - " Test with local defined structure having DDIC and non DDIC elements - TYPES: - BEGIN OF t_test, - carrid TYPE s_carr_id, - carrname TYPE s_carrname, - carrdesc TYPE string, - END OF t_test. - DATA: ls_ttest TYPE t_test. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data( p_data = ls_ttest ). - lt_structure = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - READ TABLE lt_structure ASSIGNING <line> INDEX 1. - zcl_excel_common=>assert_equals( - act = <line>-fieldname - exp = 'CARRID' - msg = 'Describe structure failed' - level = if_aunit_constants=>critical ). - - ENDMETHOD. "describe_structure - - - METHOD calculate_cell_distance. - DATA: lv_offset_rows TYPE i, - lv_offset_cols TYPE i, - lv_message TYPE string. - - DEFINE macro_calculate_cell_distance. - zcl_excel_common=>calculate_cell_distance( exporting iv_reference_cell = &1 - iv_current_cell = &2 - importing ev_row_difference = lv_offset_rows - ev_col_difference = lv_offset_cols ). -* Check delta columns - concatenate 'Error calculating column difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_cols - exp = &3 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). -* Check delta rows - concatenate 'Error calculating row difference in test:' - &1 - '->' - &2 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_offset_rows - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - END-OF-DEFINITION. - - - macro_calculate_cell_distance: - 'C12' 'C12' 0 0 , " Same cell - 'C12' 'C13' 0 1 , " Shift down 1 place - 'C12' 'C25' 0 13 , " Shift down some places - 'C12' 'C11' 0 -1 , " Shift up 1 place - 'C12' 'C1' 0 -11 , " Shift up some place - 'C12' 'D12' 1 0 , " Shift right 1 place - 'C12' 'AA12' 24 0 , " Shift right some places - 'C12' 'B12' -1 0 , " Shift left 1 place - 'AA12' 'C12' -24 0 , " Shift left some place - 'AA121' 'C12' -24 -109 . " The full package. - - ENDMETHOD. "CALCULATE_CELL_DISTANCE - - METHOD shift_formula. - DATA: lv_resulting_formula TYPE string, - lv_message TYPE string, - lv_counter TYPE num8. - - DEFINE macro_shift_formula. - add 1 to lv_counter. - clear lv_resulting_formula. - try. - lv_resulting_formula = zcl_excel_common=>shift_formula( iv_reference_formula = &1 - iv_shift_cols = &2 - iv_shift_rows = &3 ). - concatenate 'Wrong result in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - catch zcx_excel. - concatenate 'Unexpected exception occurred in test' - lv_counter - 'shifting formula ' - &1 - into lv_message separated by space. - zcl_excel_common=>assert_equals( act = lv_resulting_formula - exp = &4 - msg = lv_message - quit = 0 " continue tests - level = if_aunit_constants=>critical ). - endtry. - END-OF-DEFINITION. - -* Test shifts that should result in a valid output - macro_shift_formula: - 'C17' 0 0 'C17', " Very basic check - 'C17' 2 3 'E20', " Check shift right and down - 'C17' -2 -3 'A14', " Check shift left and up - '$C$17' 1 1 '$C$17', " Fixed columns/rows - 'SUM($C17:C$23)+C30' 1 11 'SUM($C28:D$23)+D41', " Operators and Ranges, mixed fixed rows or columns - 'RNGNAME1+C7' -1 -4 'RNGNAME1+B3', " Operators and Rangename - '"Date:"&TEXT(B2)' 1 1 '"Date:"&TEXT(C3)', " String literals and string concatenation - '[TEST6.XLSX]SHEET1!A1' 1 11 '[TEST6.XLSX]SHEET1!B12', " External sheet reference - `X(B13, "KK" ) ` 1 1 `X(C14,"KK")`, " superflous blanks, multi-argument functions, literals in function, unknown functions -* 'SIN((((((B2))))))' 1 1 'SIN((((((C3))))))', " Deep nesting -* 'SIN(SIN(SIN(SIN(E22))))' 0 1 'SIN(SIN(SIN(SIN(E23))))', " Different type of deep nesting - `SIN(SIN(SIN(SIN(E22))))` 0 1 'SIN(SIN(SIN(SIN(E23))))', " same as above - but with string input instead of Char-input - 'HEUTE()' 2 5 'HEUTE()', " Functions w/o arguments, No cellreferences - '"B2"' 2 5 '"B2"', " No cellreferences - '' 2 5 '', " Empty - 'A1+$A1+A$1+$A$1+B2' -1 0 '#REF!+$A1+#REF!+$A$1+A2', " Referencing error , column only , underflow - 'A1+$A1+A$1+$A$1+B2' 0 -1 '#REF!+#REF!+A$1+$A$1+B1', " Referencing error , row only , underflow - 'A1+$A1+A$1+$A$1+B2' -1 -1 '#REF!+#REF!+#REF!+$A$1+A1'. " Referencing error , row and column , underflow - ENDMETHOD. "SHIFT_FORMULA - - METHOD is_cell_in_range. - DATA ep_cell_in_range TYPE abap_bool. - -* Test 1: upper left corner (in range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'B' - ip_row = 2 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_true - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 2: lower right corner (in range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'D' - ip_row = 4 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_true - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 3: left side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'A' - ip_row = 3 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 4: upper side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'C' - ip_row = 1 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 5: right side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'E' - ip_row = 3 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - -* Test 6: lower side (out of range) - TRY. - ep_cell_in_range = zcl_excel_common=>is_cell_in_range( - ip_column = 'C' - ip_row = 5 - ip_range = 'B2:D4' ). - - zcl_excel_common=>assert_equals( - act = ep_cell_in_range - exp = abap_false - msg = 'Check cell in range failed' - level = if_aunit_constants=>critical ). - CATCH zcx_excel. - zcl_excel_common=>fail( - msg = 'Unexpected exception' - level = if_aunit_constants=>critical ). - ENDTRY. - ENDMETHOD. - -ENDCLASS. "lcl_Excel_Common_Test - - - - - - - - - - - - - - - - ABAP - - - - - - - - - - - - - - - - - - method ASSERT_DIFFERS. - DATA: ls_seoclass TYPE seoclass. - -" Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -" Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_differs - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -endmethod. - - - - - - - - - - - METHOD assert_equals. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>assert_equals - EXPORTING - exp = exp - act = act - msg = msg - level = level - tol = tol - quit = quit - ignore_hash_sequence = ignore_hash_sequence - RECEIVING - assertion_failed = assertion_failed. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. -ENDMETHOD. - - - - - - - - METHOD calculate_cell_distance. - - DATA: lv_reference_row TYPE i, - lv_reference_col_alpha TYPE zexcel_cell_column_alpha, - lv_reference_col TYPE i, - lv_current_row TYPE i, - lv_current_col_alpha TYPE zexcel_cell_column_alpha, - lv_current_col TYPE i. - -*--------------------------------------------------------------------* -* Split reference cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_reference_cell - IMPORTING - e_column = lv_reference_col_alpha - e_row = lv_reference_row ). - lv_reference_col = convert_column2int( lv_reference_col_alpha ). - -*--------------------------------------------------------------------* -* Split current cell into numerical row/column representation -*--------------------------------------------------------------------* - convert_columnrow2column_a_row( EXPORTING - i_columnrow = iv_current_cell - IMPORTING - e_column = lv_current_col_alpha - e_row = lv_current_row ). - lv_current_col = convert_column2int( lv_current_col_alpha ). - -*--------------------------------------------------------------------* -* Calculate row and column difference -* Positive: Current cell below reference cell -* or Current cell right of reference cell -* Negative: Current cell above reference cell -* or Current cell left of reference cell -*--------------------------------------------------------------------* - ev_row_difference = lv_current_row - lv_reference_row. - ev_col_difference = lv_current_col - lv_reference_col. - -ENDMETHOD. - - - - - method CHAR2HEX. - - IF o_conv IS NOT BOUND. - o_conv = cl_abap_conv_out_ce=>create( endian = 'L' - ignore_cerr = abap_true - replacement = '#' ). - ENDIF. - - CALL METHOD o_conv->reset( ). - CALL METHOD o_conv->write( data = i_char ). - r_hex+1 = o_conv->get_buffer( ). " x'65' must be x'0065' - -endmethod. - - - - - - METHOD convert_column2alpha. - - DATA: lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - -* Propagate zcx_excel if error occurs " issue #155 - less restrictive typing for ip_column - lv_column = convert_column2int( ip_column ). " issue #155 - less restrictive typing for ip_column - -*--------------------------------------------------------------------* -* Check whether column is in allowed range for EXCEL to handle ( 1-16384 ) -*--------------------------------------------------------------------* - IF lv_column > 16384 - OR lv_column < 1. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDIF. - -*--------------------------------------------------------------------* -* Build alpha representation of column -*--------------------------------------------------------------------* - WHILE lv_column GT 0. - - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - - ENDWHILE. - -ENDMETHOD. - - - - - - METHOD convert_column2int. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-29 -* - ... -* changes: renaming variables to naming conventions -* removing unused variables -* removing commented out code that is inactive for more then half a year -* message made to support multilinguality -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#246 - error converting lower case column names -* - Stefan Schmöcker, 2012-12-29 -* changes: translating the correct variable to upper dase -* adding missing exception if input is a number -* that is out of bounds -* adding missing exception if input contains -* illegal characters like german umlauts -*--------------------------------------------------------------------* - - DATA: lv_column TYPE zexcel_cell_column_alpha, - lv_column_c TYPE char10, - lv_column_s TYPE string, - lv_errormessage TYPE string, " Can't pass '...'(abc) to exception-class - lv_modulo TYPE i. - -*--------------------------------------------------------------------* -* This module tries to identify which column a user wants to access -* Numbers as input are just passed back, anything else will be converted -* using EXCEL nomenclatura A = 1, AA = 27, ..., XFD = 16384 -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Normalize input ( upper case , no gaps ) -*--------------------------------------------------------------------* - lv_column_c = ip_column. -* TRANSLATE lv_column TO UPPER CASE. " Fix #246 - TRANSLATE lv_column_c TO UPPER CASE. " Fix #246 - CONDENSE lv_column_c NO-GAPS. - IF lv_column_c EQ ''. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* If a number gets passed, just convert it to an integer and return -* the converted value -*--------------------------------------------------------------------* - TRY. - IF lv_column_c CO '1234567890 '. " Fix #164 - ep_column = lv_column_c. " Fix #164 -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - EXIT. - ENDIF. - CATCH cx_sy_conversion_no_number. "#EC NO_HANDLER - " Try the character-approach if approach via number has failed - ENDTRY. - -*--------------------------------------------------------------------* -* Raise error if unexpected characters turns up -*--------------------------------------------------------------------* - lv_column_s = lv_column_c. - IF lv_column_s CN sy-abcde. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - -*--------------------------------------------------------------------* -* Interpret input as number to base 26 with A=1, ... Z=26 -* Raise error if unexpected character turns up -*--------------------------------------------------------------------* -* 1st character -*--------------------------------------------------------------------* - lv_column = lv_column_c. - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+0(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = lv_modulo. " Leftmost digit - -*--------------------------------------------------------------------* -* 2nd character if present -*--------------------------------------------------------------------* - CHECK lv_column+1(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+1(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if second digit is present first digit is for 26^1 - -*--------------------------------------------------------------------* -* 3rd character if present -*--------------------------------------------------------------------* - CHECK lv_column+2(1) IS NOT INITIAL. " No need to continue if string ended - lv_modulo = cl_abap_conv_out_ce=>uccpi( lv_column+2(1) ) MOD zcl_excel_common=>c_excel_col_module. - IF lv_modulo < 1 OR lv_modulo > 26. -* lv_errormessage = 'Unable to interpret input as column'(003). -* RAISE EXCEPTION TYPE zcx_excel -* EXPORTING -* error = lv_errormessage. - MESSAGE e800(zabap2xlsx) INTO lv_errormessage. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - syst_at_raise = syst. - ENDIF. - ep_column = 26 * ep_column + lv_modulo. " if third digit is present first digit is for 26^2 and second digit for 26^1 - -*--------------------------------------------------------------------* -* Maximum column for EXCEL: XFD = 16384 " if anyone has a reference for this information - please add here instead of this comment -*--------------------------------------------------------------------* - IF ep_column > 16384 OR ep_column < 1. - lv_errormessage = 'Index out of bounds'(004). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -ENDMETHOD. - - - - - - method CONVERT_COLUMNROW2COLUMN_A_ROW. -*--------------------------------------------------------------------* - "issue #256 - replacing char processing with regex -*--------------------------------------------------------------------* -* Stefan Schmöcker, 2013-08-11 -* Allow input to be CLIKE instead of STRING -*--------------------------------------------------------------------* - - DATA: pane_cell_row_a TYPE string, - lv_columnrow type string. - - lv_columnrow = i_columnrow. " Get rid of trailing blanks - - FIND REGEX '^(\D+)(\d+)$' IN lv_columnrow SUBMATCHES e_column - pane_cell_row_a. - e_row = pane_cell_row_a. - -endmethod. - - - - - - - - - - method CONVERT_RANGE2COLUMN_A_ROW. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* added exceptionclass -* added errorhandling for invalid range -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#241 - error when sheetname contains "!" -* - sheetname should be returned unescaped -* - Stefan Schmöcker, 2012-12-07 -* changes: changed coding to support sheetnames with "!" -* unescaping sheetname -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-07 -* changes: i_range changed to clike -* e_sheet changed to clike -*--------------------------------------------------------------------* - - DATA: lv_sheet TYPE string, - lv_range TYPE string, - lv_columnrow_start TYPE string, - lv_columnrow_end TYPE string, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Split input range into sheetname and Area -* 4 cases - a) input empty --> nothing to do -* - b) sheetname existing - starts with ' example 'Sheet 1'!$B$6:$D$13 -* - c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13 -* - d) no sheetname - just area example $B$6:$D$13 -*--------------------------------------------------------------------* -* Initialize output parameters - CLEAR: e_column_start, - e_column_end, - e_row_start, - e_row_end, - e_sheet. - - IF i_range IS INITIAL. " a) input empty --> nothing to do - EXIT. - - ELSEIF i_range(1) = `'`. " b) sheetname existing - starts with ' - FIND REGEX '\![^\!]*$' IN i_range MATCH OFFSET sy-fdpos. " Find last ! - IF sy-subrc = 0. - lv_sheet = i_range(sy-fdpos). - ADD 1 TO sy-fdpos. - lv_range = i_range. - SHIFT lv_range LEFT BY sy-fdpos PLACES. - ELSE. - lv_errormessage = 'Invalid range'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ELSEIF i_range CS '!'. " c) sheetname existing - does not start with ' - SPLIT i_range AT '!' INTO lv_sheet lv_range. - - ELSE. " d) no sheetname - just area - lv_range = i_range. - ENDIF. - - REPLACE ALL OCCURRENCES OF '$' IN lv_range WITH ''. - SPLIT lv_range AT ':' INTO lv_columnrow_start lv_columnrow_end. - - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_start - IMPORTING - e_column = e_column_start - e_row = e_row_start ). - convert_columnrow2column_a_row( EXPORTING - i_columnrow = lv_columnrow_end - IMPORTING - e_column = e_column_end - e_row = e_row_end ). - - e_sheet = unescape_string( lv_sheet ). " Return in unescaped form -endmethod. - - - - - method DATE_TO_EXCEL_STRING. - DATA: lv_date_diff TYPE i. - - CHECK ip_value IS NOT INITIAL. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ip_value > c_excel_1900_leap_year. - lv_date_diff = ip_value - c_excel_baseline_date + 2. - ELSE. - lv_date_diff = ip_value - c_excel_baseline_date + 1. - ENDIF. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_date_diff ). -endmethod. - - - - - method DESCRIBE_STRUCTURE. - DATA: lt_components TYPE abap_component_tab, - lt_comps TYPE abap_component_tab, - lo_struct TYPE REF TO cl_abap_structdescr, - ls_component TYPE abap_componentdescr, - lo_elemdescr TYPE REF TO cl_abap_elemdescr, - ls_dfies TYPE dfies, - l_position TYPE tabfdpos. - - "for DDIC structure get the info directly - IF io_struct->is_ddic_type( ) = abap_true. - rt_dfies = io_struct->get_ddic_field_list( ). - ELSE. - lt_components = io_struct->get_components( ). - - LOOP AT lt_components INTO ls_component. - structure_case( EXPORTING is_component = ls_component - CHANGING xt_components = lt_comps ) . - ENDLOOP. - LOOP AT lt_comps INTO ls_component. - CLEAR ls_dfies. - IF ls_component-type->kind = cl_abap_typedescr=>kind_elem. "E Elementary Type - ADD 1 TO l_position. - lo_elemdescr ?= ls_component-type. - IF lo_elemdescr->is_ddic_type( ) = abap_true. - ls_dfies = lo_elemdescr->get_ddic_field( ). - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ELSE. - ls_dfies-fieldname = ls_component-name. - ls_dfies-position = l_position. - ls_dfies-inttype = lo_elemdescr->type_kind. - ls_dfies-leng = lo_elemdescr->length. - ls_dfies-outputlen = lo_elemdescr->length. - ls_dfies-decimals = lo_elemdescr->decimals. - ls_dfies-fieldtext = ls_component-name. - ls_dfies-reptext = ls_component-name. - ls_dfies-scrtext_s = ls_component-name. - ls_dfies-scrtext_m = ls_component-name. - ls_dfies-scrtext_l = ls_component-name. - ls_dfies-dynpfld = abap_true. - ENDIF. - INSERT ls_dfies INTO TABLE rt_dfies. - ENDIF. - ENDLOOP. - ENDIF. -endmethod. - - - - - - - - METHOD determine_resulting_formula. - - DATA: lv_row_difference TYPE i, - lv_col_difference TYPE i. - -*--------------------------------------------------------------------* -* Calculate distance of reference and current cell -*--------------------------------------------------------------------* - calculate_cell_distance( EXPORTING - iv_reference_cell = iv_reference_cell - iv_current_cell = iv_current_cell - IMPORTING - ev_row_difference = lv_row_difference - ev_col_difference = lv_col_difference ). - -*--------------------------------------------------------------------* -* and shift formula by using the row- and columndistance -*--------------------------------------------------------------------* - ev_resulting_formula = shift_formula( iv_reference_formula = iv_reference_formula - iv_shift_rows = lv_row_difference - iv_shift_cols = lv_col_difference ). - -ENDMETHOD. "determine_resulting_formula - - - - - method ENCRYPT_PASSWORD. - - DATA lv_curr_offset TYPE i. - DATA lv_curr_char TYPE c LENGTH 1. - DATA lv_curr_hex TYPE zexcel_pwd_hash. - DATA lv_pwd_len TYPE zexcel_pwd_hash. - DATA lv_pwd_hash TYPE zexcel_pwd_hash. - - CONSTANTS: - lv_0x7fff TYPE zexcel_pwd_hash VALUE '7FFF', - lv_0x0001 TYPE zexcel_pwd_hash VALUE '0001', - lv_0xce4b TYPE zexcel_pwd_hash VALUE 'CE4B'. - - DATA lv_pwd TYPE zexcel_aes_password. - - lv_pwd = i_pwd(15). - - lv_pwd_len = STRLEN( lv_pwd ). - lv_curr_offset = lv_pwd_len - 1. - - WHILE lv_curr_offset GE 0. - - lv_curr_char = lv_pwd+lv_curr_offset(1). - lv_curr_hex = char2hex( lv_curr_char ). - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex. - SUBTRACT 1 FROM lv_curr_offset. - ENDWHILE. - - lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b. - lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len. - - WRITE lv_pwd_hash TO r_encrypted_pwd. - -endmethod. - - - - - method ESCAPE_STRING. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-12-08 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#242 - Support escaping for white-spaces -* - Escaping also necessary when ' encountered in input -* - Stefan Schmöcker, 2012-12-08 -* changes: switched check if escaping is necessary to regular expression -* and moved the "REPLACE" -*--------------------------------------------------------------------* -* issue#155 - lessening restrictions of input parameters -* - Stefan Schmöcker, 2012-12-08 -* changes: ip_value changed to clike -*--------------------------------------------------------------------* - DATA: lv_value TYPE string. - -*--------------------------------------------------------------------* -* There exist various situations when a space will be used to separate -* different parts of a string. When we have a string consisting spaces -* that will cause errors unless we "escape" the string by putting ' at -* the beginning and at the end of the string. -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -* Now any remaining spaces ( white-spaces or normal spaces ) should -* trigger the escaping as well as any ' -*--------------------------------------------------------------------* - lv_value = ip_value. - - - FIND REGEX `\s|'` IN lv_value. " \s finds regular and white spaces - IF sy-subrc = 0. - REPLACE ALL OCCURRENCES OF `'` IN lv_value WITH `''`. - CONCATENATE `'` lv_value `'` INTO lv_value . - ENDIF. - - ep_escaped_value = lv_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_DATE. - DATA: lv_date_int TYPE i. - - TRY. - lv_date_int = ip_value. - ep_value = lv_date_int + c_excel_baseline_date - 2. - " Needed hack caused by the problem that: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year - " http://support.microsoft.com/kb/214326/en-us - IF ep_value < c_excel_1900_leap_year. - ep_value = ep_value + 1. - ENDIF. - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Index out of bounds'. - ENDTRY. -endmethod. - - - - - - method EXCEL_STRING_TO_NUMBER. - -* If we encounter anything more complicated in EXCEL we might have to extend this -* But currently this works fine - even for numbers in scientific notation - - ep_value = ip_value. - -endmethod. - - - - - - method EXCEL_STRING_TO_TIME. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_seconds_in_day TYPE i VALUE 86400. - - TRY. - - lv_day_fraction = ip_value. - lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day. - - ep_value = lv_seconds_in_day. - - CATCH cx_sy_conversion_error. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret time'. - ENDTRY. -endmethod. - - - - - - - method FAIL. - DATA: ls_seoclass TYPE seoclass. - - " Let see >=7.02 - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_ABAP_UNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. - " Let see >=7.00 or even lower - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_AUNIT_ASSERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>fail - EXPORTING - msg = msg - level = level - quit = quit - detail = detail. - ELSE. -* We do nothing for now not supported - ENDIF. - ENDIF. - -endmethod. - - - - - method GET_FIELDCATALOG. - DATA: lr_dref_tab TYPE REF TO data, - lo_salv_table TYPE REF TO cl_salv_table, - lo_salv_columns_table TYPE REF TO cl_salv_columns_table, - lt_salv_t_column_ref TYPE salv_t_column_ref, - ls_salv_t_column_ref LIKE LINE OF lt_salv_t_column_ref, - lo_salv_column_table TYPE REF TO cl_salv_column_table. - - FIELD-SYMBOLS: <tab> TYPE STANDARD TABLE. - FIELD-SYMBOLS: <fcat> LIKE LINE OF ep_fieldcatalog. - -* Get copy of IP_TABLE-structure <-- must be changeable to create salv - CREATE DATA lr_dref_tab LIKE ip_table. - ASSIGN lr_dref_tab->* TO <tab>. -* Create salv --> implicitly create fieldcat - TRY. - cl_salv_table=>factory( IMPORTING - r_salv_table = lo_salv_table - CHANGING - t_table = <tab> ). - lo_salv_columns_table = lo_salv_table->get_columns( ). - lt_salv_t_column_ref = lo_salv_columns_table->get( ). - CATCH cx_root. -* maybe some errorhandling here - just haven't made up my mind yet - ENDTRY. - -* Loop through columns and set relevant fields ( fieldname, texts ) - LOOP AT lt_salv_t_column_ref INTO ls_salv_t_column_ref. - - lo_salv_column_table ?= ls_salv_t_column_ref-r_column. - APPEND INITIAL LINE TO ep_fieldcatalog ASSIGNING <fcat>. - <fcat>-position = sy-tabix. - <fcat>-fieldname = ls_salv_t_column_ref-columnname. - <fcat>-scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ). - <fcat>-scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ). - <fcat>-scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ). - - <fcat>-dynpfld = 'X'. " What in the world would we exclude here? - IF <fcat>-position = 1. " except for the MANDT-field of most tables ( 1st column that is ) - IF lo_salv_column_table->get_ddic_datatype( ) = 'CLNT'. - CLEAR <fcat>-dynpfld. - ENDIF. - ENDIF. - -* For fields that don't a description ( i.e. defined by "field type i," ) -* just use the fieldname as description - that is better than nothing - IF <fcat>-scrtext_s IS INITIAL - AND <fcat>-scrtext_m IS INITIAL - AND <fcat>-scrtext_l IS INITIAL. - CONCATENATE 'Col:' <fcat>-fieldname INTO <fcat>-scrtext_l SEPARATED BY space. - <fcat>-scrtext_m = <fcat>-scrtext_l. - <fcat>-scrtext_s = <fcat>-scrtext_l. - ENDIF. - - ENDLOOP. - -endmethod. - - - - - - - - method IS_CELL_IN_RANGE. - DATA lv_column_start TYPE zexcel_cell_column_alpha. - DATA lv_column_end TYPE zexcel_cell_column_alpha. - DATA lv_row_start TYPE zexcel_cell_row. - DATA lv_row_end TYPE zexcel_cell_row. - DATA lv_column_start_i TYPE zexcel_cell_column. - DATA lv_column_end_i TYPE zexcel_cell_column. - DATA lv_column_i TYPE zexcel_cell_column. - - -* Split range and convert columns - convert_range2column_a_row( - exporting - i_range = ip_range - IMPORTING - e_column_start = lv_column_start - e_column_end = lv_column_end - e_row_start = lv_row_start - e_row_end = lv_row_end ). - - lv_column_start_i = convert_column2int( ip_column = lv_column_start ). - lv_column_end_i = convert_column2int( ip_column = lv_column_end ). - - lv_column_i = convert_column2int( ip_column = ip_column ). - -* Check if cell is in range - IF lv_column_i >= lv_column_start_i AND - lv_column_i <= lv_column_end_i AND - ip_row >= lv_row_start AND - ip_row <= lv_row_end. - rp_in_range = abap_true. - ENDIF. -endmethod. - - - - - method NUMBER_TO_EXCEL_STRING. - DATA: lv_value_c TYPE c LENGTH 100. - - WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN. - REPLACE ALL OCCURRENCES OF ',' IN lv_value_c WITH '.'. - - ep_value = lv_value_c. - CONDENSE ep_value. - - IF ip_value < 0. - CONCATENATE '-' ep_value INTO ep_value. - ELSEIF ip_value EQ 0. - ep_value = '0'. - ENDIF. -endmethod. - - - - - - method RECURSIVE_CLASS_TO_STRUCT. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any. - - - descr ?= cl_abap_structdescr=>describe_by_data( e_target ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_targetx TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CLEAR flag_class. -* maybe source is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'i_source->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0. - EXIT. - ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursio -* IF flag_class = abap_true. -** Only borders will be passed as unbound references. But since we want to set a value we have to create an instance -* ENDIF. - zcl_excel_common=>recursive_class_to_struct( EXPORTING i_source = <attribute> - CHANGING e_target = <field> - e_targetx = <fieldx> ). - WHEN OTHERS. - <field> = <attribute>. - <fieldx> = abap_true. - - ENDCASE. - ENDLOOP. - -endmethod. - - - - - - METHOD recursive_struct_to_class. - " # issue 139 -* is working for me - but after looking through this coding I guess -* I'll rewrite this to a version w/o recursion -* This is private an no one using it so far except me, so no need to hurry - DATA: descr TYPE REF TO cl_abap_structdescr, - wa_component LIKE LINE OF descr->components, - attribute_name TYPE fieldname, - flag_class TYPE flag, - o_border TYPE REF TO zcl_excel_style_border. - - FIELD-SYMBOLS: <field> TYPE any, - <fieldx> TYPE any, - <class> TYPE REF TO object, - <attribute> TYPE any, - <attribute_s> TYPE ANY TABLE. - - - descr ?= cl_abap_structdescr=>describe_by_data( i_source ). - - LOOP AT descr->components INTO wa_component. - -* Assign structure and X-structure - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_source TO <field>. - ASSIGN COMPONENT wa_component-name OF STRUCTURE i_sourcex TO <fieldx>. -* At least one field in the structure should be marked - otherwise continue with next field - CHECK <fieldx> CA abap_true. - CLEAR flag_class. -* maybe target is just a structure - try assign component... - ASSIGN COMPONENT wa_component-name OF STRUCTURE e_target TO <attribute>. - IF sy-subrc <> 0. -* not - then it is an attribute of the class - use different assign then - CONCATENATE 'E_TARGET->' wa_component-name INTO attribute_name. - ASSIGN (attribute_name) TO <attribute>. - IF sy-subrc <> 0.EXIT.ENDIF. " Should not happen if structure is built properly - otherwise just exit to create no dumps - flag_class = abap_true. - ENDIF. - - CASE wa_component-type_kind. - WHEN cl_abap_structdescr=>typekind_struct1 OR cl_abap_structdescr=>typekind_struct2. " Structure --> use recursion - " To avoid dump with attribute GRADTYPE of class ZCL_EXCEL_STYLE_FILL - " quick and really dirty fix -> check the attribute name - " Border has to be initialized somewhere else - IF wa_component-name EQ 'GRADTYPE'. - flag_class = abap_false. - ENDIF. - - IF flag_class = abap_true AND <attribute> IS INITIAL. -* Only borders will be passed as unbound references. But since we want to set a value we have to create an instance - CREATE OBJECT o_border. - <attribute> = o_border. - ENDIF. - zcl_excel_common=>recursive_struct_to_class( EXPORTING i_source = <field> - i_sourcex = <fieldx> - CHANGING e_target = <attribute> ). -* WHEN cl_abap_structdescr=>typekind_struct2. " String -* CHECK <fieldx> = abap_true. " Marked for change -* <attribute_s> = <field>. - WHEN OTHERS. - CHECK <fieldx> = abap_true. " Marked for change - <attribute> = <field>. - - ENDCASE. - ENDLOOP. - -ENDMETHOD. - - - - - - - - METHOD shift_formula. - - CONSTANTS: lcv_operators TYPE string VALUE '+-/*^%=<>&, !', - lcv_letters TYPE string VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$', - lcv_digits TYPE string VALUE '0123456789', - lcv_cell_reference_error TYPE string VALUE '#REF!'. - - DATA: lv_tcnt TYPE i, " Counter variable - lv_tlen TYPE i, " Temp variable length - lv_cnt TYPE i, " Counter variable - lv_cnt2 TYPE i, " Counter variable - lv_offset1 TYPE i, " Character offset - lv_numchars TYPE i, " Number of characters counter - lv_tchar(1) TYPE c, " Temp character - lv_tchar2(1) TYPE c, " Temp character - lv_cur_form(2000) TYPE c, " Formula for current cell - lv_ref_cell_addr TYPE string, " Reference cell address - lv_tcol1 TYPE string, " Temp column letter - lv_tcol2 TYPE string, " Temp column letter - lv_tcoln TYPE i, " Temp column number - lv_trow1 TYPE string, " Temp row number - lv_trow2 TYPE string, " Temp row number - lv_flen TYPE i, " Length of reference formula - lv_tlen2 TYPE i, " Temp variable length - lv_substr1 TYPE string, " Substring variable - lv_abscol TYPE string, " Absolute column symbol - lv_absrow TYPE string, " Absolute row symbol - - lv_errormessage TYPE string. - - FIELD-SYMBOLS: <find_my_include> TYPE ANY. - -*--------------------------------------------------------------------* -* When copying a cell in EXCEL to another cell any inherent formulas -* are copied as well. Cell-references in the formula are being adjusted -* by the distance of the new cell to the original one -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -* §2 Identify Cell-references -* §3 Shift cell-reference -* §4 Build resulting formula -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* No distance --> Reference = resulting cell/formula -*--------------------------------------------------------------------* - IF iv_shift_cols = 0 - AND iv_shift_rows = 0. - ev_resulting_formula = iv_reference_formula. - EXIT. " done - ENDIF. - - - lv_flen = STRLEN( iv_reference_formula ). - lv_numchars = 1. - -*--------------------------------------------------------------------* -* §1 Parse reference formula character by character -*--------------------------------------------------------------------* - DO lv_flen TIMES. - - CLEAR: lv_tchar, - lv_substr1, - lv_ref_cell_addr. - lv_cnt2 = lv_cnt + 1. - IF lv_cnt2 > lv_flen. - EXIT. " Done - ENDIF. - -*--------------------------------------------------------------------* -* Here we have the current character in the formula -*--------------------------------------------------------------------* - lv_tchar = iv_reference_formula+lv_cnt(1). - -*--------------------------------------------------------------------* -* Operators or opening parenthesis will separate possible cellreferences -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators - OR lv_tchar CA '(' ) - AND lv_cnt2 = 1. - lv_substr1 = iv_reference_formula+lv_offset1(1). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - -*--------------------------------------------------------------------* -* Quoted literal text holds no cell reference --> advance to end of text -*--------------------------------------------------------------------* - IF lv_tchar EQ '"'. - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - WHILE lv_tchar NE '"'. - - lv_cnt = lv_cnt + 1. - lv_numchars = lv_numchars + 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - - ENDWHILE. - lv_cnt2 = lv_cnt + 1. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - IF lv_cnt = lv_flen. - EXIT. - ENDIF. - lv_offset1 = lv_cnt. - lv_numchars = 1. - lv_tchar = iv_reference_formula+lv_cnt(1). - lv_cnt2 = lv_cnt + 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - -*--------------------------------------------------------------------* -* Operators or parenthesis or last character in formula will separate possible cellreferences -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA '():' - OR lv_cnt2 = lv_flen. - IF lv_cnt > 0. - lv_substr1 = iv_reference_formula+lv_offset1(lv_numchars). -*--------------------------------------------------------------------* -* Check for text concatenation and functions -*--------------------------------------------------------------------* - IF ( lv_tchar CA lcv_operators AND lv_tchar EQ lv_substr1 ) OR lv_tchar EQ '('. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ENDIF. - - lv_tlen = lv_cnt2 - lv_offset1. -*--------------------------------------------------------------------* -* Exclude mathematical operators and closing parentheses -*--------------------------------------------------------------------* - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - IF lv_cnt2 = lv_flen - AND lv_numchars = 1. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. " --> next character in formula can be analyzed - ELSE. - lv_tlen = lv_tlen - 1. - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -* Capture reference cell address -*--------------------------------------------------------------------* - TRY. - MOVE: iv_reference_formula+lv_offset1(lv_tlen) TO lv_ref_cell_addr. "Ref cell address - CATCH cx_root. - lv_errormessage = 'Internal error in Class ZCL_EXCEL_COMMON Method SHIFT_FORMULA Spot 1 '. " Change to messageclass if possible - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - -*--------------------------------------------------------------------* -* Split cell address into characters and numbers -*--------------------------------------------------------------------* - CLEAR: lv_tlen, - lv_tcnt, - lv_tcol1, - lv_trow1. - lv_tlen = STRLEN( lv_ref_cell_addr ). - IF lv_tlen <> 0. - CLEAR: lv_tcnt. - DO lv_tlen TIMES. - CLEAR: lv_tchar2. - lv_tchar2 = lv_ref_cell_addr+lv_tcnt(1). - IF lv_tchar2 CA lcv_letters. - CONCATENATE lv_tcol1 lv_tchar2 INTO lv_tcol1. - ELSEIF lv_tchar2 CA lcv_digits. - CONCATENATE lv_trow1 lv_tchar2 INTO lv_trow1. - ENDIF. - lv_tcnt = lv_tcnt + 1. - ENDDO. - ENDIF. -*--------------------------------------------------------------------* -* Check for invalid cell address -*--------------------------------------------------------------------* - IF lv_tcol1 IS INITIAL OR lv_trow1 IS INITIAL. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for range names -*--------------------------------------------------------------------* - CLEAR: lv_tlen. - lv_tlen = STRLEN( lv_tcol1 ). - IF lv_tlen GT 3. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for valid row -*--------------------------------------------------------------------* - IF lv_trow1 GT 1048576. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDIF. -*--------------------------------------------------------------------* -* Check for absolute column or row reference -*--------------------------------------------------------------------* - CLEAR: lv_tcol2, - lv_trow2, - lv_abscol, - lv_absrow. - lv_tlen2 = STRLEN( lv_tcol1 ) - 1. - IF lv_tcol1 IS NOT INITIAL. - lv_abscol = lv_tcol1(1). - ENDIF. - IF lv_tlen2 GE 0. - lv_absrow = lv_tcol1+lv_tlen2(1). - ENDIF. - IF lv_abscol EQ '$' AND lv_absrow EQ '$'. - lv_tlen2 = lv_tlen2 - 1. - IF lv_tlen2 > 0. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ENDIF. - lv_tlen2 = lv_tlen2 + 1. - ELSEIF lv_abscol EQ '$'. - lv_tcol1 = lv_tcol1+1(lv_tlen2). - ELSEIF lv_absrow EQ '$'. - lv_tcol1 = lv_tcol1(lv_tlen2). - ENDIF. -*--------------------------------------------------------------------* -* Check for valid column -*--------------------------------------------------------------------* - TRY. - lv_tcoln = zcl_excel_common=>convert_column2int( lv_tcol1 ) + iv_shift_cols. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. -*--------------------------------------------------------------------* -* Check whether there is a referencing problem -*--------------------------------------------------------------------* - lv_trow2 = lv_trow1 + iv_shift_rows. - IF ( lv_tcoln < 1 AND lv_abscol <> '$' ) " Maybe we should add here max-column and max row-tests as well. - OR ( lv_trow2 < 1 AND lv_absrow <> '$' ). " Check how EXCEL behaves in this case -*--------------------------------------------------------------------* -* Referencing problem encountered --> set error -*--------------------------------------------------------------------* - CONCATENATE lv_cur_form lcv_cell_reference_error INTO lv_cur_form. - ELSE. -*--------------------------------------------------------------------* -* No referencing problems --> adjust row and column -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* Adjust column -*--------------------------------------------------------------------* - IF lv_abscol EQ '$'. - CONCATENATE lv_cur_form lv_abscol lv_tcol1 INTO lv_cur_form. - ELSEIF iv_shift_cols EQ 0. - CONCATENATE lv_cur_form lv_tcol1 INTO lv_cur_form. - ELSE. - TRY. - lv_tcol2 = zcl_excel_common=>convert_column2alpha( lv_tcoln ). - CONCATENATE lv_cur_form lv_tcol2 INTO lv_cur_form. - CATCH zcx_excel. - CONCATENATE lv_cur_form lv_substr1 INTO lv_cur_form. - lv_cnt = lv_cnt + 1. - lv_offset1 = lv_cnt. - lv_cnt2 = lv_cnt + 1. - lv_numchars = 1. - CONTINUE. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* Adjust row -*--------------------------------------------------------------------* - IF lv_absrow EQ '$'. - CONCATENATE lv_cur_form lv_absrow lv_trow1 INTO lv_cur_form. - ELSEIF iv_shift_rows = 0. - CONCATENATE lv_cur_form lv_trow1 INTO lv_cur_form. -* elseif lv_trow2 < 1. -* CONCATENATE lv_cur_form lc_cell_reference_error INTO lv_cur_form. - ELSE. - CONCATENATE lv_cur_form lv_trow2 INTO lv_cur_form. - ENDIF. - ENDIF. - - lv_numchars = 0. - IF lv_tchar CA lcv_operators - OR lv_tchar CA ':)'. - CONCATENATE lv_cur_form lv_tchar INTO lv_cur_form. - ENDIF. - lv_offset1 = lv_cnt2. - ENDIF. - ENDIF. - lv_numchars = lv_numchars + 1. - lv_cnt = lv_cnt + 1. - lv_cnt2 = lv_cnt + 1. - - ENDDO. - - - -*--------------------------------------------------------------------* -* Return resulting formula -*--------------------------------------------------------------------* - IF lv_cur_form IS NOT INITIAL. - MOVE lv_cur_form TO ev_resulting_formula. - ENDIF. - -ENDMETHOD. - - - - - method SHL01. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i VALUE 2, - lv_prev_pos TYPE i VALUE 1. - - DO 15 TIMES. - GET BIT lv_curr_pos OF i_pwd_hash INTO lv_bit. - SET BIT lv_prev_pos OF r_pwd_hash TO lv_bit. - ADD 1 TO lv_curr_pos. - ADD 1 TO lv_prev_pos. - ENDDO. - SET BIT 16 OF r_pwd_hash TO 0. - -endmethod. - - - - - method SHR14. - - DATA: - lv_bit TYPE i, - lv_curr_pos TYPE i, - lv_next_pos TYPE i. - - r_pwd_hash = i_pwd_hash. - - DO 14 TIMES. - lv_curr_pos = 15. - lv_next_pos = 16. - - DO 15 TIMES. - GET BIT lv_curr_pos OF r_pwd_hash INTO lv_bit. - SET BIT lv_next_pos OF r_pwd_hash TO lv_bit. - SUBTRACT 1 FROM lv_curr_pos. - SUBTRACT 1 FROM lv_next_pos. - ENDDO. - SET BIT 1 OF r_pwd_hash TO 0. - ENDDO. - -endmethod. - - - - - - - method SPLIT_FILE. - - DATA: lt_hlp TYPE TABLE OF text255, - ls_hlp TYPE text255. - - DATA: lf_ext(10) TYPE c, - lf_dot_ext(10) TYPE c. - DATA: lf_str TYPE text255, - lf_anz TYPE i, - lf_len TYPE i. -** --------------------------------------------------------------------- - - CLEAR: lt_hlp, - ep_file, - ep_extension, - ep_dotextension. - -** Split the whole file at '.' - SPLIT ip_file AT '.' INTO TABLE lt_hlp. - -** get the extenstion from the last line of table - DESCRIBE TABLE lt_hlp LINES lf_anz. - IF lf_anz <= 1. - ep_file = ip_file. - EXIT. - ENDIF. - - READ TABLE lt_hlp INTO ls_hlp INDEX lf_anz. - ep_extension = ls_hlp. - lf_ext = ls_hlp. - IF NOT lf_ext IS INITIAL. - CONCATENATE '.' lf_ext INTO lf_dot_ext. - ENDIF. - ep_dotextension = lf_dot_ext. - -** get only the filename - lf_len = strlen( ip_file ) - strlen( lf_dot_ext ). - IF lf_len > 0. - ep_file = ip_file(lf_len). - ENDIF. - -endmethod. - - - - - method STRUCTURE_CASE. - DATA: lt_comp_str TYPE abap_component_tab. - - CASE is_component-type->kind. - WHEN cl_abap_typedescr=>kind_elem. "E Elementary Type - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_table. "T Table - INSERT is_component INTO TABLE xt_components. - WHEN cl_abap_typedescr=>kind_struct. "S Structure - lt_comp_str = structure_recursive( is_component = is_component ). - INSERT LINES OF lt_comp_str INTO TABLE xt_components. - WHEN OTHERS. "cl_abap_typedescr=>kind_ref or cl_abap_typedescr=>kind_class or cl_abap_typedescr=>kind_intf. -* We skip it. for now. - ENDCASE. -endmethod. - - - - - method STRUCTURE_RECURSIVE. - DATA: lo_struct TYPE REF TO cl_abap_structdescr, - lt_components TYPE abap_component_tab, - ls_components TYPE abap_componentdescr. - - REFRESH rt_components. - - lo_struct ?= is_component-type. - lt_components = lo_struct->get_components( ). - - LOOP AT lt_components INTO ls_components. - structure_case( EXPORTING is_component = ls_components - CHANGING xt_components = rt_components ) . - ENDLOOP. - -endmethod. - - - - - method TIME_TO_EXCEL_STRING. - DATA: lv_seconds_in_day TYPE i, - lv_day_fraction TYPE f, - lc_time_baseline TYPE t VALUE '000000', - lc_seconds_in_day TYPE i VALUE 86400. - - lv_seconds_in_day = ip_value - lc_time_baseline. - lv_day_fraction = lv_seconds_in_day / lc_seconds_in_day. - ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_day_fraction ). -endmethod. - - - - - - method UNESCAPE_STRING. - - CONSTANTS lcv_regex TYPE string VALUE `^'[^']` & `|` & " Beginning single ' OR - `[^']'$` & `|` & " Trailing single ' OR - `[^']'[^']`. " Single ' somewhere in between - - - DATA: lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - -*--------------------------------------------------------------------* -* This method is used to extract the "real" string from an escaped string. -* An escaped string can be identified by a beginning ' which must be -* accompanied by a trailing ' -* All '' in between beginning and trailing ' are treated as single ' -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* When allowing clike-input parameters we might encounter trailing -* "real" blanks . These are automatically eliminated when moving -* the input parameter to a string. -*--------------------------------------------------------------------* - ev_unescaped_string = iv_escaped. " Pass through if not escaped - - CHECK ev_unescaped_string IS NOT INITIAL. " Nothing to do if empty - CHECK ev_unescaped_string(1) = `'`. " Nothing to do if not escaped - -*--------------------------------------------------------------------* -* Remove leading and trailing ' -*--------------------------------------------------------------------* - REPLACE REGEX `^'(.*)'$` IN ev_unescaped_string WITH '$1'. - IF sy-subrc <> 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Any remaining single ' should not be here -*--------------------------------------------------------------------* - FIND REGEX lcv_regex IN ev_unescaped_string. - IF sy-subrc = 0. - lv_errormessage = 'Input not properly escaped - &'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Replace '' with ' -*--------------------------------------------------------------------* - REPLACE ALL OCCURRENCES OF `''` IN ev_unescaped_string WITH `'`. - - -endmethod. - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -TYPES: BEGIN OF ts_alv_types, - seoclass TYPE seoclsname, - clsname TYPE seoclsname, - END OF ts_alv_types, - tt_alv_types TYPE HASHED TABLE OF ts_alv_types WITH UNIQUE KEY seoclass. - -TYPES: BEGIN OF ts_sort_values, - fieldname TYPE fieldname, - row_int TYPE zexcel_cell_row, - value TYPE REF TO data, - new TYPE flag, - sort_level TYPE int4, - is_collapsed type flag, - END OF ts_sort_values, - - tt_sort_values TYPE HASHED TABLE OF ts_sort_values WITH UNIQUE KEY fieldname. -TYPES: BEGIN OF ts_subtotal_rows, - row_int TYPE zexcel_cell_row, - row_int_start TYPE zexcel_cell_row, - columnname TYPE fieldname, - END OF ts_subtotal_rows, - - tt_subtotal_rows TYPE HASHED TABLE OF ts_subtotal_rows WITH UNIQUE KEY row_int. - -TYPES: BEGIN OF ts_styles, - type TYPE char1, - alignment TYPE zexcel_alignment, - inttype TYPE inttype, - decimals TYPE int1, - style TYPE REF TO zcl_excel_style, - guid TYPE zexcel_cell_style, - END OF ts_styles, - - tt_styles TYPE HASHED TABLE OF ts_styles WITH UNIQUE KEY type alignment inttype decimals. - -TYPES: BEGIN OF ts_color_styles, - guid_old TYPE zexcel_cell_style, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - style_new TYPE REF TO zcl_excel_style, - END OF ts_color_styles, - - tt_color_styles TYPE HASHED TABLE OF ts_color_styles WITH UNIQUE KEY guid_old fontcolor fillcolor. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ASK_OPTION. - DATA: ls_sval TYPE sval, - lt_sval TYPE STANDARD TABLE OF sval, - l_returncode TYPE string, - lt_fields TYPE ddfields, - ls_fields TYPE dfies. - - FIELD-SYMBOLS: <fs> TYPE ANY. - - rs_option = ws_option. - - CALL FUNCTION 'DDIF_FIELDINFO_GET' - EXPORTING - tabname = 'ZEXCEL_S_CONVERTER_OPTION' -* FIELDNAME = ' ' -* LANGU = sy-langu -* LFIELDNAME = ' ' -* ALL_TYPES = ' ' -* GROUP_NAMES = ' ' -* UCLEN = -* IMPORTING -* X030L_WA = -* DDOBJTYPE = -* DFIES_WA = -* LINES_DESCR = - TABLES - dfies_tab = lt_fields -* FIXED_VALUES = - EXCEPTIONS - not_found = 1 - internal_error = 2 - OTHERS = 3 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - LOOP AT lt_fields INTO ls_fields. - ASSIGN COMPONENT ls_fields-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - CLEAR ls_sval. - ls_sval-tabname = ls_fields-tabname. - ls_sval-fieldname = ls_fields-fieldname. - ls_sval-value = <fs>. - ls_sval-field_attr = space. - ls_sval-field_obl = space. - ls_sval-comp_code = space. - ls_sval-fieldtext = ls_fields-scrtext_m. - ls_sval-comp_tab = space. - ls_sval-comp_field = space. - ls_sval-novaluehlp = space. - INSERT ls_sval INTO TABLE lt_sval. - ENDIF. - ENDLOOP. - - CALL FUNCTION 'POPUP_GET_VALUES' - EXPORTING -* NO_VALUE_CHECK = space - popup_title = 'Excel creation options'(008) -* START_COLUMN = '5' -* START_ROW = '5' - IMPORTING - returncode = l_returncode - TABLES - fields = lt_sval - EXCEPTIONS - error_in_fields = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ELSE. - IF l_returncode = 'A'. - RAISE EXCEPTION TYPE zcx_excel. - ELSE. - LOOP AT lt_sval INTO ls_sval. - ASSIGN COMPONENT ls_sval-fieldname OF STRUCTURE ws_option TO <fs>. - IF sy-subrc = 0. - <fs> = ls_sval-value. - ENDIF. - ENDLOOP. - set_option( is_option = ws_option ) . - rs_option = ws_option. - ENDIF. - ENDIF. - endmethod. - - - - - method BIND_CELLS. - -* Do we need subtotals with grouping - READ TABLE wt_fieldcatalog TRANSPORTING NO FIELDS WITH KEY is_subtotalled = abap_true. - IF sy-subrc = 0 . - r_freeze_col = loop_subtotal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ELSE. - r_freeze_col = loop_normal( i_row_int = w_row_int - i_col_int = w_col_int ) . - ENDIF. - - endmethod. - - - - - - method BIND_TABLE. - data: lt_field_catalog type zexcel_t_fieldcatalog, - ls_field_catalog type zexcel_s_fieldcatalog, - ls_fcat type zexcel_s_converter_fcat, - lo_col_dim type ref to zcl_excel_worksheet_columndime, - lo_row_dim type ref to zcl_excel_worksheet_rowdimensi, - l_col_int type zexcel_cell_column, - l_col_alpha type zexcel_cell_column_alpha, - ls_settings type zexcel_s_table_settings, - l_line type i. - - field-symbols: <fs_tab> type any table. - - assign wo_data->* to <fs_tab> . - - ls_settings-table_style = i_style_table. - ls_settings-top_left_column = zcl_excel_common=>convert_column2alpha( ip_column = w_col_int ). - ls_settings-top_left_row = w_row_int. - ls_settings-show_row_stripes = ws_layout-is_stripped. - - describe table wt_fieldcatalog lines l_line. - l_line = l_line + 1 + w_col_int. - ls_settings-bottom_right_column = zcl_excel_common=>convert_column2alpha( ip_column = l_line ). - - describe table <fs_tab> lines l_line. - ls_settings-bottom_right_row = l_line + 1 + w_row_int. - sort wt_fieldcatalog by position. - loop at wt_fieldcatalog into ls_fcat. - move-corresponding ls_fcat to ls_field_catalog. - ls_field_catalog-dynpfld = abap_true. - insert ls_field_catalog into table lt_field_catalog. - endloop. - - wo_worksheet->bind_table( - exporting - ip_table = <fs_tab> - it_field_catalog = lt_field_catalog - is_table_settings = ls_settings - importing - es_table_settings = ls_settings - ). - loop at wt_fieldcatalog into ls_fcat. - l_col_int = w_col_int + ls_fcat-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Freeze panes - if ls_fcat-fix_column = abap_true. - add 1 to r_freeze_col. - endif. -* Now let's check for optimized - if ls_fcat-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - endif. -* Now let's check for visible - if ls_fcat-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - endif. - endloop. - - endmethod. - - - method CLASS_CONSTRUCTOR. - DATA: ls_objects TYPE ts_alv_types. - DATA: ls_option TYPE zexcel_s_converter_option, - l_uname TYPE sy-uname. - - GET PARAMETER ID 'ZUS' FIELD l_uname. - IF l_uname IS INITIAL OR l_uname = space. - l_uname = sy-uname. - ENDIF. - -* Object CL_GUI_ALV_GRID - ls_objects-seoclass = 'CL_GUI_ALV_GRID'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_ALV_GRID'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_TABLE - ls_objects-seoclass = 'CL_SALV_TABLE'. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_SALV_TABLE'. - INSERT ls_objects INTO TABLE wt_objects. - -* Object CL_SALV_RESULT - ls_objects-seoclass = 'CL_SALV_EX_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_EX'. - INSERT ls_objects INTO TABLE wt_objects. -* Object CL_SALV_WD_RESULT - ls_objects-seoclass = 'CL_SALV_WD_RESULT_DATA_TABLE '. - ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_WD'. - INSERT ls_objects INTO TABLE wt_objects. - - CONCATENATE 'EXCEL_' sy-uname INTO ws_indx-srtfd. - - IMPORT p1 = ls_option FROM DATABASE indx(xl) TO ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = ls_option. - ELSE. - init_option( ) . - ENDIF. - - endmethod. - - - method CLEAN_FIELDCATALOG. - DATA: l_position TYPE int1. - - FIELD-SYMBOLS: <fs_sfcat> TYPE zexcel_s_converter_fcat. - - SORT wt_fieldcatalog BY position col_id. - - CLEAR l_position. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - ADD 1 TO l_position. - <fs_sfcat>-position = l_position. -* Default stype with alignment and format - <fs_sfcat>-style_hdr = get_style( i_type = c_type_hdr - i_alignment = <fs_sfcat>-alignment ). - IF ws_layout-is_stripped = abap_true. - <fs_sfcat>-style_stripped = get_style( i_type = c_type_str - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDIF. - <fs_sfcat>-style_normal = get_style( i_type = c_type_nor - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_subtotal = get_style( i_type = c_type_sub - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - <fs_sfcat>-style_total = get_style( i_type = c_type_tot - i_alignment = <fs_sfcat>-alignment - i_inttype = <fs_sfcat>-inttype - i_decimals = <fs_sfcat>-decimals ). - ENDLOOP. - - endmethod. - - - - - - - - - - - - - method CONVERT. - - IF is_option IS SUPPLIED. - ws_option = is_option. - ENDIF. - - TRY. - execute_converter( EXPORTING io_object = io_alv - it_table = it_table ) . - ENDTRY. - - IF io_worksheet IS SUPPLIED AND io_worksheet IS BOUND. - wo_worksheet = io_worksheet. - ENDIF. - IF co_excel IS SUPPLIED. - IF co_excel IS NOT BOUND. - CREATE OBJECT co_excel. - co_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - wo_excel = co_excel. - ENDIF. - -* Move table to data object and clean it up - IF wt_fieldcatalog IS NOT INITIAL. - create_table( ). - ELSE. - wo_data = wo_table . - ENDIF. - - IF wo_excel IS NOT BOUND. - CREATE OBJECT wo_excel. - wo_excel->zif_excel_book_properties~creator = sy-uname. - ENDIF. - IF wo_worksheet IS NOT BOUND. - " Get active sheet - wo_worksheet = wo_excel->get_active_worksheet( ). - wo_worksheet->set_title( ip_title = 'Sheet1'(001) ). - ENDIF. - - IF i_row_int <= 0. - w_row_int = 1. - ELSE. - w_row_int = i_row_int. - ENDIF. - IF i_column_int <= 0. - w_col_int = 1. - ELSE. - w_col_int = i_column_int. - ENDIF. - - create_worksheet( i_table = i_table - i_style_table = i_style_table ) . - - endmethod. - - - - - - method CREATE_COLOR_STYLE. - DATA: ls_styles TYPE ts_styles. - DATA: lo_style TYPE REF TO zcl_excel_style. - - READ TABLE wt_styles INTO ls_styles WITH KEY guid = i_style. - IF sy-subrc = 0. - lo_style = wo_excel->add_new_style( ). -* lo_style->borders = ls_styles-style->borders. -* lo_style->protection = ls_styles-style->protection. - lo_style->font->bold = ls_styles-style->font->bold. - lo_style->alignment->horizontal = ls_styles-style->alignment->horizontal. - lo_style->number_format->format_code = ls_styles-style->number_format->format_code. - - lo_style->font->color-rgb = is_colors-fontcolor. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = is_colors-fillcolor. - - ro_style = lo_style. - ENDIF. - endmethod. - - - - - - - - method CREATE_FORMULAR_SUBTOTAL. - data: l_row_alpha_start type string, - l_row_alpha_end type string, - l_func_num type string. - - l_row_alpha_start = i_row_int_start. - l_row_alpha_end = i_row_int_end. - - l_func_num = get_function_number( i_totals_function = i_totals_function ). - concatenate 'SUBTOTAL(' l_func_num ',' i_column l_row_alpha_start ':' i_column l_row_alpha_end ')' into r_formula. - endmethod. - - - - - - - method CREATE_FORMULAR_TOTAL. - data: l_row_alpha type string, - l_row_e_alpha type string. - - l_row_alpha = w_row_int + 1. - l_row_e_alpha = i_row_int. - - concatenate i_totals_function '(' i_column l_row_alpha ':' i_column l_row_e_alpha ')' into r_formula. - endmethod. - - - - method CREATE_PATH. - DATA: l_sep TYPE c , - l_path TYPE string, - l_return TYPE i . - - CLEAR r_path. - - " Save the file - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING - sapworkdir = l_path - EXCEPTIONS - get_sapworkdir_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - ). - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - CONCATENATE 'Excel_' w_fcount '.xlsx' INTO r_path. - ELSE. - DO. - ADD 1 TO w_fcount. -*-obtain file separator character--------------------------------------- - CALL METHOD cl_gui_frontend_services=>get_file_separator - CHANGING - file_separator = l_sep - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4. - - IF sy-subrc <> 0. - l_sep = ''. - ENDIF. - - CONCATENATE l_path l_sep 'Excel_' w_fcount '.xlsx' INTO r_path. - - IF cl_gui_frontend_services=>file_exist( file = r_path ) = abap_true. - cl_gui_frontend_services=>file_delete( EXPORTING filename = r_path - CHANGING rc = l_return - EXCEPTIONS OTHERS = 1 ). - IF sy-subrc = 0 . - RETURN. - ENDIF. - ELSE. - RETURN. - ENDIF. - ENDDO. - ENDIF. - - endmethod. - - - - - method CREATE_STYLE_HDR. - data: lo_style type ref to zcl_excel_style. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - lo_style->font->color-rgb = zcl_excel_style_color=>c_white. - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FF4F81BD'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - ro_style = lo_style . - endmethod. - - - - - - - method CREATE_STYLE_NORMAL. - DATA: lo_style TYPE REF TO zcl_excel_style, - l_format TYPE zexcel_number_format. - - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - ENDIF. - IF l_format IS NOT INITIAL OR - ( i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL ) . - - lo_style = wo_excel->add_new_style( ). - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - - ro_style = lo_style . - - ENDIF. - endmethod. - - - - - - - method CREATE_STYLE_STRIPPED. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFDBE5F1'. - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - ro_style = lo_style. - - endmethod. - - - - - - - method CREATE_STYLE_SUBTOTAL. - data: lo_style type ref to zcl_excel_style. - data: l_format type zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - if i_alignment is supplied and i_alignment is not initial. - lo_style->alignment->horizontal = i_alignment. - endif. - if i_inttype is supplied and i_inttype is not initial. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - if l_format is not initial. - lo_style->number_format->format_code = l_format. - endif. - endif. - - ro_style = lo_style . - - endmethod. - - - - - - - method CREATE_STYLE_TOTAL. - DATA: lo_style TYPE REF TO zcl_excel_style. - DATA: l_format TYPE zexcel_number_format. - - lo_style = wo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - - CREATE OBJECT lo_style->borders->top. - lo_style->borders->top->border_style = zcl_excel_style_border=>c_border_thin. - lo_style->borders->top->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->right. - lo_style->borders->right->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->right->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->down. - lo_style->borders->down->border_style = zcl_excel_style_border=>c_border_double. - lo_style->borders->down->border_color-rgb = zcl_excel_style_color=>c_black. - - CREATE OBJECT lo_style->borders->left. - lo_style->borders->left->border_style = zcl_excel_style_border=>c_border_none. - lo_style->borders->left->border_color-rgb = zcl_excel_style_color=>c_black. - - IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL. - lo_style->alignment->horizontal = i_alignment. - ENDIF. - IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL. - l_format = set_cell_format( i_inttype = i_inttype - i_decimals = i_decimals ) . - IF l_format IS NOT INITIAL. - lo_style->number_format->format_code = l_format. - ENDIF. - ENDIF. - - ro_style = lo_style . - - endmethod. - - - method CREATE_TABLE. - TYPES: BEGIN OF ts_output, - fieldname TYPE fieldname, - function TYPE funcname, - END OF ts_output. - - DATA: lo_data TYPE REF TO data. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lt_fieldcatalog TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat, - <fs_stab> TYPE ANY, - <fs_ttab> TYPE STANDARD TABLE, - <fs> TYPE ANY, - <fs_table> TYPE STANDARD TABLE. - - SORT wt_fieldcatalog BY position. - ASSIGN wo_table->* TO <fs_table>. - - READ TABLE <fs_table> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc EQ 0 . - LOOP AT wt_fieldcatalog ASSIGNING <fs_scat>. - ASSIGN COMPONENT <fs_scat>-columnname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - ls_components-name = <fs_scat>-columnname. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - DELETE TABLE wt_fieldcatalog FROM <fs_scat>. - ENDTRY. - IF lo_addit IS BOUND. - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ENDIF. - ENDIF. - ENDLOOP. - IF lt_components_tab IS NOT INITIAL. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( P_COMPONENTS = lt_components_tab - P_STRICT = abap_false ). - CATCH cx_sy_struct_creation. - RETURN. " We can not do anything in this case. - ENDTRY. - - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA wo_data TYPE HANDLE lo_table. - CREATE DATA lo_data TYPE HANDLE lo_struc. - - ASSIGN wo_data->* TO <fs_ttab>. - ASSIGN lo_data->* TO <fs_stab>. - LOOP AT <fs_table> ASSIGNING <fs>. - CLEAR <fs_stab>. - MOVE-CORRESPONDING <fs> TO <fs_stab>. - APPEND <fs_stab> TO <fs_ttab>. - ENDLOOP. - ENDIF. - ENDIF. - - endmethod. - - - - - - METHOD create_text_subtotal. - DATA: l_string(256) TYPE c, - l_func TYPE string. - - CASE i_totals_function. - WHEN zcl_excel_table=>totals_function_sum. " Total - l_func = 'Total'(003). - WHEN zcl_excel_table=>totals_function_min. " Minimum - l_func = 'Minimum'(004). - WHEN zcl_excel_table=>totals_function_max. " Maximum - l_func = 'Maximum'(005). - WHEN zcl_excel_table=>totals_function_average. " Mean Value - l_func = 'Average'(006). - WHEN zcl_excel_table=>totals_function_count. " Count - l_func = 'Count'(007). - WHEN OTHERS. - CLEAR l_func. - ENDCASE. - - MOVE i_value TO l_string. - - CONCATENATE l_string l_func INTO r_text SEPARATED BY space. - -ENDMETHOD. - - - - - - method CREATE_WORKSHEET. - DATA: l_freeze_col TYPE i. - DATA: l_guid TYPE oltpguid16. - - IF wo_data IS BOUND AND wo_worksheet IS BOUND. - - wo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. " By default is on - - IF wt_fieldcatalog IS INITIAL. - set_fieldcatalog( ) . - ELSE. - clean_fieldcatalog( ) . - ENDIF. - - IF i_table = abap_true. - l_freeze_col = bind_table( i_style_table = i_style_table ) . - ELSE. -* Let's check for filter. - IF wt_filter IS NOT INITIAL. - wo_autofilter = wo_excel->add_new_autofilter( io_sheet = wo_worksheet ). - l_freeze_col = bind_cells( ) . - set_autofilter_area( ) . - ELSE. - l_freeze_col = bind_cells( ) . - ENDIF. - - ENDIF. - -* Check for freeze panes - IF ws_layout-is_fixed = abap_true. - IF l_freeze_col = 0. - l_freeze_col = w_col_int. - ENDIF. - wo_worksheet->freeze_panes( EXPORTING ip_num_columns = l_freeze_col - ip_num_rows = w_row_int ) . - ENDIF. - ENDIF. - - endmethod. - - - - - - method EXECUTE_CONVERTER. - DATA: lt_fieldcatalog TYPE zexcel_t_fieldcatalog, - ls_fieldcatalog TYPE zexcel_s_converter_fcat, - lo_if TYPE REF TO zif_excel_converter, - ls_types TYPE ts_alv_types, - lo_addit TYPE REF TO cl_abap_classdescr. - - IF io_object IS BOUND. - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_object_ref( io_object ). - CATCH cx_sy_move_cast_error. - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - ls_types-seoclass = lo_addit->get_relative_name( ). - READ TABLE wt_objects INTO ls_types WITH TABLE KEY seoclass = ls_types-seoclass. - IF sy-subrc = 0. - CREATE OBJECT lo_if TYPE (ls_types-clsname). - - TRY. - lo_if->create_fieldcatalog( - EXPORTING - is_option = ws_option - io_object = io_object - it_table = it_table - IMPORTING - es_layout = ws_layout - et_fieldcatalog = wt_fieldcatalog - eo_table = wo_table - et_colors = wt_colors - et_filter = wt_filter - ). - ENDTRY. -* data lines of highest level. - IF ws_layout-max_subtotal_level > 0. - ADD 1 TO ws_layout-max_subtotal_level. - ENDIF. - ELSE. - RAISE EXCEPTION TYPE zcx_excel. - ENDIF. - ELSE. - REFRESH wt_fieldcatalog. - GET REFERENCE OF it_table INTO wo_table. - ENDIF. - - endmethod. - - - - - - - method GET_COLOR_STYLE. - DATA: ls_colors TYPE zexcel_s_converter_col, - ls_color_styles TYPE ts_color_styles, - lo_style TYPE REF TO zcl_excel_style. - - r_style = i_style. " Default we change nothing - - IF wt_colors IS NOT INITIAL. -* Full line has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = space. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - r_style = lo_style->get_guid( ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - ENDIF. - ELSE. -* Only field has color - READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row - columnname = i_fieldname. - IF sy-subrc = 0. - READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style - fontcolor = ls_colors-fontcolor - fillcolor = ls_colors-fillcolor. - IF sy-subrc = 0. - r_style = ls_color_styles-style_new->get_guid( ). - ELSE. - lo_style = create_color_style( i_style = i_style - is_colors = ls_colors ) . - ls_color_styles-guid_old = i_style. - ls_color_styles-fontcolor = ls_colors-fontcolor. - ls_color_styles-fillcolor = ls_colors-fillcolor. - ls_color_styles-style_new = lo_style. - INSERT ls_color_styles INTO TABLE wt_color_styles. - r_style = ls_color_styles-style_new->get_guid( ). - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - ENDIF. - ELSE. - r_style = i_style. - ENDIF. - - endmethod. - - - - - - method GET_FILE. - data: lo_excel_writer type ref to zif_excel_writer, - lo_excel type ref to zcl_excel. - - data: ls_seoclass type seoclass. - - - if wo_excel is bound. - create object lo_excel_writer type zcl_excel_writer_2007. - e_file = lo_excel_writer->write_file( wo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = e_file - receiving - et_solix = et_file. - e_bytecount = xstrlen( e_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = e_file - importing - output_length = e_bytecount - tables - binary_tab = et_file. - endif. - endif. - - endmethod. - - - - - method GET_FUNCTION_NUMBER. -*Number Function -*1 AVERAGE -*2 COUNT -*3 COUNTA -*4 MAX -*5 MIN -*6 PRODUCT -*7 STDEV -*8 STDEVP -*9 SUM -*10 VAR -*11 VARP - - case i_totals_function. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_SUM. " Total - r_function_number = 9. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MIN. " Minimum - r_function_number = 5. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MAX. " Maximum - r_function_number = 4. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_AVERAGE. " Mean Value - r_function_number = 1. - when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_count. " Count - r_function_number = 2. - when others. - clear r_function_number. - endcase. - endmethod. - - - - method GET_OPTION. - - rs_option = ws_option. - - endmethod. - - - - - - - - method GET_STYLE. - DATA: ls_styles TYPE ts_styles, - lo_style TYPE REF TO zcl_excel_style. - - CLEAR r_style. - - READ TABLE wt_styles INTO ls_styles WITH TABLE KEY type = i_type - alignment = i_alignment - inttype = i_inttype - decimals = i_decimals. - IF sy-subrc = 0. - r_style = ls_styles-guid. - ELSE. - CASE i_type. - WHEN c_type_hdr. " Header - lo_style = create_style_hdr( i_alignment = i_alignment ). - WHEN c_type_str. "Stripped - lo_style = create_style_stripped( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_nor. "Normal - lo_style = create_style_normal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_sub. "Subtotals - lo_style = create_style_subtotal( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - WHEN c_type_tot. "Totals - lo_style = create_style_total( i_alignment = i_alignment - i_inttype = i_inttype - i_decimals = i_decimals ). - ENDCASE. - IF lo_style IS NOT INITIAL. - r_style = lo_style->get_guid( ). - ls_styles-type = i_type. - ls_styles-alignment = i_alignment. - ls_styles-inttype = i_inttype. - ls_styles-decimals = i_decimals. - ls_styles-guid = r_style. - ls_styles-style = lo_style. - INSERT ls_styles INTO TABLE wt_styles. - ENDIF. - ENDIF. - endmethod. - - - method INIT_OPTION. - - ws_option-filter = abap_true. - ws_option-hidenc = abap_true. - ws_option-subtot = abap_true. - - endmethod. - - - - - - - method LOOP_NORMAL. - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - -* It is better to loop column by column - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - -* Only if the Header is required create it. - IF ws_option-hidehd IS INITIAL. - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - ENDIF. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true . - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. -* Now let's check for total versus subtotal. - IF <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_total( i_row_int = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_total ). - ENDIF. - ENDLOOP. - endmethod. - - - - - - - method LOOP_SUBTOTAL. - - DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE 2, - l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - l_row_int_start TYPE zexcel_cell_row, - l_row_int_end TYPE zexcel_cell_row, - l_row_int TYPE zexcel_cell_row, - l_col_int TYPE zexcel_cell_column, - l_col_alpha TYPE zexcel_cell_column_alpha, - l_col_alpha_start TYPE zexcel_cell_column_alpha, - l_cell_value TYPE zexcel_cell_value, - l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - l_formula TYPE zexcel_cell_formula, - l_style TYPE zexcel_cell_style, - l_subtotalled TYPE flag, - l_text TYPE string, - ls_sort_values TYPE ts_sort_values, - ls_subtotal_rows TYPE ts_subtotal_rows, - l_sort_level TYPE int4, - l_hidden TYPE int4, - l_line TYPE i, - l_guid TYPE guid_22, - l_tabix TYPE sy-tabix, - l_cells TYPE i, - l_count TYPE i, - l_table_row TYPE i, - lt_fcat TYPE zexcel_t_converter_fcat. - - FIELD-SYMBOLS: <fs_stab> TYPE ANY, - <fs_tab> TYPE STANDARD TABLE, - <fs_sfcat> TYPE zexcel_s_converter_fcat, - <fs_fldval> TYPE ANY, - <fs_sortval> TYPE ANY, - <fs_sortv> TYPE ts_sort_values, - <fs_cell_value> TYPE zexcel_cell_value. - - ASSIGN wo_data->* TO <fs_tab> . - - REFRESH: wt_sort_values, - wt_subtotal_rows. - - DESCRIBE TABLE wt_fieldcatalog LINES l_cells. - DESCRIBE TABLE <fs_tab> LINES l_count. - l_cells = l_cells * l_count. - - READ TABLE <fs_tab> ASSIGNING <fs_stab> INDEX 1. - IF sy-subrc = 0. - l_row_int = i_row_int + 1. - lt_fcat = wt_fieldcatalog. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - ls_sort_values-fieldname = <fs_sfcat>-columnname. - ls_sort_values-row_int = l_row_int. - ls_sort_values-sort_level = <fs_sfcat>-sort_level. - ls_sort_values-is_collapsed = <fs_sfcat>-is_collapsed. - CREATE DATA ls_sort_values-value LIKE <fs_fldval>. - ASSIGN ls_sort_values-value->* TO <fs_sortval>. - <fs_sortval> = <fs_fldval>. - INSERT ls_sort_values INTO TABLE wt_sort_values. - ENDLOOP. - ENDIF. - l_row_int = i_row_int. -* Let's check if we need to hide a sort level. - DESCRIBE TABLE wt_sort_values LINES l_line. - IF l_line <= 1. - CLEAR l_hidden. - ELSE. - LOOP AT wt_sort_values INTO ls_sort_values WHERE is_collapsed = abap_false. - IF l_hidden < ls_sort_values-sort_level. - l_hidden = ls_sort_values-sort_level. - ENDIF. - ENDLOOP. - ENDIF. - ADD 1 TO l_hidden. " As this is the first level we show. -* First loop without formular only addtional rows with subtotal text. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - ADD 1 TO l_row_int. " 1 is for header row. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. - IF sy-subrc = 0. - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - IF <fs_sortval> <> <fs_fldval> OR <fs_sortv>-new = abap_true. -* First let's remmember the subtotal values as it has to appear later. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* Now let's write the subtotal line - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = <fs_sfcat>-sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's change the key - ADD 1 TO l_row_int. - <fs_sortval> = <fs_fldval>. - <fs_sortv>-new = abap_false. - l_line = <fs_sortv>-sort_level. - LOOP AT wt_sort_values ASSIGNING <fs_sortv> WHERE sort_level >= l_line. - <fs_sortv>-row_int = l_row_int. - ENDLOOP. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - ENDLOOP. - ADD 1 TO l_row_int. - l_row_int_start = l_row_int. - SORT lt_fcat BY sort_level DESCENDING. - LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true. - l_col_int = i_col_int + <fs_sfcat>-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - ASSIGN <fs_sortv>-value->* TO <fs_sortval>. - ls_subtotal_rows-row_int = l_row_int. - ls_subtotal_rows-row_int_start = <fs_sortv>-row_int. - ls_subtotal_rows-columnname = <fs_sfcat>-columnname. - INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows. -* First let's write the value as it has to appear. - l_cell_value = create_text_subtotal( i_value = <fs_sortval> - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - - l_sort_level = <fs_sfcat>-sort_level. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. - ADD 1 TO l_row_int. - ENDIF. - ENDLOOP. -* Let's write the Grand total - l_sort_level = 0. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) . -* lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . Not on grand total - - l_text = create_text_subtotal( i_value = 'Grand'(002) - i_totals_function = <fs_sfcat>-totals_function ). - - l_col_alpha_start = zcl_excel_common=>convert_column2alpha( i_col_int ). - wo_worksheet->set_cell( ip_column = l_col_alpha_start - ip_row = l_row_int - ip_value = l_text - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_subtotal ). - -* It is better to loop column by column second time around -* Second loop with formular and data. - LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>. - l_row_int = i_row_int. - l_col_int = i_col_int + <fs_sfcat>-position - 1. -* Freeze panes - IF <fs_sfcat>-fix_column = abap_true. - ADD 1 TO r_freeze_col. - ENDIF. - l_s_color = abap_true. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). - " First of all write column header - l_cell_value = <fs_sfcat>-scrtext_m. - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = l_cell_value - ip_abap_type = cl_abap_typedescr=>typekind_string - ip_style = <fs_sfcat>-style_hdr ). - ADD 1 TO l_row_int. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_table_row = sy-tabix. -* Now the cell values - ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - IF <fs_sfcat>-sort_level > l_hidden. - lo_row_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Let's set the row dimension values - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_outline_level( ip_outline_level = ws_layout-max_subtotal_level ) . - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim->set_visible( ip_visible = abap_false ) . - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . - ENDIF. -* Now let's write the cell values - IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_stripped ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - CLEAR l_s_color. - ELSE. - l_style = get_color_style( i_row = l_table_row - i_fieldname = <fs_sfcat>-columnname - i_style = <fs_sfcat>-style_normal ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_value = <fs_fldval> - ip_style = l_style ). - l_s_color = abap_true. - ENDIF. - READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row - columnname = <fs_sfcat>-columnname. - IF sy-subrc = 0. - wo_worksheet->get_cell( EXPORTING - ip_column = l_col_alpha - ip_row = l_row_int - IMPORTING - ep_value = l_cell_value ). - wo_autofilter->set_value( i_column = l_col_int - i_value = l_cell_value ). - ENDIF. - ADD 1 TO l_row_int. - ENDLOOP. -* Let's check for subtotal lines - DO. - READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - DO. - READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int. - IF sy-subrc = 0. - l_row_int_start = ls_subtotal_rows-row_int_start. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - IF <fs_sfcat>-is_collapsed = abap_true. - lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ). - lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ). - ENDIF. - ADD 1 TO l_row_int. - ELSE. - EXIT. - ENDIF. - ENDDO. - ELSE. - ADD 1 TO l_row_int. - ENDIF. - ELSE. - EXIT. - ENDIF. - ENDDO. -* Now let's check for Grand total - IF <fs_sfcat>-is_subtotalled = abap_false AND - <fs_sfcat>-totals_function IS NOT INITIAL. - l_row_int_start = i_row_int + 1. - l_row_int_end = l_row_int - 1. - - l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start - i_row_int_end = l_row_int_end - i_column = l_col_alpha - i_totals_function = <fs_sfcat>-totals_function ). - wo_worksheet->set_cell( ip_column = l_col_alpha - ip_row = l_row_int - ip_formula = l_formula - ip_style = <fs_sfcat>-style_subtotal ). - ENDIF. -* Now let's check for optimized - IF <fs_sfcat>-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - ENDIF. -* Now let's check for visible - IF <fs_sfcat>-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - ENDIF. - ENDLOOP. - - endmethod. - - - method OPEN_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string, - l_sep type c. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - - l_dir = create_path( ) . - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - cl_gui_frontend_services=>execute( - exporting - document = l_dir -* application = -* parameter = -* default_directory = -* maximized = -* minimized = -* synchronous = -* operation = 'OPEN' - exceptions - cntl_error = 1 - error_no_gui = 2 - bad_parameter = 3 - file_not_found = 4 - path_not_found = 5 - file_extension_unknown = 6 - error_execute_failed = 7 - synchronous_failed = 8 - not_supported_by_gui = 9 - ). - if sy-subrc <> 0. - message id sy-msgid type sy-msgty number sy-msgno - with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - endif. - - endif. - - - endmethod. - - - method SET_AUTOFILTER_AREA. - DATA: ls_area TYPE zexcel_s_autofilter_area, - l_lines TYPE i, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values. - -* Let's check for filter. - IF wo_autofilter IS BOUND. - ls_area-row_start = 1. - lt_values = wo_autofilter->get_values( ) . - SORT lt_values BY column ASCENDING. - DESCRIBE TABLE lt_values LINES l_lines. - READ TABLE lt_values INTO ls_values INDEX 1. - IF sy-subrc = 0. - ls_area-col_start = ls_values-column. - ENDIF. - READ TABLE lt_values INTO ls_values INDEX l_lines. - IF sy-subrc = 0. - ls_area-col_end = ls_values-column. - ENDIF. - wo_autofilter->set_filter_area( is_area = ls_area ) . - ENDIF. - - endmethod. - - - - - - method SET_CELL_FORMAT. - DATA: l_format TYPE zexcel_number_format. - - CLEAR r_format. - CASE i_inttype. - WHEN cl_abap_typedescr=>typekind_date. - r_format = wo_worksheet->get_default_excel_date_format( ). - WHEN cl_abap_typedescr=>typekind_time. - r_format = wo_worksheet->get_default_excel_time_format( ). - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - IF i_decimals > 0 . - l_format = '#,##0.'. - DO i_decimals TIMES. - CONCATENATE l_format '0' INTO l_format. - ENDDO. - r_format = l_format. - ENDIF. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - r_format = '#,##0'. - ENDCASE. - - endmethod. - - - method SET_FIELDCATALOG. - - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - ls_fieldcatalog TYPE zexcel_s_fieldcatalog. - DATA: ls_fcat TYPE zexcel_s_converter_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN wo_data->* TO <fs_tab> . - - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - LOOP AT lt_dfies INTO ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. - ls_fcat-columnname = ls_dfies-fieldname. - INSERT ls_fcat INTO TABLE wt_fieldcatalog. - ENDLOOP. - - clean_fieldcatalog( ). - - endmethod. - - - - method SET_OPTION. - - IF ws_indx-begdt IS INITIAL. - ws_indx-begdt = sy-datum. - ENDIF. - - ws_indx-aedat = sy-datum. - ws_indx-usera = sy-uname. - ws_indx-pgmid = sy-cprog. - - EXPORT p1 = is_option TO DATABASE indx(xl) FROM ws_indx ID ws_indx-srtfd. - - IF sy-subrc = 0. - ws_option = is_option. - ENDIF. - - endmethod. - - - - method WRITE_FILE. - data: l_bytecount type i, - lt_file type solix_tab, - l_dir type string. - - field-symbols: <fs_data> type any table. - - assign wo_data->* to <fs_data>. - -* catch zcx_excel . -*endtry. - if wo_excel is bound. - get_file( importing e_bytecount = l_bytecount - et_file = lt_file ) . - if i_path is initial. - l_dir = create_path( ) . - else. - l_dir = i_path. - endif. - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_dir - filetype = 'BIN' - changing data_tab = lt_file ). - endif. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature -TYPES: BEGIN OF ts_col_converter, - col TYPE lvc_col, - int TYPE lvc_int, - inv TYPE lvc_inv, - fontcolor TYPE zexcel_style_color_argb, - fillcolor TYPE zexcel_style_color_argb, - END OF ts_col_converter, - - tt_col_converter TYPE HASHED TABLE OF ts_col_converter WITH UNIQUE KEY col int inv. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - ABAP - KKBLO - - - - - - - - - - method APPLY_SORT. - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE, - <fs_sort> TYPE lvc_s_sort. - - CREATE DATA eo_table LIKE it_table. - ASSIGN eo_table->* TO <fs_table>. - - <fs_table> = it_table. - - SORT wt_sort BY spos. - LOOP AT wt_sort ASSIGNING <fs_sort>. - IF <fs_sort>-up = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_false. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - IF <fs_sort>-down = abap_true. - ls_otab-name = <fs_sort>-fieldname. - ls_otab-descending = abap_true. -* ls_otab-astext = abap_true. " not only text fields - INSERT ls_otab INTO TABLE lt_otab. - ENDIF. - ENDLOOP. - IF lt_otab IS NOT INITIAL. - SORT <fs_table> BY (lt_otab). - ENDIF. - - endmethod. - - - method CLASS_CONSTRUCTOR. -* let's fill the color conversion routines. - DATA: ls_color TYPE ts_col_converter. -* 0 all combination the same - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 0. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Blue - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFB0E4FC'. " 176 228 252 blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFB0E4FC'. " 176 228 252 blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF5FCBFE'. " 095 203 254 Int blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 1. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF5FCBFE'. " 095 203 254 - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 - INSERT ls_color INTO TABLE wt_colors. - -* Gray - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. - ls_color-fillcolor = 'FFE5EAF0'. " 229 234 240 gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFE5EAF0'. " 229 234 240 gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFD8E8F4'. " 216 234 244 int gray - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 2. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFD8E8F4'. " 216 234 244 int gray - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -*Yellow - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFEFEB8'. " 254 254 184 yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFEFEB8'. " 254 254 184 yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFF9ED5D'. " 249 237 093 int yellow - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 3. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFF9ED5D'. " 249 237 093 int yellow - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* light blue - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEE7FB'. " 206 231 251 light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEE7FB'. " 206 231 251 light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF9ACCEF'. " 154 204 239 int light blue - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 4. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF9ACCEF'. " 154 204 239 int light blue - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Green - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFCEF8AE'. " 206 248 174 Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFCEF8AE'. " 206 248 174 Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FF7AC769'. " 122 199 105 int Green - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 5. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FF7AC769'. " 122 199 105 int Green - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - -* Red - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFDBBBC'. " 253 187 188 Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 0. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFDBBBC'. " 253 187 188 Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 0. - ls_color-fontcolor = 'FF000000'. " 000 000 000 Black - ls_color-fillcolor = 'FFFB6B6B'. " 251 107 107 int Red - INSERT ls_color INTO TABLE wt_colors. - - ls_color-col = 6. - ls_color-int = 1. - ls_color-inv = 1. - ls_color-fontcolor = 'FFFB6B6B'. " 251 107 107 int Red - ls_color-fillcolor = 'FFFFFFFF'. " 255 255 255 White - INSERT ls_color INTO TABLE wt_colors. - - endmethod. - - - - - method GET_COLOR. - DATA: ls_con_col TYPE zexcel_s_converter_col, - ls_color TYPE ts_col_converter, - l_line TYPE i, - l_color(4) TYPE c. - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_stab> TYPE ANY, - <fs> TYPE ANY, - <fs_tcol> TYPE lvc_t_scol, - <fs_scol> TYPE lvc_s_scol. - -* Loop trough the table to set the color properties of each line. The color properties field is -* Char 4 and the characters is set as follows: -* Char 1 = C = This is a color property -* Char 2 = 6 = Color code (1 - 7) -* Char 3 = Intensified on/of = 1 = on -* Char 4 = Inverse display = 0 = of - - ASSIGN io_table->* TO <fs_tab>. - - IF ws_layo-info_fname IS NOT INITIAL OR - ws_layo-ctab_fname IS NOT INITIAL. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - IF ws_layo-info_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-info_fname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF <fs> IS NOT INITIAL. - l_color = <fs>. - IF l_color(1) = 'C'. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = l_color+1(1) - int = l_color+2(1) - inv = l_color+3(1). - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = space. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - ENDIF. - IF ws_layo-ctab_fname IS NOT INITIAL. - ASSIGN COMPONENT ws_layo-ctab_fname OF STRUCTURE <fs_stab> TO <fs_tcol>. - IF sy-subrc = 0. - LOOP AT <fs_tcol> ASSIGNING <fs_scol>. - READ TABLE wt_colors INTO ls_color WITH TABLE KEY col = <fs_scol>-color-col - int = <fs_scol>-color-int - inv = <fs_scol>-color-inv. - IF sy-subrc = 0. - ls_con_col-rownumber = l_line. - ls_con_col-columnname = <fs_scol>-fname. - ls_con_col-fontcolor = ls_color-fontcolor. - ls_con_col-fillcolor = ls_color-fillcolor. - ls_con_col-nokeycol = <fs_scol>-nokeycol. - INSERT ls_con_col INTO TABLE et_colors. - ENDIF. - ENDLOOP. - ENDIF. - ENDIF. - ENDLOOP. - ENDIF. - endmethod. - - - - - METHOD get_filter. - DATA: ls_filt TYPE lvc_s_filt, - l_line TYPE i, - ls_filter TYPE zexcel_s_converter_fil. - DATA: lo_addit TYPE REF TO cl_abap_elemdescr, - lt_components_tab TYPE cl_abap_structdescr=>component_table, - ls_components TYPE abap_componentdescr, - lo_table TYPE REF TO cl_abap_tabledescr, - lo_struc TYPE REF TO cl_abap_structdescr, - lo_trange TYPE REF TO data, - lo_srange TYPE REF TO data, - lo_ltabdata TYPE REF TO data. - - FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, - <fs_ltab> TYPE STANDARD TABLE, - <fs_stab> TYPE any, - <fs> TYPE any, - <fs1> TYPE any, - <fs_srange> TYPE any, - <fs_trange> TYPE STANDARD TABLE. - - IF ws_option-filter = abap_false. - REFRESH et_filter. - RETURN. - ENDIF. - - ASSIGN xo_table->* TO <fs_tab>. - - CREATE DATA lo_ltabdata LIKE <fs_tab>. - ASSIGN lo_ltabdata->* TO <fs_ltab>. - - LOOP AT wt_filt INTO ls_filt. - LOOP AT <fs_tab> ASSIGNING <fs_stab>. - l_line = sy-tabix. - ASSIGN COMPONENT ls_filt-fieldname OF STRUCTURE <fs_stab> TO <fs>. - IF sy-subrc = 0. - IF l_line = 1. - REFRESH lt_components_tab. - ls_components-name = 'SIGN'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-sign ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'OPTION'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ls_filt-option ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'LOW'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - ls_components-name = 'HIGH'. - lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ). - ls_components-type = lo_addit . - INSERT ls_components INTO TABLE lt_components_tab. - "create new line type - TRY. - lo_struc = cl_abap_structdescr=>create( p_components = lt_components_tab - p_strict = abap_false ). - CATCH cx_sy_struct_creation. - CONTINUE. - ENDTRY. - lo_table = cl_abap_tabledescr=>create( lo_struc ). - - CREATE DATA lo_trange TYPE HANDLE lo_table. - CREATE DATA lo_srange TYPE HANDLE lo_struc. - - ASSIGN lo_trange->* TO <fs_trange>. - ASSIGN lo_srange->* TO <fs_srange>. - ENDIF. - REFRESH <fs_trange>. - ASSIGN COMPONENT 'SIGN' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-sign. - ASSIGN COMPONENT 'OPTION' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-option. - ASSIGN COMPONENT 'LOW' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-low. - ASSIGN COMPONENT 'HIGH' OF STRUCTURE <fs_srange> TO <fs1>. - <fs1> = ls_filt-high. - INSERT <fs_srange> INTO TABLE <fs_trange>. - IF <fs> IN <fs_trange>. - IF ws_option-filter = abap_true. - ls_filter-rownumber = l_line. - ls_filter-columnname = ls_filt-fieldname. - INSERT ls_filter INTO TABLE et_filter. - ELSE. - INSERT <fs_stab> INTO TABLE <fs_ltab>. - ENDIF. - ENDIF. - ENDIF. - ENDLOOP. - IF ws_option-filter = abap_undefined. - <fs_tab> = <fs_ltab>. - REFRESH <fs_ltab>. - ENDIF. - ENDLOOP. - -ENDMETHOD. - - - - - method UPDATE_CATALOG. - DATA: ls_fieldcatalog TYPE zexcel_s_converter_fcat, - ls_ref TYPE salv_s_ddic_reference, - ls_fcat TYPE lvc_s_fcat, - ls_sort TYPE lvc_s_sort, - l_decimals TYPE lvc_decmls. - - FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat. - - IF ws_layo-zebra IS NOT INITIAL. - cs_layout-is_stripped = abap_true. - ENDIF. - IF ws_layo-no_keyfix IS INITIAL OR - ws_layo-no_keyfix = '0'. - cs_layout-is_fixed = abap_true. - ENDIF. - - LOOP AT wt_fcat INTO ls_fcat. - CLEAR: ls_fieldcatalog, - l_decimals. - CASE ws_option-hidenc. - WHEN abap_false. " We make hiden columns visible - CLEAR ls_fcat-no_out. - WHEN abap_true. -* We convert column and hide it. - WHEN abap_undefined. "We don't convert hiden columns - IF ls_fcat-no_out = abap_true. - ls_fcat-tech = abap_true. - ENDIF. - ENDCASE. - IF ls_fcat-tech = abap_false. - ls_fieldcatalog-tabname = ls_fcat-tabname. - ls_fieldcatalog-fieldname = ls_fcat-fieldname . - ls_fieldcatalog-columnname = ls_fcat-fieldname . - ls_fieldcatalog-position = ls_fcat-col_pos. - ls_fieldcatalog-col_id = ls_fcat-col_id. - ls_fieldcatalog-convexit = ls_fcat-convexit. - ls_fieldcatalog-inttype = ls_fcat-inttype. - ls_fieldcatalog-scrtext_s = ls_fcat-scrtext_s . - ls_fieldcatalog-scrtext_m = ls_fcat-scrtext_m . - ls_fieldcatalog-scrtext_l = ls_fcat-scrtext_l. - l_decimals = ls_fcat-decimals_o. - IF l_decimals IS NOT INITIAL. - ls_fieldcatalog-decimals = l_decimals. - ELSE. - ls_fieldcatalog-decimals = ls_fcat-decimals . - ENDIF. - CASE ws_option-subtot. - WHEN abap_false. " We ignore subtotals - CLEAR ls_fcat-do_sum. - WHEN abap_true. " We convert subtotals and detail - - WHEN abap_undefined. " We should only take subtotals and displayed detail -* for now abap_true - ENDCASE. - CASE ls_fcat-do_sum. - WHEN abap_true. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. - WHEN 'A'. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_min. - WHEN 'B' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_max. - WHEN 'C' . - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_average. - WHEN OTHERS. - CLEAR ls_fieldcatalog-totals_function . - ENDCASE. - ls_fieldcatalog-fix_column = ls_fcat-fix_column. - IF ws_layo-cwidth_opt IS INITIAL. - IF ls_fcat-col_opt IS NOT INITIAL. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - ELSE. - ls_fieldcatalog-is_optimized = abap_true. - ENDIF. - IF ls_fcat-no_out IS NOT INITIAL. - ls_fieldcatalog-is_hidden = abap_true. - ls_fieldcatalog-position = ls_fieldcatalog-col_id. " We hide based on orginal data structure - ENDIF. -* Alignment in each cell - CASE ls_fcat-just. - WHEN 'R'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_right. - WHEN 'L'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_left. - WHEN 'C'. - ls_fieldcatalog-alignment = zcl_excel_style_alignment=>c_horizontal_center. - WHEN OTHERS. - CLEAR ls_fieldcatalog-alignment. - ENDCASE. -* Check for subtotals. - READ TABLE wt_sort INTO ls_sort WITH KEY fieldname = ls_fcat-fieldname. - IF sy-subrc = 0 AND ws_option-subtot <> abap_false. - ls_fieldcatalog-sort_level = 0 . -* IF ls_fieldcatalog-totals_function IS INITIAL. " Not clear why not -* CLEAR ls_fieldcatalog-is_subtotalled. -* ELSE. - ls_fieldcatalog-is_subtotalled = ls_sort-subtot. -* ENDIF. - ls_fieldcatalog-is_collapsed = ls_sort-expa. - IF ls_fieldcatalog-is_subtotalled = abap_true. - ls_fieldcatalog-sort_level = ls_sort-spos. - ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. " we need function for text - ENDIF. - ENDIF. - APPEND ls_fieldcatalog TO ct_fieldcatalog. - ENDIF. - ENDLOOP. - - SORT ct_fieldcatalog BY sort_level ASCENDING. - cs_layout-max_subtotal_level = 0. - LOOP AT ct_fieldcatalog ASSIGNING <fs_scat> WHERE sort_level > 0. - cs_layout-max_subtotal_level = cs_layout-max_subtotal_level + 1. - <fs_scat>-sort_level = cs_layout-max_subtotal_level. - ENDLOOP. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - data: lo_alv type REF TO cl_gui_alv_grid. - - try. - lo_alv ?= io_object. - catch cx_sy_move_cast_error . - raise exception type zcx_excel. - endtry. - -endmethod. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_alv TYPE REF TO cl_gui_alv_grid. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_alv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_alv IS BOUND. - lo_alv->get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ). - lo_alv->get_frontend_layout( IMPORTING es_layout = ws_layo ). - lo_alv->get_sort_criteria( IMPORTING et_sort = wt_sort ) . - lo_alv->get_filter_criteria( IMPORTING et_filter = wt_filt ) . - - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method GET_TABLE. - DATA: lo_object TYPE REF TO object, - ls_seoclass TYPE seoclass, - l_method TYPE string. - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'IF_SALV_BS_DATA_SOURCE'. - - IF sy-subrc = 0. - l_method = 'GET_TABLE_REF'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ELSE. - l_method = 'GET_REF_TO_TABLE'. - lo_object ?= io_object. - CALL METHOD lo_object->(l_method) - RECEIVING - value = ro_data. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table, - lo_ex_cm TYPE REF TO cl_salv_ex_cm, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - lo_ex_cm ?= lo_result->r_model->r_model. - ws_layo = lo_ex_cm->s_layo. -* T_DRDN Instance Attribute Public Type LVC_T_DROP - wt_fcat = lo_ex_cm->t_fcat. - wt_filt = lo_ex_cm->t_filt. -* T_HYPE Instance Attribute Public Type LVC_T_HYPE -* T_SELECTED_CELLS Instance Attribute Public Type LVC_T_CELL -* T_SELECTED_COLUMNS Instance Attribute Public Type LVC_T_COL - wt_sort = lo_ex_cm->t_sort. - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - else. -* We have a problem and should stop here. - ENDIF. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT. - - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table. - - TRY. - lo_result ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table, - lo_data TYPE REF TO data. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_result ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog. - - IF lo_result IS BOUND. - lo_data = get_table( io_object = lo_result->r_model->r_data ). - IF lo_data IS BOUND. - ASSIGN lo_data->* TO <fs_table> . - - wo_config ?= lo_result->r_model->r_model. - - IF wo_config IS BOUND. - wt_fields = wo_config->if_salv_wd_field_settings~get_fields( ) . - wt_columns = wo_config->if_salv_wd_column_settings~get_columns( ) . - ENDIF. - - create_wt_fcat( io_table = lo_data ). - create_wt_sort( ). - create_wt_filt( ). - - apply_sort( EXPORTING it_table = <fs_table> - IMPORTING eo_table = eo_table ) . - -* get_color( EXPORTING io_table = eo_table -* IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ELSE. -* We have a problem and should stop here - ENDIF. - ENDIF. -ENDMETHOD. - - - - method CREATE_WT_FCAT. - DATA: lr_data TYPE REF TO data, - lo_structdescr TYPE REF TO cl_abap_structdescr, - lt_dfies TYPE ddfields, - ls_dfies TYPE dfies, - lv_sytabix TYPE sytabix. - - DATA: ls_fcat TYPE lvc_s_fcat. - - FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE. - - ASSIGN io_table->* TO <fs_tab> . - CREATE DATA lr_data LIKE LINE OF <fs_tab>. - - lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ). - - lt_dfies = zcl_excel_common=>describe_structure( io_struct = lo_structdescr ). - - loop at lt_dfies into ls_dfies. - MOVE-CORRESPONDING ls_dfies TO ls_fcat. -* ls_fcat-columnname = ls_dfies-fieldname. - ls_fcat-col_pos = ls_dfies-position. - ls_fcat-key = ls_dfies-keyflag. - get_fields_info( CHANGING xs_fcat = ls_fcat ) . - - ls_fcat-col_opt = abap_true. - - get_columns_info( CHANGING xs_fcat = ls_fcat ) . - - INSERT ls_fcat INTO TABLE wt_fcat. - endloop. - - endmethod. - - - method CREATE_WT_FILT. -* No neeed for superclass. -* Only for WD - DATA: lt_otab TYPE abap_sortorder_tab, - ls_otab TYPE abap_sortorder. - DATA: lt_filters TYPE salv_wd_t_filter_rule_ref, - ls_filt TYPE lvc_s_filt. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref, - <fs_filter> TYPE salv_wd_s_filter_rule_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - REFRESH lt_filters. - lt_filters = <fs_fields>-r_field->if_salv_wd_filter~get_filter_rules( ) . - LOOP AT lt_filters ASSIGNING <fs_filter>. - ls_filt-fieldname = <fs_fields>-fieldname. - IF <fs_filter>-r_filter_rule->get_included( ) = abap_true. - ls_filt-sign = 'I'. - ELSE. - ls_filt-sign = 'E'. - ENDIF. - ls_filt-option = <fs_filter>-r_filter_rule->get_operator( ). - ls_filt-high = <fs_filter>-r_filter_rule->get_high_value( ) . - ls_filt-low = <fs_filter>-r_filter_rule->get_low_value( ) . - INSERT ls_filt INTO TABLE wt_filt. - ENDLOOP. - ENDLOOP. - - endmethod. - - - method CREATE_WT_SORT. - DATA: lo_sort TYPE REF TO cl_salv_wd_sort_rule, - l_sort_order TYPE salv_wd_constant, - ls_sort TYPE lvc_s_sort. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - LOOP AT wt_fields ASSIGNING <fs_fields>. - lo_sort = <fs_fields>-r_field->if_salv_wd_sort~get_sort_rule( ) . - IF lo_sort IS BOUND. - l_sort_order = lo_sort->get_sort_order( ). - IF l_sort_order <> if_salv_wd_c_sort=>sort_order. - CLEAR ls_sort. - ls_sort-spos = lo_sort->get_sort_position( ). - ls_sort-fieldname = <fs_fields>-fieldname. -* ls_sort-GROUP - ls_sort-subtot = lo_sort->get_group_aggregation( ). -* ls_sort-COMP -* ls_sort-EXPA -* ls_sort-SELTEXT -* ls_sort-OBLIGATORY -* ls_sort-LEVEL -* ls_sort-NO_OUT - IF l_sort_order = if_salv_wd_c_sort=>sort_order_ascending. - ls_sort-up = abap_true. - ELSE. - ls_sort-down = abap_true. - ENDIF. - INSERT ls_sort INTO TABLE wt_sort. - ENDIF. - ENDIF. - ENDLOOP. - - endmethod. - - - - method GET_COLUMNS_INFO. - DATA: l_numc2 TYPE salv_wd_constant. - - - FIELD-SYMBOLS: <fs_column> TYPE salv_wd_s_column_ref. - - READ TABLE wt_columns ASSIGNING <fs_column> WITH KEY id = xs_fcat-fieldname . - IF sy-subrc = 0. - xs_fcat-col_pos = <fs_column>-r_column->get_position( ) . - l_numc2 = <fs_column>-r_column->get_fixed_position( ). - IF l_numc2 = '02'. - xs_fcat-fix_column = abap_true . - ENDIF. - l_numc2 = <fs_column>-r_column->get_visible( ). - IF l_numc2 = '01'. - xs_fcat-no_out = abap_true . - ENDIF. - ENDIF. - - endmethod. - - - - method GET_FIELDS_INFO. - DATA: lo_aggr TYPE REF TO cl_salv_wd_aggr_rule, - l_aggrtype TYPE salv_wd_constant. - - FIELD-SYMBOLS: <fs_fields> TYPE salv_wd_s_field_ref. - - READ TABLE wt_fields ASSIGNING <fs_fields> WITH KEY fieldname = xs_fcat-fieldname. - IF sy-subrc = 0. - lo_aggr = <fs_fields>-r_field->if_salv_wd_aggr~get_aggr_rule( ) . - IF lo_aggr IS BOUND. - l_aggrtype = lo_aggr->get_aggregation_type( ) . - CASE l_aggrtype. - WHEN if_salv_wd_c_aggregation=>aggrtype_total. - xs_fcat-do_sum = abap_true. - WHEN if_salv_wd_c_aggregation=>aggrtype_minimum. - xs_fcat-do_sum = 'A'. - WHEN if_salv_wd_c_aggregation=>aggrtype_maximum . - xs_fcat-do_sum = 'B'. - WHEN if_salv_wd_c_aggregation=>aggrtype_average . - xs_fcat-do_sum = 'C'. - WHEN OTHERS. - CLEAR xs_fcat-do_sum . - ENDCASE. - ENDIF. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD zif_excel_converter~can_convert_object. - - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - lo_salv ?= io_object. - CATCH cx_sy_move_cast_error . - RAISE EXCEPTION TYPE zcx_excel. - ENDTRY. - -ENDMETHOD. - - - METHOD zif_excel_converter~create_fieldcatalog. - DATA: lo_salv TYPE REF TO cl_salv_table. - - TRY. - zif_excel_converter~can_convert_object( io_object = io_object ). - ENDTRY. - - ws_option = is_option. - - lo_salv ?= io_object. - - CLEAR: es_layout, - et_fieldcatalog, - et_colors . - - IF lo_salv IS BOUND. - load_data( EXPORTING io_salv = lo_salv - it_table = it_table ). - apply_sort( EXPORTING it_table = it_table - IMPORTING eo_table = eo_table ) . - - get_color( EXPORTING io_table = eo_table - IMPORTING et_colors = et_colors ) . - - get_filter( IMPORTING et_filter = et_filter - CHANGING xo_table = eo_table ) . - - update_catalog( CHANGING cs_layout = es_layout - ct_fieldcatalog = et_fieldcatalog ). - ENDIF. -ENDMETHOD. - - - - - method LOAD_DATA. - DATA: lo_columns TYPE REF TO cl_salv_columns_table, - lo_aggregations TYPE REF TO cl_salv_aggregations, - lo_sorts TYPE REF TO cl_salv_sorts, - lo_filters TYPE REF TO cl_salv_filters, - lo_functional TYPE REF TO cl_salv_functional_settings, - lo_display TYPE REF TO cl_salv_display_settings, - lo_selections TYPE REF TO cl_salv_selections. - - DATA: ls_vari TYPE disvariant, - lo_layout TYPE REF TO cl_salv_layout. - - DATA: lr_form_tol TYPE REF TO cl_salv_form, - lr_form_eol TYPE REF TO cl_salv_form. - - DATA lt_kkblo_fieldcat TYPE kkblo_t_fieldcat. - DATA ls_kkblo_layout TYPE kkblo_layout. - DATA lt_kkblo_filter TYPE kkblo_t_filter. - DATA lt_kkblo_sort TYPE kkblo_t_sortinfo. - - lo_layout = io_salv->get_layout( ) . - lo_columns = io_salv->get_columns( ). - lo_aggregations = io_salv->get_aggregations( ) . - lo_sorts = io_salv->get_sorts( ) . - lo_filters = io_salv->get_filters( ) . - lo_display = io_salv->get_display_settings( ) . - lo_functional = io_salv->get_functional_settings( ) . - - REFRESH: wt_fcat, - wt_sort, - wt_filt. - -* First update metadata if we can. - IF io_salv->is_offline( ) = abap_false. - io_salv->get_metadata( ) . - ELSE. -* If we are offline we need to build this. - cl_salv_controller_metadata=>get_variant( - EXPORTING - r_layout = lo_layout - CHANGING - s_variant = ls_vari ). - ENDIF. - -*... get the column information - wt_fcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog( - r_columns = lo_columns - r_aggregations = lo_aggregations ). - -*... get the layout information - cl_salv_controller_metadata=>get_lvc_layout( - EXPORTING - r_functional_settings = lo_functional - r_display_settings = lo_display - r_columns = lo_columns - r_aggregations = lo_aggregations - CHANGING - s_layout = ws_layo ). - -* the fieldcatalog is not complete yet! - CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' - EXPORTING - i_complete = 'X' - i_refresh_buffer = space - i_buffer_active = space - is_layout = ws_layo - i_test = '1' - i_fcat_complete = 'X' - IMPORTING -* E_EDIT = - es_layout = ws_layo - CHANGING - ct_fieldcat = wt_fcat. - - IF ls_vari IS NOT INITIAL AND io_salv->is_offline( ) = abap_true. - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - EXPORTING - it_fieldcat_lvc = wt_fcat - is_layout_lvc = ws_layo - IMPORTING - et_fieldcat_kkblo = lt_kkblo_fieldcat - es_layout_kkblo = ls_kkblo_layout - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - it_fieldcat_lvc_missing = 2 - OTHERS = 3. - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LT_VARIANT_LOAD' - EXPORTING -* I_TOOL = 'LT' - i_tabname = '1' -* I_TABNAME_SLAVE = - i_dialog = ' ' -* I_USER_SPECIFIC = ' ' -* I_DEFAULT = 'X' -* I_NO_REPTEXT_OPTIMIZE = -* I_VIA_GRID = - i_fcat_complete = 'X' - IMPORTING -* E_EXIT = - et_fieldcat = lt_kkblo_fieldcat - et_sort = lt_kkblo_sort - et_filter = lt_kkblo_filter - CHANGING - cs_layout = ls_kkblo_layout - ct_default_fieldcat = lt_kkblo_fieldcat - cs_variant = ls_vari - EXCEPTIONS - wrong_input = 1 - fc_not_complete = 2 - not_found = 3 - OTHERS = 4 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO' - EXPORTING -* I_TECH_COMPLETE = -* I_STRUCTURE_NAME = - it_fieldcat_kkblo = lt_kkblo_fieldcat - it_sort_kkblo = lt_kkblo_sort - it_filter_kkblo = lt_kkblo_filter -* IT_SPECIAL_GROUPS_KKBLO = -* IT_FILTERED_ENTRIES_KKBLO = -* IT_GROUPLEVELS_KKBLO = -* IS_SUBTOT_OPTIONS_KKBLO = - is_layout_kkblo = ls_kkblo_layout -* IS_REPREP_ID_KKBLO = -* I_CALLBACK_PROGRAM_KKBLO = -* IT_ADD_FIELDCAT = -* IT_EXCLUDING_KKBLO = -* IT_EXCEPT_QINFO_KKBLO = - IMPORTING - et_fieldcat_lvc = wt_fcat - et_sort_lvc = wt_sort - et_filter_lvc = wt_filt -* ET_SPECIAL_GROUPS_LVC = -* ET_FILTER_INDEX_LVC = -* ET_GROUPLEVELS_LVC = -* ES_TOTAL_OPTIONS_LVC = - es_layout_lvc = ws_layo -* ES_VARIANT_LVC = -* E_VARIANT_SAVE_LVC = -* ES_PRINT_INFO_LVC = -* ES_REPREP_LVC = -* E_REPREP_ACTIVE_LVC = -* ET_EXCLUDING_LVC = -* ET_EXCEPT_QINFO_LVC = - TABLES - it_data = it_table - EXCEPTIONS - it_data_missing = 1 - OTHERS = 2 - . - IF sy-subrc <> 0. -* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO -* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. - ENDIF. - - ELSE. -* ... get the sort information - wt_sort = cl_salv_controller_metadata=>get_lvc_sort( lo_sorts ). - -* ... get the filter information - wt_filt = cl_salv_controller_metadata=>get_lvc_filter( lo_filters ). - ENDIF. - - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - " Initialise instance variables - formula1 = ''. - formula2 = ''. - type = me->c_type_none. - errorstyle = me->c_style_stop. - operator = ''. - allowblank = abap_false. - showdropdown = abap_false. - showinputmessage = abap_true. - showerrormessage = abap_true. - errortitle = ''. - error = ''. - prompttitle = ''. - prompt = ''. -* inizialize dimension range - cell_row = 1. - cell_column = 'A'. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method ADD. - data_validations->add( ip_data_validation ). - endmethod. - - - method CLEAR. - data_validations->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT data_validations. - - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= data_validations->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = data_validations->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - data_validations->remove( ip_data_validation ). - endmethod. - - - - method SIZE. - ep_size = data_validations->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - - me->type = ip_type. - -* inizialize dimension range - anchor = anchor_one_cell. - from_loc-col = 1. - from_loc-row = 1. - endmethod. - - - - method CREATE_MEDIA_NAME. - -* if media name is initial, create unique name - CHECK media_name IS INITIAL. - - index = ip_index. - CONCATENATE me->type index INTO media_name. - CONDENSE media_name NO-GAPS. - endmethod. - - - - method GET_FROM_COL. - r_from_col = me->from_loc-col. - endmethod. - - - - method GET_FROM_ROW. - r_from_row = me->from_loc-row. - endmethod. - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_HEIGHT_EMU_STR. - r_height = pixel2emu( size-height ). - CONDENSE r_height NO-GAPS. - endmethod. - - - - method GET_INDEX. - rp_index = me->index. - endmethod. - - - - METHOD get_media. - - DATA: lv_language TYPE sylangu. - DATA: lt_bin_mime TYPE sdokcntbins. - DATA: lt_mime TYPE tsfmime, - lv_filesize TYPE i, - lv_filesizec(10). - - CASE media_source. - WHEN c_media_source_xstring. - r_media = media. - WHEN c_media_source_www. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = media_key_www - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. - - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - WHEN c_media_source_mime. - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = me->io - IMPORTING - filesize = lv_filesize - bin_data = lt_bin_mime - CHANGING - language = lv_language ). - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = r_media - TABLES - binary_tab = lt_bin_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - ENDCASE. -ENDMETHOD. - - - - method GET_MEDIA_NAME. - CONCATENATE media_name `.` media_type INTO r_name. - endmethod. - - - - method GET_MEDIA_TYPE. - r_type = media_type. - endmethod. - - - - method GET_NAME. - r_name = title. - endmethod. - - - - method GET_POSITION. - rp_position-anchor = anchor. - rp_position-from = from_loc. - rp_position-to = to_loc. - rp_position-size = size. - endmethod. - - - - method GET_TO_COL. - r_to_col = me->to_loc-col. - endmethod. - - - - method GET_TO_ROW. - r_to_row = me->to_loc-row. - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method GET_WIDTH_EMU_STR. - r_width = pixel2emu( size-width ). - CONDENSE r_width NO-GAPS. - endmethod. - - - - method LOAD_CHART_ATTRIBUTES. - DATA: node TYPE REF TO if_ixml_element. - DATA: node2 TYPE REF TO if_ixml_element. - DATA: node3 TYPE REF TO if_ixml_element. - DATA: node4 TYPE REF TO if_ixml_element. - DATA: iterator TYPE REF TO if_ixml_node_iterator. - - DATA: chartspace TYPE REF TO if_ixml_node_collection. - DATA: coll_length TYPE i. - DATA: chartelem TYPE REF TO if_ixml_element. - - DATA lo_barchart TYPE REF TO zcl_excel_graph_bars. - DATA lo_piechart TYPE REF TO zcl_excel_graph_pie. - DATA lo_linechart TYPE REF TO zcl_excel_graph_line. - - TYPES: BEGIN OF t_prop, - val TYPE string, - rtl TYPE string, - lang TYPE string, - formatcode TYPE string, - sourcelinked TYPE string, - END OF t_prop. - - TYPES: BEGIN OF t_pagemargins, - b TYPE string, - l TYPE string, - r TYPE string, - t TYPE string, - header TYPE string, - footer TYPE string, - END OF t_pagemargins. - - DATA ls_prop TYPE t_prop. - DATA ls_pagemargins TYPE t_pagemargins. - - DATA lo_collection TYPE REF TO if_ixml_node_collection. - DATA lo_node TYPE REF TO if_ixml_node. - DATA lo_iterator TYPE REF TO if_ixml_node_iterator. - DATA lv_idx TYPE i. - DATA lv_order TYPE i. - DATA lv_invertifnegative TYPE string. - DATA lv_symbol TYPE string. - DATA lv_smooth TYPE c. - DATA lv_sername TYPE string. - DATA lv_label TYPE string. - DATA lv_value TYPE string. - DATA lv_axid TYPE string. - DATA lv_orientation TYPE string. - DATA lv_delete TYPE string. - DATA lv_axpos TYPE string. - DATA lv_formatcode TYPE string. - DATA lv_sourcelinked TYPE string. - DATA lv_majortickmark TYPE string. - DATA lv_minortickmark TYPE string. - DATA lv_ticklblpos TYPE string. - DATA lv_crossax TYPE string. - DATA lv_crosses TYPE string. - DATA lv_auto TYPE string. - DATA lv_lblalgn TYPE string. - DATA lv_lbloffset TYPE string. - DATA lv_nomultilvllbl TYPE string. - DATA lv_crossbetween TYPE string. - - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - CASE me->graph_type. - WHEN c_graph_bars. - CREATE OBJECT lo_barchart. - me->graph = lo_barchart. - WHEN c_graph_pie. - CREATE OBJECT lo_piechart. - me->graph = lo_piechart. - WHEN c_graph_line. - CREATE OBJECT lo_linechart. - me->graph = lo_linechart. - WHEN OTHERS. - ENDCASE. - - "Fill properties - node2 ?= node->find_from_name( name = 'date1904' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_1904val = ls_prop-val. - node2 ?= node->find_from_name( name = 'lang' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_langval = ls_prop-val. - node2 ?= node->find_from_name( name = 'roundedCorners' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_roundedcornersval = ls_prop-val. - - "style - node2 ?= node->find_from_name( name = 'style' namespace = 'c14' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_c14styleval = ls_prop-val. - node2 ?= node->find_from_name( name = 'style' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_styleval = ls_prop-val. - "---------------------------Read graph properties - node2 ?= node->find_from_name( name = 'autoTitleDeleted' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_autotitledeletedval = ls_prop-val. - - "plotArea - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'barDir' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_bardirval = ls_prop-val. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'invertIfNegative' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_invertifnegative = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_barchart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_invertifnegative = lv_invertifnegative - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'gapWidth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_gapwidthval = ls_prop-val. - - "Load axes - node2 ?= node->find_from_name( name = 'barChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_barchart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_bars=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_piechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showbubblesizeval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showLeaderLines' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_showleaderlinesval = ls_prop-val. - node2 ?= node->find_from_name( name = 'firstSliceAng' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_firstsliceangval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_groupingval = ls_prop-val. - node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_varycolorsval = ls_prop-val. - - "Load series - CALL METHOD node->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'ser' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_idx = ls_prop-val. - node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_order = ls_prop-val. - node3 ?= node2->find_from_name( name = 'symbol' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_symbol = ls_prop-val. - node3 ?= node2->find_from_name( name = 'smooth' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_smooth = ls_prop-val. - node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ). - IF node3 IS BOUND. - lv_sername = node3->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_label = node4->get_value( ). - ENDIF. - node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ). - IF node3 IS BOUND. - node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ). - lv_value = node4->get_value( ). - ENDIF. - CALL METHOD lo_linechart->create_serie - EXPORTING - ip_idx = lv_idx - ip_order = lv_order - ip_symbol = lv_symbol - ip_smooth = lv_smooth - ip_lbl = lv_label - ip_ref = lv_value - ip_sername = lv_sername. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - "note: numCache avoided - node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showlegendkeyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showvalval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showcatnameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showsernameval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showpercentval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_showbubblesizeval = ls_prop-val. - - node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - node2 ?= node->find_from_name( name = 'marker' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_MARKERVAL = ls_prop-val. - node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' DEPTH = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->NS_SMOOTHVAL = ls_prop-val. - node ?= ip_chart->if_ixml_node~get_first_child( ). - CHECK node IS NOT INITIAL. - - "Load axes - node2 ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). - CALL METHOD node2->get_elements_by_tag_name - EXPORTING -* depth = 0 - name = 'axId' -* namespace = '' - RECEIVING - rval = lo_collection. - CALL METHOD lo_collection->create_iterator - RECEIVING - rval = lo_iterator. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - WHILE lo_node IS BOUND. - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lv_axid = ls_prop-val. - IF sy-index EQ 1. "catAx - node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. -* node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). -* zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). -* lv_formatcode = ls_prop-formatcode. -* lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_auto = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lblalgn = ls_prop-val. - node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_lbloffset = ls_prop-val. - node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_nomultilvllbl = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_catax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_auto = lv_auto - ip_lblalgn = lv_lblalgn - ip_lbloffset = lv_lbloffset - ip_nomultilvllbl = lv_nomultilvllbl. - ELSEIF sy-index EQ 2. "valAx - node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ). - node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_orientation = ls_prop-val. - node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_delete = ls_prop-val. - node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_axpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_formatcode = ls_prop-formatcode. - lv_sourcelinked = ls_prop-sourcelinked. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_majortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_minortickmark = ls_prop-val. - node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_ticklblpos = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossax = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crosses = ls_prop-val. - node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ). - lv_crossbetween = ls_prop-val. - CALL METHOD lo_linechart->create_ax - EXPORTING - ip_axid = lv_axid - ip_type = zcl_excel_graph_line=>c_valax - ip_orientation = lv_orientation - ip_delete = lv_delete - ip_axpos = lv_axpos - ip_formatcode = lv_formatcode - ip_sourcelinked = lv_sourcelinked - ip_majortickmark = lv_majortickmark - ip_minortickmark = lv_minortickmark - ip_ticklblpos = lv_ticklblpos - ip_crossax = lv_crossax - ip_crosses = lv_crosses - ip_crossbetween = lv_crossbetween. - ENDIF. - lo_node = lo_iterator->get_next( ). - IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). - ENDIF. - ENDWHILE. - WHEN OTHERS. - ENDCASE. - - "legend - CASE me->graph_type. - WHEN c_graph_bars. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_overlayval = ls_prop-val. - WHEN c_graph_line. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_overlayval = ls_prop-val. - WHEN c_graph_pie. - node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_legendposval = ls_prop-val. - node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_overlayval = ls_prop-val. - node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_pprrtl = ls_prop-rtl. - node2 ?= node->find_from_name( name = 'endParaRPr' namespace = 'a' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_endpararprlang = ls_prop-lang. - - WHEN OTHERS. - ENDCASE. - - node2 ?= node->find_from_name( name = 'plotVisOnly' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_plotvisonlyval = ls_prop-val. - node2 ?= node->find_from_name( name = 'dispBlanksAs' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_dispblanksasval = ls_prop-val. - node2 ?= node->find_from_name( name = 'showDLblsOverMax' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - me->graph->ns_showdlblsovermaxval = ls_prop-val. - "--------------------- - - node2 ?= node->find_from_name( name = 'pageMargins' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_pagemargins ). - me->graph->pagemargins = ls_pagemargins. - - - endmethod. - - - - - - method PIXEL2EMU. -* suppose 96 DPI - IF ip_dpi IS SUPPLIED. - r_emu = ip_pixel * 914400 / ip_dpi. - ELSE. -* suppose 96 DPI - r_emu = ip_pixel * 914400 / 96. - ENDIF. - endmethod. - - - - - - - method SET_MEDIA. - IF ip_media IS SUPPLIED. - media = ip_media. - ENDIF. - media_type = ip_media_type. - media_source = c_media_source_xstring. - IF ip_width IS SUPPLIED. - size-width = ip_width. - ENDIF. - IF ip_height IS SUPPLIED. - size-height = ip_height. - ENDIF. - endmethod. - - - - - - METHOD set_media_mime. - - DATA: lv_language TYPE sylangu. - - io = ip_io. - media_source = c_media_source_mime. - size-width = ip_width. - size-height = ip_height. - - lv_language = sy-langu. - cl_wb_mime_repository=>load_mime( EXPORTING - io = ip_io - IMPORTING - filename = media_name - "mimetype = media_type - CHANGING - language = lv_language ). - - SPLIT media_name AT '.' INTO media_name media_type. - -ENDMETHOD. - - - - - - method SET_MEDIA_WWW. - DATA: lv_value(20). - - media_key_www = ip_key. - media_source = c_media_source_www. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = media_key_www-relid - objid = media_key_www-objid - name = 'fileextension' - IMPORTING - value = lv_value. - media_type = lv_value. - SHIFT media_type LEFT DELETING LEADING '.'. - - size-width = ip_width. - size-height = ip_height. - endmethod. - - - - - - - method SET_POSITION. - from_loc-col = zcl_excel_common=>convert_column2int( ip_from_col ) - 1. - IF ip_coloff IS SUPPLIED. - from_loc-col_offset = ip_coloff. - ENDIF. - from_loc-row = ip_from_row - 1. - IF ip_rowoff IS SUPPLIED. - from_loc-row_offset = ip_rowoff. - ENDIF. - anchor = anchor_one_cell. - endmethod. - - - - - - method SET_POSITION2. - - data: lv_anchor type zexcel_drawing_anchor. - lv_anchor = ip_anchor. - - IF lv_anchor IS INITIAL. - IF ip_to IS NOT INITIAL. - lv_anchor = anchor_two_cell. - ELSE. - lv_anchor = anchor_one_cell. - ENDIF. - ENDIF. - - CASE lv_anchor. - WHEN anchor_absolute OR anchor_one_cell. - CLEAR: me->to_loc. - WHEN anchor_two_cell. - CLEAR: me->size. - ENDCASE. - - me->from_loc = ip_from. - me->to_loc = ip_to. - me->anchor = lv_anchor. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method ADD. - DATA: lv_index TYPE i. - - drawings->add( ip_drawing ). - lv_index = drawings->if_object_collection~size( ). - ip_drawing->create_media_name( - ip_index = lv_index ). - endmethod. - - - method CLEAR. - - drawings->clear( ). - endmethod. - - - - method CONSTRUCTOR. - - CREATE OBJECT drawings. - type = ip_type. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_drawing ?= drawings->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= drawings->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TYPE. - rp_type = me->type. - endmethod. - - - - method INCLUDE. - drawings->add( ip_drawing ). - endmethod. - - - - method IS_EMPTY. - - is_empty = drawings->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - - drawings->remove( ip_drawing ). - endmethod. - - - - method SIZE. - - ep_size = drawings->if_object_collection~size( ). - endmethod. - - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - "Load default values - me->pagemargins-b = '0.75'. - me->pagemargins-l = '0.7'. - me->pagemargins-r = '0.7'. - me->pagemargins-t = '0.75'. - me->pagemargins-header = '0.3'. - me->pagemargins-footer = '0.3'. - endmethod. - - - - - - - - - - - - - - - - - - - - method CREATE_SERIE. - DATA ls_serie TYPE s_series. - - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7. - - - IF ip_lbl IS NOT SUPPLIED. - lv_stop_row_c = ip_lbl_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_lbl_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-lbl = ip_sheet. - ls_serie-lbl = zcl_excel_common=>escape_string( ip_value = ls_serie-lbl ). - CONCATENATE ls_serie-lbl '!$' ip_lbl_from_col '$' lv_start_row_c ':$' ip_lbl_to_col '$' lv_stop_row_c INTO ls_serie-lbl. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-lbl = ip_lbl. - ENDIF. - IF ip_ref IS NOT SUPPLIED. - lv_stop_row_c = ip_ref_to_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_ref_from_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - ls_serie-ref = ip_sheet. - ls_serie-ref = zcl_excel_common=>escape_string( ip_value = ls_serie-ref ). - CONCATENATE ls_serie-ref '!$' ip_ref_from_col '$' lv_start_row_c ':$' ip_ref_to_col '$' lv_stop_row_c INTO ls_serie-ref. - CLEAR: lv_start_row_c, lv_stop_row_c. - ELSE. - ls_serie-ref = ip_ref. - ENDIF. - ls_serie-idx = ip_idx. - ls_serie-order = ip_order. - ls_serie-invertifnegative = ip_invertifnegative. - ls_serie-symbol = ip_symbol. - ls_serie-smooth = ip_smooth. - ls_serie-sername = ip_sername. - APPEND ls_serie TO me->series. - SORT me->series BY order ASCENDING. - endmethod. - - - - method SET_PRINT_LBL. - me->print_label = ip_value. - endmethod. - - - - method SET_STYLE. - me->ns_c14styleval = ip_style-c14style. - CONDENSE me->ns_c14styleval NO-GAPS. - me->ns_styleval = ip_style-cstyle. - CONDENSE me->ns_styleval NO-GAPS. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - if ip_type = c_catax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '1'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'b'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '2'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_auto is SUPPLIED. - ls_ax-auto = ip_auto. - else. - ls_ax-auto = '1'. - endif. - if ip_lblAlgn is SUPPLIED. - ls_ax-lblAlgn = ip_lblAlgn. - else. - ls_ax-lblAlgn = 'ctr'. - endif. - if ip_lblOffset is SUPPLIED. - ls_ax-lblOffset = ip_lblOffset. - else. - ls_ax-lblOffset = '100'. - endif. - if ip_noMultiLvlLbl is SUPPLIED. - ls_ax-noMultiLvlLbl = ip_noMultiLvlLbl. - else. - ls_ax-noMultiLvlLbl = '0'. - endif. - elseif ip_type = c_valax. - if ip_axid is SUPPLIED. - ls_ax-axid = ip_axid. - else. - ls_ax-axid = '2'. - endif. - if ip_orientation is SUPPLIED. - ls_ax-orientation = ip_orientation. - else. - ls_ax-orientation = 'minMax'. - endif. - if ip_delete is SUPPLIED. - ls_ax-delete = ip_delete. - else. - ls_ax-delete = '0'. - endif. - if ip_axpos is SUPPLIED. - ls_ax-axpos = ip_axpos. - else. - ls_ax-axpos = 'l'. - endif. - if ip_formatcode is SUPPLIED. - ls_ax-formatcode = ip_formatcode. - else. - ls_ax-formatcode = 'General'. - endif. - if ip_sourcelinked is SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - else. - ls_ax-sourcelinked = '1'. - endif. - if ip_majorTickMark is SUPPLIED. - ls_ax-majorTickMark = ip_majorTickMark. - else. - ls_ax-majorTickMark = 'out'. - endif. - if ip_minorTickMark is SUPPLIED. - ls_ax-minorTickMark = ip_minorTickMark. - else. - ls_ax-minorTickMark = 'none'. - endif. - if ip_ticklblpos is SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - else. - ls_ax-ticklblpos = 'nextTo'. - endif. - if ip_crossax is SUPPLIED. - ls_ax-crossax = ip_crossax. - else. - ls_ax-crossax = '1'. - endif. - if ip_crosses is SUPPLIED. - ls_ax-crosses = ip_crosses. - else. - ls_ax-crosses = 'autoZero'. - endif. - if ip_crossBetween is SUPPLIED. - ls_ax-crossBetween = ip_crossBetween. - else. - ls_ax-crossBetween = 'between'. - endif. - endif. - - APPEND ls_ax TO me->axes. - sort me->axes by axid ascending. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CREATE_AX. - DATA ls_ax TYPE s_ax. - ls_ax-type = ip_type. - - IF ip_type = c_catax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '1'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'b'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '2'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_auto IS SUPPLIED. - ls_ax-auto = ip_auto. - ELSE. - ls_ax-auto = '1'. - ENDIF. - IF ip_lblalgn IS SUPPLIED. - ls_ax-lblalgn = ip_lblalgn. - ELSE. - ls_ax-lblalgn = 'ctr'. - ENDIF. - IF ip_lbloffset IS SUPPLIED. - ls_ax-lbloffset = ip_lbloffset. - ELSE. - ls_ax-lbloffset = '100'. - ENDIF. - IF ip_nomultilvllbl IS SUPPLIED. - ls_ax-nomultilvllbl = ip_nomultilvllbl. - ELSE. - ls_ax-nomultilvllbl = '0'. - ENDIF. - ELSEIF ip_type = c_valax. - IF ip_axid IS SUPPLIED. - ls_ax-axid = ip_axid. - ELSE. - ls_ax-axid = '2'. - ENDIF. - IF ip_orientation IS SUPPLIED. - ls_ax-orientation = ip_orientation. - ELSE. - ls_ax-orientation = 'minMax'. - ENDIF. - IF ip_delete IS SUPPLIED. - ls_ax-delete = ip_delete. - ELSE. - ls_ax-delete = '0'. - ENDIF. - IF ip_axpos IS SUPPLIED. - ls_ax-axpos = ip_axpos. - ELSE. - ls_ax-axpos = 'l'. - ENDIF. - IF ip_formatcode IS SUPPLIED. - ls_ax-formatcode = ip_formatcode. - ELSE. - ls_ax-formatcode = 'General'. - ENDIF. - IF ip_sourcelinked IS SUPPLIED. - ls_ax-sourcelinked = ip_sourcelinked. - ELSE. - ls_ax-sourcelinked = '1'. - ENDIF. - IF ip_majortickmark IS SUPPLIED. - ls_ax-majortickmark = ip_majortickmark. - ELSE. - ls_ax-majortickmark = 'out'. - ENDIF. - IF ip_minortickmark IS SUPPLIED. - ls_ax-minortickmark = ip_minortickmark. - ELSE. - ls_ax-minortickmark = 'none'. - ENDIF. - IF ip_ticklblpos IS SUPPLIED. - ls_ax-ticklblpos = ip_ticklblpos. - ELSE. - ls_ax-ticklblpos = 'nextTo'. - ENDIF. - IF ip_crossax IS SUPPLIED. - ls_ax-crossax = ip_crossax. - ELSE. - ls_ax-crossax = '1'. - ENDIF. - IF ip_crosses IS SUPPLIED. - ls_ax-crosses = ip_crosses. - ELSE. - ls_ax-crosses = 'autoZero'. - ENDIF. - IF ip_crossbetween IS SUPPLIED. - ls_ax-crossbetween = ip_crossbetween. - ELSE. - ls_ax-crossbetween = 'between'. - ENDIF. - ENDIF. - - APPEND ls_ax TO me->axes. - SORT me->axes BY axid ASCENDING. - endmethod. - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - method SET_SHOW_CAT_NAME. - ns_showcatnameval = ip_value. - endmethod. - - - - method SET_SHOW_LEADER_LINES. - ns_showleaderlinesval = ip_value. - endmethod. - - - - method SET_SHOW_LEGEND_KEY. - ns_showlegendkeyval = ip_value. - endmethod. - - - - method SET_SHOW_PERCENT. - ns_showpercentval = ip_value. - endmethod. - - - - method SET_SHOW_SER_NAME. - ns_showsernameval = ip_value. - endmethod. - - - - method SET_SHOW_VALUES. - ns_showvalval = ip_value. - endmethod. - - - - method SET_VARYCOLOR. - ns_varycolorsval = ip_value. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - method CREATE. - data: lo_hyperlink type REF TO zcl_excel_hyperlink. - - create OBJECT lo_hyperlink. - - lo_hyperlink->location = iv_url. - lo_hyperlink->internal = iv_internal. - - ov_link = lo_hyperlink. - endmethod. - - - - - method CREATE_EXTERNAL_LINK. - - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_url - iv_internal = abap_false ). - endmethod. - - - - - method CREATE_INTERNAL_LINK. - ov_link = zcl_excel_hyperlink=>create( iv_url = iv_location - iv_internal = abap_true ). - endmethod. - - - - method GET_REF. - ev_ref = row. - CONDENSE ev_ref. - CONCATENATE column ev_ref INTO ev_ref. - endmethod. - - - - method GET_URL. - ev_url = me->location. - endmethod. - - - - method IS_INTERNAL. - ev_ret = me->internal. - endmethod. - - - - - - method SET_CELL_REFERENCE. - me->column = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - me->row = ip_row. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - method CONSTRUCTOR. - " default Excel palette based on - " http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.indexedcolors.aspx - - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00000000' TO colors. - APPEND '00FFFFFF' TO colors. - - APPEND '00FF0000' TO colors. - APPEND '0000FF00' TO colors. - APPEND '000000FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800000' TO colors. - APPEND '00008000' TO colors. - APPEND '00000080' TO colors. - APPEND '00808000' TO colors. - - APPEND '00800080' TO colors. - APPEND '00008080' TO colors. - APPEND '00C0C0C0' TO colors. - APPEND '00808080' TO colors. - APPEND '009999FF' TO colors. - APPEND '00993366' TO colors. - APPEND '00FFFFCC' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00660066' TO colors. - APPEND '00FF8080' TO colors. - - APPEND '000066CC' TO colors. - APPEND '00CCCCFF' TO colors. - APPEND '00000080' TO colors. - APPEND '00FF00FF' TO colors. - APPEND '00FFFF00' TO colors. - APPEND '0000FFFF' TO colors. - APPEND '00800080' TO colors. - APPEND '00800000' TO colors. - APPEND '00008080' TO colors. - APPEND '000000FF' TO colors. - - APPEND '0000CCFF' TO colors. - APPEND '00CCFFFF' TO colors. - APPEND '00CCFFCC' TO colors. - APPEND '00FFFF99' TO colors. - APPEND '0099CCFF' TO colors. - APPEND '00FF99CC' TO colors. - APPEND '00CC99FF' TO colors. - APPEND '00FFCC99' TO colors. - APPEND '003366FF' TO colors. - APPEND '0033CCCC' TO colors. - - APPEND '0099CC00' TO colors. - APPEND '00FFCC00' TO colors. - APPEND '00FF9900' TO colors. - APPEND '00FF6600' TO colors. - APPEND '00666699' TO colors. - APPEND '00969696' TO colors. - APPEND '00003366' TO colors. - APPEND '00339966' TO colors. - APPEND '00003300' TO colors. - APPEND '00333300' TO colors. - - APPEND '00993300' TO colors. - APPEND '00993366' TO colors. - APPEND '00333399' TO colors. - APPEND '00333333' TO colors. - - endmethod. - - - - - - method GET_COLOR. - DATA: lv_index type i. - - lv_index = ip_index + 1. - READ TABLE colors INTO ep_color INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - endmethod. - - - - method GET_COLORS. - ep_colors = colors. - endmethod. - - - - method IS_MODIFIED. - ep_modified = modified. - endmethod. - - - - - method SET_COLOR. - DATA: lv_index TYPE i. - - FIELD-SYMBOLS: <lv_color> LIKE LINE OF colors. - - lv_index = ip_index + 1. - READ TABLE colors ASSIGNING <lv_color> INDEX lv_index. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid color index'. - ENDIF. - - IF <lv_color> <> ip_color. - modified = abap_true. - <lv_color> = ip_color. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - method GET_GUID. - - ep_guid = me->guid. - - endmethod. - - - - method GET_VALUE. - - ep_value = me->value. - - endmethod. - - - - method SET_RANGE_VALUE. - me->value = ip_value. - endmethod. - - - - - - - - method SET_VALUE. - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7, - lv_value TYPE string. - lv_stop_row_c = ip_stop_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_start_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - lv_value = ip_sheet_name. - me->value = zcl_excel_common=>escape_string( ip_value = lv_value ). - - CONCATENATE me->value '!$' ip_start_column '$' lv_start_row_c ':$' ip_stop_column '$' lv_stop_row_c INTO me->value. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - ranges->add( ip_range ). - endmethod. - - - method CLEAR. - ranges->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT ranges. - - endmethod. - - - - - method GET. - eo_range ?= ranges->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= ranges->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = ranges->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - ranges->remove( ip_range ). - endmethod. - - - - method SIZE. - ep_size = ranges->if_object_collection~size( ). - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - TYPES: BEGIN OF t_relationship, - id TYPE string, - type TYPE string, - target TYPE string, - END OF t_relationship. - -* - CLASS lcl_abap_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: abap_zip TYPE REF TO cl_abap_zip. - METHODS constructor IMPORTING i_data TYPE xstring - RAISING zcx_excel. - ENDCLASS. "lcl_abap_zip_archive DEFINITION - -* - CLASS lcl_alternate_zip_archive DEFINITION - INHERITING FROM lcl_zip_archive - CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS create - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RETURNING value(r_zip) TYPE REF TO lcl_zip_archive - RAISING zcx_excel. - METHODS read REDEFINITION. - PRIVATE SECTION. - DATA: alternate_zip TYPE REF TO object. - METHODS constructor - IMPORTING i_data TYPE xstring - i_alternate_zip_class TYPE seoclsname - RAISING zcx_excel. - ENDCLASS. "lcl_alternate_zip_archive DEFINITION - -* - CLASS lcl_abap_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_abap_zip_archive - EXPORTING - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT abap_zip. - abap_zip->load( - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - CALL METHOD abap_zip->get - EXPORTING - name = i_filename - IMPORTING - content = r_content - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_abap_zip_archive IMPLEMENTATION - -* - CLASS lcl_alternate_zip_archive IMPLEMENTATION. - METHOD create. - CREATE OBJECT r_zip TYPE lcl_alternate_zip_archive - EXPORTING - i_alternate_zip_class = i_alternate_zip_class - i_data = i_data. - ENDMETHOD. "create - METHOD constructor. - DATA: lv_errormessage TYPE string. - super->constructor( ). - CREATE OBJECT alternate_zip TYPE (i_alternate_zip_class). - TRY. - CALL METHOD alternate_zip->('LOAD') - EXPORTING - zip = i_data - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method LOAD missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - - IF sy-subrc <> 0. - lv_errormessage = 'ZIP parse error'(002). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "constructor - METHOD read. - DATA: lv_errormessage TYPE string. - TRY. - CALL METHOD alternate_zip->('GET') - EXPORTING - name = i_filename - IMPORTING - content = r_content " Contents - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3. - CATCH cx_sy_dyn_call_illegal_method. - lv_errormessage = 'Method GET missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDTRY. - IF sy-subrc <> 0. - lv_errormessage = 'File not found in zip-archive'(003). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - ENDMETHOD. "read - ENDCLASS. "lcl_alternate_zip_archive IMPLEMENTATION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - -* -class lcl_zip_archive definition abstract. - public section. - methods read abstract - importing i_filename type csequence - returning value(r_content) type xstring " Remember copy-on-write! - raising zcx_excel. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - IXML - - - - - - METHOD zif_excel_reader~load. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Map Document Properties to ZCL_EXCEL -*--------------------------------------------------------------------* - - CONSTANTS: lcv_core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lcv_office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'. - - DATA: lo_rels TYPE REF TO if_ixml_document, - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship. - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller - -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets - -* §3 Extracting from this the path&file where the workbook is located -* Following is an example how this file could be set up -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* <Relationship Target="docProps/core.xml" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Id="rId2"/> -* <Relationship Target="xl/workbook.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Id="rId1"/> -* </Relationships> -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §1 Create EXCEL-Object we want to return to caller -*--------------------------------------------------------------------* - IF iv_zcl_excel_classname IS INITIAL. - CREATE OBJECT r_excel. - ELSE. - CREATE OBJECT r_excel TYPE (iv_zcl_excel_classname). - ENDIF. - - zip = create_zip_archive( i_xlsx_binary = i_excel2007 - i_use_alternate_zip = i_use_alternate_zip ). - -*--------------------------------------------------------------------* -* §2 Get file in folderstructure -*--------------------------------------------------------------------* - lo_rels = get_ixml_from_zip_archive( '_rels/.rels' ). - -*--------------------------------------------------------------------* -* §3 Cycle through the Relationship Tags and use the ones we need -*--------------------------------------------------------------------* - lo_node ?= lo_rels->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_relationship ). - CASE ls_relationship-type. - - WHEN lcv_office_document. -*--------------------------------------------------------------------* -* Parse workbook - main part here -*--------------------------------------------------------------------* - load_workbook( iv_workbook_full_filename = ls_relationship-target - io_excel = r_excel ). - - WHEN lcv_core_properties. - " 2do§1 Map Document Properties to ZCL_EXCEL - - WHEN OTHERS. - - ENDCASE. - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - METHOD zif_excel_reader~load_file. - - DATA: lv_excel_data TYPE xstring. - -*--------------------------------------------------------------------* -* Read file into binary string -*--------------------------------------------------------------------* - IF i_from_applserver = abap_true. - lv_excel_data = read_from_applserver( i_filename ). - ELSE. - lv_excel_data = read_from_local_file( i_filename ). - ENDIF. - -*--------------------------------------------------------------------* -* Parse Excel data into ZCL_EXCEL object from binary string -*--------------------------------------------------------------------* - r_excel = zif_excel_reader~load( i_excel2007 = lv_excel_data - i_use_alternate_zip = i_use_alternate_zip - iv_zcl_excel_classname = iv_zcl_excel_classname ). - -ENDMETHOD. - - - - - - - METHOD create_zip_archive. - CASE i_use_alternate_zip. - WHEN space. - e_zip = lcl_abap_zip_archive=>create( i_xlsx_binary ). - WHEN OTHERS. - e_zip = lcl_alternate_zip_archive=>create( i_data = i_xlsx_binary - i_alternate_zip_class = i_use_alternate_zip ). - ENDCASE. -ENDMETHOD. - - - - - METHOD fill_row_outlines. - - TYPES: BEGIN OF lts_row_data, - row TYPE i, - outline_level TYPE i, - END OF lts_row_data, - ltt_row_data TYPE SORTED TABLE OF lts_row_data WITH UNIQUE KEY row. - - DATA: lt_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - - lt_row_data TYPE ltt_row_data, - ls_row_data LIKE LINE OF lt_row_data, - lt_collapse_rows TYPE HASHED TABLE OF i WITH UNIQUE KEY table_line, - - lv_collapsed TYPE abap_bool, - - lv_outline_level TYPE i, - lv_next_consecutive_row TYPE i, - lt_outline_rows TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - ls_outline_row LIKE LINE OF lt_outline_rows, - - lv_row_offset TYPE i, - lv_row_collapse_flag TYPE i. - - - FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF lt_row_dimensions, - <ls_row_data> LIKE LINE OF lt_row_data. - -* First collect information about outlines ( outline leven and collapsed state ) - lt_row_dimensions = io_worksheet->get_row_dimensions( ). - LOOP AT lt_row_dimensions ASSIGNING <ls_row_dimension>. - - ls_row_data-row = <ls_row_dimension>-row. - ls_row_data-outline_level = <ls_row_dimension>-row_dimension->get_outline_level( ). - IF ls_row_data-outline_level IS NOT INITIAL. - INSERT ls_row_data INTO TABLE lt_row_data. - ENDIF. - - lv_collapsed = <ls_row_dimension>-row_dimension->get_collapsed( ). - IF lv_collapsed = abap_true. - INSERT <ls_row_dimension>-row INTO TABLE lt_collapse_rows. - ENDIF. - - ENDLOOP. - -* Now parse this information - we need consecutive rows - any gap will create a new outline - DO 7 TIMES. " max number of outlines allowed - lv_outline_level = sy-index. - CLEAR lv_next_consecutive_row. - CLEAR ls_outline_row. - LOOP AT lt_row_data ASSIGNING <ls_row_data> WHERE outline_level >= lv_outline_level. - - IF lv_next_consecutive_row <> <ls_row_data>-row " A gap --> close all open outlines - AND lv_next_consecutive_row IS NOT INITIAL. " First time in loop. - INSERT ls_outline_row INTO TABLE lt_outline_rows. - CLEAR: ls_outline_row. - ENDIF. - - IF ls_outline_row-row_from IS INITIAL. - ls_outline_row-row_from = <ls_row_data>-row. - ENDIF. - ls_outline_row-row_to = <ls_row_data>-row. - - lv_next_consecutive_row = <ls_row_data>-row + 1. - - ENDLOOP. - IF ls_outline_row-row_from IS NOT INITIAL. - INSERT ls_outline_row INTO TABLE lt_outline_rows. - ENDIF. - ENDDO. - -* lt_outline_rows holds all outline information -* we now need to determine whether the outline is collapsed or not - LOOP AT lt_outline_rows INTO ls_outline_row. - - IF io_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. - lv_row_collapse_flag = ls_outline_row-row_from - 1. - ELSE. - lv_row_collapse_flag = ls_outline_row-row_to + 1. - ENDIF. - READ TABLE lt_collapse_rows TRANSPORTING NO FIELDS WITH TABLE KEY table_line = lv_row_collapse_flag. - IF sy-subrc = 0. - ls_outline_row-collapsed = abap_true. - ENDIF. - io_worksheet->set_row_outline( iv_row_from = ls_outline_row-row_from - iv_row_to = ls_outline_row-row_to - iv_collapsed = ls_outline_row-collapsed ). - - ENDLOOP. - -* Finally purge outline information ( collapsed state, outline leve) from row_dimensions, since we want to keep these in the outline-table - LOOP AT lt_row_dimensions ASSIGNING <ls_row_dimension>. - - <ls_row_dimension>-row_dimension->set_outline_level( 0 ). - <ls_row_dimension>-row_dimension->set_collapsed( abap_false ). - - ENDLOOP. - -ENDMETHOD. - - - - - method fill_struct_from_attributes. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - - data: lv_name type string, - lo_attributes type ref to if_ixml_named_node_map, - lo_attribute type ref to if_ixml_attribute, - lo_iterator type ref to if_ixml_node_iterator. - - field-symbols: <component> type any. - -*--------------------------------------------------------------------* -* The values of named attributes of a tag are being read and moved into corresponding -* fields of given structure -* Behaves like move-corresonding tag to structure - -* Example: -* <Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/> -* Here the attributes are Target, Type and Id. Thus if the passed -* structure has fieldnames Id and Target these would be filled with -* "rId3" and "docProps/app.xml" respectively -*--------------------------------------------------------------------* - clear cp_structure. - - lo_attributes = ip_element->get_attributes( ). - lo_iterator = lo_attributes->create_iterator( ). - lo_attribute ?= lo_iterator->get_next( ). - while lo_attribute is bound. - - lv_name = lo_attribute->get_name( ). - translate lv_name to upper case. - assign component lv_name of structure cp_structure to <component>. - if sy-subrc = 0. - <component> = lo_attribute->get_value( ). - endif. - lo_attribute ?= lo_iterator->get_next( ). - - endwhile. - - -endmethod. - - - - - - METHOD get_from_zip_archive. - - ASSERT zip IS BOUND. " zip object has to exist at this point - - r_content = zip->read( i_filename ). - -ENDMETHOD. - - - - - - - METHOD get_ixml_from_zip_archive. - - DATA: lv_content TYPE xstring, - lo_ixml TYPE REF TO if_ixml, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_istream TYPE REF TO if_ixml_istream, - lo_parser TYPE REF TO if_ixml_parser. - -*--------------------------------------------------------------------* -* Load XML file from archive into an input stream, -* and parse that stream into an ixml object -*--------------------------------------------------------------------* - lv_content = me->get_from_zip_archive( i_filename ). - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_istream = lo_streamfactory->create_istream_xstring( lv_content ). - r_ixml = lo_ixml->create_document( ). - lo_parser = lo_ixml->create_parser( stream_factory = lo_streamfactory - istream = lo_istream - document = r_ixml ). - lo_parser->set_normalizing( is_normalizing ). - lo_parser->set_validating( mode = if_ixml_parser=>co_no_validation ). - lo_parser->parse( ). - -ENDMETHOD. - - - - - - method LOAD_DRAWING_ANCHOR. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - TYPES: BEGIN OF t_ext, - cx TYPE string, - cy TYPE string, - END OF t_ext. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - node TYPE REF TO if_ixml_element, - node2 TYPE REF TO if_ixml_element, - node3 TYPE REF TO if_ixml_element, - node4 TYPE REF TO if_ixml_element, - - ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location, - ls_size TYPE zexcel_drawing_size, - ext TYPE t_ext, - lv_content TYPE xstring, - lv_relation_id TYPE string, - lv_title TYPE zexcel_sheet_title, - - cnvpr TYPE t_c_nv_pr, - blip TYPE t_blip, - chart TYPE t_chart, - drawing_type TYPE zexcel_drawing_type, - - rel_drawing TYPE t_rel_drawing. - - node ?= io_anchor_element->find_from_name( name = 'from' namespace = 'xdr' ). - CHECK node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_upper-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_upper-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_upper-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_upper-row_offset = node2->get_value( ). - - node ?= io_anchor_element->find_from_name( name = 'ext' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_size. - ELSE. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = ext ). - ls_size-width = ext-cx. - ls_size-height = ext-cy. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'to' namespace = 'xdr' ). - IF node IS INITIAL. - CLEAR ls_lower. - ELSE. - node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ). - ls_lower-col = node2->get_value( ). - node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ). - ls_lower-row = node2->get_value( ). - node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ). - ls_lower-col_offset = node2->get_value( ). - node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ). - ls_lower-row_offset = node2->get_value( ). - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'pic' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvPicPr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'blipFill' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'blip' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = blip ). - lv_relation_id = blip-embed. - - drawing_type = zcl_excel_drawing=>type_image. - ENDIF. - - node ?= io_anchor_element->find_from_name( name = 'graphicFrame' namespace = 'xdr' ). - IF node IS NOT INITIAL. - node2 ?= node->find_from_name( name = 'nvGraphicFramePr' namespace = 'xdr' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ). - CHECK node3 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ). - lv_title = cnvpr-name. - - node2 ?= node->find_from_name( name = 'graphic' namespace = 'a' ). - CHECK node2 IS NOT INITIAL. - node3 ?= node2->find_from_name( name = 'graphicData' namespace = 'a' ). - CHECK node3 IS NOT INITIAL. - node4 ?= node2->find_from_name( name = 'chart' namespace = 'c' ). - CHECK node4 IS NOT INITIAL. - me->fill_struct_from_attributes( EXPORTING ip_element = node4 CHANGING cp_structure = chart ). - lv_relation_id = chart-id. - - drawing_type = zcl_excel_drawing=>type_chart. - ENDIF. - - lo_drawing = io_worksheet->excel->add_new_drawing( - ip_type = drawing_type - ip_title = lv_title ). - io_worksheet->add_drawing( lo_drawing ). - - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - READ TABLE it_related_drawings INTO rel_drawing - WITH KEY id = lv_relation_id. - - lo_drawing->set_media( - EXPORTING - ip_media = rel_drawing-content - ip_media_type = rel_drawing-file_ext - ip_width = ls_size-width - ip_height = ls_size-height ). - - if drawing_type = zcl_excel_drawing=>type_chart. - "-------------Added by Alessandro Iannacci - Should load chart attributes - lo_drawing->load_chart_attributes( rel_drawing-content_xml ). - endif. - - endmethod. - - - - - method LOAD_SHARED_STRINGS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support partial formatting of strings in cells -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: renaming variables to naming conventions -* renaming variables to indicate what they are used for -* aligning code -* adding comments to explain what we are trying to achieve -* rewriting code for better readibility -*--------------------------------------------------------------------* - - - - DATA: - lo_shared_strings_xml TYPE REF TO if_ixml_document, - lo_node_si TYPE REF TO if_ixml_element, - lo_node_si_child TYPE REF TO if_ixml_element, - lo_node_r_child_t TYPE REF TO if_ixml_element, - lv_tag_name TYPE string, - lv_node_value TYPE string. - - FIELD-SYMBOLS: <lv_shared_string> LIKE LINE OF me->shared_strings. - -*--------------------------------------------------------------------* - -* §1 Parse shared strings file and get into internal table -* So far I have encountered 2 ways how a string can be represented in the shared strings file -* §1.1 - "simple" strings -* §1.2 - rich text formatted strings - -* Following is an example how this file could be set up; 2 strings in simple formatting, 3rd string rich textformatted - - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <sst uniqueCount="6" count="6" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <si> -* <t>This is a teststring 1</t> -* </si> -* <si> -* <t>This is a teststring 2</t> -* </si> -* <si> -* <r> -* <t>T</t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color rgb="FFFF0000"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t xml:space="preserve">his is a </t> -* </r> -* <r> -* <rPr> -* <sz val="11"/> -* <color theme="1"/> -* <rFont val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </rPr> -* <t>teststring 3</t> -* </r> -* </si> -* </sst> -*--------------------------------------------------------------------* - - lo_shared_strings_xml = me->get_ixml_from_zip_archive( i_filename = ip_path - is_normalizing = space ). " NO!!! normalizing - otherwise leading blanks will be omitted and that is not really desired for the stringtable - lo_node_si ?= lo_shared_strings_xml->find_from_name( 'si' ). - WHILE lo_node_si IS BOUND. - - APPEND INITIAL LINE TO me->shared_strings ASSIGNING <lv_shared_string>. " Each <si>-entry in the xml-file must lead to an entry in our stringtable - lo_node_si_child ?= lo_node_si->get_first_child( ). - IF lo_node_si_child IS BOUND. - lv_tag_name = lo_node_si_child->get_name( ). - IF lv_tag_name = 't'. -*--------------------------------------------------------------------* -* §1.1 - "simple" strings -* Example: see above -*--------------------------------------------------------------------* - <lv_shared_string> = lo_node_si_child->get_value( ). - ELSE. -*--------------------------------------------------------------------* -* §1.2 - rich text formatted strings -* it is sufficient to strip the <t>...</t> tag from each <r>-tag and concatenate these -* as long as rich text formatting is not supported (2do§1) ignore all info about formatting -* Example: see above -*--------------------------------------------------------------------* - WHILE lo_node_si_child IS BOUND. " actually these children of <si> are <r>-tags - - lo_node_r_child_t ?= lo_node_si_child->find_from_name( 't' ). " extract the <t>...</t> part of each <r>-tag - IF lo_node_r_child_t IS BOUND. - lv_node_value = lo_node_r_child_t->get_value( ). - CONCATENATE <lv_shared_string> lv_node_value INTO <lv_shared_string> RESPECTING BLANKS. - ENDIF. - - lo_node_si_child ?= lo_node_si_child->get_next( ). - - ENDWHILE. - ENDIF. - ENDIF. - - lo_node_si ?= lo_node_si->get_next( ). - ENDWHILE. - - endmethod. - - - - - - method LOAD_STYLES. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (wip ) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_xf, - applyalignment TYPE string, - applyborder TYPE string, - applyfill TYPE string, - applyfont TYPE string, - applynumberformat TYPE string, - applyprotection TYPE string, - borderid TYPE string, - fillid TYPE string, - fontid TYPE string, - numfmtid TYPE string, - pivotbutton TYPE string, - quoteprefix TYPE string, - xfid TYPE string, - END OF lty_xf. - - TYPES: BEGIN OF lty_alignment, - horizontal TYPE string, - indent TYPE string, - justifylastline TYPE string, - readingorder TYPE string, - relativeindent TYPE string, - shrinktofit TYPE string, - textrotation TYPE string, - vertical TYPE string, - wraptext TYPE string, - END OF lty_alignment. - - TYPES: BEGIN OF lty_protection, - hidden TYPE string, - locked TYPE string, - END OF lty_protection. - - DATA: lo_styles_xml TYPE REF TO if_ixml_document, - lo_style TYPE REF TO zcl_excel_style, - - lt_num_formats TYPE t_num_formats, - lt_fills TYPE t_fills, - lt_borders TYPE t_borders, - lt_fonts TYPE t_fonts, - - ls_num_format TYPE t_num_format, - ls_fill TYPE REF TO zcl_excel_style_fill, - ls_cell_border TYPE REF TO zcl_excel_style_borders, - ls_font TYPE REF TO zcl_excel_style_font, - - lo_node_cellxfs TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_alignment TYPE REF TO if_ixml_element, - lo_node_cellxfs_xf_protection TYPE REF TO if_ixml_element, - - lo_nodes_xf TYPE REF TO if_ixml_node_collection, - lo_iterator_cellxfs TYPE REF TO if_ixml_node_iterator, - - ls_xf TYPE lty_xf, - ls_alignment TYPE lty_alignment, - ls_protection TYPE lty_protection, - lv_index TYPE i. - -*--------------------------------------------------------------------* -* To build a complete style that fully describes how a cell looks like -* we need the various parts -* §1 - Numberformat -* §2 - Fillstyle -* §3 - Borders -* §4 - Font -* §5 - Alignment -* §6 - Protection - -* Following is an example how this part of a file could be set up -* ... -* parts with various formatinformation - see §1,§2,§3,§4 -* ... -* <cellXfs count="26"> -* <xf numFmtId="0" borderId="0" fillId="0" fontId="0" xfId="0"/> -* <xf numFmtId="0" borderId="0" fillId="2" fontId="0" xfId="0" applyFill="1"/> -* <xf numFmtId="0" borderId="1" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="2" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="3" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="4" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* <xf numFmtId="0" borderId="0" fillId="3" fontId="0" xfId="0" applyFill="1" applyBorder="1"/> -* ... -* </cellXfs> -*--------------------------------------------------------------------* - - lo_styles_xml = me->get_ixml_from_zip_archive( ip_path ). - -*--------------------------------------------------------------------* -* The styles are build up from -* §1 number formats -* §2 fill styles -* §3 border styles -* §4 fonts -* These need to be read before we can try to build up a complete -* style that describes the look of a cell -*--------------------------------------------------------------------* - lt_num_formats = load_style_num_formats( lo_styles_xml ). " §1 - lt_fills = load_style_fills( lo_styles_xml ). " §2 - lt_borders = load_style_borders( lo_styles_xml ). " §3 - lt_fonts = load_style_fonts( lo_styles_xml ). " §4 - -*--------------------------------------------------------------------* -* Now everything is prepared to build a "full" style -*--------------------------------------------------------------------* - lo_node_cellxfs = lo_styles_xml->find_from_name( name = 'cellXfs' ). - IF lo_node_cellxfs IS BOUND. - lo_nodes_xf = lo_node_cellxfs->get_elements_by_tag_name( name = 'xf' ). - lo_iterator_cellxfs = lo_nodes_xf->create_iterator( ). - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - WHILE lo_node_cellxfs_xf IS BOUND. - - lo_style = ip_excel->add_new_style( ). - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf - CHANGING - cp_structure = ls_xf ). -*--------------------------------------------------------------------* -* §2 fill style -*--------------------------------------------------------------------* - IF ls_xf-applyfill = '1' AND ls_xf-fillid IS NOT INITIAL. - lv_index = ls_xf-fillid + 1. - READ TABLE lt_fills INTO ls_fill INDEX lv_index. - IF sy-subrc = 0. - lo_style->fill = ls_fill. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §1 number format -*--------------------------------------------------------------------* - IF ls_xf-numfmtid IS NOT INITIAL. - READ TABLE lt_num_formats INTO ls_num_format WITH TABLE KEY id = ls_xf-numfmtid. - IF sy-subrc = 0. - lo_style->number_format = ls_num_format-format. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §3 border style -*--------------------------------------------------------------------* - IF ls_xf-applyborder = '1' AND ls_xf-borderid IS NOT INITIAL. - lv_index = ls_xf-borderid + 1. - READ TABLE lt_borders INTO ls_cell_border INDEX lv_index. - IF sy-subrc = 0. - lo_style->borders = ls_cell_border. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §4 font -*--------------------------------------------------------------------* - IF ls_xf-applyfont = '1' AND ls_xf-fontid IS NOT INITIAL. - lv_index = ls_xf-fontid + 1. - READ TABLE lt_fonts INTO ls_font INDEX lv_index. - IF sy-subrc = 0. - lo_style->font = ls_font. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §5 - Alignment -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_alignment ?= lo_node_cellxfs_xf->find_from_name( 'alignment' ). - IF lo_node_cellxfs_xf_alignment IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_alignment - CHANGING - cp_structure = ls_alignment ). - IF ls_alignment-horizontal IS NOT INITIAL. - lo_style->alignment->horizontal = ls_alignment-horizontal. - ENDIF. - - IF ls_alignment-vertical IS NOT INITIAL. - lo_style->alignment->vertical = ls_alignment-vertical. - ENDIF. - - IF ls_alignment-textrotation IS NOT INITIAL. - lo_style->alignment->textrotation = ls_alignment-textrotation. - ENDIF. - - IF ls_alignment-wraptext = '1' OR ls_alignment-wraptext = 'true'. - lo_style->alignment->wraptext = abap_true. - ENDIF. - - IF ls_alignment-shrinktofit = '1' OR ls_alignment-shrinktofit = 'true'. - lo_style->alignment->shrinktofit = abap_true. - ENDIF. - - IF ls_alignment-indent IS NOT INITIAL. - lo_style->alignment->indent = ls_alignment-indent. - ENDIF. - ENDIF. - -*--------------------------------------------------------------------* -* §6 - Protection -*--------------------------------------------------------------------* - lo_node_cellxfs_xf_protection ?= lo_node_cellxfs_xf->find_from_name( 'protection' ). - IF lo_node_cellxfs_xf_protection IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_cellxfs_xf_protection - CHANGING - cp_structure = ls_protection ). - IF ls_protection-locked = '1' OR ls_protection-locked = 'true'. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_locked. - ELSE. - lo_style->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - ENDIF. - - IF ls_protection-hidden = '1' OR ls_protection-hidden = 'true'. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_hidden. - ELSE. - lo_style->protection->hidden = zcl_excel_style_protection=>c_protection_unhidden. - ENDIF. - - ENDIF. - - INSERT lo_style INTO TABLE me->styles. - - lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ). - - ENDWHILE. - ENDIF. - - endmethod. - - - - - method LOAD_STYLE_BORDERS. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_border TYPE REF TO if_ixml_element, - lo_node_bordertype TYPE REF TO if_ixml_element, - lo_node_bordercolor TYPE REF TO if_ixml_element, - lo_cell_border TYPE REF TO zcl_excel_style_borders, - lo_border TYPE REF TO zcl_excel_style_border, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used borderformats to build up our styles -* §1 A cell has 4 outer borders and 2 diagonal "borders" -* These borders can be formatted separately but the diagonal borders -* are always being formatted the same -* We'll parse through the <border>-tag for each of the bordertypes -* §2 and read the corresponding formatting information - -* Following is an example how this part of a file could be set up -* <border diagonalDown="1"> -* <left style="mediumDashDotDot"> -* <color rgb="FFFF0000"/> -* </left> -* <right/> -* <top style="thick"> -* <color rgb="FFFF0000"/> -* </top> -* <bottom style="thick"> -* <color rgb="FFFF0000"/> -* </bottom> -* <diagonal style="thick"> -* <color rgb="FFFF0000"/> -* </diagonal> -* </border> -*--------------------------------------------------------------------* - lo_node_border ?= ip_xml->find_from_name( 'border' ). - WHILE lo_node_border IS BOUND. - - CREATE OBJECT lo_cell_border. - -*--------------------------------------------------------------------* -* Diagonal borderlines are formatted the equally. Determine what kind of diagonal borders are present if any -*--------------------------------------------------------------------* -* DiagonalNone = 0 -* DiagonalUp = 1 -* DiagonalDown = 2 -* DiagonalBoth = 3 -*--------------------------------------------------------------------* - IF lo_node_border->get_attribute( 'diagonalDown' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_down to lo_cell_border->diagonal_mode. - ENDIF. - - IF lo_node_border->get_attribute( 'diagonalUp' ) IS NOT INITIAL. - add zcl_excel_style_borders=>c_diagonal_up to lo_cell_border->diagonal_mode. - ENDIF. - - lo_node_bordertype ?= lo_node_border->get_first_child( ). - WHILE lo_node_bordertype IS BOUND. -*--------------------------------------------------------------------* -* §1 Determine what kind of border we are talking about -*--------------------------------------------------------------------* -* Up, down, left, right, diagonal -*--------------------------------------------------------------------* - CREATE OBJECT lo_border. - - CASE lo_node_bordertype->get_name( ). - - WHEN 'left'. - lo_cell_border->left = lo_border. - - WHEN 'right'. - lo_cell_border->right = lo_border. - - WHEN 'top'. - lo_cell_border->top = lo_border. - - WHEN 'bottom'. - lo_cell_border->down = lo_border. - - WHEN 'diagonal'. - lo_cell_border->diagonal = lo_border. - - ENDCASE. - -*--------------------------------------------------------------------* -* §2 Read the border-formatting -*--------------------------------------------------------------------* - lo_border->border_style = lo_node_bordertype->get_attribute( 'style' ). - lo_node_bordercolor ?= lo_node_bordertype->find_from_name( 'color' ). - IF lo_node_bordercolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bordercolor - CHANGING - cp_structure = ls_color ). - - lo_border->border_color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_border->border_color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_border->border_color-theme = ls_color-theme. - ENDIF. - lo_border->border_color-tint = ls_color-tint. - ENDIF. - - lo_node_bordertype ?= lo_node_bordertype->get_next( ). - - ENDWHILE. - - INSERT lo_cell_border INTO TABLE ep_borders. - - lo_node_border ?= lo_node_border->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_FILLS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Support gradientFill -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* commenting on problems/future enhancements/todos we already know of or should decide upon -* adding comments to explain what we are trying to achieve -* renaming variables to indicate what they are used for -*--------------------------------------------------------------------* - DATA: lv_value TYPE string, - lo_node_fill TYPE REF TO if_ixml_element, - lo_node_fill_child TYPE REF TO if_ixml_element, - lo_node_bgcolor TYPE REF TO if_ixml_element, - lo_node_fgcolor TYPE REF TO if_ixml_element, - lo_node_stop TYPE REF TO if_ixml_element, - lo_fill TYPE REF TO zcl_excel_style_fill, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fillformats to build up our styles - -* Following is an example how this part of a file could be set up -* <fill> -* <patternFill patternType="gray125"/> -* </fill> -* <fill> -* <patternFill patternType="solid"> -* <fgColor rgb="FFFFFF00"/> -* <bgColor indexed="64"/> -* </patternFill> -* </fill> -*--------------------------------------------------------------------* - - lo_node_fill ?= ip_xml->find_from_name( 'fill' ). - WHILE lo_node_fill IS BOUND. - - CREATE OBJECT lo_fill. - lo_node_fill_child ?= lo_node_fill->get_first_child( ). - lv_value = lo_node_fill_child->get_name( ). - CASE lv_value. - -*--------------------------------------------------------------------* -* Patternfill -*--------------------------------------------------------------------* - WHEN 'patternFill'. - lo_fill->filltype = lo_node_fill_child->get_attribute( 'patternType' ). -*--------------------------------------------------------------------* -* Patternfill - background color -*--------------------------------------------------------------------* - lo_node_bgcolor = lo_node_fill_child->find_from_name( 'bgColor' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - -*--------------------------------------------------------------------* -* Patternfill - foreground color -*--------------------------------------------------------------------* - lo_node_fgcolor = lo_node_fill->find_from_name( 'fgColor' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - - -*--------------------------------------------------------------------* -* gradientFill -*--------------------------------------------------------------------* - WHEN 'gradientFill'. - lo_fill->gradtype-type = lo_node_fill_child->get_attribute( 'type' ). - lo_fill->gradtype-top = lo_node_fill_child->get_attribute( 'top' ). - lo_fill->gradtype-left = lo_node_fill_child->get_attribute( 'left' ). - lo_fill->gradtype-right = lo_node_fill_child->get_attribute( 'right' ). - lo_fill->gradtype-bottom = lo_node_fill_child->get_attribute( 'bottom' ). - lo_fill->gradtype-degree = lo_node_fill_child->get_attribute( 'degree' ). - free lo_node_stop. - lo_node_stop ?= lo_node_fill_child->find_from_name( 'stop' ). - while lo_node_stop is bound. - if lo_fill->gradtype-position1 is initial. - lo_fill->gradtype-position1 = lo_node_stop->get_attribute( 'position' ). - lo_node_bgcolor = lo_node_stop->find_from_name( 'color' ). - IF lo_node_bgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_bgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->bgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->bgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->bgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->bgcolor-tint = ls_color-tint. - ENDIF. - elseif lo_fill->gradtype-position2 is initial. - lo_fill->gradtype-position2 = lo_node_stop->get_attribute( 'position' ). - lo_node_fgcolor = lo_node_stop->find_from_name( 'color' ). - IF lo_node_fgcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node_fgcolor - CHANGING - cp_structure = ls_color ). - - lo_fill->fgcolor-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_fill->fgcolor-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_fill->fgcolor-theme = ls_color-theme. - ENDIF. - lo_fill->fgcolor-tint = ls_color-tint. - ENDIF. - elseif lo_fill->gradtype-position3 is initial. - lo_fill->gradtype-position3 = lo_node_stop->get_attribute( 'position' ). - "BGColor is filled already with position 1 no need to check again - endif. - - lo_node_stop ?= lo_node_stop->get_next( ). - ENDWHILE. - - WHEN OTHERS. - - ENDCASE. - - - INSERT lo_fill INTO TABLE ep_fills. - - lo_node_fill ?= lo_node_fill->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_FONTS. - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* aligning code -* removing unused variables -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - DATA: lo_node_font TYPE REF TO if_ixml_element, - lo_node2 TYPE REF TO if_ixml_element, - lo_font TYPE REF TO zcl_excel_style_font, - ls_color TYPE t_color. - -*--------------------------------------------------------------------* -* We need a table of used fonts to build up our styles - -* Following is an example how this part of a file could be set up -* <font> -* <sz val="11"/> -* <color theme="1"/> -* <name val="Calibri"/> -* <family val="2"/> -* <scheme val="minor"/> -* </font> -*--------------------------------------------------------------------* - lo_node_font ?= ip_xml->find_from_name( 'font' ). - WHILE lo_node_font IS BOUND. - - CREATE OBJECT lo_font. -*--------------------------------------------------------------------* -* Bold -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'b' ) IS BOUND. - lo_font->bold = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Italic -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'i' ) IS BOUND. - lo_font->italic = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Underline -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'u' ). - IF lo_node2 IS BOUND. - lo_font->underline = abap_true. - lo_font->underline_mode = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* StrikeThrough -*--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'strike' ) IS BOUND. - lo_font->strikethrough = abap_true. - ENDIF. - -*--------------------------------------------------------------------* -* Fontsize -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'sz' ). - IF lo_node2 IS BOUND. - lo_font->size = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontname -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'name' ). - IF lo_node2 IS BOUND. - lo_font->name = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontfamily -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'family' ). - IF lo_node2 IS BOUND. - lo_font->family = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontscheme -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'scheme' ). - IF lo_node2 IS BOUND. - lo_font->scheme = lo_node2->get_attribute( 'val' ). - ENDIF. - -*--------------------------------------------------------------------* -* Fontcolor -*--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'color' ). - IF lo_node2 IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node2 - CHANGING - cp_structure = ls_color ). - lo_font->color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_font->color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_font->color-theme = ls_color-theme. - ENDIF. - lo_font->color-tint = ls_color-tint. - ENDIF. - - INSERT lo_font INTO TABLE ep_fonts. - - lo_node_font ?= lo_node_font->get_next( ). - - ENDWHILE. - - - endmethod. - - - - - method LOAD_STYLE_NUM_FORMATS. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Explain gaps in predefined formats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-25 -* - ... -* changes: renaming variables and types to naming conventions -* adding comments to explain what we are trying to achieve -* aligning code -*--------------------------------------------------------------------* - DATA: lo_node_numfmt TYPE REF TO if_ixml_element, - ls_num_format TYPE t_num_format. - -*--------------------------------------------------------------------* -* We need a table of used numberformats to build up our styles -* there are two kinds of numberformats -* §1 those that have been explicitly added by the createor of the excel-file -* §2 and built-in numberformats -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 Get non-internal numberformats that are found in the file explicitly - -* Following is an example how this part of a file could be set up -* <numFmts count="1"> -* <numFmt formatCode="#,###,###,###,##0.00" numFmtId="164"/> -* </numFmts> -*--------------------------------------------------------------------* - lo_node_numfmt ?= ip_xml->find_from_name( 'numFmt' ). - WHILE lo_node_numfmt IS BOUND. - - CLEAR ls_num_format. - - CREATE OBJECT ls_num_format-format. - ls_num_format-format->format_code = lo_node_numfmt->get_attribute( 'formatCode' ). - ls_num_format-id = lo_node_numfmt->get_attribute( 'numFmtId' ). - INSERT ls_num_format INTO TABLE ep_num_formats. - - lo_node_numfmt ?= lo_node_numfmt->get_next( ). - - ENDWHILE. - - DEFINE predefined_format. - ls_num_format-id = &1. - create object ls_num_format-format. - ls_num_format-format->format_code = &2. - insert ls_num_format into table ep_num_formats. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* §1 Get internal predefined numberformats -*--------------------------------------------------------------------* - predefined_format '1' '0'. - predefined_format '2' '0.00'. - predefined_format '3' '#,##0'. - predefined_format '4' '#,##0.00'. - predefined_format '5' '$#,##0_);($#,##0)'. - predefined_format '6' '$#,##0_);[Red]($#,##0)'. - predefined_format '7' '$#,##0.00_);($#,##0.00)'. - predefined_format '8' '$#,##0.00_);[Red]($#,##0.00)'. - predefined_format '9' '0%'. - predefined_format '10' '0.00%'. - predefined_format '11' '0.00E+00'. - predefined_format '12' '# ?/?'. - predefined_format '13' '# ??/??'. - predefined_format '14' 'm/d/yyyy'. - predefined_format '15' 'd-mmm-yy'. - predefined_format '16' 'd-mmm'. - predefined_format '17' 'mmm-yy'. - predefined_format '18' 'h:mm AM/PM'. - predefined_format '19' 'h:mm:ss AM/PM'. - predefined_format '20' 'h:mm'. - predefined_format '21' 'h:mm:ss'. - predefined_format '22' 'm/d/yyyy h:mm'. -* 2do§1 Why is there a gap in here? - - - - - - - - - - - - - - predefined_format '37' '#,##0_);(#,##0)'. - predefined_format '38' '#,##0_);[Red](#,##0)'. - predefined_format '39' '#,##0.00_);(#,##0.00)'. - predefined_format '40' '#,##0.00_);[Red](#,##0.00)'. -* 2do§1 Why is there a gap in here? - - - - predefined_format '45' 'mm:ss'. - predefined_format '46' '[h]:mm:ss'. - predefined_format '47' 'mm:ss.0'. - predefined_format '48' '##0.0E+0'. - predefined_format '49' '@'. -* 2do§1 Is 49 really the last predefined format? - - - endmethod. - - - - - - method LOAD_WORKBOOK. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Move macro-reading from zcl_excel_reader_xlsm to this class -* autodetect existance of macro/vba content -* Allow inputparameter to explicitly tell reader to ignore vba-content -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-10 -* - ... -* changes: renaming variables to naming conventions -* aligning code -* removing unused variables -* adding me-> where possible -* renaming variables to indicate what they are used for -* adding comments to explain what we are trying to achieve -* renaming i/o parameters: previous input-parameter ip_path holds a (full) filename and not a path --> rename to iv_workbook_full_filename -* ip_excel renamed while being at it --> rename to io_excel -*--------------------------------------------------------------------* -* issue #232 - Read worksheetstate hidden/veryHidden -* - Stefan Schmöcker, 2012-11-11 -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 -* changes: correction in named ranges to correctly attach -* sheetlocal names/ranges to the correct sheet -*--------------------------------------------------------------------* -* issue#284 - Copied formulae ignored when reading excelfile -* - Stefan Schmöcker, 2013-08-02 -* changes: initialize area to hold referenced formulaedata -* after all worksheets have been read resolve formuae -*--------------------------------------------------------------------* - - CONSTANTS: lcv_shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - lcv_worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lcv_styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lcv_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - begin data declarations -*--------------------------------------------------------------------* - lcv_worksheet_state_hidden TYPE string VALUE 'hidden', - lcv_worksheet_state_veryhidden TYPE string VALUE 'veryHidden'. -*--------------------------------------------------------------------* -* #232: Read worksheetstate hidden/veryHidden - end data declarations -*--------------------------------------------------------------------* - - DATA: - lv_path TYPE string, - lv_filename TYPE chkfile, - lv_full_filename TYPE string, - - lo_rels_workbook TYPE REF TO if_ixml_document, - lt_worksheets TYPE STANDARD TABLE OF t_relationship WITH NON-UNIQUE DEFAULT KEY, - lo_workbook TYPE REF TO if_ixml_document, - lv_workbook_index TYPE i, - lv_worksheet_path TYPE string, - ls_sheet TYPE t_sheet, - - lo_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lv_worksheet_title TYPE zexcel_sheet_title, - lv_tabix TYPE sytabix, " #235 - repeat rows/cols. Needed to link defined name to correct worksheet - - ls_range TYPE t_range, - lv_range_value TYPE zexcel_range_value, -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin data declarations -*--------------------------------------------------------------------* - lv_active_sheet_string TYPE string, - lv_zexcel_active_worksheet TYPE zexcel_active_worksheet, -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - added autofilter support while changing this section - lo_autofilter TYPE REF TO zcl_excel_autofilter, - ls_area TYPE zexcel_s_autofilter_area, - lv_col_start_alpha TYPE zexcel_cell_column_alpha, - lv_col_end_alpha TYPE zexcel_cell_column_alpha, - lv_row_start TYPE zexcel_cell_row, - lv_row_end TYPE zexcel_cell_row , - lv_regex TYPE string, - lv_range_value_1 TYPE zexcel_range_value, - lv_range_value_2 TYPE zexcel_range_value. -*--------------------------------------------------------------------* -* #229: Set active worksheet - end data declarations -*--------------------------------------------------------------------* - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - -*--------------------------------------------------------------------* - -* §1 Get the position of files related to this workbook -* Usually this will be <root>/xl/workbook.xml -* Thus the workbookroot will be <root>/xl/ -* The position of all related files will be given in file -* <workbookroot>/_rels/<workbookfilename>.rels and their positions -* be be given relative to the workbookroot - -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> -* <Relationship Target="styles.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Id="rId6"/> -* <Relationship Target="theme/theme1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Id="rId5"/> -* <Relationship Target="worksheets/sheet1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId1"/> -* <Relationship Target="worksheets/sheet2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId2"/> -* <Relationship Target="worksheets/sheet3.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId3"/> -* <Relationship Target="worksheets/sheet4.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Id="rId4"/> -* <Relationship Target="sharedStrings.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Id="rId7"/> -* </Relationships> -* -* §2 Load data that is relevant to the complete workbook -* Currently supported is: -* §2.1 Shared strings - This holds all strings that are used in all worksheets -* §2.2 Styles - This holds all styles that are used in all worksheets -* §2.3 Worksheets - For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* §2.4 [Themes] - not supported -* §2.5 [VBA (Macro)] - supported in class zcl_excel_reader_xlsm but should be moved here and autodetect -* ... -* -* §3 Some information is held in the workbookfile as well -* §3.1 Names and order of of worksheets -* §3.2 Active worksheet -* §3.3 Defined names -* ... -* Following is an example how this file could be set up - -* <?xml version="1.0" encoding="UTF-8" standalone="true"?> -* <workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> -* <fileVersion rupBuild="4506" lowestEdited="4" lastEdited="4" appName="xl"/> -* <workbookPr defaultThemeVersion="124226"/> -* <bookViews> -* <workbookView activeTab="1" windowHeight="8445" windowWidth="19035" yWindow="120" xWindow="120"/> -* </bookViews> -* <sheets> -* <sheet r:id="rId1" sheetId="1" name="Sheet1"/> -* <sheet r:id="rId2" sheetId="2" name="Sheet2"/> -* <sheet r:id="rId3" sheetId="3" name="Sheet3" state="hidden"/> -* <sheet r:id="rId4" sheetId="4" name="Sheet4"/> -* </sheets> -* <definedNames/> -* <calcPr calcId="125725"/> -* </workbook> -*--------------------------------------------------------------------* - - CLEAR me->mt_ref_formulae. " ins issue#284 - -*--------------------------------------------------------------------* -* §1 Get the position of files related to this workbook -* Entry into this method is with the filename of the workbook -*--------------------------------------------------------------------* - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = lv_filename - file_path = lv_path. - - CONCATENATE lv_path '_rels/' lv_filename '.rels' - INTO lv_full_filename. - lo_rels_workbook = me->get_ixml_from_zip_archive( lv_full_filename ). - - lo_node ?= lo_rels_workbook->find_from_name( 'Relationship' ). "#EC NOTEXT - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING ip_element = lo_node CHANGING cp_structure = ls_relationship ). - - CASE ls_relationship-type. - -*--------------------------------------------------------------------* -* §2.1 Shared strings - This holds all strings that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_shared_strings. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_shared_strings( lv_full_filename ). - -*--------------------------------------------------------------------* -* §2.3 Worksheets -* For each worksheet in the workbook one entry appears here to point to the file that holds the content of this worksheet -* Shared strings and styles have to be present before we can start with creating the worksheets -* thus we only store this information for use when parsing the workbookfile for sheetinformations -*--------------------------------------------------------------------* - WHEN lcv_worksheet. - APPEND ls_relationship TO lt_worksheets. - -*--------------------------------------------------------------------* -* §2.2 Styles - This holds the styles that are used in all worksheets -*--------------------------------------------------------------------* - WHEN lcv_styles. - CONCATENATE lv_path ls_relationship-target - INTO lv_full_filename. - me->load_styles( ip_path = lv_full_filename - ip_excel = io_excel ). - - WHEN OTHERS. - - ENDCASE. - - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - -*--------------------------------------------------------------------* -* §3 Some information held in the workbookfile -*--------------------------------------------------------------------* - lo_workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - -*--------------------------------------------------------------------* -* §3.1 Names and order of of worksheets -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'sheet' ). - lv_workbook_index = 1. - WHILE lo_node IS BOUND. - - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_sheet ). -*--------------------------------------------------------------------* -* Create new worksheet in workbook with correct name -*--------------------------------------------------------------------* - lv_worksheet_title = ls_sheet-name. - IF lv_workbook_index = 1. " First sheet has been added automatically by creating io_excel - lo_worksheet = io_excel->get_active_worksheet( ). - lo_worksheet->set_title( lv_worksheet_title ). - ELSE. - lo_worksheet = io_excel->add_new_worksheet( lv_worksheet_title ). - ENDIF. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - begin of coding -* Set status hidden if necessary -*--------------------------------------------------------------------* - CASE ls_sheet-state. - - WHEN lcv_worksheet_state_hidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - WHEN lcv_worksheet_state_veryhidden. - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_veryhidden. - - ENDCASE. -*--------------------------------------------------------------------* -* #232 - Read worksheetstate hidden/veryHidden - end of coding -*--------------------------------------------------------------------* -*--------------------------------------------------------------------* -* Load worksheetdata -*--------------------------------------------------------------------* - READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_sheet-id. - IF sy-subrc = 0. - <worksheet>-sheetid = ls_sheet-sheetid. "ins #235 - repeat rows/cols - needed to identify correct sheet - CONCATENATE lv_path <worksheet>-target - INTO lv_worksheet_path. - me->load_worksheet( ip_path = lv_worksheet_path - io_worksheet = lo_worksheet ). - <worksheet>-worksheet = lo_worksheet. - ENDIF. - - lo_node ?= lo_node->get_next( ). - ADD 1 TO lv_workbook_index. - - ENDWHILE. - SORT lt_worksheets BY sheetid. " needed for localSheetid -referencing - -*--------------------------------------------------------------------* -* #284: Set active worksheet - Resolve referenced formulae to -* explicit formulae those cells -*--------------------------------------------------------------------* - me->resolve_referenced_formulae( ). - " ins issue#284 -*--------------------------------------------------------------------* -* #229: Set active worksheet - begin coding -* §3.2 Active worksheet -*--------------------------------------------------------------------* - lv_zexcel_active_worksheet = 1. " First sheet = active sheet if nothing else specified. - lo_node ?= lo_workbook->find_from_name( 'workbookView' ). - IF lo_node IS BOUND. - lv_active_sheet_string = lo_node->get_attribute( 'activeTab' ). - TRY. - lv_zexcel_active_worksheet = lv_active_sheet_string + 1. " EXCEL numbers the sheets from 0 onwards --> index into worksheettable is increased by one - CATCH cx_sy_conversion_error. "#EC NO_HANDLER - error here --> just use the default 1st sheet - ENDTRY. - ENDIF. - io_excel->set_active_sheet_index( lv_zexcel_active_worksheet ). -*--------------------------------------------------------------------* -* #229: Set active worksheet - end coding -*--------------------------------------------------------------------* - - -*--------------------------------------------------------------------* -* §3.3 Defined names -* So far I have encountered these -* - named ranges - sheetlocal -* - named ranges - workbookglobal -* - autofilters - sheetlocal ( special range ) -* - repeat rows/cols - sheetlocal ( special range ) -* -*--------------------------------------------------------------------* - lo_node ?= lo_workbook->find_from_name( 'definedName' ). - WHILE lo_node IS BOUND. - - CLEAR lo_range. "ins issue #235 - repeat rows/cols - me->fill_struct_from_attributes( EXPORTING - ip_element = lo_node - CHANGING - cp_structure = ls_range ). - lv_range_value = lo_node->get_value( ). - - IF ls_range-localsheetid IS NOT INITIAL. " issue #163+ -* READ TABLE lt_worksheets ASSIGNING <worksheet> WITH KEY id = ls_range-localsheetid. "del issue #235 - repeat rows/cols " issue #163+ -* lo_range = <worksheet>-worksheet->add_new_range( ). "del issue #235 - repeat rows/cols " issue #163+ -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - begin -*--------------------------------------------------------------------* - lv_tabix = ls_range-localsheetid + 1. - READ TABLE lt_worksheets ASSIGNING <worksheet> INDEX lv_tabix. - IF sy-subrc = 0. - CASE ls_range-name. - -*--------------------------------------------------------------------* -* insert autofilters -*--------------------------------------------------------------------* - WHEN zcl_excel_autofilters=>c_autofilter. - lo_autofilter = io_excel->add_new_autofilter( io_sheet = <worksheet>-worksheet ) . - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = ls_area-row_start ). - ls_area-col_start = zcl_excel_common=>convert_column2int( lv_col_start_alpha ). - ls_area-col_end = zcl_excel_common=>convert_column2int( lv_col_end_alpha ). - lo_autofilter->set_filter_area( is_area = ls_area ). - -*--------------------------------------------------------------------* -* repeat print rows/columns -*--------------------------------------------------------------------* - WHEN zif_excel_sheet_printsettings=>gcv_print_title_name. - lo_range = <worksheet>-worksheet->add_new_range( ). -*--------------------------------------------------------------------* -* This might be a temporary solution. Maybe ranges get be reworked -* to support areas consisting of multiple rectangles -* But for now just split the range into row and columnpart -*--------------------------------------------------------------------* - CLEAR:lv_range_value_1, - lv_range_value_2. - IF lv_range_value IS INITIAL. -* Empty --> nothing to do - ELSE. - IF lv_range_value(1) = `'`. " Escaped - lv_regex = `^('[^']*')+![^,]*,`. - ELSE. - lv_regex = `^[^!]*![^,]*,`. - ENDIF. -* Split into two ranges if necessary - FIND REGEX lv_regex IN lv_range_value MATCH LENGTH sy-fdpos. - IF sy-subrc = 0 AND sy-fdpos > 0. - lv_range_value_2 = lv_range_value+sy-fdpos. - SUBTRACT 1 FROM sy-fdpos. - lv_range_value_1 = lv_range_value(sy-fdpos). - ELSE. - lv_range_value_1 = lv_range_value. - ENDIF. - ENDIF. -* 1st range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - -* 2nd range - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2 - IMPORTING e_column_start = lv_col_start_alpha - e_column_end = lv_col_end_alpha - e_row_start = lv_row_start - e_row_end = lv_row_end ). - IF lv_col_start_alpha IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha - iv_columns_to = lv_col_end_alpha ). - ENDIF. - IF lv_row_start IS NOT INITIAL. - <worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start - iv_rows_to = lv_row_end ). - ENDIF. - - WHEN OTHERS. - - ENDCASE. - ENDIF. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns - end -*--------------------------------------------------------------------* - ELSE. " issue #163+ - lo_range = io_excel->add_new_range( ). " issue #163+ - ENDIF. " issue #163+ -* lo_range = ip_excel->add_new_range( ). " issue #163- - IF lo_range IS BOUND. "ins issue #235 - repeat rows/cols - lo_range->name = ls_range-name. - lo_range->set_range_value( lv_range_value ). - ENDIF. "ins issue #235 - repeat rows/cols - lo_node ?= lo_node->get_next( ). - - ENDWHILE. - - endmethod. - - - - - - METHOD load_worksheet. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Header/footer -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, -* - ... -* changes: renaming variables to naming conventions -* aligning code (started) -* add a list of open ToDos here -* adding comments to explain what we are trying to achieve (started) -*--------------------------------------------------------------------* -* issue #345 - Dump on small pagemargins -* Took the chance to modularize this very long method -* by extracting the code that needed correction into -* own method ( load_worksheet_pagemargins ) -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_cell, - r TYPE string, - t TYPE string, - s TYPE string, - END OF lty_cell. - - TYPES: BEGIN OF lty_column, - min TYPE string, - max TYPE string, - width TYPE float, - customwidth TYPE string, - style TYPE string, - bestfit TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_column. - - TYPES: BEGIN OF lty_sheetview, - showgridlines TYPE zexcel_show_gridlines, - tabselected TYPE string, - zoomscalenormal TYPE string, - workbookviewid TYPE string, - showrowcolheaders TYPE string, - END OF lty_sheetview. - - TYPES: BEGIN OF lty_mergecell, - ref TYPE string, - END OF lty_mergecell. - - TYPES: BEGIN OF lty_row, - r TYPE string, - customheight TYPE string, - ht TYPE float, - spans TYPE string, - thickbot TYPE string, - customformat TYPE string, - thicktop TYPE string, - collapsed TYPE string, - hidden TYPE string, - outlinelevel TYPE string, - END OF lty_row. - - TYPES: BEGIN OF lty_page_setup, - id TYPE string, - orientation TYPE string, - scale TYPE string, - END OF lty_page_setup. - - TYPES: BEGIN OF lty_sheetformatpr, - customheight TYPE string, - defaultrowheight TYPE string, - customwidth TYPE string, - defaultcolwidth TYPE string, - END OF lty_sheetformatpr. - - TYPES: BEGIN OF lty_headerfooter, - alignwithmargins TYPE string, - differentoddeven TYPE string, - END OF lty_headerfooter. - - TYPES: BEGIN OF lty_tabcolor, - rgb TYPE string, - theme TYPE string, - END OF lty_tabcolor. - - TYPES: BEGIN OF lty_datavalidation, - type TYPE zexcel_data_val_type, - allowblank TYPE flag, - showinputmessage TYPE flag, - showerrormessage TYPE flag, - showdropdown TYPE flag, - operator TYPE zexcel_data_val_operator, - formula1 TYPE zexcel_validation_formula1, - formula2 TYPE zexcel_validation_formula1, - sqref TYPE string, - cell_column TYPE zexcel_cell_column_alpha, - cell_column_to TYPE zexcel_cell_column_alpha, - cell_row TYPE zexcel_cell_row, - cell_row_to TYPE zexcel_cell_row, - error TYPE string, - errortitle TYPE string, - prompt TYPE string, - prompttitle TYPE string, - errorstyle TYPE zexcel_data_val_error_style, - END OF lty_datavalidation. - - - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1', - lc_rel_drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_rel_hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', - lc_rel_printer TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings'. - - DATA: lo_ixml_worksheet TYPE REF TO if_ixml_document, - lo_ixml_cells TYPE REF TO if_ixml_node_collection, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, - lo_ixml_row_elem TYPE REF TO if_ixml_element, - lo_ixml_cell_elem TYPE REF TO if_ixml_element, - ls_cell TYPE lty_cell, - lv_index TYPE i, - lo_ixml_value_elem TYPE REF TO if_ixml_element, - lo_ixml_formula_elem TYPE REF TO if_ixml_element, - lv_cell_value TYPE zexcel_cell_value, - lv_cell_formula TYPE zexcel_cell_formula, - lv_cell_column TYPE zexcel_cell_column_alpha, - lv_cell_row TYPE zexcel_cell_row, - lo_excel_style TYPE REF TO zcl_excel_style, - lv_style_guid TYPE zexcel_cell_style, - - lo_ixml_imension_elem TYPE REF TO if_ixml_element, "#+234 - lv_dimension_range TYPE string, "#+234 - - lo_ixml_sheetview_elem TYPE REF TO if_ixml_element, - ls_sheetview TYPE lty_sheetview, - lo_ixml_pane_elem TYPE REF TO if_ixml_element, - ls_excel_pane TYPE zexcel_pane, - lv_pane_cell_row TYPE zexcel_cell_row, - lv_pane_cell_col_a TYPE zexcel_cell_column_alpha, - lv_pane_cell_col TYPE zexcel_cell_column, - - lo_ixml_mergecells TYPE REF TO if_ixml_node_collection, - lo_ixml_mergecell_elem TYPE REF TO if_ixml_element, - ls_mergecell TYPE lty_mergecell, - lv_merge_column_start TYPE zexcel_cell_column_alpha, - lv_merge_column_end TYPE zexcel_cell_column_alpha, - lv_merge_row_start TYPE zexcel_cell_row, - lv_merge_row_end TYPE zexcel_cell_row, - - lo_ixml_sheetformatpr_elem TYPE REF TO if_ixml_element, - ls_sheetformatpr TYPE lty_sheetformatpr, - lv_height TYPE float, - - lo_ixml_headerfooter_elem TYPE REF TO if_ixml_element, - ls_headerfooter TYPE lty_headerfooter, - ls_odd_header TYPE zexcel_s_worksheet_head_foot, - ls_odd_footer TYPE zexcel_s_worksheet_head_foot, - ls_even_header TYPE zexcel_s_worksheet_head_foot, - ls_even_footer TYPE zexcel_s_worksheet_head_foot, - lo_ixml_hf_value_elem TYPE REF TO if_ixml_element, - - lo_ixml_pagesetup_elem TYPE REF TO if_ixml_element, - ls_pagesetup TYPE lty_page_setup, - - lo_ixml_columns TYPE REF TO if_ixml_node_collection, - lo_ixml_column_elem TYPE REF TO if_ixml_element, - ls_column TYPE lty_column, - lv_column_alpha TYPE zexcel_cell_column_alpha, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_outline_level TYPE int4, - - lo_ixml_tabcolor TYPE REF TO if_ixml_element, - ls_tabcolor TYPE lty_tabcolor, - ls_excel_s_tabcolor TYPE zexcel_s_tabcolor, - - lo_ixml_rows TYPE REF TO if_ixml_node_collection, - ls_row TYPE lty_row, - lv_max_col TYPE i, "for use with SPANS element -* lv_min_col TYPE i, "for use with SPANS element " not in use currently - lv_max_col_s TYPE char10, "for use with SPANS element - lv_min_col_s TYPE char10, "for use with SPANS element - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, -*--- End of current code aligning ------------------------------------------------------------------- - - lv_path TYPE string, - lo_ixml_node TYPE REF TO if_ixml_element, - ls_relationship TYPE t_relationship, - lo_ixml_rels_worksheet TYPE REF TO if_ixml_document, - lv_rels_worksheet_path TYPE string, - lv_stripped_name TYPE chkfile, - lv_dirname TYPE string, - - lt_external_hyperlinks TYPE gtt_external_hyperlinks, - ls_external_hyperlink LIKE LINE OF lt_external_hyperlinks, - - lo_ixml_datavalidations TYPE REF TO if_ixml_node_collection, - lo_ixml_datavalidation_elem TYPE REF TO if_ixml_element, - ls_datavalidation TYPE lty_datavalidation, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_datavalidation_range TYPE string, - lt_datavalidation_range TYPE TABLE OF string. - -*--------------------------------------------------------------------* -* §2 We need to read the the file "\\_rels\.rels" because it tells -* us where in this folder structure the data for the workbook -* is located in the xlsx zip-archive -* -* The xlsx Zip-archive has generally the following folder structure: -* <root> | -* |--> _rels -* |--> doc_Props -* |--> xl | -* |--> _rels -* |--> theme -* |--> worksheets -*--------------------------------------------------------------------* - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = lv_stripped_name - file_path = lv_dirname. - CONCATENATE lv_dirname '_rels/' lv_stripped_name '.rels' - INTO lv_rels_worksheet_path. - TRY. " +#222 _rels/xxx.rels might not be present. If not found there can be no drawings --> just ignore this section - lo_ixml_rels_worksheet = me->get_ixml_from_zip_archive( lv_rels_worksheet_path ). - lo_ixml_node ?= lo_ixml_rels_worksheet->find_from_name( 'Relationship' ). - CATCH zcx_excel. "#EC NO_HANDLER +#222 - " +#222 No errorhandling necessary - node will be unbound if error occurs - ENDTRY. " +#222 - WHILE lo_ixml_node IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_node - CHANGING - cp_structure = ls_relationship ). - CONCATENATE lv_dirname ls_relationship-target INTO lv_path. - lv_path = resolve_path( lv_path ). - - CASE ls_relationship-type. - WHEN lc_rel_drawing. - " Read Drawings -* Issue # 339 Not all drawings are in the path mentioned below. -* Some Excel elements like textfields (which we don't support ) have a drawing-part in the relationsships -* but no "xl/drawings/_rels/drawing____.xml.rels" part. -* Since we don't support these there is no need to read them. Catching exceptions thrown -* in the "load_worksheet_drawing" shouldn't lead to an abortion of the reading - TRY. - me->load_worksheet_drawing( ip_path = lv_path - io_worksheet = io_worksheet ). - CATCH zcx_excel. "--> then ignore it " SS - inserted weil sonst Fehler aber noch nicht zu assembla übertragen - ENDTRY. - - WHEN lc_rel_printer. - " Read Printer settings - - WHEN lc_rel_hyperlink. - MOVE-CORRESPONDING ls_relationship TO ls_external_hyperlink. - INSERT ls_external_hyperlink INTO TABLE lt_external_hyperlinks. - - WHEN OTHERS. - ENDCASE. - - lo_ixml_node ?= lo_ixml_node->get_next( ). - ENDWHILE. - - - lo_ixml_worksheet = me->get_ixml_from_zip_archive( ip_path ). - - - lo_ixml_tabcolor ?= lo_ixml_worksheet->find_from_name( 'tabColor' ). - IF lo_ixml_tabcolor IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_tabcolor - CHANGING - cp_structure = ls_tabcolor ). -* Theme not supported yet - IF ls_tabcolor-rgb IS NOT INITIAL. - ls_excel_s_tabcolor-rgb = ls_tabcolor-rgb. - io_worksheet->set_tabcolor( ls_excel_s_tabcolor ). - ENDIF. - ENDIF. - - lo_ixml_rows = lo_ixml_worksheet->get_elements_by_tag_name( name = 'row' ). - lo_ixml_iterator = lo_ixml_rows->create_iterator( ). - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_row_elem IS BOUND. - - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_row_elem - CHANGING - cp_structure = ls_row ). - SPLIT ls_row-spans AT ':' INTO lv_min_col_s lv_max_col_s. - lv_index = lv_max_col_s. - IF lv_index > lv_max_col. - lv_max_col = lv_index. - ENDIF. - lv_cell_row = ls_row-r. - IF ls_row-customheight = '1' - OR ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int - OR ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int - OR ls_row-outlinelevel > '0'. - lo_row_dimension = io_worksheet->get_row_dimension( lv_cell_row ). - IF ls_row-customheight = '1'. - lo_row_dimension->set_row_height( ls_row-ht ). - ENDIF. - - IF ls_row-collapsed = lc_xml_attr_true - OR ls_row-collapsed = lc_xml_attr_true_int. - lo_row_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_row-hidden = lc_xml_attr_true - OR ls_row-hidden = lc_xml_attr_true_int. - lo_row_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_row-outlinelevel > ''. -* outline_level = condense( row-outlineLevel ). "For basis 7.02 and higher - CONDENSE ls_row-outlinelevel. - lv_outline_level = ls_row-outlinelevel. - IF lv_outline_level > 0. - lo_row_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - ENDIF. - - lo_ixml_cells = lo_ixml_row_elem->get_elements_by_tag_name( name = 'c' ). - lo_ixml_iterator2 = lo_ixml_cells->create_iterator( ). - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - WHILE lo_ixml_cell_elem IS BOUND. - CLEAR: lv_cell_value, - lv_cell_formula, - lv_style_guid. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_cell_elem CHANGING cp_structure = ls_cell ). - - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'v' ). - - CASE ls_cell-t. - WHEN 's'. " String values are stored as index in shared string table - lv_index = lo_ixml_value_elem->get_value( ) + 1. - READ TABLE shared_strings INTO lv_cell_value INDEX lv_index. - WHEN 'inlineStr'. " inlineStr values are kept in special node - lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'is' ). - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - WHEN OTHERS. "other types are stored directly - IF lo_ixml_value_elem IS BOUND. - lv_cell_value = lo_ixml_value_elem->get_value( ). - ENDIF. - ENDCASE. - - CLEAR lv_style_guid. - "read style based on index - IF ls_cell-s IS NOT INITIAL. - lv_index = ls_cell-s + 1. - READ TABLE styles INTO lo_excel_style INDEX lv_index. - IF sy-subrc = 0. - lv_style_guid = lo_excel_style->get_guid( ). - ENDIF. - ENDIF. - - lo_ixml_formula_elem = lo_ixml_cell_elem->find_from_name( name = 'f' ). - IF lo_ixml_formula_elem IS BOUND. - lv_cell_formula = lo_ixml_formula_elem->get_value( ). -*--------------------------------------------------------------------* -* Begin of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - DATA: BEGIN OF ls_formula_attributes, - ref TYPE string, - si TYPE i, - t TYPE string, - END OF ls_formula_attributes, - ls_ref_formula TYPE ty_ref_formulae. - - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_formula_elem CHANGING cp_structure = ls_formula_attributes ). - IF ls_formula_attributes-t = 'shared'. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - - TRY. - CLEAR ls_ref_formula. - ls_ref_formula-sheet = io_worksheet. - ls_ref_formula-row = lv_cell_row. - ls_ref_formula-column = zcl_excel_common=>convert_column2int( lv_cell_column ). - ls_ref_formula-si = ls_formula_attributes-si. - ls_ref_formula-ref = ls_formula_attributes-ref. - ls_ref_formula-formula = lv_cell_formula. - INSERT ls_ref_formula INTO TABLE me->mt_ref_formulae. - CATCH cx_root. - BREAK-POINT. - ENDTRY. - ENDIF. -*--------------------------------------------------------------------* -* End of insertion issue#284 - Copied formulae not -*--------------------------------------------------------------------* - ENDIF. - - IF lv_cell_value IS NOT INITIAL - OR lv_cell_formula IS NOT INITIAL - OR lv_style_guid IS NOT INITIAL. - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_cell-r - IMPORTING - e_column = lv_cell_column - e_row = lv_cell_row ). - io_worksheet->set_cell( ip_column = lv_cell_column " cell_elem Column - ip_row = lv_cell_row " cell_elem row_elem - ip_value = lv_cell_value " cell_elem Value - ip_formula = lv_cell_formula - ip_data_type = ls_cell-t - ip_style = lv_style_guid ). - ENDIF. - lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ). - ENDWHILE. - lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - -*--------------------------------------------------------------------* -*#234 - column width not read correctly - begin of coding -* reason - libre office doesn't use SPAN in row - definitions -*--------------------------------------------------------------------* - IF lv_max_col = 0. - lo_ixml_imension_elem = lo_ixml_worksheet->find_from_name( name = 'dimension' ). - IF lo_ixml_imension_elem IS BOUND. - lv_dimension_range = lo_ixml_imension_elem->get_attribute( 'ref' ). - IF lv_dimension_range CS ':'. - REPLACE REGEX '\D+\d+:(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ELSE. - REPLACE REGEX '(\D+)\d+' IN lv_dimension_range WITH '$1'. " Get max column - ENDIF. - lv_max_col = zcl_excel_common=>convert_column2int( lv_dimension_range ). - ENDIF. - ENDIF. -*--------------------------------------------------------------------* -*#234 - column width not read correctly - end of coding -*--------------------------------------------------------------------* - - "Get the customized column width - lo_ixml_columns = lo_ixml_worksheet->get_elements_by_tag_name( name = 'col' ). - lo_ixml_iterator = lo_ixml_columns->create_iterator( ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_column_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_column_elem - CHANGING - cp_structure = ls_column ). - lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ). - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int - OR ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int - OR ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int - OR ls_column-outlinelevel > '' - OR ls_column-style > ''. - lv_index = ls_column-min. - WHILE lv_index <= ls_column-max AND lv_index <= lv_max_col. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_index ). - lo_column_dimension = io_worksheet->get_column_dimension( lv_column_alpha ). - - IF ls_column-customwidth = lc_xml_attr_true - OR ls_column-customwidth = lc_xml_attr_true_int - OR ls_column-width IS NOT INITIAL. "+#234 - lo_column_dimension->set_width( ls_column-width ). - ENDIF. - - IF ls_column-bestfit = lc_xml_attr_true - OR ls_column-bestfit = lc_xml_attr_true_int. - lo_column_dimension->set_auto_size( abap_true ). - ENDIF. - - IF ls_column-collapsed = lc_xml_attr_true - OR ls_column-collapsed = lc_xml_attr_true_int. - lo_column_dimension->set_collapsed( abap_true ). - ENDIF. - - IF ls_column-hidden = lc_xml_attr_true - OR ls_column-hidden = lc_xml_attr_true_int. - lo_column_dimension->set_visible( abap_false ). - ENDIF. - - IF ls_column-outlinelevel > ''. -* outline_level = condense( column-outlineLevel ). - CONDENSE ls_column-outlinelevel. - lv_outline_level = ls_column-outlinelevel. - IF lv_outline_level > 0. - lo_column_dimension->set_outline_level( lv_outline_level ). - ENDIF. - ENDIF. - - IF ls_column-style > ''. - sy-index = ls_column-style + 1. - READ TABLE styles INTO lo_excel_style INDEX sy-index. - DATA: dummy_zexcel_cell_style TYPE zexcel_cell_style. - dummy_zexcel_cell_style = lo_excel_style->get_guid( ). - lo_column_dimension->set_column_style_by_guid( dummy_zexcel_cell_style ). - ENDIF. - - ADD 1 TO lv_index. - ENDWHILE. - ENDIF. -* Fix 207 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 -* IF column-hidden = lc_xml_attr_true OR -* column-hidden = lc_xml_attr_true_int. -* index = column-min. -* WHILE index <= column-max. -* column_alpha = zcl_excel_common=>convert_column2alpha( index ). -* column_dimension = io_worksheet->get_column_dimension( column_alpha ). -* column_dimension->set_visible( abap_false ). -* ADD 1 TO index. -* ENDWHILE. -* ENDIF. - ENDWHILE. - - "Now we need to get information from the sheetView node - lo_ixml_sheetview_elem = lo_ixml_worksheet->find_from_name( name = 'sheetView' ). - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetview_elem CHANGING cp_structure = ls_sheetview ). - IF ls_sheetview-showgridlines IS INITIAL OR - ls_sheetview-showgridlines = lc_xml_attr_true OR - ls_sheetview-showgridlines = lc_xml_attr_true_int. - "If the attribute is not specified or set to true, we will show grid lines - ls_sheetview-showgridlines = abap_true. - ELSE. - ls_sheetview-showgridlines = abap_false. - ENDIF. - io_worksheet->set_show_gridlines( ls_sheetview-showgridlines ). - - - "Add merge cell information - lo_ixml_mergecells = lo_ixml_worksheet->get_elements_by_tag_name( name = 'mergeCell' ). - lo_ixml_iterator = lo_ixml_mergecells->create_iterator( ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_mergecell_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_mergecell_elem - CHANGING - cp_structure = ls_mergecell ). - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = ls_mergecell-ref - IMPORTING - e_column_start = lv_merge_column_start - e_column_end = lv_merge_column_end - e_row_start = lv_merge_row_start - e_row_end = lv_merge_row_end ). - lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ). - io_worksheet->set_merge( EXPORTING - ip_column_start = lv_merge_column_start - ip_column_end = lv_merge_column_end - ip_row = lv_merge_row_start - ip_row_to = lv_merge_row_end ). - ENDWHILE. - - " read sheet format properties - lo_ixml_sheetformatpr_elem = lo_ixml_worksheet->find_from_name( 'sheetFormatPr' ). - IF lo_ixml_sheetformatpr_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetformatpr_elem CHANGING cp_structure = ls_sheetformatpr ). - IF ls_sheetformatpr-customheight = '1'. - lv_height = ls_sheetformatpr-defaultrowheight. - lo_row_dimension = io_worksheet->get_default_row_dimension( ). - lo_row_dimension->set_row_height( lv_height ). - ENDIF. - - " TODO... column - ENDIF. - - " Read in page margins - me->load_worksheet_pagemargins( EXPORTING - io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet ). - - " Read in page setup - lo_ixml_pagesetup_elem = lo_ixml_worksheet->find_from_name( 'pageSetup' ). - IF lo_ixml_pagesetup_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagesetup_elem - CHANGING - cp_structure = ls_pagesetup ). - io_worksheet->sheet_setup->orientation = ls_pagesetup-orientation. - io_worksheet->sheet_setup->scale = ls_pagesetup-scale. - ENDIF. - - " Read header footer - lo_ixml_headerfooter_elem = lo_ixml_worksheet->find_from_name( 'headerFooter' ). - IF lo_ixml_headerfooter_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_headerfooter_elem CHANGING cp_structure = ls_headerfooter ). - io_worksheet->sheet_setup->diff_oddeven_headerfooter = ls_headerfooter-differentoddeven. - - lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name( 'oddFooter' ). - IF lo_ixml_hf_value_elem IS NOT INITIAL. - ls_odd_footer-left_value = lo_ixml_hf_value_elem->get_value( ). - ENDIF. - -* 2do§1 Header/footer - " TODO.. get the rest. - - io_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_odd_header - ip_odd_footer = ls_odd_footer - ip_even_header = ls_even_header - ip_even_footer = ls_even_footer ). - - ENDIF. - - " Start fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - " Read pane - lo_ixml_pane_elem = lo_ixml_sheetview_elem->find_from_name( name = 'pane' ). - IF lo_ixml_pane_elem IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_pane_elem CHANGING cp_structure = ls_excel_pane ). - " Issue #194 - " Replace REGEX with method from the common class - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_excel_pane-topleftcell - IMPORTING - e_column = lv_pane_cell_col_a " Cell Column - e_row = lv_pane_cell_row ). " Natural number - lv_pane_cell_col = zcl_excel_common=>convert_column2int( lv_pane_cell_col_a ). - SUBTRACT 1 FROM: lv_pane_cell_col, - lv_pane_cell_row. - IF lv_pane_cell_col > 0 - AND lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row - ip_num_columns = lv_pane_cell_col ). - ELSEIF lv_pane_cell_row > 0. - io_worksheet->freeze_panes( ip_num_rows = lv_pane_cell_row ). - ELSE. - io_worksheet->freeze_panes( ip_num_columns = lv_pane_cell_col ). - ENDIF. - ENDIF. - " End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 - - " Start fix 276 Read data validations - lo_ixml_datavalidations = lo_ixml_worksheet->get_elements_by_tag_name( name = 'dataValidation' ). - lo_ixml_iterator = lo_ixml_datavalidations->create_iterator( ). - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_datavalidation_elem IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_datavalidation_elem - CHANGING - cp_structure = ls_datavalidation ). - CLEAR lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula1' ). - IF lo_ixml_formula_elem IS BOUND. - ls_datavalidation-formula1 = lo_ixml_formula_elem->get_value( ). - ENDIF. - CLEAR lo_ixml_formula_elem. - lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula2' ). - IF lo_ixml_formula_elem IS BOUND. - ls_datavalidation-formula2 = lo_ixml_formula_elem->get_value( ). - ENDIF. - SPLIT ls_datavalidation-sqref AT space INTO TABLE lt_datavalidation_range. - LOOP AT lt_datavalidation_range INTO lv_datavalidation_range. - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_datavalidation_range - IMPORTING - e_column_start = ls_datavalidation-cell_column - e_column_end = ls_datavalidation-cell_column_to - e_row_start = ls_datavalidation-cell_row - e_row_end = ls_datavalidation-cell_row_to ). - lo_data_validation = io_worksheet->add_new_data_validation( ). - lo_data_validation->type = ls_datavalidation-type. - lo_data_validation->allowblank = ls_datavalidation-allowblank. - lo_data_validation->showinputmessage = ls_datavalidation-showinputmessage. - lo_data_validation->showerrormessage = ls_datavalidation-showerrormessage. - lo_data_validation->showdropdown = ls_datavalidation-showdropdown. - lo_data_validation->operator = ls_datavalidation-operator. - lo_data_validation->formula1 = ls_datavalidation-formula1. - lo_data_validation->formula2 = ls_datavalidation-formula2. - lo_data_validation->prompttitle = ls_datavalidation-prompttitle. - lo_data_validation->prompt = ls_datavalidation-prompt. - lo_data_validation->errortitle = ls_datavalidation-errortitle. - lo_data_validation->error = ls_datavalidation-error. - lo_data_validation->errorstyle = ls_datavalidation-errorstyle. - lo_data_validation->cell_row = ls_datavalidation-cell_row. - lo_data_validation->cell_row_to = ls_datavalidation-cell_row_to. - lo_data_validation->cell_column = ls_datavalidation-cell_column. - lo_data_validation->cell_column_to = ls_datavalidation-cell_column_to. - ENDLOOP. - lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). - ENDWHILE. - " End fix 276 Read data validations - - " Read hyperlinks - TRY. - me->load_worksheet_hyperlinks( io_ixml_worksheet = lo_ixml_worksheet - io_worksheet = io_worksheet - it_external_hyperlinks = lt_external_hyperlinks ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - TRY. - me->fill_row_outlines( io_worksheet = io_worksheet ). - CATCH zcx_excel. " Ignore Hyperlink reading errors - pass everything we were able to identify - ENDTRY. - - -ENDMETHOD. - - - - - - method LOAD_WORKSHEET_DRAWING. - - TYPES: BEGIN OF t_c_nv_pr, - name TYPE string, - id TYPE string, - END OF t_c_nv_pr. - - TYPES: BEGIN OF t_blip, - cstate TYPE string, - embed TYPE string, - END OF t_blip. - - TYPES: BEGIN OF t_chart, - id TYPE string, - END OF t_chart. - - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1'. - CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'. - - DATA: drawing TYPE REF TO if_ixml_document, - anchors TYPE REF TO if_ixml_node_collection, - node TYPE REF TO if_ixml_element, - coll_length TYPE i, - iterator TYPE REF TO if_ixml_node_iterator, - anchor_elem TYPE REF TO if_ixml_element, - - relationship TYPE t_relationship, - rel_drawings TYPE t_rel_drawings, - rel_drawing TYPE t_rel_drawing, - rels_drawing TYPE REF TO if_ixml_document, - rels_drawing_path TYPE string, - stripped_name TYPE chkfile, - dirname TYPE string, - - path TYPE string, - path2 TYPE text255, - file_ext2 TYPE char10. - - " Read Workbook Relationships - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = ip_path - IMPORTING - stripped_name = stripped_name - file_path = dirname. - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_drawing_path. - rels_drawing_path = resolve_path( rels_drawing_path ). - rels_drawing = me->get_ixml_from_zip_archive( rels_drawing_path ). - node ?= rels_drawing->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - rel_drawing-id = relationship-id. - - CONCATENATE dirname relationship-target INTO path. - path = resolve_path( path ). - rel_drawing-content = me->get_from_zip_archive( path ). "------------> This is for template usage - - path2 = path. - zcl_excel_common=>split_file( EXPORTING ip_file = path2 - IMPORTING ep_extension = file_ext2 ). - rel_drawing-file_ext = file_ext2. - - "-------------Added by Alessandro Iannacci - Should load graph xml - CASE relationship-type. - WHEN lc_rel_chart. - "Read chart xml - rel_drawing-content_xml = me->get_ixml_from_zip_archive( path ). - WHEN OTHERS. - ENDCASE. - "---------------------------- - - - APPEND rel_drawing TO rel_drawings. - - node ?= node->get_next( ). - ENDWHILE. - - drawing = me->get_ixml_from_zip_archive( ip_path ). - -* one-cell anchor ************** - anchors = drawing->get_elements_by_tag_name( name = 'oneCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - -* two-cell anchor ****************** - anchors = drawing->get_elements_by_tag_name( name = 'twoCellAnchor' namespace = 'xdr' ). - coll_length = anchors->get_length( ). - iterator = anchors->create_iterator( ). - DO coll_length TIMES. - anchor_elem ?= iterator->get_next( ). - - CALL METHOD me->load_drawing_anchor - EXPORTING - io_anchor_element = anchor_elem - io_worksheet = io_worksheet - it_related_drawings = rel_drawings. - - ENDDO. - - endmethod. - - - - - - - METHOD load_worksheet_hyperlinks. - - DATA: lo_ixml_hyperlinks TYPE REF TO if_ixml_node_collection, - lo_ixml_hyperlink TYPE REF TO if_ixml_element, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - lv_row TYPE zexcel_cell_row, - lv_column TYPE zexcel_cell_column_alpha, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lv_value TYPE zexcel_cell_value. - - DATA: BEGIN OF ls_hyperlink, - ref TYPE string, - display TYPE string, - location TYPE string, - tooltip TYPE string, - r_id TYPE string, - END OF ls_hyperlink. - - FIELD-SYMBOLS: <ls_external_hyperlink> LIKE LINE OF it_external_hyperlinks. - - lo_ixml_hyperlinks = io_ixml_worksheet->get_elements_by_tag_name( name = 'hyperlink' ). - lo_ixml_iterator = lo_ixml_hyperlinks->create_iterator( ). - lo_ixml_hyperlink ?= lo_ixml_iterator->get_next( ). - WHILE lo_ixml_hyperlink IS BOUND. - - CLEAR ls_hyperlink. - CLEAR lo_hyperlink. - - ls_hyperlink-ref = lo_ixml_hyperlink->get_attribute_ns( 'ref' ). - ls_hyperlink-display = lo_ixml_hyperlink->get_attribute_ns( 'display' ). - ls_hyperlink-location = lo_ixml_hyperlink->get_attribute_ns( 'location' ). - ls_hyperlink-tooltip = lo_ixml_hyperlink->get_attribute_ns( 'tooltip' ). - ls_hyperlink-r_id = lo_ixml_hyperlink->get_attribute( name = 'id' - namespace = 'r' ). - IF ls_hyperlink-r_id IS INITIAL. " Internal link - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = ls_hyperlink-location ). - ELSE. " External link - READ TABLE it_external_hyperlinks ASSIGNING <ls_external_hyperlink> WITH TABLE KEY id = ls_hyperlink-r_id. - IF sy-subrc = 0. - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = <ls_external_hyperlink>-target ). - ENDIF. - ENDIF. - IF lo_hyperlink IS BOUND. " because of unsupported external links - - zcl_excel_common=>convert_columnrow2column_a_row( EXPORTING - i_columnrow = ls_hyperlink-ref - IMPORTING - e_row = lv_row - e_column = lv_column ). -* Currently it is not allowed to pass a hyperlink w/o text, but text has already been read. -* So just reread it and be done with it - io_worksheet->get_cell( EXPORTING - ip_column = lv_column - ip_row = lv_row - IMPORTING - ep_value = lv_value ). - io_worksheet->set_cell( ip_column = lv_column - ip_row = lv_row - ip_value = lv_value - ip_hyperlink = lo_hyperlink ). - ENDIF. - - lo_ixml_hyperlink ?= lo_ixml_iterator->get_next( ). - - ENDWHILE. - - -ENDMETHOD. - - - - - - METHOD load_worksheet_pagemargins. - - TYPES: BEGIN OF lty_page_margins, - footer TYPE string, - header TYPE string, - bottom TYPE string, - top TYPE string, - right TYPE string, - left TYPE string, - END OF lty_page_margins. - - DATA:lo_ixml_pagemargins_elem TYPE REF TO if_ixml_element, - ls_pagemargins TYPE lty_page_margins. - - - lo_ixml_pagemargins_elem = io_ixml_worksheet->find_from_name( 'pageMargins' ). - IF lo_ixml_pagemargins_elem IS NOT INITIAL. - fill_struct_from_attributes( EXPORTING - ip_element = lo_ixml_pagemargins_elem - CHANGING - cp_structure = ls_pagemargins ). - io_worksheet->sheet_setup->margin_bottom = zcl_excel_common=>excel_string_to_number( ls_pagemargins-bottom ). - io_worksheet->sheet_setup->margin_footer = zcl_excel_common=>excel_string_to_number( ls_pagemargins-footer ). - io_worksheet->sheet_setup->margin_header = zcl_excel_common=>excel_string_to_number( ls_pagemargins-header ). - io_worksheet->sheet_setup->margin_left = zcl_excel_common=>excel_string_to_number( ls_pagemargins-left ). - io_worksheet->sheet_setup->margin_right = zcl_excel_common=>excel_string_to_number( ls_pagemargins-right ). - io_worksheet->sheet_setup->margin_top = zcl_excel_common=>excel_string_to_number( ls_pagemargins-top ). - ENDIF. - -ENDMETHOD. - - - - - METHOD read_from_applserver. - - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_max_length_line TYPE i, - lv_actual_length_line TYPE i, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - DESCRIBE FIELD ls_binary_data LENGTH lv_max_length_line IN BYTE MODE. - OPEN DATASET lv_filename FOR INPUT IN BINARY MODE. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - WHILE sy-subrc = 0. - - READ DATASET lv_filename INTO ls_binary_data MAXIMUM LENGTH lv_max_length_line ACTUAL LENGTH lv_actual_length_line. - APPEND ls_binary_data TO lt_binary_data. - lv_filelength = lv_filelength + lv_actual_length_line. - - ENDWHILE. - CLOSE DATASET lv_filename. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - ENDMETHOD. - - - - - - METHOD read_from_local_file. - DATA: lv_filelength TYPE i, - lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY, - ls_binary_data LIKE LINE OF lt_binary_data, - lv_filename TYPE string, - lv_errormessage TYPE string. - - MOVE i_filename TO lv_filename. - - cl_gui_frontend_services=>gui_upload( EXPORTING - filename = lv_filename - filetype = 'BIN' " We are basically working with zipped directories --> force binary read - IMPORTING - filelength = lv_filelength - CHANGING - data_tab = lt_binary_data - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 ). - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the file'(001). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* Binary data needs to be provided as XSTRING for further processing -*--------------------------------------------------------------------* - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filelength - IMPORTING - buffer = r_excel_data - TABLES - binary_tab = lt_binary_data. - - ENDMETHOD. - - - - - method RESOLVE_PATH. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 Determine whether the replacement should be done -* iterative to allow /../../.. or something alike -* 2do§2 Determine whether /./ has to be supported as well -* 2do§3 Create unit-test for this method -* -* Please don't just delete these ToDos if they are not -* needed but leave a comment that states this -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-11 -* - ... -* changes: replaced previous coding by regular expression -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* §1 This routine will receive a path, that may have a relative pathname (/../) included somewhere -* The output should be a resolved path without relative references -* Example: Input xl/worksheets/../drawings/drawing1.xml -* Output xl/drawings/drawing1.xml -*--------------------------------------------------------------------* - - rp_result = ip_path. -*--------------------------------------------------------------------* -* §1 Remove relative pathnames -*--------------------------------------------------------------------* -* Regular expression [^/]*/\.\./ -* [^/]* --> any number of characters other than / -* followed by /\.\./ --> the sequence /../ -* ==> worksheets/../ will be found in the example -*--------------------------------------------------------------------* - REPLACE REGEX '[^/]*/\.\./' IN rp_result WITH ``. - - - endmethod. - - - method RESOLVE_REFERENCED_FORMULAE. - TYPES: BEGIN OF ty_referenced_cells, - sheet TYPE REF TO zcl_excel_worksheet, - si TYPE i, - row_from TYPE i, - row_to TYPE i, - col_from TYPE i, - col_to TYPE i, - formula TYPE string, - ref_cell TYPE char10, - END OF ty_referenced_cells. - - DATA: ls_ref_formula LIKE LINE OF me->mt_ref_formulae, - lts_referenced_cells TYPE SORTED TABLE OF ty_referenced_cells WITH NON-UNIQUE KEY sheet si row_from row_to col_from col_to, - ls_referenced_cell LIKE LINE OF lts_referenced_cells, - lv_col_from TYPE zexcel_cell_column_alpha, - lv_col_to TYPE zexcel_cell_column_alpha, - lv_resulting_formula TYPE string, - lv_current_cell TYPE char10. - - - me->mt_ref_formulae = me->mt_ref_formulae. - -*--------------------------------------------------------------------* -* Get referenced Cells, Build ranges for easy lookup -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref <> space. - - CLEAR ls_referenced_cell. - ls_referenced_cell-sheet = ls_ref_formula-sheet. - ls_referenced_cell-si = ls_ref_formula-si. - ls_referenced_cell-formula = ls_ref_formula-formula. - - TRY. - zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = ls_ref_formula-ref - IMPORTING e_column_start = lv_col_from - e_column_end = lv_col_to - e_row_start = ls_referenced_cell-row_from - e_row_end = ls_referenced_cell-row_to ). - ls_referenced_cell-col_from = zcl_excel_common=>convert_column2int( lv_col_from ). - ls_referenced_cell-col_to = zcl_excel_common=>convert_column2int( lv_col_to ). - - - CLEAR ls_referenced_cell-ref_cell. - TRY. - ls_referenced_cell-ref_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - ls_referenced_cell-ref_cell+3 = ls_ref_formula-row. - CONDENSE ls_referenced_cell-ref_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - INSERT ls_referenced_cell INTO TABLE lts_referenced_cells. - CATCH zcx_excel. - ENDTRY. - - ENDLOOP. - -* break x0009004. -*--------------------------------------------------------------------* -* For each referencing cell determine the referenced cell -* and resolve the formula -*--------------------------------------------------------------------* - LOOP AT me->mt_ref_formulae INTO ls_ref_formula WHERE ref = space. - - - CLEAR lv_current_cell. - TRY. - lv_current_cell(3) = zcl_excel_common=>convert_column2alpha( ls_ref_formula-column ). - lv_current_cell+3 = ls_ref_formula-row. - CONDENSE lv_current_cell NO-GAPS. - CATCH zcx_excel. - ENDTRY. - - LOOP AT lts_referenced_cells INTO ls_referenced_cell WHERE sheet = ls_ref_formula-sheet - AND si = ls_ref_formula-si - AND row_from <= ls_ref_formula-row - AND row_to >= ls_ref_formula-row - AND col_from <= ls_ref_formula-column - AND col_to >= ls_ref_formula-column. - - TRY. - - lv_resulting_formula = zcl_excel_common=>determine_resulting_formula( iv_reference_cell = ls_referenced_cell-ref_cell - iv_reference_formula = ls_referenced_cell-formula - iv_current_cell = lv_current_cell ). - - ls_referenced_cell-sheet->set_cell_formula( ip_column = ls_ref_formula-column - ip_row = ls_ref_formula-row - ip_formula = lv_resulting_formula ). - CATCH zcx_excel. - ENDTRY. - EXIT. - - ENDLOOP. - - ENDLOOP. - endmethod. - - - - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - -* Signal "not found" -class lcx_not_found implementation. - method constructor. - super->constructor( textid = textid previous = previous ). - me->error = error. - endmethod. "constructor - method if_message~get_text. - result = error. - endmethod. "if_message~get_text -endclass. "lcx_not_found IMPLEMENTATION - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - -* Signal for "Not found" -class lcx_not_found definition inheriting from cx_static_check. - public section. - data error type string. - methods constructor - importing error type string - textid type sotr_conc optional - previous type ref to cx_root optional. - methods if_message~get_text redefinition. -endclass. - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - *"* use this source file for your ABAP unit test classes -class lcl_test definition deferred. -class zcl_excel_reader_huge_file definition local friends lcl_test. - -* -class lcl_test definition for testing " #AU Risk_Level Harmless - inheriting from cl_aunit_assert. " #AU Duration Short - - private section. - data: - out type ref to zcl_excel_reader_huge_file, " object under test - excel type ref to zcl_excel, - worksheet type ref to zcl_excel_worksheet. - methods: - setup, - test_number for testing, - test_shared_string for testing, - test_shared_string_missing for testing, - test_inline_string for testing, - test_empty_cells for testing, - test_boolean for testing, - test_style for testing, - test_style_missing for testing, - test_formula for testing, - test_read_shared_strings for testing, - test_skip_to_inexistent for testing, - get_reader importing iv_xml type string returning value(eo_reader) type ref to if_sxml_reader, - assert_value_equals importing iv_row type i default 1 iv_col type i default 1 iv_value type string, - assert_formula_equals importing iv_row type i default 1 iv_col type i default 1 iv_formula type string, - assert_style_equals importing iv_row type i default 1 iv_col type i default 1 iv_style type ZEXCEL_CELL_STYLE, - assert_datatype_equals importing iv_row type i default 1 iv_col type i default 1 iv_datatype type string. - -endclass. "lcl_test DEFINITION - -* -class lcl_test implementation. - -* - method test_number. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><v>17</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `17` ). - assert_datatype_equals( `n` ). - endmethod. "test_shared_string - -* - method test_shared_string. - data lo_reader type ref to if_sxml_reader. - append `Test1` to out->shared_strings. - append `Test2` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Test2` ). - assert_datatype_equals( `s` ). - endmethod. "test_shared_string -* - method test_shared_string_missing. - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `Test` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>1</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Index to non-existent shared string should give an error`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. -* - method test_inline_string. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Alpha` ). - assert_datatype_equals( `inlineStr` ). - endmethod. "test_inline_string - -* - method test_boolean. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="b"><v>1</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `1` ). - assert_datatype_equals( `b` ). - endmethod. "test_boolean - -* - method test_formula. - data lo_reader type ref to if_sxml_reader. - lo_reader = get_reader( - `<c r="A1" t="n"><f>A2*A2</f></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_formula_equals( `A2*A2` ). - assert_datatype_equals( `n` ). - endmethod. "test_formula - -* - method test_empty_cells. - -* There is no need to store an empty cell in the ABAP worksheet structure - - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - append `` to out->shared_strings. - append `t` to out->shared_strings. - lo_reader = get_reader( - `<c r="A1" t="s"><v>0</v></c>` & - `<c r="A2" t="inlineStr"><is><t></t></is></c>` & - `<c r="A3" t="s"><v>1</v></c>` - ). - - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). - - endmethod. - -* - method test_style. - data: - lo_reader type ref to if_sxml_reader, - lo_style type ref to zcl_excel_style, - lv_guid type ZEXCEL_CELL_STYLE. - create object lo_style. - append lo_style to out->styles. - lv_guid = lo_style->get_guid( ). - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_style_equals( lv_guid ). - - endmethod. "test_style - -* - method test_style_missing. - - data: - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_reader = get_reader( - `<c r="A1" s="0"><v>18</v></c>` - ). - - try. - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - fail(`Reference to non-existent style should throw an lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. - - endmethod. "test_style - -* - method test_read_shared_strings. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. - - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - importing buffer = lv_xstring ). - lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `Bravo` to lt_exp. - - lt_act = out->read_shared_strings( lo_reader ). - - assert_equals( act = lt_act - exp = lt_exp ). - - endmethod. - -* - method test_skip_to_inexistent. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` - importing buffer = lv_xstring ). - lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - try. - out->skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ). - fail(`Skipping to non-existing element must raise lcx_not_found exception`). - catch lcx_not_found into lo_ex. - lv_text = lo_ex->get_text( ). " May inspect exception text in debugger - endtry. - endmethod. - -* - method get_reader. - data: lv_full type string, - lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring. - concatenate `<root><sheetData><row>` iv_xml `</row></sheetData></root>` into lv_full. - lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = lv_full - importing buffer = lv_xstring ). - eo_reader = cl_sxml_string_reader=>create( lv_xstring ). - endmethod. "get_reader -* - method assert_value_equals. - - constants: lc_empty_string type string value is initial. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data, - <lv_value> type string. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - if sy-subrc eq 0. - assign <ls_cell_data>-cell_value to <lv_value>. - else. - assign lc_empty_string to <lv_value>. - endif. - - assert_equals( act = <lv_value> - exp = iv_value ). - - endmethod. "assert_value_equals -** - method assert_formula_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_formula - exp = iv_formula ). - - endmethod. "assert_formula_equals -* - method assert_style_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-cell_style - exp = iv_style ). - - endmethod. -* - method assert_datatype_equals. - - field-symbols: <ls_cell_data> type zexcel_s_cell_data. - - read table worksheet->sheet_content assigning <ls_cell_data> - with table key cell_row = iv_row cell_column = iv_col. - assert_subrc( sy-subrc ). - - assert_equals( act = <ls_cell_data>-data_type - exp = iv_datatype ). - - endmethod. "assert_datatype_equals - method setup. - create object out. - create object excel. - create object worksheet - exporting - ip_excel = excel. - endmethod. "setup -endclass. "lcl_test IMPLEMENTATION - - - - - - - - - - - - - - - - method FILL_CELL_FROM_ATTRIBUTES. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_attribute( ). - if io_reader->node_type ne c_attribute. - exit. - endif. - case io_reader->name. - when `t`. - es_cell-datatype = io_reader->value. - when `s`. - if io_reader->value is not initial. - es_cell-style = get_style( io_reader->value ). - endif. - when `r`. - es_cell-coord = get_cell_coord( io_reader->value ). - endcase. - endwhile. - -endmethod. - - - - - method GET_CELL_COORD. - - zcl_excel_common=>convert_columnrow2column_a_row( - exporting - i_columnrow = iv_coord - importing - e_column = es_coord-column - e_row = es_coord-row - ). - -endmethod. - - - - - - method GET_SHARED_STRING. - data: lv_tabix type i, - lv_error type string. - lv_tabix = iv_index + 1. - read table shared_strings into ev_value index lv_tabix. - if sy-subrc ne 0. - concatenate 'Entry ' iv_index ' not found in Shared String Table' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - endif. -endmethod. - - - - - - method GET_STYLE. - - data: lv_tabix type i, - lo_style type ref to zcl_excel_style, - lv_error type string. - - if gs_buffer_style-index ne iv_index. - lv_tabix = iv_index + 1. - read table styles into lo_style index lv_tabix. - if sy-subrc ne 0. - concatenate 'Entry ' iv_index ' not found in Style Table' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - else. - gs_buffer_style-index = iv_index. - gs_buffer_style-guid = lo_style->get_guid( ). - endif. - endif. - - ev_style_guid = gs_buffer_style-guid. - -endmethod. - - - - - - method GET_SXML_READER. - - data: lv_xml type xstring. - - lv_xml = get_from_zip_archive( iv_path ). - eo_reader = cl_sxml_string_reader=>create( lv_xml ). - -endmethod. - - - method LOAD_SHARED_STRINGS. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - shared_strings = read_shared_strings( lo_reader ). - -endmethod. - - - method LOAD_WORKSHEET. - - data: lo_reader type ref to if_sxml_reader. - - lo_reader = get_sxml_reader( ip_path ). - - read_worksheet_data( io_reader = lo_reader - io_worksheet = io_worksheet ). - -endmethod. - - - - - method PUT_CELL_TO_WORKSHEET. - check is_cell-value is not initial - or is_cell-formula is not initial - or is_cell-style is not initial. - call method io_worksheet->set_cell - exporting - ip_column = is_cell-column - ip_row = is_cell-row - ip_value = is_cell-value - ip_formula = is_cell-formula - ip_data_type = is_cell-datatype - ip_style = is_cell-style. -endmethod. - - - - - method READ_SHARED_STRINGS. - - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - if io_reader->node_type eq c_element_close and - io_reader->name eq `t`. - append io_reader->value to et_shared_strings. - endif. - endwhile. - -endmethod. - - - - - - method READ_WORKSHEET_DATA. - - data: ls_cell type t_cell. - -* Skip to <sheetData> element - skip_to( iv_element_name = `sheetData` io_reader = io_reader ). - -* Main loop: Evaluate the <c> elements and its children - while io_reader->node_type ne c_end_of_stream. - io_reader->next_node( ). - case io_reader->node_type. - when c_element_open. - if io_reader->name eq `c`. - ls_cell = fill_cell_from_attributes( io_reader ). - endif. - when c_node_value. - case io_reader->name. - when `f`. - ls_cell-formula = io_reader->value. - when `v`. - if ls_cell-datatype eq `s`. - ls_cell-value = get_shared_string( io_reader->value ). - else. - ls_cell-value = io_reader->value. - endif. - when `t` or `is`. - ls_cell-value = io_reader->value. - endcase. - when c_element_close. - case io_reader->name. - when `c`. - put_cell_to_worksheet( is_cell = ls_cell io_worksheet = io_worksheet ). - when `sheetData`. - exit. - endcase. - endcase. - endwhile. - -endmethod. - - - - - - method SKIP_TO. - - data: lv_error type string. - -* Skip forward to given element - while io_reader->name ne iv_element_name or - io_reader->node_type ne c_element_open. - io_reader->next_node( ). - if io_reader->node_type = c_end_of_stream. - concatenate 'XML error: Didn''t find element <' iv_element_name '>' into lv_error. - raise exception type lcx_not_found - exporting - error = lv_error. - endif. - endwhile. - - -endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - METHOD load_vbaproject. - - DATA lv_content TYPE xstring. - - lv_content = me->get_from_zip_archive( ip_path ). - - ip_excel->zif_excel_book_vba_project~set_vbaproject( lv_content ). - - ENDMETHOD. - - - method LOAD_WORKBOOK. - super->load_workbook( EXPORTING iv_workbook_full_filename = iv_workbook_full_filename - io_excel = io_excel ). - - CONSTANTS: lc_vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject'. - - DATA: rels_workbook_path TYPE string, - rels_workbook TYPE REF TO if_ixml_document, - path TYPE string, - node TYPE REF TO if_ixml_element, - workbook TYPE REF TO if_ixml_document, - stripped_name TYPE chkfile, - dirname TYPE string, - relationship TYPE t_relationship, - fileversion TYPE t_fileversion, - workbookpr TYPE t_workbookpr. - - FIELD-SYMBOLS: <worksheet> TYPE t_relationship. - - CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' - EXPORTING - full_name = iv_workbook_full_filename - IMPORTING - stripped_name = stripped_name - file_path = dirname. - - " Read Workbook Relationships - CONCATENATE dirname '_rels/' stripped_name '.rels' - INTO rels_workbook_path. - - rels_workbook = me->get_ixml_from_zip_archive( rels_workbook_path ). - - node ?= rels_workbook->find_from_name( 'Relationship' ). - WHILE node IS BOUND. - me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ). - - CASE relationship-type. - WHEN lc_vba_project. - " Read VBA binary - CONCATENATE dirname relationship-target INTO path. - me->load_vbaproject( ip_path = path - ip_excel = io_excel ). - WHEN OTHERS. - ENDCASE. - - node ?= node->get_next( ). - ENDWHILE. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'fileVersion' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = fileversion ). - - io_excel->zif_excel_book_vba_project~set_codename( fileversion-codename ). - ENDIF. - - " Read Workbook codeName - workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ). - node ?= workbook->find_from_name( 'workbookPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = workbookpr ). - - io_excel->zif_excel_book_vba_project~set_codename_pr( workbookpr-codename ). - ENDIF. - - endmethod. - - - method LOAD_WORKSHEET. - - super->load_worksheet( EXPORTING ip_path = ip_path - io_worksheet = io_worksheet ). - - DATA: path TYPE string, - node TYPE REF TO if_ixml_element, - worksheet TYPE REF TO if_ixml_document, - sheetpr TYPE t_sheetpr. - - -* " Read Workbook codeName -* workbook = me->get_ixml_from_zip_archive( ip_path ). -* node ?= workbook->find_from_name( 'fileVersion' ). -* IF node IS BOUND. -* -* fill_struct_from_attributes( EXPORTING ip_element = node -* CHANGING cp_structure = fileversion ). -* -* IO_WORKSHEET->zif_excel_book_vba_project~set_codename( fileversion-codename ). -* ENDIF. - - " Read Workbook codeName - worksheet = me->get_ixml_from_zip_archive( ip_path ). - node ?= worksheet->find_from_name( 'sheetPr' ). - IF node IS BOUND. - - fill_struct_from_attributes( EXPORTING ip_element = node - CHANGING cp_structure = sheetpr ). - - io_worksheet->zif_excel_sheet_vba_project~set_codename_pr( sheetpr-codename ). - ENDIF. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - METHOD is_security_enabled. - IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. - ep_security_enabled = abap_true. - ENDIF. -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - orientation = me->c_orientation_default. - -* default margins - margin_bottom = '0.75'. - margin_footer = '0.3'. - margin_header = '0.3'. - margin_left = '0.7'. - margin_right = '0.7'. - margin_top = '0.75'. - -* clear page settings - CLEAR: black_and_white, - cell_comments, - copies, - draft, - errors, - first_page_number, - fit_to_page, - fit_to_height, - fit_to_width, - horizontal_dpi, - orientation, - page_order, - paper_height, - paper_size, - paper_width, - scale, - use_first_page_num, - use_printer_defaults, - vertical_dpi. - endmethod. - - - - - - - method GET_HEADER_FOOTER_STRING. -* ---------------------------------------------------------------------- - DATA: lc_marker_left(2) TYPE c VALUE '&L' - , lc_marker_right(2) TYPE c VALUE '&R' - , lc_marker_center(2) TYPE c VALUE '&C' - , lv_value TYPE string - . -* ---------------------------------------------------------------------- - IF ep_odd_header IS SUPPLIED. - - IF me->odd_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'CENTER' ). - CONCATENATE ep_odd_header lc_marker_center lv_value INTO ep_odd_header. - ENDIF. - - IF me->odd_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'RIGHT' ). - CONCATENATE ep_odd_header lc_marker_right lv_value INTO ep_odd_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_odd_footer IS SUPPLIED. - - IF me->odd_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'CENTER' ). - CONCATENATE ep_odd_footer lc_marker_center lv_value INTO ep_odd_footer. - ENDIF. - - IF me->odd_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'RIGHT' ). - CONCATENATE ep_odd_footer lc_marker_right lv_value INTO ep_odd_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_header IS SUPPLIED. - - IF me->even_header-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'CENTER' ). - CONCATENATE ep_even_header lc_marker_center lv_value INTO ep_even_header. - ENDIF. - - IF me->even_header-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'RIGHT' ). - CONCATENATE ep_even_header lc_marker_right lv_value INTO ep_even_header. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - IF ep_even_footer IS SUPPLIED. - - IF me->even_footer-left_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'LEFT' ). - CONCATENATE lc_marker_left lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-center_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'CENTER' ). - CONCATENATE ep_even_footer lc_marker_center lv_value INTO ep_even_footer. - ENDIF. - - IF me->even_footer-right_value IS NOT INITIAL. - lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'RIGHT' ). - CONCATENATE ep_even_footer lc_marker_right lv_value INTO ep_even_footer. - ENDIF. - - ENDIF. -* ---------------------------------------------------------------------- - endmethod. - - - - - - method PROCESS_HEADER_FOOTER. - -* ---------------------------------------------------------------------- -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size - - DATA: lv_fname(12) TYPE c - , lv_string TYPE string - . - - FIELD-SYMBOLS: <lv_value> TYPE string - , <ls_font> TYPE zexcel_s_style_font - . - -* ---------------------------------------------------------------------- - CONCATENATE ip_side '_VALUE' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <lv_value>. - - CONCATENATE ip_side '_FONT' INTO lv_fname. - ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <ls_font>. - - IF <ls_font> IS ASSIGNED AND <lv_value> IS ASSIGNED. - - IF <ls_font>-name IS NOT INITIAL. - CONCATENATE '&"' <ls_font>-name ',' INTO rv_processed_string. - ELSE. - rv_processed_string = '&"-,'. - ENDIF. - - IF <ls_font>-bold = abap_true. - CONCATENATE rv_processed_string 'Bold"' INTO rv_processed_string. - ELSE. - CONCATENATE rv_processed_string 'Standard"' INTO rv_processed_string. - ENDIF. - - IF <ls_font>-size IS NOT INITIAL. - lv_string = <ls_font>-size. - CONCATENATE rv_processed_string '&' lv_string INTO rv_processed_string. - ENDIF. - - CONCATENATE rv_processed_string <lv_value> INTO rv_processed_string. - - ENDIF. -* ---------------------------------------------------------------------- - - endmethod. - - - - - - - method SET_HEADER_FOOTER. - -* Only Basic font/text formatting possible: -* Bold (yes / no), Font Type, Font Size -* -* usefull placeholders, which can be used in header/footer value strings -* '&P' - page number -* '&N' - total number of pages -* '&D' - Date -* '&T' - Time -* '&F' - File Name -* '&Z' - Path -* '&A' - Sheet name -* new line via class constant CL_ABAP_CHAR_UTILITIES=>newline -* -* Example Value String 'page &P of &N' -* -* DO NOT USE &L , &C or &R which automatically created as position markers - - me->odd_header = ip_odd_header. - me->odd_footer = ip_odd_footer. - me->even_header = ip_even_header. - me->even_footer = ip_even_footer. - - IF me->even_header IS NOT INITIAL OR me->even_footer IS NOT INITIAL. - me->diff_oddeven_headerfooter = abap_true. - ENDIF. - - - endmethod. - - - - - - - - - - method SET_PAGE_MARGINS. - DATA: lv_coef TYPE f, - lv_unit TYPE string. - - lv_unit = ip_unit. - TRANSLATE lv_unit TO UPPER CASE. - - CASE lv_unit. - WHEN 'IN'. lv_coef = 1. - WHEN 'CM'. lv_coef = '0.393700787'. - WHEN 'MM'. lv_coef = '0.0393700787'. - ENDCASE. - - IF ip_bottom IS SUPPLIED. margin_bottom = lv_coef * ip_bottom. ENDIF. - IF ip_footer IS SUPPLIED. margin_footer = lv_coef * ip_footer. ENDIF. - IF ip_header IS SUPPLIED. margin_header = lv_coef * ip_header. ENDIF. - IF ip_left IS SUPPLIED. margin_left = lv_coef * ip_left. ENDIF. - IF ip_right IS SUPPLIED. margin_right = lv_coef * ip_right. ENDIF. - IF ip_top IS SUPPLIED. margin_top = lv_coef * ip_top. ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - method CONSTRUCTOR. - - - CREATE OBJECT font. - CREATE OBJECT fill. - CREATE OBJECT borders. - CREATE OBJECT alignment. - CREATE OBJECT number_format. - CREATE OBJECT protection. - -* Start of insertion # issue 139 - Dateretention of cellstyles - IF ip_guid IS NOT INITIAL. - me->guid = ip_guid. - ELSE. -* End of insertion # issue 139 - Dateretention of cellstyles - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. -* Start of insertion # issue 139 - Dateretention of cellstyles - ENDIF. -* End of insertion # issue 139 - Dateretention of cellstyles - - endmethod. - - - - method GET_GUID. - - - ep_guid = me->guid. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - - - styles->add( ip_style ). - endmethod. - - - method CLEAR. - - - styles->clear( ). - endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT styles. - endmethod. - - - - - method GET. - - - eo_style ?= styles->if_object_collection~get( ip_index ). - endmethod. - - - - method GET_ITERATOR. - - - eo_iterator ?= styles->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - - - is_empty = styles->if_object_collection~is_empty( ). - endmethod. - - - - - method REGISTER_NEW_STYLE. - - - me->add( io_style ). - ep_style_code = me->size( ) - 1. "style count starts from 0 - endmethod. - - - - method REMOVE. - - - styles->remove( ip_style ). - endmethod. - - - - method SIZE. - - - ep_size = styles->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - styles_conditional->add( ip_style_conditional ). - endmethod. - - - method CLEAR. - styles_conditional->clear( ). - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT styles_conditional. - - endmethod. - - - - - method GET. - DATA lv_index TYPE i. - lv_index = ip_index. - eo_style_conditional ?= styles_conditional->if_object_collection~get( lv_index ). - endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= styles_conditional->if_object_collection~get_iterator( ). - endmethod. - - - - method IS_EMPTY. - is_empty = styles_conditional->if_object_collection~is_empty( ). - endmethod. - - - - method REMOVE. - styles_conditional->remove( ip_style_conditional ). - endmethod. - - - - method SIZE. - ep_size = styles_conditional->if_object_collection~size( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - horizontal = me->c_horizontal_general. - vertical = me->c_vertical_bottom. - wrapText = abap_false. - shrinkToFit = abap_false. - endmethod. - - - - method GET_STRUCTURE. - - es_alignment-horizontal = me->horizontal. - es_alignment-vertical = me->vertical. - es_alignment-textrotation = me->textrotation. - es_alignment-wraptext = me->wraptext. - es_alignment-shrinktofit = me->shrinktofit. - es_alignment-indent = me->indent. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - border_style = zcl_excel_style_border=>c_border_none. - border_color-theme = zcl_excel_style_color=>c_theme_not_set. - border_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - method GET_STRUCTURE. -*initialize colors to 'not set' - es_fill-left_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-left_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-right_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-right_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-top_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-top_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-bottom_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-bottom_color-theme = zcl_excel_style_color=>c_theme_not_set. - es_fill-diagonal_color-indexed = zcl_excel_style_color=>c_indexed_not_set. - es_fill-diagonal_color-theme = zcl_excel_style_color=>c_theme_not_set. - -* Check if all borders is set otherwise check single border - IF me->allborders IS BOUND. - es_fill-left_color = me->allborders->border_color. - es_fill-left_style = me->allborders->border_style. - es_fill-right_color = me->allborders->border_color. - es_fill-right_style = me->allborders->border_style. - es_fill-top_color = me->allborders->border_color. - es_fill-top_style = me->allborders->border_style. - es_fill-bottom_color = me->allborders->border_color. - es_fill-bottom_style = me->allborders->border_style. - ELSE. - IF me->left IS BOUND. - es_fill-left_color = me->left->border_color. - es_fill-left_style = me->left->border_style. - ENDIF. - IF me->right IS BOUND. - es_fill-right_color = me->right->border_color. - es_fill-right_style = me->right->border_style. - ENDIF. - IF me->top IS BOUND. - es_fill-top_color = me->top->border_color. - es_fill-top_style = me->top->border_style. - ENDIF. - IF me->down IS BOUND. - es_fill-bottom_color = me->down->border_color. - es_fill-bottom_style = me->down->border_style. - ENDIF. - ENDIF. - -* Check if diagonal is set - IF me->diagonal IS BOUND. - es_fill-diagonal_color = me->diagonal->border_color. - es_fill-diagonal_style = me->diagonal->border_style. - CASE me->diagonal_mode. - WHEN 1. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 0. - WHEN 2. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 1. - WHEN 3. - es_fill-diagonalup = 1. - es_fill-diagonaldown = 1. - WHEN OTHERS. - es_fill-diagonalup = 0. - es_fill-diagonaldown = 0. - ENDCASE. - ENDIF. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD create_new_arbg_int. - DATA: lv_red TYPE int1, - lv_green TYPE int1, - lv_blue TYPE int1, - lv_hex TYPE x, - lv_char_red TYPE zexcel_style_color_component, - lv_char_green TYPE zexcel_style_color_component, - lv_char_blue TYPE zexcel_style_color_component. - - lv_red = iv_red MOD 256. - lv_green = iv_green MOD 256. - lv_blue = iv_blue MOD 256. - - lv_hex = lv_red. - lv_char_red = lv_hex. - - lv_hex = lv_green. - lv_char_green = lv_hex. - - lv_hex = lv_blue. - lv_char_blue = lv_hex. - - - concatenate zcl_excel_style_color=>c_alpha lv_char_red lv_char_green lv_char_blue into rv_color_argb. - - -ENDMETHOD. - - - - - - - METHOD create_new_argb. - - CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - -ENDMETHOD. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - DATA: ls_iconset TYPE zexcel_conditional_iconset. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - - - me->rule = zcl_excel_style_conditional=>c_rule_none. -* me->iconset->operator = zcl_excel_style_conditional=>c_operator_none. - me->mode_iconset = ls_iconset. - me->priority = 1. - -* inizialize dimension range - me->stop_cell-cell_row = 1. - me->stop_cell-cell_column = 1. - me->start_cell-cell_row = 1. - me->start_cell-cell_column = 1. - endmethod. - - - - method GET_DIMENSION_RANGE. - IF stop_cell EQ start_cell. "only one cell - ep_dimension_range = start_cell-cell_coords. - ELSE. - CONCATENATE start_cell-cell_coords ':' stop_cell-cell_coords INTO ep_dimension_range. - ENDIF. - endmethod. - - - - - - - method SET_RANGE. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string. - - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - stop_cell-cell_row = 1. - stop_cell-cell_column = lv_column. - lv_row_alpha = ip_stop_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_stop_column lv_row_alpha INTO stop_cell-cell_coords. - - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - start_cell-cell_row = 1. - start_cell-cell_column = lv_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_start_column lv_row_alpha INTO start_cell-cell_coords. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method build_gradient. - check check_filltype_is_gradient( ) eq abap_true. - clear gradtype. - case filltype. - when c_fill_gradient_horizontal90. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontal270. - gradtype-degree = '270'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontalb. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_vertical. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_fromcenter. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - when c_fill_gradient_diagonal45. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal45b. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_diagonal135. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal135b. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_cornerlt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_cornerlb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '1'. - gradtype-top = '1'. - when c_fill_gradient_cornerrt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-left = '1'. - gradtype-right = '1'. - when c_fill_gradient_cornerrb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - endcase. - - endmethod. "build_gradient - - - - method check_filltype_is_gradient. - case filltype. - when c_fill_gradient_horizontal90 or - c_fill_gradient_horizontal270 or - c_fill_gradient_horizontalb or - c_fill_gradient_vertical or - c_fill_gradient_fromcenter or - c_fill_gradient_diagonal45 or - c_fill_gradient_diagonal45b or - c_fill_gradient_diagonal135 or - c_fill_gradient_diagonal135b or - c_fill_gradient_cornerlt or - c_fill_gradient_cornerlb or - c_fill_gradient_cornerrt or - c_fill_gradient_cornerrb. - rv_is_gradient = abap_true. - endcase. - endmethod. "check_filltype_is_gradient - - - method constructor. - filltype = zcl_excel_style_fill=>c_fill_none. - fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. - bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. - rotation = 0. - - endmethod. "CONSTRUCTOR - - - - method get_structure. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgcolor = me->fgcolor. - es_fill-bgcolor = me->bgcolor. - me->build_gradient( ). - es_fill-gradtype = me->gradtype. - endmethod. "GET_STRUCTURE - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CALCULATE_TEXT_WIDTH. - " Addition to solve issue #120, contribution by Stefan Schmöcker - r_width = strlen( i_text ). - " use scale factor based on default 11 - " ( don't know where defaultsetting is stored currently ) - r_width = r_width * me->size / 11. - endmethod. - - - method CONSTRUCTOR. - me->color-rgb = zcl_excel_style_color=>c_black. - me->color-theme = zcl_excel_style_color=>c_theme_not_set. - me->color-indexed = zcl_excel_style_color=>c_indexed_not_set. - me->scheme = zcl_excel_style_font=>c_scheme_minor. - me->underline_mode = zcl_excel_style_font=>c_underline_single. - endmethod. - - - - method GET_STRUCTURE. - - es_font-bold = me->bold. - es_font-italic = me->italic. - es_font-underline = me->underline. - es_font-underline_mode = me->underline_mode. - es_font-strikethrough = me->strikethrough. - es_font-size = me->size. - es_font-color = me->color. - es_font-name = me->name. - es_font-family = me->family. - es_font-scheme = me->scheme. - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - format_code = me->c_format_general. - endmethod. - - - - method GET_STRUCTURE. - ep_number_format-numfmt = me->format_code. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method CONSTRUCTOR. - locked = me->c_protection_locked. - hidden = me->c_protection_unhidden. - endmethod. - - - - method GET_STRUCTURE. - ep_protection-locked = me->locked. - ep_protection-hidden = me->hidden. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method GET_BOTTOM_ROW_INTEGER. - DATA: lv_table_lines TYPE i. - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - - IF settings-bottom_right_row IS NOT INITIAL. -* ev_row = zcl_excel_common=>convert_column2int( settings-bottom_right_row ). " del issue #246 - ev_row = settings-bottom_right_row . " ins issue #246 - EXIT. - ENDIF. - - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - - ev_row = settings-top_left_row + lv_table_lines. - - IF me->has_totals( ) = abap_true." ???? AND ip_include_totals_row = abap_true. - ADD 1 TO ev_row. - ENDIF. - endmethod. - - - - method GET_ID. - ov_id = id. - endmethod. - - - - method GET_NAME. - - IF me->name IS INITIAL. - me->name = zcl_excel_common=>number_to_excel_string( ip_value = me->id ). - CONCATENATE 'table' me->name INTO me->name. - ENDIF. - - ov_name = me->name. - endmethod. - - - - - method GET_REFERENCE. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - lv_right_column TYPE zexcel_cell_column_alpha, - ls_field_catalog TYPE zexcel_s_fieldcatalog, - lv_bottom_row TYPE zexcel_cell_row, - lv_top_row_string(10) TYPE c, - lv_bottom_row_string(10) TYPE c. - - FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. - -*column - lv_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - lv_table_lines = 0. - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO lv_table_lines. - ENDLOOP. - lv_column = lv_column + lv_table_lines - 1. - lv_right_column = zcl_excel_common=>convert_column2alpha( lv_column ). - -*row - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - IF lv_table_lines = 0. - lv_table_lines = 1. "table needs at least 1 data row - ENDIF. - lv_bottom_row = settings-top_left_row + lv_table_lines . - - IF me->has_totals( ) = abap_true AND ip_include_totals_row = abap_true. - ADD 1 TO lv_bottom_row. - ENDIF. - - lv_top_row_string = zcl_excel_common=>number_to_excel_string( settings-top_left_row ). - lv_bottom_row_string = zcl_excel_common=>number_to_excel_string( lv_bottom_row ). - - CONCATENATE settings-top_left_column lv_top_row_string - ':' - lv_right_column lv_bottom_row_string INTO ov_reference. - - endmethod. - - - - - method GET_RIGHT_COLUMN_INTEGER. - DATA: lv_column TYPE zexcel_cell_column, - lv_table_lines TYPE i, - ls_field_catalog TYPE zexcel_s_fieldcatalog. - - IF settings-bottom_right_column IS NOT INITIAL. - ev_column = zcl_excel_common=>convert_column2int( settings-bottom_right_column ). - EXIT. - ENDIF. - - ev_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO ev_column. - ENDLOOP. - - endmethod. - - - - - - method GET_TOTALS_FORMULA. - CONSTANTS: lc_function_id_sum TYPE string VALUE '109', - lc_function_id_min TYPE string VALUE '105', - lc_function_id_max TYPE string VALUE '104', - lc_function_id_count TYPE string VALUE '103', - lc_function_id_average TYPE string VALUE '101'. - - DATA: lv_function_id TYPE string. - - CASE ip_function. - WHEN zcl_excel_table=>totals_function_sum. - lv_function_id = lc_function_id_sum. - - WHEN zcl_excel_table=>totals_function_min. - lv_function_id = lc_function_id_min. - - WHEN zcl_excel_table=>totals_function_max. - lv_function_id = lc_function_id_max. - - WHEN zcl_excel_table=>totals_function_count. - lv_function_id = lc_function_id_count. - - WHEN zcl_excel_table=>totals_function_average. - lv_function_id = lc_function_id_average. - - WHEN zcl_excel_table=>totals_function_custom. " issue #292 - RETURN. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid totals formula. See ZCL_ for possible values'. - ENDCASE. - - CONCATENATE 'SUBTOTAL(' lv_function_id ',[' ip_column '])' INTO ep_formula. - endmethod. - - - - method HAS_TOTALS. - DATA: ls_field_catalog TYPE zexcel_s_fieldcatalog. - - ep_result = abap_false. - - LOOP AT fieldcat INTO ls_field_catalog. - IF ls_field_catalog-totals_function IS NOT INITIAL. - ep_result = abap_true. - EXIT. - ENDIF. - ENDLOOP. - - endmethod. - - - - METHOD set_data. - - DATA lr_temp TYPE REF TO data. - - FIELD-SYMBOLS: <lt_table_temp> TYPE ANY TABLE, - <lt_table> TYPE ANY TABLE. - - GET REFERENCE OF ir_data INTO lr_temp. - ASSIGN lr_temp->* TO <lt_table_temp>. - CREATE DATA table_data LIKE <lt_table_temp>. - ASSIGN me->table_data->* TO <lt_table>. - <lt_table> = <lt_table_temp>. - -ENDMETHOD. - - - - method SET_ID. - id = iv_id. - endmethod. - - - - - - - - - - - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - -*&---------------------------------------------------------------------* -*& Class (Implementation) C_OI_PROXY_ERROR -*&---------------------------------------------------------------------* -CLASS c_oi_proxy_error IMPLEMENTATION. - METHOD constructor. -* IMPORTING object_name TYPE c -* method_name TYPE c. - error_nr = ret_call_not_flushed. - me->i_oi_error~error_code = c_oi_errors=>ret_call_not_flushed. - me->i_oi_error~is_flushed = ' '. - me->i_oi_error~has_failed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->message_id = 'SOFFICEINTEGRATION'. - me->message_nr = '899'. - me->param1 = object_name. - me->param2 = method_name. - ENDMETHOD. "constructor - - METHOD i_oi_error~flush_error. - IF error_nr EQ 0. - me->i_oi_error~error_code = c_oi_errors=>ret_ok. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_failed = ' '. - me->i_oi_error~has_succeeded = 'X'. - me->message_id = ''. - me->message_nr = '000'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - IMPORTING - retcode = me->i_oi_error~error_code. - ELSEIF error_nr EQ ret_call_not_flushed. - "call still not flushed - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = me->param2 "method name - objectname = me->param1 - IMPORTING - retcode = me->i_oi_error~error_code. - ELSE. - me->i_oi_error~is_flushed = 'X'. - me->i_oi_error~has_succeeded = ' '. - me->i_oi_error~has_failed = 'X'. - CALL METHOD c_oi_errors=>translate_proxy_error_code - EXPORTING - errorcode = error_nr - errorstring = error_string - IMPORTING - retcode = me->i_oi_error~error_code. - CALL METHOD c_oi_errors=>get_message - IMPORTING - message_id = me->message_id - message_number = me->message_nr - param1 = me->param1 - param2 = me->param2 - param3 = me->param3 - param4 = me->param4. - ENDIF. - ENDMETHOD. "i_oi_error~flush_error - - METHOD i_oi_error~raise_message. -* IMPORTING type TYPE c. -* EXCEPTIONS message_raised flush_failed. - IF me->i_oi_error~has_succeeded IS INITIAL. - IF NOT me->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. "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->param1. param2 = me->param2. - param3 = me->param3. param4 = me->param4. - - message_id = me->message_id. - message_number = me->message_nr. - ENDMETHOD. "i_oi_error~get_message -ENDCLASS. "C_OI_PROXY_ERROR - -*&---------------------------------------------------------------------* -*& Class (Implementation) CL_GRID_ACCESSION -*&---------------------------------------------------------------------* -CLASS lcl_gui_alv_grid IMPLEMENTATION. - - METHOD get_alv_attributes. - CREATE DATA et_table LIKE io_grid->mt_outtab. - et_table = io_grid->mt_outtab. - ENDMETHOD. "get_data - -ENDCLASS. "CL_GRID_ACCESSION - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method'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. "c_oi_proxy_error DEFINITION - -*--------------------------------------------------------------------* -* 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 " ALV grid - EXPORTING - et_table TYPE REF TO data. " dta table - -ENDCLASS. "lcl_gui_alv_grid DEFINITION - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - ABAP - SLIS - SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_col_from, - me->print_title_col_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - CLEAR: me->print_title_row_from, - me->print_title_row_to . - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS. - ev_columns_from = me->print_title_col_from. - ev_columns_to = me->print_title_col_to. - endmethod. - - - method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS. - ev_rows_from = me->print_title_row_from. - ev_rows_to = me->print_title_row_to. - endmethod. - - - 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=>convert_column2int( iv_columns_from ). - lv_col_to_int = zcl_excel_common=>convert_column2int( iv_columns_to ). - -*--------------------------------------------------------------------* -* Check if valid range is supplied -*--------------------------------------------------------------------* - IF lv_col_from_int < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF lv_col_from_int > lv_col_to_int. - lv_errormessage = 'Invalid range supplied for print-title repeatable columns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_col_from = iv_columns_from. - me->print_title_col_to = iv_columns_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - endmethod. - - - 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 < 1. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF iv_rows_from > iv_rows_to. - lv_errormessage = 'Invalid range supplied for print-title repeatable rowumns'(401). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - -*--------------------------------------------------------------------* -* adjust internal representation -*--------------------------------------------------------------------* - me->print_title_row_from = iv_rows_from. - me->print_title_row_to = iv_rows_to. - - -*--------------------------------------------------------------------* -* adjust corresponding range -*--------------------------------------------------------------------* - me->print_title_set_range( ). - - - endmethod. - - - 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->excel->get_default_style( ). - ENDIF. - endmethod. - - - method ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE. - - zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_showzero. - zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. - zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>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. - - - method ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE. - zif_excel_sheet_properties~style = ip_style. - endmethod. - - - method ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE. - - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_unprotected. - CLEAR me->zif_excel_sheet_protection~password. - me->zif_excel_sheet_protection~auto_filter = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~delete_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~format_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_columns = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_hyperlinks = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~insert_rows = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_noactive. -* me->zif_excel_sheet_protection~password = zif_excel_sheet_protection=>c_noactive. "issue #68 - me->zif_excel_sheet_protection~pivot_tables = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_locked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~select_unlocked_cells = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_noactive. - me->zif_excel_sheet_protection~sort = zif_excel_sheet_protection=>c_noactive. - - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME. - me->zif_excel_sheet_vba_project~codename = ip_codename. - endmethod. - - - method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR. - me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. - endmethod. - - - - method ADD_DRAWING. - CASE ip_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - drawings->include( ip_drawing ). - WHEN zcl_excel_drawing=>type_chart. - charts->include( ip_drawing ). - ENDCASE. - endmethod. - - - - method ADD_NEW_CONDITIONAL_STYLE. - - CREATE OBJECT eo_conditional_style. - conditional_styles->add( eo_conditional_style ). - endmethod. - - - - method ADD_NEW_DATA_VALIDATION. - - CREATE OBJECT eo_data_validation. - data_validations->add( eo_data_validation ). - endmethod. - - - - method ADD_NEW_RANGE. -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). - endmethod. - - - - - - - - - method BIND_ALV. - data: lo_converter type ref to zcl_excel_converter. - - create object lo_converter. - - try. - lo_converter->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. - - - - - - - - - - - - - - - - - - - - - - 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'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. "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: <f_collect00> type standard table. - field-symbols: <f_collect01> type standard table. - field-symbols: <f_collect02> type standard table. - field-symbols: <f_collect03> type standard table. - field-symbols: <f_collect04> type standard table. - field-symbols: <f_collect05> type standard table. - field-symbols: <f_collect06> type standard table. - field-symbols: <f_collect07> type standard table. - field-symbols: <f_collect08> type standard table. - field-symbols: <f_collect09> type standard table. - -* table before append subtotal lines - field-symbols: <f_alv_tab> 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: <f_excel_tab> type standard table. - field-symbols: <f_excel_line> type any. - -* dyn subtotal tables - field-symbols: <f_collect_tab> type standard table. - field-symbols: <f_collect_line> type any. - - field-symbols: <f_filter_idx_line> like line of LT_FILTER_IDX_KKBLO. - field-symbols: <f_fieldcat_line> like line of LT_FIELDCAT_KKBLO. - field-symbols: <f_grouplevels_line> like line of LT_GROUPLEVELS_KKBLO. - field-symbols: <f_line> 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. " currency / quantity flag - data: wa_t006 type t006. " decimal place of unit - - data: l_num type i. " table columns number - data: l_typ type c. " table type - data: wa type ref to data. - data: l_int type i. - data: l_counter type i. - - field-symbols: <f_excel_column> type any. - field-symbols: <f_fcat_column> 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. " exporting column number - data vkeycount type i. - data all type i. - data mit type i value 1. " index of recent row? - data li_col_pos type i value 1. " column position - data li_col_num type i. " table columns number - field-symbols: <line> type any. - field-symbols: <item> 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. "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 'X'. - data: li_head_top type i. "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->is_destroyed - IMPORTING - ret_value = l_is_closed. - -* if dun detroyed yet: close -> release proxy - - IF l_is_closed is initial. - call method lo_proxy->close_document -* EXPORTING -* do_save = do_save - IMPORTING - error = lo_error - retcode = lc_retcode. - ENDIF. - - call method lo_proxy->release_document - IMPORTING - error = lo_error - retcode = lC_retcode. - - else. - lc_retcode = c_oi_errors=>ret_document_not_open. - ENDIF. - -* Detroy control container - - IF lo_control is not initial. - CALL METHOD lo_control->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=>ret_ok. - close_document. - call method lo_error->raise_message - EXPORTING - type = 'E'. - clear: lo_error. - endif. - END-OF-DEFINITION. - -*--------------------------------------------------------------------* -* SESSION 0: DOI CONSTRUCTOR -*--------------------------------------------------------------------* - -* check active windown - - call function 'GUI_HAS_ACTIVEX' - 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=>get_container_control - IMPORTING - control = lo_control - retcode = lC_retcode. - - error_doi. - -* Initialize Container control - - CALL METHOD lo_control->init_control - EXPORTING - parent = CL_GUI_CONTAINER=>DEFAULT_SCREEN - r3_application_name = '' - inplace_enabled = 'X' - no_flush = 'X' - register_on_close_event = 'X' - register_on_custom_event = 'X' - IMPORTING - error = lO_ERROR - retcode = lc_retcode. - - error_doi. - -* Get Proxy Document: -* check exist of document proxy, if exist -> 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 = 'Excel.Sheet.8'. - else. -* xlsx format, doctype = soi_doctype_excel_sheet - l_doctype_excel_sheet = 'Excel.Sheet'. - ENDIF. - - CALL METHOD lo_control->get_document_proxy - EXPORTING - document_type = l_doctype_excel_sheet - register_container = 'X' - 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->create_document - EXPORTING - create_view_data = 'X' - open_inplace = 'X' - no_flush = 'X' - 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->open_document - EXPORTING - document_url = i_document_url - open_inplace = 'X' - no_flush = 'X' - IMPORTING - error = lo_error - retcode = lc_retcode. - - error_doi. - - endif. - -* Check Spreadsheet Interface of Document Proxy - - CALL METHOD lo_proxy->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->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=>SCREEN0. - - call method lo_grid->get_alv_attributes - EXPORTING - io_grid = io_alv - IMPORTING - Et_table = lt_alv. - - assign lt_alv->* to <f_alv_tab>. - -* fieldcat - - CALL METHOD iO_alv->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 = '1'. - endif. - clear: wa_fieldcat_lvc. - -* sort table - - CALL METHOD IO_ALV->GET_SORT_CRITERIA - IMPORTING - ET_SORT = lt_sort_lvc. - - -* filter index - - CALL METHOD IO_ALV->GET_FILTERED_ENTRIES - IMPORTING - ET_FILTERED_ENTRIES = lt_filter_idx_lvc. - -* group level + subtotal - - CALL METHOD IO_ALV->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->* to <f_collect00>. - assign lt_collect01->* to <f_collect01>. - assign lt_collect02->* to <f_collect02>. - assign lt_collect03->* to <f_collect03>. - assign lt_collect04->* to <f_collect04>. - assign lt_collect05->* to <f_collect05>. - assign lt_collect06->* to <f_collect06>. - assign lt_collect07->* to <f_collect07>. - assign lt_collect08->* to <f_collect08>. - assign lt_collect09->* to <f_collect09>. - -* transfer to KKBLO struct - - CALL FUNCTION 'LVC_TRANSFER_TO_KKBLO' - 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 = <f_alv_tab> - EXCEPTIONS - IT_DATA_MISSING = 1 - IT_FIELDCAT_LVC_MISSING = 2 - OTHERS = 3. - IF SY-SUBRC <> 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 & total line - - create data lt_excel like <f_ALV_TAB>. - assign lt_excel->* to <f_excel_tab>. - - loop at <f_alv_tab> assigning <f_line>. - l_save_index = sy-tabix. - -* filter base on filter index table - - read table LT_FILTER_IDX_KKBLO assigning <f_filter_idx_line> - with key index = l_save_index - binary search. - if sy-subrc ne 0. - append <f_line> to <f_excel_tab>. - endif. - -* append subtotal lines - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - with key index_to = l_save_index - binary search. - if sy-subrc = 0. - l_tabix = sy-tabix. - do. - if <f_grouplevels_line>-subtot eq 'X' and - <f_grouplevels_line>-hide_level is initial and - <f_grouplevels_line>-cindex_from ne 0. - -* dynamic append subtotal line to excel table base on grouplevel table -* ex <f_GROUPLEVELS_line>-level = 1 -* then <f_collect_tab> = '<F_COLLECT01>' - - l_collect = <f_grouplevels_line>-level. - condense l_collect. - concatenate '<F_COLLECT0' - l_collect '>' -* '->*' - into l_collect. - - assign (l_collect) to <f_collect_tab>. - -* incase there're more than 1 total line of group, at the same level -* for example: subtotal of multi currency - - LOOP AT <f_collect_tab> assigning <f_collect_line>. - IF sy-tabix between <f_grouplevels_line>-cindex_from - and <f_grouplevels_line>-cindex_to. - - - append <f_collect_line> to <f_excel_tab>. - -* 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 'SUBTOT' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - clear: subrangeitem. - - ENDIF. - ENDLOOP. - unassign: <f_collect_tab>. - unassign: <f_collect_line>. - clear: l_collect. - endif. - -* check next subtotal level of group - - unassign: <f_grouplevels_line>. - add 1 to l_tabix. - - read table LT_GROUPLEVELS_KKBLO assigning <f_grouplevels_line> - index l_tabix. - if sy-subrc ne 0 - or <f_grouplevels_line>-index_to ne l_save_index. - exit. - endif. - - unassign: - <f_collect_tab>, - <f_collect_line>. - - enddo. - endif. - - clear: - l_tabix, - l_save_index. - - unassign: - <f_filter_idx_line>, - <f_grouplevels_line>. - - endloop. - -* free local data - - unassign: - <f_line>, - <f_collect_tab>, - <f_collect_line>, - <f_fieldcat_line>. - -* append grand total line - - IF <f_collect00> is assigned. - assign <f_collect00> to <f_collect_tab>. - if <f_collect_tab> is not initial. - LOOP AT <f_collect_tab> assigning <f_collect_line>. - - append <f_collect_line> to <f_excel_tab>. - -* 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 'TOTAL' - subrangeitem-name - into subrangeitem-name. - - subrangeitem-rows = wa_subtot_indexs-index. - subrangeitem-columns = 1. " start col - append subrangeitem to subranges. - ENDLOOP. - endif. - ENDIF. - - clear: - subrangeitem, - LT_SORT_KKBLO, - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>. - - unassign: - <f_collect00>, - <f_collect01>, - <f_collect02>, - <f_collect03>, - <f_collect04>, - <f_collect05>, - <f_collect06>, - <f_collect07>, - <f_collect08>, - <f_collect09>, - <f_collect_tab>, - <f_collect_line>. - -*--------------------------------------------------------------------* -* SESSION 3: MAP DATA TO SEMANTIC TABLE -*--------------------------------------------------------------------* - -* get dependent field field: currency and quantity - - create data wa like line of <f_excel_tab>. - assign wa->* to <f_excel_line>. - - describe field <f_excel_line> type l_typ components l_num. - - do l_num times. - l_save_index = sy-index. - assign component l_save_index of structure <f_excel_line> - to <f_excel_column>. - if sy-subrc ne 0. - message e059(0k) with 'FATAL ERROR' raising fatal_error. - endif. - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname. - assign component <f_fieldcat_line>-fieldname - of structure <f_excel_line> to <f_fcat_column>. - - describe distance between <f_excel_column> and <f_fcat_column> - 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 = <f_fieldcat_line>-fieldname. - wa_column_index-tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-cfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-ctabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - - if <f_fieldcat_line>-qfieldname is not initial. - clear wa_fieldcat_depf. - wa_fieldcat_depf-fieldname = <f_fieldcat_line>-qfieldname. - wa_fieldcat_depf-tabname = <f_fieldcat_line>-qtabname. - collect wa_fieldcat_depf into lt_fieldcat_depf. - endif. - -* rewrite field data type - - if <f_fieldcat_line>-inttype = 'X' - and <f_fieldcat_line>-datatype(3) = 'INT'. - <f_fieldcat_line>-inttype = 'I'. - endif. - - endloop. - - clear: l_save_index. - unassign: <f_fieldcat_line>. - - enddo. - -* build semantic tables - - l_n_hrz_keys = 1. - -* Get keyfigures - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - - clear wa_sema. - clear wa_hkey. - -* Units belong to keyfigures -> display as str - - read table lt_fieldcat_depf into wa_fieldcat_depf with key - fieldname = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-tabname. - - if sy-subrc = 0. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - -* Keyfigures - - else. - case <f_fieldcat_line>-datatype. - when 'QUAN'. - wa_sema-col_typ = 'N03'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. " no dependent field - endif. - - when 'DATS'. - wa_sema-col_typ = 'DAT'. - wa_sema-col_ops = 'NOP'. - - when 'CHAR' OR 'UNIT' OR 'CUKY'. " Added fieldformats UNIT and CUKY - dd. 26-10-2012 Wouter Heuvelmans - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. " dependent field - -* incase numeric, ex '00120' -> display as '12' - - when 'NUMC'. - wa_sema-col_typ = 'STR'. - wa_sema-col_ops = 'DFT'. - - when others. - wa_sema-col_typ = 'NUM'. - - if <f_fieldcat_line>-no_sum ne 'X'. - wa_sema-col_ops = 'ADD'. - else. - wa_sema-col_ops = 'NOP'. - 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 = <f_fieldcat_line>-fieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-cfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-cfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-qfieldname is initial. - read table lt_column_index into wa_column_index with key - fieldname = <f_fieldcat_line>-qfieldname - tabname = <f_fieldcat_line>-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 <f_fieldcat_line>-currency is initial. - - select * from tcurx into table lt_tcurx. - sort lt_tcurx. - read table lt_tcurx into wa_tcurx - with key currkey = <f_fieldcat_line>-currency. - if sy-subrc = 0. - l_num_help = wa_tcurx-currdec. - concatenate 'N' 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 = <f_fieldcat_line>-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: - <f_fieldcat_line>, - <f_excel_line>, - <f_excel_column>, - <f_fcat_column>. - -*--------------------------------------------------------------------* -* 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=>ret_interface_not_supported. - call method c_oi_errors=>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 = 'OLE_DOCUMENT_PROXY' - method_name = 'get_ranges_names'. - - call method c_oi_errors=>add_error - EXPORTING - error = l_error. - - - describe table lt_sema lines datareal. - describe table <f_excel_tab> 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 ('.', ',', ...) in Office config - - call method lo_proxy->get_application_property - EXPORTING - property_name = 'INTERNATIONAL' - subproperty_name = 'DECIMAL_SEPARATOR' - 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 <g> type any. - data search_item(4) value ' #'. - - concatenate ',' decimal '.' decimal into comma_elim. - - data help type i. " table (with subtotal) line number - - help = datac. - - data: rowmax type i value 1. " header row number - data: columnmax type i value 0. " header columns number - - loop at lt_hkey into hkeyitem. - if hkeyitem-col_no > columnmax. - columnmax = hkeyitem-col_no. - endif. - - if hkeyitem-row_no > rowmax. - rowmax = hkeyitem-row_no. - endif. - endloop. - - data: hkeycolumns type i. " header columns no - - hkeycolumns = columnmax. - - if hkeycolumns < l_n_att_cols. - hkeycolumns = l_n_att_cols. - endif. - - columnmax = 0. - - loop at lt_vkey into vkeyitem. - if vkeyitem-col_no > columnmax. - columnmax = vkeyitem-col_no. - endif. - endloop. - - data overflow type i value 1. - data testname(10) type c. - data temp2 type i. " 1st item row position in excel - data realmit type i value 1. - data realoverflow type i value 1. " row index in content - - call method lo_spreadsheet->screen_update - EXPORTING - updating = ''. - - call method lo_spreadsheet->load_lib. - - data: str(40) type c. " range names of columns range (w/o col header) - data: rows type i. " 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 'TITLE'. - 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->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 'H'. "title - li_font_size = 16. - li_font_bold = 1. - li_font_italic = -1. - when 'S'. "subtile - li_font_size = -1. - li_font_bold = 1. - li_font_italic = -1. - when others. "'A' comment - li_font_size = -1. - li_font_bold = -1. - li_font_italic = 1. - endcase. - - call method lo_spreadsheet->set_font - EXPORTING - rangename = ls_commentary_range - family = '' - 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->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 = 'DAT' or semaitem-col_typ = 'MON' or - semaitem-col_typ = 'N00' or semaitem-col_typ = 'N01' or - semaitem-col_typ = 'N01' or semaitem-col_typ = 'N02' or - semaitem-col_typ = 'N03' or semaitem-col_typ = 'PCT' or - semaitem-col_typ = 'STR' or semaitem-col_typ = 'NUM'. - clear str. - str = semaitem-col_no. - condense str. - concatenate 'DATA' 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->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 <f_excel_tab> assigning <line>. - assign component semaitem-col_no of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - dec = typeinfo-decimals. - elseif typeinfo-type = 'I'. - dec = 0. - endif. - - describe field <line> type typ components count. - mit = 1. - do count times. - if mit = semaitem-col_src. - assign component sy-index of structure <line> to <item>. - describe field <item> into td. - read table td-types index 1 into typeinfo. - if typeinfo-type = 'P'. - 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 = 'DAT'. - if semaitem-col_no > vkeycount. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = all - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'STR'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'MON'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 10 - no_flush = no_flush. - elseif semaitem-col_typ = 'N00'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 0 - no_flush = no_flush. - elseif semaitem-col_typ = 'N01'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 1 - no_flush = no_flush. - elseif semaitem-col_typ = 'N02'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - elseif semaitem-col_typ = 'N03'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 3 - no_flush = no_flush. - elseif semaitem-col_typ = 'N04'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 4 - no_flush = no_flush. - elseif semaitem-col_typ = 'NUM'. - if dec eq -1. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = 2 - no_flush = no_flush. - else. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - typ = 1 - decimals = dec - no_flush = no_flush. - endif. - elseif semaitem-col_typ = 'PCT'. - call method lo_spreadsheet->set_format - EXPORTING - rangename = str - currency = '' - 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 = ''. - curritem-size = -1. - curritem-bold = -1. - curritem-italic = -1. - curritem-align = -1. - curritem-frametyp = -1. - curritem-framecolor = -1. - curritem-currency = ''. - 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 <f_excel_tab> assigning <line>. - -* save line index to compare with lt_subtot_indexs, -* to discover line is a subtotal / totale line or not -* ex use to set 'dun display zero in subtotal / total line' - - 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 <line> to <item>. - else. - assign component sy-index - of structure <line> to <item>. - endif. - - contentsitem-row = realoverflow. - - if sy-subrc = 0. - move semaitem-col_ops to search_item(3). - search 'ADD#CNT#MIN#MAX#AVG#NOP#DFT#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - move semaitem-col_typ to search_item(3). - search 'NUM#N00#N01#N02#N03#N04#PCT#DAT#MON#STR#' - for search_item. - if sy-subrc ne 0. - raise error_in_sema. - endif. - contentsitem-column = sy-index. - if semaitem-col_typ eq 'DAT' or semaitem-col_typ eq 'MON'. - if semaitem-col_no > vkeycount. - - " Hinweis 512418 - " EXCEL bezieht Datumsangaben - " auf den 31.12.1899, behandelt - " aber 1900 als ein Schaltjahr - " d.h. ab 1.3.1900 korrekt - " 1.3.1900 als Zahl = 61 - - data: genesis type d value '18991230'. - data: number_of_days type p. -* change for date in char format & sema_type = X - data: temp_date type d. - - if not <item> is initial and not <item> co ' ' and not - <item> co '0'. -* change for date in char format & sema_type = X starts - if sema_type = 'X'. - describe field <item> type typ. - if typ = 'C'. - temp_date = <item>. - number_of_days = temp_date - genesis. - else. - number_of_days = <item> - genesis. - endif. - else. - number_of_days = <item> - genesis. - endif. -* change for date in char format & sema_type = X ends - if number_of_days < 61. - number_of_days = number_of_days - 1. - endif. - - set country 'DE'. - 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 <item> to contentsitem-value. - endif. - elseif semaitem-col_typ eq 'NUM' or - semaitem-col_typ eq 'N00' or - semaitem-col_typ eq 'N01' or - semaitem-col_typ eq 'N02' or - semaitem-col_typ eq 'N03' or - semaitem-col_typ eq 'N04' or - semaitem-col_typ eq 'PCT'. - set country 'DE'. - describe field <item> type typ. - - if semaitem-col_cur is initial. - if typ ne 'F'. - write <item> to contentsitem-value no-grouping - no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - no-sign. - endif. - else. -* Treat of fixed curreny for column >>Y9CK007319 - if semaitem-col_cur < 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 'F'. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign decimals 14. - else. - write <item> to contentsitem-value no-grouping - currency wa_tcurx-currkey no-sign. - endif. - endif. - else. - assign component semaitem-col_cur - of structure <line> to <g>. -* 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 <f_fieldcat_line> - with key tabname = l_tabname - tech = space - no_out = space - col_pos = semaitem-col_no. - IF sy-subrc = 0. - IF <f_fieldcat_line>-cfieldname is not initial. - l_def = 'C'. - else."if <f_fieldcat_line>-qfieldname is not initial. - l_def = 'Q'. - ENDIF. - ENDIF. - -* if field is amount field -* exporting of amount field base on currency decimal table: TCURX - IF l_def = 'C'. "field is amount field - select single * from tcurx into wa_tcurx - where currkey = <g>. -* if amount ref to un-know currency -> 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 'F'. - write <item> to contentsitem-value - currency <g> - no-sign no-grouping. - else. - write <item> to contentsitem-value - decimals 14 currency <g> - no-sign no-grouping. - endif. - -* if field is quantity field -* exporting of quantity field base on quantity decimal table: T006 - - else."if l_def = 'Q'. " field is quantity field - clear: wa_t006. - select single * from t006 into wa_t006 - where MSEHI = <g>. -* if quantity ref to un-know unit-> default decimal = 2 - if sy-subrc eq 0. - curritem-decimals = wa_t006-decan. - else. - curritem-decimals = 2. - endif. - append curritem to currcells. - - write <item> to contentsitem-value - unit <g> - no-sign no-grouping. - condense contentsitem-value. - - ENDIF. - - endif. "Y9CK007319 - endif. - condense contentsitem-value. - -* add function fieldcat-no zero display - - loop at LT_FIELDCAT_KKBLO assigning <f_fieldcat_line> - where tabname = l_tabname - and tech ne 'X' - and no_out ne 'X'. - if <f_fieldcat_line>-col_pos = semaitem-col_no. - if <f_fieldcat_line>-no_zero = 'X'. - if <item> = '0'. - 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 <item> = '0'. - clear: contentsitem-value. - endif. - ENDIF. - endif. - endif. - endloop. - unassign: <f_fieldcat_line>. - - if <item> lt 0. - search contentsitem-value for 'E'. - if sy-fdpos eq 0. - -* use prefix notation for signed numbers - - translate contentsitem-value using '- '. - condense contentsitem-value no-gaps. - concatenate '-' contentsitem-value - into contentsitem-value. - else. - concatenate '-' 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 ":" enthalten. -* Für die -* darf keine Kommaseparierung stattfinden. -* Changing for correction request - Y6BK041073 - if contentsitem-value co '0123456789.,-+E '. - translate contentsitem-value using comma_elim. - endif. - else. - clear contentsitem-value. - -* if type is not numeric -> dun display with zero - - write <item> 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: <f_fieldcat_line>. - -* set item range for set_range_data method - - testname = mit / const. - condense testname. - - concatenate 'TEST' 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->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 = 'X'. - -* 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 > 1. - rowmaxtemp = rowmax - 1. - rowcount = 1. - do rowmaxtemp times. - columncount = 1. - do columnmax times. - contentsitem-column = columncount. - contentsitem-row = rowcount. - contentsitem-value = ''. - 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 = 'TESTHKEY'. - rangeitem-rows = rowmax. - rangeitem-columns = hkeycolumns. - append rangeitem to ranges. - clear: rangeitem. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'TESTHKEY' - 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. " 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: <f_source> type any. - field-symbols: <f_des> type any. - -* columns header format - - wa_format-front = -1. - wa_format-back = 15. "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 -* -> map input format - - if i_columns_header = 'X'. - wa_format-name = 'TESTHKEY'. - 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. " dun map range name - assign component sy-index of structure i_format_col_header - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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 = 'X'. - 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 = 'X'. - 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->cell_format - EXPORTING - cells = currcells - no_flush = no_flush. - -* item data: write item table content - - call method lo_spreadsheet->set_ranges_data - EXPORTING - ranges = ranges - contents = contents - no_flush = no_flush. - -* whole table range to format all table - - if i_columns_header = 'X'. - li_head_top = li_commentary_rows + 1. - else. - li_head_top = li_commentary_rows + 2. - help = help - 1. - endif. - - call method lo_spreadsheet->insert_range_dim - EXPORTING - name = 'WHOLE_TABLE' - 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 = 'X'. - call method lo_spreadsheet->fit_widest - EXPORTING - name = 'WHOLE_TABLE' - 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=>FLUSH ) - - call method lo_spreadsheet->set_frame - EXPORTING - rangename = 'WHOLE_TABLE' - 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->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) = 'SUB'. - wa_format-back = 36. "subtotal line - wa_format_temp = i_format_subtotal. - else. - wa_format-back = 27. "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. " dun map range name - assign component sy-index of structure wa_format_temp - to <f_source>. - if <f_source> is not initial. - assign component sy-index of structure wa_format to <f_des>. - <f_des> = <f_source>. - unassign: <f_des>. - endif. - unassign: <f_source>. - 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->set_ranges_format - EXPORTING - formattable = lt_format - no_flush = no_flush. - refresh: lt_format. - endif. -*--------------------------------------------------------------------* - call method lo_spreadsheet->screen_update - EXPORTING - updating = 'X'. - - call method c_oi_errors=>flush_errors. - - lo_error_w = l_error. - lc_retcode = lo_error_w->error_code. - -** catch no_flush -> led to dump ( optional ) -* go_error = l_error. -* gc_retcode = go_error->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, - <f_excel_tab>. - - clear: - lo_error_w. - - unassign: - <line>, - <item>, - <f_excel_tab>. - -*--------------------------------------------------------------------* -* SESSION 5: SAVE AND CLOSE FILE -*--------------------------------------------------------------------* - -* ex of save path: 'FILE://C:\temp\test.xlsx' - concatenate 'FILE://' I_save_path - into ls_path. - - call method lo_proxy->save_document_to_url - EXPORTING - no_flush = 'X' - url = ls_path - IMPORTING - error = lo_error - retcode = lc_retcode - CHANGING - document_size = li_document_size. - - error_doi. - -* if save successfully -> raise successful message -* message i499(sy) with 'Document is Exported to ' p_path. - message i499(sy) with 'Data has been exported successfully'. - - clear: - ls_path, - li_document_size. - - close_document. - endmethod. - - - - - - - - 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 'B', - lc_top_left_row TYPE zexcel_cell_row VALUE 3. - - 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_value_lowercase TYPE string, - lv_syindex TYPE char3, - lv_errormessage TYPE string, "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: - <ls_field_catalog> TYPE zexcel_s_fieldcatalog, - <ls_field_catalog_custom> TYPE zexcel_s_fieldcatalog, - <fs_table_line> TYPE ANY, - <fs_fldval> 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=>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=>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 -*--------------------------------------------------------------------* - "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. - - "Calculate the top left row of the current table - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - lv_row_int = ls_settings-top_left_row. - - "Get number of row for the current table - DESCRIBE TABLE ip_table LINES lv_rows. - - "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=>convert_column2alpha( lv_maxcol ). - ls_settings-bottom_right_row = lv_maxrow. - - lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). - - lo_iterator = me->tables->if_object_collection~get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_curtable ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF ( ( ls_settings-top_left_row GE lo_curtable->settings-top_left_row AND ls_settings-top_left_row LE lo_curtable->settings-bottom_right_row ) - OR - ( ls_settings-bottom_right_row GE lo_curtable->settings-top_left_row AND ls_settings-bottom_right_row LE lo_curtable->settings-bottom_right_row ) - ) - AND - ( ( lv_column_int GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_column_int LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - OR - ( lv_maxcol GE zcl_excel_common=>convert_column2int( lo_curtable->settings-top_left_column ) AND lv_maxcol LE zcl_excel_common=>convert_column2int( lo_curtable->settings-bottom_right_column ) ) - ). - lv_errormessage = 'Table overlaps with previously bound table and will not be added to worksheet.'(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->settings = ls_settings. - lo_table->set_data( ir_data = ip_table ). - lv_id = me->excel->get_next_table_id( ). - lo_table->set_id( iv_id = lv_id ). -* lo_table->fieldcat = lt_field_catalog[]. - - me->tables->add( lo_table ). - -* It is better to loop column by column (only visible column) - LOOP AT lt_field_catalog ASSIGNING <ls_field_catalog> WHERE dynpfld EQ abap_true. - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - " Due restrinction of new table object we cannot have two column with the same name - " Check if a column with the same name exists, if exists add a counter - " If no medium description is provided we try to use small or long -* lv_value = <ls_field_catalog>-scrtext_m. - IF <ls_field_catalog>-scrtext_m IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_m. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_s IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_s. - <ls_field_catalog>-scrtext_l = lv_value. - ELSEIF <ls_field_catalog>-scrtext_l IS NOT INITIAL. - lv_value = <ls_field_catalog>-scrtext_l. - ELSE. - lv_value = 'Column'. " default value as Excel does - <ls_field_catalog>-scrtext_l = lv_value. - ENDIF. - WHILE 1 = 1. - lv_value_lowercase = lv_value. - TRANSLATE lv_value_lowercase TO LOWER CASE. - READ TABLE lt_column_name_buffer TRANSPORTING NO FIELDS WITH KEY table_line = lv_value_lowercase BINARY SEARCH. - IF sy-subrc <> 0. - <ls_field_catalog>-scrtext_l = lv_value. - INSERT lv_value_lowercase INTO TABLE lt_column_name_buffer. - EXIT. - ELSE. - lv_syindex = sy-index. - CONCATENATE <ls_field_catalog>-scrtext_l lv_syindex INTO lv_value. - ENDIF. - - ENDWHILE. - " First of all write column header - IF <ls_field_catalog>-style_header IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_value - ip_style = <ls_field_catalog>-style_header ). - ELSE. - me->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 <fs_table_line>. - - ASSIGN COMPONENT <ls_field_catalog>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - " issue #290 Add formula support in table - IF <ls_field_catalog>-formula EQ abap_true. - IF <ls_field_catalog>-style IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = <fs_fldval> ). - ENDIF. - ELSE. - IF <ls_field_catalog>-style IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> - ip_style = <ls_field_catalog>-style ). - ELSE. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> ). - ENDIF. - ENDIF. - ADD 1 TO lv_row_int. - - ENDLOOP. - IF sy-subrc <> 0. "create empty row if table has no data - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = space ). - ADD 1 TO lv_row_int. - ENDIF. - -*--------------------------------------------------------------------* - " totals -*--------------------------------------------------------------------* - IF <ls_field_catalog>-totals_function IS NOT INITIAL. - lv_formula = lo_table->get_totals_formula( ip_column = <ls_field_catalog>-scrtext_l ip_function = <ls_field_catalog>-totals_function ). - IF <ls_field_catalog>-style_total IS NOT INITIAL. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_formula = lv_formula - ip_style = <ls_field_catalog>-style_total ). - ELSE. - me->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. - -*--------------------------------------------------------------------* - " conditional formatting -*--------------------------------------------------------------------* - IF <ls_field_catalog>-cond_style IS NOT INITIAL. - lv_first_row = ls_settings-top_left_row + 1. " +1 to exclude header - lv_last_row = ls_settings-top_left_row + lv_rows. - <ls_field_catalog>-cond_style->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. - -*--------------------------------------------------------------------* - " Set field catalog -*--------------------------------------------------------------------* - lo_table->fieldcat = lt_field_catalog[]. - - es_table_settings = ls_settings. - es_table_settings-bottom_right_column = lv_column_alpha. - " >> Issue #291 - IF ip_table IS INITIAL. - es_table_settings-bottom_right_row = ls_settings-top_left_row + 2. "Last rows - ELSE. - es_table_settings-bottom_right_row = ls_settings-top_left_row + lv_rows + 1. "Last rows - ENDIF. - " << Issue #291 - - endmethod. - - - - - - - *--------------------------------------------------------------------* -* issue #293 - Roberto Bianco -* - Christian Assig 2014-03-14 -* -* changes: - Calculate widths using SAPscript font metrics -* (transaction SE73) -* - Calculate the width of dates -* - Add additional width for auto filter buttons -* - Add cell padding to simulate Excel behavior -*--------------------------------------------------------------------* -METHOD calculate_cell_width. - - CONSTANTS: - lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT - lc_default_font_height TYPE tdfontsize VALUE '110', - lc_excel_cell_padding TYPE float VALUE '0.75'. - - DATA: ld_cell_value TYPE zexcel_cell_value, - ld_current_character TYPE c LENGTH 1, - ld_style_guid TYPE zexcel_cell_style, - ls_stylemapping TYPE zexcel_s_stylemapping, - lo_table_object TYPE REF TO object, - lo_table TYPE REF TO zcl_excel_table, - ld_table_top_left_column TYPE zexcel_cell_column, - ld_table_bottom_right_column TYPE zexcel_cell_column, - ld_flag_contains_auto_filter TYPE abap_bool VALUE abap_false, - ld_flag_bold TYPE abap_bool VALUE abap_false, - ld_flag_italic TYPE abap_bool VALUE abap_false, - ld_date TYPE d, - ld_date_char TYPE c LENGTH 50, - ld_font_height TYPE tdfontsize VALUE lc_default_font_height, - lt_itcfc TYPE STANDARD TABLE OF itcfc, - ld_offset TYPE i, - ld_length TYPE i, - ld_uccp TYPE i, - ls_font_metric TYPE mty_s_font_metric, - ld_width_from_font_metrics TYPE i, - ld_font_family TYPE itcfh-tdfamily, - ld_font_name TYPE zexcel_style_font_name VALUE lc_default_font_name, - lt_font_families LIKE STANDARD TABLE OF ld_font_family, - ls_font_cache TYPE mty_s_font_cache. - - FIELD-SYMBOLS: <ls_font_cache> TYPE mty_s_font_cache, - <ls_font_metric> TYPE mty_s_font_metric, - <ls_itcfc> TYPE itcfc. - - " Determine cell content and cell style - me->get_cell( EXPORTING ip_column = ip_column - ip_row = ip_row - IMPORTING ep_value = ld_cell_value - ep_guid = ld_style_guid ). - - " ABAP2XLSX uses tables to define areas containing headers and - " auto-filters. Find out if the current cell is in the header - " of one of these tables. - LOOP AT me->tables->collection INTO lo_table_object. - " Downcast: OBJECT -> ZCL_EXCEL_TABLE - lo_table ?= lo_table_object. - - " Convert column letters to corresponding integer values - ld_table_top_left_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-top_left_column ). - - ld_table_bottom_right_column = - zcl_excel_common=>convert_column2int( - lo_table->settings-bottom_right_column ). - - " Is the current cell part of the table header? - IF ip_column BETWEEN ld_table_top_left_column AND - ld_table_bottom_right_column AND - ip_row EQ lo_table->settings-top_left_row. - " Current cell is part of the table header - " -> Assume that an auto filter is present and that the font is - " bold - ld_flag_contains_auto_filter = abap_true. - ld_flag_bold = abap_true. - ENDIF. - ENDLOOP. - - " If a style GUID is present, read style attributes - IF ld_style_guid IS NOT INITIAL. - TRY. - " Read style attributes - ls_stylemapping = me->excel->get_style_to_guid( ld_style_guid ). - - " If the current cell contains the default date format, - " convert the cell value to a date and calculate its length - IF ls_stylemapping-complete_style-number_format-format_code = - zcl_excel_style_number_format=>c_format_date_std. - - " Convert excel date to ABAP date - ld_date = - zcl_excel_common=>excel_string_to_date( ld_cell_value ). - - " Format ABAP date using user's formatting settings - WRITE ld_date TO ld_date_char. - - " Remember the formatted date to calculate the cell size - ld_cell_value = ld_date_char. - - ENDIF. - - " Read the font size and convert it to the font height - " used by SAPscript (multiplication by 10) - IF ls_stylemapping-complete_stylex-font-size = abap_true. - ld_font_height = ls_stylemapping-complete_style-font-size * 10. - ENDIF. - - " If set, remember the font name - IF ls_stylemapping-complete_stylex-font-name = abap_true. - ld_font_name = ls_stylemapping-complete_style-font-name. - ENDIF. - - " If set, remember whether font is bold and italic. - IF ls_stylemapping-complete_stylex-font-bold = abap_true. - ld_flag_bold = ls_stylemapping-complete_style-font-bold. - ENDIF. - - IF ls_stylemapping-complete_stylex-font-italic = abap_true. - ld_flag_italic = ls_stylemapping-complete_style-font-italic. - ENDIF. - - CATCH zcx_excel ##NO_HANDLER. - " Style GUID is present, but style was not found - " Continue with default values - - ENDTRY. - ENDIF. - - " Check if the same font (font name and font attributes) was already - " used before - READ TABLE mth_font_cache - WITH TABLE KEY - font_name = ld_font_name - font_height = ld_font_height - flag_bold = ld_flag_bold - flag_italic = ld_flag_italic - ASSIGNING <ls_font_cache>. - - IF sy-subrc <> 0. - " Font is used for the first time - " Add the font to our local font cache - ls_font_cache-font_name = ld_font_name. - ls_font_cache-font_height = ld_font_height. - ls_font_cache-flag_bold = ld_flag_bold. - ls_font_cache-flag_italic = ld_flag_italic. - INSERT ls_font_cache INTO TABLE mth_font_cache - ASSIGNING <ls_font_cache>. - - " Determine the SAPscript font family name from the Excel - " font name - SELECT tdfamily - FROM tfo01 - INTO TABLE lt_font_families - UP TO 1 ROWS - WHERE tdtext = ld_font_name. - - " Check if a matching font family was found - " Fonts can be uploaded from TTF files using transaction SE73 - IF lines( lt_font_families ) > 0. - READ TABLE lt_font_families INDEX 1 INTO ld_font_family. - - " Load font metrics (returns a table with the size of each letter - " in the font) - CALL FUNCTION 'LOAD_FONT' - EXPORTING - family = ld_font_family - height = ld_font_height - printer = 'SWIN' - bold = ld_flag_bold - italic = ld_flag_italic - TABLES - metric = lt_itcfc - EXCEPTIONS - font_family = 1 - codepage = 2 - device_type = 3 - OTHERS = 4. - IF sy-subrc <> 0. - CLEAR lt_itcfc. - ENDIF. - - " For faster access, convert each character number to the actual - " character, and store the characters and their sizes in a hash - " table - LOOP AT lt_itcfc ASSIGNING <ls_itcfc>. - ld_uccp = <ls_itcfc>-cpcharno. - ls_font_metric-char = - cl_abap_conv_in_ce=>uccpi( ld_uccp ). - ls_font_metric-char_width = <ls_itcfc>-tdcwidths. - INSERT ls_font_metric - INTO TABLE <ls_font_cache>-th_font_metrics. - ENDLOOP. - - ENDIF. - ENDIF. - - " Calculate the cell width - " If available, use font metrics - IF lines( <ls_font_cache>-th_font_metrics ) = 0. - " Font metrics are not available - " -> Calculate the cell width using only the font size - ld_length = strlen( ld_cell_value ). - ep_width = ld_length * ld_font_height / lc_default_font_height + lc_excel_cell_padding. - - ELSE. - " Font metrics are available - - " Calculate the size of the text by adding the sizes of each - " letter - ld_length = strlen( ld_cell_value ). - DO ld_length TIMES. - " Subtract 1, because the first character is at offset 0 - ld_offset = sy-index - 1. - - " Read the current character from the cell value - ld_current_character = ld_cell_value+ld_offset(1). - - " Look up the size of the current letter - READ TABLE <ls_font_cache>-th_font_metrics - WITH TABLE KEY char = ld_current_character - ASSIGNING <ls_font_metric>. - IF sy-subrc = 0. - " The size of the letter is known - " -> Add the actual size of the letter - ADD <ls_font_metric>-char_width TO ld_width_from_font_metrics. - ELSE. - " The size of the letter is unknown - " -> Add the font height as the default letter size - ADD ld_font_height TO ld_width_from_font_metrics. - ENDIF. - ENDDO. - - " Add cell padding (Excel makes columns a bit wider than the space - " that is needed for the text itself) and convert unit - " (division by 100) - ep_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding. - ENDIF. - - " If the current cell contains an auto filter, make it a bit wider. - " The size used by the auto filter button does not depend on the font - " size. - IF ld_flag_contains_auto_filter = abap_true. - ADD 2 TO ep_width. - ENDIF. - -ENDMETHOD. - - - - 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." 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 float. - - FIELD-SYMBOLS: <column_dimension> LIKE LINE OF column_dimensions. - FIELD-SYMBOLS: <auto_size> LIKE LINE OF auto_sizes. - - column_dimensions[] = me->get_column_dimensions( ). - LOOP AT column_dimensions ASSIGNING <column_dimension>. - auto_size = <column_dimension>-column_dimension->get_auto_size( ). - IF auto_size = abap_true. - APPEND INITIAL LINE TO auto_sizes ASSIGNING <auto_size>. - <auto_size>-col_index = <column_dimension>-column_dimension->get_column_index( ). - <auto_size>-width = -1. - ENDIF. - ENDLOOP. - - " There is only something to do if there are some auto-size columns - IF NOT auto_sizes IS INITIAL. - highest_row = me->get_highest_row( ). - LOOP AT auto_sizes ASSIGNING <auto_size>. -* col_alpha = zcl_excel_common=>convert_column2alpha( <auto_size>-col_index )." issue #155 - less restrictive typing for ip_column - count = 1. - WHILE count <= highest_row. -* Do not check merged cells - IF is_cell_merged( - ip_column = <auto_size>-col_index - ip_row = count ) = abap_false. -* Start of change # issue 139 - Dateretention of cellstyles -* IF cell_style IS BOUND. -* CREATE OBJECT cell_style. -* ENDIF. -* me->get_cell( -* EXPORTING -* ip_column = col_alpha " Cell Column -* ip_row = count " Cell Row -* IMPORTING -* ep_value = cell_value " Cell Value -* ep_style = cell_style " Request Cell Style as well -* ). -* " For an easy start we just take the number of characters as the width -* width = strlen( cell_value ). -* " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker -* " Calculate width using Font Size and Font Type -* IF cell_style IS BOUND -* AND cell_style->font IS BOUND. -* width = cell_style->font->calculate_text_width( cell_value ). -* ENDIF. -* width = calculate_cell_width( ip_column = col_alpha " issue #155 - less restrictive typing for ip_column - width = calculate_cell_width( ip_column = <auto_size>-col_index " issue #155 - less restrictive typing for ip_column - ip_row = count ). -* End of change # issue 139 - Dateretention of cellstyles - IF width > <auto_size>-width. - <auto_size>-width = width. - ENDIF. - ENDIF. - count = count + 1. - ENDWHILE. -* column_dimension = me->get_column_dimension( col_alpha ). " issue #155 - less restrictive typing for ip_column - column_dimension = me->get_column_dimension( <auto_size>-col_index ). " issue #155 - less restrictive typing for ip_column - column_dimension->set_width( <auto_size>-width ). - ENDLOOP. - ENDIF. - - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD change_cell_style. - " 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 zexcel_cell_style. "issue # 177 - -* We have a lot of parameters. Use some macros to make the coding more structured - - DEFINE clear_initial_colorxfields. - if &1-rgb is initial. - clear &2-rgb. - endif. - if &1-indexed is initial. - clear &2-indexed. - endif. - if &1-theme is initial. - clear &2-theme. - endif. - if &1-tint is initial. - clear &2-tint. - endif. - END-OF-DEFINITION. - - DEFINE move_supplied_borders. - if ip_&1 is supplied. " only act if parameter was supplied - if ip_x&1 is supplied. " - borderx = ip_x&1. " use supplied x-parameter - else. - clear borderx with 'X'. -* clear in a way that would be expected to work easily - if ip_&1-border_style is initial. - clear borderx-border_style. - endif. - clear_initial_colorxfields ip_&1-border_color borderx-border_color. - endif. - move-corresponding ip_&1 to complete_style-&2. - move-corresponding borderx to complete_stylex-&2. - endif. - END-OF-DEFINITION. - -* First get current stylsettings - TRY. - me->get_cell( EXPORTING ip_column = ip_column " Cell Column - ip_row = ip_row " Cell Row - IMPORTING ep_guid = l_guid )." Cell Value ). "issue # 177 - - - stylemapping = me->excel->get_style_to_guid( l_guid ). "issue # 177 - complete_style = stylemapping-complete_style. - complete_stylex = stylemapping-complete_stylex. - CATCH zcx_excel. -* Error --> 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 = 'Complete styleinfo has to be supplied with corresponding X-field'. - 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 'X' TO: fontx-bold, - fontx-italic, - fontx-strikethrough, - fontx-underline_mode. - CLEAR fontx-color WITH 'X'. - clear_initial_colorxfields ip_font-color fontx-color. - IF ip_font-family IS NOT INITIAL. - fontx-family = 'X'. - ENDIF. - IF ip_font-name IS NOT INITIAL. - fontx-name = 'X'. - ENDIF. - IF ip_font-scheme IS NOT INITIAL. - fontx-scheme = 'X'. - ENDIF. - IF ip_font-size IS NOT INITIAL. - fontx-size = 'X'. - ENDIF. - IF ip_font-underline_mode IS NOT INITIAL. - fontx-underline_mode = 'X'. - 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 'X'. - 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 'X'. - 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 'X'. - 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_protection TO complete_style-protection. - IF ip_xprotection IS SUPPLIED. - MOVE-CORRESPONDING ip_xprotection TO complete_stylex-protection. - ELSE. - IF ip_protection-hidden IS NOT INITIAL. - complete_stylex-protection-hidden = 'X'. - ENDIF. - IF ip_protection-locked IS NOT INITIAL. - complete_stylex-protection-locked = 'X'. - 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_&1 is supplied. - complete_style-&2 = ip_&1. - complete_stylex-&2 = 'X'. - 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, - - fill_gradtype_type fill-gradtype-TYPE, - fill_gradtype_degree fill-gradtype-DEGREE, - fill_gradtype_bottom fill-gradtype-BOTTOM, - fill_gradtype_left fill-gradtype-LEFT, - fill_gradtype_top fill-gradtype-TOP, - fill_gradtype_right fill-gradtype-RIGHT, - fill_gradtype_position1 fill-gradtype-POSITION1, - fill_gradtype_position2 fill-gradtype-POSITION2, - fill_gradtype_position3 fill-gradtype-POSITION3, - - - - 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&paste of styles is requested - ep_guid = me->excel->get_static_cellstyle_guid( ip_cstyle_complete = complete_style - ip_cstylex_complete = complete_stylex ). - me->set_cell_style( ip_column = ip_column - ip_row = ip_row - ip_style = ep_guid ). - -ENDMETHOD. - - - - - - method CONSTRUCTOR. - DATA: lv_title TYPE zexcel_sheet_title. - - me->excel = ip_excel. - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - lv_title = ip_title. - ELSE. -* lv_title = me->guid. " del issue #154 - Names of worksheets - lv_title = me->generate_title( ). " ins issue #154 - Names of worksheets - ENDIF. - - me->set_title( ip_title = lv_title ). - - CREATE OBJECT sheet_setup. - CREATE OBJECT conditional_styles. - CREATE OBJECT data_validations. - CREATE OBJECT tables. - CREATE OBJECT ranges. " issue #163 - CREATE OBJECT drawings - EXPORTING - ip_type = zcl_excel_drawing=>type_image. - CREATE OBJECT charts - EXPORTING - ip_type = zcl_excel_drawing=>type_chart. - me->zif_excel_sheet_protection~initialize( ). - me->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. - - - method DELETE_MERGE. - - DELETE sheet_content_merge INDEX 1. - DELETE sheet_content_merge INDEX 1. - - endmethod. - - - - - - METHOD delete_row_outline. - - DELETE me->mt_row_outlines WHERE row_from = iv_row_from - AND row_to = iv_row_to. - IF sy-subrc <> 0. " didn't find outline that was to be deleted - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Row outline to be deleted does not exist'. - ENDIF. - -ENDMETHOD. - - - - - - 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 = 'Pleas provide number of rows and/or columns to freeze'. - ENDIF. - - IF ip_num_columns IS SUPPLIED AND ip_num_columns <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of columns to freeze should be positive'. - ENDIF. - - IF ip_num_rows IS SUPPLIED AND ip_num_rows <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Number of rows to freeze should be positive'. - ENDIF. - - freeze_pane_cell_column = ip_num_columns + 1. - freeze_pane_cell_row = ip_num_rows + 1. - endmethod. - - - - 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->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = abap_true. - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - title = lo_worksheet->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. " Start counting with next number - DO. - title = sheetnumber. - SHIFT title LEFT DELETING LEADING space. - CONCATENATE 'Sheet'(001) title INTO ep_title. - INSERT ep_title INTO TABLE t_titles. - IF sy-subrc = 0. " Title not used so far --> take it - EXIT. - ENDIF. - - ADD 1 TO sheetnumber. - ENDDO. - endmethod. - - - - - method GET_ACTIVE_CELL. - - DATA: lv_active_column TYPE zexcel_cell_column_alpha, - lv_active_row TYPE string. - - lv_active_column = zcl_excel_common=>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. - - - - - - - - - - method GET_CELL. - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = zcl_excel_common=>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. " issue 139 - added this to be used for columnwidth calculation - - " 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->excel->get_styles_iterator( ). - WHILE style_iterator->has_next( ) = 'X'. - style ?= style_iterator->get_next( ). - IF style->get_guid( ) = ls_sheet_content-cell_style. - ep_style = style. - EXIT. - ENDIF. - ENDWHILE. - ENDIF. - endmethod. - - - - - - method GET_COLUMN_DIMENSION. - FIELD-SYMBOLS: <fs_column_dimension> LIKE LINE OF column_dimensions. - DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. " issue #155 - less restrictive typing for ip_column - - lv_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column )." issue #155 - less restrictive typing for ip_column - READ TABLE me->column_dimensions ASSIGNING <fs_column_dimension> - WITH KEY column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - - IF NOT <fs_column_dimension> IS ASSIGNED. - CREATE OBJECT r_column_dimension - EXPORTING - ip_index = lv_column_alpha " issue #155 - less restrictive typing for ip_column - ip_excel = me->excel " issue #157 - Allow style for columns - ip_worksheet = me. " issue #157 - Allow style for columns - APPEND INITIAL LINE TO me->column_dimensions ASSIGNING <fs_column_dimension>. - <fs_column_dimension>-column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - <fs_column_dimension>-column_dimension = r_column_dimension. - ELSE. - r_column_dimension = <fs_column_dimension>-column_dimension. - ENDIF. - - endmethod. - - - - method GET_COLUMN_DIMENSIONS. - r_column_dimension[] = me->column_dimensions[]. - endmethod. - - - - method GET_COND_STYLES_ITERATOR. - - eo_iterator = me->conditional_styles->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_ITERATOR. - - eo_iterator = me->data_validations->get_iterator( ). - endmethod. - - - - method GET_DATA_VALIDATIONS_SIZE. - ep_size = me->data_validations->size( ). - endmethod. - - - - method GET_DEFAULT_COLUMN_DIMENSION. - IF me->default_column_dimension IS NOT BOUND. - CREATE OBJECT me->default_column_dimension - EXPORTING - ip_index = 'A' " ???? - ip_worksheet = me - ip_excel = me->excel. - ENDIF. - - r_column_dimension = me->default_column_dimension. - endmethod. - - - - method GET_DEFAULT_EXCEL_DATE_FORMAT. - CONSTANTS: c_lang_e TYPE lang VALUE 'E'. - - IF default_excel_date_format IS NOT INITIAL. - ep_default_excel_date_format = default_excel_date_format. - RETURN. - ENDIF. - - "try to get defaults - TRY. - cl_abap_datfm=>get_date_format_des( EXPORTING im_langu = c_lang_e - IMPORTING ex_dateformat = default_excel_date_format ). - CATCH cx_abap_datfm_format_unknown. - - ENDTRY. - - " and fallback to fixed format - IF default_excel_date_format IS INITIAL. - default_excel_date_format = zcl_excel_style_number_format=>c_format_date_ddmmyyyydot. - ENDIF. - - ep_default_excel_date_format = default_excel_date_format. - endmethod. - - - - 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's get default - l_timefm = cl_abap_timefm=>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=>c_format_date_time6. - WHEN 1. -*1 12 Hour Format (Example: 12:05:10 PM) - default_excel_time_format = zcl_excel_style_number_format=>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=>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=>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=>c_format_date_time2. - WHEN OTHERS. - " and fallback to fixed format - default_excel_time_format = zcl_excel_style_number_format=>c_format_date_time6. - ENDCASE. - - ep_default_excel_time_format = default_excel_time_format. - endmethod. - - - - method GET_DEFAULT_ROW_DIMENSION. - IF me->default_row_dimension IS NOT BOUND. - CREATE OBJECT me->default_row_dimension. - ENDIF. - - r_row_dimension = me->default_row_dimension. - endmethod. - - - - - method GET_DIMENSION_RANGE. - - me->update_dimension_range( ). - IF upper_cell EQ lower_cell. "only one cell - " Worksheet not filled -* IF upper_cell-cell_coords = '0'. - IF upper_cell-cell_coords IS INITIAL. - ep_dimension_range = 'A1'. - ELSE. - ep_dimension_range = upper_cell-cell_coords. - ENDIF. - ELSE. - CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. - ENDIF. - - endmethod. - - - - - 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=>type_image. - r_drawings = drawings. - WHEN zcl_excel_drawing=>type_chart. - r_drawings = charts. - WHEN space. - CREATE OBJECT r_drawings - EXPORTING - ip_type = ''. - - lo_iterator = drawings->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - lo_iterator = charts->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_drawing ?= lo_iterator->get_next( ). - r_drawings->include( lo_drawing ). - ENDWHILE. - WHEN OTHERS. - ENDCASE. - endmethod. - - - - - method GET_DRAWINGS_ITERATOR. - CASE ip_type. - WHEN zcl_excel_drawing=>type_image. - eo_iterator = drawings->get_iterator( ). - WHEN zcl_excel_drawing=>type_chart. - eo_iterator = charts->get_iterator( ). - ENDCASE. - endmethod. - - - - - method GET_FREEZE_CELL. - ep_row = me->freeze_pane_cell_row. - ep_column = me->freeze_pane_cell_column. - endmethod. - - - - METHOD get_guid. - - ep_guid = me->guid. - -ENDMETHOD. - - - - - method GET_HIGHEST_COLUMN. - me->update_dimension_range( ). - r_highest_column = me->lower_cell-cell_column. - endmethod. - - - - - METHOD get_highest_row. - me->update_dimension_range( ). - r_highest_row = me->lower_cell-cell_row. -ENDMETHOD. - - - - method GET_HYPERLINKS_ITERATOR. - eo_iterator = hyperlinks->get_iterator( ). - endmethod. - - - - method GET_HYPERLINKS_SIZE. - ep_size = hyperlinks->size( ). - endmethod. - - - - - 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: <fs_sheet_content> 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 <fs_sheet_content>. - lv_index = lv_index + 1. - READ TABLE sheet_content_merge ASSIGNING <fs_sheet_content> INDEX lv_index. - lv_column_start = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-cell_column ). - lv_row = <fs_sheet_content>-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 <fs_sheet_content> INDEX lv_index. - lv_column_end = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-cell_column ). - lv_row = <fs_sheet_content>-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 ':'. - APPEND lv_merge_range TO merge_range. - ENDWHILE. -* ENDLOOP. - -* READ TABLE sheet_content_merge ASSIGNING <fs_sheet_content> INDEX 1. -* IF sy-subrc EQ 0 AND <fs_sheet_content> IS ASSIGNED. -* lv_column_start = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-cell_column ). -* lv_row = <fs_sheet_content>-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 <fs_sheet_content> INDEX 2. -* IF sy-subrc EQ 0 AND <fs_sheet_content> IS ASSIGNED. -* lv_column_end = zcl_excel_common=>convert_column2alpha( <fs_sheet_content>-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 ':'. -* ENDIF. - - endmethod. - - - - method GET_RANGES_ITERATOR. - - eo_iterator = me->ranges->get_iterator( ). - - endmethod. - - - - - METHOD GET_ROW_DIMENSION. - - FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF me->row_dimensions. - - DATA: ls_row_dimension LIKE LINE OF me->row_dimensions. - - READ TABLE me->row_dimensions ASSIGNING <ls_row_dimension> - WITH TABLE KEY row = ip_row. - - IF NOT <ls_row_dimension> IS ASSIGNED. - CREATE OBJECT r_row_dimension - EXPORTING - ip_index = ip_row. - ls_row_dimension-row = ip_row. - ls_row_dimension-row_dimension = r_row_dimension. - INSERT ls_row_dimension INTO TABLE me->row_dimensions. - ELSE. - r_row_dimension = <ls_row_dimension>-row_dimension. - ENDIF. - -ENDMETHOD. - - - - METHOD get_row_dimensions. - - r_row_dimension[] = me->row_dimensions[]. - -ENDMETHOD. - - - - METHOD get_row_outlines. - - rt_row_outlines = me->mt_row_outlines. - -ENDMETHOD. - - - - method GET_TABCOLOR. - ev_tabcolor = me->tabcolor. - endmethod. - - - - method GET_TABLES_ITERATOR. - eo_iterator = tables->if_object_collection~get_iterator( ). - endmethod. - - - - method GET_TABLES_SIZE. - ep_size = tables->if_object_collection~size( ). - endmethod. - - - - - method GET_TITLE. - DATA lv_value TYPE string. - IF ip_escaped EQ abap_true. - lv_value = me->title. - ep_title = zcl_excel_common=>escape_string( lv_value ). - ELSE. - ep_title = me->title. - ENDIF. - endmethod. - - - - - - 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=>typekind_string. " Thats our default if something goes wrong. - - TRY. - lo_addit ?= cl_abap_typedescr=>describe_by_data( ip_value ). - CATCH cx_sy_move_cast_error. - CLEAR lo_addit. - ENDTRY. - IF lo_addit IS BOUND. - lo_addit->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 'CONVERSION_EXIT_' ls_dfies-convexit '_OUTPUT' 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 <> 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->get_data_type_kind( ip_value ). - ENDIF. - ENDIF. - - endmethod. - - - - - - - method IS_CELL_MERGED. - DATA lt_merge_range TYPE string_table. - - FIELD-SYMBOLS <lv_merge_range> LIKE LINE OF lt_merge_range. - - - lt_merge_range = me->get_merge( ). - - LOOP AT lt_merge_range ASSIGNING <lv_merge_range>. - rp_is_merged = zcl_excel_common=>is_cell_in_range( - ip_column = ip_column - ip_row = ip_row - ip_range = <lv_merge_range> ). - IF rp_is_merged = abap_true. - EXIT. - ENDIF. - ENDLOOP. -endmethod. - - - method PRINT_TITLE_SET_RANGE. -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmoecker, 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->get_ranges_iterator( ). - WHILE lo_range_iterator->has_next( ) = abap_true. - - lo_range ?= lo_range_iterator->get_next( ). - IF lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - EXIT. " Found it - ENDIF. - CLEAR lo_range. - - ENDWHILE. - - - IF me->print_title_col_from IS INITIAL AND - me->print_title_row_from IS INITIAL. -*--------------------------------------------------------------------* -* No print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS BOUND. - me->ranges->remove( lo_range ). - ENDIF. - ELSE. -*--------------------------------------------------------------------* -* Print titles are present, -*--------------------------------------------------------------------* - IF lo_range IS NOT BOUND. - lo_range = me->add_new_range( ). - lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name. - ENDIF. - - lv_repeat_range_sheetname = me->get_title( ). - lv_repeat_range_sheetname = zcl_excel_common=>escape_string( lv_repeat_range_sheetname ). - -*--------------------------------------------------------------------* -* Repeat-columns -*--------------------------------------------------------------------* - IF me->print_title_col_from IS NOT INITIAL. - CONCATENATE lv_repeat_range_sheetname - '!$' me->print_title_col_from - ':$' me->print_title_col_to - INTO lv_repeat_range_col. - ENDIF. - -*--------------------------------------------------------------------* -* Repeat-rows -*--------------------------------------------------------------------* - IF me->print_title_row_from IS NOT INITIAL. - lv_row_char_from = me->print_title_row_from. - lv_row_char_to = me->print_title_row_to. - CONCATENATE '!$' lv_row_char_from - ':$' 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 ','. - ENDIF. - - - lo_range->set_range_value( lv_repeat_range ). - ENDIF. - - - - endmethod. - - - - - - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_numeric> TYPE numeric, - <fs_date> TYPE d, - <fs_time> TYPE t, - <fs_value> TYPE simple. - - IF ip_value IS NOT SUPPLIED AND ip_formula IS NOT SUPPLIED. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please provide the value or formula'. - ENDIF. - -* Begin of change issue #152 - don't touch exisiting style if only value is passed -* lv_style_guid = ip_style. - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 - cell_column = lv_column. - IF sy-subrc = 0. - IF ip_style IS INITIAL. - " If no style is provided as method-parameter and cell is found use cell's current style - lv_style_guid = <fs_sheet_content>-cell_style. - ELSE. - " Style provided as method-parameter --> use this - lv_style_guid = ip_style. - ENDIF. - ELSE. - " No cell found --> use supplied style even if empty - lv_style_guid = ip_style. - ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - IF ip_value IS SUPPLIED. - "if data type is passed just write the value. Otherwise map abap type to excel and perform conversion - "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->* TO <fs_value>. - <fs_value> = 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 = <fs_value> ) . - ENDIF. - lv_value = <fs_value>. - 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 = <fs_value> - ep_value_type = lv_value_type ). - ENDIF. - CASE lv_value_type. - WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2. - lo_addit = cl_abap_elemdescr=>get_i( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed. - lo_addit = cl_abap_elemdescr=>get_f( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_numeric>. - IF sy-subrc = 0. - <fs_numeric> = <fs_value>. - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ). - ENDIF. - - WHEN cl_abap_typedescr=>typekind_char OR cl_abap_typedescr=>typekind_string OR cl_abap_typedescr=>typekind_num OR - cl_abap_typedescr=>typekind_hex. - lv_value = <fs_value>. - lv_data_type = 's'. - - WHEN cl_abap_typedescr=>typekind_date. - lo_addit = cl_abap_elemdescr=>get_d( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_date>. - IF sy-subrc = 0. - <fs_date> = <fs_value>. - lv_value = zcl_excel_common=>date_to_excel_string( ip_value = <fs_date> ) . - ENDIF. -* Begin of change issue #152 - don'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. "get default date format in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = get_default_excel_date_format( ). -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN cl_abap_typedescr=>typekind_time. - lo_addit = cl_abap_elemdescr=>get_t( ). - CREATE DATA lo_value_new TYPE HANDLE lo_addit. - ASSIGN lo_value_new->* TO <fs_time>. - IF sy-subrc = 0. - <fs_time> = <fs_value>. - lv_value = zcl_excel_common=>time_to_excel_string( ip_value = <fs_time> ). - ENDIF. -* Begin of change issue #152 - don'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. "get default time format for user in case parameter is initial -* lo_style = excel->add_new_style( ). -* lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_date_time6. -* lv_style_guid = lo_style->get_guid( ). -* ENDIF. -* End of change issue #152 - don't touch exisiting style if only value is passed - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Invalid data type of input value'. - ENDCASE. - ENDIF. - - ENDIF. - - IF ip_hyperlink IS BOUND. - ip_hyperlink->set_cell_reference( ip_column = ip_column - ip_row = ip_row ). - me->hyperlinks->add( ip_hyperlink ). - ENDIF. - -* Begin of change issue #152 - don'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=>convert_column2int( ip_column ). - -* READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row -* cell_column = lv_column. -* -* IF sy-subrc EQ 0. - IF <fs_sheet_content> IS ASSIGNED. -* End of change issue #152 - don't touch exisiting style if only value is passed - <fs_sheet_content>-cell_value = lv_value. - <fs_sheet_content>-cell_formula = ip_formula. - <fs_sheet_content>-cell_style = lv_style_guid. - <fs_sheet_content>-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."del #152 - replaced with condense - should be faster -* SHIFT lv_row_alpha LEFT DELETING LEADING space. "del #152 - replaced with condense - should be faster - CONDENSE lv_row_alpha NO-GAPS. "ins #152 - replaced 2 shifts - should be faster - lv_col_alpha = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column - CONCATENATE lv_col_alpha lv_row_alpha INTO ls_sheet_content-cell_coords. " issue #155 - less restrictive typing for ip_column - INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING <fs_sheet_content>. "ins #152 - Now <fs_sheet_content> always holds the data -* APPEND ls_sheet_content TO sheet_content. -* SORT sheet_content BY cell_row cell_column. - " me->update_dimension_range( ). - - ENDIF. - -* Begin of change issue #152 - don'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=>typekind_date. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_std. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_number_format_format_code = lo_format_code_datetime ). - - WHEN cl_abap_typedescr=>typekind_time. - TRY. - stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-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=>c_format_date_time6. - ELSE. - lo_format_code_datetime = stylemapping-complete_style-number_format-format_code. - ENDIF. - me->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't touch exisiting style if only value is passed - -* Fix issue #162 - lv_value = ip_value. - IF lv_value CS cl_abap_char_utilities=>cr_lf. - me->change_cell_style( ip_column = ip_column - ip_row = ip_row - ip_alignment_wraptext = abap_true ). - ENDIF. -* End of Fix issue #162 - - endmethod. - - - - - - - method SET_CELL_FORMULA. - DATA: - lv_column TYPE zexcel_cell_column, - ls_sheet_content LIKE LINE OF me->sheet_content. - - FIELD-SYMBOLS: - <sheet_content> LIKE LINE OF me->sheet_content. - -*--------------------------------------------------------------------* -* Get cell to set formula into -*--------------------------------------------------------------------* - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE me->sheet_content ASSIGNING <sheet_content> WITH TABLE KEY cell_row = ip_row - cell_column = lv_column. - IF sy-subrc <> 0. " Create new entry in sheet_content if necessary - CHECK ip_formula IS INITIAL. " no need to create new entry in sheet_content when no formula is passed - ls_sheet_content-cell_row = ip_row. - ls_sheet_content-cell_column = lv_column. - INSERT ls_sheet_content INTO TABLE me->sheet_content ASSIGNING <sheet_content>. - ENDIF. - -*--------------------------------------------------------------------* -* Fieldsymbol now holds the relevant cell -*--------------------------------------------------------------------* - <sheet_content>-cell_formula = ip_formula. - - - endmethod. - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_style_guid = ip_style. - - lv_column = zcl_excel_common=>convert_column2int( ip_column ). - - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row - cell_column = lv_column. - - IF sy-subrc EQ 0. - <fs_sheet_content>-cell_style = lv_style_guid. - ELSE. - set_cell( ip_column = ip_column ip_row = ip_row ip_value = '' ip_style = ip_style ). - ENDIF. - - endmethod. - - - - - - - method SET_COLUMN_WIDTH. - DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - DATA: width TYPE float. - - column_dimension = me->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 <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as column-width'. - ENDIF. - column_dimension->set_width( width ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - ENDIF. - -* If we get down to here, we have to use whatever is found in autosize. - column_dimension->set_auto_size( ip_width_autosize ). - - - endmethod. - - - - - method SET_DEFAULT_EXCEL_DATE_FORMAT. - - IF ip_default_excel_date_format IS INITIAL. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Default date format cannot be blank'. - ENDIF. - - default_excel_date_format = ip_default_excel_date_format. - endmethod. - - - - - - - - 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: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column_start = zcl_excel_common=>convert_column2int( ip_column_start ). - lv_column_end = zcl_excel_common=>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. - - - - method SET_PRINT_GRIDLINES. - me->print_gridlines = i_print_gridlines. - endmethod. - - - - - - method SET_ROW_HEIGHT. - DATA: row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: height TYPE float. - - row_dimension = me->get_row_dimension( ip_row ). - -* if a fix size is supplied use this - TRY. - height = ip_height_fix. - IF height <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Please supply a positive number as row-height'. - ENDIF. - row_dimension->set_row_height( height ). - EXIT. - CATCH cx_sy_conversion_no_number. -* Strange stuff passed --> raise error - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret supplied input as number'. - ENDTRY. - - - - endmethod. - - - - - - - METHOD set_row_outline. - - DATA: ls_row_outline LIKE LINE OF me->mt_row_outlines. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF me->mt_row_outlines. - - READ TABLE me->mt_row_outlines ASSIGNING <ls_row_outline> WITH TABLE KEY row_from = iv_row_from - row_to = iv_row_to. - IF sy-subrc <> 0. - IF iv_row_from <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'First row of outline must be a positive number'. - ENDIF. - IF iv_row_to < iv_row_from. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Last row of outline may not be less than first line of outline'. - ENDIF. - ls_row_outline-row_from = iv_row_from. - ls_row_outline-row_to = iv_row_to. - INSERT ls_row_outline INTO TABLE me->mt_row_outlines ASSIGNING <ls_row_outline>. - ENDIF. - - CASE iv_collapsed. - - WHEN abap_true - OR abap_false. - <ls_row_outline>-collapsed = iv_collapsed. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unknown collapse state'. - - ENDCASE. -ENDMETHOD. - - - - method SET_SHOW_GRIDLINES. - me->show_gridlines = i_show_gridlines. - endmethod. - - - - method SET_SHOW_ROWCOLHEADERS. - me->show_rowcolheaders = i_show_rowcolheaders. - endmethod. - - - - method SET_TABCOLOR. - me->tabcolor = iv_tabcolor. - endmethod. - - - - - - - - - - - - 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 2, - lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - 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: <fs_table_line> TYPE ANY, - <fs_fldval> TYPE ANY, - <fs_dfies> TYPE dfies, - <fs_cell_value> TYPE zexcel_cell_value. - - lv_column_int = zcl_excel_common=>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=>describe_by_data_ref( lr_data ). - - ls_header = lo_tabdescr->get_ddic_header( ). - - lt_dfies = lo_tabdescr->get_ddic_field_list( ). - -* It is better to loop column by column - LOOP AT lt_dfies ASSIGNING <fs_dfies>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - - IF ip_no_header = abap_false. - " First of all write column header - lv_cell_value = <fs_dfies>-scrtext_m. - me->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 <fs_table_line>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - ASSIGN COMPONENT <fs_dfies>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - MOVE <fs_fldval> TO lv_cell_value. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = <fs_fldval> "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=>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. - - - - - method SET_TITLE. -*--------------------------------------------------------------------* -* ToDos: -* 2do§1 The current coding for replacing a named ranges name -* after renaming a sheet should be checked if it is -* really working if sheetname should be escaped -*--------------------------------------------------------------------* - -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmoecker, (wip ) 2012-12-08 -* - ... -* changes: aligning code -* message made to support multilinguality -*--------------------------------------------------------------------* -* issue#243 - ' is not allowed as first character in sheet title -* - Stefan Schmoecker, 2012-12-02 -* changes: added additional check for ' as first character -*--------------------------------------------------------------------* - 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, - lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class - - -*--------------------------------------------------------------------* -* Check whether title consists only of allowed characters -* Illegal characters are: / \ [ ] * ? : --> http://msdn.microsoft.com/en-us/library/ff837411.aspx -* Illegal characters not in documentation: ' as first character -*--------------------------------------------------------------------* - IF ip_title CA '/\[]*?:'. - lv_errormessage = 'Found illegal character in sheetname. List of forbidden characters: /\[]*?:'(402). - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - IF ip_title IS NOT INITIAL AND ip_title(1) = `'`. - lv_errormessage = 'Sheetname may not start with &'(403). " & used instead of ' to allow fallbacklanguage - REPLACE '&' IN lv_errormessage WITH `'`. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = lv_errormessage. - ENDIF. - - -*--------------------------------------------------------------------* -* Check whether title is unique in workbook -*--------------------------------------------------------------------* - lo_worksheets_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_worksheets_iterator->has_next( ) = 'X'. - - lo_worksheet ?= lo_worksheets_iterator->get_next( ). - CHECK me->guid <> lo_worksheet->get_guid( ). " Don't check against itself - IF ip_title = lo_worksheet->get_title( ). " Not unique --> raise exception - errormessage = 'Duplicate sheetname &'. - REPLACE '&' IN errormessage WITH ip_title. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = errormessage. - ENDIF. - - ENDWHILE. - -*--------------------------------------------------------------------* -* Remember old sheetname and rename sheet to desired name -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_old. - me->title = ip_title. - -*--------------------------------------------------------------------* -* After changing this worksheet's title we have to adjust -* all ranges that are referring to this worksheet. -*--------------------------------------------------------------------* -* 2do§1 - Check if the following quickfix is solid -* I fear it isn't - but this implementation is better then -* nothing at all since it handles a supposed majority of cases -*--------------------------------------------------------------------* - CONCATENATE me->title '!' INTO lv_rangesheetname_new. - - lo_ranges_iterator = me->excel->get_ranges_iterator( ). - WHILE lo_ranges_iterator->has_next( ) = 'X'. - - lo_range ?= lo_ranges_iterator->get_next( ). - lv_range_value = lo_range->get_value( ). - REPLACE ALL OCCURRENCES OF lv_rangesheetname_old IN lv_range_value WITH lv_rangesheetname_new. - IF sy-subrc = 0. - lo_range->set_range_value( lv_range_value ). - ENDIF. - - ENDWHILE. - - - endmethod. - - - - 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. - "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=>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. - - "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=>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. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ADD. - - worksheets->add( ip_worksheet ). - - endmethod. - - - method CLEAR. - - worksheets->clear( ). - - endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT worksheets. - - endmethod. - - - - - method GET. - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_worksheet ?= worksheets->if_object_collection~get( lv_index ). - - endmethod. - - - - method GET_ITERATOR. - - eo_iterator ?= worksheets->if_object_collection~get_iterator( ). - - endmethod. - - - - method IS_EMPTY. - - is_empty = worksheets->if_object_collection~is_empty( ). - - endmethod. - - - - method REMOVE. - - worksheets->remove( ip_worksheet ). - - endmethod. - - - - method SIZE. - - ep_size = worksheets->if_object_collection~size( ). - - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - method CONSTRUCTOR. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - me->width = -1. - me->auto_size = abap_false. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - me->excel = ip_excel. "ins issue #157 - Allow Style for columns - me->worksheet = ip_worksheet. "ins issue #157 - Allow Style for columns - - " set default index to cellXf - me->xf_index = 0. - - endmethod. - - - - method GET_AUTO_SIZE. - r_auto_size = me->auto_size. - endmethod. - - - - method GET_COLLAPSED. - r_Collapsed = me->Collapsed. - endmethod. - - - - method GET_COLUMN_INDEX. - r_column_index = me->column_index. - endmethod. - - - - - method GET_COLUMN_STYLE_GUID. - IF me->style_guid IS NOT INITIAL. - ep_style_guid = me->style_guid. - ELSE. - ep_style_guid = me->worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - endmethod. - - - - method GET_OUTLINE_LEVEL. - r_outline_level = me->outline_level. - endmethod. - - - - method GET_VISIBLE. - r_Visible = me->Visible. - endmethod. - - - - method GET_WIDTH. - r_WIDTH = me->WIDTH. - endmethod. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - - method SET_AUTO_SIZE. - me->auto_size = ip_auto_size. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLLAPSED. - me->Collapsed = ip_Collapsed. - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_INDEX. - me->column_index = zcl_excel_common=>convert_column2int( ip_index ). - r_worksheet_columndime = me. - endmethod. - - - - - method SET_COLUMN_STYLE_BY_GUID. - DATA: stylemapping TYPE zexcel_s_stylemapping. - - IF me->excel IS NOT BOUND. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Internal error - reference to ZCL_EXCEL not bound'. - ENDIF. - TRY. - stylemapping = me->excel->get_style_to_guid( ip_style_guid ). - me->style_guid = stylemapping-guid. - - CATCH zcx_excel . - EXIT. " leave as is in case of error - ENDTRY. - - endmethod. - - - - method SET_OUTLINE_LEVEL. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_VISIBLE. - me->Visible = ip_Visible. - r_worksheet_columndime = me. - endmethod. - - - - - - method SET_WIDTH. - TRY. - me->width = ip_width. - r_worksheet_columndime = me. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret width as number'. - ENDTRY. - endmethod. - - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - r_worksheet_columndime = me. - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - method CONSTRUCTOR. - " Initialise values - me->row_index = ip_index. - me->row_height = -1. - me->visible = abap_true. - me->outline_level = 0. - me->collapsed = abap_false. - - " set row dimension as unformatted by default - me->xf_index = 0. - endmethod. - - - - - METHOD get_collapsed. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - lv_previous_row TYPE i, - lv_following_row TYPE i. - - r_collapsed = me->collapsed. - - CHECK r_collapsed = abap_false. " Maybe new method for outlines is being used - CHECK io_worksheet IS BOUND. - -* If an outline is collapsed ( even inside an outer outline ) the line following the last line -* of the group gets the flag "collapsed" - IF io_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. - lv_following_row = me->row_index + 1. - lt_row_outlines = io_worksheet->get_row_outlines( ). - READ TABLE lt_row_outlines TRANSPORTING NO FIELDS WITH KEY row_from = lv_following_row " first line of an outline - collapsed = abap_true. " that is collapsed - ELSE. - lv_previous_row = me->row_index - 1. - lt_row_outlines = io_worksheet->get_row_outlines( ). - READ TABLE lt_row_outlines TRANSPORTING NO FIELDS WITH KEY row_to = lv_previous_row " last line of an outline - collapsed = abap_true. " that is collapsed - ENDIF. - CHECK sy-subrc = 0. " ok - we found it - r_collapsed = abap_true. - - -ENDMETHOD. - - - - - METHOD get_outline_level. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF lt_row_outlines. - -* if someone has set the outline level explicitly - just use that - IF me->outline_level IS NOT INITIAL. - r_outline_level = me->outline_level. - RETURN. - ENDIF. -* Maybe we can use the outline information in the worksheet - CHECK io_worksheet IS BOUND. - - lt_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lt_row_outlines ASSIGNING <ls_row_outline> WHERE row_from <= me->row_index - AND row_to >= me->row_index. - - ADD 1 TO r_outline_level. - - ENDLOOP. - -ENDMETHOD. - - - - method GET_ROW_HEIGHT. - r_row_height = me->row_height. - endmethod. - - - - method GET_ROW_INDEX. - r_row_index = me->row_index. - endmethod. - - - - - METHOD get_visible. - - DATA: lt_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF lt_row_outlines. - - r_visible = me->visible. - CHECK r_visible = 'X'. " Currently visible --> but maybe the new outline methodology will hide it implicitly - CHECK io_worksheet IS BOUND. " But we have to see the worksheet to make sure - - lt_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lt_row_outlines ASSIGNING <ls_row_outline> WHERE row_from <= me->row_index - AND row_to >= me->row_index - AND collapsed = abap_true. " row is in a collapsed outline --> not visible - CLEAR r_visible. - RETURN. " one hit is enough to ensure invisibility - - ENDLOOP. - -ENDMETHOD. - - - - method GET_XF_INDEX. - r_xf_index = me->xf_index. - endmethod. - - - - method SET_COLLAPSED. - me->collapsed = ip_collapsed. - endmethod. - - - - - method SET_OUTLINE_LEVEL. - IF ip_outline_level < 0 - OR ip_outline_level > 7. - - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Outline level must range between 0 and 7.'. - - ENDIF. - me->outline_level = ip_outline_level. - endmethod. - - - - - method SET_ROW_HEIGHT. - TRY. - me->row_height = ip_row_height. - CATCH cx_sy_conversion_no_number. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unable to interpret ip_row_height as number'. - ENDTRY. - endmethod. - - - - method SET_ROW_INDEX. - me->row_index = ip_index. - endmethod. - - - - method SET_VISIBLE. - me->visible = ip_visible. - endmethod. - - - - method SET_XF_INDEX. - me->XF_INDEX = ip_XF_INDEX. - endmethod. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - - ep_file = me->create( ). - endmethod. - - - - METHOD add_further_data_to_zip. -* Can be used by child classes like xlsm-writer to write additional data to zip archive -ENDMETHOD. - - - - method CREATE. - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - - "-------------Added by Alessandro Iannacci - Only if template exist - IF lv_content IS NOT INITIAL AND me->excel->use_template EQ abap_true. - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ELSE. "ADD CUSTOM CHART!!!! - lv_content = me->create_xl_charts( lo_drawing ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDIF. - "------------------------------------------------- - ENDWHILE. - -* Second to last step: Allow further information put into the zip archive by child classes - me->add_further_data_to_zip( lo_zip ). - -********************************************************************** -* Last step: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - - method CREATE_CONTENT_TYPES. - - -** Constant node name - DATA: lc_xml_node_types TYPE string VALUE 'Types', - lc_xml_node_override TYPE string VALUE 'Override', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - " Node namespace - lc_xml_node_types_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/content-types', - " Node extension - lc_xml_node_rels_ext TYPE string VALUE 'rels', - lc_xml_node_xml_ext TYPE string VALUE 'xml', - " Node partnumber - lc_xml_node_theme_pn TYPE string VALUE '/xl/theme/theme1.xml', - lc_xml_node_styles_pn TYPE string VALUE '/xl/styles.xml', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_props_pn TYPE string VALUE '/docProps/app.xml', - lc_xml_node_worksheet_pn TYPE string VALUE '/xl/worksheets/sheet#.xml', - lc_xml_node_strings_pn TYPE string VALUE '/xl/sharedStrings.xml', - lc_xml_node_core_pn TYPE string VALUE '/docProps/core.xml', - lc_xml_node_chart_pn TYPE string VALUE '/xl/charts/chart#.xml', - " Node contentType - lc_xml_node_theme_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.theme+xml', - lc_xml_node_styles_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', - lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', - lc_xml_node_rels_ct TYPE string VALUE 'application/vnd.openxmlformats-package.relationships+xml', - lc_xml_node_xml_ct TYPE string VALUE 'application/xml', - lc_xml_node_props_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.extended-properties+xml', - lc_xml_node_worksheet_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', - lc_xml_node_strings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', - lc_xml_node_core_ct TYPE string VALUE 'application/vnd.openxmlformats-package.core-properties+xml', - lc_xml_node_table_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml', - lc_xml_node_drawings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawing+xml', - lc_xml_node_chart_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table. - - DATA: lv_worksheets_num TYPE i, - lv_worksheets_numc TYPE numc3, - lv_xml_node_worksheet_pn TYPE string, - lv_xml_size TYPE i, - lv_value TYPE string, - lv_drawing_index TYPE i VALUE 1, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node types - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_types - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_types_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_rels_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_rels_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_xml_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_xml_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_theme_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_theme_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_styles_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_styles_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Workbook node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_workb_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Properties node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_props_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_props_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Worksheet node - lv_worksheets_num = excel->get_worksheets_size( ). - DO lv_worksheets_num TIMES. - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - - MOVE sy-index TO lv_worksheets_numc. - SHIFT lv_worksheets_numc LEFT DELETING LEADING '0'. - lv_xml_node_worksheet_pn = lc_xml_node_worksheet_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_worksheet_pn WITH lv_worksheets_numc. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_xml_node_worksheet_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_worksheet_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - lo_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - - lv_value = lo_table->get_name( ). - CONCATENATE '/xl/tables/' lv_value '.xml' INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_table_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Drawings - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lv_index_str = lv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - CONCATENATE '/' me->c_xl_drawings INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_drawings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - - " media mimes - DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - lt_media_type TYPE TABLE OF mimetypes-extension, - lv_media_type TYPE mimetypes-extension, - lv_mime_type TYPE mimetypes-type. - - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_media_type = lo_drawing->get_media_type( ). - COLLECT lv_media_type INTO lt_media_type. - ENDWHILE. - - LOOP AT lt_media_type INTO lv_media_type. - CALL FUNCTION 'SDOK_MIMETYPE_GET' - EXPORTING - extension = lv_media_type - IMPORTING - mimetype = lv_mime_type. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lv_value = lv_media_type. - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lv_value ). - lv_value = lv_mime_type. - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - - " Charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) = abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lv_index_str = lo_drawing->get_index( ). - CONDENSE lv_index_str. - lv_value = lc_xml_node_chart_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_value WITH lv_index_str. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_chart_ct ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_strings_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_strings_ct ). - lo_element_root->append_child( new_child = lo_element ). - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_core_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_core_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_APP. - - -** Constant node name - DATA: lc_xml_node_properties TYPE string VALUE 'Properties', - lc_xml_node_application TYPE string VALUE 'Application', - lc_xml_node_docsecurity TYPE string VALUE 'DocSecurity', - lc_xml_node_scalecrop TYPE string VALUE 'ScaleCrop', - lc_xml_node_headingpairs TYPE string VALUE 'HeadingPairs', - lc_xml_node_vector TYPE string VALUE 'vector', - lc_xml_node_variant TYPE string VALUE 'variant', - lc_xml_node_lpstr TYPE string VALUE 'lpstr', - lc_xml_node_i4 TYPE string VALUE 'i4', - lc_xml_node_titlesofparts TYPE string VALUE 'TitlesOfParts', - lc_xml_node_company TYPE string VALUE 'Company', - lc_xml_node_linksuptodate TYPE string VALUE 'LinksUpToDate', - lc_xml_node_shareddoc TYPE string VALUE 'SharedDoc', - lc_xml_node_hyperlinkschanged TYPE string VALUE 'HyperlinksChanged', - lc_xml_node_appversion TYPE string VALUE 'AppVersion', - " Namespace prefix - lc_vt_ns TYPE string VALUE 'vt', - lc_xml_node_props_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', - lc_xml_node_props_vt_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - " Node attributes - lc_xml_attr_size TYPE string VALUE 'size', - lc_xml_attr_basetype TYPE string VALUE 'baseType'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element_vector TYPE REF TO if_ixml_element, - lo_sub_element_variant TYPE REF TO if_ixml_element, - lo_sub_element_lpstr TYPE REF TO if_ixml_element, - lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node properties - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_properties - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_props_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:vt' - value = lc_xml_node_props_vt_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Application - lo_element = lo_document->create_simple_element( name = lc_xml_node_application - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~application. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " DocSecurity - lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~docsecurity. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " ScaleCrop - lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~scalecrop ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HeadingPairs - lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = '2' ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_variant ). - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** i4 node - lo_sub_element_i4 = lo_document->create_simple_element_ns( name = lc_xml_node_i4 - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( value = lv_value ). - lo_sub_element_variant->append_child( new_child = lo_sub_element_i4 ). " lpstr node - - lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " HeadingPairs - - - " TitlesOfParts - lo_element = lo_document->create_simple_element( name = lc_xml_node_titlesofparts - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = lv_value ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_lpstr ). - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " ** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->get_title( ). - lo_sub_element_lpstr->set_value( value = lv_value ). - lo_sub_element_vector->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - ENDWHILE. - - lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - - lo_element_root->append_child( new_child = lo_element ). " TitlesOfParts - - - - " Company - IF excel->zif_excel_book_properties~company IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_company - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~company. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " LinksUpToDate - lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~linksuptodate ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " SharedDoc - lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~shareddoc ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " HyperlinksChanged - lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged - parent = lo_document ). - lv_value = me->flag2bool( excel->zif_excel_book_properties~hyperlinkschanged ). - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " AppVersion - lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~appversion. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_DOCPROPS_CORE. - - -** Constant node name - DATA: lc_xml_node_coreproperties TYPE string VALUE 'coreProperties', - lc_xml_node_creator TYPE string VALUE 'creator', - lc_xml_node_description TYPE string VALUE 'description', - lc_xml_node_lastmodifiedby TYPE string VALUE 'lastModifiedBy', - lc_xml_node_created TYPE string VALUE 'created', - lc_xml_node_modified TYPE string VALUE 'modified', - " Node attributes - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_target TYPE string VALUE 'dcterms:W3CDTF', - " Node namespace - lc_cp_ns TYPE string VALUE 'cp', - lc_dc_ns TYPE string VALUE 'dc', - lc_dcterms_ns TYPE string VALUE 'dcterms', -* lc_dcmitype_ns TYPE string VALUE 'dcmitype', - lc_xsi_ns TYPE string VALUE 'xsi', - lc_xml_node_cp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', - lc_xml_node_dc_ns TYPE string VALUE 'http://purl.org/dc/elements/1.1/', - lc_xml_node_dcterms_ns TYPE string VALUE 'http://purl.org/dc/terms/', - lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', - lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_value TYPE string, - lv_date TYPE sydatum, - lv_time TYPE syuzeit. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node coreProperties - lo_element_root = lo_document->create_simple_element_ns( name = lc_xml_node_coreproperties - prefix = lc_cp_ns - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:cp' - value = lc_xml_node_cp_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dc' - value = lc_xml_node_dc_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcterms' - value = lc_xml_node_dcterms_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcmitype' - value = lc_xml_node_dcmitype_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:xsi' - value = lc_xml_node_xsi_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Creator node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_creator - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~creator. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Description node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_description - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~description. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " lastModifiedBy node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby - prefix = lc_cp_ns - parent = lo_document ). - lv_value = excel->zif_excel_book_properties~lastmodifiedby. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Created node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - - CONVERT TIME STAMP excel->zif_excel_book_properties~created TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~created. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " Modified node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - CONVERT TIME STAMP excel->zif_excel_book_properties~modified TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time. - CONCATENATE lv_date lv_time INTO lv_value RESPECTING BLANKS. - REPLACE ALL OCCURRENCES OF REGEX '([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})' IN lv_value WITH '$1-$2-$3T$4:$5:$6Z'. -* lv_value = excel->zif_excel_book_properties~modified. -* lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_rId1_id TYPE string VALUE 'rId1', - lc_xml_node_rId2_id TYPE string VALUE 'rId2', - lc_xml_node_rId3_id TYPE string VALUE 'rId3', - " Node type - lc_xml_node_rId1_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - lc_xml_node_rId2_tp TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lc_xml_node_rId3_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - " Node target - lc_xml_node_rId1_tg TYPE string VALUE 'xl/workbook.xml', - lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', - lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId3_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId3_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId2_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId2_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( new_child = lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId1_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId1_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_CHARTS. - - -** Constant node name - CONSTANTS: lc_xml_node_chartspace TYPE string VALUE 'c:chartSpace', - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_date1904 TYPE string VALUE 'c:date1904', - lc_xml_node_lang TYPE string VALUE 'c:lang', - lc_xml_node_roundedcorners TYPE string VALUE 'c:roundedCorners', - lc_xml_node_altcont TYPE string VALUE 'mc:AlternateContent', - lc_xml_node_altcont_ns_mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_choice TYPE string VALUE 'mc:Choice', - lc_xml_node_choice_ns_requires TYPE string VALUE 'c14', - lc_xml_node_choice_ns_c14 TYPE string VALUE 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart', - lc_xml_node_style TYPE string VALUE 'c14:style', - lc_xml_node_fallback TYPE string VALUE 'mc:Fallback', - lc_xml_node_style2 TYPE string VALUE 'c:style', - - "---------------------------CHART - lc_xml_node_chart TYPE string VALUE 'c:chart', - lc_xml_node_autotitledeleted TYPE string VALUE 'c:autoTitleDeleted', - "plotArea - lc_xml_node_plotarea TYPE string VALUE 'c:plotArea', - lc_xml_node_layout TYPE string VALUE 'c:layout', - lc_xml_node_varycolors TYPE string VALUE 'c:varyColors', - lc_xml_node_ser TYPE string VALUE 'c:ser', - lc_xml_node_idx TYPE string VALUE 'c:idx', - lc_xml_node_order TYPE string VALUE 'c:order', - lc_xml_node_tx TYPE string VALUE 'c:tx', - lc_xml_node_v TYPE string VALUE 'c:v', - lc_xml_node_val TYPE string VALUE 'c:val', - lc_xml_node_cat TYPE string VALUE 'c:cat', - lc_xml_node_numref TYPE string VALUE 'c:numRef', - lc_xml_node_strref TYPE string VALUE 'c:strRef', - lc_xml_node_f TYPE string VALUE 'c:f', "this is the range - "note: numcache avoided - lc_xml_node_dlbls TYPE string VALUE 'c:dLbls', - lc_xml_node_showlegendkey TYPE string VALUE 'c:showLegendKey', - lc_xml_node_showval TYPE string VALUE 'c:showVal', - lc_xml_node_showcatname TYPE string VALUE 'c:showCatName', - lc_xml_node_showsername TYPE string VALUE 'c:showSerName', - lc_xml_node_showpercent TYPE string VALUE 'c:showPercent', - lc_xml_node_showbubblesize TYPE string VALUE 'c:showBubbleSize', - "plotArea->pie - lc_xml_node_piechart TYPE string VALUE 'c:pieChart', - lc_xml_node_showleaderlines TYPE string VALUE 'c:showLeaderLines', - lc_xml_node_firstsliceang TYPE string VALUE 'c:firstSliceAng', - "plotArea->line - lc_xml_node_linechart TYPE string VALUE 'c:lineChart', - lc_xml_node_symbol TYPE string VALUE 'c:symbol', - lc_xml_node_marker TYPE string VALUE 'c:marker', - lc_xml_node_smooth TYPE string VALUE 'c:smooth', - "plotArea->bar - lc_xml_node_invertifnegative TYPE string VALUE 'c:invertIfNegative', - lc_xml_node_barchart TYPE string VALUE 'c:barChart', - lc_xml_node_bardir TYPE string VALUE 'c:barDir', - lc_xml_node_gapwidth TYPE string VALUE 'c:gapWidth', - "plotArea->line + plotArea->bar - lc_xml_node_grouping TYPE string VALUE 'c:grouping', - lc_xml_node_axid TYPE string VALUE 'c:axId', - lc_xml_node_catax TYPE string VALUE 'c:catAx', - lc_xml_node_valax TYPE string VALUE 'c:valAx', - lc_xml_node_scaling TYPE string VALUE 'c:scaling', - lc_xml_node_orientation TYPE string VALUE 'c:orientation', - lc_xml_node_delete TYPE string VALUE 'c:delete', - lc_xml_node_axpos TYPE string VALUE 'c:axPos', - lc_xml_node_numfmt TYPE string VALUE 'c:numFmt', - lc_xml_node_majorgridlines TYPE string VALUE 'c:majorGridlines', - lc_xml_node_majortickmark TYPE string VALUE 'c:majorTickMark', - lc_xml_node_minortickmark TYPE string VALUE 'c:minorTickMark', - lc_xml_node_ticklblpos TYPE string VALUE 'c:tickLblPos', - lc_xml_node_crossax TYPE string VALUE 'c:crossAx', - lc_xml_node_crosses TYPE string VALUE 'c:crosses', - lc_xml_node_auto TYPE string VALUE 'c:auto', - lc_xml_node_lblalgn TYPE string VALUE 'c:lblAlgn', - lc_xml_node_lbloffset TYPE string VALUE 'c:lblOffset', - lc_xml_node_nomultilvllbl TYPE string VALUE 'c:noMultiLvlLbl', - lc_xml_node_crossbetween TYPE string VALUE 'c:crossBetween', - "legend - lc_xml_node_legend TYPE string VALUE 'c:legend', - "legend->pie - lc_xml_node_legendpos TYPE string VALUE 'c:legendPos', -* lc_xml_node_layout TYPE string VALUE 'c:layout', "already exist - lc_xml_node_overlay TYPE string VALUE 'c:overlay', - lc_xml_node_txpr TYPE string VALUE 'c:txPr', - lc_xml_node_bodypr TYPE string VALUE 'a:bodyPr', - lc_xml_node_lststyle TYPE string VALUE 'a:lstStyle', - lc_xml_node_p TYPE string VALUE 'a:p', - lc_xml_node_ppr TYPE string VALUE 'a:pPr', - lc_xml_node_defrpr TYPE string VALUE 'a:defRPr', - lc_xml_node_endpararpr TYPE string VALUE 'a:endParaRPr', - "legend->bar + legend->line - lc_xml_node_plotvisonly TYPE string VALUE 'c:plotVisOnly', - lc_xml_node_dispblanksas TYPE string VALUE 'c:dispBlanksAs', - lc_xml_node_showdlblsovermax TYPE string VALUE 'c:showDLblsOverMax', - "---------------------------END OF CHART - - lc_xml_node_printsettings TYPE string VALUE 'c:printSettings', - lc_xml_node_headerfooter TYPE string VALUE 'c:headerFooter', - lc_xml_node_pagemargins TYPE string VALUE 'c:pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'c:pageSetup'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - DATA: lv_rel_id TYPE i. - - DATA lo_element TYPE REF TO if_ixml_element. - DATA lo_element2 TYPE REF TO if_ixml_element. - DATA lo_element3 TYPE REF TO if_ixml_element. - DATA lo_el_rootchart TYPE REF TO if_ixml_element. - DATA lo_element4 TYPE REF TO if_ixml_element. - DATA lo_element5 TYPE REF TO if_ixml_element. - DATA lo_element6 TYPE REF TO if_ixml_element. - DATA lo_element7 TYPE REF TO if_ixml_element. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_chartspace - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - -********************************************************************** -* STEP 4: Create chart - - DATA lo_chartb TYPE REF TO zcl_excel_graph_bars. - DATA lo_chartp TYPE REF TO zcl_excel_graph_pie. - DATA lo_chartl TYPE REF TO zcl_excel_graph_line. - DATA lo_chart TYPE REF TO zcl_excel_graph. - - DATA ls_serie TYPE zcl_excel_graph=>s_series. - DATA ls_ax TYPE zcl_excel_graph_bars=>s_ax. - DATA lv_str TYPE string. - - "Identify chart type - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - lo_chartb ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_pie. - lo_chartp ?= io_drawing->graph. - WHEN zcl_excel_drawing=>c_graph_line. - lo_chartl ?= io_drawing->graph. - WHEN OTHERS. - ENDCASE. - - - lo_chart = io_drawing->graph. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_date1904 - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_1904val ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_lang - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_langval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_roundedcorners - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'val' - value = lo_chart->ns_roundedcornersval ). - - lo_element = lo_document->create_simple_element( name = lc_xml_node_altcont - parent = lo_element_root ). - lo_element->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_altcont_ns_mc ). - - "Choice - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_choice - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'Requires' - value = lc_xml_node_choice_ns_requires ). - lo_element2->set_attribute_ns( name = 'xmlns:c14' - value = lc_xml_node_choice_ns_c14 ). - - "C14:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_c14styleval ). - - "Fallback - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_fallback - parent = lo_element ). - - "C:style - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_style2 - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chart->ns_styleval ). - - "---------------------------CHART - lo_element = lo_document->create_simple_element( name = lc_xml_node_chart - parent = lo_element_root ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_autotitledeleted - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_autotitledeletedval ). - - "plotArea - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotarea - parent = lo_element ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_barchart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bardir - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_bardirval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_varycolorsval ). - - "series - LOOP AT lo_chartb->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_invertifnegative - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-invertifnegative ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartb->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_gapwidth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartb->ns_gapwidthval ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartb->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_bars=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_bars=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_piechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_varycolorsval ). - - "series - LOOP AT lo_chartp->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showbubblesizeval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showleaderlines - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartp->ns_showleaderlinesval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_firstsliceang - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartp->ns_firstsliceangval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_linechart - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_grouping - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_groupingval ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_varycolors - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->ns_varycolorsval ). - - "series - LOOP AT lo_chartl->series INTO ls_serie. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ser - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_idx - parent = lo_element4 ). - IF ls_serie-idx IS NOT INITIAL. - lv_str = ls_serie-idx. - ELSE. - lv_str = sy-tabix - 1. - ENDIF. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_order - parent = lo_element4 ). - lv_str = ls_serie-order. - CONDENSE lv_str. - lo_element5->set_attribute_ns( name = 'val' - value = lv_str ). - IF ls_serie-sername IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_tx - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_element5 ). - lo_element6->set_value( value = ls_serie-sername ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_symbol - parent = lo_element5 ). - lo_element6->set_attribute_ns( name = 'val' - value = ls_serie-symbol ). - IF ls_serie-lbl IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_cat - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_strref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-lbl ). - ENDIF. - IF ls_serie-ref IS NOT INITIAL. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_val - parent = lo_element4 ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_numref - parent = lo_element5 ). - lo_element7 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_element6 ). - lo_element7->set_value( value = ls_serie-ref ). - ENDIF. - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_serie-smooth ). - ENDLOOP. - "endseries - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showlegendkey - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showlegendkeyval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showval - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showvalval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showcatname - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showcatnameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showsername - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showsernameval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showpercent - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showpercentval ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_showbubblesize - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = lo_chartl->ns_showbubblesizeval ). - - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_marker - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_MARKERVAL ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_smooth - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = lo_chartl->NS_SMOOTHVAL ). - - "axes - lo_el_rootchart = lo_element3. - LOOP AT lo_chartl->axes INTO ls_ax. - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_el_rootchart ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - CASE ls_ax-type. - WHEN zcl_excel_graph_line=>c_catax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_catax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). -* lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt -* parent = lo_element3 ). -* lo_element4->set_attribute_ns( name = 'formatCode' -* value = ls_ax-formatcode ). -* lo_element4->set_attribute_ns( name = 'sourceLinked' -* value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_auto - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-auto ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lblalgn - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lblalgn ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lbloffset - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-lbloffset ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_nomultilvllbl - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-nomultilvllbl ). - WHEN zcl_excel_graph_line=>c_valax. - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_valax - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axid - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axid ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_scaling - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_orientation - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'val' - value = ls_ax-orientation ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_delete - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-delete ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_axpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-axpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majorgridlines - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'formatCode' - value = ls_ax-formatcode ). - lo_element4->set_attribute_ns( name = 'sourceLinked' - value = ls_ax-sourcelinked ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_majortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-majortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_minortickmark - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-minortickmark ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_ticklblpos - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-ticklblpos ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossax - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossax ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crosses - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crosses ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_crossbetween - parent = lo_element3 ). - lo_element4->set_attribute_ns( name = 'val' - value = ls_ax-crossbetween ). - WHEN OTHERS. - ENDCASE. - ENDLOOP. - "endaxes - - WHEN OTHERS. - ENDCASE. - - "legend - IF lo_chart->print_label EQ abap_true. - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_legend - parent = lo_element ). - CASE io_drawing->graph_type. - WHEN zcl_excel_drawing=>c_graph_bars. - "----bar - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartb->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_line. - "----line - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartl->ns_overlayval ). - WHEN zcl_excel_drawing=>c_graph_pie. - "----pie - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_legendpos - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_legendposval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_layout - parent = lo_element2 ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_overlay - parent = lo_element2 ). - lo_element3->set_attribute_ns( name = 'val' - value = lo_chartp->ns_overlayval ). - lo_element3 = lo_document->create_simple_element( name = lc_xml_node_txpr - parent = lo_element2 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_bodypr - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_lststyle - parent = lo_element3 ). - lo_element4 = lo_document->create_simple_element( name = lc_xml_node_p - parent = lo_element3 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_ppr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'rtl' - value = lo_chartp->ns_pprrtl ). - lo_element6 = lo_document->create_simple_element( name = lc_xml_node_defrpr - parent = lo_element5 ). - lo_element5 = lo_document->create_simple_element( name = lc_xml_node_endpararpr - parent = lo_element4 ). - lo_element5->set_attribute_ns( name = 'lang' - value = lo_chartp->ns_endpararprlang ). - WHEN OTHERS. - ENDCASE. - ENDIF. - - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_plotvisonly - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_plotvisonlyval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_dispblanksas - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_dispblanksasval ). - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_showdlblsovermax - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'val' - value = lo_chart->ns_showdlblsovermaxval ). - "---------------------------END OF CHART - - "printSettings - lo_element = lo_document->create_simple_element( name = lc_xml_node_printsettings - parent = lo_element_root ). - "headerFooter - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_element ). - "pageMargins - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_element ). - lo_element2->set_attribute_ns( name = 'b' - value = lo_chart->pagemargins-b ). - lo_element2->set_attribute_ns( name = 'l' - value = lo_chart->pagemargins-l ). - lo_element2->set_attribute_ns( name = 'r' - value = lo_chart->pagemargins-r ). - lo_element2->set_attribute_ns( name = 't' - value = lo_chart->pagemargins-t ). - lo_element2->set_attribute_ns( name = 'header' - value = lo_chart->pagemargins-header ). - lo_element2->set_attribute_ns( name = 'footer' - value = lo_chart->pagemargins-footer ). - "pageSetup - lo_element2 = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS. - - -** Constant node name - CONSTANTS: lc_xml_node_wsdr TYPE string VALUE 'xdr:wsDr', - lc_xml_node_ns_xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', - lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main'. - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - DATA: lv_rel_id TYPE i. - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_wsdr - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:xdr' - value = lc_xml_node_ns_xdr ). - lo_element_root->set_attribute_ns( name = 'xmlns:a' - value = lc_xml_node_ns_a ). - -********************************************************************** -* STEP 4: Create drawings - - CLEAR: lv_rel_id. - - lo_drawings = io_worksheet->get_drawings( ). - - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - ADD 1 TO lv_rel_id. - lo_element_cellanchor = me->create_xl_drawing_anchor( - io_drawing = lo_drawing - io_document = lo_document - ip_index = lv_rel_id ). - - lo_element_root->append_child( new_child = lo_element_cellanchor ). - - ENDWHILE. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method CREATE_XL_DRAWINGS_RELS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawings TYPE REF TO zcl_excel_drawings, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lv_value TYPE string, - lv_counter TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_counter = 0. - lo_drawings = io_worksheet->get_drawings( ). - lo_iterator = lo_drawings->get_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_counter. - - lv_value = lv_counter. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - lv_value = lo_drawing->get_media_name( ). - CASE lo_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. - CONCATENATE '../media/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_image_tp ). - - WHEN zcl_excel_drawing=>type_chart. - CONCATENATE '../charts/' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_chart_tp ). - - ENDCASE. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - method CREATE_XL_DRAWING_ANCHOR. - -** Constant node name - CONSTANTS: lc_xml_node_onecellanchor TYPE string VALUE 'xdr:oneCellAnchor', - lc_xml_node_twocellanchor TYPE string VALUE 'xdr:twoCellAnchor', - lc_xml_node_from TYPE string VALUE 'xdr:from', - lc_xml_node_to TYPE string VALUE 'xdr:to', - lc_xml_node_pic TYPE string VALUE 'xdr:pic', - lc_xml_node_ext TYPE string VALUE 'xdr:ext', - lc_xml_node_clientdata TYPE string VALUE 'xdr:clientData', - - lc_xml_node_col TYPE string VALUE 'xdr:col', - lc_xml_node_coloff TYPE string VALUE 'xdr:colOff', - lc_xml_node_row TYPE string VALUE 'xdr:row', - lc_xml_node_rowoff TYPE string VALUE 'xdr:rowOff', - - lc_xml_node_nvpicpr TYPE string VALUE 'xdr:nvPicPr', - lc_xml_node_cnvpr TYPE string VALUE 'xdr:cNvPr', - lc_xml_node_cnvpicpr TYPE string VALUE 'xdr:cNvPicPr', - lc_xml_node_piclocks TYPE string VALUE 'a:picLocks', - - lc_xml_node_sppr TYPE string VALUE 'xdr:spPr', - lc_xml_node_apgeom TYPE string VALUE 'a:prstGeom', - lc_xml_node_aavlst TYPE string VALUE 'a:avLst', - - lc_xml_node_graphicframe TYPE string VALUE 'xdr:graphicFrame', - lc_xml_node_nvgraphicframepr TYPE string VALUE 'xdr:nvGraphicFramePr', - lc_xml_node_cnvgraphicframepr TYPE string VALUE 'xdr:cNvGraphicFramePr', - lc_xml_node_graphicframelocks TYPE string VALUE 'a:graphicFrameLocks', - lc_xml_node_xfrm TYPE string VALUE 'xdr:xfrm', - lc_xml_node_aoff TYPE string VALUE 'a:off', - lc_xml_node_aext TYPE string VALUE 'a:ext', - lc_xml_node_agraphic TYPE string VALUE 'a:graphic', - lc_xml_node_agraphicdata TYPE string VALUE 'a:graphicData', - - lc_xml_node_ns_c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - lc_xml_node_cchart TYPE string VALUE 'c:chart', - - lc_xml_node_blipfill TYPE string VALUE 'xdr:blipFill', - lc_xml_node_ablip TYPE string VALUE 'a:blip', - lc_xml_node_astretch TYPE string VALUE 'a:stretch', - lc_xml_node_ns_r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'. - - - CONSTANTS: lc_on TYPE string VALUE '1', - lc_off TYPE string VALUE '0'. - - DATA: lo_element_graphicframe TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_element3 TYPE REF TO if_ixml_element, - lo_element_from TYPE REF TO if_ixml_element, - lo_element_to TYPE REF TO if_ixml_element, - lo_element_ext TYPE REF TO if_ixml_element, - lo_element_pic TYPE REF TO if_ixml_element, - lo_element_clientdata TYPE REF TO if_ixml_element, - - ls_position TYPE zexcel_drawing_position, - - lv_col TYPE string, " zexcel_cell_column, - lv_row TYPE string, " zexcel_cell_row. - lv_col_offset TYPE string, - lv_row_offset TYPE string, - lv_value TYPE string. - - ls_position = io_drawing->get_position( ). - - IF ls_position-anchor = 'ONE'. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_onecellanchor - parent = io_document ). - ELSE. - ep_anchor = io_document->create_simple_element( name = lc_xml_node_twocellanchor - parent = io_document ). - ENDIF. - -* from cell ****************************** - lo_element_from = io_document->create_simple_element( name = lc_xml_node_from - parent = io_document ). - - lv_col = ls_position-from-col. - lv_row = ls_position-from-row. - lv_col_offset = ls_position-from-col_offset. - lv_row_offset = ls_position-from-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_from->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_from->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_from ). - - IF ls_position-anchor = 'ONE'. - -* ext ****************************** - lo_element_ext = io_document->create_simple_element( name = lc_xml_node_ext - parent = io_document ). - - lv_value = io_drawing->get_width_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cx' - value = lv_value ). - lv_value = io_drawing->get_height_emu_str( ). - lo_element_ext->set_attribute_ns( name = 'cy' - value = lv_value ). - ep_anchor->append_child( new_child = lo_element_ext ). - - ELSEIF ls_position-anchor = 'TWO'. - -* to cell ****************************** - lo_element_to = io_document->create_simple_element( name = lc_xml_node_to - parent = io_document ). - - lv_col = ls_position-to-col. - lv_row = ls_position-to-row. - lv_col_offset = ls_position-to-col_offset. - lv_row_offset = ls_position-to-row_offset. - CONDENSE lv_col NO-GAPS. - CONDENSE lv_row NO-GAPS. - CONDENSE lv_col_offset NO-GAPS. - CONDENSE lv_row_offset NO-GAPS. - - lo_element = io_document->create_simple_element( name = lc_xml_node_col - parent = io_document ). - lo_element->set_value( value = lv_col ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_coloff - parent = io_document ). - lo_element->set_value( value = lv_col_offset ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_row - parent = io_document ). - lo_element->set_value( value = lv_row ). - lo_element_to->append_child( new_child = lo_element ). - - lo_element = io_document->create_simple_element( name = lc_xml_node_rowoff - parent = io_document ). - lo_element->set_value( value = lv_row_offset ). - lo_element_to->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_to ). - - ENDIF. - - CASE io_drawing->get_type( ). - WHEN zcl_excel_drawing=>type_image. -* pic ********************************** - lo_element_pic = io_document->create_simple_element( name = lc_xml_node_pic - parent = io_document ). -* nvPicPr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvpicpr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). - -* cNvPicPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpicpr - parent = io_document ). - -* picLocks - lo_element3 = io_document->create_simple_element( name = lc_xml_node_piclocks - parent = io_document ). - lo_element3->set_attribute_ns( name = 'noChangeAspect' - value = '1' ). - - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_pic->append_child( new_child = lo_element ). - -* blipFill - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = io_document->create_simple_element( name = lc_xml_node_blipfill - parent = io_document ). - lo_element2 = io_document->create_simple_element( name = lc_xml_node_ablip - parent = io_document ). - lo_element2->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element2->set_attribute_ns( name = 'r:embed' - value = lv_value ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_astretch - parent = io_document ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - -* spPr - lo_element = io_document->create_simple_element( name = lc_xml_node_sppr - parent = io_document ). - - lo_element2 = io_document->create_simple_element( name = lc_xml_node_apgeom - parent = io_document ). - lo_element2->set_attribute_ns( name = 'prst' - value = 'rect' ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_aavlst - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - - lo_element_pic->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_pic ). - WHEN zcl_excel_drawing=>type_chart. -* graphicFrame ********************************** - lo_element_graphicframe = io_document->create_simple_element( name = lc_xml_node_graphicframe - parent = io_document ). -* nvGraphicFramePr - lo_element = io_document->create_simple_element( name = lc_xml_node_nvgraphicframepr - parent = io_document ). -* cNvPr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvpr - parent = io_document ). - lv_value = sy-index. - CONDENSE lv_value. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lo_element2->set_attribute_ns( name = 'name' - value = io_drawing->title ). - lo_element->append_child( new_child = lo_element2 ). -* cNvGraphicFramePr - lo_element2 = io_document->create_simple_element( name = lc_xml_node_cnvgraphicframepr - parent = io_document ). - lo_element3 = io_document->create_simple_element( name = lc_xml_node_graphicframelocks - parent = io_document ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* xfrm - lo_element = io_document->create_simple_element( name = lc_xml_node_xfrm - parent = io_document ). -* off - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aoff - parent = io_document ). - lo_element2->set_attribute_ns( name = 'y' value = '0' ). - lo_element2->set_attribute_ns( name = 'x' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). -* ext - lo_element2 = io_document->create_simple_element( name = lc_xml_node_aext - parent = io_document ). - lo_element2->set_attribute_ns( name = 'cy' value = '0' ). - lo_element2->set_attribute_ns( name = 'cx' value = '0' ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - -* graphic - lo_element = io_document->create_simple_element( name = lc_xml_node_agraphic - parent = io_document ). -* graphicData - lo_element2 = io_document->create_simple_element( name = lc_xml_node_agraphicdata - parent = io_document ). - lo_element2->set_attribute_ns( name = 'uri' value = lc_xml_node_ns_c ). - -* chart - lo_element3 = io_document->create_simple_element( name = lc_xml_node_cchart - parent = io_document ). - - lo_element3->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_ns_r ). - lo_element3->set_attribute_ns( name = 'xmlns:c' - value = lc_xml_node_ns_c ). - - lv_value = ip_index. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element3->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element2->append_child( new_child = lo_element3 ). - lo_element->append_child( new_child = lo_element2 ). - lo_element_graphicframe->append_child( new_child = lo_element ). - ep_anchor->append_child( new_child = lo_element_graphicframe ). - - ENDCASE. - -* client data *************************** - lo_element_clientdata = io_document->create_simple_element( name = lc_xml_node_clientdata - parent = io_document ). - ep_anchor->append_child( new_child = lo_element_clientdata ). - - endmethod. - - - - method CREATE_XL_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_sheet_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lc_xml_node_rid_theme_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - lc_xml_node_rid_styles_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lc_xml_node_rid_shared_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - " Node target - lc_xml_node_ridx_tg TYPE string VALUE 'worksheets/sheet#.xml', - lc_xml_node_rid_shared_tg TYPE string VALUE 'sharedStrings.xml', - lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', - lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_syindex(3) TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 2. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_styles_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( new_child = lo_element ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size - 1. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_theme_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( new_child = lo_element ). - - lv_size = excel->get_worksheets_size( ). - - DO lv_size TIMES. - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - lv_xml_node_ridx_tg = lc_xml_node_ridx_tg. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_tg WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_sheet_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( new_child = lo_element ). - ENDDO. - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 3 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_shared_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - method CREATE_XL_SHAREDSTRINGS. - - -** Constant node name - DATA: lc_xml_node_sst TYPE string VALUE 'sst', - lc_xml_node_si TYPE string VALUE 'si', - lc_xml_node_t TYPE string VALUE 't', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_value TYPE string, - lv_count_str TYPE string, - lv_uniquecount_str TYPE string, - lv_sytabix TYPE sytabix, - lv_count TYPE i, - lv_uniquecount TYPE i. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_sheet_string> TYPE zexcel_s_shared_string. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - DESCRIBE TABLE lt_cell_data LINES lv_count. - MOVE lv_count TO lv_count_str. - - SHIFT lv_count_str RIGHT DELETING TRAILING space. - SHIFT lv_count_str LEFT DELETING LEADING space. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - DESCRIBE TABLE lt_cell_data LINES lv_uniquecount. - MOVE lv_uniquecount TO lv_uniquecount_str. - - SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. - SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - lv_sytabix = sy-tabix - 1. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. - MOVE <fs_sheet_content>-data_type TO ls_shared_string-string_type. - APPEND ls_shared_string TO shared_strings. - ENDLOOP. - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_sst - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_count - value = lv_count_str ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_uniquecount - value = lv_uniquecount_str ). - -********************************************************************** -* STEP 4: Create subnode - LOOP AT shared_strings ASSIGNING <fs_sheet_string>. - lo_element = lo_document->create_simple_element( name = lc_xml_node_si - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). - if <fs_sheet_string>-string_type EQ 's_leading_blanks'. - lo_sub_element->set_attribute( name = 'space' namespace = 'xml' value = 'preserve' ). - endif. - lo_sub_element->set_value( value = <fs_sheet_string>-string_value ). - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - ENDLOOP. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - - - METHOD create_xl_sheet. -*--------------------------------------------------------------------* -* issue #330 - Adding ColorScale conditional formatting -* - Ivan Femia, 2014-08-25 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF colors, - colorrgb TYPE zexcel_color, - END OF colors. - -*--------------------------------------------------------------------* -* issue #237 - Error writing column-style -* - Stefan Schmöcker, 2012-11-01 -*--------------------------------------------------------------------* - - TYPES: BEGIN OF cfvo, - value TYPE zexcel_conditional_value, - type TYPE zexcel_conditional_type, - END OF cfvo. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - start -*--------------------------------------------------------------------* - TYPES: BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, - END OF lty_table_area. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - end -*--------------------------------------------------------------------* -** Constants - CONSTANTS: - lc_dummy_cell_content TYPE zexcel_s_cell_data-cell_value VALUE '})~~~ This is a dummy value for ABAP2XLSX and you should never find this in a real excelsheet Ihope'. - - -** Constant node name - DATA: lc_xml_node_worksheet TYPE string VALUE 'worksheet', - lc_xml_node_sheetpr TYPE string VALUE 'sheetPr', - lc_xml_node_tabcolor TYPE string VALUE 'tabColor', - lc_xml_node_outlinepr TYPE string VALUE 'outlinePr', - lc_xml_node_dimension TYPE string VALUE 'dimension', - lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', - lc_xml_node_sheetview TYPE string VALUE 'sheetView', - lc_xml_node_selection TYPE string VALUE 'selection', - lc_xml_node_pane TYPE string VALUE 'pane', - lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', - lc_xml_node_cols TYPE string VALUE 'cols', - lc_xml_node_col TYPE string VALUE 'col', - lc_xml_node_sheetdata TYPE string VALUE 'sheetData', - lc_xml_node_row TYPE string VALUE 'row', - lc_xml_node_c TYPE string VALUE 'c', - lc_xml_node_v TYPE string VALUE 'v', - lc_xml_node_f TYPE string VALUE 'f', - lc_xml_node_sheetprotection TYPE string VALUE 'sheetProtection', - lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', - lc_xml_node_pagesetup TYPE string VALUE 'pageSetup', - lc_xml_node_pagesetuppr TYPE string VALUE 'pageSetUpPr', - lc_xml_node_condformatting TYPE string VALUE 'conditionalFormatting', - lc_xml_node_cfrule TYPE string VALUE 'cfRule', - lc_xml_node_color TYPE string VALUE 'color', " Databar by Albert Lladanosa - lc_xml_node_databar TYPE string VALUE 'dataBar', " Databar by Albert Lladanosa - lc_xml_node_colorscale TYPE string VALUE 'colorScale', - lc_xml_node_iconset TYPE string VALUE 'iconSet', - lc_xml_node_cfvo TYPE string VALUE 'cfvo', - lc_xml_node_formula TYPE string VALUE 'formula', - lc_xml_node_datavalidations TYPE string VALUE 'dataValidations', - lc_xml_node_datavalidation TYPE string VALUE 'dataValidation', - lc_xml_node_formula1 TYPE string VALUE 'formula1', - lc_xml_node_formula2 TYPE string VALUE 'formula2', - lc_xml_node_mergecell TYPE string VALUE 'mergeCell', - lc_xml_node_mergecells TYPE string VALUE 'mergeCells', - lc_xml_node_drawing TYPE string VALUE 'drawing', - lc_xml_node_headerfooter TYPE string VALUE 'headerFooter', - lc_xml_node_oddheader TYPE string VALUE 'oddHeader', - lc_xml_node_oddfooter TYPE string VALUE 'oddFooter', - lc_xml_node_evenheader TYPE string VALUE 'evenHeader', - lc_xml_node_evenfooter TYPE string VALUE 'evenFooter', - lc_xml_node_autofilter TYPE string VALUE 'autoFilter', - lc_xml_node_filtercolumn TYPE string VALUE 'filterColumn', - lc_xml_node_filters TYPE string VALUE 'filters', - lc_xml_node_filter TYPE string VALUE 'filter', - " Node attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_summarybelow TYPE string VALUE 'summaryBelow', - lc_xml_attr_summaryright TYPE string VALUE 'summaryRight', - lc_xml_attr_tabselected TYPE string VALUE 'tabSelected', - lc_xml_attr_showzeros TYPE string VALUE 'showZeros', - lc_xml_attr_zoomscale TYPE string VALUE 'zoomScale', - lc_xml_attr_zoomscalenormal TYPE string VALUE 'zoomScaleNormal', - lc_xml_attr_zoomscalepageview TYPE string VALUE 'zoomScalePageLayoutView', - lc_xml_attr_zoomscalesheetview TYPE string VALUE 'zoomScaleSheetLayoutView', - lc_xml_attr_workbookviewid TYPE string VALUE 'workbookViewId', - lc_xml_attr_showgridlines TYPE string VALUE 'showGridLines', - lc_xml_attr_gridlines TYPE string VALUE 'gridLines', - lc_xml_attr_showrowcolheaders TYPE string VALUE 'showRowColHeaders', - lc_xml_attr_activecell TYPE string VALUE 'activeCell', - lc_xml_attr_sqref TYPE string VALUE 'sqref', - lc_xml_attr_min TYPE string VALUE 'min', - lc_xml_attr_max TYPE string VALUE 'max', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_width TYPE string VALUE 'width', - lc_xml_attr_defaultwidth TYPE string VALUE '9.10', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_bestfit TYPE string VALUE 'bestFit', - lc_xml_attr_customheight TYPE string VALUE 'customHeight', - lc_xml_attr_customwidth TYPE string VALUE 'customWidth', - lc_xml_attr_collapsed TYPE string VALUE 'collapsed', - lc_xml_attr_defaultrowheight TYPE string VALUE 'defaultRowHeight', - lc_xml_attr_defaultcolwidth TYPE string VALUE 'defaultColWidth', - lc_xml_attr_outlinelevelrow TYPE string VALUE 'x14ac:outlineLevelRow', - lc_xml_attr_outlinelevelcol TYPE string VALUE 'x14ac:outlineLevelCol', - lc_xml_attr_outlinelevel TYPE string VALUE 'outlineLevel', - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_s TYPE string VALUE 's', - lc_xml_attr_spans TYPE string VALUE 'spans', - lc_xml_attr_t TYPE string VALUE 't', - lc_xml_attr_password TYPE string VALUE 'password', - lc_xml_attr_sheet TYPE string VALUE 'sheet', - lc_xml_attr_objects TYPE string VALUE 'objects', - lc_xml_attr_scenarios TYPE string VALUE 'scenarios', - lc_xml_attr_autofilter TYPE string VALUE 'autoFilter', - lc_xml_attr_deletecolumns TYPE string VALUE 'deleteColumns', - lc_xml_attr_deleterows TYPE string VALUE 'deleteRows', - lc_xml_attr_formatcells TYPE string VALUE 'formatCells', - lc_xml_attr_formatcolumns TYPE string VALUE 'formatColumns', - lc_xml_attr_formatrows TYPE string VALUE 'formatRows', - lc_xml_attr_insertcolumns TYPE string VALUE 'insertColumns', - lc_xml_attr_inserthyperlinks TYPE string VALUE 'insertHyperlinks', - lc_xml_attr_insertrows TYPE string VALUE 'insertRows', - lc_xml_attr_pivottables TYPE string VALUE 'pivotTables', - lc_xml_attr_selectlockedcells TYPE string VALUE 'selectLockedCells', - lc_xml_attr_selectunlockedcell TYPE string VALUE 'selectUnlockedCells', - lc_xml_attr_sort TYPE string VALUE 'sort', - lc_xml_attr_left TYPE string VALUE 'left', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_header TYPE string VALUE 'header', - lc_xml_attr_footer TYPE string VALUE 'footer', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_iconset TYPE string VALUE 'iconSet', - lc_xml_attr_showvalue TYPE string VALUE 'showValue', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_dxfid TYPE string VALUE 'dxfId', - lc_xml_attr_priority TYPE string VALUE 'priority', - lc_xml_attr_operator TYPE string VALUE 'operator', - lc_xml_attr_allowblank TYPE string VALUE 'allowBlank', - lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage', - lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage', - lc_xml_attr_errortitle TYPE string VALUE 'errorTitle', - lc_xml_attr_error TYPE string VALUE 'error', - lc_xml_attr_prompttitle TYPE string VALUE 'promptTitle', - lc_xml_attr_prompt TYPE string VALUE 'prompt', - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_blackandwhite TYPE string VALUE 'blackAndWhite', - lc_xml_attr_cellcomments TYPE string VALUE 'cellComments', - lc_xml_attr_copies TYPE string VALUE 'copies', - lc_xml_attr_draft TYPE string VALUE 'draft', - lc_xml_attr_errors TYPE string VALUE 'errors', - lc_xml_attr_firstpagenumber TYPE string VALUE 'firstPageNumber', - lc_xml_attr_fittopage TYPE string VALUE 'fitToPage', - lc_xml_attr_fittoheight TYPE string VALUE 'fitToHeight', - lc_xml_attr_fittowidth TYPE string VALUE 'fitToWidth', - lc_xml_attr_horizontaldpi TYPE string VALUE 'horizontalDpi', - lc_xml_attr_orientation TYPE string VALUE 'orientation', - lc_xml_attr_pageorder TYPE string VALUE 'pageOrder', - lc_xml_attr_paperheight TYPE string VALUE 'paperHeight', - lc_xml_attr_papersize TYPE string VALUE 'paperSize', - lc_xml_attr_paperwidth TYPE string VALUE 'paperWidth', - lc_xml_attr_scale TYPE string VALUE 'scale', - lc_xml_attr_usefirstpagenumber TYPE string VALUE 'useFirstPageNumber', - lc_xml_attr_useprinterdefaults TYPE string VALUE 'usePrinterDefaults', - lc_xml_attr_verticaldpi TYPE string VALUE 'verticalDpi', - lc_xml_attr_differentoddeven TYPE string VALUE 'differentOddEven', - lc_xml_attr_colid TYPE string VALUE 'colId', - lc_xml_attr_filtermode TYPE string VALUE 'filterMode', - lc_xml_attr_tabcolor_rgb TYPE string VALUE 'rgb', - lc_xml_attr_tabcolor_theme TYPE string VALUE 'theme', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_comp_pref TYPE string VALUE 'x14ac', - lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_table TYPE REF TO zcl_excel_table, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_row_dim_empty TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, - default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_value TYPE string, - lt_range_merge TYPE string_table, - lv_merge TYPE string, - lv_column_p TYPE zexcel_cell_column_alpha, - lv_column TYPE zexcel_cell_column, - lv_cell_value TYPE zexcel_cell_value, - lv_style_guid TYPE zexcel_cell_style, - lv_flag TYPE c, - ls_databar TYPE zexcel_conditional_databar, " Databar by Albert Lladanosa - ls_colorscale TYPE zexcel_conditional_colorscale, - ls_iconset TYPE zexcel_conditional_iconset, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - lt_cfvo TYPE TABLE OF cfvo, - ls_cfvo TYPE cfvo, - lt_colors TYPE TABLE OF colors, - ls_colors TYPE colors, - lv_cell_row_s TYPE string, - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping, - lv_freeze_cell_row TYPE zexcel_cell_row, - lv_freeze_cell_column TYPE zexcel_cell_column, - lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, - row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - lv_relation_id TYPE i VALUE 0, - outline_level_row TYPE i VALUE 0, - outline_level_col TYPE i VALUE 0, - lv_current_row TYPE i, - lv_next_row TYPE i, - ls_sheet_content LIKE LINE OF io_worksheet->sheet_content, - ls_sheet_content_empty LIKE LINE OF io_worksheet->sheet_content, - lv_last_row TYPE i, - lts_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - lts_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, - col_count TYPE int4, - merge_count TYPE int4, - write_current_row TYPE boolean, - lt_values TYPE zexcel_t_autofilter_values, - ls_values TYPE zexcel_s_autofilter_values, - lv_guid TYPE uuid, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter, - l_autofilter_hidden TYPE flag, - ls_area TYPE zexcel_s_autofilter_area, - lv_ref TYPE string, - lv_style_index TYPE i. " issue #237 - - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data, - <fs_range_merge> LIKE LINE OF lt_range_merge, - <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio, - <ls_row_outline> LIKE LINE OF lts_row_outlines. - -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - start -*--------------------------------------------------------------------* - DATA: lt_table_areas TYPE SORTED TABLE OF lty_table_area WITH NON-UNIQUE KEY left right top bottom, - ls_table_area LIKE LINE OF lt_table_areas. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - end -*--------------------------------------------------------------------* - - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_worksheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:mc' - value = lc_xml_node_comp_ns ). - lo_element_root->set_attribute_ns( name = 'mc:Ignorable' - value = lc_xml_node_comp_pref ). - lo_element_root->set_attribute_ns( name = 'xmlns:x14ac' - value = lc_xml_node_ig_ns ). - - -********************************************************************** -* STEP 4: Create subnodes - " sheetPr - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetpr - parent = lo_document ). - " TODO tabColor - IF io_worksheet->tabcolor IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_tabcolor - parent = lo_element ). -* Theme not supported yet - start with RGB - lv_value = io_worksheet->tabcolor-rgb. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - ENDIF. - - " outlinePr - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_outlinepr - parent = lo_document ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summarybelow. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summarybelow - value = lv_value ). - - lv_value = io_worksheet->zif_excel_sheet_properties~summaryright. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_summaryright - value = lv_value ). - - lo_element->append_child( new_child = lo_element_2 ). - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_pagesetuppr - parent = lo_document ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_fittopage - value = `1` ). - lo_element->append_child( new_child = lo_element_2 ). " pageSetupPr node - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - - " dimension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension - parent = lo_document ). - lv_value = io_worksheet->get_dimension_range( ). - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " sheetViews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews - parent = lo_document ). - " sheetView node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_sheetview - parent = lo_document ). - IF io_worksheet->zif_excel_sheet_properties~show_zeros EQ abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showzeros - value = '0' ). - ENDIF. - IF iv_active = abap_true - OR io_worksheet->zif_excel_sheet_properties~selected EQ abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '0' ). - ENDIF. - " Zoom scale - IF io_worksheet->zif_excel_sheet_properties~zoomscale GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscale - value = lv_value ). - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_normal LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_normal. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalenormal - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalepageview - value = lv_value ). - ENDIF. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview NE 0. - IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview GT 400. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 400. - ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview LT 10. - io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 10. - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalesheetview - value = lv_value ). - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid - value = '0' ). - " showGridLines attribute - IF io_worksheet->show_gridlines = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showgridlines - value = '0' ). - ENDIF. - - " showRowColHeaders attribute - IF io_worksheet->show_rowcolheaders = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '1' ). - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders - value = '0' ). - ENDIF. - - - " freeze panes - io_worksheet->get_freeze_cell( IMPORTING ep_row = lv_freeze_cell_row - ep_column = lv_freeze_cell_column ). - - IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_pane - parent = lo_element_2 ). - - IF lv_freeze_cell_row > 1. - lv_value = lv_freeze_cell_row - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'ySplit' - value = lv_value ). - ENDIF. - - IF lv_freeze_cell_column > 1. - lv_value = lv_freeze_cell_column - 1. - CONDENSE lv_value. - lo_element_3->set_attribute_ns( name = 'xSplit' - value = lv_value ). - ENDIF. - - lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ). - CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value. - lo_element_3->set_attribute_ns( name = 'topLeftCell' - value = lv_value ). - - lo_element_3->set_attribute_ns( name = 'activePane' - value = 'bottomRight' ). - - lo_element_3->set_attribute_ns( name = 'state' - value = 'frozen' ). - - lo_element_2->append_child( new_child = lo_element_3 ). - ENDIF. - " selection node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection - parent = lo_document ). - lv_value = io_worksheet->get_active_cell( ). - lo_element_3->set_attribute_ns( name = lc_xml_attr_activecell - value = lv_value ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " sheetView node - - lo_element->append_child( new_child = lo_element_2 ). " sheetView node - - lo_element_root->append_child( new_child = lo_element ). " sheetViews node - - - column_dimensions[] = io_worksheet->get_column_dimensions( ). - " Calculate col - IF NOT column_dimensions IS INITIAL. - io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). - ENDIF. - row_dimensions[] = io_worksheet->get_row_dimensions( ). - " sheetFormatPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetformatpr - parent = lo_document ). - " defaultRowHeight - default_row_dimension = io_worksheet->get_default_row_dimension( ). - IF default_row_dimension IS BOUND. - IF default_row_dimension->get_row_height( ) >= 0. - lo_element->set_attribute_ns( name = lc_xml_attr_customheight - value = lc_xml_attr_true ). - lv_value = default_row_dimension->get_row_height( ). - ELSE. - lv_value = '12.75'. - ENDIF. - ELSE. - lv_value = '12.75'. - ENDIF. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight - value = lv_value ). - " defaultColWidth - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - lv_value = default_col_dimension->get_width( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultcolwidth - value = lv_value ). - ENDIF. - ENDIF. - " outlineLevelRow -* Excel is recalculating the outlinelevel on startup from the outline levels found in the rows -* If we place anything incorrect here it gets corrected, if don't place anything it gets added -* So no need to calculate the outlinelevel here ( at least for rows - probably for columns as well but I haven't tested yet -* LOOP AT row_dimensions ASSIGNING <row_dimension>. -* IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. -* outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). -* ENDIF. -* ENDLOOP. -* lv_value = outline_level_row. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow -* value = lv_value ). - " outlineLevelCol - LOOP AT column_dimensions ASSIGNING <column_dimension>. - IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. - outline_level_col = <column_dimension>-column_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - lv_value = outline_level_col. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelcol - value = lv_value ). -* lv_value = 0. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_dydescent -* value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). " sheetFormatPr node - - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL OR NOT column_dimensions IS INITIAL. - " cols node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cols - parent = lo_document ). - " This code have to be enhanced in order to manage also column style properties - " Now it is an out/out - IF NOT column_dimensions IS INITIAL. - LOOP AT column_dimensions ASSIGNING <column_dimension>. - " col node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). - lv_value = <column_dimension>-column_dimension->get_column_index( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - " Width - IF <column_dimension>-column_dimension->get_width( ) < 0. - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - ELSE. - lv_value = <column_dimension>-column_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lv_value ). - ENDIF. - " Column visibility - IF <column_dimension>-column_dimension->get_visible( ) = abap_false. - lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lc_xml_attr_true ). - ENDIF. - " Auto size? - IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_bestfit - value = lc_xml_attr_true ). - ENDIF. - " Custom width? - IF default_col_dimension IS BOUND. - IF <column_dimension>-column_dimension->get_width( ) - <> default_col_dimension->get_width( ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - - ENDIF. - ELSE. - lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth - value = lc_xml_attr_true ). - ENDIF. - " Collapsed - IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_collapsed - value = lc_xml_attr_true ). - ENDIF. - " outlineLevel - IF <column_dimension>-column_dimension->get_outline_level( ) > 0. - lv_value = <column_dimension>-column_dimension->get_outline_level( ). - - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_outlinelevel - value = lv_value ). - ENDIF. - " Style -* lv_value = <column_dimension>-column_dimension->get_xf_index( ). "del issue #157 - set column style - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). "ins issue #157 - set column style -* lv_value = me->excel->get_style_index_in_styles( lv_style_guid ). "del issue #237 - CLEAR ls_style_mapping. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* lv_style_index = ls_style_mapping-style. "del issue #295 -* IF lv_style_index > 0. "ins issue #237 - del issue #295 -* lv_value = lv_style_index - 1. "ins issue #237 - del issue #295 - IF sy-subrc = 0. "ins issue #295 - lv_value = ls_style_mapping-style. "ins issue #295 - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. "ins issue #237 - - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. -* ELSE. "del issue #157 - set sheet style ( add missing columns -* IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. "del issue #157 - set sheet style ( add missing columns -* Begin of insertion issue #157 - set sheet style ( add missing columns - ENDIF. -* Always pass through this coding - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. - DATA: lts_sorted_columns TYPE SORTED TABLE OF zexcel_cell_column WITH UNIQUE KEY table_line. - TYPES: BEGIN OF ty_missing_columns, - first_column TYPE zexcel_cell_column, - last_column TYPE zexcel_cell_column, - END OF ty_missing_columns. - DATA: t_missing_columns TYPE STANDARD TABLE OF ty_missing_columns WITH NON-UNIQUE DEFAULT KEY, - missing_column LIKE LINE OF t_missing_columns. - -* First collect columns that were already handled before. The rest has to be inserted now - LOOP AT column_dimensions ASSIGNING <column_dimension>. - lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-column ). - INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. - -* Now find all columns that were missing so far - missing_column-first_column = 1. - LOOP AT lts_sorted_columns INTO lv_column. - IF lv_column > missing_column-first_column. - missing_column-last_column = lv_column - 1. - APPEND missing_column TO t_missing_columns. - ENDIF. - missing_column-first_column = lv_column + 1. - ENDLOOP. - missing_column-last_column = zcl_excel_common=>c_excel_sheet_max_col. - APPEND missing_column TO t_missing_columns. -* Now apply stylesetting ( and other defaults - I copy it from above. Whoever programmed that seems to know what to do :o) - LOOP AT t_missing_columns INTO missing_column. -* End of insertion issue #157 - set column style - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col - parent = lo_document ). -* lv_value = zcl_excel_common=>c_excel_sheet_min_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-first_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_min - value = lv_value ). -* lv_value = zcl_excel_common=>c_excel_sheet_max_col."del issue #157 - set sheet style ( add missing columns - lv_value = missing_column-last_column. "ins issue #157 - set sheet style ( add missing columns - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_max - value = lv_value ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_width - value = lc_xml_attr_defaultwidth ). - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. - lv_value = ls_style_mapping-style. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. "ins issue #157 - set sheet style ( add missing columns - - ENDIF. - lo_element_root->append_child( new_child = lo_element ). " cols node - ENDIF. - " sheetData node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata - parent = lo_document ). - " Get column count - col_count = io_worksheet->get_highest_column( ). - " Get autofilter - lv_guid = io_worksheet->get_guid( ) . - lo_autofilters = excel->get_autofilters_reference( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = lv_guid ) . - IF lo_autofilter IS BOUND. - lt_values = lo_autofilter->get_values( ) . - ls_area = lo_autofilter->get_filter_area( ) . - l_autofilter_hidden = abap_true. " First defautl is not showing - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - start -*--------------------------------------------------------------------* -* Build table to hold all table-areas attached to this sheet - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). - ls_table_area-right = lo_table->get_right_column_integer( ). - ls_table_area-top = lo_table->settings-top_left_row. - ls_table_area-bottom = lo_table->get_bottom_row_integer( ). - INSERT ls_table_area INTO TABLE lt_table_areas. - ENDWHILE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end -*--------------------------------------------------------------------* -* We have problems when the first rows or trailing rows are not set but we have rowinformation -* to solve this we add dummycontent into first and last line that will not be set -* Set first line if necessary - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = 1. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = 1. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. -* Set last line if necessary -* Last row with cell content - lv_last_row = io_worksheet->get_highest_row( ). -* Last line with row-information set directly ( like line height, hidden-status ... ) - lts_row_dimensions = io_worksheet->get_row_dimensions( ). - SORT lts_row_dimensions BY row DESCENDING. - READ TABLE lts_row_dimensions INDEX 1 ASSIGNING <row_dimension>. - IF sy-subrc = 0 AND <row_dimension>-row > lv_last_row. - lv_last_row = <row_dimension>-row. - ENDIF. -* Last line with row-information set indirectly by row outline - lts_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lts_row_outlines ASSIGNING <ls_row_outline>. - IF <ls_row_outline>-collapsed = 'X'. - lv_current_row = <ls_row_outline>-row_to + 1. " collapsed-status may be set on following row - ELSE. - lv_current_row = <ls_row_outline>-row_to. " collapsed-status may be set on following row - ENDIF. - IF lv_current_row > lv_last_row. - lv_last_row = lv_current_row. - ENDIF. - ENDLOOP. - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = lv_last_row. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = lv_last_row. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. - - - CLEAR ls_sheet_content. - LOOP AT io_worksheet->sheet_content INTO ls_sheet_content. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - CLEAR ls_style_mapping. -* Create row element -* issues #346,#154, #195 - problems when we have information in row_dimension but no cell content in that row -* Get next line that may have to be added. If we have empty lines this is the next line after previous cell content -* Otherwise it is the line of the current cell content - lv_current_row = ls_last_row-cell_row + 1. - IF lv_current_row > ls_sheet_content-cell_row. - lv_current_row = ls_sheet_content-cell_row. - ENDIF. -* Fill in empty lines if necessary - assign an emtpy sheet content - lv_next_row = lv_current_row. - WHILE lv_next_row <= ls_sheet_content-cell_row. - lv_current_row = lv_next_row. - lv_next_row = lv_current_row + 1. - IF lv_current_row = ls_sheet_content-cell_row. " cell value found in this row - ASSIGN ls_sheet_content TO <ls_sheet_content>. - ELSE. -* Check if empty row is really necessary - this is basically the case when we have information in row_dimension - lo_row_dim_empty = io_worksheet->get_row_dimension( lv_current_row ). - CHECK lo_row_dim_empty->get_row_height( ) >= 0 OR - lo_row_dim_empty->get_collapsed( io_worksheet ) = abap_true OR - lo_row_dim_empty->get_outline_level( io_worksheet ) > 0 OR - lo_row_dim_empty->get_xf_index( ) <> 0. - " Dummyentry A1 - ls_sheet_content_empty-cell_row = lv_current_row. - ls_sheet_content_empty-cell_column = 1. - ASSIGN ls_sheet_content_empty TO <ls_sheet_content>. - ENDIF. - - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - IF ls_last_row-cell_row IS NOT INITIAL. - " Row visibility of previos row. - IF row_dimension->get_visible( io_worksheet ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - " Add new row - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - " r - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - " Spans - lv_value = col_count. - CONCATENATE '1:' lv_value INTO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = lv_value ). - row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). - " Do we need the row dimension attributes? - IF row_dimension->get_row_height( ) >= 0 OR - row_dimension->get_collapsed( io_worksheet ) = abap_true OR - row_dimension->get_outline_level( io_worksheet ) > 0 OR - row_dimension->get_xf_index( ) <> 0 OR - l_autofilter_hidden = abap_true. - " Row dimensions - IF row_dimension->get_row_height( ) >= 0. - lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). - lv_value = row_dimension->get_row_height( ). - lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). - ENDIF. - " Collapsed - IF row_dimension->get_collapsed( io_worksheet ) = abap_true. - lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). - ENDIF. - " Outline level - IF row_dimension->get_outline_level( io_worksheet ) > 0. - lv_value = row_dimension->get_outline_level( io_worksheet ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). - ENDIF. - " Style - IF row_dimension->get_xf_index( ) <> 0. - lv_value = row_dimension->get_xf_index( ). - lo_element_2->set_attribute_ns( name = 's' value = lv_value ). - lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). - ENDIF. - ENDIF. - l_autofilter_hidden = abap_true. " First default is not showing - ENDIF. - ENDWHILE. - - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_r - value = <ls_sheet_content>-cell_coords ). - -* begin of change issue #157 - allow column cellstyle -* if no cellstyle is set, look into column, then into sheet - IF <ls_sheet_content>-cell_style IS NOT INITIAL. - lv_style_guid = <ls_sheet_content>-cell_style. - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - start -*--------------------------------------------------------------------* -* Check if cell in any of the table areas - LOOP AT lt_table_areas TRANSPORTING NO FIELDS WHERE top <= <ls_sheet_content>-cell_row - AND bottom >= <ls_sheet_content>-cell_row - AND left <= <ls_sheet_content>-cell_column - AND right >= <ls_sheet_content>-cell_column. - EXIT. - ENDLOOP. - IF sy-subrc = 0. - CLEAR lv_style_guid. " No style --> EXCEL will use built-in-styles as declared in the tables-section - ELSE. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - end -*--------------------------------------------------------------------* - lv_column_p = zcl_excel_common=>convert_column2alpha( <ls_sheet_content>-cell_column ). - READ TABLE column_dimensions WITH KEY column = lv_column_p ASSIGNING <column_dimension>. - IF sy-subrc = 0. - lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ). - IF lv_style_guid IS INITIAL. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. - ELSE. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - start -*--------------------------------------------------------------------* - ENDIF. -*--------------------------------------------------------------------* -* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - end -*--------------------------------------------------------------------* - ENDIF. -* IF <ls_sheet_content>-cell_style IS NOT INITIAL. -* READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. - IF lv_style_guid IS NOT INITIAL. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* end of change issue #157 - allow column cellstyles - lv_value = ls_style_mapping-style. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_3->set_attribute_ns( name = lc_xml_attr_s - value = lv_value ). - ENDIF. - - " For cells with formula ignore the value - Excel will calculate it - IF <ls_sheet_content>-cell_formula IS NOT INITIAL. - " fomula node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_formula. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " fomula node - ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL "cell can have just style or formula - AND <ls_sheet_content>-cell_value <> lc_dummy_cell_content. - IF <ls_sheet_content>-data_type IS NOT INITIAL. - IF <ls_sheet_content>-data_type EQ 's_leading_blanks'. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = 's' ). - ELSE. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = <ls_sheet_content>-data_type ). - ENDIF. - ENDIF. - - " value node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_document ). - - IF <ls_sheet_content>-data_type EQ 's' OR <ls_sheet_content>-data_type EQ 's_leading_blanks'. - lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ELSE. - lv_value = <ls_sheet_content>-cell_value. - CONDENSE lv_value. - lo_element_4->set_value( value = lv_value ). - ENDIF. - - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDIF. - - lo_element_2->append_child( new_child = lo_element_3 ). " column node - ls_last_row = <ls_sheet_content>. - ENDLOOP. - IF sy-subrc = 0. - READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. - IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. - CLEAR l_autofilter_hidden. - ENDIF. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - " Row visibility of previos row. - IF row_dimension->get_visible( ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - DELETE io_worksheet->sheet_content WHERE cell_value = lc_dummy_cell_content. " Get rid of dummyentries - - lo_element_root->append_child( new_child = lo_element ). " sheetData node - - IF lo_autofilter IS BOUND. -* Create node autofilter - lo_element = lo_document->create_simple_element( name = lc_xml_node_autofilter - parent = lo_document ). - lv_ref = lo_autofilter->get_filter_range( ) . - CONDENSE lv_ref NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - lt_values = lo_autofilter->get_values( ) . - IF lt_values IS NOT INITIAL. -* If we filter we need to set the filter mode to 1. - lo_element_2 = lo_document->find_from_name( name = lc_xml_node_sheetpr ). - lo_element_2->set_attribute_ns( name = lc_xml_attr_filtermode - value = '1' ). -* Create node filtercolumn - CLEAR lv_column. - LOOP AT lt_values INTO ls_values. - IF ls_values-column <> lv_column. - IF lv_column IS NOT INITIAL. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_filtercolumn - parent = lo_element ). - lv_column = ls_values-column - lo_autofilter->filter_area-col_start. - lv_value = lv_column. - CONDENSE lv_value NO-GAPS. - lo_element_2->set_attribute_ns( name = lc_xml_attr_colid - value = lv_value ). - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_filters - parent = lo_element_2 ). - lv_column = ls_values-column. - ENDIF. - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_filter - parent = lo_element_3 ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = ls_values-value ). - lo_element_3->append_child( new_child = lo_element_4 ). " value node - ENDLOOP. - lo_element_2->append_child( new_child = lo_element_3 ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - IF io_worksheet->zif_excel_sheet_protection~protected EQ abap_true. - " sheetProtection node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetprotection - parent = lo_document ). - MOVE io_worksheet->zif_excel_sheet_protection~password TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_password - value = lv_value ). - ENDIF. - lv_value = io_worksheet->zif_excel_sheet_protection~auto_filter. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_autofilter - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deletecolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~delete_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_deleterows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~format_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_formatrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_columns. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertcolumns - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_hyperlinks. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_inserthyperlinks - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~insert_rows. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_insertrows - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~objects. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_objects - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~pivot_tables. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_pivottables - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~scenarios. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scenarios - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_locked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectlockedcells - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~select_unlocked_cells. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_selectunlockedcell - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sheet. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sheet - value = lv_value ). - lv_value = io_worksheet->zif_excel_sheet_protection~sort. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_sort - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " Merged cells - lt_range_merge = io_worksheet->get_merge( ). - IF lt_range_merge IS NOT INITIAL. - lo_element = lo_document->create_simple_element( name = lc_xml_node_mergecells - parent = lo_document ). - DESCRIBE TABLE lt_range_merge LINES merge_count. - lv_value = merge_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - LOOP AT lt_range_merge ASSIGNING <fs_range_merge>. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_mergecell - parent = lo_document ). - - lo_element_2->set_attribute_ns( name = lc_xml_attr_ref - value = <fs_range_merge> ). - lo_element->append_child( new_child = lo_element_2 ). - lo_element_root->append_child( new_child = lo_element ). - io_worksheet->delete_merge( ). - ENDLOOP. - ENDIF. - - " Conditional formatting node - lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_style_conditional->rule IS INITIAL. - CONTINUE. - ENDIF. - lo_element = lo_document->create_simple_element( name = lc_xml_node_condformatting - parent = lo_document ). - lv_value = lo_style_conditional->get_dimension_range( ) . - lo_element->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - " cfRule node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_cfrule - parent = lo_document ). - lv_value = lo_style_conditional->rule. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = lo_style_conditional->priority. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_priority - value = lv_value ). - - CASE lo_style_conditional->rule. - " Start >> Databar by Albert Lladanosa - WHEN zcl_excel_style_conditional=>c_rule_databar. - - ls_databar = lo_style_conditional->mode_databar. - - CLEAR lt_cfvo. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_databar - parent = lo_document ). - - MOVE ls_databar-cfvo1_value TO ls_cfvo-value. - MOVE ls_databar-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_databar-cfvo2_value TO ls_cfvo-value. - MOVE ls_databar-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_databar-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - " End << Databar by Albert Lladanosa - WHEN zcl_excel_style_conditional=>c_rule_colorscale. - - ls_colorscale = lo_style_conditional->mode_colorscale. - - CLEAR: lt_cfvo, lt_colors. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_colorscale - parent = lo_document ). - - MOVE ls_colorscale-cfvo1_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo2_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - MOVE ls_colorscale-cfvo3_value TO ls_cfvo-value. - MOVE ls_colorscale-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - - APPEND ls_colorscale-colorrgb1 TO lt_colors. - APPEND ls_colorscale-colorrgb2 TO lt_colors. - APPEND ls_colorscale-colorrgb3 TO lt_colors. - - LOOP AT lt_cfvo INTO ls_cfvo. - - IF ls_cfvo IS INITIAL. - CONTINUE. - ENDIF. - - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - LOOP AT lt_colors INTO ls_colors. - - IF ls_colors IS INITIAL. - CONTINUE. - ENDIF. - - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_colors-colorrgb. - lo_element_4->set_attribute_ns( name = lc_xml_attr_tabcolor_rgb - value = lv_value ). - - lo_element_3->append_child( new_child = lo_element_4 ). " color node - ENDLOOP. - - lo_element_2->append_child( new_child = lo_element_3 ). " databar node - WHEN zcl_excel_style_conditional=>c_rule_iconset. - - ls_iconset = lo_style_conditional->mode_iconset. - - CLEAR lt_cfvo. - " iconset node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_iconset - parent = lo_document ). - IF ls_iconset-iconset NE zcl_excel_style_conditional=>c_iconset_3trafficlights. - lv_value = ls_iconset-iconset. - lo_element_3->set_attribute_ns( name = lc_xml_attr_iconset - value = lv_value ). - ENDIF. - - " Set the showValue attribute - lv_value = ls_iconset-showvalue. - lo_element_3->set_attribute_ns( name = lc_xml_attr_showvalue - value = lv_value ). - - CASE ls_iconset-iconset. - WHEN zcl_excel_style_conditional=>c_iconset_3trafficlights2 OR - zcl_excel_style_conditional=>c_iconset_3arrows OR - zcl_excel_style_conditional=>c_iconset_3arrowsgray OR - zcl_excel_style_conditional=>c_iconset_3flags OR - zcl_excel_style_conditional=>c_iconset_3signs OR - zcl_excel_style_conditional=>c_iconset_3symbols OR - zcl_excel_style_conditional=>c_iconset_3symbols2 OR - zcl_excel_style_conditional=>c_iconset_3trafficlights OR - zcl_excel_style_conditional=>c_iconset_3trafficlights2. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_4arrows OR - zcl_excel_style_conditional=>c_iconset_4arrowsgray OR - zcl_excel_style_conditional=>c_iconset_4rating OR - zcl_excel_style_conditional=>c_iconset_4redtoblack OR - zcl_excel_style_conditional=>c_iconset_4trafficlights. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN zcl_excel_style_conditional=>c_iconset_5arrows OR - zcl_excel_style_conditional=>c_iconset_5arrowsgray OR - zcl_excel_style_conditional=>c_iconset_5quarters OR - zcl_excel_style_conditional=>c_iconset_5rating. - MOVE ls_iconset-cfvo1_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo1_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo2_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo2_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo3_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo3_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo4_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo4_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - MOVE ls_iconset-cfvo5_value TO ls_cfvo-value. - MOVE ls_iconset-cfvo5_type TO ls_cfvo-type. - APPEND ls_cfvo TO lt_cfvo. - WHEN OTHERS. - CLEAR lt_cfvo. - ENDCASE. - - LOOP AT lt_cfvo INTO ls_cfvo. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lv_value = ls_cfvo-type. - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = ls_cfvo-value. - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node - ENDLOOP. - - - lo_element_2->append_child( new_child = lo_element_3 ). " iconset node - WHEN zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis = lo_style_conditional->mode_cellis. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_cellis-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - lv_value = ls_cellis-operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_cellis-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - WHEN zcl_excel_style_conditional=>c_rule_expression. - ls_expression = lo_style_conditional->mode_expression. - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY guid = ls_expression-cell_style. - lv_value = ls_style_cond_mapping-dxf. - CONDENSE lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = ls_expression-formula. - lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( new_child = lo_element_3 ). " formula node - ENDCASE. - - lo_element->append_child( new_child = lo_element_2 ). " cfRule node - - lo_element_root->append_child( new_child = lo_element ). " Conditional formatting node - ENDWHILE. - - IF io_worksheet->get_data_validations_size( ) GT 0. - " dataValidations node - lo_element = lo_document->create_simple_element( name = lc_xml_node_datavalidations - parent = lo_document ). - " Conditional formatting node - lo_iterator = io_worksheet->get_data_validations_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_data_validation ?= lo_iterator->if_object_collection_iterator~get_next( ). - " dataValidation node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_datavalidation - parent = lo_document ). - lv_value = lo_data_validation->type. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - IF NOT lo_data_validation->operator IS INITIAL. - lv_value = lo_data_validation->operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - ENDIF. - IF lo_data_validation->allowblank EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_allowblank - value = lv_value ). - IF lo_data_validation->showinputmessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showinputmessage - value = lv_value ). - IF lo_data_validation->showerrormessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showerrormessage - value = lv_value ). - IF NOT lo_data_validation->errortitle IS INITIAL. - lv_value = lo_data_validation->errortitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_errortitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->error IS INITIAL. - lv_value = lo_data_validation->error. - lo_element_2->set_attribute_ns( name = lc_xml_attr_error - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompttitle IS INITIAL. - lv_value = lo_data_validation->prompttitle. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompttitle - value = lv_value ). - ENDIF. - IF NOT lo_data_validation->prompt IS INITIAL. - lv_value = lo_data_validation->prompt. - lo_element_2->set_attribute_ns( name = lc_xml_attr_prompt - value = lv_value ). - ENDIF. - lv_cell_row_s = lo_data_validation->cell_row. - CONDENSE lv_cell_row_s. - CONCATENATE lo_data_validation->cell_column lv_cell_row_s INTO lv_value. - IF lo_data_validation->cell_row_to IS NOT INITIAL. - lv_cell_row_s = lo_data_validation->cell_row_to. - CONDENSE lv_cell_row_s. - CONCATENATE lv_value ':' lo_data_validation->cell_column_to lv_cell_row_s INTO lv_value. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - " formula1 node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula1 - parent = lo_document ). - lv_value = lo_data_validation->formula1. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula1 node - " formula2 node - IF NOT lo_data_validation->formula2 IS INITIAL. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula2 - parent = lo_document ). - lv_value = lo_data_validation->formula2. - lo_element_3->set_value( value = lv_value ). - - lo_element_2->append_child( new_child = lo_element_3 ). " formula2 node - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). " dataValidation node - ENDWHILE. - lo_element_root->append_child( new_child = lo_element ). " dataValidations node - ENDIF. - - " Hyperlinks - DATA: lv_hyperlinks_count TYPE i, - lo_link TYPE REF TO zcl_excel_hyperlink. - - lv_hyperlinks_count = io_worksheet->get_hyperlinks_size( ). - IF lv_hyperlinks_count > 0. - lo_element = lo_document->create_simple_element( name = 'hyperlinks' - parent = lo_document ). - - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lo_element_2 = lo_document->create_simple_element( name = 'hyperlink' - parent = lo_element ). - - lv_value = lo_link->get_ref( ). - lo_element_2->set_attribute_ns( name = 'ref' - value = lv_value ). - - IF lo_link->is_internal( ) = abap_true. - lv_value = lo_link->get_url( ). - lo_element_2->set_attribute_ns( name = 'location' - value = lv_value ). - ELSE. - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - - ENDIF. - - lo_element->append_child( new_child = lo_element_2 ). - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - - " PrintOptions - IF io_worksheet->print_gridlines = abap_true OR - io_worksheet->sheet_setup->vertical_centered = abap_true OR - io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element = lo_document->create_simple_element( name = 'printOptions' - parent = lo_document ). - - IF io_worksheet->print_gridlines = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_gridlines - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_element->set_attribute_ns( name = 'horizontalCentered' - value = 'true' ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_centered = abap_true. - lo_element->set_attribute_ns( name = 'verticalCentered' - value = 'true' ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - " pageMargins node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_document ). - - lv_value = io_worksheet->sheet_setup->margin_left. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_left - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_right. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_right - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_top. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_top - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_bottom. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_bottom - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_header. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_header - value = lv_value ). - lv_value = io_worksheet->sheet_setup->margin_footer. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_footer - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). " pageMargins node - -* pageSetup node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagesetup - parent = lo_document ). - - IF io_worksheet->sheet_setup->black_and_white IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_blackandwhite - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->cell_comments IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_cellcomments - value = io_worksheet->sheet_setup->cell_comments ). - ENDIF. - - IF io_worksheet->sheet_setup->copies IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->copies. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_copies - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->draft IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_draft - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->errors IS NOT INITIAL. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_errors - value = io_worksheet->sheet_setup->errors ). - ENDIF. - - IF io_worksheet->sheet_setup->first_page_number IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->first_page_number. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_firstpagenumber - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->fit_to_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittoheight - value = lv_value ). - lv_value = io_worksheet->sheet_setup->fit_to_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_fittowidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->horizontal_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->horizontal_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_horizontaldpi - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->orientation IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->orientation. - lo_element->set_attribute_ns( name = lc_xml_attr_orientation - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->page_order IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_pageorder - value = io_worksheet->sheet_setup->page_order ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_height IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_height. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperheight - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_size IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_size. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_papersize - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->paper_width IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->paper_width. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_paperwidth - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->scale IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->scale. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_scale - value = lv_value ). - ENDIF. - - IF io_worksheet->sheet_setup->use_first_page_num IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_usefirstpagenumber - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->use_printer_defaults IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_useprinterdefaults - value = `1` ). - ENDIF. - - IF io_worksheet->sheet_setup->vertical_dpi IS NOT INITIAL. - lv_value = io_worksheet->sheet_setup->vertical_dpi. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_verticaldpi - value = lv_value ). - ENDIF. - - lo_element_root->append_child( new_child = lo_element ). " pageSetup node - -* { headerFooter necessary? > - IF io_worksheet->sheet_setup->odd_header IS NOT INITIAL - OR io_worksheet->sheet_setup->odd_footer IS NOT INITIAL - OR io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_headerfooter - parent = lo_document ). - - " Different header/footer for odd/even pages? - IF io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true. - lo_element->set_attribute_ns( name = lc_xml_attr_differentoddeven - value = '1' ). - ENDIF. - - " OddHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " OddFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_odd_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_oddfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenHeader - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_header = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenheader - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - " evenFooter - CLEAR: lv_value. - io_worksheet->sheet_setup->get_header_footer_string( IMPORTING ep_even_footer = lv_value ) . - IF lv_value IS NOT INITIAL. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_evenfooter - parent = lo_document ). - lo_element_2->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - ENDIF. - - - lo_element_root->append_child( new_child = lo_element ). " headerFooter - - ENDIF. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_drawing - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute( name = 'r:id' - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -* tables - DATA lv_table_count TYPE i. - - lv_table_count = io_worksheet->get_tables_size( ). - IF lv_table_count > 0. - lo_element = lo_document->create_simple_element( name = 'tableParts' - parent = lo_document ). - lv_value = lv_table_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element_2 = lo_document->create_simple_element( name = 'tablePart' - parent = lo_element ). - lo_element_2->set_attribute_ns( name = 'r:id' - value = lv_value ). - lo_element->append_child( new_child = lo_element_2 ). - - ENDWHILE. - - lo_element_root->append_child( new_child = lo_element ). - - ENDIF. - - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - METHOD create_xl_sheet_rels. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', - lc_xml_val_external TYPE string VALUE 'External', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', - lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_link TYPE REF TO zcl_excel_hyperlink. - - DATA: lv_value TYPE string, - lv_relation_id TYPE i, - lv_index_str TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Add sheet Relationship nodes here - lv_relation_id = 0. - lo_iterator = io_worksheet->get_hyperlinks_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_link->is_internal( ) = abap_false. " issue #340 - don't put internal links here - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_link_tp ). - - lv_value = lo_link->get_url( ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_target_mode - value = lc_xml_val_external ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* drawing - DATA: lo_drawings TYPE REF TO zcl_excel_drawings. - - lo_drawings = io_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_drawing_tp ). - - lv_index_str = iv_drawing_index. - CONDENSE lv_index_str NO-GAPS. - MOVE me->c_xl_drawings TO lv_value. - REPLACE 'xl' WITH '..' INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_relation_id. - - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_table_tp ). - - lv_value = lo_table->get_name( ). - CONCATENATE '../tables/' lv_value '.xml' INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDWHILE. - -* IF io_worksheet->get_print_settings( )->is_empty( ) = abap_false. -* ADD 1 TO lv_relation_id. -* lv_value = lv_relation_id. -* CONDENSE lv_value. -* CONCATENATE 'rId' lv_value INTO lv_value. -* -* lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship -* parent = lo_document ). -* lo_element->set_attribute_ns( name = lc_xml_attr_id -* value = lv_value ). -* lo_element->set_attribute_ns( name = lc_xml_attr_type -* value = lc_xml_node_rid_printer_tp ). -* -* lv_index_str = iv_printer_index. -* CONDENSE lv_index_str NO-GAPS. -* MOVE me->c_xl_printersettings TO lv_value. -* REPLACE 'xl' WITH '..' INTO lv_value. -* REPLACE '#' WITH lv_index_str INTO lv_value. -* lo_element->set_attribute_ns( name = lc_xml_attr_target -* value = lv_value ). -* -* lo_element_root->append_child( new_child = lo_element ). -* ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_styles. - - -** Constant node name - CONSTANTS: lc_xml_node_stylesheet TYPE string VALUE 'styleSheet', - " font - lc_xml_node_fonts TYPE string VALUE 'fonts', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - " fill - lc_xml_node_fills TYPE string VALUE 'fills', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - lc_xml_node_gradientfill TYPE string VALUE 'gradientFill', - lc_xml_node_stop TYPE string VALUE 'stop', - " borders - lc_xml_node_borders TYPE string VALUE 'borders', - lc_xml_node_border TYPE string VALUE 'border', - lc_xml_node_left TYPE string VALUE 'left', - lc_xml_node_right TYPE string VALUE 'right', - lc_xml_node_top TYPE string VALUE 'top', - lc_xml_node_bottom TYPE string VALUE 'bottom', - lc_xml_node_diagonal TYPE string VALUE 'diagonal', - " numfmt - lc_xml_node_numfmts TYPE string VALUE 'numFmts', - lc_xml_node_numfmt TYPE string VALUE 'numFmt', - " Styles - lc_xml_node_cellstylexfs TYPE string VALUE 'cellStyleXfs', - lc_xml_node_xf TYPE string VALUE 'xf', - lc_xml_node_cellxfs TYPE string VALUE 'cellXfs', - lc_xml_node_cellstyles TYPE string VALUE 'cellStyles', - lc_xml_node_cellstyle TYPE string VALUE 'cellStyle', - lc_xml_node_dxfs TYPE string VALUE 'dxfs', - lc_xml_node_dxf TYPE string VALUE 'dxf', - lc_xml_node_tablestyles TYPE string VALUE 'tableStyles', - " Colors - lc_xml_node_colors TYPE string VALUE 'colors', - lc_xml_node_indexedcolors TYPE string VALUE 'indexedColors', - lc_xml_node_rgbcolor TYPE string VALUE 'rgbColor', - lc_xml_node_mrucolors TYPE string VALUE 'mruColors', - " Alignment - lc_xml_node_alignment TYPE string VALUE 'alignment', - " Protection - lc_xml_node_protection TYPE string VALUE 'protection', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_position TYPE string VALUE 'position', - lc_xml_attr_degree TYPE string VALUE 'degree', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_attr_numfmtid TYPE string VALUE 'numFmtId', - lc_xml_attr_fontid TYPE string VALUE 'fontId', - lc_xml_attr_fillid TYPE string VALUE 'fillId', - lc_xml_attr_borderid TYPE string VALUE 'borderId', - lc_xml_attr_xfid TYPE string VALUE 'xfId', - lc_xml_attr_applynumberformat TYPE string VALUE 'applyNumberFormat', - lc_xml_attr_applyprotection TYPE string VALUE 'applyProtection', - lc_xml_attr_applyfont TYPE string VALUE 'applyFont', - lc_xml_attr_applyfill TYPE string VALUE 'applyFill', - lc_xml_attr_applyborder TYPE string VALUE 'applyBorder', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_builtinid TYPE string VALUE 'builtinId', - lc_xml_attr_defaulttablestyle TYPE string VALUE 'defaultTableStyle', - lc_xml_attr_defaultpivotstyle TYPE string VALUE 'defaultPivotStyle', - lc_xml_attr_applyalignment TYPE string VALUE 'applyAlignment', - lc_xml_attr_horizontal TYPE string VALUE 'horizontal', - lc_xml_attr_formatcode TYPE string VALUE 'formatCode', - lc_xml_attr_vertical TYPE string VALUE 'vertical', - lc_xml_attr_wraptext TYPE string VALUE 'wrapText', - lc_xml_attr_textrotation TYPE string VALUE 'textRotation', - lc_xml_attr_shrinktofit TYPE string VALUE 'shrinkToFit', - lc_xml_attr_indent TYPE string VALUE 'indent', - lc_xml_attr_locked TYPE string VALUE 'locked', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_diagonalup TYPE string VALUE 'diagonalUp', - lc_xml_attr_diagonaldown TYPE string VALUE 'diagonalDown', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_attr_type TYPE string value 'type', - lc_xml_attr_bottom TYPE string value 'bottom', - lc_xml_attr_top TYPE string value 'top', - lc_xml_attr_right TYPE string value 'right', - lc_xml_attr_left TYPE string value 'left'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_fonts TYPE REF TO if_ixml_element, - lo_element_font TYPE REF TO if_ixml_element, - lo_element_fills TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_borders TYPE REF TO if_ixml_element, - lo_element_border TYPE REF TO if_ixml_element, - lo_element_numfmts TYPE REF TO if_ixml_element, - lo_element_numfmt TYPE REF TO if_ixml_element, - lo_element_cellxfs TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator2 TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style TYPE REF TO zcl_excel_style. - - - DATA: lt_fonts TYPE zexcel_t_style_font, - ls_font TYPE zexcel_s_style_font, - lt_fills TYPE zexcel_t_style_fill, - ls_fill TYPE zexcel_s_style_fill, - lt_borders TYPE zexcel_t_style_border, - ls_border TYPE zexcel_s_style_border, - lt_numfmts TYPE zexcel_t_style_numfmt, - ls_numfmt TYPE zexcel_s_style_numfmt, - lt_protections TYPE zexcel_t_style_protection, - ls_protection TYPE zexcel_s_style_protection, - lt_alignments TYPE zexcel_t_style_alignment, - ls_alignment TYPE zexcel_s_style_alignment, - lt_cellxfs TYPE zexcel_t_cellxfs, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_styles_mapping TYPE zexcel_s_styles_mapping, - ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, - ls_cellis TYPE zexcel_conditional_cellis, - ls_expression TYPE zexcel_conditional_expression, - lt_colors TYPE zexcel_t_style_color_argb, - ls_color LIKE LINE OF lt_colors. - - DATA: lv_value TYPE string, - lv_dfx_count TYPE i, - lv_fonts_count TYPE i, - lv_fills_count TYPE i, - lv_borders_count TYPE i, - lv_cellxfs_count TYPE i, - lv_index TYPE i, - lv_align_flag TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_stylesheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lo_element_fonts = lo_document->create_simple_element( name = lc_xml_node_fonts - parent = lo_document ). - - lo_element_fills = lo_document->create_simple_element( name = lc_xml_node_fills - parent = lo_document ). - - lo_element_borders = lo_document->create_simple_element( name = lc_xml_node_borders - parent = lo_document ). - - lo_element_cellxfs = lo_document->create_simple_element( name = lc_xml_node_cellxfs - parent = lo_document ). - - lo_element_numfmts = lo_document->create_simple_element( name = lc_xml_node_numfmts - parent = lo_document ). - - -* Compress styles - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - ls_font = lo_style->font->get_structure( ). - ls_fill = lo_style->fill->get_structure( ). - ls_border = lo_style->borders->get_structure( ). - ls_alignment = lo_style->alignment->get_structure( ). - ls_protection = lo_style->protection->get_structure( ). - ls_numfmt = lo_style->number_format->get_structure( ). - - CLEAR ls_cellxfs. - - -* Compress fonts - READ TABLE lt_fonts FROM ls_font TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fontid = sy-tabix. - ELSE. - APPEND ls_font TO lt_fonts. - DESCRIBE TABLE lt_fonts LINES ls_cellxfs-fontid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fontid. - -* Compress alignment - READ TABLE lt_alignments FROM ls_alignment TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-alignmentid = sy-tabix. - ELSE. - APPEND ls_alignment TO lt_alignments. - DESCRIBE TABLE lt_alignments LINES ls_cellxfs-alignmentid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - -* Compress fills - READ TABLE lt_fills FROM ls_fill TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fillid = sy-tabix. - ELSE. - APPEND ls_fill TO lt_fills. - DESCRIBE TABLE lt_fills LINES ls_cellxfs-fillid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fillid. - -* Compress borders - READ TABLE lt_borders FROM ls_border TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-borderid = sy-tabix. - ELSE. - APPEND ls_border TO lt_borders. - DESCRIBE TABLE lt_borders LINES ls_cellxfs-borderid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-borderid. - -* Compress protection - IF ls_protection-locked EQ c_on AND ls_protection-hidden EQ c_off. - ls_cellxfs-applyprotection = 0. - ELSE. - READ TABLE lt_protections FROM ls_protection TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-protectionid = sy-tabix. - ELSE. - APPEND ls_protection TO lt_protections. - DESCRIBE TABLE lt_protections LINES ls_cellxfs-protectionid. - ENDIF. - ls_cellxfs-applyprotection = 1. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - -* Compress number formats - - "----------- - IF ls_numfmt-numfmt NE zcl_excel_style_number_format=>c_format_date_std." and ls_numfmt-NUMFMT ne 'STD_NDEC'. " ALE Changes on going - "--- - IF ls_numfmt IS NOT INITIAL. - - READ TABLE lt_numfmts FROM ls_numfmt TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-numfmtid = sy-tabix. - ELSE. - APPEND ls_numfmt TO lt_numfmts. - DESCRIBE TABLE lt_numfmts LINES ls_cellxfs-numfmtid. - ENDIF. - ADD zcl_excel_common=>c_excel_numfmt_offset TO ls_cellxfs-numfmtid. " Add OXML offset for custom styles - ls_cellxfs-applynumberformat = 1. - ELSE. - ls_cellxfs-applynumberformat = 0. - ENDIF. - "----------- " ALE changes on going - ELSE. - ls_cellxfs-applynumberformat = 1. - IF ls_numfmt-numfmt EQ zcl_excel_style_number_format=>c_format_date_std. - ls_cellxfs-numfmtid = 14. -* elseif ls_numfmt-NUMFMT eq 'STD_NDEC'. -* ls_cellxfs-numfmtid = 2. - ENDIF. - ENDIF. - "--- - - IF ls_cellxfs-fontid NE 0. - ls_cellxfs-applyfont = 1. - ELSE. - ls_cellxfs-applyfont = 0. - ENDIF. - IF ls_cellxfs-alignmentid NE 0. - ls_cellxfs-applyalignment = 1. - ELSE. - ls_cellxfs-applyalignment = 0. - ENDIF. - IF ls_cellxfs-fillid NE 0. - ls_cellxfs-applyfill = 1. - ELSE. - ls_cellxfs-applyfill = 0. - ENDIF. - IF ls_cellxfs-borderid NE 0. - ls_cellxfs-applyborder = 1. - ELSE. - ls_cellxfs-applyborder = 0. - ENDIF. - -* Remap styles - READ TABLE lt_cellxfs FROM ls_cellxfs TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_styles_mapping-style = sy-tabix. - ELSE. - APPEND ls_cellxfs TO lt_cellxfs. - DESCRIBE TABLE lt_cellxfs LINES ls_styles_mapping-style. - ENDIF. - SUBTRACT 1 FROM ls_styles_mapping-style. - ls_styles_mapping-guid = lo_style->get_guid( ). - APPEND ls_styles_mapping TO me->styles_mapping. - ENDWHILE. - - " create numfmt elements - LOOP AT lt_numfmts INTO ls_numfmt. - lo_element_numfmt = lo_document->create_simple_element( name = lc_xml_node_numfmt - parent = lo_document ). - lv_value = sy-tabix + zcl_excel_common=>c_excel_numfmt_offset. - CONDENSE lv_value. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - lv_value = ls_numfmt-numfmt. -* REPLACE ALL OCCURRENCES OF '.' IN lv_value WITH '\.'. - lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_formatcode - value = lv_value ). - lo_element_numfmts->append_child( new_child = lo_element_numfmt ). - ENDLOOP. - - " create font elements - LOOP AT lt_fonts INTO ls_font. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz - parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). - - "name - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name - parent = lo_document ). - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family - parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "scheme - IF ls_font-scheme IS NOT INITIAL. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - lo_element_fonts->append_child( new_child = lo_element_font ). - ENDLOOP. - - " create fill elements - LOOP AT lt_fills INTO ls_fill. - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - - if ls_fill-gradtype is not initial. - "gradient - - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_gradientfill - parent = lo_document ). - if ls_fill-gradtype-degree is not initial. - lv_value = ls_fill-gradtype-degree. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_degree value = lv_value ). - endif. - if ls_fill-gradtype-type is not initial. - lv_value = ls_fill-gradtype-type. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_type value = lv_value ). - endif. - if ls_fill-gradtype-bottom is not initial. - lv_value = ls_fill-gradtype-bottom. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_bottom value = lv_value ). - endif. - if ls_fill-gradtype-top is not initial. - lv_value = ls_fill-gradtype-top. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_top value = lv_value ). - endif. - if ls_fill-gradtype-right is not initial. - lv_value = ls_fill-gradtype-right. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_right value = lv_value ). - endif. - if ls_fill-gradtype-left is not initial. - lv_value = ls_fill-gradtype-left. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_left value = lv_value ). - endif. - - if ls_fill-gradtype-position3 is not initial. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position3. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - else. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - endif. - - - - - else. - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - endif. - - lo_element_fill->append_child( new_child = lo_sub_element )."pattern - lo_element_fills->append_child( new_child = lo_element_fill ). - ENDLOOP. - - " create border elements - LOOP AT lt_borders INTO ls_border. - lo_element_border = lo_document->create_simple_element( name = lc_xml_node_border - parent = lo_document ). - - IF ls_border-diagonalup IS NOT INITIAL. - lv_value = ls_border-diagonalup. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonalup - value = lv_value ). - ENDIF. - - IF ls_border-diagonaldown IS NOT INITIAL. - lv_value = ls_border-diagonaldown. - CONDENSE lv_value. - lo_element_border->set_attribute_ns( name = lc_xml_attr_diagonaldown - value = lv_value ). - ENDIF. - - "left - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_left - parent = lo_document ). - IF ls_border-left_style IS NOT INITIAL. - lv_value = ls_border-left_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-left_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "right - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right - parent = lo_document ). - IF ls_border-right_style IS NOT INITIAL. - lv_value = ls_border-right_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-right_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "top - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top - parent = lo_document ). - IF ls_border-top_style IS NOT INITIAL. - lv_value = ls_border-top_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-top_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "bottom - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom - parent = lo_document ). - IF ls_border-bottom_style IS NOT INITIAL. - lv_value = ls_border-bottom_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-bottom_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - - "diagonal - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal - parent = lo_document ). - IF ls_border-diagonal_style IS NOT INITIAL. - lv_value = ls_border-diagonal_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_border-diagonal_color ). - - lo_element_border->append_child( new_child = lo_sub_element ). - lo_element_borders->append_child( new_child = lo_element_border ). - ENDLOOP. - - " update attribute "count" - DESCRIBE TABLE lt_fonts LINES lv_fonts_count. - MOVE lv_fonts_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fonts->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_fills LINES lv_fills_count. - MOVE lv_fills_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fills->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_borders LINES lv_borders_count. - MOVE lv_borders_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_borders->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_cellxfs LINES lv_cellxfs_count. - MOVE lv_cellxfs_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_cellxfs->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - - " Append to root node - lo_element_root->append_child( new_child = lo_element_numfmts ). - lo_element_root->append_child( new_child = lo_element_fonts ). - lo_element_root->append_child( new_child = lo_element_fills ). - lo_element_root->append_child( new_child = lo_element_borders ). - - " cellstylexfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fontid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fillid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT lt_cellxfs INTO ls_cellxfs. - lo_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - MOVE ls_cellxfs-numfmtid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - MOVE ls_cellxfs-fontid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fontid - value = lv_value ). - MOVE ls_cellxfs-fillid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fillid - value = lv_value ). - MOVE ls_cellxfs-borderid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_borderid - value = lv_value ). - MOVE ls_cellxfs-xfid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_xfid - value = lv_value ). - IF ls_cellxfs-applynumberformat EQ 1. - MOVE ls_cellxfs-applynumberformat TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applynumberformat - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfont EQ 1. - MOVE ls_cellxfs-applyfont TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfont - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfill EQ 1. - MOVE ls_cellxfs-applyfill TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfill - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyborder EQ 1. - MOVE ls_cellxfs-applyborder TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyborder - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyalignment EQ 1. " depends on each style not for all the sheet - MOVE ls_cellxfs-applyalignment TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyalignment - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_alignment - parent = lo_document ). - ADD 1 TO ls_cellxfs-alignmentid. "Table index starts from 1 - READ TABLE lt_alignments INTO ls_alignment INDEX ls_cellxfs-alignmentid. - SUBTRACT 1 FROM ls_cellxfs-alignmentid. - IF ls_alignment-horizontal IS NOT INITIAL. - MOVE ls_alignment-horizontal TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_horizontal - value = lv_value ). - ENDIF. - IF ls_alignment-vertical IS NOT INITIAL. - MOVE ls_alignment-vertical TO lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_vertical - value = lv_value ). - ENDIF. - IF ls_alignment-wraptext EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_wraptext - value = c_on ). - ENDIF. - IF ls_alignment-textrotation IS NOT INITIAL. - MOVE ls_alignment-textrotation TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_textrotation - value = lv_value ). - ENDIF. - IF ls_alignment-shrinktofit EQ abap_true. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_shrinktofit - value = c_on ). - ENDIF. - IF ls_alignment-indent IS NOT INITIAL. - MOVE ls_alignment-indent TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indent - value = lv_value ). - ENDIF. - - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_cellxfs-applyprotection EQ 1. - MOVE ls_cellxfs-applyprotection TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_applyprotection - value = lv_value ). - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_protection - parent = lo_document ). - ADD 1 TO ls_cellxfs-protectionid. "Table index starts from 1 - READ TABLE lt_protections INTO ls_protection INDEX ls_cellxfs-protectionid. - SUBTRACT 1 FROM ls_cellxfs-protectionid. - IF ls_protection-locked IS NOT INITIAL. - MOVE ls_protection-locked TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_locked - value = lv_value ). - ENDIF. - IF ls_protection-hidden IS NOT INITIAL. - MOVE ls_protection-hidden TO lv_value. - CONDENSE lv_value. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element_2 ). - ENDIF. - lo_element_cellxfs->append_child( new_child = lo_element ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element_cellxfs ). - - " cellStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_cellstyle - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = 'Normal' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xfid - value = c_off ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid - value = c_off ). - - lo_element->append_child( new_child = lo_sub_element ). - lo_element_root->append_child( new_child = lo_element ). - - " dxfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs - parent = lo_document ). - - lo_iterator = me->excel->get_worksheets_iterator( ). - " get sheets - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - " Conditional formatting styles into exch sheet - lo_iterator2 = lo_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator2->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator2->if_object_collection_iterator~get_next( ). - CASE lo_style_conditional->rule. - WHEN zcl_excel_style_conditional=>c_rule_cellis. - "if style defined - ls_cellis = lo_style_conditional->mode_cellis. - IF ls_cellis-cell_style IS INITIAL. - CONTINUE. - ENDIF. - READ TABLE me->styles_mapping INTO ls_styles_mapping WITH KEY guid = ls_cellis-cell_style. - ADD 1 TO ls_styles_mapping-style. " the numbering starts from 0 - READ TABLE lt_cellxfs INTO ls_cellxfs INDEX ls_styles_mapping-style. - ADD 1 TO ls_cellxfs-fillid. " the numbering starts from 0 - - " Style already mapped? - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY style = ls_styles_mapping-style. - IF sy-subrc EQ 0. - ls_style_cond_mapping-guid = ls_cellis-cell_style. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ELSE. - ls_style_cond_mapping-guid = ls_cellis-cell_style. - ls_style_cond_mapping-style = ls_styles_mapping-style. - ls_style_cond_mapping-dxf = lv_dfx_count. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ADD 1 TO lv_dfx_count. - - " dxf node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_dxf - parent = lo_document ). - - "Conditional formatting font style correction by Alessandro Iannacci START - lv_index = ls_cellxfs-fontid + 1. - READ TABLE lt_fonts INTO ls_font INDEX lv_index. - IF ls_font IS NOT INITIAL. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element_2 ). - ENDIF. - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). - lo_sub_element->append_child( new_child = lo_element_font ). - ENDIF. - "---Conditional formatting font style correction by Alessandro Iannacci END - - - READ TABLE lt_fills INTO ls_fill INDEX ls_cellxfs-fillid. - IF ls_fill IS NOT INITIAL. - " fill properties - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - - lo_element_fill->append_child( new_child = lo_sub_element_2 ). "pattern - - lo_sub_element->append_child( new_child = lo_element_fill ). - ENDIF. - ENDIF. - - lo_element->append_child( new_child = lo_sub_element ). - WHEN zcl_excel_style_conditional=>c_rule_expression. - "if style defined - ls_expression = lo_style_conditional->mode_expression. - IF ls_expression-cell_style IS INITIAL. - CONTINUE. - ENDIF. - READ TABLE me->styles_mapping INTO ls_styles_mapping WITH KEY guid = ls_expression-cell_style. - ADD 1 TO ls_styles_mapping-style. " the numbering starts from 0 - READ TABLE lt_cellxfs INTO ls_cellxfs INDEX ls_styles_mapping-style. - ADD 1 TO ls_cellxfs-fillid. " the numbering starts from 0 - - READ TABLE me->styles_cond_mapping INTO ls_style_cond_mapping WITH KEY style = ls_styles_mapping-style. - IF sy-subrc EQ 0. - ls_style_cond_mapping-guid = ls_expression-cell_style. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ELSE. - ls_style_cond_mapping-guid = ls_expression-cell_style. - ls_style_cond_mapping-style = ls_styles_mapping-style. - ls_style_cond_mapping-dxf = lv_dfx_count. - APPEND ls_style_cond_mapping TO me->styles_cond_mapping. - ADD 1 TO lv_dfx_count. - - " dxf node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_dxf - parent = lo_document ). - - READ TABLE lt_fills INTO ls_fill INDEX ls_cellxfs-fillid. - IF ls_fill IS NOT INITIAL. - " fill properties - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - - lo_element_fill->append_child( new_child = lo_sub_element_2 ). "pattern - - lo_sub_element->append_child( new_child = lo_element_fill ). - ENDIF. - ENDIF. - - lo_element->append_child( new_child = lo_sub_element ). - WHEN OTHERS. - CONTINUE. - ENDCASE. - ENDWHILE. - ENDWHILE. - - lv_value = lv_dfx_count. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - - " tableStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaulttablestyle - value = zcl_excel_table=>builtinstyle_medium9 ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle - value = zcl_excel_table=>builtinstyle_pivot_light16 ). - lo_element_root->append_child( new_child = lo_element ). - - "write legacy color palette in case any indexed color was changed - IF excel->legacy_palette->is_modified( ) = abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_colors - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_indexedcolors - parent = lo_document ). - lo_element->append_child( new_child = lo_sub_element ). - - lt_colors = excel->legacy_palette->get_colors( ). - LOOP AT lt_colors INTO ls_color. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_rgbcolor - parent = lo_document ). - lv_value = ls_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - ENDLOOP. - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - - METHOD create_xl_styles_color_node. - DATA: lo_sub_element TYPE REF TO if_ixml_element, - lv_value TYPE string. - - CONSTANTS: lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_tint TYPE string VALUE 'tint'. - - "add node only if at least one attribute is set - CHECK is_color-rgb IS NOT INITIAL OR - is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set OR - is_color-theme <> zcl_excel_style_color=>c_theme_not_set OR - is_color-tint IS NOT INITIAL. - - lo_sub_element = io_document->create_simple_element( - name = iv_color_elem_name - parent = io_parent ). - - IF is_color-rgb IS NOT INITIAL. - lv_value = is_color-rgb. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - ENDIF. - - IF is_color-indexed <> zcl_excel_style_color=>c_indexed_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-indexed ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_indexed - value = lv_value ). - ENDIF. - - IF is_color-theme <> zcl_excel_style_color=>c_theme_not_set. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-theme ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_theme - value = lv_value ). - ENDIF. - - IF is_color-tint IS NOT INITIAL. - lv_value = zcl_excel_common=>number_to_excel_string( is_color-tint ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_tint - value = lv_value ). - ENDIF. - - io_parent->append_child( new_child = lo_sub_element ). -ENDMETHOD. - - - - - METHOD create_xl_table. - - DATA: lc_xml_node_table TYPE string VALUE 'table', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_display_name TYPE string VALUE 'displayName', - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_totals TYPE string VALUE 'totalsRowShown', - " Node namespace - lc_xml_node_table_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - - lv_table_name TYPE string, - lv_id TYPE i, - lv_match TYPE i, - lv_syindex TYPE char3, - lv_ref TYPE string, - lv_value TYPE string, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lv_num_columns TYPE i, - ls_fieldcat TYPE zexcel_s_fieldcatalog. - - -********************************************************************** -* STEP 1: Create xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node table - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_table - parent = lo_document ). - - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_table_ns ). - - lv_id = io_table->get_id( ). - lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_id ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - - FIND ALL OCCURRENCES OF REGEX '[^_a-zA-Z0-9]' IN io_table->settings-table_name IGNORING CASE MATCH COUNT lv_match. - IF io_table->settings-table_name IS NOT INITIAL AND lv_match EQ 0. - lv_table_name = io_table->settings-table_name. - ELSE. - lv_table_name = io_table->get_name( ). - ENDIF. - lo_element_root->set_attribute_ns( name = lc_xml_attr_name - value = lv_table_name ). - - lo_element_root->set_attribute_ns( name = lc_xml_attr_display_name - value = lv_table_name ). - - lv_ref = io_table->get_reference( ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_ref - value = lv_ref ). - IF io_table->has_totals( ) = abap_true. - lo_element_root->set_attribute_ns( name = 'totalsRowCount' - value = '1' ). - ELSE. - lo_element_root->set_attribute_ns( name = lc_xml_attr_totals - value = '0' ). - ENDIF. - -********************************************************************** -* STEP 4: Create subnodes - - " autoFilter - IF io_table->settings-nofilters EQ abap_false. - lo_element = lo_document->create_simple_element( name = 'autoFilter' - parent = lo_document ). - - lv_ref = io_table->get_reference( ip_include_totals_row = abap_false ). - lo_element->set_attribute_ns( name = 'ref' - value = lv_ref ). - - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - "columns - lo_element = lo_document->create_simple_element( name = 'tableColumns' - parent = lo_document ). - -* lo_columns = io_table->get_columns( ). - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - ADD 1 TO lv_num_columns. - ENDLOOP. - - lv_value = lv_num_columns. - CONDENSE lv_value. - lo_element->set_attribute_ns( name = 'count' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). - - LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. - lo_element2 = lo_document->create_simple_element_ns( name = 'tableColumn' - parent = lo_element ). - - lv_value = ls_fieldcat-position. - SHIFT lv_value LEFT DELETING LEADING '0'. - lo_element2->set_attribute_ns( name = 'id' - value = lv_value ). - lv_value = ls_fieldcat-scrtext_l. - lo_element2->set_attribute_ns( name = 'name' - value = lv_value ). - - IF ls_fieldcat-totals_function IS NOT INITIAL. - lo_element2->set_attribute_ns( name = 'totalsRowFunction' - value = ls_fieldcat-totals_function ). - ENDIF. - - lo_element->append_child( new_child = lo_element2 ). - ENDLOOP. - - - lo_element = lo_document->create_simple_element( name = 'tableStyleInfo' - parent = lo_element_root ). - - lo_element->set_attribute_ns( name = 'name' - value = io_table->settings-table_style ). - - lo_element->set_attribute_ns( name = 'showFirstColumn' - value = '0' ). - - lo_element->set_attribute_ns( name = 'showLastColumn' - value = '0' ). - - IF io_table->settings-show_row_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showRowStripes' - value = lv_value ). - - IF io_table->settings-show_column_stripes = abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - - lo_element->set_attribute_ns( name = 'showColumnStripes' - value = lv_value ). - - lo_element_root->append_child( new_child = lo_element ). -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - method CREATE_XL_THEME. - - -* @TODO * - - DATA: lv_xl_theme TYPE string, - lv_xl_theme_01 TYPE string, - lv_xl_theme_02 TYPE string, - lv_xl_theme_03 TYPE string, - lv_xl_theme_04 TYPE string, - lv_xl_theme_05 TYPE string, - lv_xl_theme_06 TYPE string, - lv_xl_theme_07 TYPE string, - lv_xl_theme_08 TYPE string, - lv_xl_theme_09 TYPE string, - lv_xl_theme_10 TYPE string, - lv_xl_theme_11 TYPE string, - lv_xl_theme_12 TYPE string, - lv_xl_theme_13 TYPE string, - lv_xl_theme_14 TYPE string, - lv_xl_theme_15 TYPE string, - lv_xl_theme_16 TYPE string, - lv_xl_theme_17 TYPE string, - lv_xl_theme_18 TYPE string, - lv_xl_theme_19 TYPE string, - lv_xl_theme_20 TYPE string, - lv_xl_theme_21 TYPE string, - lv_xl_theme_22 TYPE string, - lv_xl_theme_23 TYPE string, - lv_xl_theme_24 TYPE string, - lv_xl_theme_25 TYPE string, - lv_xl_theme_26 TYPE string, - lv_xl_theme_27 TYPE string, - lv_xl_theme_28 TYPE string, - lv_xl_theme_29 TYPE string, - lv_xl_theme_30 TYPE string, - lv_xl_theme_31 TYPE string, - lv_xl_theme_32 TYPE string. - - lv_xl_theme_01 = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'. - lv_xl_theme_02 = '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" '. - lv_xl_theme_03 = 'lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr '. - lv_xl_theme_04 = 'val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink>'. - lv_xl_theme_05 = '<a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_06 = '<a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" '. - lv_xl_theme_07 = 'typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font '. - lv_xl_theme_08 = 'script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" '. - lv_xl_theme_09 = 'typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_10 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_11 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_12 = '<a:font script="Arab" typeface="Arial"/><a:font script="Hebr" '. - lv_xl_theme_13 = 'typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font '. - lv_xl_theme_14 = 'script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font '. - lv_xl_theme_15 = 'script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_16 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_17 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_18 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod '. - lv_xl_theme_19 = 'val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1">'. - lv_xl_theme_20 = '<a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs '. - lv_xl_theme_21 = 'pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" '. - lv_xl_theme_22 = 'algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr '. - lv_xl_theme_23 = 'val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst>'. - lv_xl_theme_24 = '<a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst>'. - lv_xl_theme_25 = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" '. - lv_xl_theme_26 = 'dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig '. - lv_xl_theme_27 = 'rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_28 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade '. - lv_xl_theme_29 = 'val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" '. - lv_xl_theme_30 = 't="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr '. - lv_xl_theme_31 = 'val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme>'. - lv_xl_theme_32 = '</a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>'. - - - CONCATENATE lv_xl_theme_01 lv_xl_theme_02 lv_xl_theme_03 lv_xl_theme_04 lv_xl_theme_05 lv_xl_theme_06 lv_xl_theme_07 lv_xl_theme_08 lv_xl_theme_09 lv_xl_theme_10 lv_xl_theme_11 lv_xl_theme_12 lv_xl_theme_13 lv_xl_theme_14 lv_xl_theme_15 - lv_xl_theme_16 lv_xl_theme_17 lv_xl_theme_18 lv_xl_theme_19 lv_xl_theme_20 lv_xl_theme_21 lv_xl_theme_22 lv_xl_theme_23 lv_xl_theme_24 lv_xl_theme_25 lv_xl_theme_26 lv_xl_theme_27 lv_xl_theme_28 lv_xl_theme_29 lv_xl_theme_30 - lv_xl_theme_31 lv_xl_theme_32 - INTO lv_xl_theme SEPARATED BY space. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - text = lv_xl_theme - IMPORTING - buffer = ep_content. - - - endmethod. - - - - method CREATE_XL_WORKBOOK. -*--------------------------------------------------------------------* -* issue #230 - Pimp my Code -* - Stefan Schmöcker, (done) 2012-11-07 -* - ... -* changes: aligning code -* adding comments to explain what we are trying to achieve -*--------------------------------------------------------------------* -* issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-01 -* changes: correction of pointer to localSheetId -*--------------------------------------------------------------------* - -** Constant node name - DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', - lc_xml_node_fileversion TYPE string VALUE 'fileVersion', - lc_xml_node_workbookpr TYPE string VALUE 'workbookPr', - lc_xml_node_bookviews TYPE string VALUE 'bookViews', - lc_xml_node_workbookview TYPE string VALUE 'workbookView', - lc_xml_node_sheets TYPE string VALUE 'sheets', - lc_xml_node_sheet TYPE string VALUE 'sheet', - lc_xml_node_calcpr TYPE string VALUE 'calcPr', - lc_xml_node_workbookprotection TYPE string VALUE 'workbookProtection', - lc_xml_node_definednames TYPE string VALUE 'definedNames', - lc_xml_node_definedname TYPE string VALUE 'definedName', - " Node attributes - lc_xml_attr_appname TYPE string VALUE 'appName', - lc_xml_attr_lastedited TYPE string VALUE 'lastEdited', - lc_xml_attr_lowestedited TYPE string VALUE 'lowestEdited', - lc_xml_attr_rupbuild TYPE string VALUE 'rupBuild', - lc_xml_attr_themeversion TYPE string VALUE 'defaultThemeVersion', - lc_xml_attr_xwindow TYPE string VALUE 'xWindow', - lc_xml_attr_ywindow TYPE string VALUE 'yWindow', - lc_xml_attr_windowwidth TYPE string VALUE 'windowWidth', - lc_xml_attr_windowheight TYPE string VALUE 'windowHeight', - lc_xml_attr_activetab TYPE string VALUE 'activeTab', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_sheetid TYPE string VALUE 'sheetId', - lc_xml_attr_state TYPE string VALUE 'state', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_calcid TYPE string VALUE 'calcId', - lc_xml_attr_lockrevision TYPE string VALUE 'lockRevision', - lc_xml_attr_lockstructure TYPE string VALUE 'lockStructure', - lc_xml_attr_lockwindows TYPE string VALUE 'lockWindows', - lc_xml_attr_revisionspassword TYPE string VALUE 'revisionsPassword', - lc_xml_attr_workbookpassword TYPE string VALUE 'workbookPassword', - lc_xml_attr_hidden TYPE string VALUE 'hidden', - lc_xml_attr_localsheetid TYPE string VALUE 'localSheetId', - " Node namespace - lc_r_ns TYPE string VALUE 'r', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_range TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator_range TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - - DATA: lv_xml_node_ridx_id TYPE string, - lv_value TYPE string, - lv_syindex TYPE string, - l_guid TYPE uuid, - lv_active_sheet TYPE zexcel_active_worksheet. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_workbook - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnode - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_fileversion - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_appname - value = 'xl' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lastedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lowestedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild - value = '4506' ). - lo_element_root->append_child( new_child = lo_element ). - - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_themeversion - value = '124226' ). - lo_element_root->append_child( new_child = lo_element ). - - " workbookProtection node - IF me->excel->zif_excel_book_protection~protected EQ abap_true. - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookprotection - parent = lo_document ). - MOVE me->excel->zif_excel_book_protection~workbookpassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_workbookpassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~revisionspassword TO lv_value. - IF lv_value IS NOT INITIAL. - lo_element->set_attribute_ns( name = lc_xml_attr_revisionspassword - value = lv_value ). - ENDIF. - MOVE me->excel->zif_excel_book_protection~lockrevision TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockrevision - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockstructure TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockstructure - value = lv_value ). - MOVE me->excel->zif_excel_book_protection~lockwindows TO lv_value. - CONDENSE lv_value NO-GAPS. - lo_element->set_attribute_ns( name = lc_xml_attr_lockwindows - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - ENDIF. - - " bookviews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews - parent = lo_document ). - " bookview node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_workbookview - parent = lo_document ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xwindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_ywindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowwidth - value = '19035' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight - value = '8445' ). - " Set Active Sheet - lv_active_sheet = excel->get_active_sheet_index( ). - IF lv_active_sheet > 1. - lv_active_sheet = lv_active_sheet - 1. - lv_value = lv_active_sheet. - CONDENSE lv_value. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_activetab - value = lv_value ). - ENDIF. - lo_element->append_child( new_child = lo_sub_element )." bookview node - lo_element_root->append_child( new_child = lo_element )." bookviews node - - " sheets node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets - parent = lo_document ). - lo_iterator = excel->get_worksheets_iterator( ). - - " ranges node - lo_element_range = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 + - parent = lo_document ). " issue 163 + - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " sheet node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index. " question by Stefan Schmöcker 2012-12-02: sy-index seems to do the job - but is it proven to work or purely coincedence - lv_value = lo_worksheet->get_title( ). - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_sheetid - value = lv_syindex ). - IF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_hidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'hidden' ). - ELSEIF lo_worksheet->zif_excel_sheet_properties~hidden EQ zif_excel_sheet_properties=>c_veryhidden. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_state - value = 'veryHidden' ). - ENDIF. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_id - prefix = lc_r_ns - value = lv_xml_node_ridx_id ). - lo_element->append_child( new_child = lo_sub_element ). " sheet node - - " issue 163 >>> - lo_iterator_range = lo_worksheet->get_ranges_iterator( ). - -*--------------------------------------------------------------------* -* Defined names sheetlocal: Ranges, Repeat rows and columns -*--------------------------------------------------------------------* - WHILE lo_iterator_range->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator_range->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - -* lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid "del #235 Repeat rows/cols - EXCEL starts couting from zero -* value = lv_xml_node_ridx_id ). "del #235 Repeat rows/cols - and needs absolute referencing to localSheetId - lv_value = lv_syindex - 1. "ins #235 Repeat rows/cols - CONDENSE lv_value NO-GAPS. "ins #235 Repeat rows/cols - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - " issue 163 <<< - - ENDWHILE. - lo_element_root->append_child( new_child = lo_element )." sheets node - - -*--------------------------------------------------------------------* -* Defined names workbookgolbal: Ranges -*--------------------------------------------------------------------* -* " ranges node -* lo_element = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 - -* parent = lo_document ). " issue 163 - - lo_iterator = excel->get_ranges_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lo_range ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - - ENDWHILE. - -*--------------------------------------------------------------------* -* Defined names - Autofilters ( also sheetlocal ) -*--------------------------------------------------------------------* - lo_autofilters = excel->get_autofilters_reference( ). - IF lo_autofilters->is_empty( ) = abap_false. - lo_iterator = excel->get_worksheets_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_syindex = sy-index - 1 . - l_guid = lo_worksheet->get_guid( ). - lo_autofilter = lo_autofilters->get( i_sheet_guid = l_guid ) . - IF lo_autofilter IS BOUND. - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname - parent = lo_document ). - lv_value = lo_autofilters->c_autofilter. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lv_syindex. - CONDENSE lv_value NO-GAPS. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid - value = lv_value ). - lv_value = '1'. " Always hidden - lo_sub_element->set_attribute_ns( name = lc_xml_attr_hidden - value = lv_value ). - lv_value = lo_autofilter->get_filter_reference( ). - lo_sub_element->set_value( value = lv_value ). - lo_element_range->append_child( new_child = lo_sub_element ). " range node - ENDIF. - - ENDWHILE. - ENDIF. - lo_element_root->append_child( new_child = lo_element_range ). " ranges node - - - " calcPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_calcid - value = '125725' ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - - - method FLAG2BOOL. - - - IF ip_flag EQ abap_true. - ep_boolean = 'true'. - ELSE. - ep_boolean = 'false'. - ENDIF. - endmethod. - - - - - METHOD get_shared_string_index. - - - DATA ls_shared_string TYPE zexcel_s_shared_string. - - READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH. - ep_index = ls_shared_string-string_no. - -ENDMETHOD. - - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - method ZIF_EXCEL_WRITER~WRITE_FILE. - me->excel = io_excel. - ep_file = me->create( ). - endmethod. - - - - method CREATE. - -* .csv format with ; delimiter - - ep_excel = me->CREATE_CSV( ). - - endmethod. - - - - method CREATE_CSV. - - TYPES: BEGIN OF lty_format, - cmpname TYPE SEOCMPNAME, - attvalue TYPE SEOVALUE, - END OF lty_format. - DATA: lt_format TYPE STANDARD TABLE OF lty_format, - ls_format LIKE LINE OF lt_format, - lv_date TYPE DATS, - lv_tmp TYPE string, - lv_time TYPE CHAR08. - - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - lv_row TYPE sytabix, - lv_col TYPE sytabix, - lv_string TYPE string, - lc_value TYPE string, - lv_attrname TYPE SEOCMPNAME. - - DATA: ls_numfmt TYPE zexcel_s_style_numfmt, - lo_style TYPE REF TO zcl_excel_style. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - -* --- Retrieve supported cell format - REFRESH lt_format. - SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_format - FROM seocompodf - WHERE clsname = 'ZCL_EXCEL_STYLE_NUMBER_FORMAT' - AND typtype = 1 - AND type = 'ZEXCEL_NUMBER_FORMAT'. - -* --- Retrieve SAP date format - CLEAR ls_format. - SELECT ddtext INTO ls_format-attvalue FROM dd07t WHERE domname = 'XUDATFM' - AND ddlanguage = sy-langu. - ls_format-cmpname = 'DATE'. - CONDENSE ls_format-attvalue. - CONCATENATE '''' ls_format-attvalue '''' INTO ls_format-attvalue. - APPEND ls_format TO lt_format. - ENDSELECT. - - - LOOP AT lt_format INTO ls_format. - TRANSLATE ls_format-attvalue TO UPPER CASE. - MODIFY lt_format FROM ls_format. - ENDLOOP. - - -* STEP 1: Collect strings from the first worksheet - lo_iterator = excel->get_worksheets_iterator( ). - data: current_worksheet_title type ZEXCEL_SHEET_TITLE. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - - IF worksheet_name IS NOT INITIAL. - current_worksheet_title = lo_worksheet->get_title( ). - CHECK current_worksheet_title = worksheet_name. - ELSE. - IF worksheet_index IS INITIAL. - worksheet_index = 1. - ENDIF. - CHECK worksheet_index = sy-index. - ENDIF. - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - EXIT. " Take first worksheet only - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - SORT lt_cell_data BY cell_row - cell_column. - lv_row = 1. - lv_col = 1. - CLEAR lv_string. - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - -* --- Retrieve Cell Style format and data type - CLEAR ls_numfmt. - IF <fs_sheet_content>-data_type IS INITIAL AND <fs_sheet_content>-cell_style IS NOT INITIAL. - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_style->get_guid( ) = <fs_sheet_content>-cell_style. - ls_numfmt = lo_style->number_format->get_structure( ). - EXIT. - ENDWHILE. - ENDIF. - IF <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - " determine data-type - CLEAR lv_attrname. - CONCATENATE '''' ls_numfmt-NUMFMT '''' INTO ls_numfmt-NUMFMT. - TRANSLATE ls_numfmt-numfmt TO UPPER CASE. - READ TABLE lt_format INTO ls_format WITH KEY attvalue = ls_numfmt-NUMFMT. - IF sy-subrc = 0. - lv_attrname = ls_format-cmpname. - ENDIF. - - IF lv_attrname IS NOT INITIAL. - FIND FIRST OCCURRENCE OF 'DATETIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'TIME' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 't'. - ELSE. - FIND FIRST OCCURRENCE OF 'DATE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'd'. - ELSE. - FIND FIRST OCCURRENCE OF 'CURRENCY' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'NUMBER' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ELSE. - FIND FIRST OCCURRENCE OF 'PERCENTAGE' IN lv_attrname. - IF sy-subrc = 0. - <fs_sheet_content>-data_type = 'n'. - ENDIF. " Purcentage - ENDIF. " Number - ENDIF. " Currency - ENDIF. " Date - ENDIF. " TIME - ENDIF. " DATETIME - ENDIF. " lv_attrname IS NOT INITIAL. - ENDIF. " <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. - -* --- Add empty rows - WHILE lv_row < <fs_sheet_content>-cell_row. -* CONCATENATE lv_string cl_abap_char_utilities=>newline INTO lv_string. -* CONCATENATE lv_string cl_abap_char_utilities=>cr_lf INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>eol INTO lv_string. - lv_row = lv_row + 1. - lv_col = 1. - ENDWHILE. - -* --- Add empty columns - WHILE lv_col < <fs_sheet_content>-cell_column. -* CONCATENATE lv_string ';' INTO lv_string. - CONCATENATE lv_string zcl_excel_writer_csv=>delimiter INTO lv_string. - lv_col = lv_col + 1. - ENDWHILE. - -* ----- Use format to determine the data type and display format. - CASE <fs_sheet_content>-data_type. -* WHEN 'n' OR 'N'. -* lc_value = zcl_excel_common=>excel_number_to_string( ip_value = <fs_sheet_content>-cell_value ). - - WHEN 'd' OR 'D'. - lc_value = zcl_excel_common=>excel_string_to_date( ip_value = <fs_sheet_content>-cell_value ). - TRY. - lv_date = lc_value. - CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' - EXPORTING - DATE_INTERNAL = lv_date - IMPORTING - DATE_EXTERNAL = lv_tmp - EXCEPTIONS - DATE_INTERNAL_IS_INVALID = 1 - OTHERS = 2 - . - IF SY-SUBRC = 0. - lc_value = lv_tmp. - ENDIF. - - CATCH CX_SY_CONVERSION_NO_NUMBER. - - ENDTRY. - - WHEN 't' OR 'T'. - lc_value = zcl_excel_common=>excel_string_to_time( ip_value = <fs_sheet_content>-cell_value ). - write lc_value to lv_time USING EDIT MASK '__:__:__'. - lc_value = lv_time. - WHEN OTHERS. - lc_value = <fs_sheet_content>-cell_value. - - ENDCASE. - -* REPLACE ALL OCCURRENCES OF '"' in lc_value with '""'. - CONCATENATE zcl_excel_writer_csv=>enclosure zcl_excel_writer_csv=>enclosure INTO lv_tmp. - CONDENSE lv_tmp. - REPLACE ALL OCCURRENCES OF zcl_excel_writer_csv=>enclosure in lc_value with lv_tmp. - -* FIND FIRST OCCURRENCE OF ';' IN lc_value. - FIND FIRST OCCURRENCE OF zcl_excel_writer_csv=>delimiter IN lc_value. - IF sy-subrc = 0. - CONCATENATE lv_string zcl_excel_writer_csv=>enclosure lc_value zcl_excel_writer_csv=>enclosure INTO lv_string. - ELSE. - CONCATENATE lv_string lc_value INTO lv_string. - ENDIF. - - ENDLOOP. " AT lt_cell_data - - CLEAR ep_content. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - TEXT = lv_string -* MIMETYPE = ' ' -* ENCODING = - IMPORTING - BUFFER = ep_content - EXCEPTIONS - FAILED = 1 - OTHERS = 2 - . - - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX. - CLEAR WORKSHEET_NAME. - WORKSHEET_INDEX = i_active_worksheet. - endmethod. - - - - method SET_ACTIVE_SHEET_INDEX_BY_NAME. - CLEAR WORKSHEET_INDEX. - WORKSHEET_NAME = i_worksheet_name. - endmethod. - - - - method SET_DELIMITER. - delimiter = ip_value. - endmethod. - - - - method SET_ENCLOSURE. - zcl_excel_writer_csv=>enclosure = ip_value. - endmethod. - - - - method SET_ENDOFLINE. - zcl_excel_writer_csv=>eol = ip_value. - endmethod. - - - - *"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations - *"* use this source file for any type of declarations (class -*"* definitions, interfaces or type declarations) you need for -*"* components in the private section - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - METHOD add_further_data_to_zip. - - super->add_further_data_to_zip( io_zip = io_zip ). - -* Add vbaProject.bin to zip - io_zip->add( name = me->c_xl_vbaproject - content = me->excel->zif_excel_book_vba_project~vbaproject ). - -ENDMETHOD. - - - method CREATE. - - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_drawings TYPE REF TO zcl_excel_drawings. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_xl_drawing TYPE string, - lv_xl_drawing_rels TYPE string, - lv_syindex TYPE string, - lv_value TYPE string, - lv_drawing_index TYPE i. - -********************************************************************** -* Start of insertion # issue 139 - Dateretention of cellstyles - me->excel->add_static_styles( ). -* End of insertion # issue 139 - Dateretention of cellstyles - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sheet#.xml and drawing#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - lv_drawing_index = 1. - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_false. - ENDIF. - - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet - iv_drawing_index = lv_drawing_index ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - - lo_nested_iterator = lo_worksheet->get_tables_iterator( ). - - WHILE lo_nested_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_table ?= lo_nested_iterator->if_object_collection_iterator~get_next( ). - lv_content = me->create_xl_table( lo_table ). - - lv_value = lo_table->get_name( ). - CONCATENATE 'xl/tables/' lv_value '.xml' INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -* Add drawings ********************************** - lo_drawings = lo_worksheet->get_drawings( ). - IF lo_drawings->is_empty( ) = abap_false. - MOVE lv_drawing_index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - - lv_content = me->create_xl_drawings( lo_worksheet ). - lv_xl_drawing = me->c_xl_drawings. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing - content = lv_content ). - - lv_content = me->create_xl_drawings_rels( lo_worksheet ). - lv_xl_drawing_rels = me->c_xl_drawings_rels. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). - ADD 1 TO lv_drawing_index. - ENDIF. - ENDWHILE. - -********************************************************************** -* STEP 11: Add media - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 12: Add charts - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_chart ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/charts/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 9: Add vbaProject.bin to zip - lo_zip->add( name = me->c_xl_vbaproject - content = me->excel->zif_excel_book_vba_project~vbaproject ). - -********************************************************************** -* STEP 12: Create the final zip - ep_excel = lo_zip->save( ). - - endmethod. - - - method CREATE_CONTENT_TYPES. -** Constant node name - DATA: lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.ms-excel.sheet.macroEnabled.main+xml', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - lc_xml_attr_codename TYPE string VALUE 'codeName', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_bin_ext TYPE string VALUE 'bin', - lc_xml_node_bin_ct TYPE string VALUE 'application/vnd.ms-office.vbaProject'. - - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_contenttype TYPE string, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard contentType - ep_content = super->create_content_types( ). - -********************************************************************** -* STEP 2: modify XML adding the extension bin definition - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_bin_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_bin_ct ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: modify XML changing the contentType of node Override /xl/workbook.xml - - lo_collection = lo_document->get_elements_by_tag_name( 'Override' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lv_contenttype = lo_element->get_attribute_ns( lc_xml_attr_partname ). - IF lv_contenttype EQ lc_xml_node_workb_pn. - lo_element->remove_attribute_ns( lc_xml_attr_contenttype ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - EXIT. - ENDIF. - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - method CREATE_XL_RELATIONSHIPS. - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_vba_tp TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', - " Node target - lc_xml_node_rid_vba_tg TYPE string VALUE 'vbaProject.bin'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_relationships( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 4 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_vba_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_vba_tg ). - lo_element_root->append_child( new_child = lo_element ). - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. - - - method CREATE_XL_SHEET. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_sheet( io_worksheet = io_worksheet - iv_active = iv_active ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - -* lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). -* lo_iterator = lo_collection->create_iterator( ). -* lo_element ?= lo_iterator->get_next( ). -* WHILE lo_element IS BOUND. -* lo_element->set_attribute_ns( name = lc_xml_attr_codename -* value = me->excel->zif_excel_book_vba_project~codename ). -* lo_element ?= lo_iterator->get_next( ). -* ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'sheetPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = io_worksheet->zif_excel_sheet_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - endmethod. - - - method CREATE_XL_WORKBOOK. - -** Constant node name - DATA: lc_xml_attr_codename TYPE string VALUE 'codeName'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_document_xml TYPE REF TO cl_xml_document, - lo_element_root TYPE REF TO if_ixml_node, - lo_element TYPE REF TO if_ixml_element, - lo_collection TYPE REF TO if_ixml_node_collection, - lo_iterator TYPE REF TO if_ixml_node_iterator, - lo_node TYPE REF TO if_ixml_node, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_subrc TYPE sysubrc, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 3: Create standard relationship - ep_content = super->create_xl_workbook( ). - -********************************************************************** -* STEP 2: modify XML adding the vbaProject relation - - CREATE OBJECT lo_document_xml. - lv_subrc = lo_document_xml->parse_xstring( ep_content ). - - lo_document ?= lo_document_xml->m_document. - lo_element_root = lo_document->if_ixml_node~get_first_child( ). - - lo_collection = lo_document->get_elements_by_tag_name( 'fileVersion' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - - lo_collection = lo_document->get_elements_by_tag_name( 'workbookPr' ). - lo_iterator = lo_collection->create_iterator( ). - lo_element ?= lo_iterator->get_next( ). - WHILE lo_element IS BOUND. - lo_element->set_attribute_ns( name = lc_xml_attr_codename - value = me->excel->zif_excel_book_vba_project~codename_pr ). - lo_element ?= lo_iterator->get_next( ). - ENDWHILE. - -********************************************************************** -* STEP 3: Create xstring stream - CLEAR ep_content. - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - endmethod. - - - - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - method IF_MESSAGE~GET_LONGTEXT. - - IF me->error IS NOT INITIAL - OR me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this as longtext as well -*--------------------------------------------------------------------* - result = me->get_text( ). - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - super->if_message~get_longtext( EXPORTING - preserve_newlines = preserve_newlines - RECEIVING - result = result ). - ENDIF. - endmethod. - - - method IF_MESSAGE~GET_TEXT. - - IF me->error IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied explicitly use this -*--------------------------------------------------------------------* - result = me->error . - ELSEIF me->syst_at_raise IS NOT INITIAL. -*--------------------------------------------------------------------* -* If message was supplied by syst create messagetext now -*--------------------------------------------------------------------* - MESSAGE ID syst_at_raise-msgid TYPE syst_at_raise-msgty NUMBER syst_at_raise-msgno - WITH syst_at_raise-msgv1 syst_at_raise-msgv2 syst_at_raise-msgv3 syst_at_raise-msgv4 - INTO result. - ELSE. -*--------------------------------------------------------------------* -* otherwise use standard method to derive text -*--------------------------------------------------------------------* - CALL METHOD super->if_message~get_text - RECEIVING - result = result. - ENDIF. - endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZABAP2XLSX_DEMO_SHOW -*&---------------------------------------------------------------------* -REPORT zabap2xlsx_demo_like_se83. - - -*----------------------------------------------------------------------* -* CLASS lcl_perform DEFINITION -*----------------------------------------------------------------------* -CLASS lcl_perform DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: setup_objects, - collect_reports, - - handle_nav FOR EVENT double_click OF cl_gui_alv_grid - IMPORTING e_row. - - PRIVATE SECTION. - TYPES: BEGIN OF ty_reports, - progname TYPE reposrc-progname, - sort TYPE reposrc-progname, - filename TYPE string, - END OF ty_reports. - - CLASS-DATA: - lo_grid TYPE REF TO cl_gui_alv_grid, - lo_text TYPE REF TO cl_gui_textedit, - cl_document TYPE REF TO i_oi_document_proxy, - - t_reports TYPE STANDARD TABLE OF ty_reports WITH NON-UNIQUE DEFAULT KEY. - CLASS-DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control. "Office Dokument - -ENDCLASS. "lcl_perform DEFINITION - - -START-OF-SELECTION. - lcl_perform=>collect_reports( ). - lcl_perform=>setup_objects( ). - -END-OF-SELECTION. - - WRITE '.'. " Force output - - -*----------------------------------------------------------------------* -* CLASS lcl_perform IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_perform IMPLEMENTATION. - METHOD setup_objects. - DATA: lo_split TYPE REF TO cl_gui_splitter_container, - lo_container TYPE REF TO cl_gui_container. - - DATA: it_fieldcat TYPE lvc_t_fcat, - is_layout TYPE lvc_s_layo, - is_variant TYPE disvariant. - FIELD-SYMBOLS: <fc> LIKE LINE OF it_fieldcat. - - - CREATE OBJECT lo_split - EXPORTING - parent = cl_gui_container=>screen0 - rows = 1 - columns = 3 - no_autodef_progid_dynnr = 'X'. - lo_split->set_column_width( EXPORTING id = 1 - width = 20 ). - lo_split->set_column_width( EXPORTING id = 2 - width = 40 ). - -* Left: List of reports - lo_container = lo_split->get_container( row = 1 - column = 1 ). - - CREATE OBJECT lo_grid - EXPORTING - i_parent = lo_container. - SET HANDLER lcl_perform=>handle_nav FOR lo_grid. - - is_variant-report = sy-repid. - is_variant-handle = '0001'. - - is_layout-cwidth_opt = 'X'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'PROGNAME'. - <fc>-tabname = 'REPOSRC'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING <fc>. - <fc>-fieldname = 'SORT'. - <fc>-ref_field = 'PROGNAME'. - <fc>-ref_table = 'REPOSRC'. - - - lo_grid->set_table_for_first_display( EXPORTING - is_variant = is_variant - i_save = 'A' - is_layout = is_layout - CHANGING - it_outtab = t_reports - it_fieldcatalog = it_fieldcat - EXCEPTIONS - invalid_parameter_combination = 1 - program_error = 2 - too_many_lines = 3 - OTHERS = 4 ). - -* Middle: Text with coding - lo_container = lo_split->get_container( row = 1 - column = 2 ). - CREATE OBJECT lo_text - EXPORTING - parent = lo_container. - lo_text->set_readonly_mode( cl_gui_textedit=>true ). - lo_text->set_font_fixed( ). - - - -* right: DemoOutput - lo_container = lo_split->get_container( row = 1 - column = 3 ). - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = lo_container - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - - ENDMETHOD. "setup_objects - - "collect_reports - METHOD collect_reports. - FIELD-SYMBOLS:<report> LIKE LINE OF t_reports. - DATA: t_source TYPE STANDARD TABLE OF text255 WITH NON-UNIQUE DEFAULT KEY. - -* Get all demoreports - SELECT progname - INTO CORRESPONDING FIELDS OF TABLE t_reports - FROM reposrc - WHERE progname LIKE 'ZDEMO_EXCEL%' - AND progname <> sy-repid - AND subc = '1'. - - LOOP AT t_reports ASSIGNING <report>. - -* Check if already switched to new outputoptions - READ REPORT <report>-progname INTO t_source. - IF sy-subrc = 0. - FIND 'INCLUDE zdemo_excel_outputopt_incl.' IN TABLE t_source IGNORING CASE. - ENDIF. - IF sy-subrc <> 0. - DELETE t_reports. - CONTINUE. - ENDIF. - - -* Build half-numeric sort - <report>-sort = <report>-progname. - REPLACE REGEX '(ZDEMO_EXCEL)(\d\d)\s*$' IN <report>-sort WITH '$1\0$2'. " REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN <report>-sort WITH '$1$2'.REPLACE - - REPLACE REGEX '(ZDEMO_EXCEL)(\d)\s*$' IN <report>-sort WITH '$1\0\0$2'. - ENDLOOP. - SORT t_reports BY sort progname. - - ENDMETHOD. "collect_reports - - METHOD handle_nav. - CONSTANTS: filename TYPE text80 VALUE 'ZABAP2XLSX_DEMO_SHOW.xlsx'. - DATA: wa_report LIKE LINE OF t_reports, - t_source TYPE STANDARD TABLE OF text255, - t_rawdata TYPE solix_tab, - wa_rawdata LIKE LINE OF t_rawdata, - bytecount TYPE i, - length TYPE i, - add_selopt TYPE flag. - - - READ TABLE t_reports INTO wa_report INDEX e_row-index. - CHECK sy-subrc = 0. - -* Set new text into middle frame - READ REPORT wa_report-progname INTO t_source. - lo_text->set_text_as_r3table( EXPORTING table = t_source ). - - -* Unload old xls-file - cl_document->close_document( ). - -* Get the demo -* If additional parameters found on selection screen, start via selection screen , otherwise start w/o - CLEAR add_selopt. - FIND 'PARAMETERS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ELSE. - FIND 'SELECT-OPTIONS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ENDIF. - ENDIF. - IF add_selopt IS INITIAL. - SUBMIT (wa_report-progname) AND RETURN - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ELSE. - SUBMIT (wa_report-progname) VIA SELECTION-SCREEN AND RETURN - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ENDIF. - - OPEN DATASET filename FOR INPUT IN BINARY MODE. - IF sy-subrc = 0. - DO. - CLEAR wa_rawdata. - READ DATASET filename INTO wa_rawdata LENGTH length. - IF sy-subrc <> 0. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - EXIT. - ENDIF. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - ENDDO. - CLOSE DATASET filename. - ENDIF. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - ENDMETHOD. "handle_nav - -ENDCLASS. "lcl_perform IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZANGRY_BIRDS -*& Just for fun -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zangry_birds. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_border_light TYPE REF TO zcl_excel_style_border, - lo_style_color0 TYPE REF TO zcl_excel_style, - lo_style_color1 TYPE REF TO zcl_excel_style, - lo_style_color2 TYPE REF TO zcl_excel_style, - lo_style_color3 TYPE REF TO zcl_excel_style, - lo_style_color4 TYPE REF TO zcl_excel_style, - lo_style_color5 TYPE REF TO zcl_excel_style, - lo_style_color6 TYPE REF TO zcl_excel_style, - lo_style_color7 TYPE REF TO zcl_excel_style, - lo_style_credit TYPE REF TO zcl_excel_style, - lo_style_link TYPE REF TO zcl_excel_style, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_style_color0_guid TYPE zexcel_cell_style, - lv_style_color1_guid TYPE zexcel_cell_style, - lv_style_color2_guid TYPE zexcel_cell_style, - lv_style_color3_guid TYPE zexcel_cell_style, - lv_style_color4_guid TYPE zexcel_cell_style, - lv_style_color5_guid TYPE zexcel_cell_style, - lv_style_color6_guid TYPE zexcel_cell_style, - lv_style_color7_guid TYPE zexcel_cell_style, - lv_style_credit_guid TYPE zexcel_cell_style, - lv_style_link_guid TYPE zexcel_cell_style, - lv_style TYPE zexcel_cell_style. - -DATA: lv_col_str TYPE zexcel_cell_column_alpha, - lv_row TYPE i, - lv_col TYPE i, - lt_mapper TYPE TABLE OF zexcel_cell_style, - ls_mapper TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'angry_birds.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_white. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - - " Create color white - lo_style_color0 = lo_excel->add_new_style( ). - lo_style_color0->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color0->fill->fgcolor-rgb = 'FFFFFFFF'. - lo_style_color0->borders->allborders = lo_border_light. - lv_style_color0_guid = lo_style_color0->get_guid( ). - - " Create color black - lo_style_color1 = lo_excel->add_new_style( ). - lo_style_color1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color1->fill->fgcolor-rgb = 'FF252525'. - lo_style_color1->borders->allborders = lo_border_light. - lv_style_color1_guid = lo_style_color1->get_guid( ). - - " Create color dark green - lo_style_color2 = lo_excel->add_new_style( ). - lo_style_color2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color2->fill->fgcolor-rgb = 'FF75913A'. - lo_style_color2->borders->allborders = lo_border_light. - lv_style_color2_guid = lo_style_color2->get_guid( ). - - " Create color light green - lo_style_color3 = lo_excel->add_new_style( ). - lo_style_color3->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color3->fill->fgcolor-rgb = 'FF9DFB73'. - lo_style_color3->borders->allborders = lo_border_light. - lv_style_color3_guid = lo_style_color3->get_guid( ). - - " Create color green - lo_style_color4 = lo_excel->add_new_style( ). - lo_style_color4->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color4->fill->fgcolor-rgb = 'FF92CF56'. - lo_style_color4->borders->allborders = lo_border_light. - lv_style_color4_guid = lo_style_color4->get_guid( ). - - " Create color 2dark green - lo_style_color5 = lo_excel->add_new_style( ). - lo_style_color5->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color5->fill->fgcolor-rgb = 'FF506228'. - lo_style_color5->borders->allborders = lo_border_light. - lv_style_color5_guid = lo_style_color5->get_guid( ). - - " Create color yellow - lo_style_color6 = lo_excel->add_new_style( ). - lo_style_color6->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color6->fill->fgcolor-rgb = 'FFC3E224'. - lo_style_color6->borders->allborders = lo_border_light. - lv_style_color6_guid = lo_style_color6->get_guid( ). - - " Create color yellow - lo_style_color7 = lo_excel->add_new_style( ). - lo_style_color7->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color7->fill->fgcolor-rgb = 'FFB3C14F'. - lo_style_color7->borders->allborders = lo_border_light. - lv_style_color7_guid = lo_style_color7->get_guid( ). - - " Credits - lo_style_credit = lo_excel->add_new_style( ). - lo_style_credit->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_credit->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_credit->font->size = 20. - lv_style_credit_guid = lo_style_credit->get_guid( ). - - " Link - lo_style_link = lo_excel->add_new_style( ). - lo_style_link->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_link->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. -* lo_style_link->font->size = 20. - lv_style_link_guid = lo_style_link->get_guid( ). - - " Create image map " line 2 - DO 30 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 3 - DO 28 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 4 - DO 27 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 5 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 6 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 7 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 8 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 9 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 10 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 11 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 12 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 13 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 14 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 12 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 15 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 16 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 17 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 18 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 19 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 27 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 20 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 21 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 19 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 22 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 23 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 24 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 25 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 26 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 27 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 28 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 29 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 30 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 31 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 32 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 33 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 34 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 35 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 36 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 37 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 38 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 39 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 22 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 40 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 41 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 42 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 43 - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 44 - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 45 - DO 16 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 46 - DO 18 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Angry Birds' ). - - lv_row = 1. - lv_col = 1. - - LOOP AT lt_mapper INTO ls_mapper. - lv_col_str = zcl_excel_common=>convert_column2alpha( lv_col ). - IF ls_mapper IS INITIAL. - lo_row_dimension = lo_worksheet->get_row_dimension( ip_row = lv_row ). - lo_row_dimension->set_row_height( ip_row_height = 8 ). - lv_col = 1. - lv_row = lv_row + 1. - CONTINUE. - ENDIF. - lo_worksheet->set_cell( ip_column = lv_col_str - ip_row = lv_row - ip_value = space - ip_style = ls_mapper ). - lv_col = lv_col + 1. - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = lv_col_str ). - lo_column_dimension->set_width( ip_width = 2 ). - ENDLOOP. - - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 15 - ip_value = 'Created with abap2xlsx' - ip_style = lv_style_credit_guid ). - - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 24 - ip_value = 'http://www.abap2xlsx.org' - ip_style = lv_style_link_guid - ip_hyperlink = lo_hyperlink ). - - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'AP' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->set_merge( ip_row = 15 ip_column_start = 'AP' ip_row_to = 22 ip_column_end = 'AR' ). - lo_worksheet->set_merge( ip_row = 24 ip_column_start = 'AP' ip_row_to = 26 ip_column_end = 'AR' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_CALENDAR -*& abap2xlsx Demo: Create Calendar with Pictures -*&---------------------------------------------------------------------* -*& This report creates a monthly calendar in the specified date range. -*& Each month is put on a seperate worksheet. The pictures for each -*& month can be specified in a tab delimited file called "Calendar.txt" -*& which is saved in the Export Directory. By default this is the SAP -*& Workdir. The file contains 3 fields: -*& -*& Month (with leading 0) -*& Image Filename -*& Image Description -*& URL for the Description -*& -*& The Images should be landscape JPEG's with a 3:2 ratio and min. -*& 450 pixel height. They must also be saved in the Export Directory. -*& In my tests I've discovered a limit of 20 MB in the -*& cl_gui_frontend_services=>gui_download method. So keep your images -*& smaller or chnage to a server export using OPEN DATASET. -*&---------------------------------------------------------------------* - -REPORT zdemo_calendar. - -TYPE-POOLS: abap. -CONSTANTS: gc_save_file_name TYPE string VALUE 'Calendar.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. -INCLUDE zdemo_calendar_classes. - -DATA: lv_workdir TYPE string. - -PARAMETERS: p_from TYPE dfrom DEFAULT '20130101', - p_to TYPE dto DEFAULT '20131231'. - -SELECTION-SCREEN BEGIN OF BLOCK orientation WITH FRAME TITLE orient. -PARAMETERS: p_portr TYPE flag RADIOBUTTON GROUP orie, - p_lands TYPE flag RADIOBUTTON GROUP orie DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK orientation. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - orient = 'Orientation'(000). - -START-OF-SELECTION. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, - hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lo_style_month TYPE REF TO zcl_excel_style, - lv_style_month_guid TYPE zexcel_cell_style. - DATA: lo_style_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lv_style_border_guid TYPE zexcel_cell_style. - DATA: lo_style_center TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lv_full_path TYPE string, - image_descr_path TYPE string, - lv_file_separator TYPE c. - DATA: lv_content TYPE xstring, - width TYPE i, - lv_height TYPE i, - lv_from_row TYPE zexcel_cell_row. - - DATA: month TYPE i, - month_nr TYPE fcmnr, - count TYPE i VALUE 1, - title TYPE zexcel_sheet_title, - value TYPE string, - image_path TYPE string, - date_from TYPE datum, - date_to TYPE datum, - row TYPE zexcel_cell_row, - to_row TYPE zexcel_cell_row, - to_col TYPE zexcel_cell_column_alpha, - to_col_end TYPE zexcel_cell_column_alpha, - to_col_int TYPE i. - - DATA: month_names TYPE TABLE OF t247. - FIELD-SYMBOLS: <month_name> LIKE LINE OF month_names. - - TYPES: BEGIN OF tt_datatab, - month_nr TYPE fcmnr, - filename TYPE string, - descr TYPE string, - url TYPE string, - END OF tt_datatab. - - DATA: image_descriptions TYPE TABLE OF tt_datatab. - FIELD-SYMBOLS: <img_descr> LIKE LINE OF image_descriptions. - - CONSTANTS: lv_default_file_name TYPE string VALUE 'Calendar', "#EC NOTEXT - c_from_row_portrait TYPE zexcel_cell_row VALUE 28, - c_from_row_landscape TYPE zexcel_cell_row VALUE 38, - from_col TYPE zexcel_cell_column_alpha VALUE 'C', - c_height_portrait TYPE i VALUE 450, " Image Height in Portrait Mode - c_height_landscape TYPE i VALUE 670, " Image Height in Landscape Mode - c_factor TYPE f VALUE '1.5'. " Image Ratio, default 3:2 - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name '.xlsx' INTO lv_full_path. "#EC NOTEXT - - " Read Image Names for Month and Description - CONCATENATE p_path lv_file_separator lv_default_file_name '.txt' INTO image_descr_path. "#EC NOTEXT - cl_gui_frontend_services=>gui_upload( - EXPORTING - filename = image_descr_path " Name of file - filetype = 'ASC' " File Type (ASCII, Binary) - has_field_separator = 'X' - read_by_line = 'X' " File Written Line-By-Line to the Internal Table - CHANGING - data_tab = image_descriptions " Transfer table for file contents - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create Styles - " Create an underline double style - lo_style_month = lo_excel->add_new_style( ). - " lo_style_month->font->underline = abap_true. - " lo_style_month->font->underline_mode = zcl_excel_style_font=>c_underline_single. - lo_style_month->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_month->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_month->font->family = zcl_excel_style_font=>c_family_roman. - lo_style_month->font->bold = abap_true. - lo_style_month->font->size = 36. - lv_style_month_guid = lo_style_month->get_guid( ). - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lo_style_border->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_border_guid = lo_style_border->get_guid( ). - "Create style alignment center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_center->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_center_guid = lo_style_center->get_guid( ). - - " Get Month Names - CALL FUNCTION 'MONTH_NAMES_GET' - TABLES - month_names = month_names. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = p_from - i_date_to = p_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - date_from = p_from. - - WHILE count <= month. - IF count = 1. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - ELSE. - lo_worksheet = lo_excel->add_new_worksheet( ). - ENDIF. - - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - - title = count. - value = count. - CONDENSE title. - CONDENSE value. - lo_worksheet->set_title( title ). - lo_worksheet->set_print_gridlines( abap_false ). - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_col_dim = lo_worksheet->get_column_dimension( 'A' ). - lo_col_dim->set_width( '1.0' ). - lo_col_dim = lo_worksheet->get_column_dimension( 'B' ). - lo_col_dim->set_width( '2.0' ). - IF p_lands = abap_true. - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lv_height = c_height_landscape. - lv_from_row = c_from_row_landscape. - lo_worksheet->sheet_setup->margin_top = '0.10'. - lo_worksheet->sheet_setup->margin_left = '0.10'. - lo_worksheet->sheet_setup->margin_right = '0.10'. - lo_worksheet->sheet_setup->margin_bottom = '0.10'. - ELSE. - lo_col_dim = lo_worksheet->get_column_dimension( 'K' ). - lo_col_dim->set_width( '3.0' ). - lo_worksheet->sheet_setup->margin_top = '0.80'. - lo_worksheet->sheet_setup->margin_left = '0.55'. - lo_worksheet->sheet_setup->margin_right = '0.05'. - lo_worksheet->sheet_setup->margin_bottom = '0.30'. - lv_height = c_height_portrait. - lv_from_row = c_from_row_portrait. - ENDIF. - - " Add Month Name - month_nr = date_from+4(2). - IF p_portr = abap_true. - READ TABLE month_names WITH KEY mnr = month_nr ASSIGNING <month_name>. - CONCATENATE <month_name>-ltx ` ` date_from(4) INTO value. - row = lv_from_row - 2. - to_col = from_col. - ELSE. - row = lv_from_row - 1. - to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 32. - to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). - to_col_int = to_col_int + 1. - to_col_end = zcl_excel_common=>convert_column2alpha( to_col_int ). - CONCATENATE month_nr '/' date_from+2(2) INTO value. - to_row = row + 2. - lo_worksheet->set_merge( - EXPORTING - ip_column_start = to_col " Cell Column Start - ip_column_end = to_col_end " Cell Column End - ip_row = row " Cell Row - ip_row_to = to_row " Cell Row - ). - ENDIF. - lo_worksheet->set_cell( - EXPORTING - ip_column = to_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = lv_style_month_guid - ). - -* to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 7. -* to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). -* -* lo_worksheet->set_merge( -* EXPORTING -* ip_column_start = from_col " Cell Column Start -* ip_column_end = to_col " Cell Column End -* ip_row = row " Cell Row -* ip_row_to = row " Cell Row -* ). - - " Add drawing from a XSTRING read from a file - UNASSIGN <img_descr>. - READ TABLE image_descriptions WITH KEY month_nr = month_nr ASSIGNING <img_descr>. - IF <img_descr> IS ASSIGNED. - value = <img_descr>-descr. - IF p_portr = abap_true. - row = lv_from_row - 3. - ELSE. - row = lv_from_row - 2. - ENDIF. - IF NOT <img_descr>-url IS INITIAL. - hyperlink = zcl_excel_hyperlink=>create_external_link( <img_descr>-url ). - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - ELSE. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ). - ENDIF. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '22.0' ). - - " In Landscape mode the row between the description and the - " dates should be not so high - IF p_lands = abap_true. - row = lv_from_row - 3. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '7.0' ). - row = lv_from_row - 1. - lo_row_dim = lo_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - ENDIF. - - CONCATENATE p_path lv_file_separator <img_descr>-filename INTO image_path. - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 1 - ip_from_col = 'B' ). - - lv_content = zcl_helper=>load_image( image_path ). - width = lv_height * c_factor. - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = width - ip_height = lv_height ). - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - " Add Calendar - CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH' - EXPORTING - day_in = date_from - IMPORTING - last_day_of_month = date_to. - IF p_portr = abap_true. - zcl_helper=>add_calendar( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ELSE. - zcl_helper=>add_calendar_landscape( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ENDIF. - count = count + 1. - date_from = date_to + 1. - ENDWHILE. - - lo_excel->set_active_sheet_index_by_name( '1' ). -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_CALENDAR_CLASSES -*&---------------------------------------------------------------------* - -*&---------------------------------------------------------------------* -*& Class ZCL_DATE_CALCULATION -*&---------------------------------------------------------------------* -* Text -*----------------------------------------------------------------------* -CLASS zcl_date_calculation DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: months_between_two_dates - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_incl_to TYPE flag - EXPORTING - e_month TYPE i. -ENDCLASS. "ZCL_DATE_CALCULATION - - -*----------------------------------------------------------------------* -* CLASS ZCL_DATE_CALCULATION IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation IMPLEMENTATION. - METHOD months_between_two_dates. - DATA: date_to TYPE datum. - DATA: BEGIN OF datum_von, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_von. - - DATA: BEGIN OF datum_bis, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_bis. - - e_month = 0. - - CHECK NOT ( i_date_from IS INITIAL ) - AND NOT ( i_date_to IS INITIAL ). - - date_to = i_date_to. - IF i_incl_to = abap_true. - date_to = date_to + 1. - ENDIF. - - datum_von = i_date_from. - datum_bis = date_to. - - e_month = ( datum_bis-jjjj - datum_von-jjjj ) * 12 - + ( datum_bis-mm - datum_von-mm ). - ENDMETHOD. "MONTHS_BETWEEN_TWO_DATES -ENDCLASS. "ZCL_DATE_CALCULATION IMPLEMENTATION - -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test DEFINITION FOR TESTING - " DURATION SHORT - " RISK LEVEL HARMLESS - "#AU Duration Medium - "#AU Risk_Level Harmless - . - PUBLIC SECTION. - METHODS: - months_between_two_dates FOR TESTING. -ENDCLASS. "zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test IMPLEMENTATION. - METHOD months_between_two_dates. - - DATA: date_from TYPE datum VALUE '20120101', - date_to TYPE datum VALUE '20121231'. - DATA: month TYPE i. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - cl_aunit_assert=>assert_equals( - exp = 12 " Data Object with Expected Type - act = month " Data Object with Current Value - msg = 'Calculated date is wrong' " Message in Case of Error - ). - - ENDMETHOD. "months_between_two_dates -ENDCLASS. "zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* CLASS zcl_helper DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: - load_image - IMPORTING - filename TYPE string - RETURNING value(r_image) TYPE xstring, - add_calendar - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calendar_landscape - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_a2x_footer - IMPORTING - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet, - add_calender_week - IMPORTING - i_date TYPE datum - i_row TYPE zexcel_cell_row - i_col TYPE zexcel_cell_column_alpha - i_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet. -ENDCLASS. "zcl_helper DEFINITION - -*----------------------------------------------------------------------* -* CLASS zcl_helper IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper IMPLEMENTATION. - METHOD load_image. - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = filename - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = r_image - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - ENDMETHOD. "load_image - METHOD add_calendar. - DATA: day_names TYPE TABLE OF t246. - DATA: row TYPE zexcel_cell_row, - row_max TYPE i, - col_int TYPE zexcel_cell_column, - col_max TYPE i, - from_col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha, - lr_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lr_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - DATA: lv_date TYPE datum, - value TYPE string, - weekday TYPE wotnr, - weekrow TYPE wotnr VALUE 1, - day TYPE i, - width TYPE f, - height TYPE f. - DATA: hyperlink TYPE REF TO zcl_excel_hyperlink. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - from_col_int = zcl_excel_common=>convert_column2int( i_from_col ). - " Add description for Calendar Week - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = 'CW'(001) " Cell Value - ip_style = i_cw_style - ). - - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - LOOP AT day_names ASSIGNING <day_name>. - row = i_from_row. - col_int = from_col_int + <day_name>-wotnr. - col = zcl_excel_common=>convert_column2alpha( col_int ). - value = <day_name>-langt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - ENDLOOP. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - - row = i_from_row + weekrow. - col_int = from_col_int + weekday. - col = zcl_excel_common=>convert_column2alpha( col_int ). - - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - - IF weekday = 7. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - weekrow = weekrow + 1. - ENDIF. - lv_date = lv_date + 1. - ENDWHILE. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - " Add Created with abap2xlsx - row = row + 2. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - col_int = from_col_int. - col_max = from_col_int + 7. - WHILE col_int <= col_max. - col = zcl_excel_common=>convert_column2alpha( col_int ). - IF sy-index = 1. - width = '5.0'. - ELSE. - width = '11.4'. - ENDIF. - lr_col_dim = c_worksheet->get_column_dimension( col ). - lr_col_dim->set_width( width ). - col_int = col_int + 1. - ENDWHILE. - row = i_from_row + 1. - row_max = i_from_row + 6. - WHILE row <= row_max. - height = 50. - lr_row_dim = c_worksheet->get_row_dimension( row ). - lr_row_dim->set_row_height( height ). - row = row + 1. - ENDWHILE. - ENDMETHOD. "add_calendar - METHOD add_a2x_footer. - DATA: value TYPE string, - hyperlink TYPE REF TO zcl_excel_hyperlink. - - value = 'Created with abap2xlsx. Find more information at http://abap2xlsx.org.'(002). - hyperlink = zcl_excel_hyperlink=>create_external_link( 'http://abap2xlsx.org' ). "#EC NOTEXT - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - - ENDMETHOD. "add_a2x_footer - METHOD add_calendar_landscape. - DATA: day_names TYPE TABLE OF t246. - - DATA: lv_date TYPE datum, - day TYPE i, - value TYPE string, - weekday TYPE wotnr. - DATA: row TYPE zexcel_cell_row, - from_col_int TYPE zexcel_cell_column, - col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha. - DATA: lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, - lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - - FIELD-SYMBOLS: <day_name> LIKE LINE OF day_names. - - lv_date = i_date_from. - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - " Day name row - row = i_from_row. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - READ TABLE day_names ASSIGNING <day_name> - WITH KEY wotnr = weekday. - value = <day_name>-kurzt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - - " Day row - row = i_from_row + 1. - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - - - lv_date = lv_date + 1. - ENDWHILE. - " Add ABAP2XLSX Footer - row = i_from_row + 2. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row_dim = c_worksheet->get_row_dimension( row ). - lo_row_dim->set_row_height( '5.0' ). - row = i_from_row + 3. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - - " Set with for all 31 coulumns - WHILE day < 32. - day = day + 1. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). - ENDWHILE. - ENDMETHOD. "ADD_CALENDAR_LANDSCAPE - - METHOD add_calender_week. - DATA: week TYPE kweek, - week_int TYPE i, - value TYPE string. - " Add Calender Week - CALL FUNCTION 'DATE_GET_WEEK' - EXPORTING - date = i_date " Date for which the week should be calculated - IMPORTING - week = week. " Week for date (format:YYYYWW) - value = week+4(2). - week_int = value. - value = week_int. - CONDENSE value. - c_worksheet->set_cell( - EXPORTING - ip_column = i_col " Cell Column - ip_row = i_row " Cell Row - ip_value = value " Cell Value - ip_style = i_style - ). - ENDMETHOD. "add_calender_week -ENDCLASS. "zcl_helper IMPLEMENTATION - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel. - -DATA: lv_workdir TYPE string, - lv_upfile TYPE string. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = sy-lisel ). - CONCATENATE p_path sy-lisel '01_HelloWorld.xlsx' INTO lv_upfile. - - SUBMIT zdemo_excel1 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Hello world - SUBMIT zdemo_excel2 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Styles - SUBMIT zdemo_excel3 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: iTab binding - SUBMIT zdemo_excel4 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Multi sheets, page setup and sheet properties - SUBMIT zdemo_excel5 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel6 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Formulas - SUBMIT zdemo_excel7 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel8 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Ranges - SUBMIT zdemo_excel9 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Data validation - SUBMIT zdemo_excel10 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Bind table with field catalog - " zdemo_excel11 is not added because it has a selection screen and - " you also need to have business partners maintained in transaction BP - SUBMIT zdemo_excel12 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Column size - SUBMIT zdemo_excel13 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Merge cell - SUBMIT zdemo_excel14 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Alignment - " zdemo_excel15 added at the end - SUBMIT zdemo_excel16 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Drawing - SUBMIT zdemo_excel17 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Lock sheet - SUBMIT zdemo_excel18 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Lock workbook - SUBMIT zdemo_excel19 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Set active sheet - " zdemo_excel20 is not added because it uses ALV and cannot be processed (OLE2) - SUBMIT zdemo_excel21 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Color Picker - SUBMIT zdemo_excel22 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Bind table with field catalog & sheet style - SUBMIT zdemo_excel23 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Multiple sheets with and w/o grid lines, print options - SUBMIT zdemo_excel24 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Multiple sheets with different default date formats - SUBMIT zdemo_excel25 AND RETURN. " abap2xlsx Demo: Create and xlsx on Application Server (could be executed in batch mode) - " zdemo_excel26 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel27 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional Formatting - SUBMIT zdemo_excel28 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: CSV writer - " SUBMIT zdemo_excel29 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Macro enabled workbook - SUBMIT zdemo_excel30 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: ABAP Cell data types + leading blanks string - SUBMIT zdemo_excel31 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Autosize Column with different Font sizes - " zdemo_excel32 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel33 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Table autofilter - SUBMIT zdemo_excel34 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Static Styles Chess - SUBMIT zdemo_excel35 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Static Styles - SUBMIT zdemo_excel36 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Style applied to sheet, column and single cell - SUBMIT zdemo_excel37 WITH p_upfile = lv_upfile - WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Simplest call of the reader and writer - passthrough data - SUBMIT zdemo_excel38 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Show off integration of drawings ( here using the SAP-Icons ) - SUBMIT zdemo_excel39 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Charts - SUBMIT zdemo_excel40 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Demo Printsettings - SUBMIT zdemo_excel41 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Inheritance - " - " Reader/Writer Demo must always run at the end - " to make sure all documents where created - " - SUBMIT zdemo_excel15 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. " Read Excel and write it back - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel1. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -CONSTANTS: gc_save_file_name TYPE string VALUE '01_HelloWorld.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). -* lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_width( ip_width = 11 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL10 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel10. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_iconset TYPE zexcel_conditional_iconset. - -CONSTANTS: gc_save_file_name TYPE string VALUE '10_iTabFieldCatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - "Conditional style - lo_style_conditional2 = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional2->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional2->mode_iconset = ls_iconset. - lo_style_conditional2->priority = 1. - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_count. - WHEN 'CONNID'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'PRICE'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - <fs_field_catalog>-cond_style = lo_style_conditional2. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). "make date field a bit wider - column_dimension->set_width( ip_width = 13 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL11 -*& Export Organisation and Contact Persons using ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel11. - -TYPE-POOLS: abap. - -DATA: central_search TYPE bapibus1006_central_search, - addressdata_search TYPE bapibus1006_addr_search, - others_search TYPE bapibus1006_other_data. -DATA: searchresult TYPE TABLE OF bapibus1006_bp_addr, - return TYPE TABLE OF bapiret2. -DATA: lines TYPE i. -FIELD-SYMBOLS: <searchresult_line> LIKE LINE OF searchresult. -DATA: centraldata TYPE bapibus1006_central, - centraldataperson TYPE bapibus1006_central_person, - centraldataorganization TYPE bapibus1006_central_organ. -DATA: addressdata TYPE bapibus1006_address. -DATA: relationships TYPE TABLE OF bapibus1006_relations. -FIELD-SYMBOLS: <relationship> LIKE LINE OF relationships. -DATA: relationship_centraldata TYPE bapibus1006002_central. -DATA: relationship_addresses TYPE TABLE OF bapibus1006002_addresses. -FIELD-SYMBOLS: <relationship_address> LIKE LINE OF relationship_addresses. - -DATA: lt_download TYPE TABLE OF zexcel_s_org_rel. -FIELD-SYMBOLS: <download> LIKE LINE OF lt_download. - -CONSTANTS: gc_save_file_name TYPE string VALUE '11_Export_Org_and_Contact.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -PARAMETERS: md TYPE flag RADIOBUTTON GROUP act. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-00a. -PARAMETERS: partnerc TYPE bu_type DEFAULT 2, " Organizations - postlcod TYPE ad_pstcd1 DEFAULT '8334*', - country TYPE land1 DEFAULT 'DE', - maxsel TYPE bu_maxsel DEFAULT 100. -SELECTION-SCREEN END OF BLOCK a. - -PARAMETERS: rel TYPE flag RADIOBUTTON GROUP act DEFAULT 'X'. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-00b. -PARAMETERS: reltyp TYPE bu_reltyp DEFAULT 'BUR011', - partner TYPE bu_partner DEFAULT '191'. -SELECTION-SCREEN END OF BLOCK b. - -START-OF-SELECTION. - IF md = abap_true. - " Read all Companies by Master Data - central_search-partnercategory = partnerc. - addressdata_search-postl_cod1 = postlcod. - addressdata_search-country = country. - others_search-maxsel = maxsel. - others_search-no_search_for_contactperson = 'X'. - - CALL FUNCTION 'BAPI_BUPA_SEARCH_2' - EXPORTING - centraldata = central_search - addressdata = addressdata_search - OTHERS = others_search - TABLES - searchresult = searchresult - return = return. - - SORT searchresult BY partner. - DELETE ADJACENT DUPLICATES FROM searchresult COMPARING partner. - ELSEIF rel = abap_true. - " Read by Relationship - SELECT but050~partner1 AS partner FROM but050 - INNER JOIN but000 ON but000~partner = but050~partner1 AND but000~type = '2' - INTO CORRESPONDING FIELDS OF TABLE searchresult - WHERE but050~partner2 = partner - AND but050~reltyp = reltyp. - ENDIF. - - DESCRIBE TABLE searchresult LINES lines. - WRITE: / 'Number of search results: ', lines. - - LOOP AT searchresult ASSIGNING <searchresult_line>. - " Read Details of Organization - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - centraldataorganization = centraldataorganization. - " Read Standard Address of Organization - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - addressdata = addressdata. - - " Add Organization to Download - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - " Fill Organization Partner Numbers - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <searchresult_line>-partner - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - CLEAR: addressdata. - - " Read all Relationships - CLEAR: relationships. - CALL FUNCTION 'BAPI_BUPA_RELATIONSHIPS_GET' - EXPORTING - businesspartner = <searchresult_line>-partner - TABLES - relationships = relationships. - DELETE relationships WHERE relationshipcategory <> 'BUR001'. - LOOP AT relationships ASSIGNING <relationship>. - " Read details of Contact person - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - centraldata = centraldata - centraldataperson = centraldataperson. - " Read details of the Relationship - CALL FUNCTION 'BAPI_BUPR_CONTP_GETDETAIL' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - IMPORTING - centraldata = relationship_centraldata. - " Read relationship address - CLEAR: relationship_addresses. - - CALL FUNCTION 'BAPI_BUPR_CONTP_ADDRESSES_GET' - EXPORTING - businesspartner = <relationship>-partner1 - contactperson = <relationship>-partner2 - TABLES - addresses = relationship_addresses. - - READ TABLE relationship_addresses - ASSIGNING <relationship_address> - WITH KEY standardaddress = 'X'. - - IF <relationship_address> IS ASSIGNED. - " Read Relationship Address - CLEAR addressdata. - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = <searchresult_line>-partner - addressguid = <relationship_address>-addressguid - IMPORTING - addressdata = addressdata. - - APPEND INITIAL LINE TO lt_download ASSIGNING <download>. - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner1 - IMPORTING - businesspartnerout = <download>-org_number - businesspartnerguidout = <download>-org_guid. - - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = <relationship>-partner2 - IMPORTING - businesspartnerout = <download>-contpers_number - businesspartnerguidout = <download>-contpers_guid. - - MOVE-CORRESPONDING centraldataorganization TO <download>. - MOVE-CORRESPONDING addressdata TO <download>. - MOVE-CORRESPONDING centraldataperson TO <download>. - MOVE-CORRESPONDING relationship_centraldata TO <download>. - - WRITE: / <relationship>-partner1, <relationship>-partner2. - WRITE: centraldataorganization-name1(20), centraldataorganization-name2(10). - WRITE: centraldataperson-firstname(15), centraldataperson-lastname(15). - WRITE: addressdata-street(25), addressdata-house_no, - addressdata-postl_cod1, addressdata-city(25). - ENDIF. - ENDLOOP. - - ENDLOOP. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_body TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - - DATA: lv_style_body_even_guid TYPE zexcel_cell_style, - lv_style_body_green TYPE zexcel_cell_style. - - DATA: row TYPE zexcel_cell_row. - - DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - - DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings. - - DATA: column TYPE zexcel_cell_column, - column_alpha TYPE zexcel_cell_column_alpha, - value TYPE zexcel_cell_value. - - FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border even - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_yellow. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_even_guid = lo_style_body->get_guid( ). - "Create style with border and green fill - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_green = lo_style_body->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_download ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'ORG_NUMBER'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CONTPERS_NUMBER'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME1'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'NAME2'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'STREET'. - <fs_field_catalog>-position = 5. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'HOUSE_NO'. - <fs_field_catalog>-position = 6. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'POSTL_COD1'. - <fs_field_catalog>-position = 7. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'CITY'. - <fs_field_catalog>-position = 8. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'COUNTRYISO'. - <fs_field_catalog>-position = 9. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FIRSTNAME'. - <fs_field_catalog>-position = 10. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'LASTNAME'. - <fs_field_catalog>-position = 11. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FUNCTIONNAME'. - <fs_field_catalog>-position = 12. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'DEPARTMENTNAME'. - <fs_field_catalog>-position = 13. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_NUMBR'. - <fs_field_catalog>-position = 14. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'TEL1_EXT'. - <fs_field_catalog>-position = 15. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_NUMBER'. - <fs_field_catalog>-position = 16. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'FAX_EXTENS'. - <fs_field_catalog>-position = 17. - <fs_field_catalog>-dynpfld = abap_true. - WHEN 'E_MAIL'. - <fs_field_catalog>-position = 18. - <fs_field_catalog>-dynpfld = abap_true. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = '2'. - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_download - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - LOOP AT lt_download ASSIGNING <download>. - row = sy-tabix + 2. - IF NOT <download>-org_number IS INITIAL - AND <download>-contpers_number IS INITIAL. - " Mark fields of Organization which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'C' - ip_row = row - ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'D' - ip_row = row - ip_style = lv_style_body_green - ). -* CATCH zcx_excel. " Exceptions for ABAP2XLSX - ELSEIF NOT <download>-org_number IS INITIAL - AND NOT <download>-contpers_number IS INITIAL. - " Mark fields of Relationship which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'L' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'M' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'N' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'O' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'P' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'Q' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'R' ip_row = row ip_style = lv_style_body_green - ). - ENDIF. - ENDLOOP. - " Add Fieldnames in first row and hide the row - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog> - WHERE position <> '' AND dynpfld = abap_true. - column = <fs_field_catalog>-position. - column_alpha = zcl_excel_common=>convert_column2alpha( column ). - value = <fs_field_catalog>-fieldname. - lo_worksheet->set_cell( ip_column = column_alpha - ip_row = 1 - ip_value = value - ip_style = lv_style_body_even_guid ). - ENDLOOP. - " Hide first row - row_dimension = lo_worksheet->get_row_dimension( 1 ). - row_dimension->set_visible( abap_false ). - - DATA: highest_column TYPE zexcel_cell_column, - count TYPE int4, - col_alpha TYPE zexcel_cell_column_alpha. - - highest_column = lo_worksheet->get_highest_column( ). - count = 1. - WHILE count <= highest_column. - col_alpha = zcl_excel_common=>convert_column2alpha( ip_column = count ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = col_alpha ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - count = count + 1. - ENDWHILE. -* " Set Column width manuall -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). -* column_dimension->set_width( ip_width = 35 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). -* column_dimension->set_width( ip_width = 18 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). -* column_dimension->set_width( ip_width = 5 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). -* column_dimension->set_width( ip_width = 6 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). -* column_dimension->set_width( ip_width = 3 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'J' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'K' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'L' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'M' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'N' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'O' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'P' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'Q' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'R' ). -* column_dimension->set_width( ip_width = 40 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL12 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel12. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: gc_save_file_name TYPE string VALUE '12_HideSizeOutlineRowsAndColumns.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world in AutoSize column' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Hello world in a column width size 50' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Hello world (hidden column)' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'Outline column level 0' ). - lo_worksheet->set_cell( ip_column = 'G' ip_row = 2 ip_value = 'Outline column level 1' ). - lo_worksheet->set_cell( ip_column = 'H' ip_row = 2 ip_value = 'Outline column level 2' ). - lo_worksheet->set_cell( ip_column = 'I' ip_row = 2 ip_value = 'Small' ). - - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Hello world (hidden row)' ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 5 ip_value = 'Hello world in a row height size 20' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Simple outline rows 10-16 ( collapsed )' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 19 ip_value = '3 Outlines - Outlinelevel 1 is collapsed' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_value = 'One of the two inner outlines is expanded, one collapsed' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_value = 'Inner outline level - expanded' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 24 ip_value = 'Inner outline level - lines 25-28 are collapsed' ). - - lo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. " By default is on - lo_worksheet->zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>c_right_off. " By default is on - - " Column Settings - " Auto size - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - " Manual Width - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_width( ip_width = 50 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_visible( ip_visible = abap_false ). - " Implementation in the Writer is not working yet ===== TODO ===== - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). - column_dimension->set_outline_level( ip_outline_level = 0 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). - column_dimension->set_outline_level( ip_outline_level = 1 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). - column_dimension->set_outline_level( ip_outline_level = 2 ). - - row_dimension = lo_worksheet->get_row_dimension( ip_row = 1 ). - row_dimension->set_visible( ip_visible = abap_false ). - row_dimension = lo_worksheet->get_row_dimension( ip_row = 5 ). - row_dimension->set_row_height( ip_row_height = 20 ). -* obsolete, not intuitive. Use new method shown below -* " Implementation in the Writer is not working yet ===== TODO ===== -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 6 ). -* row_dimension->set_outline_level( ip_outline_level = 0 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 7 ). -* row_dimension->set_outline_level( ip_outline_level = 1 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 8 ). -* row_dimension->set_outline_level( ip_outline_level = 2 ). - -* Define an outline rows 10-16, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 10 - iv_row_to = 16 - iv_collapsed = abap_true ). " collapsed - -* Define an inner outline rows 21-22, expanded when outer outline becomes extended - lo_worksheet->set_row_outline( iv_row_from = 21 - iv_row_to = 22 - iv_collapsed = abap_false ). " expanded - -* Define an inner outline rows 25-28, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 25 - iv_row_to = 28 - iv_collapsed = abap_true ). " collapsed - -* Define an outer outline rows 20-30, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 20 - iv_row_to = 30 - iv_collapsed = abap_true ). " collapsed - -* Hint: the order you create the outlines can be arbitrary -* You can start with inner outlines or with outer outlines - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL13 -*& -*&---------------------------------------------------------------------* -*& Example by: Alvaro "Blag" Tejada Galindo. -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel13. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_bold_border_guid TYPE zexcel_cell_style, - lo_style_bold_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '13_MergedCells.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - - lo_style_bold_border = lo_excel->add_new_style( ). - lo_style_bold_border->font->bold = abap_true. - lo_style_bold_border->font->italic = abap_false. - lo_style_bold_border->font->color-rgb = zcl_excel_style_color=>c_black. - lo_style_bold_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_bold_border->borders->allborders = lo_border_dark. - lv_style_bold_border_guid = lo_style_bold_border->get_guid( ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - - lo_worksheet->set_merge( ip_row = 4 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test also if merge works when oher merged chells are empty - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Tomato' ). - lo_worksheet->set_merge( ip_row = 6 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test the patch provided by Victor Alekhin to merge cells in one column - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 'Merge cells also over multiple rows by Victor Alekhin' ). - lo_worksheet->set_merge( ip_row = 8 ip_column_start = 'B' ip_column_end = 'G' ip_row_to = 10 ). - - " Test the patch provided by Alexander Budeyev with different column merges - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 'Merge cells with different merges by Alexander Budeyev' ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - - " Test merge (issue) - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'B' ip_column_end = 'C' ip_row_to = 15 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'D' ip_column_end = 'D' ip_row_to = 14 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'E' ip_column_end = 'F' ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL14 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel14. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_center TYPE REF TO zcl_excel_style, - lo_style_right TYPE REF TO zcl_excel_style, - lo_style_left TYPE REF TO zcl_excel_style, - lo_style_general TYPE REF TO zcl_excel_style, - lo_style_bottom TYPE REF TO zcl_excel_style, - lo_style_middle TYPE REF TO zcl_excel_style, - lo_style_top TYPE REF TO zcl_excel_style, - lo_style_justify TYPE REF TO zcl_excel_style, - lo_style_mixed TYPE REF TO zcl_excel_style, - lo_style_mixed_wrap TYPE REF TO zcl_excel_style, - lo_style_rotated TYPE REF TO zcl_excel_style, - lo_style_shrink TYPE REF TO zcl_excel_style, - lo_style_indent TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style, - lv_style_right_guid TYPE zexcel_cell_style, - lv_style_left_guid TYPE zexcel_cell_style, - lv_style_general_guid TYPE zexcel_cell_style, - lv_style_bottom_guid TYPE zexcel_cell_style, - lv_style_middle_guid TYPE zexcel_cell_style, - lv_style_top_guid TYPE zexcel_cell_style, - lv_style_justify_guid TYPE zexcel_cell_style, - lv_style_mixed_guid TYPE zexcel_cell_style, - lv_style_mixed_wrap_guid TYPE zexcel_cell_style, - lv_style_rotated_guid TYPE zexcel_cell_style, - lv_style_shrink_guid TYPE zexcel_cell_style, - lv_style_indent_guid TYPE zexcel_cell_style. - -DATA: lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '14_Alignment.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - "Center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lv_style_center_guid = lo_style_center->get_guid( ). - "Right - lo_style_right = lo_excel->add_new_style( ). - lo_style_right->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lv_style_right_guid = lo_style_right->get_guid( ). - "Left - lo_style_left = lo_excel->add_new_style( ). - lo_style_left->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_left. - lv_style_left_guid = lo_style_left->get_guid( ). - "General - lo_style_general = lo_excel->add_new_style( ). - lo_style_general->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_general. - lv_style_general_guid = lo_style_general->get_guid( ). - "Bottom - lo_style_bottom = lo_excel->add_new_style( ). - lo_style_bottom->alignment->vertical = zcl_excel_style_alignment=>c_vertical_bottom. - lv_style_bottom_guid = lo_style_bottom->get_guid( ). - "Middle - lo_style_middle = lo_excel->add_new_style( ). - lo_style_middle->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_middle_guid = lo_style_middle->get_guid( ). - "Top - lo_style_top = lo_excel->add_new_style( ). - lo_style_top->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_top_guid = lo_style_top->get_guid( ). - "Justify - lo_style_justify = lo_excel->add_new_style( ). - lo_style_justify->alignment->vertical = zcl_excel_style_alignment=>c_vertical_justify. - lv_style_justify_guid = lo_style_justify->get_guid( ). - - "Shrink - lo_style_shrink = lo_excel->add_new_style( ). - lo_style_shrink->alignment->shrinktofit = abap_true. - lv_style_shrink_guid = lo_style_shrink->get_guid( ). - - "Indent - lo_style_indent = lo_excel->add_new_style( ). - lo_style_indent->alignment->indent = 5. - lv_style_indent_guid = lo_style_indent->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed_wrap = lo_excel->add_new_style( ). - lo_style_mixed_wrap->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed_wrap->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_mixed_wrap->alignment->wraptext = abap_true. - lv_style_mixed_wrap_guid = lo_style_mixed_wrap->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed = lo_excel->add_new_style( ). - lo_style_mixed->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_mixed_guid = lo_style_mixed->get_guid( ). - - "Center - lo_style_rotated = lo_excel->add_new_style( ). - lo_style_rotated->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_rotated->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_rotated->alignment->textrotation = 165. " -75° == 90° + 75° - lv_style_rotated_guid = lo_style_rotated->get_guid( ). - - - " Set row size for first 7 rows to 40 - DO 7 TIMES. - lo_row_dimension = lo_worksheet->get_row_dimension( sy-index ). - lo_row_dimension->set_row_height( 40 ). - ENDDO. - - "Horizontal alignment - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Centered Text' ip_style = lv_style_center_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Right Text' ip_style = lv_style_right_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Left Text' ip_style = lv_style_left_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'General Text' ip_style = lv_style_general_guid ). - - " Shrink & indent - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'Text shrinked' ip_style = lv_style_shrink_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 'Text indented' ip_style = lv_style_indent_guid ). - - "Vertical alignment - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Bottom Text' ip_style = lv_style_bottom_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Middle Text' ip_style = lv_style_middle_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Top Text' ip_style = lv_style_top_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 'Justify Text' ip_style = lv_style_justify_guid ). - - " Wrapped - lo_worksheet->set_cell( ip_row = 10 ip_column = 'B' - ip_value = 'This is a wrapped text centered in the middle' - ip_style = lv_style_mixed_wrap_guid ). - - " Rotated - lo_worksheet->set_cell( ip_row = 10 ip_column = 'D' - ip_value = 'This is a centered text rotated by -75°' - ip_style = lv_style_rotated_guid ). - - " forced line break - DATA: lv_value TYPE string. - CONCATENATE 'This is a wrapped text centered in the middle' cl_abap_char_utilities=>cr_lf - 'and a manuall line break.' INTO lv_value. - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' - ip_value = lv_value - ip_style = lv_style_mixed_guid ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL15 -*& -*&---------------------------------------------------------------------* -*& 2010-10-30, Gregor Wolf: -*& Added the functionality to ouput the read table content -*& 2011-12-19, Shahrin Shahrulzaman: -*& Added the functionality to have multiple input and output files -*&---------------------------------------------------------------------* - -REPORT zdemo_excel15. - -TYPE-POOLS: abap. - -TYPES: - BEGIN OF t_demo_excel15, - input TYPE string, - END OF t_demo_excel15. - -DATA: excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - reader TYPE REF TO zif_excel_reader. - -DATA: ex TYPE REF TO zcx_excel, - msg TYPE string. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_workdir TYPE string, - output_file_path TYPE string, - input_file_path TYPE string, - lv_file_separator TYPE c. - -DATA: worksheet TYPE REF TO zcl_excel_worksheet, - highest_column TYPE zexcel_cell_column, - highest_row TYPE int4, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha, - row TYPE int4 VALUE 1, - value TYPE zexcel_cell_value. - -DATA: - lt_files TYPE TABLE OF t_demo_excel15. -FIELD-SYMBOLS: <wa_files> TYPE t_demo_excel15. - -PARAMETERS: p_path TYPE zexcel_export_dir, - p_noout TYPE xfeld DEFAULT abap_true. - - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '01_HelloWorld.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '02_Styles.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '03_iTab.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '04_Sheets.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '08_Range.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '13_MergedCells.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. - <wa_files>-input = '31_AutosizeWithDifferentFontSizes.xlsx'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - - LOOP AT lt_files ASSIGNING <wa_files>. - CONCATENATE p_path lv_file_separator <wa_files>-input INTO input_file_path. - CONCATENATE p_path lv_file_separator '15_' <wa_files>-input INTO output_file_path. - REPLACE '.xlsx' IN output_file_path WITH 'FromReader.xlsx'. - - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( input_file_path ). - - IF p_noout EQ abap_false. - worksheet = excel->get_active_worksheet( ). - highest_column = worksheet->get_highest_column( ). - highest_row = worksheet->get_highest_row( ). - - WRITE: 'Highest column: ', highest_column, 'Highest row: ', highest_row. - WRITE: /. - - WHILE row <= highest_row. - WHILE column <= highest_column. - col_str = zcl_excel_common=>convert_column2alpha( column ). - worksheet->get_cell( - EXPORTING - ip_column = col_str - ip_row = row - IMPORTING - ep_value = value - ). - WRITE: value. - column = column + 1. - ENDWHILE. - WRITE: /. - column = 1. - row = row + 1. - ENDWHILE. - ENDIF. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = output_file_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - CATCH zcx_excel INTO ex. " Exceptions for ABAP2XLSX - msg = ex->get_text( ). - WRITE: / msg. - ENDTRY. - ENDLOOP. - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel16. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - - -DATA: ls_io TYPE skwf_io. - -CONSTANTS: gc_save_file_name TYPE string VALUE '16_Drawings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_objid TYPE sdok_docid DEFAULT '456694429165174BE10000000A1550C0', " Question mark in standard Web Dynpro WDT_QUIZ - p_class TYPE sdok_class DEFAULT 'M_IMAGE_P', - pobjtype TYPE skwf_ioty DEFAULT 'P'. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i, - lv_content TYPE xstring, - ls_key TYPE wwwdatatab. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = 'c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp' - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. -* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno -* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = lv_content - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Image from web repository (SMW0)' ). - - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 3 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Image from a file (c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 9 - ip_from_col = 'B' ). - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_bmp - ip_width = 83 - ip_height = 160 ). - - lo_worksheet->add_drawing( lo_drawing ). - - ls_io-objid = p_objid. - ls_io-class = p_class. - ls_io-objtype = pobjtype. - IF ls_io IS NOT INITIAL. - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_value = 'Mime repository (by default Question mark in standard Web Dynpro WDT_QUIZ)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 19 - ip_from_col = 'B' ). - lo_drawing->set_media_mime( ip_io = ls_io - ip_width = 126 - ip_height = 145 ). - - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL17 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel17. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_protection TYPE REF TO zcl_excel_style, - lv_style_protection_guid TYPE zexcel_cell_style, - lo_style TYPE REF TO zcl_excel_style, - lv_style TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '17_SheetProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_pwd TYPE zexcel_aes_password LOWER CASE DEFAULT 'secret'. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. -* lo_worksheet->zif_excel_sheet_protection~password = 'DAA7'. "it is the encoded word "secret" - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( p_pwd ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - " First style to unlock a cell - lo_style_protection = lo_excel->add_new_style( ). - lo_style_protection->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - lv_style_protection_guid = lo_style_protection->get_guid( ). - " Another style which should not affect the unlock style - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFCC3333'. - lv_style = lo_style->get_guid( ). - lo_worksheet->set_cell( ip_row = 3 ip_column = 'C' ip_value = 'This cell is locked locked and has the second formating' ip_style = lv_style ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL18 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel18. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_protection_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '18_BookProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_excel->zif_excel_book_protection~protected = zif_excel_book_protection=>c_protected. - lo_excel->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_locked. - - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL19 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel19. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '19_SetActiveSheet.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_noout TYPE xfeld DEFAULT abap_true. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " First Worksheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'First' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 1' ). - - " Second Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Second' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 2' ). - - " Third Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Third' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 3' ). - - IF p_noout EQ abap_false. - " lo_excel->set_active_sheet_index_by_name( data_sheet_name ). - DATA: active_sheet_index TYPE zexcel_active_worksheet. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index before: ', active_sheet_index. - ENDIF. - lo_excel->set_active_sheet_index( '2' ). - IF p_noout EQ abap_false. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index after: ', active_sheet_index. - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel2. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style, - lv_style_gr_cornerlb_guid TYPE zexcel_cell_style, - lv_style_gr_cornerlt_guid TYPE zexcel_cell_style, - lv_style_gr_cornerrb_guid TYPE zexcel_cell_style, - lv_style_gr_cornerrt_guid TYPE zexcel_cell_style, - lv_style_gr_horizontal90_guid TYPE zexcel_cell_style, - lv_style_gr_horizontal270_guid TYPE zexcel_cell_style, - lv_style_gr_horizontalb_guid TYPE zexcel_cell_style, - lv_style_gr_vertical_guid TYPE zexcel_cell_style, - lv_style_gr_vertical2_guid TYPE zexcel_cell_style, - lv_style_gr_fromcenter_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal45_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal45b_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal135_guid TYPE zexcel_cell_style, - lv_style_gr_diagonal135b_guid TYPE zexcel_cell_style . - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. -DATA: lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. - -CONSTANTS: gc_save_file_name TYPE string VALUE '02_Styles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled with gradients - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerlb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerlt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerrb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_cornerrt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal90. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontal90_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal270. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontal270_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontalb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_horizontalb_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_vertical_guid = lo_style_filled->get_guid( ). - - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_vertical2_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_fromcenter. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_fromcenter_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal45_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal45b_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal135_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_gr_diagonal135b_guid = lo_style_filled->get_guid( ). - - - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_style = lv_style_gr_cornerlb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 10 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 11 ip_style = lv_style_gr_cornerlt_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 11 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 12 ip_style = lv_style_gr_cornerrb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 12 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 13 ip_style = lv_style_gr_cornerrt_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 13 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 14 ip_style = lv_style_gr_horizontal90_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal90 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 14 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 15 ip_style = lv_style_gr_horizontal270_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal270 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 15 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 16 ip_style = lv_style_gr_horizontalb_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontalb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 16 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 17 ip_style = lv_style_gr_vertical_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 17 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_style = lv_style_gr_vertical2_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 18 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_style = lv_style_gr_fromcenter_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_fromcenter ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 19 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_style = lv_style_gr_diagonal45_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 20 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 21 ip_style = lv_style_gr_diagonal45b_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 21 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 22 ip_style = lv_style_gr_diagonal135_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 22 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 23 ip_style = lv_style_gr_diagonal135b_guid ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 23 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - - - -* CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -* lv_file = lo_excel_writer->write_file( lo_excel ). -* -* " Convert to binary -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = lv_file -* IMPORTING -* output_length = lv_bytecount -* TABLES -* binary_tab = lt_file_tab. -** " This method is only available on AS ABAP > 6.40 -** lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -** lv_bytecount = xstrlen( lv_file ). -* -* " Save the file -* cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount -* filename = lv_full_path -* filetype = 'BIN' -* CHANGING data_tab = lt_file_tab ). - - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL20 -* Demo for method zcl_excel_worksheet-bind_alv: -* export data from ALV (CL_GUI_ALV_GRID) object to excel -*--------------------------------------------------------------------* -REPORT zdemo_excel20. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_alv TYPE REF TO cl_gui_alv_grid, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook, - gt_listheader TYPE slis_t_listheader, - wa_listheader LIKE LINE OF gt_listheader. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '20_BindAlv.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 10 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - IF sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - -* export file to save file path - - PERFORM export_to_excel. - - ENDIF. -ENDFORM. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel. - -* create zcl_excel_worksheet object - - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - -* get ALV object from screen - - CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' - IMPORTING - e_grid = lo_alv. - -* build list header - - wa_listheader-typ = 'H'. - wa_listheader-info = sy-title. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'S'. - wa_listheader-info = 'Created by: ABAP2XLSX Group'. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'A'. - wa_listheader-info = - 'Project hosting at https://cw.sdn.sap.com/cw/groups/abap2xlsx'. - APPEND wa_listheader TO gt_listheader. - -* write to excel using method Bin_ALV - - lo_worksheet->bind_alv_ole2( - EXPORTING -* I_DOCUMENT_URL = SPACE " excel template -* I_XLS = 'X' " create in xls format? - i_save_path = l_path - io_alv = lo_alv - it_listheader = gt_listheader - i_top = 2 - i_left = 1 -* I_COLUMNS_HEADER = 'X' -* I_COLUMNS_AUTOFIT = 'X' -* I_FORMAT_COL_HEADER = -* I_FORMAT_SUBTOTAL = -* I_FORMAT_TOTAL = - EXCEPTIONS - miss_guide = 1 - ex_transfer_kkblo_error = 2 - fatal_error = 3 - inv_data_range = 4 - dim_mismatch_vkey = 5 - dim_mismatch_sema = 6 - error_in_sema = 7 - OTHERS = 8 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - -ENDFORM. "EXPORT_TO_EXCEL - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL21 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel21. - -TYPES: - BEGIN OF t_color_style, - color TYPE zexcel_style_color_argb, - style TYPE zexcel_cell_style, - END OF t_color_style. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_filled TYPE REF TO zcl_excel_style. - -DATA: color_styles TYPE TABLE OF t_color_style. - -FIELD-SYMBOLS: <color_style> LIKE LINE OF color_styles. - -CONSTANTS: max TYPE i VALUE 255, - step TYPE i VALUE 51. - -DATA: red TYPE i, - green TYPE i, - blue TYPE i, - red_hex(1) TYPE x, - green_hex(1) TYPE x, - blue_hex(1) TYPE x, - red_str TYPE string, - green_str TYPE string, - blue_str TYPE string. - -DATA: color TYPE zexcel_style_color_argb, - tint TYPE zexcel_style_color_tint. - -DATA: row TYPE i, - row_tmp TYPE i, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha. - -CONSTANTS: gc_save_file_name TYPE string VALUE '21_BackgroundColorPicker.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - WHILE red <= max. - green = 0. - WHILE green <= max. - blue = 0. - WHILE blue <= max. - red_hex = red. - red_str = red_hex. - green_hex = green. - green_str = green_hex. - blue_hex = blue. - blue_str = blue_hex. - " Create filled - CONCATENATE 'FF' red_str green_str blue_str INTO color. - APPEND INITIAL LINE TO color_styles ASSIGNING <color_style>. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = color. - <color_style>-color = color. - <color_style>-style = lo_style_filled->get_guid( ). - blue = blue + step. - ENDWHILE. - green = green + step. - ENDWHILE. - red = red + step. - ENDWHILE. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Color Picker' ). - LOOP AT color_styles ASSIGNING <color_style>. - row_tmp = ( max / step + 1 ) * 3. - IF row = row_tmp. - row = 0. - column = column + 1. - ENDIF. - row = row + 1. - col_str = zcl_excel_common=>convert_column2alpha( column ). - - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = col_str - ip_row = row - ip_value = <color_style>-color - ip_style = <color_style>-style ). - ENDLOOP. - - row = row + 2. - tint = '-0.5'. - DO 10 TIMES. - column = 1. - DO 10 TIMES. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = sy-index - 1. - lo_style_filled->fill->fgcolor-tint = tint. - <color_style>-style = lo_style_filled->get_guid( ). - col_str = zcl_excel_common=>convert_column2alpha( column ). - lo_worksheet->set_cell_style( ip_column = col_str - ip_row = row - ip_style = <color_style>-style ). - - ADD 1 TO column. - ENDDO. - ADD '0.1' TO tint. - ADD 1 TO row. - ENDDO. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL22 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel22. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style, - lo_style_date TYPE REF TO zcl_excel_style, - lo_style_editable TYPE REF TO zcl_excel_style, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_table_settings_out TYPE zexcel_s_table_settings. - -DATA: lv_style_guid TYPE zexcel_cell_style. - -DATA: lv_row TYPE char10. - -FIELD-SYMBOLS: <fs_field_catalog> TYPE zexcel_s_fieldcatalog. - -CONSTANTS: gc_save_file_name TYPE string VALUE '22_itab_fieldcatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'PN_MASSIVE'). - - DATA lt_test TYPE TABLE OF sflight. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - - " sheet style (white background) - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lv_style_guid = lo_style->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_guid ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( 'test' ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - - " Create cell style for display only fields - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_text. - - " Create cell style for display only date field - lo_style_date = lo_excel->add_new_style( ). - lo_style_date->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_date->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style_date->number_format->format_code = zcl_excel_style_number_format=>c_format_date_ddmmyyyy. - - " Create cell style for editable fields - lo_style_editable = lo_excel->add_new_style( ). - lo_style_editable->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING <fs_field_catalog>. - CASE <fs_field_catalog>-fieldname. - WHEN 'CARRID'. - <fs_field_catalog>-position = 3. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'CONNID'. - <fs_field_catalog>-position = 1. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style->get_guid( ). - WHEN 'FLDATE'. - <fs_field_catalog>-position = 2. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_date->get_guid( ). - WHEN 'PRICE'. - <fs_field_catalog>-position = 4. - <fs_field_catalog>-dynpfld = abap_true. - <fs_field_catalog>-style = lo_style_editable->get_guid( ). - <fs_field_catalog>-totals_function = zcl_excel_table=>totals_function_sum. - WHEN OTHERS. - <fs_field_catalog>-dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( EXPORTING - ip_table = lt_test - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - IMPORTING - es_table_settings = ls_table_settings_out ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lv_row = ls_table_settings_out-top_left_row. - CONDENSE lv_row. - CONCATENATE 'ISNUMBER(' ls_table_settings_out-top_left_column lv_row ')' INTO lo_data_validation->formula1. - lo_data_validation->cell_row = ls_table_settings_out-top_left_row. - lo_data_validation->cell_column = ls_table_settings_out-top_left_column. - lo_data_validation->cell_row_to = ls_table_settings_out-bottom_right_row. - lo_data_validation->cell_column_to = ls_table_settings_out-bottom_right_column. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel23. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '23_Sheets_with_and_without_grid_lines.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet with grid lines and print centered horizontal & vertical' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet with grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 160. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_PAGELAYOUTVIEW = 200. - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the third sheet without grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_false ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the fourth sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 170. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_SHEETLAYOUTVIEW = 150. - - " Fourth sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the fourth sheet with grid lines and print centered ONLY horizontal' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->ZIF_EXCEL_SHEET_PROPERTIES~ZOOMSCALE_NORMAL = 150. - -" lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel24. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lv_value TYPE string. - -CONSTANTS: gc_save_file_name TYPE string VALUE '24_Sheets_with_different_default_date_formats.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Default Date Format' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!A1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmdd ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYYMMDD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " TODO: It seems that the zcl_excel_style_number_format=>c_format_date_yyyymmddslash - " does not produce a valid output - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmddslash ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYY/MM/DD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Current Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = sy-datum ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the 4th sheet' ip_hyperlink = lo_hyperlink ). - - " 4th sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " Illustrate the Problem caused by: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year. - " http://support.microsoft.com/kb/214326/en-us - lo_worksheet->set_title( ip_title = 'Sheet4' ). - " Loop from Start Date to the Max Date current data in daily steps - CONSTANTS: lv_max type d VALUE '19000302'. - - DATA: lv_date TYPE d VALUE '19000226', - lv_row TYPE i. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Formated date' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Integer value for this date' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'Date as string' ). - - lv_row = 4. - WHILE lv_date < lv_max. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_row ip_value = lv_date ). - lv_value = zcl_excel_common=>date_to_excel_string( lv_date ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_row ip_value = lv_value ). - lv_value = lv_date. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_row ip_value = lv_value ). - lv_date = lv_date + 1. - lv_row = lv_row + 1. - ENDWHILE. - - lv_row = lv_row + 1. - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_row ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL25 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel25. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_exception TYPE REF TO cx_root. - -DATA: lv_file TYPE xstring. - -CONSTANTS: lv_file_name TYPE string VALUE '25_HelloWorld.xlsx'. -DATA: lv_default_file_name TYPE string. -DATA: lv_error TYPE string. - -CALL FUNCTION 'FILE_GET_NAME_USING_PATH' - EXPORTING - logical_path = 'LOCAL_TEMPORARY_FILES' " Logical path' - file_name = lv_file_name " File name - IMPORTING - file_name_with_path = lv_default_file_name. " File name with path -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->set_title( ip_title = 'Sheet1' ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - -CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -lv_file = lo_excel_writer->write_file( lo_excel ). - -TRY. - OPEN DATASET lv_default_file_name FOR OUTPUT IN BINARY MODE. - TRANSFER lv_file TO lv_default_file_name. - CLOSE DATASET lv_default_file_name. - CATCH cx_root INTO lo_exception. - lv_error = lo_exception->get_text( ). - MESSAGE lv_error TYPE 'I'. -ENDTRY. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL26 -* Demo for method zcl_excel_worksheet-bind_object: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -report zdemo_excel26. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events definition. - public section. - methods: - on_user_command for event added_function of cl_salv_events - importing e_salv_function. -endclass. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class lcl_handle_events implementation. - method on_user_command. - perform user_command." using e_salv_function text-i08. - endmethod. "on_user_command -endclass. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -data: lo_excel type ref to zcl_excel, - lo_worksheet type ref to zcl_excel_worksheet, - lo_salv type ref to cl_salv_table, - gr_events type ref to lcl_handle_events, - lr_events type ref to cl_salv_events_table, - gt_sbook type table of sbook. - -data: l_path type string, " local dir - lv_workdir type string, - lv_file_separator type c. - -constants: - lv_default_file_name type string value '26_Bind_ALV.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -start-of-selection. - -* get data -* ------------------------------------------ - - select * - into table gt_sbook[] - from sbook "#EC CI_NOWHERE - up to 10 rows. - -* Display ALV -* ------------------------------------------ - - try. - cl_salv_table=>factory( - exporting - list_display = abap_false - importing - r_salv_table = lo_salv - changing - t_table = gt_sbook[] ). - catch cx_salv_msg . - endtry. - - try. - lo_salv->set_screen_status( - exporting - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - catch cx_salv_msg . - endtry. - - lr_events = lo_salv->get_event( ). - create object gr_events. - set handler gr_events->on_user_command for lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -form user_command . - if sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( changing sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - exporting initial_folder = l_path - changing selected_folder = l_path ). - - if l_path is initial. - cl_gui_frontend_services=>get_sapgui_workdir( - changing sapworkdir = lv_workdir ). - l_path = lv_workdir. - endif. - - cl_gui_frontend_services=>get_file_separator( - changing file_separator = lv_file_separator ). - - concatenate l_path lv_file_separator lv_default_file_name - into l_path. - -* export file to save file path - perform export_to_excel. - - endif. -endform. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -form export_to_excel. - data: lo_converter type ref to zcl_excel_converter. -* create zcl_excel_worksheet object - - create object lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object - try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). - catch zcx_excel . - endtry. - - perform write_file. - -endform. "EXPORT_TO_EXCEL -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -form write_file . - data: lt_file type solix_tab, - l_bytecount type i, - l_file type xstring. - - data: lo_excel_writer type ref to zif_excel_writer. - - data: ls_seoclass type seoclass. - - create object lo_excel_writer type zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - select single * into ls_seoclass - from seoclass - where clsname = 'CL_BCS_CONVERT'. - - if sy-subrc = 0. - call method (ls_seoclass-clsname)=>xstring_to_solix - exporting - iv_xstring = l_file - receiving - et_solix = lt_file. - - l_bytecount = xstrlen( l_file ). - else. - " Convert to binary - call function 'SCMS_XSTRING_TO_BINARY' - exporting - buffer = l_file - importing - output_length = l_bytecount - tables - binary_tab = lt_file. - endif. - - cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - changing data_tab = lt_file ). - -endform. " WRITE_FILE - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL27 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel27. - -CONSTANTS: c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_1 TYPE REF TO zcl_excel_style, - lo_style_2 TYPE REF TO zcl_excel_style, - lv_style_1_guid TYPE zexcel_cell_style, - lv_style_2_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis. - - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '27_ConditionalFormatting.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - lo_style_1 = lo_excel->add_new_style( ). - lo_style_1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_1->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_1_guid = lo_style_1->get_guid( ). - - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_2->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_2_guid = lo_style_2->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = 'Select a value' ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Anchovy"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_1_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '"Carp"'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_2_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL28 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel28. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_file_name TYPE string, - lv_file_path TYPE string, - lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '28_HelloWorld.csv'. - -PARAMETERS: p_path TYPE string. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = p_path - CHANGING selected_folder = p_path ). - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_width( 11 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_csv. - zcl_excel_writer_csv=>set_delimiter( ip_value = cl_abap_char_utilities=>horizontal_tab ). - zcl_excel_writer_csv=>set_enclosure( ip_value = '''' ). - zcl_excel_writer_csv=>set_endofline( ip_value = cl_abap_char_utilities=>cr_lf ). - - zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). -* zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet2' ). - - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - REPLACE FIRST OCCURRENCE OF '.csv' IN lv_full_path WITH '_Sheet2.csv'. - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - -* zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). - zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet1' ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE FIRST OCCURRENCE OF '_Sheet2.csv' IN lv_full_path WITH '_Sheet1.csv'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL26 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel29. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_excel_reader TYPE REF TO zif_excel_reader. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_filename TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -PARAMETERS: p_path TYPE zexcel_export_dir OBLIGATORY. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - DATA: lt_filetable TYPE filetable, - lv_rc TYPE i. - - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - CALL METHOD cl_gui_frontend_services=>file_open_dialog - EXPORTING - window_title = 'Select Macro-Enabled Workbook template' - default_extension = '*.xlsm' - file_filter = 'Excel Macro-Enabled Workbook (*.xlsm)|*.xlsm' - initial_directory = lv_workdir - CHANGING - file_table = lt_filetable - rc = lv_rc - EXCEPTIONS - file_open_dialog_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - OTHERS = 5. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - READ TABLE lt_filetable INTO lv_filename INDEX 1. - p_path = lv_filename. - -START-OF-SELECTION. - - lv_full_path = p_path. - - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_xlsm. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_xlsm. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE '.xlsm' IN lv_full_path WITH 'FromReader.xlsm'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel3. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - -DATA: ls_table_settings TYPE zexcel_s_table_settings. - - -DATA: lv_title TYPE zexcel_sheet_title, - lt_carr TYPE TABLE OF scarr, - row TYPE zexcel_cell_row VALUE 2, - lo_range TYPE REF TO zcl_excel_range. -DATA: lo_data_validation TYPE REF TO zcl_excel_data_validation. -FIELD-SYMBOLS: <carr> LIKE LINE OF lt_carr. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '03_iTab.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_empty TYPE flag. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - DATA lt_test TYPE TABLE OF sflight. - - IF p_empty <> abap_true. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - ENDIF. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - ls_table_settings-nofilters = abap_true. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). "make date field a bit wider - column_dimension->set_width( ip_width = 11 ). - " Add another table for data validations - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = c_airlines ). - SELECT * FROM scarr INTO TABLE lt_carr. "#EC CI_NOWHERE - LOOP AT lt_carr ASSIGNING <carr>. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = <carr>-carrid ). - row = row + 1. - ENDLOOP. - row = row - 1. - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_airlines. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 2 - ip_stop_column = 'A' - ip_stop_row = row ). - " Set Data Validation - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_airlines. - lo_data_validation->cell_row = 4. - lo_data_validation->cell_column = 'C'. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel30. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: lv_value TYPE string, - lv_count TYPE i VALUE 10, - lv_packed TYPE p LENGTH 16 DECIMALS 1 VALUE '1234567890.5'. - -CONSTANTS: lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string, - lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed, - lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num, - lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date, - lc_typekind_s_ls TYPE string VALUE 's_leading_blanks'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '30_CellDataTypes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Cell data types' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Number as String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = '11' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = ' String with leading spaces' - ip_data_type = lc_typekind_s_ls ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = ' Negative Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.01-' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = '0 %' - ip_abap_type = lc_typekind_num ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = 'Date' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = '20110831' - ip_abap_type = lc_typekind_date ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.02' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %' - ip_abap_type = lc_typekind_num ). - - WHILE lv_count <= 15. - lv_value = lv_count. - CONCATENATE 'Positive Value with' lv_value 'Digits' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_packed ). - CONCATENATE 'Positive Value with' lv_value 'Digits formated as string' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_string ). - lv_packed = lv_packed * 10. - lv_count = lv_count + 1. - ENDWHILE. - - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). - column_dimension->set_auto_size( abap_true ). - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel31. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. - - -DATA: fieldval TYPE text80, - row TYPE i, - style_column_a TYPE REF TO zcl_excel_style, - style_column_a_guid TYPE zexcel_cell_style, - style_column_b TYPE REF TO zcl_excel_style, - style_column_b_guid TYPE zexcel_cell_style, - style_column_c TYPE REF TO zcl_excel_style, - style_column_c_guid TYPE zexcel_cell_style, - style_font TYPE REF TO zcl_excel_style_font. - -CONSTANTS: gc_save_file_name TYPE string VALUE '31_AutosizeWithDifferentFontSizes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - " Use active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Regular Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a_guid = style_column_a->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c_guid = style_column_c->get_guid( ). - - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Bold Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->bold = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->bold = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->bold = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Italic Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->italic = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->italic = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->italic = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Add sheet for merged cells - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Merged cells' ). - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'This is a very long header text' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = 'Some data' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Some more data' ). - - lo_worksheet->set_merge( - EXPORTING - ip_column_start = 'A' - ip_column_end = 'C' - ip_row = 1 ). - - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - - lo_excel->set_active_sheet_index( i_active_worksheet = 1 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL32 -* Demo for export options from ALV GRID: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -REPORT zdemo_excel32. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '32_Export_ALV.xlsx', - lv_default_file_name2 TYPE string VALUE '32_Export_Convert.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 100 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - - -* export file to save file path - CASE sy-ucomm. - WHEN 'EXCELBIND'. - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - PERFORM export_to_excel_bind. - - WHEN 'EXCELCONV'. - - CONCATENATE l_path lv_file_separator lv_default_file_name2 - INTO l_path. - PERFORM export_to_excel_conv. - - ENDCASE. -ENDFORM. " USER_COMMAND -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_CONV -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_conv. - DATA: lo_converter TYPE REF TO zcl_excel_converter. - - CREATE OBJECT lo_converter. -*TRY. - lo_converter->convert( - EXPORTING - io_alv = lo_salv - it_table = gt_sbook - i_row_int = 2 - i_column_int = 2 -* i_table = -* i_style_table = -* io_worksheet = -* CHANGING -* co_excel = - ). -* CATCH zcx_excel . -*ENDTRY. - lo_converter->write_file( i_path = l_path ). - -ENDFORM. "EXPORT_TO_EXCEL_CONV - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_BIND -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_bind. -* create zcl_excel_worksheet object - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object -*try. - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). -* catch zcx_excel . -*endtry. - - - PERFORM write_file. - -ENDFORM. "EXPORT_TO_EXCEL_BIND -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -FORM write_file . - DATA: lt_file TYPE solix_tab, - l_bytecount TYPE i, - l_file TYPE xstring. - - DATA: lo_excel_writer TYPE REF TO zif_excel_writer. - - DATA: ls_seoclass TYPE seoclass. - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_BCS_CONVERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>xstring_to_solix - EXPORTING - iv_xstring = l_file - RECEIVING - et_solix = lt_file. - - l_bytecount = XSTRLEN( l_file ). - ELSE. - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = l_file - IMPORTING - output_length = l_bytecount - TABLES - binary_tab = lt_file. - ENDIF. - - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - CHANGING data_tab = lt_file ). - -ENDFORM. " WRITE_FILE - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel33. - -TYPE-POOLS: abap. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_converter TYPE REF TO zcl_excel_converter, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - -DATA lt_test TYPE TABLE OF t005t. - -DATA: l_cell_value TYPE zexcel_cell_value, - ls_area TYPE zexcel_s_autofilter_area. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '33_autofilter.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table'). - - SELECT * UP TO 2 ROWS FROM t005t INTO TABLE lt_test. "#EC CI_NOWHERE - - CREATE OBJECT lo_converter. - - lo_converter->convert( EXPORTING - it_table = lt_test - i_row_int = 1 - i_column_int = 1 - io_worksheet = lo_worksheet - CHANGING - co_excel = lo_excel ) . - - lo_autofilter = lo_excel->add_new_autofilter( io_sheet = lo_worksheet ) . - - ls_area-row_start = 1. - ls_area-col_start = 1. - ls_area-row_end = lo_worksheet->get_highest_row( ). - ls_area-col_end = lo_worksheet->get_highest_column( ). - - lo_autofilter->set_filter_area( is_area = ls_area ). - - lo_worksheet->get_cell( EXPORTING - ip_column = 'C' - ip_row = 2 - IMPORTING - ep_value = l_cell_value ). - lo_autofilter->set_value( i_column = 3 - i_value = l_cell_value ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel34. - -CONSTANTS: width TYPE f VALUE '10.14'. -CONSTANTS: height TYPE f VALUE '57.75'. - -DATA: current_row TYPE i, - col TYPE i, - col_alpha TYPE zexcel_cell_column_alpha, - row TYPE i, - row_board TYPE i, - colorflag TYPE i, - color TYPE zexcel_style_color_argb, - - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - - writing1 TYPE string, - writing2 TYPE string. - - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -CONSTANTS: gc_save_file_name TYPE string VALUE '34_Static Styles_Chess.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Spassky_vs_Bronstein' ). - -* Header - current_row = 1. - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'White' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Spassky, Boris V -- wins in turn 23' ). - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'Black' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Bronstein, David I' ). - - ADD 1 TO current_row. -* Set size of column + Writing above chessboard - DO 8 TIMES. - - writing1 = zcl_excel_common=>convert_column2alpha( sy-index ). - writing2 = sy-index . - row = current_row + sy-index. - - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - -* Set size of column - column_dimension = lo_worksheet->get_column_dimension( col_alpha ). - column_dimension->set_width( width ). - -* Set size of row - row_dimension = lo_worksheet->get_row_dimension( row ). - row_dimension->set_row_height( height ). - -* Set writing on chessboard - lo_worksheet->set_cell( ip_row = row - ip_column = 'A' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'A' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = 'J' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'J' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - - row = current_row + 9. - lo_worksheet->set_cell( ip_row = current_row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = current_row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'J' ). - column_dimension->set_auto_size( abap_true ). - -* Set win-position - CONSTANTS: c_pawn TYPE string VALUE 'Pawn'. - CONSTANTS: c_rook TYPE string VALUE 'Rook'. - CONSTANTS: c_knight TYPE string VALUE 'Knight'. - CONSTANTS: c_bishop TYPE string VALUE 'Bishop'. - CONSTANTS: c_queen TYPE string VALUE 'Queen'. - CONSTANTS: c_king TYPE string VALUE 'King'. - - row = current_row + 1. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_knight ). - row = current_row + 2. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_king ). - row = current_row + 3. - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 4. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_knight ). - row = current_row + 5. - lo_worksheet->set_cell( ip_row = row ip_column = 'E' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - row = current_row + 6. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_bishop ). - row = current_row + 7. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 8. - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_king ). - -* Set Chessboard - DO 8 TIMES. - IF sy-index <= 3. " Black - color = zcl_excel_style_color=>c_black. - ELSE. - color = zcl_excel_style_color=>c_white. - ENDIF. - row_board = sy-index. - row = current_row + sy-index. - DO 8 TIMES. - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - TRY. -* Borders around outer limits - IF row_board = 1. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_top_style = zcl_excel_style_border=>c_border_thick - ip_borders_top_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF row_board = 8. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_down_style = zcl_excel_style_border=>c_border_thick - ip_borders_down_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 2. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_left_style = zcl_excel_style_border=>c_border_thick - ip_borders_left_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 9. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_right_style = zcl_excel_style_border=>c_border_thick - ip_borders_right_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. -* Style for writing - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_font_color_rgb = color - ip_font_bold = 'X' - ip_font_size = 16 - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid ). -* Color of field - colorflag = ( row + col ) MOD 2. - IF colorflag = 0. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFB5866A' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - ELSE. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFF5DEBF' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - ENDIF. - - - - CATCH zcx_excel . - ENDTRY. - - ENDDO. - ENDDO. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel35. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '35_Static_Styles.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>GET_DESKTOP_DIRECTORY( CHANGING DESKTOP_DIRECTORY = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - sy-title = 'ZDEMO_EXCEL2;Issue 139: Change cellstyle retroactivly'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - -* Demonstrate how to retroactivly change the cellstyle -*Filled text and underlinded text - lo_worksheet->change_cell_style( ip_column = 'B' - ip_row = 5 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - lo_worksheet->change_cell_style( ip_column = 'D' - ip_row = 4 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL36 -REPORT zdemo_excel36. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - col TYPE i. - -DATA: lo_style_arial20 TYPE REF TO zcl_excel_style, - lo_style_times11 TYPE REF TO zcl_excel_style, - lo_style_cambria8red TYPE REF TO zcl_excel_style. - -DATA: lv_style_arial20_guid TYPE zexcel_cell_style, - lv_style_times11_guid TYPE zexcel_cell_style, - lv_style_cambria8red_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '36_DefaultStyles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create a bold / italic style - lo_style_arial20 = lo_excel->add_new_style( ). - lo_style_arial20->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_arial20->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_arial20->font->size = 20. - lv_style_arial20_guid = lo_style_arial20->get_guid( ). - - lo_style_times11 = lo_excel->add_new_style( ). - lo_style_times11->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_times11->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_times11->font->size = 11. - lv_style_times11_guid = lo_style_times11->get_guid( ). - - lo_style_cambria8red = lo_excel->add_new_style( ). - lo_style_cambria8red->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_cambria8red->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_cambria8red->font->size = 8. - lo_style_cambria8red->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_cambria8red_guid = lo_style_cambria8red->get_guid( ). - - lo_excel->set_default_style( lv_style_arial20_guid ). " Default for all new worksheets - -* 1st sheet - do not change anything --> defaultstyle from lo_excel should apply - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Style for complete document' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 2nd sheet - defaultstyle for this sheet set explicitly ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for this sheet' ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Times New Roman, fontsize 11' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because this style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'thus the default style from zcl_excel does not apply to this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 3rd sheet - defaultstyle for columns ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for 3 columns' ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'F' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'The columns B,C and F are set to Times New Roman' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 10 ip_value = 'All other cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 11 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 12 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - - lo_worksheet->set_cell( ip_column = 8 ip_row = 1 ip_value = 'Of course' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 2 ip_value = 'setting a specific style to a cell' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 3 ip_value = 'takes precedence over all defaults' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 4 ip_value = 'Here: Cambria 8 in red' ip_style = lv_style_cambria8red_guid ). - - -* Set entry into each of the first 10 columns - DO 20 TIMES. - col = sy-index. - CASE col. - WHEN 2 " B - OR 3 " C - OR 6." F - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Times 11' ). - WHEN OTHERS. - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Arial 20' ). - ENDCASE. - ENDDO. - - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - - - lo_excel->set_active_sheet_index( 1 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - - - - - - - - - - - - REPORT zdemo_excel37. - -DATA: excel TYPE REF TO zcl_excel, - reader TYPE REF TO zif_excel_reader, - go_error TYPE REF TO cx_root, - gv_memid_gr8 TYPE text255, - gv_message TYPE string, - lv_extension TYPE string, - gv_error_program_name TYPE syrepid, - gv_error_include_name TYPE syrepid, - gv_error_line TYPE i. - -DATA: gc_save_file_name TYPE string VALUE '37- Read template and output.&'. - -SELECTION-SCREEN BEGIN OF BLOCK blx WITH FRAME. -PARAMETERS: p_upfile TYPE string LOWER CASE MEMORY ID gr8. -SELECTION-SCREEN END OF BLOCK blx. - -INCLUDE zdemo_excel_outputopt_incl. - -SELECTION-SCREEN BEGIN OF BLOCK cls WITH FRAME TITLE text-cls. -PARAMETERS: lb_read TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -PARAMETERS: lb_write TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -SELECTION-SCREEN END OF BLOCK cls. - -SELECTION-SCREEN BEGIN OF BLOCK bl_err WITH FRAME TITLE text-err. -PARAMETERS: cb_errl AS CHECKBOX DEFAULT 'X'. -SELECTION-SCREEN BEGIN OF LINE. -PARAMETERS: cb_dump AS CHECKBOX DEFAULT space. -SELECTION-SCREEN COMMENT (60) cmt_dump FOR FIELD cb_dump. -SELECTION-SCREEN END OF LINE. -SELECTION-SCREEN END OF BLOCK bl_err. - -INITIALIZATION. - PERFORM setup_listboxes. - cmt_dump = text-dum. - GET PARAMETER ID 'GR8' FIELD gv_memid_gr8. - p_upfile = gv_memid_gr8. - - IF p_upfile IS INITIAL. - p_upfile = 'c:\temp\whatever.xlsx'. - ENDIF. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile. - PERFORM f4_p_upfile CHANGING p_upfile. - - -START-OF-SELECTION. - IF cb_dump IS INITIAL. - TRY. - PERFORM read_template. - PERFORM write_template. -*** Create output - CATCH cx_root INTO go_error. - MESSAGE 'Error reading excelfile' TYPE 'I'. - gv_message = go_error->get_text( ). - IF cb_errl = ' '. - IF gv_message IS NOT INITIAL. - MESSAGE gv_message TYPE 'I'. - ENDIF. - ELSE. - go_error->get_source_position( IMPORTING program_name = gv_error_program_name - include_name = gv_error_include_name - source_line = gv_error_line ). - WRITE:/ 'Errormessage:' ,gv_message. - WRITE:/ 'Errorposition:', - AT /10 'Program:' ,gv_error_program_name, - AT /10 'include_name:' ,gv_error_include_name, - AT /10 'source_line:' ,gv_error_line. - ENDIF. - ENDTRY. - ELSE. " This will dump if an error occurs. In some cases the information given in cx_root is not helpful - this will show exactly where the problem is - PERFORM read_template. - PERFORM write_template. - ENDIF. - - - -*&---------------------------------------------------------------------* -*& Form F4_P_UPFILE -*&---------------------------------------------------------------------* -FORM f4_p_upfile CHANGING p_upfile TYPE string. - - DATA: lv_repid TYPE syrepid, - lt_fields TYPE dynpread_tabtype, - ls_field LIKE LINE OF lt_fields, - lt_files TYPE filetable, - lv_file_filter TYPE string. - - lv_repid = sy-repid. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = lv_repid - dynumb = '1000' - request = 'A' - TABLES - dynpfields = lt_fields - EXCEPTIONS - invalid_abapworkarea = 01 - invalid_dynprofield = 02 - invalid_dynproname = 03 - invalid_dynpronummer = 04 - invalid_request = 05 - no_fielddescription = 06 - undefind_error = 07. - READ TABLE lt_fields INTO ls_field WITH KEY fieldname = 'P_UPFILE'. - p_upfile = ls_field-fieldvalue. - - lv_file_filter = 'Excel Files (*.XLSX;*.XLSM)|*.XLSX;*.XLSM'. - cl_gui_frontend_services=>file_open_dialog( EXPORTING - default_filename = p_upfile - file_filter = lv_file_filter - CHANGING - file_table = lt_files - rc = sy-tabix - EXCEPTIONS - OTHERS = 1 ). - READ TABLE lt_files INDEX 1 INTO p_upfile. - -ENDFORM. " F4_P_UPFILE - - -*&---------------------------------------------------------------------* -*& Form SETUP_LISTBOXES -*&---------------------------------------------------------------------* -FORM setup_listboxes . - - DATA: lv_id TYPE vrm_id, - lt_values TYPE vrm_values, - lt_implementing_classes TYPE seo_relkeys. - - FIELD-SYMBOLS: <ls_implementing_class> LIKE LINE OF lt_implementing_classes, - <ls_value> LIKE LINE OF lt_values. - -*--------------------------------------------------------------------* -* Possible READER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_READ'. - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = 'Autodetect'(001). - <ls_value>-text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_READER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING <ls_implementing_class>. - - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = <ls_implementing_class>-clsname. - <ls_value>-text = <ls_implementing_class>-clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -*--------------------------------------------------------------------* -* Possible WRITER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_WRITE'. - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = 'Autodetect'(001). - <ls_value>-text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_WRITER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING <ls_implementing_class>. - - APPEND INITIAL LINE TO lt_values ASSIGNING <ls_value>. - <ls_value>-key = <ls_implementing_class>-clsname. - <ls_value>-text = <ls_implementing_class>-clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -ENDFORM. " SETUP_LISTBOXES - - -*&---------------------------------------------------------------------* -*& Form GET_IMPLEMENTING_CLASSDS -*&---------------------------------------------------------------------* -FORM get_implementing_classds USING iv_interface_name TYPE clike - CHANGING ct_implementing_classes TYPE seo_relkeys. - - DATA: lo_oo_interface TYPE REF TO cl_oo_interface, - lo_oo_class TYPE REF TO cl_oo_class, - lt_implementing_subclasses TYPE seo_relkeys. - - FIELD-SYMBOLS: <ls_implementing_class> LIKE LINE OF ct_implementing_classes. - - TRY. - lo_oo_interface ?= cl_oo_interface=>get_instance( iv_interface_name ). - CATCH cx_class_not_existent. - RETURN. - ENDTRY. - ct_implementing_classes = lo_oo_interface->get_implementing_classes( ). - - LOOP AT ct_implementing_classes ASSIGNING <ls_implementing_class>. - TRY. - lo_oo_class ?= cl_oo_class=>get_instance( <ls_implementing_class>-clsname ). - lt_implementing_subclasses = lo_oo_class->get_subclasses( ). - APPEND LINES OF lt_implementing_subclasses TO ct_implementing_classes. - CATCH cx_class_not_existent. - ENDTRY. - ENDLOOP. - - -ENDFORM. " GET_IMPLEMENTING_CLASSDS - - -*&---------------------------------------------------------------------* -*& Form READ_TEMPLATE -*&---------------------------------------------------------------------* -FORM read_template RAISING zcx_excel . - - CASE lb_read. - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - WHEN '.XLSM'. - CREATE OBJECT reader TYPE zcl_excel_reader_xlsm. - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - CREATE OBJECT reader TYPE (lb_read). - excel = reader->load_file( p_upfile ). - "Use template for charts - excel->use_template = abap_true. - - ENDCASE. - -ENDFORM. " READ_TEMPLATE - - -*&---------------------------------------------------------------------* -*& Form WRITE_TEMPLATE -*&---------------------------------------------------------------------* -FORM write_template RAISING zcx_excel. - - CASE lb_write. - - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - REPLACE '&' IN gc_save_file_name WITH 'xlsx'. " Pass extension for standard writer - lcl_output=>output( excel ). - - WHEN '.XLSM'. - REPLACE '&' IN gc_save_file_name WITH 'xlsm'. " Pass extension for macro-writer - lcl_output=>output( cl_excel = excel - iv_writerclass_name = 'ZCL_EXCEL_WRITER_XLSM' ). - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - lcl_output=>output( cl_excel = excel - iv_writerclass_name = lb_write ). - ENDCASE. - -ENDFORM. " WRITE_TEMPLATE - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_drawing TYPE REF TO zcl_excel_drawing. - -TYPES: BEGIN OF gty_icon, -* name TYPE icon_name, "Fix #228 - name TYPE iconname, "Fix #228 - objid TYPE w3objid, - END OF gty_icon, - gtyt_icon TYPE STANDARD TABLE OF gty_icon WITH NON-UNIQUE DEFAULT KEY. - -DATA: lt_icon TYPE gtyt_icon, - lv_row TYPE sytabix, - ls_wwwdatatab TYPE wwwdatatab, - lt_mimedata TYPE STANDARD TABLE OF w3mime WITH NON-UNIQUE DEFAULT KEY, - lv_xstring TYPE xstring. - -FIELD-SYMBOLS: <icon> LIKE LINE OF lt_icon, - <mimedata> LIKE LINE OF lt_mimedata. - -CONSTANTS: gc_save_file_name TYPE string VALUE '38_SAP-Icons.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -TABLES: icon. -SELECT-OPTIONS: s_icon FOR icon-name DEFAULT 'ICON_LED_*' OPTION CP. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Icons' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - lo_column_dimension->set_auto_size( 'X' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( 'X' ). - -* Get all icons - SELECT name - INTO TABLE lt_icon - FROM icon - WHERE name IN s_icon - ORDER BY name. - LOOP AT lt_icon ASSIGNING <icon>. - - lv_row = sy-tabix. -*--------------------------------------------------------------------* -* Set name of icon -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'A' - ip_value = <icon>-name ). -*--------------------------------------------------------------------* -* Check whether the mime-repository holds some icondata for us -*--------------------------------------------------------------------* - -* Get key - SELECT SINGLE objid - INTO <icon>-objid - FROM wwwdata - WHERE text = <icon>-name. - CHECK sy-subrc = 0. " :o( - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'B' - ip_value = <icon>-objid ). - -* Load mimedata - CLEAR lt_mimedata. - CLEAR ls_wwwdatatab. - ls_wwwdatatab-relid = 'MI' . - ls_wwwdatatab-objid = <icon>-objid. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_wwwdatatab - TABLES - mime = lt_mimedata - EXCEPTIONS - wrong_object_type = 1 - import_error = 2 - OTHERS = 3. - CHECK sy-subrc = 0. " :o( - - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = lv_row - ip_from_col = 'C' ). - CLEAR lv_xstring. - LOOP AT lt_mimedata ASSIGNING <mimedata>. - CONCATENATE lv_xstring <mimedata>-line INTO lv_xstring IN BYTE MODE. - ENDLOOP. - - lo_drawing->set_media( ip_media = lv_xstring - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = 16 - ip_height = 14 ). - lo_worksheet->add_drawing( lo_drawing ). - - ENDLOOP. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel39. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - -DATA lv_value TYPE i. - -DATA: ls_io TYPE skwf_io. - -DATA: ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location. - -DATA lo_bar1 TYPE REF TO zcl_excel_graph_bars. -DATA lo_bar2 TYPE REF TO zcl_excel_graph_bars. -DATA lo_pie TYPE REF TO zcl_excel_graph_pie. -DATA lo_line TYPE REF TO zcl_excel_graph_line. - -CONSTANTS: gc_save_file_name TYPE string VALUE '39_Charts.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Create a pie chart and series - CREATE OBJECT lo_pie. - - CALL METHOD lo_pie->create_serie - EXPORTING - ip_order = 0 - ip_sheet = 'Values' - ip_lbl_from_col = 'B' - ip_lbl_from_row = '1' - ip_lbl_to_col = 'B' - ip_lbl_to_row = '3' - ip_ref_from_col = 'A' - ip_ref_from_row = '1' - ip_ref_to_col = 'A' - ip_ref_to_row = '3' - ip_sername = 'My serie 1'. - - " Set style - lo_pie->set_style( zcl_excel_graph=>c_style_15 ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar1. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set style - lo_bar1->set_style( zcl_excel_graph=>c_style_default ). - - " Set label to none - lo_bar1->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar2. - - CALL METHOD lo_bar2->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_yes - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set layout - lo_bar2->set_show_legend_key( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_values( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_cat_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_ser_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_percent( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_varycolor( zcl_excel_graph_bars=>c_show_true ). - - " Create a line chart, series and axes - CREATE OBJECT lo_line. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 0 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 1 - ip_symbol = zcl_excel_graph_line=>c_symbol_none - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 2 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$F$1:$F$3' - ip_ref = 'Values!$E$1:$E$3' - ip_sername = 'My serie 3'. - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - - - - - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet (Pie sheet) - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'PieChart' ). - - " Create global drawing, set type as pie chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART PIE' ). - lo_drawing->graph = lo_pie. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_pie. - - "Set chart position (anchor 2 cells) - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart1 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart1' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 2 SERIES' ). - lo_drawing->graph = lo_bar1. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 11. - ls_lower-row = 22. - ls_lower-col = 21. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart2 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart2' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 1 SERIE' ). - lo_drawing->graph = lo_bar2. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " LineChart sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'LineChart' ). - - " Create global drawing, set type as line chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART LINES' ). - lo_drawing->graph = lo_line. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_line. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " Values sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for chart - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = lv_value ). - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = lv_value ). - lv_value = -1. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'One (Minus)' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = lv_value ). - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'F' ip_row = 3 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 1 ip_value = 'Three' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL4 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - - lv_tabcolor TYPE zexcel_s_tabcolor, - - ls_header TYPE zexcel_s_worksheet_head_foot, - ls_footer TYPE zexcel_s_worksheet_head_foot. - -CONSTANTS: gc_save_file_name TYPE string VALUE '04_Sheets.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). -* Set color to tab with sheetname - Red - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = 'FF' - ip_green = '00' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to second sheet' ip_hyperlink = lo_hyperlink ). - - " Page printing settings - lo_worksheet->sheet_setup->set_page_margins( ip_header = '1' ip_footer = '1' ip_unit = 'cm' ). - lo_worksheet->sheet_setup->black_and_white = 'X'. - lo_worksheet->sheet_setup->fit_to_page = 'X'. " you should turn this on to activate fit_to_height and fit_to_width - lo_worksheet->sheet_setup->fit_to_height = 0. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->fit_to_width = 2. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lo_worksheet->sheet_setup->page_order = zcl_excel_sheet_setup=>c_ord_downthenover. - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->scale = 80. " used only if ip_fit_to_page = SPACE - - " Header and Footer - ls_header-right_value = 'print date &D'. - ls_header-right_font-size = 8. - ls_header-right_font-name = zcl_excel_style_font=>c_name_arial. - - ls_footer-left_value = '&Z&F'. "Path / Filename - ls_footer-left_font = ls_header-right_font. - ls_footer-right_value = 'page &P of &N'. "page x of y - ls_footer-right_font = ls_header-right_font. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). -* Set color to tab with sheetname - Green - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to first sheet' ip_hyperlink = lo_hyperlink ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Sheet3 is hidden' ). - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). -* Set color to tab with sheetname - Blue - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = '00' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). -* Set color to tab with sheetname - other color - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Cell B3 has value 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 0 ). - lo_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_hidezero. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - REPORT. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_row TYPE zexcel_cell_row, - lv_col TYPE i, - lv_row_char TYPE char10, - lv_value TYPE string, - ls_fontcolor TYPE zexcel_style_color_argb. - -CONSTANTS: gc_save_file_name TYPE string VALUE '40_Printsettings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Printsettings' ). - -*--------------------------------------------------------------------* -* Prepare sheet with trivial data -* - first 4 columns will have fontocolor set -* - first 3 rows will have fontcolor set -* These marked cells will be used for repeatable rows/columns on printpages -*--------------------------------------------------------------------* - DO 100 TIMES. " Rows - - lv_row = sy-index . - WRITE lv_row TO lv_row_char. - - DO 20 TIMES. - - lv_col = sy-index - 1. - CONCATENATE sy-abcde+lv_col(1) lv_row_char INTO lv_value. - lv_col = sy-index. - lo_worksheet->set_cell( ip_row = lv_row - ip_column = lv_col - ip_value = lv_value ). - - TRY. - IF lv_row <= 3. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid - ip_fill_fgcolor_rgb = zcl_excel_style_color=>c_yellow ). - ENDIF. - IF lv_col <= 4. - lo_worksheet->change_cell_style( ip_column = lv_col - ip_row = lv_row - ip_font_color_rgb = zcl_excel_style_color=>c_red ). - ENDIF. - CATCH zcx_excel . - ENDTRY. - - ENDDO. - - - - ENDDO. - - -*--------------------------------------------------------------------* -* Printsettings -*--------------------------------------------------------------------* - TRY. - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = 'A' - iv_columns_to = 'D' ). - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = 1 - iv_rows_to = 3 ). - CATCH zcx_excel . - ENDTRY. - - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - - - - - - - PROCESS BEFORE OUTPUT. - MODULE STATUS_9000. - -PROCESS AFTER INPUT. - MODULE USER_COMMAND_9000 AT EXIT-COMMAND. - MODULE USER_COMMAND_9000. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REPORT. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'ABAP2XLSX Inheritance.xlsx'. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL1 -* Variation of ZCL_EXCEL that creates numerous sheets -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel1 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor IMPORTING iv_sheetcount TYPE i DEFAULT 5. -ENDCLASS. - -CLASS lcl_my_zcl_excel1 IMPLEMENTATION. - METHOD constructor. - DATA: lv_sheets_to_create TYPE i. - super->constructor( ). - lv_sheets_to_create = iv_sheetcount - 1. " one gets created by standard class - DO lv_sheets_to_create TIMES. - TRY. - me->add_new_worksheet( ). - CATCH zcx_excel. - ENDTRY. - ENDDO. - me->set_active_sheet_index( 1 ). - - ENDMETHOD. -ENDCLASS. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL_WORKSHEET -* Variation of ZCL_EXCEL_WORKSHEET ( and ZCL_EXCEL that calls the new type of worksheet ) -* that sets a fixed title -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel2 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet DEFINITION INHERITING FROM zcl_excel_worksheet. - PUBLIC SECTION. - METHODS: constructor IMPORTING ip_excel TYPE REF TO zcl_excel - ip_title TYPE zexcel_sheet_title OPTIONAL " Will be ignored - keep parameter for demonstration purpose - RAISING zcx_excel. -ENDCLASS. - -CLASS lcl_my_zcl_excel2 IMPLEMENTATION. - METHOD constructor. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet. - - super->constructor( ). - -* To use own worksheet we have to remove the standard worksheet - lo_worksheet = get_active_worksheet( ). - me->worksheets->remove( lo_worksheet ). -* and replace it with own version - CREATE OBJECT lo_worksheet TYPE lcl_my_zcl_excel_worksheet - EXPORTING - ip_excel = me - ip_title = 'This title will be ignored'. - me->worksheets->add( lo_worksheet ). - - ENDMETHOD. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet IMPLEMENTATION. - METHOD constructor. - super->constructor( ip_excel = ip_excel - ip_title = 'Inherited Worksheet' ). - - ENDMETHOD. -ENDCLASS. - -DATA: go_excel1 TYPE REF TO lcl_my_zcl_excel1. -DATA: go_excel2 TYPE REF TO lcl_my_zcl_excel2. - - -SELECTION-SCREEN BEGIN OF BLOCK bli WITH FRAME TITLE text-bli. -PARAMETERS: rbi_1 RADIOBUTTON GROUP rbi DEFAULT 'X' , " Simple inheritance - rbi_2 RADIOBUTTON GROUP rbi. -SELECTION-SCREEN END OF BLOCK bli. - -INCLUDE zdemo_excel_outputopt_incl. - -END-OF-SELECTION. - - CASE 'X'. - - WHEN rbi_1. " Simple inheritance of zcl_excel, object created directly - CREATE OBJECT go_excel1 - EXPORTING - iv_sheetcount = 5. - lcl_output=>output( go_excel1 ). - - WHEN rbi_2. " Inheritance of zcl_excel_worksheet, inheritance of zcl_excel needed to allow this - CREATE OBJECT go_excel2. - lcl_output=>output( go_excel2 ). - - - ENDCASE. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL5 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel5. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset TYPE zexcel_conditional_iconset. - - - -CONSTANTS: gc_save_file_name TYPE string VALUE '05_Conditional.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '33'. - ls_iconset-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '66'. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - ls_iconset-showvalue = zcl_excel_style_conditional=>c_showvalue_false. - lo_style_conditional->mode_iconset = ls_iconset. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 500 ). - - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL6 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel6. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_row TYPE syindex, - lv_formula TYPE string. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '06_Formulas.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -*--------------------------------------------------------------------* -* Get some testdata -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = -10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - -*--------------------------------------------------------------------* -* Demonstrate using formulas -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_formula = 'SUM(C4:C8)' ). - - -*--------------------------------------------------------------------* -* Demonstrate standard EXCEL-behaviour when copying a formula to another cell -* by calculating the resulting formula to put into another cell -*--------------------------------------------------------------------* - DO 10 TIMES. - - lv_formula = zcl_excel_common=>shift_formula( iv_reference_formula = 'SUM(C4:C8)' - iv_shift_cols = 0 " Offset in Columns - here we copy in same column --> 0 - iv_shift_rows = sy-index ). " Offset in Row - here we copy downward --> sy-index - lv_row = 9 + sy-index. " Absolute row = sy-index rows below reference cell - lo_worksheet->set_cell( ip_row = lv_row ip_column = 'C' ip_formula = lv_formula ). - - ENDDO. - -*--------------------------------------------------------------------* -*** Create output -*--------------------------------------------------------------------* - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL7 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel7. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - -DATA: ls_iconset3 TYPE zexcel_conditional_iconset, - ls_iconset4 TYPE zexcel_conditional_iconset, - ls_iconset5 TYPE zexcel_conditional_iconset, - ls_databar TYPE zexcel_conditional_databar, - ls_colorscale2 TYPE zexcel_conditional_colorscale, - ls_colorscale3 TYPE zexcel_conditional_colorscale. - -CONSTANTS: gc_save_file_name TYPE string VALUE '07_ConditionalAll.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - ls_iconset3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo1_value = '0'. - ls_iconset3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo2_value = '33'. - ls_iconset3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset3-cfvo3_value = '66'. - ls_iconset3-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset4-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo1_value = '0'. - ls_iconset4-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo2_value = '25'. - ls_iconset4-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo3_value = '50'. - ls_iconset4-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset4-cfvo4_value = '75'. - ls_iconset4-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_iconset5-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo1_value = '0'. - ls_iconset5-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo2_value = '20'. - ls_iconset5-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo3_value = '40'. - ls_iconset5-cfvo4_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo4_value = '60'. - ls_iconset5-cfvo5_type = zcl_excel_style_conditional=>c_cfvo_type_percent. - ls_iconset5-cfvo5_value = '80'. - ls_iconset5-showvalue = zcl_excel_style_conditional=>c_showvalue_true. - - ls_databar-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_databar-cfvo1_value = '0'. - ls_databar-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_databar-cfvo2_value = '0'. - ls_databar-colorrgb = 'FF638EC6'. - - ls_colorscale2-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale2-cfvo1_value = '0'. - ls_colorscale2-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale2-cfvo2_value = '50'. - ls_colorscale2-colorrgb1 = 'FFF8696B'. - ls_colorscale2-colorrgb2 = 'FF63BE7B'. - - ls_colorscale3-cfvo1_type = zcl_excel_style_conditional=>c_cfvo_type_min. - ls_colorscale3-cfvo1_value = '0'. - ls_colorscale3-cfvo2_type = zcl_excel_style_conditional=>c_cfvo_type_percentile. - ls_colorscale3-cfvo2_value = '50'. - ls_colorscale3-cfvo3_type = zcl_excel_style_conditional=>c_cfvo_type_max. - ls_colorscale3-cfvo3_value = '0'. - ls_colorscale3-colorrgb1 = 'FFF8696B'. - ls_colorscale3-colorrgb2 = 'FFFFEB84'. - ls_colorscale3-colorrgb3 = 'FF63BE7B'. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -* ICONSET - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrows. - - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 5 - ip_stop_column = 'B' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'C_ICONSET_3ARROWS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 5 - ip_stop_column = 'C' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'C_ICONSET_3ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = 50 ). - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3flags. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 5 - ip_stop_column = 'D' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'C_ICONSET_3FLAGS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 5 - ip_stop_column = 'E' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'C_ICONSET_3TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 5 - ip_stop_column = 'F' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'C_ICONSET_3TRAFFICLIGHTS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3signs. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'G' - ip_start_row = 5 - ip_stop_column = 'G' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = 'C_ICONSET_3SIGNS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'G' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'G' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'G' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'G' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'G' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'H' - ip_start_row = 5 - ip_stop_column = 'H' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'H' ip_value = 'C_ICONSET_3SYMBOLS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'H' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'H' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'H' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'H' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'H' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset3-iconset = zcl_excel_style_conditional=>c_iconset_3symbols2. - lo_style_conditional->mode_iconset = ls_iconset3. - lo_style_conditional->set_range( ip_start_column = 'I' - ip_start_row = 5 - ip_stop_column = 'I' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'I' ip_value = 'C_ICONSET_3SYMBOLS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'I' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'I' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'I' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'I' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'I' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrows. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 12 - ip_stop_column = 'B' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = 'C_ICONSET_4ARROWS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 12 - ip_stop_column = 'C' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'C' ip_value = 'C_ICONSET_4ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4redtoblack. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 12 - ip_stop_column = 'D' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'D' ip_value = 'C_ICONSET_4REDTOBLACK' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4rating. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 12 - ip_stop_column = 'E' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'E' ip_value = 'C_ICONSET_4RATING' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'E' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset4-iconset = zcl_excel_style_conditional=>c_iconset_4trafficlights. - lo_style_conditional->mode_iconset = ls_iconset4. - lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 12 - ip_stop_column = 'F' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'F' ip_value = 'C_ICONSET_4TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'F' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrows. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 19 - ip_stop_column = 'B' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'B' ip_value = 'C_ICONSET_5ARROWS' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5arrowsgray. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 19 - ip_stop_column = 'C' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'C' ip_value = 'C_ICONSET_5ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5rating. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 19 - ip_stop_column = 'D' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'D' ip_value = 'C_ICONSET_5RATING' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. - lo_style_conditional->priority = 1. - ls_iconset5-iconset = zcl_excel_style_conditional=>c_iconset_5quarters. - lo_style_conditional->mode_iconset = ls_iconset5. - lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 19 - ip_stop_column = 'E' - ip_stop_row = 23 ). - -* DATABAR - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'B' ip_value = 'DATABAR' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'B' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_databar. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_databar = ls_databar. - lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 26 - ip_stop_column = 'B' - ip_stop_row = 30 ). - -* COLORSCALE - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'C' ip_value = 'COLORSCALE 2 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'C' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 26 - ip_stop_column = 'C' - ip_stop_row = 30 ). - - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'D' ip_value = 'COLORSCALE 3 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'D' ip_value = 50 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_colorscale. - lo_style_conditional->priority = 1. - lo_style_conditional->mode_colorscale = ls_colorscale3. - lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 26 - ip_stop_column = 'D' - ip_stop_row = 30 ). - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL8 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel8. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range. - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '08_Range.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Sheet1'. - lo_worksheet->set_title( lv_title ). - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'range'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - " Define another Range with a name longer than 40 characters that - " tests the fix of issue #168 ranges namescan be only up to 20 chars - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'A_range_with_a_name_that_is_longer_than_20_characters'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Range Value 1' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Range Value 2' ). - - " issue #163 - " Define another Range with sheet visibility - lo_range = lo_worksheet->add_new_range( ). - lo_range->name = 'A_range_with_sheet_visibility'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'Range Value 3' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 'Range Value 4' ). - " issue #163 - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL9 -*& -*&---------------------------------------------------------------------* -*& abap2xlsx Demo: Data validations -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel9. - -CONSTANTS: c_fruits TYPE string VALUE 'Fruits', - c_vegetables TYPE string VALUE 'Vegetables', - c_meat TYPE string VALUE 'Meat', - c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: row TYPE zexcel_cell_row. - - -DATA: lv_title TYPE zexcel_sheet_title. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '09_DataValidation.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_sbook TYPE flag. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = c_meat ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Pork' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Beef' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Chicken' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'Turkey' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_meat. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'B' - ip_start_row = 4 - ip_stop_column = 'B' - ip_stop_row = 7 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fruits. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = c_vegetables ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Cucumber' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Sweet pepper ' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Lettuce' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_vegetables. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 6 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Table with Data Validation'. - lo_worksheet->set_title( lv_title ). - - " Maximum Text length - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'Validate Maximum Text length of <= 10 in Cell A2:' ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'abcdefghij' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_textlength. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_lessthanorequal. - lo_data_validation->formula1 = 10. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'A'. - - " Integer Value between 1 and 10 - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Validate Integer Value between 1 and 10 in Cell A5:' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = '5' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_whole. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_between. - lo_data_validation->formula1 = 1. - lo_data_validation->formula2 = 10. - lo_data_validation->prompttitle = 'Range'. - lo_data_validation->prompt = 'Enter a value between 1 and 10'. - lo_data_validation->errortitle = 'Error'. - lo_data_validation->error = 'You have entered a wrong value. Please use only numbers between 1 and 10.'. - lo_data_validation->cell_row = 5. - lo_data_validation->cell_column = 'A'. - - " Evaluation by Formula from issue #161 - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Validate if B8 contains a "-":' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Text' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = '-' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lo_data_validation->formula1 = '"IF(B8<>"""";INDIRECT(LEFT(B8;SEARCH(""-"";B8;1)));EMPTY)"'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'A'. - - " There was an error when data validation was combined with cell merges this should test that: - lo_worksheet->set_cell( ip_row = 10 ip_column = 'A' ip_value = 'Demo for data validation with a dropdown list' ). - lo_worksheet->set_merge( ip_row = 10 ip_column_start = 'A' ip_column_end = 'F' ). - - " Headlines - lo_worksheet->set_cell( ip_row = 11 ip_column = 'A' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = c_vegetables ). - - row = 12. - WHILE row < 20. " Starting with 14500 the data validation is dropped 14000 are still ok - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fruits. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'A'. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = 'Select a value' ). - " 2nd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_vegetables. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'B'. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = 'Select a value' ). - " 3rd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_meat. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = 'Select a value' ). - " 4th - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'D'. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = 'Select a value' ). - " Increment row - row = row + 1. - ENDWHILE. - - IF p_sbook = abap_true. - DATA: bookings type TABLE OF sbook. - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'SBOOK'. - lo_worksheet->set_title( lv_title ). - - SELECT * from sbook INTO TABLE bookings UP TO 4000 ROWS. - - lo_worksheet->bind_table( - EXPORTING - ip_table = bookings -* it_field_catalog = " Table binding field catalog -* is_table_settings = " Excel table binding settings -* IMPORTING -* es_table_settings = " Excel table binding settings - ). - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - *&---------------------------------------------------------------------* -*& Include ZDEMO_EXCEL_OUTPUTOPT_INCL -*&---------------------------------------------------------------------* -CLASS lcl_output DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: - output IMPORTING cl_excel TYPE REF TO zcl_excel - iv_writerclass_name TYPE clike OPTIONAL, - f4_path RETURNING VALUE(selected_folder) TYPE string, - parametertexts. - - PRIVATE SECTION. - METHODS: - download_frontend, - download_backend, - display_online, - send_email. - - DATA: xdata TYPE xstring, " Will be used for sending as email - t_rawdata TYPE solix_tab, " Will be used for downloading or open directly - bytecount TYPE i. " Will be used for downloading or open directly -ENDCLASS. "lcl_output DEFINITION - - -SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE txt_bl1. -PARAMETERS: rb_down RADIOBUTTON GROUP rb1 USER-COMMAND space. - -PARAMETERS: rb_back RADIOBUTTON GROUP rb1. - -PARAMETERS: rb_show RADIOBUTTON GROUP rb1 DEFAULT 'X' . - -PARAMETERS: rb_send RADIOBUTTON GROUP rb1. - -PARAMETERS: p_path TYPE string LOWER CASE MODIF ID pat. -PARAMETERS: p_email TYPE string LOWER CASE MODIF ID ema OBLIGATORY DEFAULT 'insert_your_emailadress@here'. -PARAMETERS: p_backfn TYPE text40 NO-DISPLAY. -SELECTION-SCREEN END OF BLOCK bl1. - - -AT SELECTION-SCREEN OUTPUT. - LOOP AT SCREEN. - - IF rb_down IS INITIAL AND screen-group1 = 'PAT'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - IF rb_send IS INITIAL AND screen-group1 = 'EMA'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - MODIFY SCREEN. - - ENDLOOP. - -INITIALIZATION. - IF sy-batch IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = p_path ). - cl_gui_cfw=>flush( ). - ENDIF. - lcl_output=>parametertexts( ). " If started in language w/o textelements translated set defaults - sy-title = gc_save_file_name. - txt_bl1 = 'Output options'(bl1). - p_backfn = gc_save_file_name. " Use as default if nothing else is supplied by submit - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - p_path = lcl_output=>f4_path( ). - - -*----------------------------------------------------------------------* -* CLASS lcl_output IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_output IMPLEMENTATION. - METHOD output. - - DATA: cl_output TYPE REF TO lcl_output, - cl_writer TYPE REF TO zif_excel_writer. - - IF iv_writerclass_name IS INITIAL. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. - ELSE. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE (iv_writerclass_name). - ENDIF. - cl_output->xdata = cl_writer->write_file( cl_excel ). - -* After 6.40 via cl_bcs_convert - cl_output->t_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstring = cl_output->xdata ). - cl_output->bytecount = xstrlen( cl_output->xdata ). - -* before 6.40 -* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' -* EXPORTING -* buffer = cl_output->xdata -* IMPORTING -* output_length = cl_output->bytecount -* TABLES -* binary_tab = cl_output->t_rawdata. - - CASE 'X'. - WHEN rb_down. - IF sy-batch IS INITIAL. - cl_output->download_frontend( ). - ELSE. - MESSAGE e001(00) WITH 'Frontenddownload impossible in background processing'. - ENDIF. - - WHEN rb_back. - cl_output->download_backend( ). - - WHEN rb_show. - IF sy-batch IS INITIAL. - cl_output->display_online( ). - ELSE. - MESSAGE e001(00) WITH 'Online display absurd in background processing'. - ENDIF. - - WHEN rb_send. - cl_output->send_email( ). - - ENDCASE. - ENDMETHOD. "output - - METHOD f4_path. - DATA: new_path TYPE string, - repid TYPE syrepid, - dynnr TYPE sydynnr, - lt_dynpfields TYPE TABLE OF dynpread, - ls_dynpfields LIKE LINE OF lt_dynpfields. - -* Get current value - dynnr = sy-dynnr. - repid = sy-repid. - ls_dynpfields-fieldname = 'P_PATH'. - APPEND ls_dynpfields TO lt_dynpfields. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = repid - dynumb = dynnr - TABLES - dynpfields = lt_dynpfields - EXCEPTIONS - invalid_abapworkarea = 1 - invalid_dynprofield = 2 - invalid_dynproname = 3 - invalid_dynpronummer = 4 - invalid_request = 5 - no_fielddescription = 6 - invalid_parameter = 7 - undefind_error = 8 - double_conversion = 9 - stepl_not_found = 10 - OTHERS = 11. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - EXIT. - ENDIF. - - READ TABLE lt_dynpfields INTO ls_dynpfields INDEX 1. - - new_path = ls_dynpfields-fieldvalue. - selected_folder = new_path. - - cl_gui_frontend_services=>directory_browse( - EXPORTING - window_title = 'Select path to download EXCEL-file' - initial_folder = new_path - CHANGING - selected_folder = new_path - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4 - ). - cl_gui_cfw=>flush( ). - CHECK new_path IS NOT INITIAL. - selected_folder = new_path. - - ENDMETHOD. "f4_path - - METHOD parametertexts. -* If started in language w/o textelements translated set defaults -* Furthermore I don't have to change the selectiontexts of all demoreports. - DEFINE default_parametertext. - if %_&1_%_app_%-text = '&1' or - %_&1_%_app_%-text is initial. - %_&1_%_app_%-text = &2. - endif. - END-OF-DEFINITION. - - default_parametertext: rb_down 'Save to frontend', - rb_back 'Save to backend', - rb_show 'Direct display', - rb_send 'Send via email', - - p_path 'Frontend-path to download to', - p_email 'Email to send xlsx to'. - - ENDMETHOD. "parametertexts - - METHOD: download_frontend. - DATA: filename TYPE string. -* I don't like p_path here - but for this include it's ok - filename = p_path. -* Add trailing "\" or "/" - IF filename CA '/'. - REPLACE REGEX '([^/])\s*$' IN filename WITH '$1/' . - ELSE. - REPLACE REGEX '([^\\])\s*$' IN filename WITH '$1\\'. - ENDIF. - - CONCATENATE filename gc_save_file_name INTO filename. -* Get trailing blank - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = bytecount - filename = filename - filetype = 'BIN' - CHANGING data_tab = t_rawdata ). - ENDMETHOD. "download_frontend - - METHOD download_backend. - DATA: bytes_remain TYPE i. - FIELD-SYMBOLS: <rawdata> LIKE LINE OF t_rawdata. - - OPEN DATASET p_backfn FOR OUTPUT IN BINARY MODE. - CHECK sy-subrc = 0. - - bytes_remain = bytecount. - - LOOP AT t_rawdata ASSIGNING <rawdata>. - - AT LAST. - CHECK bytes_remain >= 0. - TRANSFER <rawdata> TO p_backfn LENGTH bytes_remain. - EXIT. - ENDAT. - - TRANSFER <rawdata> TO p_backfn. - SUBTRACT 255 FROM bytes_remain. " Solix has length 255 - - ENDLOOP. - - CLOSE DATASET p_backfn. - - - - - IF sy-calld = 'X'. " no need to display anything if download was selected and report was called for demo purposes - LEAVE PROGRAM. - ELSE. - MESSAGE 'Data transferred to default backend directory' TYPE 'I'. - ENDIF. - ENDMETHOD. "download_backend - - METHOD display_online. - DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control, "OIContainerCtrl - cl_document TYPE REF TO i_oi_document_proxy. "Office Dokument - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = cl_gui_container=>screen0 - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - WRITE: '.'. " To create an output. That way screen0 will exist - ENDMETHOD. "display_online - - METHOD send_email. -* Needed to send emails - DATA: bcs_exception TYPE REF TO cx_bcs, - errortext TYPE string, - cl_send_request TYPE REF TO cl_bcs, - cl_document TYPE REF TO cl_document_bcs, - cl_recipient TYPE REF TO if_recipient_bcs, - cl_sender TYPE REF TO cl_cam_address_bcs, - t_attachment_header TYPE soli_tab, - wa_attachment_header LIKE LINE OF t_attachment_header, - attachment_subject TYPE sood-objdes, - - sood_bytecount TYPE sood-objlen, - mail_title TYPE so_obj_des, - t_mailtext TYPE soli_tab, - wa_mailtext LIKE LINE OF t_mailtext, - send_to TYPE adr6-smtp_addr, - sent TYPE os_boolean. - - - mail_title = 'Mail title'. - wa_mailtext = 'Mailtext'. - APPEND wa_mailtext TO t_mailtext. - - TRY. -* Create send request - cl_send_request = cl_bcs=>create_persistent( ). -* Create new document with mailtitle and mailtextg - cl_document = cl_document_bcs=>create_document( i_type = 'RAW' "#EC NOTEXT - i_text = t_mailtext - i_subject = mail_title ). -* Add attachment to document -* since the new excelfiles have an 4-character extension .xlsx but the attachment-type only holds 3 charactes .xls, -* we have to specify the real filename via attachment header -* Use attachment_type xls to have SAP display attachment with the excel-icon - attachment_subject = gc_save_file_name. - CONCATENATE '&SO_FILENAME=' attachment_subject INTO wa_attachment_header. - APPEND wa_attachment_header TO t_attachment_header. -* Attachment - sood_bytecount = bytecount. " next method expects sood_bytecount instead of any positive integer *sigh* - cl_document->add_attachment( i_attachment_type = 'XLS' "#EC NOTEXT - i_attachment_subject = attachment_subject - i_attachment_size = sood_bytecount - i_att_content_hex = t_rawdata - i_attachment_header = t_attachment_header ). - -* add document to send request - cl_send_request->set_document( cl_document ). - -* set sender in case if no own email is availabe -* cl_sender = cl_cam_address_bcs=>create_internet_address( 'sender@sender.sender' ). -* cl_send_request->set_sender( cl_sender ). - -* add recipient(s) - here only 1 will be needed - send_to = p_email. - IF send_to IS INITIAL. - send_to = 'no_email@no_email.no_email'. " Place into SOST in any case for demonstration purposes - ENDIF. - cl_recipient = cl_cam_address_bcs=>create_internet_address( send_to ). - cl_send_request->add_recipient( cl_recipient ). - -* Und abschicken - sent = cl_send_request->send( i_with_error_screen = 'X' ). - - COMMIT WORK. - - IF sent IS INITIAL. - MESSAGE i500(sbcoms) WITH p_email. - ELSE. - MESSAGE s022(so). - MESSAGE 'Document ready to be sent - Check SOST or SCOT' TYPE 'I'. - ENDIF. - - CATCH cx_bcs INTO bcs_exception. - errortext = bcs_exception->if_message~get_text( ). - MESSAGE errortext TYPE 'I'. - - ENDTRY. - ENDMETHOD. "send_email - - -ENDCLASS. "lcl_output IMPLEMENTATION - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched1. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo01' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_reader TYPE REF TO zif_excel_reader, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lt_files TYPE filetable, - ls_file TYPE file_table, - lv_rc TYPE i, - lv_value TYPE zexcel_cell_value. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'TechEd01.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - -******************************* -* abap2xlsx read XLSX * -******************************* - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_2007. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_worksheet->get_cell( EXPORTING ip_column = 'C' - ip_row = 10 - IMPORTING ep_value = lv_value ). - - WRITE: 'abap2xlsx total score is ', lv_value. - -*** Create output - lcl_output=>output( lo_excel ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED2 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched2. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lv_style_title_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - -* ls_key-relid = 'MI'. -* ls_key-objid = 'WBLOGO'. -* lo_drawing->set_media_www( ip_key = ls_key -* ip_width = 140 -* ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lo_send_request TYPE REF TO cl_bcs, - lo_document TYPE REF TO cl_document_bcs, - lo_sender TYPE REF TO cl_sapuser_bcs, - lo_recipient TYPE REF TO cl_sapuser_bcs, - lo_recipient_i TYPE REF TO CL_CAM_ADDRESS_BCS. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lv_bytecount_c TYPE sood-objlen, - lt_file_tab TYPE solix_tab. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_conditional_style( ). - lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_conditional=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - lv_bytecount_c = lv_bytecount. - - " Send via email - lo_document = cl_document_bcs=>create_document( i_type = 'RAW' - i_subject = 'Demo TechEd' ). - - lo_document->add_attachment( i_attachment_type = 'EXT' - i_attachment_subject = 'abap2xlsx.xlsx' - i_attachment_size = lv_bytecount_c - i_att_content_hex = lt_file_tab ). - - lo_sender = cl_sapuser_bcs=>create( sy-uname ). - lo_recipient = cl_sapuser_bcs=>create( sy-uname ). -* lo_recipient_i = cl_cam_address_bcs=>create_internet_address( 'ivan.femia@techedge.it' ). - - lo_send_request = cl_bcs=>create_persistent( ). - lo_send_request->set_document( lo_document ). - lo_send_request->set_sender( lo_sender ). - lo_send_request->add_recipient( lo_recipient ). - lo_send_request->set_send_immediately( abap_true ). - lo_send_request->send( ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/old_releases/ABAP2XLSX_V_7_0_3.nugg.zip b/build/old_releases/ABAP2XLSX_V_7_0_3.nugg.zip deleted file mode 100644 index 770df0d24344da917e541ed70bc4f4f914f97dc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334594 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 z 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 O;0M#NU-b27twQN(8)H~Yp>Uw7WHtd{*|{+B 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

      o@+=={sUFPguCl(&T9_Pb43W}1=~e7%lUee1 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%0AW84=3whKup!n%lYk|ijF8}ZFk=f9&Y5s+%LHa$% z>2{8st`;$icd8!&D{=kjw2~h)l?z_fk^Yd0`!+x7)5#SYMz)y$h`D>iY$1QPA zRc41;Pmm?_lwl|r&pjCfV`31`x^b>z+%d&CGt%J5emuo~B8e+iVpB{L|J?kIk=7VD zc}e(s3nkL7f6dl6=IMTE5%l>%aII}^1N{|`E0sBYMqus=4q5FS1XP}5g4Np3F$Tmf z=3%#RoANQ^5aQ@JoCs%vCtdGDF6gXOs7y48E@ zye!q&XS|^g@{&V*N}GI*ORfX?u2##Hs?y_Ue3SEK7+^uTJ<*9yGDXR|*Cm2%E?h*s zhdUx7i3KXfOvWCpjC^oTL_w3RI8pAqptw0t_4_6#zj%VT@OG*vGes51@9KqSKAlA~( z2(}cf{8apBlD3LwZf%{(@9Kq9citiB$iy)kM}SQ?ymj96PUvr*nF4O-vrQvnH@W@i zZOHN${k+?O+#dV-B*3qmSODDT8I@?O>Q1J_lx+GAFSszt0~chvOM*lmGs=KTNc^7Q zpTBc*TyCiH|6ef1H}#HBCoY&_)PHX_I4A<^J_0x1u&c7+y-4T1n=#qr7j%e@OLn2={rB2!u!U-T>JtLq#Y~B{)~Z9??qJ& zt46AO{2^dYiJ)$>)A^xAcBMnrL(_VKf53-eu}NW+BG8CIvgfkwTRZupJ=RJfpCwo~ zYazS{(Q2^KaYAq;%6#C(x#M$purzg$(0|^L>-r#g)+1Ssxqp!;CcE;NZ}Um5xY5`I zyy4PiXespgFAedp8)R&`2?nn1)9_aVw935x&mL08hmd+n&YA&@1>BdOy;7l+wMP|X zlD*4g$8n+y-<^q91bz$#kC2yz%^(Uf9q%Ob#ZI7;b{;o)?Tu%QIo>SJpTc#h-mm5G z;Dx|n4R2v{P@8E7f9+jv7Lfz!z zk@`DHj-ilm%hcC?O0%~HC{8@uAjt2oZ__=sLJycrNt}_ehm_{|d z9j9+(Tsb1;y1lCI)clR}Kw1>-|I9tmUnVFe{PQLo&lLG#rRR)saLw@eR)V2nZO16m z5x~a}ZYjyb8fy+OnduD#%FX@V&()VndzVXTk@3nZjKC{{ur99L=&+e8aa^t`Uf4PA z7_?ra)i&SaCI}aCZKEk;`sxl+=@Qt_9%Y9zeMMD8ApqorxU;!%OqO+_bffE-S76hk z`71qq7zh0jT;!l~0A9*S`x7T6V5dAupjGO}zDs1Cqn~k?L#|BBnQfj2sXx@7XAyf| zFZs^+kA&vM8Ft-k1IJt`Z0?|E2pqY6DDk*Qfv-K1K#w;0Hz3(}a4d0q zRdLtKOpAqV%hHDy*a@BWj(5OUkDOt4>UNGO;2e%rFIko@EOwACNSYDw0WOkMZN*(B zPu_FrsSc+n1)dxR-)(vsZd`54?yBr3_afIvU)?LBhW-3LBVI3sxWHEm&*+vl$U6t) zwdR~N&)*v{#S0EuTA|rRW;o0_-~2$Uh>H`6&&%h;lLhY_q(rr_Sdy=?D5fb`8d<4>goIMjxzoyYJnoTZoLi zsb`O^8@VQdcjX^2K*(sy(U2B=%)U_gU$eRF%m5W?Pe1{YpLrZ}1ry(9DX^SxIa=W! z`Hl8?0cUo*Nz&OP$}9ewcBUz6t@a?`TJl><=$kl9?|?f6*YJdVkYm_NgM-f))hh`v z#;8#guiJ&B!yAp1ZVbJTh>a5#cAZ{Sx|Ma?M2T37K`y7OSq?+JBz9;L zCm83%!+z5Qo+Ia9Bt z`UhQZF$*C|^1oZi{FPeF=L)#W+}3Ty?sdK|NVOVM_MP785Bc%g@Y!$+MmnLOaOXtn z3F$NPdo|||Zl6J`3_)KfySSb3q%^8FAx^SVV;fs@Q-K{3-QeJ&(`*`G-MiBcZ! zH292#cadtku);2sgRoT}YoQaK3pO4DQVm2*0TXnavaY)p0E<&!Jw-+ysPSFC`kWVlJ9V(NFIyj~k;erFXdZ z{FKLjhlCIXw`<5$X|zvrpV72-Ks3Jg=B1{#?~j-v%$c{n9e*_qmZ&<4b>|SbboNH;NH8qE24Sr=hv@!YAwouCmby0s62<(OuhgzlkatclYpHWeP>xDvxgrFKUl( z2)7qjeH{Xvja~-uD%E5Z+>1(%zp9*_JNTti?>bz?*N-p>BKWf~lYQp0ES{1h)t_VU zfM@&e@e>-w#pS21my5(%9-*x=XRwlL#^%o)?5EC|gVlHJ_67kHO&YpqL7JlT-Ot9) ziJY2aFJ8gXW{j|K7b@Wob{zU2!eSq{0_e; z7^`S#B{s(L-j*W!eu$jF!ob;`B%bEw#@XDRLTmY6w4VK3ln>gbbdPDpa;?n3*)?z6 zvgj4fLcE_qU+WnS&=hdD9xx}eh#ro7nHL1YfONAhJxIEZ3REv_E9}xWbzR()g6kCF zYENuOZU;t!VBlk;AVVS;Fx`w{B@hr;IcOwR{*Dv9c_Dfy*#(*3!DxxciBEYU1sd=d z3~gr7a;DX5j8-J^|8}T)4ZhWLF%n8$;vsSV>e9?e6FIChFJ-5A~%IWDnCs}Zl zVwE}%yf!1U*}gF+vUy*^b-g@CoAZEM&W+f%DU&f=+H zogBo*e8vV&nX8#SN+#gk8X#DW=k?U6!rbI`rckoTCf)B)w@35&Z~Jf@j|-ryGntxu zEhYP8NszK`&ZzuXf2G+$cq;05W4=DwBsl%NXb??!GRN5OWA!>4QsIPhv^tN6*rRk16XGZ(U>Vz(q8cqf5S_KJ*z&u6g8imwKtOW)-yerd)KUQ`04l9yTvrbdC(7 z3}8Kcu#}}22Boxyut|*c&{(dUt$$;Jnaj7$jTa{ZI z{}In0tMG2F{{5JS_2}a}+GA`p=2jnt;9;hZtD6WqGMoL7MUO1R{h*o0(|SxRE8PIB z{3*ay@a*LR*uUyXHk0d9pQ=MZr0>Ra$zrdWEga7DKF{`~YY zlZ&YzNxv6eZg#flZUe1PV{p544ml^yBrnZ}OsNTSUo**K-!wS-?-8`<*1~iiVJz>Z z*3Mb*jr&&*g0$5hmJU$-!SC>e?YO42K<%NHRaTEJ1|Fn-;G*ph&bhoNM&nH1e#=A~ zl>VCFl4`H62fcOA>~Xw>%GC$ye? zn_!H{akm21H*|T3RDzMr;9%IAKhV`EoA<+Y&oI|9{|-Wcd}fv$({J(e)AprVycGn4 z)hk%UYB@yNaSsr_w(b`rdLV7Y5etk@9L>PvgZWyCZJXQ3Aoz^->Lz!1hHWw6FLa*z z%mo(sS`ysH`q^Mj@y@u^-KL|XuW2gFAa2!$6B%ce>(Mm6^40_}H$$e`QIpw99jRUD z<{D(V0tIcDbMp<)X^cRF6pZ5g9qMilVC%G%hc_*Y0F&)~$3wI)kuAvSsYR${#S%92 zb8(n^@h#ka2Zl_1d_@XRwU>xDtv=d7g!yBDpv}7TJo+(Zn_Rqfh}#`eF5;04-vFt7Cn83=4rt zpkuYdIImnk!LO0WI;)I$cjBc3D7cSi1#dU-DK4vdO!jC9<4>fm~ogDj?(NiNE8JVA)o(lW3_mtvl5@STim9p#R8ZP zp(;{IKt9sgmCw7+oV}-SDK8q#dl;pneBuDh(&Fr1?$gP?&y?U9A8mRV+p^M37-{L> zD=yjmB0XDa?`j3nFDyHABEEyuE1Xq#+~p?S#vZ#f*eG=$bN|*o&?64Ep}&3eW)56r zWO7CoTIbFle*UPT03yrstleau%tz>w2G82f#2iua)wugYcC65Vs}0z`p`2j} zIDc$mfp4XXZEXxX#lAB}S(`4py0~h^7G-sVXv!0V44q~URb=%h9+;hbWN_YKdsT&_ zPr|OyjD`VEoeTU%9P_LrDmEGDH92dm^=d*ctie+>^(kq_!Ma-%r6+#u z7>^@~WmY_p?w-pW85+|9P79BO!`_bS!8pB97N>mgS{D+T|zJ zYwO!Kz&p_oH?h3eQpvhA31CviNrE{Bpi~o7A98_F9*K4Iy)NE4@KD7!d8L2bc&B1L zwZN=Y0(~BJ^98EIwZ1%u^7@-_n08BH{ZWg`e-2M7WBUI5{ZA75oAF*<`G4+4_mXND zW>@E#0(bm^6AkoF-}A_HDCL`fle?VdEBd+is=?{Sk<49-)FD#wuxWR>uCA7`Ke_ti zW_RcG;kVn@&ml>lbAx0OXz+G2e9xjQJ}PN96%zJc95r^&y)<~&)Tzaq;!~;m6UT3V z!k}6zpQ0|#Hc3=9{MnUcUWtfqbl|w3SeMt^vEN0W0sOEgGizi7b3oKzWj`o%M6kRi ziS*B0dftfA?K(_K6QFE+z1*`o_+dhhQ_TD0paVj-h@33lZZuJb(VL-RsQhXkBVeSU z$=Z%f;Y0SUejlQO1*+|XJz~v}X#o+n@cS{vMnb(bdyWlN=NS~FVM0lhEn?}RqYDto z*1)vNDvX5^?YoD!F88Y+&*{c_1NttA&1udZH*GaR!Z zTWFL=fdjXl%sQbMTRfI2A8A%)LeZ0ZlHC?T6=*9|Ed5X(>++sODaYARoX|=%P9A0W z`Oo@}BCxE*j$5pMVPnFb{&{Ox+_)|NgngS<{fzi~aBqy%uUnG)BufNypx>1;DVYapGGlyNBPCbS=INpwh^m;$t$`~`-Y#=s)TYxmxcqWB%?204fo%nA%PjtT#tz@CXzp4Q zuKXBw;;~B+-yi!#W%<>Q^Wd^{WAzH>mt!v{>#+&Fq*j*$^*2_F;V=7K@O7L3hxIJD-|NGI%Elxfk*Kx?SJeEbgbQ&&2Xm$DVNM zrS%qaBYdawneJ%M1T2GE*~;MkrGltOGsaKzxj5iZ9+-waF`j<0X|(f3xxDT^oHxH^n(g(d3`660n%|bX2$Z#NK@|WOc(~EKX=P zdghl5(+Sv0@*`|K*->-@0qqV|`S&pmEV#Qfd}J&@aP8B3WIXLRfijIZHHrYIufBc2 z`X>W;o8M=3|Azqz0_+#nsIc=-*+9lh?8p$g@`Z366>Kd)k($m&m;`-l0tw_T&c+PE z&gI20SG04pu?3IN$QHK$e6Lharj10LhBoDgcnSYLfqXyol-%ArXXV?Uhn3r9<@f=4 zFMO@CTG`~lY+2)kuV~H6HR9b>jeZQ2&@Y>1Hkyo!BC9SGV=j**d#D?!`>cbyUDS7A zX(nUdy}qFPr^&MB_>wN8tjWB~f5E3@eKk_AMsO{R{NpX$O6G)v9~9lynnjFbDbG?? zp5QH%VEE5gc@Yes!w181fMjJ?4Hsoqe<&2V=|cf;Z@Qhg(u)DX<`Esyus&;{W{|NVt1y$Hsd0~a}JE>lH+G)kVLwuL2h{P zX(qUeZ6I87xZgEQu&z1hs6IWSyY0%uvk^n2J# z*D1>!lqXFREmLcTb&s;ACkySoBK+me2`-`a1nmIrmVDQ}zWSq}*$|i(X%f7yS*4W$ zTo0$kN>Z9NotuP|BP5mE_oCA#au*vma#y>$m261s&d%p<@LjlQb(Z$8DK_>>t~n$D zx;{HEs|K~!d-y+}%HbLjOzuNDbh3dheG``?I%6^@Sg&5LC8VTJvntoZM^5n70eiZi zio9;<=t8QDsV+^D$1`bFOFX36s_=M$zj-P2rG`Y&`S(o=|Ix_SFNXqB62aR8!vXJq zRmd+)4GMtlU<>D_4;5B35e&N>H~D`LcR?L~gB>-T&54&)F!^DYG^M*nn?k+d5XT0uLEH4t?QW4hckZi8W^aKpgfhdat7E0fs8>Kx$wIAWn~dmrTwfY%)%#7^J= z8-_4B7s);Nl7Sh{4t(kKg6FKp^%{b|^LQnx!Z)Dcs=I4CuHR_pxcI&&$Vzr>(27s& z(VDX2!@43l?)fqLSjKs*%uF0+4B|?jpwEU3S$0L#xE?x`$kaq#U|oLAdVk-k_L?1# zdOmO~(N8c-XNYP2IPjnkR(`P|HIk2G{{xf0GJNogtiA`Y{?n-sV_{HMB=G;YKec#I zC$34NQ)?knpWiJ?e0csu>-IzGYb{jCkA&jbjhB?+DHpOgt&#|PtV7?Kgq}BC6mfeF zo&lo6qr*8y;utEwDddqDK|uwq(_)3++SJ4l})Us)YyS({6jVk6T(+L(|E-7SB+RPu~OU67h998tGf5 z>(LImk$CY2{1pF5oNQdHIh8?<#V*c#QS=G+Ep5fX{1=2_v}dWB-&u-h@GNucoQQpm z$u*LoS_Rjjka_C;aH6y+u+C9mwvJ$tT_}AqrSZ>T>y0-yqNX5d7ZHJM^tARMGY7 z9Im6%GPi8ig3EO`55)5zf&tusv$4-Q=bIl;x?hG=fF`6I0NwL_N^zRhJK=Y?UInK_ z>%Yi*8UsSaE|N^PuxB_ML0KmBO?6tRZCIPIeZh?{bMpBBd${~*z#IsAB?Fc@%uja zf^!taU+ult&CcIDUHHV;D@tnPN3%A+GU4uSh-=oa&y+C=o%8Zaq{~QmlX{hZ@6s|> zvnH5+FY59~(mH%GRMFZ}>a{X~*UQvgQ;pH&c$!?b3xF5UadB>K$$QizC7Wex#;OB} zYN~*4R@>{M_9V(A+63n-@ALyw*y)F%z6VQ0qoo99APxJ27B2m7d1G3#*tevzxkYHi z^!113P*{l7CbW$P7{IVWYnXyw1fg`BhTzzXD!|-$9za0oX!!6Wd^-QAyf-=st^YlS z9WUZXeg2SaXhF7(?A&Vahy3mE&#CfQ?+X|LT*c3K8*5RWH~uKmNM{E6XH~e)xpIPI z5me)yAOIL3-|$#|oX$ys!Y-x?3xx7<43Sl_E`=j|dlYy0gnlH_6e&SqUV(ky(b_~8 z>Bq?&jlTVtMM1unUYq`Zso2FGF=X6tSjf1?Rm!o)Ul8czW0pyfK$DwU|AI%nk|M-mv&6M{zLX*V_Tzf;~VMEkKqB#1P*BM0`xeS^@O`n6#{?qbKoh5ENx{T9Sn4M5?O~ZbtXG!XMCNf$ACs6%S zuZN)!ysg_HAaeP0g(;$156i+d4ihXLhiysIz|&p*)iC(d9b z^V<2%#lKluFeM+*vyZMvu5yKr4$_ur#7n^9-Idh#q!THkFK6^{e}7STd5D?IxMB2T%}NOHSKv;9KYawnWHqG7@3+fDu^=B{Ugkr#c>ryvB3r z7wIqXi8%3D3TeF2^+$=x-SRSAV^`ln0;dOIbD-6bRsriHcTKK|%%A4Xm#0gX*)CqPDCQvunDzZG$VdErr0$mRu;eqVTqz(q> z)+yd3Tw8MNJ)3*CqsRy2kRn=!pQPte)c5(WJGrHxxsuW+-x~S01mi(->xZbtW-*+{lGTpi^XFQ<2X+cbe26pHQ zT0l2*Kq=jJK~$S?v|d0e0%~z?Gz{g6&9>RhMK*lcllcShm9_`t_R_*%gh9&9y;`Dx zd45M_I(zv0=1!}rvHZ%}?4Htn;-&<{Y1%bGr{5J?qR!bt;T7gX`Ov{T(HDS9b7B(2 z3A@mXWsq^N9jo;w(1A?o@ocoI-aNaf?w&i5qB=>xd`2%FU0r!g6l#T38Mue;L%Ej+ zX&8oPLW(b-!wjb#BZKX{0(jYwAPc2XCqU(mz+9>l4k!O3MM?Tjk zS;N)qs>wpi$pd%2Ys~8RyVw3U2KcPMzZ@N!y!^D2);38P(0LvrHN`e44qE1n`uI+p za*7E(d~})iF#a-E_S@L8d)&6LyJM@aQ3h0XQU?scto?4FXBx5^q^#QzRu$pcyj56g zoL5_)pHi=BWOOJqLrC+ToZvUcpv76<06Rd$zd`GE!=KQ$yi|-c^ebc939i;~WASz` z$#k74IizUcNBz&XVF2kV9oZXYjF@__vpPa%VHEb8GRYbTu%FccnhrDI2v(t_>0;UN z)|qqM=85mu+YLtFh+8M6C6lGl%Tiup|8h1$$>zyA-?z7BYlpVXX8CMAZ~STxV=B2L z_-DMXme{g?U1q=b3+QT%X#r#7bTya{{d#$OBb{*D`hD26mJtym#kdCr{$QNIF z;d1zOP6aqnNBNmWWl(GSqY5AC;;s-|Grxjc`n%$ce2t3antZXK;TV~?ghSjUzXGI> z75l@(?OZ(x>gm35{-$_BX;!)QD~Ug^ep2T31PaIKMz`cs_dV39=p>X0u_Z$*EvmAq z*|azNP5s;i(xKkCO%9+{)^BBZuWGHd&OLAk`Afx^{v`%5r4Po-81SK(i%N&@! zmph0Ka_o$Y%bTkIR2f+i+?@NaZp`jFmJadq-9G~Pq_R8T<&^iE+iZ33+1rh|liow< zLPugn4fr4?fVrf9c3`k_Hu{bBHSb5&;uDMUl;Wh(5XVG&PQ$zMUFdEd-&ly1hIUo# zR`sFb`l-_$$Cn^AmvG70+|l1&vG#x|(EOf^jldWWn*87rg?3GdCcARH5`g7AupQW&e|S)p}aq?P-WtqBh0W;P175+ zn`{f?L$m?c>`~XIZCFO)t&T(cy2RbjF0^xIIil}&*)%p6f}9MT3}Of3hUZzKj!d(f z3tfM@-vqiS&*HCXA6Yw=*XYc%vTLR%)RcNp zm$27p0U1&rWt3`=%5FLGV+Y@CpIT)Uq}8{+T!=Fn8gz@h$)F>dRCZG{_DRXN?zh1qH*Pc9~-Is8sjV(S`p~rQ*us(2$>>5AfX6M*&#UQlFZ7d2ynTTFi_>tNc&a z`u82dKQ{&nmp|V9`7ckm(Xc4oek@8jLj;3 z^NT(ZyFHbkpDmeUb$7uwi)?o*xxCs&LMlfzaN`wUdGIQoMMFkR-~_6sC4BSw&jn;K z-0q#5m`O@2G$3P=>HhNy1=_XVs!FQcS3%YxyI|DRFJj^E&EpJR23Sq2J|?CQP;}HY zVt8cGE`0PbD4wVCyI=_7hvCa4FkisR)?p&c7g+f)g{Z0 zO3(G&6C{Ttmprfy7q?09j}jzYF&9HZMRbFfn&69snvxPF>ylo| z($@~KT;NPt5`HdUdrIFa|OM0V=f(c*pFjrY`I@pMwed@{t7Lfw;7*2Jj0)&v0A&- zb8BjBq1kV2DKBg+44t=YttM$Jo!_6pfDSypjss{aBSdc#Xlls z8q(*v#4d~GRT@{_hoTx%?CKx>*xMrKBjK9h{n?6qZFKDCQF7)*RyQc@1>9inbBS`X zz~d=Spg=WQ3@rwg5?f(oear#pO_ZO*2+PZ8^5-dW(qV&i7StWjSVNk^Tb@NoW#C?4 zWp2YIdvHdngiUGoJ%wnyOR;nJOvsJ?9Le{szVo)%vctBsh@VVH6~Hj0?UxkJS;W6f z7JGBRN;>*lMn~2usfIt-!L7*r(K=9l@tF3(j8zSsEWV0R*vrdTl%G5>; z^SEw}%CG^H&aQ~H3OA?k-xp@kfTqSvpwzh(AHMuNdxzlFn`n%qM8Oljz`vVkAHCa zpm?SA@8HkMMl~qZk>A?mfcv2*%OB2gz!pFut>ZJSkx8jG#rOHVhz7;`au;luqePI# zp_q1m1>wMm0d*?V8dR&%NHSBq$IJVuq-%($g=e!3XJOKc_6Fe+Nra(`!V|MY8(QG)$-$Yn{#5Q7e5 zTE2OKMP1zxW00WwVR6L#i;1U3V^$xDhmC_bQqhYDnJD>i58g{9pb_y8DxQJ3kz~nu zW5IVn>^-OHinpDPNaYsy4^+(j=f$Qe72Efen;VAt5gZ#G5KRW`UtY*via>&K)ePCh*Z5lI-N)Yam_(@IXJIcE8_LM9Dp znA=}pYz|u2j^HK6;OT`g64h2KHv#7@xS|{Cey^BRI8&+8;9pK@Gj<$ys-B}rk^Y_` zi!xJok*dX%E6uF}q_W^;m>!{i8e^0-I=6pUDUEzq3ItW=8!x(;nzKAEep2rr68+*u z9xd1BX(gSMod?)xmgE_YixV6CUdxQyFHrJfiMbP#?FR zG#jL?DG^RK#vc!bqnz^;Pu;Nq{MtNf9 zZsg2MzG_QfZ=k5F1rO@Vi5KFdb`@{yuw<^huw03~G^Qze!n1De*4#`A!{gDKUTRCK zH@$2uf0@Dq4Y#R6ufaOU->&AK{ArCZ8g7CwDxcJ-(ZqCjhS%$7{7@qWz1Gd08swNU ziB8QyE1NbjtGJZsxjNV+SrHQ-vZeL_eZ(wlf%w(UbYyG=pX)>Yj?SwWdv2B8A4V3C zY$`4KUdAf7VvF>*`q8m@5v4n^CKR4c9vSP=lZ{p8=K(B>VVN;!pU)T)9GGl;BqymK z|8((?(zbRA@Gr;Ow3FuQ15Pe8c{#DkLy1i+Q`uvO3D7Yne&hdMyX(r|#hc{0reTMW z_Luf|Xj>H0x{4b1=wT(ek32R_SD3r2otxU*c!BF2xRWZGz0z1C(^M;JmbR$D{a%CM zgM~fT=DOF&X8pHgfm=Cw>(RHnvU{t&`9705L{qzhPTP7vH<+6E+`+nW`k~te)q+_p zbwSH_?H8s@8bTTbU$}Ae#eu1t!piv9L%Vl5W3kn`&lhI;YvX%W;@9+_N%&QTk%>C-`0^UEc=?!0FN%nYxm+g^V&gIfr_)d~ zYWqCj1=)N3?xOo=ji8t`yhAfgmazQz`(xg69tfpAmuvx%W*f?Ma+M`Bg;$KyG3y>5 zZY-=k)iLnFn)Gu)Yp&{h^%Be@n~8x?Zveb5U8!5;$OMP1e*)6Ye$_F(n^q^%rxq#v zoPVD%$JfJP*qxdtzhpozn?^g%?Y)9dPoAovb1Tbi?5zbc{BVj9@PrFgRJxVi(l5^% zng4`;)smB`;_8CI#VK{jB`!7Wgg>)ke;n!&+!}EL7IdH+Sj||`x8}GRy zpBdHgNeXWyT65)b4gFqS|B#yYLBg+i%g7EaJr$Qx0}i`xcKh8#@xFPFbVPi3#pEWe zr_zf`qfJ#yP+vaJWQa(n&wn(8s~TdXj4I2CzGosEHMPBU+#$F^yN7I5r`YP2LTApX zMx3Vmo7KS7b*~vj*$KoQC~R6R6SIbkQx`lJm`Isg?R>=$|NGkSHMzka4` z8$8EN<)(OB#@JdLp2qLp$m;%G)(la71M3S!9Ri}hN$CnijWmHM3we$nc%Ed1nJ$A3 zZpFj(n!;rAk7dGK#qW6M>c)`xJFZ?9-}Lg$JF(NNmK1jFuk(9%9!q;tW1N<9_aBD^ znKm7VO~QTjL(O^e(Gy8Kr}a>%co}na&2&1JE~mMfBj%+}*2^t0!;}wf4R!kNSb`2W zkJo778kwQXro>(9amyQLsq?3GgQy5&c$uDk&zXi1MgNN5FLMzCXzN8Dl@^CaGOY}h z`jIHwfx7{kEGSI)BuohXpmKV!tp|Vr$STEAELsHH4BDr`vuN={BBg2(6NSi2QrW%Fg3QZ{m>1Giagde{t}Y+Or9D$= zlN$nXk-W}O(31ZEdm1}aD7 zwZNI>JR&f26XZF~<<%(f1;M?=U9r%4Q_*yE)=@Yx_j>+;xz>12Q_2r7oGq#W2{HQ& z_P(zQCG$(!SjXT`O;a#Xm0BOa>22x2po;;gsYI6WxJ3&s9}A~FiQTAeWz6u}fMU&P$y;DdBB zLN_#4E#Q!tcmrf`Gr{l~Rph2smCcF;-_z^h&lb*hUIKS+a&QT%NVAMrB4V|r+hJwg zI}Y-PQO9HfPP0#H@x~hJyE@`l&CXABlj?$s^QGeEgM(*Iaz2qQn`y#UU4xrHm0Uz^ zWf>M#@2fR<=aO=k#1-VDML^cDMS7{*t9;T3Rkr32w$iCHk>?q05dY;zHFT?eYN zwuuBse26N)hCZ@yL)5X;%0UP_$IH;&!t7m+R@v$?BC4YX3iO+sSCUAG ziM!*`95q;8Fy_0+!#mW%V~`u`>ly1r-=uOCuBKrLeNmca9W4*ve62=oN%KVKtJ#*0 zM>Mdz?PD#lrmOs{#clA&x!n64%Om<0A=j+#W>mhwG{>psYCZmKD6N^uM7JCmFS)2~ zg(oDAcbH*_XNSC{@ueZ&d<=bA23+*rHeaju#~&lp2;I;h2?c$C((YD#>%TI6*e~TAaak&S1-dJK~4xi6R}wp`4K3oOJBLob7-c zHD&u>=|7>r=qdh~lk$(zyNX|YzIFOV=(Sc?f@ZU6J|-J0f$&e9Vd}qTycV$-%V=dy z5d&Ld{oA@2_&l+eXvLjsd|k$mrvtyX7#nE6XP}4vs^aReqT-`|5#vSwF?uy41GfB8 zKjo)&PWHzs1mkxIjG@0=i)o#J&GXH1J4S`n*g7^0TO;OMT?<^uw#4*{el6qM53lg< zKEE`_E~(1?mfm0B+)n|Dk{bBA5mzbIdyD$YBru{8jV&elG5IKi^dSPpRi1~laONBd zV^@P{-8N$UcN*#)n_Em6;N`W{%O|-)Jgbcu`E6uRTT-NQ!N`ry>Y zMaB^YhUB~`qzIi|LQ0b#24o5MB>B-yrJVVUD>$cd`j#ulM|=BNuH}sor9^pLZ7SOzM=Yt z>~oSMX+X_nlO?S0fl|pmmeaMDsS>&88nMoJub_S|5G_?%38Kx`XEnpHNyziW6pXH8 zO@y5Oh`FV$hStDT#M+nNKbx0mH~9RX(%}8t0p5+__b1|8TBA387Eo|#&o)0`6km}bi_EA8C4&{MtCG_P?x)B6;k9-`8d zo>8g08MmEpV-tKRSz!IrnoFK%i1KFdV^4Nj)$^v%e)~804v#`&W<0_7r|NKK^qch| z|4t2fB!z#onmd}{uDI;Vuzc`7uAgV| z;anbiHZ&}n448mijq%ud*IUrWJ4^?$-}Jx-(zfC#3)Nb^#FrOLGUqxOSFe~QV;~Ek zbQTKTBgl^FeXzWb9dY*J7YgydPL6389xEZNt#s-XnbE8?E{h*1!~wJ-$LhpOhiE=Y z4kLnnrFV9uNPQjn*vHWioi`uvnNj_rD~G}BdY*j?^v*hTI_zY2-XRU+&lDezDu1Bt zo*R|dd|<5i_fX;&%lLTA?vDlEeGk}$$LOtj{7!RgF)%R-i@z!L#4(q}tQY>iz|_Y= z4UU|(zMsmW?f5R~Kv&i$(bZ_bH#e9ji0O5IkR?)izr8XM+O4jd5=${uI1G`xOiIqA zU!TZcTR$&KyfJF1n=t0D42oQc2_&gmrm3xZyXnxO(ycZ5qQZ8YU`Ix1xH!^p!9s1a zJmEm%N_MLZ`EY2?4r9#+L^J*v+W>o;$E03@n<1bK) zM51m5b4ScfomHzOJoW2?J|K7zGWM0sH~xQI5-obiN*w-||9@+rx!{14hdBGY_Ddtn zyH^2_QRdnrd9OR=>}q^!l$ZT^hcm}V3%$a$Km>|r$(5y@w5>=3Lg=zvVdmr|(rgH> zsUs%rV`nb?pdrv=<^=y}Rlq>x`)?z@J?kQluXs+nwmqs2Fb~$obUZ`cu1F!^)?%>w-?$fdyc@Jrk;MDwpNFmkRjUt z_`xPrq}v;=7&&*lTQ)<|?dKN=N!g3yZd%h$WZQ4ld=+yOAoTcs z8Cq!wCJkQ#6TzKqSx;U+gS4`f!cy8HH}C9x0q#DpBvM&ND>!Nuu8esu>a&s; zOO)^FL0u0NlCu!0Sz*xUSKcv#!mB<6Yw+(d#{S@vXPUsrP`_3=_lLezLsZ_PQEN4%bwR1_aj#!K~`v z!nKNxLxprM1aof&&lr!cO#J3tP8*ZmHlmDSvs*YiS0Xyee3ov+F?_Xy?US*poZX9Q zCfPU5`N^q!4J|Rac|)ta4T@Zwj%-qDLa1TfAq5NwuiLj$Cteb%7vy%BqG~w!*ypP_ z4}xcOrDX>s33*M0ZW4P!WG;h0b+Nb?#eMGBQr}X^ag-)g8q9NR9Wwd>o$HfAKJBl@ z$~*LL6Sqi?Cd88`=a%S}^lyin9PMUL8S6=>=9c7?+)9pZRjEzc)qN73d#{G8HpTO+ z{IZe?Z{;X%DK!bTi^!az?Bf1~ha-!t5@8N_&UETs5|y1pNY*ws#KMX`%>7^(&8{{u z+^cEk=h^I@!v{H04h`5PedSkxM2}dOuj2(!17A8-?1!Dp#;EYG(ZZ(~|4PsM#xDJa zj{S4I1;R&<>bQ<>CXRqaPalh>We#%ll-$JB9hM{ZySa+s+M5fLRP#+j$w7RG_LiZu zdP06mRvMp+x-U)ozjJ>E195shzs ztjV?;hL+yJFSZK(^RA>cGfnD3-%^#;bDKP_S^R3&;}sSMLS}Uxjd-Ri%9Y5 z4qm9|+fFOy99m0n*=4fPUF9q{p4T-wh|RrU9+x3z8@Ot`j~dJ#Qagpd@)hN1x>%Um ztN32axA(`VL4XrnzKvW25Li`fClo0!%u;_+PYWF1^SEm|$0TYlBXGnp$(w9*p5EohZXX_pufI8VO@&wu!SNrRdXLB*0KRomnF&QgRgBk zSWKJDP22%+vcp9Zpgx^Pu`@B|lyIImW=v@iY&PNiJZms<0sqQ&2{ z&4hZ!aIf2tokG1DJ zO0IM=ic7T%CQFNjJoPm_zcCv;*4CN|F9D~L0G6S13D?na>1JbwmRfJ_I`JU#2d`?N z^rF%;_`y{bOv9{^h27E;u(tzw-9Y06QCU|e!W&Z|KfuS@G8nJ-cdmv)XjPj~yUrTn zAf@D_r|%bVi)fMosArRgyJ_viQxxUAsmpv5}>*Bv{MoF~pgW81p@^W+AWbua`$pV3q+P$ku$`rwy^&3iSvGy-L_O0?G z2GTpA)nv6Txo8d^p8;E)v5b`nH#11zzUH#@5Gqj=aB5;LS&)C>NtpJn>{{>8C(hk z%Z@jWd?-NM?+2tzi|H*pgB1!*Jd`pOpE5N)F9s(vgPN*3+G43LX&N3}f53*HBu=_| zG{*d*z6Are7lSE1H-thA8?3B;z%n5A2H7W%X*KGl1p(9t9d1|MV^QCQ^pAYj?5;D( z!51zBF;y;4t#}7t;$|Bi`hVL8=CYFt?BCN@Zv%oLn4>`KnC9{)CnrbUhmXwM?qG#j zP(EnAg}NE_@P0#3u@H;unEj3xyouk;$|AXvOJoZN}S=1WHRo^Ue!_{2~U*ea&YSX^V{@&?F zHzkN4?gz36nwVy5PQO$?@vp*7p}C9c%ol&!+rL+NFTV1ZQ-#d)cAcMG$0al#UUDB& zG9I)l;OiMiVe`y7dT!L6ww;5U_9A+Iv!zBFrc-#)NXtEY)j1Tw8Ds0SpmhuZ~rGGQ0;J;Mp38yyS)ytsccLDP?X>JdXJ~0`{V=ztdK% z=Q%w+_Dw8}lpo563|vq92`uxE_|93QKT)`3BT$Q}09>PNp{EQQc=@{MDS{j@6nfNT z;BzNU-2GVxH*QkkB^o|v!tIgG0rI54tW@YjtoLsgo0}v_$3u>*1l8O!b{+hn#4wwS{KhoOn0K zRz01~EQh1iD5p<8kf~6mU+;&^BYCf5?Rb*UbE26yo@DHp@ANQA_15`rMKKq!k@Rq5 z)8D9%mNt8Tv@s*8VhQ$M7B9sE7kn!V%ogzY6(iL0w$j=UnxUXdV@&q)R~g2i_EqN? zlX1B=-k<9bLRULQtv8d&x3lIxF#W!_F7NQGgq@=;Z__Ov3b2AH>R1Iz5+AoTe^I=7 z0$~hhuz!whlrzewQ zcO@=aX}IGtgBf}v=eVBL;IiXP^$Up`(;WDS5Jmoi`bxb^T%-nB zHaw*ZLD`Yp#*n(fKQTj^-6!=cL^MA(=*_{+gFQC|LuTK*a>ASYVs)jH74tBQ|i zeq~AQBIxAstuW;Lg`_AyszSa~L^T=OHD7_aM zlU#bIdYfgG{Mis0mqLC{Wx#Fng1?w)sjSoGKDu>7nB+e9_Y;%$B6=}^La^kfR$hVPdwnU_A0H0y{IdHZLmFS5(4%WSlQUVQq(ju zaj{t*J1TR${|HaK<*P0wTOZY9gLNGVk0e~4m$%s5IEx@24(~gKCw6qLOVPn0+cPg) zpcu<-PiP;Os6*v27D@hC^LQkL>GMC&j)H)8Z&AKIdnud_cvbQ3ai5|FJ5c-^6IxX* z0vq6%nC1?=Ie*lTHR-7rIzk|pc$iZk3=|eRu{7vLMCc6i0r6*Q{TlTDH890GQ2C3e z=jfzJo=bmb3aX&|7A1!qJuxE>H2Mm&K7#Gr%CmRW^`{D?Gw~zSK|PiZ;wh?|KjoTT z@!Ec1D#ScTXOYFvjBQo=JF(gd2;gVlW!`z5{&;7T_BFd2%#fBiYZM-+cc>KNd-d9- z%+}sWagy%9+77%Jdt6g><&Hi-x(G@#HuW&DNQ4~qEUDEVZLi+U-wz6}@93Ia@X;vl z^Ef&fX9T&u(_;zkNn#v8i*u(eW>&Q61<1;*ZjJyCm-M+n>8+9d7!U zKfk^u?Fig>X?2R4m=B>WLdL@4X^DloZQAS=bQAp+y(TA|()`^E4#=PE2n9W(xf<_w zSzC_sQa8=OO}3EO(u)3HKw_TlwT9)f)^LrD*=)&xa5ae{7ggRB+a@XnBR^lU2`zH4 zZRET8(H6+WU?Y1eqb&+QNz6wdou5gK?%nS=1P;w*o4g#ZELsqp=R7y@LI_KiYKHC{ z4}T9>`)u21Vcyed9P9_Ifj4X@h)1hw)Dv#T)}Tj0%~j5)XMYS{LStXs{wxnEnE107 zqR)`t&=#URc^5@}dN8$^cZI{7llL30n${iCDxF*VZy2^q{}%we<&O>VjMIax`_C6# z|4A*y|MpkB#vZ zLbPJJf2DU76nWc^g^w&5N``@G>P5EDGv5FqcV777b14yM+p2GcZ-MOA_CiH#Pj;&@ z@RhL%q*ig(IMQt0%RV-Fg!LeaW}AI}GpVJyt!CW|mUGd##sr@&gkw8$? zh!5Felc#v-2O?G8k0r{w#(`Xyy1z!uJ$JY=8LD*33V|t5h^7&Y2ssx;Bw|}|u?m0T z!QUgQrfa>-#hBY0&f2zqQei&yd1nOFG&} zX)uuoquLC>W)?R|$?N=AE&nGYg<<@$QQqCF?d|?mqcFaFVT2=G{s-2sG#(0djjM#R z?^_YFl%)vS6{3Yu*>@9?u{D{=I%StoNyu74W#7hb?6S=y*_W}8vP_J97?VGUM3stb>0sN8+lcp=^*7d$lV_W;o9iZc?Xm-xET_xIe*Ugw!PwCkH zlTEgIa5%tv-inVmapU5{Fq`mcE267&`QhsJ=!t(J;z7AYjZo;He~|orR8eYqjgamT zGK;bEGgQ%I2V$9+SbX^SCz=&K&5dM_o;}n&@Fws^XGp6?!oW5^Mc_U%&8U;F(Km1X zbpT!b&5>CW92xgzbD+^yO)ZaN;={$hjuN1VG}TD+4#-vddu!9bNk98MZKGy!W6!{tPe+z3uVL=8{MwC!rRtjG%)+s z-LU4uu9ESdofmZB5GkiXJ=wka0~cpWxCqv*lmJNBJoCH7nZdGhfK}hQB2%K&AO*lJ zn4r`6L0;u`n(yF5#QQqILmWyc3HcQ?Z4Wp8m%}z#C1|M}dSn{<&K69T1rLBdAwJ3^LGwb>_LR*2N*GbJ zPljU5iSKcEAUi?f`+MmA{vPd%w%^|46~mkJ7jAH4cG*l<#zABhL}WfX@Fns{e&HM<8J-i%0kC1xq)&F< zlppMgvVW61n+AYj9IgxjZdcMetq=CJ_;M#!dKfz8(A&~wZkxpt9lOpi->~6Xd^~U|()s--xgoD2oQ{P_NZZx6Ckb?y;;M6OIxH$}BZ3ydMM0~>0Ee9l zoMRbk>g<|WT6yC;mMqKNMeYOFcd5VWYDG&-wV9;@S8Bpr+cFRFB;^*KCS4Avek$L? z$bxOiC@Qoc32iUkJsG&zg~}T&F5*0c^j?Ec$|8*9t)_iqum=Bwu&tv)dHSEqfyIss-{$vl z<2|5RIyjA+LF-4>P0dg#2>oaS>OM)Kz z8y$#oVb~{y@7X%CP^EszWRtD>pB3nY!-K;lNHQ|=b20o|mep{Mr5b-9^;q{}6Qx8+ z@v#jutIz~|bjni4Y=aJ*L%+(WkgP3$iVdYp^n zU9G%#AyVcfOPR6Zy<|X$I07~_Ia^Sv?xK5GtSV#qUV-uWedg!S7l0DkfWDCqKygpY z=})5e97B#puwn#vcD51LXKFoV6_gNt)53m$s@rgPCh|cIH0YILSlCISK>>r^NR_y# zQ$<~MEv8GN|7n|l6j3jrWJHCqtg~H@`2LwVF4a>EG(m*g(9oJ1a;S8IQQa|@A@4Q0 zWPxzI%yPNRR}qN6v~nhVw!IJhH8waPT9eEaU2p|?sr${}dyfBdXm%BmPDsVJ#d#hB zA_exZ!PqDKB3YmJ59&YAF*ic-mAdZNbe{=LvM{g?mJtFUnFp>Kq>JTNJ5PQDPqQ7k zyD&dF-@gc}{gk|NuZB4fj-X%YzJjoW^_|~c#Cw;;X3AKNpwv`km%>g6A+OxVCn-Ez zFD2lrg@CIatTo{`@-xGek_<2P15f(?%}~j$$tc)_4FaIb+H&_}1fX#HcEqy&nHG;l z?-rEY-i-0D1zi{7Yj8|H9L)aFOdHiFG}AP}8o zq~j6ZZgNIsJbg4r?ul){hq@i{R8V~R%1=QxrwH`998-=87iKX|)eH+b8Z%y2%OyI$ zFv3=u@9P^>Zx4~P1)PyNsg1g-(q7*?q>`OmiIG%8Ayg2E`K>D*l3@t+IJR`Npqiq! zyd&}sP1+o~YX!18?>#4&Ik-Bf%g1}z4h%Kuy)!f{+A$IH0*YpD!_BOt5BMa;!2ZYj z-Q=y0cP>dUFjg6kA1ED}XP_ZA)+FkVb|Aom8)50vf#j@=bw${$vB};kUrdxzYmaC>Dkv&)mpi3r8!Rysy+D$fPQLX3j_56N2LGd}%i~cR zl+BtvIaC z56vCSe9^O(sW(O41cr9z*cpzBcDysYRdbcQO=}u+YWXYJ@WsESY`fepL<{y^X3~B0 zyIwx>9A(}|RZB)AcJ&>_u2hH3 zxx6h4tG2RO?+1h?C;28P4X(z<0n8OswvZ^a*4h_JG?U_G$u}0NIXY)W3o+t{ukIKQ zrKlC0de*-qQ}q0TN8ahIybs&L&LX@_MuNFdzOiV-qxZ@CPp;5+M`@1xn7;Hb0?D$k##6}zi?f8)zGJ*1I8);p2tw^!} zr^R~E$G^bq0N7nZXQVJVQsDe=j;byi2-b(Vfx*SyO&@Edr#x1EM^whm`j-{tS@ zOl9@+3Mk^7XBQnhPQ$X0Mdc&V09Lk$xiBbHS+&%cDKXqR#(J;}`Y{fl_r%veZR|#6 z1zwb8Q>{SR>WY(zN;0c`r?~X)CH6M0D2&zA_*{1J-zxD}9C<52TjgnYqF@W|WCrPd$IU7a@ww;8a zkU={=nNBLPQ2(vO>Lry>WXq3V_jY{$)?JH=RzgMDa2l`R&)vaDs3=(+FI+n=?H{2i zpBn?OQ&X=f`l_;%zR(een0fN7<5H4S{NVaHN^g{P+Cu;T@=ue;rMJE)j1oRvxYOWs zwps`WtEW<*rqcodW{{MUqHEmfx(b4_uFE!88p}6lZ!C9SQC0O`LKvM@9({3(BMal* zF6W${ZXdCF9*?hqa;?Aduu|1L5W$UxBVUjlRh-r(r26;3rgC)X7=yY#gLG0ExzYLE zRfY$2{Kw148^ex9`K=YkpyQwpkGiLo)*5^23f!N{MO^%v zxOw_iUcttNi7|!ytpa6>9-ELq>A4}M(SDgb;+Fb0A>6mk=ifxOutv&_0Ud;;-G`td z5!HSDKDE6nM)caNq7$%UU-RpIiv^7|D)F>nOto)|Lb>JOO-8iQ+6xEtVa1aL7Z-Q^ znyu$|iMd_;38Bwzo%EdQp1UXK1bh->T)U$GK?>62_N`OSz?4Yi09rt$zwo043B1M- z{PLKRWgYXk8J4LjW48aB(1g*}$%^Ip3db({>#y$$@m{k0cuCgkgom4LBU!Y=_=LQq z>|QFE*J=SNc9FB7|k6}q=RO|a5k^*emJ?1qH0@b3R<`fk@UP`)yZE`~P=9L{!A3kz6i z%Ri+D2&lGL_z(zMXJ%Wo1Yl)gFo}lD3SnNm@x&pn$d^t=+LHcJ_M*7t5@jgQ2+~=K z8hge&A{rFGa7X(U8f7Ipi-SL=*YUA^c**DWOv-0Mawa-=peiv2vUzn=l&A)urchMn zPuWER85Lm;?sIn2aTv-Ys>J{#2bm{GD7LrQN6rnSBjN6Q90dHOfGQ&uuvEO~um^ss z*Ipl^BGzj;FKLGb&C@Aq)usJ;^q6{HE0+vw`dTE23?|($MsK9erRfUqQXL&e9-t_# zZ~D(#zHs4-xzD2aI}{<)Ff2RP(iOSvmS_`BO9zIjbM~$Yi_KSloLPq@&m*b;xjIaS zuDEcpM?Lt8uwA{Bf3vT8AnKEsv(|Eq}gPt&k3PQ@1jWD=;B zj_`iGq#}M#{f?Ue`OWpgbo9;Jd%WLnsFMJ+-MjE6(aXROuj-o&4UA)n43BEX36`}6 z$SvTzg0S8hdN8owqoJrkX}Ln&6HC&i=P!0|(oFkW^-^vqh{Au}h*XuOCpFo^5vGTJlmIT*7y|1> zXj0Zb>|bQc{YXzMz~ukwF_q)TWK);48W-A+*@}lwAj|3Bwq_o5y-1hKUOW4=d?S%2 zVlR65%fmtsu!Krq3eI&Ylocjt6EPUsJAN;S=^))&ZoLYylAwfgCdJBE`MyC%t|;~? z4?PdeDfKl5Kv00luq0=M{o2tx!1={atYaBo7M|ZHtq|L<|8Sst$EhqI+VV8hZ5^Ng&KwH*YQ-_U4JJ=6l;+1ai>exy37q1U5_Q+;Lr%Oubx#pXf0^5&8k z*CHGd1;l8fnat8T2w6j*w`b{^(^lR$<7~yUCG5UFG`*9PP5;%y(C_bMu>bXN2e3&^ za#pwq;GG}g)5Va1oQO@sk>+oN7!5v=h|o~kk?RDDi0aY_kPYW=1kLb4zjU*?2GU)v zq3B4Cxq@u{^sDAlP6+68`K}{0{47iVWF(W3;>ia02NW_AU~s)W5Qq6Nb}OY9d?6^w z!i274wY6TBfIAQ&rD)!-@*-y*L5T}?Uh#8@Hi<*^JH;oq&x^F2tk}hI1{Ca46EG*7 z5!Waxqe`?*BZ6(p5o}YKeoq?dS!w?kHt7N9w)B2t!Vqww&!SSTF-Mr~ZoN#usHS(w zp3&JWlc&_6uOQ-8r;wV0gGwT23kWmA+*KF0@BToM+fw4j*}bF=eaT_04SDo^QbHW!aRl$*M{r>3R0EsMMdnhB${~F|Tv9l(=llw^kj^T7UtAvX1 zZgXT7X(|d2cevR<;eSN9vc17KSQ#ugSb5k(jvnKdkNk2PmF;B61}jtxD^cdP#6Alw zDs_^}$gQ>wi&tJiu)&~V5etL9$-%3g+ijNES#w*+3AXB;N({%N9i!h^SJ1{8D`F-q zLWr74giKa-Z?OCIVOGZWQIfyf%qe{KeVRH_VRD{#73{T{{%B|q7B0db&Pq0jI8Kb7vfxfekoLTbH>^0*b>U1QVn;d~ z+Hq=LCITS{es0_A>4$q*_u+RQUxgX42FcKdb1>l@Tgdha|GPZClvwxylE3;A!l(I@ zzXDTH5a7Y97%Lfj+IhS2+6&nyscHhYlgZ|}F{iF`r*%*`dRzU3Np`<0 z=gwz&POe|y_@9SIjnE%KyWM{5NRj;JgMwGV2ElXtWnglHBRo2C5CWk3xDxUTiac0H zdz3d%Qlp1^-5yy~+D0Dokv1DZ1A)7CD?UUIX4MaPLGWNFTf_!;HzUuZNE%|ku00_j zvwM~I8`E*}&otDN*N!4hs+JhccHjT52Y8Z~)_D$MpXRP$5jnGuHL)8(`6jf#OgPqQ z+Qatc`HR96n^>E~Lub3UZLihqKBXuXT1Ec<3ULGTzGqwLn#>*XWCO?a@Y_kY2567; z99e~CmrV5FKEsINw=uM+0tfh!m!zVwdi~`N10U?BCOKUg+DE0eqB z*Z6jC<&~~!@BPuT9SH@Cb1s94^6m@d07GG{sNRq&qqTv(<@NvdO+ZdB5w@)h5x;^Ktx<*W&O1Zr0 zs}01pQ7I3nw%@yNMkCoQlcor?7SF_x8M)dYO$4#GaYPIN8ne__RNp3#C69Qcau=nt zkXxUSO3dAx`-tbkTtMg6lMAB4x9bB>e>FzaL)pH2k9i>piJcM?|SP}0Y?`D=$ks>SFI zXv42B|5+TrNAps79rO${!RgiCA}^Kb_PoiHUY*9Rqle0KxX7pGwT;0r^JJSf!V8VMxFLv7}W6ZFd!&FgldIaAJsOG!48;56e{ZMykQE%*_0plFq z*6jFGU9`xghhNCk0qP@?`uQqXW@ersbLA&Y4|OYoKWG}Zf(Le4TKco9TqWaMwk1@} zO3D)rsE1(apZx*2Qr^#u1nYX$R?DD`49PCUEs@vwLp9k z1pK4hI8NQ;XRZPS>SPPye6jcWc;b1+cwDP8?+E64US-X0o>!_Dg)b$}TDoabUc`J} zKPp4Ji#67+AtV0yJbY02<$GWyO;r8KD0r@3rNyu6@r|1W&jS-A6unP_l-H9_;#+=M zaP39dTH7SOEYwK%X#EevF$XhI5DZ7#c#~YnWs6M0)SoNXzlnqO5#Ok6bEU??fH#=B z$%^IE`45b>*tzQEvFS5cMfpB_)fscOQT&V0%b z0Zqw`i_lMUy|^_NTBKfFzd3hU+&(H^xl!WXe8N2a;qK_0lc3-ams{VoD4e{QS?HnC zpaRa9_o(i;$+pa`WSCa|C{3z2IOx1MNRcN~9>Tn`Y2m5GuBUiJZf%$w zh%V~BFE2Y47hm;+#JHMlvPM;9MR_AavZ|J53$7((LHtaV(PplEYojRDKIB(b`n`LG z|03EYcYNCdpdGPnI`YG?sN`Y=!IZC659sD)uR_D^FM6Q}Y)*{910%){D;o#E;gN!%GTp=X*Ddja_F}W2uNBW4Q%BG&BG2}OSo)iKiKHUJJ98- zZgf<#p+7kX$+pJXYphbOHDLu!Nf`qCJ|FYjd33%H8pMyfxiX#9qtz)cjmn^&PHQ$4am=fQ#Y|7QV6%S-BCQwm%>wResi}fHW>A$>phzAiwWb=rPKDG@}lrmos!=g_Rhdf5YEPkk} z`lgvh*@F7Pqf%(|p8w z=eXQ}{zMc2SWs7okec5y-3?6Zoc8O?Z=?ey=*&lMeJ=cv_h4bC7t+MTOtWy?Q??{C zx1curj`H$43Z1#eDMN5rEH>tzew&ZZ4?%fMBajbLQTeb#I?>7U5N@Avmnq zqUAr3OnUO#P^38R&61(c`jcS_k?lW6b^xX0$F-i)(#A;6U3a7}qaCsQmbm{={(stk zfRLz92Wu>h;eW}iHa@R$fgAI--MOcwKcn@9PP{up=?%cQW99Z`9c=FJh>;k8hIKY11PDAkG zAi_!$j+TuN+6=PzjmbZ|-Ex+~d2?krZ{znS;BFhC$>9C1$%s*pC`}q6`@losqn!rPVK|KlP4>PrkOh!!FYV|oCZzqw3b3suRkGN z#vVz9h+6nut#j-~B53JPNqrqUT zc7hnO4buzhVI+X9XMNzKN<-VIgQ2%C0|MHiyCC@xVF%-~Hm~$sGcCAC>{zJ{#6k?& zdrJF#5?I=B=yfFJhTLAp82@>gi6-rAvHC<ka-0F$kBWkTpXh<~g6o4f%e- zIvPWfy7OF`ps>|zkGODsS~Na5qxY1;huQ|;ika%pV7HsVJ9aMwpF^9@#;r%4MG#kL zRQ_~@2Aaf83SW22#)rQT|E~VNUuvO&D<{|5dTAG`rpL+2>O$HDu@WF}tGyro2C>AK zFxBl3d0!W?Uz;c9%3hPHJs#S%j1XtAcfAWPJP>ygaW668>^*pU-W{f^l~^y252WTw z$aT+ut5YVd!ams`U$pL~ZLuCn7>t#unhm)251h@W?8Cb4I{Dea%NE zu(1YxDaNvV%e%5LY_X#Nhbg6r`s9ORCL{brHTmRj{6x>xITq+o7V4+CDQFzD(+7G& z@q+76a>wMs_Ie8HGc8IH1=}!BXN)m@pLtZ&qKjvn>N7O$9*7XX5>`8x6-f+QH;)_l zenis&(st!W@toug;|;=_TvW3@$j0hIYVMaxvOkm!=g$Vs0Pfl=(bYp(k0#z@w!YhL zF85z(?ga#EO~mmSh(EvhWYV7%A#1wn{_rSFZZNyHj<*sbH_&r3$?Q}|m^w^xXB}v0c0^e`g(cfG4SGv@vpXvA zYTkI+1-7ZG?L4lpLCr_HqRAExj=bru#rQ(tW-EXZ~9~F335tdOEQYS;ULf}*I(ZF zlW1Hi$Bx*E`XZM6_*E?@C!L{P&DDbD!-@$p{aa2rI`2xebn3bE9&R)FL9wEDJMqE= za821Q*}FZVCp2NE$Qc-liMoS(E)0rKPBG!71Qi$@5{lTFJ3~={XMI=|-H-UVj?S`@ zHWS&6l!%MsaW$W+YsubV-NIV`rAw)4B~iSNHi(1Ef1;9*T)WTU$`LFT*UpD)mj&Jg zK7J@$P2BIBGp4?faDm{OvE$pGn6i!BR{?2c9K%xVk<7cnd(*`)MdL~Z_DCYQk_&1n z*k8*Hh^=A|-kEpH@8Jo;4C%@Zj!;Ww`;LBGW*WK#Oa}Bk!5&}py_x2!ZWIw`1FT%_ z??9jiuRm?ZzemR|fhvXS%KGgEw7JoJMl>tmK!zxJCuS;IlnsBksFsPB>STL}c||{y z*22y1`Blo$=kShaK0g-YPD$zy6s1-#ea8!Ft?T|i4&%fdwD{H2lE?0IF0VVm=I6CK zkMxyejzTB*nDqa(pp14Utpw~M8l8S@2UnAv>Je3O?{L!QrPOi0+5LR1E76dv*S_WI8DFV>VT z1I7L}>Uf$8%x-%HvQz1^0wPeoqqdV)oNAuC8_kUvM1_85?Uv z9gtpon}rCg;M)rdhvbcta6Fl&!~D%02br>+pKo|R;>>vOTyky(hZD}8cd;4Rr}_M$ zbBWL6D!~oiv#2v?W-5IC>sZIVhIgT5ntIz@E`2lhA#df90@`y4@k>I|D70fG0_ zU-ont)bMAu4mZ|JUM?z+7S zAxkrxsrR(K^-InCwP-u}#as>p{p7IZPtJYgqB~4v)!kniEaDtHIfh<8dUdT>&1RrH z>T-5A{ub*6t)}pPT&OOm2@>@sSBGUzO(Pz?AyD0$ z84bTcx2Q{2?X)-n`Y7|QC9+hGIg!$I=9-w^v4$=~6XQ%{Ku~p(b3Qe0M)Ame_kOdX zl=+Gd!%mRSQ{sn>n4w~{v`-g9vWm(_yu;+}OV%mJw{Y8^EYoJqZL{_@m*9+$9L1zr zZkVzWM%8NM8p;-nEPh!9^_ld!A6vA%SFZmr4!2K@kY?NL+~f+qKT27!C{?{RhhOFW zMVr{vF8ZU-MaW~URW*f2ug4DQTNN=kG4Z$gpp=0)Svc+ZfClCInfrAz?hBs3in+Ga z6XxEd>mtYrPR3plhRK`y^OIC3U~+>Z4Wp%pE()lvn=PHJ&38`B}Uf^F)Y)yrDNLkmjP(3-6a z)y31QY1A_TEfLg&yhK#xZ!VbchLCb*HYQdm$4?;1A*N>>maE6HR9Ek&wmcXFcI9XV&XT$F3pAOiSBQG_< z4cj@;cP1vsDvy4RdX{&s=JMvr>8$@nc(<+$hGYED*zi($q{kwbMBCb7c}IWmkJbO2 zi>-uBGoD!euN-*UlZ%4~8T#rl9v=igYy|my(BC{f-a{zSMDpvJdWrOlo_z*N6^6nI z;*)osu?8(SDjA|id&?q508RU^SK?I62G0Nsn%}vrhQr~=Q_d-ZX#XU;xU+cGDugjv zn$zcxpxp_;OKZ#xXJwE!6Skpm_!`!N(1lZltMZOdX8T-0!96!w_x}37IOH zw0|M^Qxl5#K{>)Wp z$n;K`-zca&YdiXGd*}LQ&@z500?RmxXe<2(>tAu-Rz(h2n#I~$e@{Z-x4pVUAIz?N zybcZ2Rn~a-41SI+GZjcyC!_;9&v5Y^AMatkL3o#y+3KgW04~EyOO-+)%6VTV9&ZP+ zWYnVtgV#zFT_Nzy+eKEjFZo0;qW;S@{QvO3{YckzSzI;mSD$NI`q=HN zlRF$kRnE+HYs?>%L*60}H?j?0qgWuml73E~ zBLfvXX_rO7j5}@$awfmsgp{)z zXnlE6R95q6qxr zm_Nj9#h#a$^@<-@5CG51SqJ*6PC(9QZ${s0!)>u({KTCq=ygY@|-u*FX1*xq@COk4Yz3&rf>q=Q024>ghA ziAobfuR%{)0$f)*Hzi6A3~T~)290EX}W!0$)2r+)ga90xv@TR)ceN=1W}21 z{XzBa$v*R(r?N4q^U|O>Ih87dGz7}aOX6T%Yw^5{z!EBJen8|3I$<=P9Ga{lcC~3@ zE1#NOpARa(4)s`-ogp*d-BHu1cW4%sr6#i3g!ui$QLQr3&5s5Sr5b&_14sEy`)8t+ zar^K3(OFZzgK{*H_0rYbkN}q3?sNTHkbo8n?BB9q@|)NVLj8Z8V%s=>z3a7w?LwFw zsTSaEk?0Y}OR;8L0XxJaBPq%*DCpCYq{!aGOefb~K#Psi;RD z0iG(Ynz;;CYS?dh-3a|g1Q7jVb(zOZ@;;^Ts(8&I z7aHGiu`kH}@a<*0wZK@NKmr;i-@AjBtufoTu+48$l9>NZPx7|Kj!RUo`cEP(U%jDY zP`vJ*cmrm)`pM4=t~c`cPUY(Td5(3(V@iv~ zigVG**@cVcdQ@NfABGo--#%s)wEjo9dP|;kfVg5)ke1)vd35c#Q+%kUuoBs0 zw-=Lt;ktptv~yz_mW=PcUDX8#iDLy4j#BccT8(!41G=+HbntanJ)}GRKYI)ij13NX_wFR{!L@;ONdh;DXeo*TuhZk37!NANZuWMvz4S z>@z?*JHCcr2@emr23E^E`4M3vU($Q^V|F{wNteI4rtyT8BTBZ!tg7`x+7>J+8}9C1 zNiLs$P#sXJqEqpvpRrXScyBoba97h~QO z$99tJBuis|xnd%1cRS6LB%1GNyyy}yB*V&iBmA1JEiPvSucSdQL6!IYkW&y0X?Huy;1br7ePxT6gdV6MP#6pm)CmN}X#tkG;g1&hP>Q8*;s< z(m3^mqRVY?7SO1W3cXkD3x({&`o&F6tFR$+J8$0Gy0`W%lshOqt8O<-I!8qBy5ID6WWQO3wTM}5|KwQf+^v09pISS;lLb)k z2#5NF2*m2z_EVmiLFtPmzi`)3Ri#D3bQg^(S;;p9S|hf8tEL4E6 z2RDVAS?u3`HE(`ws`3XFSdUq(%!hmeZhC1{r!W?^AtrQp?OV+X5dt8rAwu*VH0xZ6 zGZ=;oMP!dS_&v&t65PM0++0Msi=TJz3Q<>?eL6Rpj9?G+A;3&hHeQQKU8`?;Gm^9D zAE&c=-EuPIY>uiM7rg~MdL1fR1_O)s|FTA^izD@N=HFgl&Vx`FcmFiHkgP;n5Zs~M zhtCjtzb$@*UZBzQf)|zbNNS>9iYO}OgZFH;GmtRfL1g=tomu{EIu~%%Z1>ys+XZfN z-tLGtdlit&dQ=vrI>-RqZ=^N+sYdX|f8T$>Yx&D4Nr!!t4dg!>-1Q5W1efv$#2I<&@PF_2X-BL! zSE(JpUwHWQ=Cu*qEWPz7vwfA)fWrqQ3ctRGU9Wq0d6cqXf7~fNGKf@age&Y$VCT0F z0JioYmgJO27BkEXtAFYZ=C2%gH>^cruO_6ao$Ch{Rph4{e~kZrgsvL+^-+pS>W$V+ zYG@;OA~A?%yxpBdI^;Zqlm@@V2R;&>ekVlS?(-t;lzKSrE|U+U7Q}C!A?q5+1o4fV z$XFndfPL!@YOjknM(1~k;T?~N&q6VXAIOc=utPF*zaD{kX3R9*DO zsXLWzy)*Q?EYS%Ms=<9rM{`Q@BYuR3%43r!X}lRaJ^z1~eCZ-fq<87&N&T!8QampB4w{(l^h0NcNR3aV+_T4@NGTnqgi zbo^y_?FSI6TgtHvRbkqZs&V%*CloGbzI~FRVeF#!Mi_NOAx0eUz5q_ z_;ik4ZuTaU?O3ZEj7p9)S9^cB)&702nG3NcD2?GQ3L?wl0l9*5;+A4b2#$|;1$)EF z@ddkz*IVkzZLc53dy*^A`3r2F^R;`#_EL5>ypPM*`(J?@#_65!v;^^@S<=AeJx94x z0JfDVvI68k)7wQD?J&9>B8t%qs9d7t0z2&?M_fPfC(b!^3=?JB7wMlc82U@@*8(w` zCzO4)HPpH{bmyGA2#?EL`|};DNO&er+y6ieiz8S~zR-@NCyweM2g%G&1_}5$$_xCN z(q`yY`-bwlu@>oFn8%tWFb!|8(=h%+{i6NkU>GSMYI!!fHu(I4(tHBBd{5!@#n;g? z3K|@k=b~|wot`+pMtfeddH?IhXM>kl4iHue&juYnhZ9Y+4sG!GW&6#}Sc$I>I*Hus zSNPkEowM?nXB1pnQte+C|YsupUf zyf*uMyOmZSI@M%W7oLjDUnRA3e;L?D13=X1{W9dms6_lW(2#=FS{;)05y zKU%&IvA(<#=ujtrenBar9lUyZmQ?0tUARHkROLZWS}|JgHsn-H!X@VOwNPmjH~ zSG%=N!t7p8-M1J~*?t@kqA8skt@2$I+7&^~0F^%22mpPd9Smk-zU0=0;wG%6V+KL% z^2glhpS%NGC#N-^R?kY7CGi(bf*JBqBFWzynpWxk&e;EcqPCSb8u8&t@OtRH0{B5< zjcBX)b+H;!k^9&CHRdnw1ddx&P$mjeB07x#Y3yW`fNOaBJqH)5bpuUgtnci zCy}qg)FBPCwWDxkpR)4J?ULT9Avs4r$1o=abBj-pX@`5T!qM5(8Q zm=;K;`KO!Rj4rIKPw!<#B8ip_O7Ho0MN6d*qp;Ytzm^%q?lAT|R_$g&Tm4vSz>Sg= z|Gr6S1w$iS59EajxEf#W9ax235{0aHtS$LgLh~>!z8?ZgXe%j zw`8{_^P$y-$^ZBfp zwL=Y#d(LXE1-N)giP!BtxPlF}eZm_BEdbMcRc2I+4t_{jH3LE0i> z<7PleEukO**<0-I>h{f;pgevW($>X#yk_6y(?CyE~i^^xI!84MG2_o<9Q0+=Kn=ZGj%rg zUQ&3b^(wBs26FOip>dUd&b_sI8y9=w?c5g#VlPm}J&q?k=dOkDHWAa0lxNN$@S*qLW$5n@P$6Qyh_=4|Bq!6Iqu6utRODQ5e-EmE|1n0Ss{B zG~Jc;9*NBFGqypkHHU+~H-vube@(t{SQD426SUK@j!&T(PkwCEr**#Js8&bMOV+Fr zX-j`ewR>i1-03HdzPNhXf4a^SXAG}ZhH^jo+l6h6JQ57m*GgK><^F(o9Kw0_Los9Z z7Dw}xR7ZpF0;l2P2!h{vO(A?$YvWQgB3<|zC`2q&E$k9q@L|EJ9@D>w`=KNMl3la_ z(sXgkFofq}E#+42%7h*bC$DNbUeYFk|3fHu=xu&F%KX!^pX@H{5*Abg`GW|`$#f}+pF(s4>_GctEj|RJKRtzKKlGIEx~_33-##;0$@J+T z{nSgZuf){{CA#_?9Y3Z{0GmO4kCS0Tx;#w3zzThIiAP&lSeTWHAu9G25ug8<+5^)-N_oYjz zq5_v5V0&IFv{tCRa>?xW&CFI3P(M<i zpk@K4k1Dko>#U}xM!P55`~lX_gWw*TwVlS3XDyeK1Ax%!I{3xERpJae$<9w_YUX8B zbtu^HJ6kAeuoRpxV>X>-|F2G6L%W49=fQz-QYjcco(q+R!y#*ov?1V;X~oODQV?h z`RIT%s=roxK9i+<^uIyNBpz|Gj)e? zDE#xQ==iYd;KJ8afSa=iqL)uI`CFBTSF7f!4n9h!`70%`vaS&Q6T}Vu^Q<^|FJ`TJ zY0nUk&dF}S$@*o7btr*u)-gzowWWijP^PP6Jx zjiKoy*zShULw#eJsT0Y#z(B{&Pn*&Q7(7bj*K#aRpztRL*3aIr9&p{lO~1Iu z2F|#_YpYZtcij4X2JG=LHy@`3T58Sp$$lgfI6aiTJlD;=6V$);^bP>T4VGpFjCmzC z7<~`_6!O%^u6sB+;dt6xk{Q=PU6cg>po!v!vA$oZG!p>Zq8E^q<=N?uwupi-{AU=S_9GLc|K&rPiU!beL)`;=DVBO7< z$B4Csz}{EcQwJEHu_lY3wz>b&+CqSvYT;Vjio`LYVa-x2zd~jGU`D>ltdE%X?axWU z7(LW)QpWwC%%7ZW7fN2YKQ4h1R-|^ZNCF8gNH`Dftpy!2wL{ zFWkQjk_Vt8|D8=HRPCQ$En%=EaQcDVARsRMuEPYU^^)X=<6~tA(D7odsJU~?osud+ z%L$NuLbSBQ^d*#VgF+Fxf7_#hm)o1P!gOuc{l6(5cjZ<`j^`}U^@5-#+Da{0U2pbF zxSuXNtNo}k=X;mrp_Uh7oYMNbr8TYQ$Ux{B)I|2TorR4JMl1t)!#QJ09Ej~3kf~9O ziSlh@EAjFyQNLH<_$e)|P9209=1B;?v0`F!=TEiv))W{3{zro!MTlJ20=P-H|qCwlpX&#EWBI#*1c+2AzSq zyw#!0CJWiL4q7Y8V5v5R*m-2vLCRd74-eF0Vf~Bz((GOf zdMjgD+wIW@=Q<{nFpn~*Zm5-cJFQT)|oR%p+VMBR!f~A1r7lBU&x=Up4lXVO2 z7)~#?NdICx(PbB4hi3ZfDBG+7`CZRc`M8?VgUloL?j&`@Z?18EQLPN=``DTx2|f^Z zvXg(QrBhgjtg*S+5S_wCQZ2d|bcDDC>=p?!+*E1@uZ_v>F3teyoPY`%qUZt8_rSiN zYR(kuHnWWC7Kv~{2}Dt5=Q!B~s3MZXGR!ExU+})ghe`IRe&JQh!8}R`B0RffYHrTU zw#cim%C8XsFI~+%-39U~p`s4hR2IPtDf$O}bsp^B1go8<`pU0*Xmq{kN;*hx)!;@VC7{C9p2)F7 z^&tL3{|ruS1Z%!T|AENj?`6jIVf8p4g{BvpOTzY^Mi;F!N=qQUN+Z_GozgttC$g!O z*$Y7#Z_AZ+ZGCQV+I`eKj?E$TAt#N~GfPmvouAp}C3lPYSto~zFE|h$Y(f6?`Fbe% z4qpfocmmI|iH1hiebd2dwq347;Qecv&+E=*UFFNV%KPnCGXD)tKoo`avKw2icIsm@ zls_l`Ypf0eAu+T6E!l$93S4G~hPTzBXLP~q-XpJI9F3}*zD2aRDbX&)DD9Mr6D6DG zs?F%zwF&4B;AilF-k@Mdlw`CKwMyPQa)#?$BqPJtl~-lF=sGP@ZT z%MW`)NA3U~G5gC8&x+C4-5b@0}48`cgrsEeYmme7quiTo`Uh;7K9B^9DL6YJ6PTabCW=_NP*^C!+oI#|t`X zcb=iA)T}?%(>vgXVUZGSKvi|c=XMV##9_z&NHRU_y7GO~oDOlSH_^86hn;eBISKZA zW{LjF>^fia#gecrTf<7H*V?oijOxbDq-E15gjcFXIO>CaE`^fJNgQjVJa3;Ot1%BG z>l)aF>o$Dj!Caj}*dMsCq?@azym>t_b9?Xya#=v?-aM)_2W5~OGO)kPK&tYD_Rpdd zqq}*u5!I2eko;ztf34(ekE<;vXe-|_6eC!cGQL?==H?E8qvhacWjHn$XPN^*vPZMz zx?5UtF$bZ-_OmK!F4mSfolS7}TO>3Sn-3!o6T8c{tAKpnnU)K&eFH_F6Jw15YHH=- zE3A8VQyf8-*EDyR=>*~?5SKma#cE8*X*~__Yoi^ag$^HBReD=_S@-2Rp;P& z<+hX1ACNSADY=iAMCWCqm~h}9T$D)2lCZFoErwQG8`cSBg=@7H{j%wxnWb*h008;g zGtIQYm8j#Z^7hv{W;Q11BKYbIUg&k(;|DLeotKw93(d=??#wI%2n}Q7YxbrCDbm=N z%{%J*T#6H_9|xvkWwu)zF} zCrytpQY63DwUq^#cNzDYTk&r0JJDCd|f8h1e1_~-qY&Y zS&Ec}@)DxU3nJ*srnI#*(e$&##-ev}FQ@mE_ZFE7=|OMx}z?UgiXT%A@km&iDa@RMFmstrCU@q{vO&Ibu%yRHZn>elgdQWz#&vOg@VN7o>vr?kgv}L4hgn!?&8jQGutyT3EbZf8DlxEXDO|HW80{e{Nju#&oT5bvH&m2vtJVEYKt|5 zcJX&kZA;CW3pvgh-Q`1Wyku36f5?5;bg57dtvhd-mSEFbt20?-^#H_=d_p8F74PW3 zHF|#-P5rw0g#B+qyiAtWiuu2vqyd#pxuUQCOlBjgxjrO$Ju0V|ibIo!+jS&QP%Sy7 zBH}h#wC|R=ez&jgHDcIf*j{a>gnML@d0PV!UrP@OJ#D>)Hz zOKF?-)Wgo#*SE3iS1;*^R$8rkWR2pr*U_3Aq*5=Y^0Vrc9w3k}X&va0V<7%*dBonV zR!ZCBbP`OWmYLK+XQTSVS_gWh3`6wN$=RtKJVxq5@#!p?iXEW9ORimh;OJej28DOr z;4LV97PSbxM9~t8-XDcVJKq7FrRr~yBn{`sZmu0P@b;Yvl>QLg$b^U9pltmKpn1nV zr8`#%9<=2Y%3ap0pcznZ+3J%gg;wkF9==gQ(suA)daE?xw(cC3VwUcOw6=nY^c3m}vdz{@3gtuGg2pw6qNS&PT=Z6-#F{a@f= z$YoL4i-0@GOiod8&+e5$@yJ6_%+|01e3^pYg*$gSdF(?7;zQTE=jTbG$Zz!AA(Q*jJHc)hvWe9(=cYQ{&fbqupIy)gVef_ZN2mjdX`2)PNf+0%>|faO z;^n$-fxER67i;<-X3869#2PDPwiB@atVmYn+8$q#DT!Vo&iYclS$B!7o~;t@mm5^5 zvlOPc*TgF*{1)1e!i7e?x=-GYS(~8D=!b_Yqjr*TY|a6RQDiF)8Rf?>P|gX;ryM5} z`7c@#);Qnw?A*CYQve0sOxvFmWq+sEIlT%9RfzphtI`&QqZRH#SXozWKHt zFa|KXA3Wo8&nQX9hTT5U+y7(bEKBA6Z6C1&Z^96DmYXEJ!sGT4hH1;7>^L`$jdvkY zQlQM?Q!4pa`KIH&)%1&*i*qoL9expb9C@%fy^B$m&vL7l*uk3#6~<5hirw{N#eG?~ z*UTFbsk9ILxFi`3fm$LWs#lB$!R?yQR^1pk2ZbpMj$N+ky4l(u>pMthmU)XZ-@0>5 zN;GWY{*@vvG=c$r4rwg^tGhnW*qffsogUw zKd_k{F~6^yk8A|EAk^lkd%=EHK{HgkVzh*#cK(NQ9% zyvf{Gyz_3^)fH%2>@+pYsCu<<_S&LP0xyJ*wCu1-?iH@la~_)U=*14Q-_E{&C=_?h zt$~JXNFW~Ao>RllTkh56EB_u5;ZyY_8@nyCm81gI_$AvP5exUeJ6=0dNF**#h5K@w zjcJ?G`&EjfPNHKDf1v9FV-A^_zvDsI;$>ddw$( z@SW@Dn%Sa-;k9o}QJ_Hl0DqqA(?bu5fgpzlOL6UTZx#j5jq;|C0qSy!6e{X?%kcWO zkz1|RH&(d}0ei|GFYQm{@ABz;UL*jx!IUUf_w=mbc2@4Q>O(t6IWQID)oL_y3scXYvtPLSi%p(`e#C_P#bT(HO9R} zd8?wN@x}G@5lyNymlz_Hrsr3wwzJG)ImtrU#A~CeipOPFv)k+U1kKr~20cy9$yE)N z3dPk;dMtl8@6NCKgVM?;US~c$oFuQVEFa12Pa2QNXgvR^Vr#=$ugv(wkox5+*9ot( zxuIFd`H{;TGa;_k92q-KK5{VM!$%qHwf>x})wY}f#bf0j-dlG$O#&9t;^pf7AIDG9 zzbIL_`XG2aOoYeyb0wKdG+a$ASEsZYJH&q(){?0PG>jJQ9x{_R_N#?0`M*$NnS^yV zkb^th79l6|J0{lbo-F)jUn*<(7t3inG#5d_vGa5Xf%0n?y*T>qjB(FL2$>F(@S!;w zkHZWYzz!z`8yKgvPwj9qs$gI!>vBkqTtZ#lLk6GMsLMI8GFAihB9iU|ku$3MEYMDL zoJ`&-)03;WQZTvKD57G8(zVS(1<^}%sJ#!?%T2F;&3fw6rCpxnfAy}5?OvIC4CMH) ztD@-j{v{sy-{`yzCk}HZ-TNDzKRg_A9I4rPo#Z{DnZ+1a*-q+0{&Mjs{Gmj2=5$xs zveW>@FO_vg;7gz)P!D>B26W7BJbwJ`*%z+qtI?x`)7hQ5ojJ9`b;;>G3EcX7OPy3X z^Gr_K>?D;#`rfMB2|xfC!Q}liXsm!xIE{!DD-}sp9?#>@rZ5u6ES+bOFb$b8jb5LG zE$5e0h8*d{V$Twr13Z7P8c>@Kwg0BLKbtSp<$i6AE<~JEi{*>J(j+JK2FWDb^cMZ5 zA++i6HUPIbt0crW`;wNv>1TPjlvUoV{zIO?{SC%d`+O%gEBRS#ekgo{T4RHhQ}#q( zqSzg7IsOnu-Y`-4SyaB2f_8vP$(Cb^1RD7#GcCR-JHXW}&o|a!H7S8t)0u%Y*VBwY zmY+3M#!BU+qocScLK!<3p0+T4h4ZR|Oj%EHaCzZF!w#n;wY(K=jU1u1gD*;XGFQ{6 z;sBq^Mx!k643=G4qdlQ<=5lPNO&JZ?zPg%%taG+3xr1;{Q~daaqtq_3Snz|IS)^zd z!cJT=I%er3Td?NjZr4L)QK$8GzU>&lMbi&Dn>!~i`nJ({G2ZYeaaFw^OJ5b}jOTI- ze5N>UC7qYjbyn+G8wOk+5PE`r7E1GdQhoqY(5a5c)M}bxII)h&vfo1~JZqJJ4XcGi+Rk1=ATyyQQ5Cm`Vk;TQwbeYAp2^ z5UVaQ0~%LJbz>ot^>K#4Tk*wt1=g8AbX}`H$E%&!Sz5!BURhjm8e6jbLm2@f4Y| z&#}D)d5etkygcj&46;l8c5fB*UC?N2+Q4tr6t{5_bl0Y*Gz>;mR8^cZjvG<{vOzG5 zL?q}!I}cM{prf=QuKg`S=>U$_R2}CDSWhX3RJhV%AH~GS-J@oqP^{n>o)>PbrHdj(o8Rw)OV_i)VoPsIQ`}1xk{FxlK7YdA?ZAVQ&f83eN!<>>To;kP!+d`z^JIB(XyK$QNE_%>{}p5&x-A~nb~X@XiLUTz zil4TuAC|@hsHzl>xcSjGB+qYFJYQ;AnB&BtKMX-H6Xb>V0Jqypq=dh>KFfP*g^3HVW@}Bx-?0BAjocUX z{bX>xdp^d92)r z@Y~@nVvcHYf4MSBawDI&UM_y$jC$#mrEgf#d{{QtMkBtoXEr_g z+i}TrPE~qu)pk+mA7fSX&*buVBHa#H5^n1FA?wgi_rn`mtn%EHtnzlOUz#Kr6q~8I zD=E#ws_*X^-Kg$dMTZYxA8ALJo#-S)OratIj-D43&hB&@-xPGz=Te#0>yU6z|f>0m%DaSjaZfOc1P{9h7JBLTicoqOOK)`|_*9dcT8u7}a z=;ANljN_1ah>$%;+-lUl+#C5NxE$TqNdJ@mOb_1DhU-&Bk10#5cboe&!`lzvQ)OX+l-TbxDx1 zK(6;(A9NR_pPSlI)19f(nr2{}TKY=KxnukHg9O}2T&zn!vo5Y^PHQZe>1|H$+f}o% z0GSi`>dtb@on_rJmzuVchp1kV-(FHh)Yzy)tdWF02=;~5SDKHk&UVTQOjzwhLKMJ*83(Ia{}gUZqoFnJ$Wp=7)F(j-zP#|LSW z_C@lCzSx#+f4stk;3&sx4cDm}qPPqh)boESIn{%i3-JFz0nag8a<$v5Qk_6dBM&%F zjj%wn$Fg!V>6^x}Hzau9_V&W5CCv0uanf6#@TO(=wWtd4z}9fBUibI`yBRD~nvf)2 z>t~PE&3VAfoTe`D7Jh24$P`V>>l_UU^UgxXR^^7ZGMz=?p?l0jDYA{>X9mPqLM-Bg zo%H@DW+>gsEH;r-jA*z5cc@(~nT*>Snh~3;Ric%<77=%O?O!z$VBJ36?a8a7xW7m~ z(GX|4J_~VJg+F#(SLTvo+yP~`H+82OMV-bJ^L!E@`jfx#fAjXlHerc1Gft2WJ&^Atg8P>*v~_rpP(`qgR_a-zNkqZOudq|!#tTpXC?cCW>o*+v2UT#O7@Ef-{D70Zj!xM z$IP_m^sMZxvy-2;`#q^*c`y@kRc|y$Ur|q?8(ipSVvyvdMW1R!CA1ZekNf~0!&?Ia zvNzJ)*W1skk%FLzWA{*dV{ATD-7CFcq@;G1@p#5v{&v4CFAZ~|{FMJJ*n|d{-i>yd z*thA&0p@$J0t(rI=Rs8`+IYf2Eo6)dRJjjDp@4T46wXkUK ztMWR!kyXIlbHb~px4>;H#zFwR#W9JCI& zo9j!2uRLLBN}gU(1A~Y5)T}xvt3~sv8VHyAbu02L@Msir8$yeO)fFr^Ie|r=o{B}s zSk5a*Q^ob3W${kXol|V7#bv5063>JD$OBW^5am*`i*VB}4WC?2!CKr;q5(k#<<4#) zsi)psPhd?y6;VIsi0KY`=(2Jz?MYg_)I ziV(1EAMO46Ap0H^J)YOHcftX1M5>81_xmcR^%>59=}Qv9EdGX7qUuY_4rh|L;!~ux zk(1Z?UAdkNBYdHw7*w974oy8@TDhunWOI&nC+8m4WM5H)^Z?5bbX$cBE@F85Q<(Fd z$K+r?ZZr0u9foB0+d)VF^rR#&ua<{5uJ7k5sr6vG-tG6#eNy;R18dkJm|$w_w^!vY zCY(PkY58dw4z*TUE;X71-5KXiKrMA*(i7BPSI^zkdwZiOz={)4${$Oy&}-p zK>L`o9xOfNfR!w55M*Z^xU`RKGH#>nUz$@FROjURfD2%Z|LMDef`$?eNI;UHU)@H*; z%7e-AP~LfHRy06)cQq_#&_)Cp32m%W03j-~ zpDp{oK9W+OXR-(ME*mmdwN9-7S%^v`2NQ?xb=jGnnmWvm4<3L5><_tY$R2}SqCNNt z>984hx!6>jWkOQfUcE&R>tz+jV^8>c^+IKjT~iO0a68!Trd9Fy#Bs?=vFYoDV+P&? zMZOWo>FZ|tk)n9MMCxO=?+#_vt%WF&Umbs2co76wdHd%vk| zS};|01=vZot zl-yoX@z9r}Mmt|z5=~6=(0Wc5Wpr@{4{><0_-e7B-lvd~q{JA=>;i*zY`LB1tW@*x z_I0!KOo0()K4Km`s8rIMHYbOwd+j}=DPu@Au9du7m_=C9uFetne3& z-O4NSsnlb(D={C&#MKIQ!&zh}v%-sf}^cK>3zFEFG#WG6G}=GU?$RqtAfthA(_shAo zU!$Z!7{%pD&^*m$^)+4LzL_+0q4{EP>cvo|h5dnUQ;XsPT}orUVhto!*Ps-<%yq|D z9JpM71(CogTCq%AH_;AbVQQVyXqbK8^SMsQsIc25kVu4Kp%T)Ao-2;?xljf8CO55B z0RvIrtbvDT7a_T<#h_V*ur?fF-<9VM(8Fb(aC1aS>pK5Lu==M|h4m%h?vWb44#-(i z%S=v!pfNtSk=MU60aLS}V$v;cegTxA(&7~#%iezt{({B?Hh&0;K^|7@M*H}EQ8}~P zZ_t2O6mvA*5=-w8g(;Yt0ooYi#g*C1Qg5d*7xEmQjnNtgzX}l!f2BFJ*rme$P1w_J zN2HVib+CK!aV!|GCrp$aSql(>KbsPbtuMs@fbm7Z&jV%wpPG^r4Ii%Y2-=%e;)+J) znNxfHj8pqQ_6)=Kd!O5j8@FR1pusY|qap|Bey|QV1CK}CslcxXV}`;5Hoo7*Mtj`x z^!;T*bkPikU-zVvjdy$6XM-+ly#c2JsJjZOml@Eu@A-%0GAY44r(!4P<5Nw&()OmF zM^mxl)m79%$Sd@oC&C?1x@AQ`*o)iiz`MNbT|O3=+-N5l0ToxQ>0ee8xnWz5h6np@ zCye&8I_?B54mqb?P(Bu2kUhTE@I+u41+UyajPD!cG|$Km?#XhdR5z3y~@OoSnuWbM{2= zXdZ~2L&buRgKJ@)kDu%-3>qKAtx%|EDq3rY>S?9nWEPila> zd$Bx}-FPq9I{$7lgdH{IDo%cGKSHujdiRR>YwGV}RP&v8l4trV39+L(jxEit!$Za_ zB63zjBzyIy;{yEt0Nuk9$hvi$Ta89Udvd8(9skH0!4gb>;w_QI8#zKhkH;Eo{?&xC zB%^b&UK?ET*n$TWJ_NfVxAjM`N}x|#B*7ge6wV%-jBAA@z6Pd-Pot09ExpCpWwyH~ zx;mhzRH@WnD&!}BRngtIM%$WPe)3}~rO=kV!y6SFUE}azeV~!Mr>*BsZ}zH#{vr^; ze?GHAV;f{6TP zX$0I{?vYw+FX%VahL>ZbboV9lV8@=rNoAJ7QK<-RDf=Vh9ivp;q~3f1AtdzN|2?t0 zK;jZ*-q)j;_<-fYPfDHE=G&f%$qy{$9;^v_d7Y_6d*W{jnIGryB zSWlu?m5Y|@=^zuju8-WLS`WY3%7E|UJUEPPd;W=^FR4u!w=pjqq_fj{3FG_Q%0rQE zWZH+`>%8;kW0{1PBA(*0Ho;o^UVIg5oNdkoH)s|c^CjDdyczo)^nsr4hM`J1HK@!s z3r$K9?;h*PguDqW&E!Bkcfe4aUZW~1`KhQj&p7t#w;4mvjtBJ)EZU~HU-xR-?qt!6-al300PE2 z8ot^-uT}1~u=1dZ(!1(pOq4k-<8G=sV^J@13-&2^^yx^o_?8uAS{xe7tr}?Qny@xb zIXZVw*y;|-4GqlXrAl_iTyUQ3EeYFPQey?ZP2H5L9p!CVtZriciaEDE`}nozXGeEk z(WhElSq-lSsO|Mo2%ZRWvUMr_ObUWQ;F$J(jmJ>@r zD7(J#0MF_8b@0FRQSp+L3;+M_BWsrhG>DW_EKIeg^chQJW8M!S1+W? zzViQY7;9C%d#+cT93U~{No;gobuu#M!TV4<+KO6xWlx z0=+?eYY2Dxk{+Qgzi?G!f!;1;8E_q;D`a5(vz@)cnZ3YsNw35{P7i^jJ!W@kZx|ZP zs9jdy&l`02^@zGSepH60IBvkt`_^0eCdvIL58L)My69l-#f2~Wuq!R2-m%%ssr#LG z2SU(%>uvRgz7a`fn0x3p;UtGdZB2T~o!BJ9$xW(GZ?XjQta7bh_jgC8<2kqfB3%c3 zXpxt?&z$nEgm1FQ@m$jMjC^3swJV03r%p3L=;I#c;+oZOMVjKa_Lq6>7%oJb>X}+( z<8bZ!-wFzquP5wWbJC{l7rQV=^r|GI*UQ zt@jlE1?V z@VMv`^8!)=--aQ$6-Ekg5G*Vw1F8b|Igp!MqafHiPPkVy~RKR3FjpSk%taqjPyuY{SukVS3Z z3_<4*0hy{aA2N{886D`hH(~BW%G&q3hNh@*)|Q}zjXr%r-?)V>f+S91nQ?3yD}K=Z zh}Uiu=xQjlhg0k#_J_)8G0I$}LDH@iZV3By@^wPPaf9hJa!+jSEAC0t=Z4XvPPwLw zg1Y5f)}|C$xn=mXo7SLe61H|%1=xI{-3KFsu|3L`YbC?WpEBUC^I^#f>a^_&3+_3ZHrEQR3IL+AH(+-!JeU#(4+5V#@pW0Y&&$7l0;*lz3Ky$0a?^(%xP< z9Y;qf^)Tj<$QCDTH62#jID7T{J~{X(eG$9m9J4)qfi!IV95eZ- zBGX#)LhTYHz^8p;eOx_yjijscBr$+GYFQm~I<)Gy85?ji1rvR4(#If|u5bI-R(=#; zSUJl2=Q&lX?>>vWKL0Q|BPnA0_tysLZ!V}-eIx?00lt0x0Q?%g=j6oy`_{-{8oXkV)lo+6;gtjOpo);jhaF_MuN)yMq?SGuV?yH;D&Lz+N|smv-0 z0=KFy0q(RkL1IbxgfkX47Zn;bsd!8D$@bJ!8{MX0r8jRzX$<@Zi4>=datlLB;kj^tzMXhh=4_{ zRGYm-4_4F?K)pGM#za_A|E|WjnDfJ9n5xdb4%)=F)K=!gfXT-k)r75eBG0lT>?Yr8 zqRfcQ5!jkhAa4mI>q6C0D4bH?hEz*8R41~X3!0)+O3e+2KdNh4EjQ_Fg8^1XF5&^Q zcAim{As&F1<;5ZCLn3b4JkY~N)j2X#<7cg0Aby!|I^zQyqZ9Fj`I37y>e)XFn(Wt- zL&g6ylXiaOZU1?023Ojejc@tTH{rMtJ~}g=UVE*UNTkw%lVg> zgUJn=^N1yMxC7N)fSzE|m=#r;2ZnMP1FHr_2d`c{r%4@$g70M8Z~z_gVNT%wKj(oH z%w(BW%W9&JNRAMPeq#U}U6%IUtYWDM*8Ii;TmMbV+5G16mKtUI_FdqG^qIMTuP9l> z@reKhPQnWvJ0A4Vb3Bn@_M9M!T#vq>6;i+xMSPLVih2dN4Ns@l&AX&sVAMP=fEsJN zXx}JrYCCj>fh7W?_{xO++w0svZC(fNQjOp}`2JrwdfzD=;ao1MTi5exD4FG^2K-LBGJ z?k+ekE0SUhg@JS;gI}rz`4C+L8pB}Pcms-nnw%P^r64mY%IHKx(}v=J>Z|t-`dKk$ z>O|Sn=GS7r&6Zqd=|PDI7paH%C@PrBeP&u=SzHRZaA_-ivRvR6NFka_ePb;5!?M}T zqIJ0LTWg|+jJkViarEH_aYfR*s1`yG8P9a*XthVH;8unJq=S<1MO^cIfb<}ird|L= z=Bk36@7DJAqYX(5GU|HEmY7Q6XvVrM`HUWXlidTD}BuSH~fJ$^!4 zOo4CZyGaXX>-)VZogVc4O63}}X=M?NGZO7?^tY&o6K)aT%}jxLBC5t+eBotE%BEc_ zr|G&pugoIVP)YFXDWy7>sG(C;B*`(7`G@I%^;UfJ=74@jhyl9m z!*mqLRE?6EJG&`3R2PYc!sk~7S7EK%^BbkBw>xsINx~QR`$x8dM1HZw@|#D?4O4x3 z2(4J+`dRM#iORG+=j4Z$ofm#gu;k?7DihDW%HyPMkLxV|61Un>w!B^?Wwp!A8D|kR zUqn}@yLJo<2yj>H{drs30X(tflqf8&H$d01+x?0?W1UXNd(tj>*MEddQ0L~lwoBA5JR{U$5Et!LdV)NJ==flA1MO!3szVkWmoWyU11gm)hm{E}3tYKs9FY#ur}x?XqY zk>1!i(a(fZ`Bl(VIVPf64L=}-zZ$g5Xe_I|j&qP3ga6wl@j^I=mHt0BrRBKQ@zu=1 zzcRyT&?9*RYSX;HM(R!y9 zI;yK1xPJ@RKS_$PW)l{+_!ylkQU6FP9pE8H?;!!Yz4;MTra=*$EZivn_geaj;lxX* z=6Sq$!n?vLU^L%h+`Sij1;77@R~uDWtA5Swf#aEUP#m=1f?s*Lzr72=bbynzmbtX0 zT+_OV%WitPvLHmhjgLO!qUzjCP}T7hhvl&cz!};#S4J0jzyba2-|Cq24!)r%I{TDv z*DSA6k9r=gVts8eIAiV?Zla&7+XGA^l7YqR4lZeRD6rm8h$qIZr>tg(KH2{`#^d`w z7#&UL^(Km;6mV3k{PHMbaiK!ekz$IyGo6G#Uvzn>2YE#k#Ou=h+<&dlm3W@=IpP(G z%E3EX>qeB2%LFt=a(9%REVQ5I%==WrJB)JJo206n|S5o37L|~)C9&@ zrjV1&_w&Xre5oMF)&QOZR@X}CgmQ|FU$2FIf zYflhf;=>BK$Xr1sB@9fx@iF$lc%47qi!q|in|lQp>eT`VB5(GC8GM=tbEgfOv$y$A z??&O#)WO$9`pqPohv|6)JJ?G4f2(^U9-5xBHkWbVs`vn-_9aAj-AO68*6&q*uI!=VGqf zDC}$A2d%7LXwv*Qa_!l$I@zSE$yQ{*)457TRXv?o}-q1h3i7b>p1-Yh3ocL+*NZJ7JC?Yb?xVu zpm#C7L(PmNYccb;(I5$w_Q@Zi>_~q16Yu!z%OnB3BC{x3m|N?Hn_kJ}r5Z17o3hOZ zW9KQHrjKhvxj)UPCbqJvQYv9AlXws1niTHGCR$)$-V1dXoiKswzuf|*qRI%vqC$Y- z6=Pqy&(on)8k6~Wm1?ua(3aj{Yxfc)jblip%S@DwuCue8C@zvVPM#X#_c4lDs={c3bRcY-wuU%s$-alG9|8WP=6p_f%}i6MpVm_%4Gd?&QY zH0B+MBF=U;xkFJ~*7KXMpe{Xa0vY{Q4)ql4wog-h)+80a*Ze$5kt5pX7nFIWdY_l# zCpMiM47iE}vM`6s z|5Xduvo#rp?7Y^a(7ML?pdiLn)CMimM|V}bvy03uP(@SI`7#>)sY$g20h6_a^FRtl z=La4j{oVSD$1``wqs9h0AUWNKa-naBgf2C5@nC|wBNgtH(tgD|GDK13%fHtiGTBCZ z%hTa%V>j`~|44jNvJ z^$BV*4@)Oh^RidYL0P#GVD$hFrCsfrEijRFfrwcK_$(p9`^r&g+Y_ z{D8j6v%Mo?_e$*Ml}%cQF!&4M)wP%>tE4y88f_~l@E7v`tTFgWOy+AS=hZ}g6t+#G zJ5D@XLHh;Xzf{*!h7j)lzwbH&tMr_*G5aRM2=EG)3%_~CsE*7xqG_Trx&9vLdip9j zndG7-IGIP?(B`n0@KP2Kg0VSsJsefnRTC>iGZIfT_@a<)EXj)JskE%DtIYo>F^ypJ zcJ}htE_A*;ZtA98tn9n8jT|U{{p@wQ!b=f^>h^c9VUSh=P}%l!^LIS_H{1D`?0f0H z;i0R|T8FT;_dos_CnX@&)LI_6BYVL76Nc*pPAuyZsMAQkE`J{6w^15ouOxp8e^nDdyJ` z)5@hd}C1r7F_IKJh!17)vcW0>cVY)m-eQ> zG@eRrIRhMsFXN3l9yqM`o?k&v#p94<`P^_V>V~OmC1twZFvS)ZIH09;HJ4V1=rU95 zthWK&4z*4s-wmgRuqw=yuj0oZ-n{)KUc^dwXULA#_RnbcB;E0;;9FQ#Q?go^7hhD`!|!u1tY!dP zCD-_Q@EB(5-$}YlyBUijzYEz$Ikg7fs!#eHH0OZs#Q6PnHM@V34--|>NpT##lOdZ# z`?}_=Bhd;qP#hQ6fI_+T5lTtv)Ee?s?9?ucj?p2HKyRu@7};L@jI`FfK*CGe#zK5P zRP0rg)s1bQ*M?-vfV+i!zFHBmc zyoe<2tL4?y?h9K~;|DW0Yg^Lcd?BJb_-Csf(&BxahR$v7Q_B*)Ivr^H)7)j0*j*pg z*uVs8duLD18eGHo<0^81nChTpLuu%IDJ3);sI=Ts}QG z70<2TF#9`-HyoK_v|rtnf+$uZoO>nngtH-ta;2VEm$Ey~b@I;(U&&(y@00z{Z9JmygGqMD<+y5x$Nk%@ zp@?hK45s=W9KVFaR1sUkTI<;OCU?iBnOlJj2MT`zy52;{sLt!-pBAdp2M?2DK_rzk z1M3H~gto2HG&uChM6y?ux-_n1#6HMq58fg0`0-`-o~OcEB625V`bA^q7cmH*mdjdV z3N4h@poqz>sOI92brG0wbc=RMhH#-;Vc`5w@(V_oy@LUrFKw_q*#Q6xv^al7N3#Z^ zM52?`v#K4byz-edQ?=Z9N>aRZ{(Ik*qM5oTMSjOu$|I6SA)JHmbY2~aRaZin(>$6> zRff`@y(wobJUEbVm4-$t72J3eeasW@>iLDDQ^<`=7BV8NC?%WRY2>dl>HgViRAb!j zDKZ!8C?DOBWM-N?0w}?7p|CY0bng$qInvy0`FZAtqFrOcex4~q z#!RQGYB+DdsQR680#4fK#t4y!qoq1k5>z_zZoocxr&7^hY_yBpYsTKLRG@A&?Vmp6 zKIc+5xSb}?+fpn081H?=x=ah2NH>|52QYyDOQTOuCFel#1qb+zfueD4lh( zBmy-~*XwRFwK+UV=X~cVQpaoX*9n;qla&YfiC8A5U3x#mcY5=__BW#ktT4%IOsn1Lt%oLV8?TCyf-qn1 zRo_aa2Hwa({^tY8g@q>DvzZ9Iv!xs3? zG8?Zp!et@o>4wjeq5Pgf`P+yqSOZU*s$go)8eXwJZrAk5`|IdOX)fv8zwgpkc7wQu zg}b;5MK7@aMy}2LtleiddRBIeyK_(URC)!_k!g2xHYNwH=axZFW^3o}zZ~9n7g8G) zw%S2&SF8|!&J#=r_Y+l=mjCKetwZNzmWu2%XTGtW3%gK$N4z6PddMGF4V31;%?rdb*ypplySD6f*H!+;pn`?>Cv=B`3zYN z(7rh``o6@@0vwauvv0bX0mWAfL+)l6s)TMm!_8X4o7h+^Uf@(|iGSeTHtA2hWC%O< zL)6QvB6dg;0Y4d%DO#n6TWjPpM$>goZ|$%^`VI9lm&Cydt@GpgSV zxgT|<3T6%$Y^H|Wu`RX0x`{dL+Ku7J>#I#AEXbqDZ}uchQu@9!V4a;QR$nxB`2Q930yfqIYWYdk|5uJh~{|COf<6a-FA&&onyT*2L^^_(;Y) zBDhkhDSq$Bp(*_}(}G=h`LdF3-Fwo*hRC*v44jCocP?{Y;n8#5y+|W7Ywzf%3yTRR z^rh$eFSFWWlLzVVMgLqxKmBF!=c4nZL#C@hT3?+7_M4Zxq-E7h6*ppI^K1Y-&R6KO z`5=fbxZv}*69+iJVpV@8C2M19w*~&0ks@~>#pmLN$!S;ze5wPvf4h2%mR3w$xL3Xs z(ump{Ukve69>3T1e(<31^Aj=2VXde{!C)5ZS%Hw+nYB%j#7M{2Vph z4Y^s#PKscTIDKrx`V+BLSoIXWTi``dZ7#IUzZi`hAusMHN}m-f(~FZ+pR3u>pPVk_ zk|;~NRsUW(eL*>H^t=@~|HrhVJE_NPBuPllh0yTMV|Dr4Qj&B}GB}aI`+i10;$fAX z#uYd`n9e-9UY!T7f;ZoNPTp!bsW5mL2)1ho>b%sdIMS2(H5k~!bN}}|xHmBJfbf8A zcER8A=fO9O&Y(ox3%)ICDKgjwGTVZF&Ds5)7+i~u^w2_FQmhI`eK@{|-@&6*+R$Vr z$7x^wIk?vjeD|CYnq+EqzRHTkUB*qnlY!M-+h9oe@vQUlYImzd*TFbj*EX8fjRK3r z+XE2e*d1QgdUZ83vEiNJg#)?GzO3eR!FSkK5#~fC^=BMsKR3+IT{iC?`_i_w9W|!X2Zl0wc=rfzQ2#?>Ka0 zD?=17nkxfi-`(=kgf!-++|OUI{(4KyQhE2BKo7Q>AaZAoe7YHP+OpdGxh5oKY|Z!` zh`IOFGI8ir?jTouE*Krch$S4(~DnI%UEV&k~m3pVv}E7g`dv%3cm^a zFKZ*~%{%;O?|8DYs*V!Bm-+YY49zE3o1<1M!%MR2B--S#N5*K*JaI?mQt|lCto&#= zQsKQvJs8g+dM@4B#x*j0I>@ZY(z_JHw9vUiA(*|R?7bh7g3P&@MSBK zo3)_1JJq+g1fui*xtID(NkuZ9d_)IL`E+O{@}J(FlR(r5kJ+E&i5KnvcA8B9%!NJ{ zlTmlk5h5no;Gp{Fk$>uLz2$W(v?Q#3ERPG9#8!xV)C5R%BBA*X`YUaIVW+>2hnhdN zX4|9&T?|oQx;rm*ufbn!iCw4|3OqlPsMwbrJfl8h2r@vjk;JG*EZnpjU&xAx9V~FG zF~BB5kFVXNJ=yX%7rIk!T0eVy=7vT@n1(U?K1JeORal57Iz!c@ZwUSs$GRJ<#mxWL zHR99~`7h|8NaL1#8anT!r!Jq5ftF<|KgxbY^%h?wYd<>Wdtqc|!r#gh2Od+oqdj+{ zGB`;=I_v$as-swlxr|wOL-u80;N~DIRPGb!^P3&9-5FNnF?@Bh>vvD>lQnpAUT#KR zBp%277cVQnf&0-gHXcM!7^=)JnlII9Og4y1+E1;$+9XoH(@H zZD$^N&p>u(j;GH@wj>d^!_UZ1Lb}2wz01>G@{1+0cGa@`{mklEyOP5>(Fk`>i4s?k zq>mx&LLNF8?dOeq_@SDHfp}!TJQ1ii>&qV*OJhh%b{BVIj%PH|#ogR5PA6Brs!xF& z@VI9IyE}*FW_`u5n0HIa(IfW17KKi_9*B~UBR(Jq*B)mIqBn$wpz(Wo%15rZY@72k zDz|a7-+%07!W<;PQxbU~;V}HEJp6|0UXKdDqXn-inoRp73-}j5$6P~^<&MD*^E$fm zzVSCNm?GA1!uIII^Ve^aQ#cP9SLxk7nLA_wyHV$y2irN{*gzlf#(3 zrbkrHzfAslrmsC^qmycd9NsIS|Hu(Y9MEM=#PIcjM+Q-~0-hOd1E9>8z7W9jzAw7Ecr!Az<7Q$!J?@>l)cVS|vA?zPC9l=v zOUlsIeFyWmLl%Zd@Thk{wE52gPMA|s9hZ2nW^nYH$Epuw@nF7Yw(-yhHPK)PVco5| zb-|=FVeX-7wkSk}Iky8H?520Ew%;mcvHBZ)7MvOF=YbQn`u?1&fgVw&a`2ZA%Fwmp z*d?-#=ti-b_~48p#v~Ts&v{ISJLR1G76pxQS^!^LhYoStOVc`~^egH*yBVnVa5l2^ zoF6yej8{b+^o+GM{~cRoLA4ma=I~k?-Vk2!rKF8V21t^con@^rP|y;|4=>?vM>` zVye0}F-QJiMv2>`fhQAIC7&JX+!}U%S6WMmF4-dZidF)T)D|R{exsQc;=+Zq)o?#p;RF(RwH%x zVjcITiWBs^6nS2_ew_ z+P(PmnR2UGA`8x08*wGS`H}gujQz0ft^N#Fer{3MaSe1N%jE1{mGta_O*VIDOZZf} zuv}@iFH}WzO440cLa)b1gqi@Cu?qklWg~33fHCgX`DhFDe|1A{)u6bP zoaF{Th_Ml)mW*5xfMqWPQu>^69sCTcUbq#>t#Ew5=Sj!4!O(BUUc@Csv2OgjdiDNm z-}yf21(ooJ*Jyxd2d9QthOq)Bz@7~;{wxaN%^qYul{gBo*^KTG0G{1HSBFPT8J+r0 zw}Ck_-h!y4HDax6oo#^;`pZXlov)nCioC+-t{(VH3J%3;-+D_QrZ5_Rb)KSE)5^|!nxKN52) z?mm2?907og^NWrq>KWE+hhNhQvnK2VGvwHCb2V`2cWcyZyvN%SN~`OAtQmW{!4tQc zcmK-92rM$xw#ff)fC*2Xy8KG#Q$4A$aI-f&g=?0Cc*K|(3&}D9$>G^g9~;KRB2|TY z-74keuK$vH7>~kpL-`E*wM^)b@Z%+2))p4jbd z@Jg>mU_Yf}h@Xjf(=}Bn^dk?wX6V&qvD|*Z=i<1Qxc%j?bS#YcLd6NZI}fG!^Lb&=DKj5=32Ire#F-| zG{jsZg-ZOZ?csiv;`!m+$PpW$&O4QL+m6^TB0j=~dF5k|`TaSUTlxI&lwum>wQOqU zjn_m(n%*H6FvlsDVzWFoG}I5@tW5X8*2$g zhuJX7A6zKp^D*JE@Oo-mm3ubtKJa)mC-P;+&7?J{7x!?Pb^Sw18Q`%^?#)xFN7X(b zv-51m4}j%QM0!=-%5|F?DWbQo-fhK5{~~%cm2$eAYEZ%B=l4T{si8&fx=#3l!!5?< z@n-&BX=S$v`7>7V6QV&yDXR*gY(gQqcdXrv!Zva>9AcvVI*b>hEhz?qvQkxp+;&{THIa$v~R#jSa!l7l~owg3dp!UBoOKDi8 zI0^fKESXHf+_6kU9fse)C2aeg=cxIq4fJzgpIScpX=#6taR34t$1bu_G2^7WbS(1< zd@LROB1aO}QsAWf$~dRWsCA246l(rV(=!z{Yw7Roimn_`jZ#hctUusSH-L=sJu^^R zV8k~1b1I!!>1kNytH8huN4&Sr8~G{-lqFj)Qa}_MKA1a0jx*M>zs5z!Lhl=7LrBA?R55M42c$9LI2wUy|uppdR}u4C#YS03iT zPyXe+E(^$9YthxX<;&GuiwG2CEQ!8kWbBU7(TMxNsOdGAd%z47;&hCRoad21z^y6V z3OHYFSp7WKN=ek}e?Mh17_O@ox|ZVi$!=6w$-yQSFfH>ET$4kjpiZL5U78q5QC*+ET(y0yX8yOcP1X0m{7v{IGiQHQFk9s69UL;u)>I8cvuo}k zgJ;iXCgcmU;(}YB2iC>7iw=A2(EBRy7`Xa<1T5j!kCH^qGurdRhYs?7tmB^HWbU;c z9RpbN?wiuOgk472d0r0RJG6_AoRYF*qtjfwG-0xH7WJ8{{3LZi3nq`?0!T}7TKdvt z_TLq+TAw4rwadP&BpxJ)7(ZF7hFL1CM(6AqS?7+lK?PMEbpd4V@{}QFaul{4l)2V% z`3{9iJiZ6Bwqi0q*(Q-q8KRkeeCX9#W~bRCW(udcfyC$Cjpzzm0Drt%^qNQy%d}F_ zM-U|Gt~Xz+VYn={T9YbdnS4n708l(-7^$10#UA~>$b3V-d7lt&a^T&39eEBJ+w(@t z?T75w{*bv^2+)#+=bjqktlPZC8GP*w%ce1BxhLwu&Ym~Zpn|C*hL*Lovb)Nu5PPIz z9dHkwmR2c#6`PGY^?!Z$=hStUVOlbAEz9NePA+Raos=BaWZ?+6HNcB9jaA=LkF)UN z2oIX)?Dq|eJ-n1aEXtgbY%|=9AG3|`8j5%H?sJ{Fd7Ju|mPz$!SgzG=a3fIHuV(Ko z@n*{)w$EZ;SPvDE4&{vJ4emcB0<0;Zy6QP2-%k}bzCD)Saoa0eZ`A5fk@Lrwx#VGL zqmX(jZ3wNn;@oKT>KX#nSbsFEbJ09%);oxry|?~NAuwjD^Am?mOpT=PCRO6<#;s{Q0gLbSsCYq>;> z{tuUg_4+SG)Z3#;EgH=IDDmnI| zX}Op#Wp5^iwNMH=w&v)PF6pKb0aaqTxKBlg{6TJyQ7PoOL!71Pz~f(vG+ov-nU38w z%9~kT%lTRY?-mCJWscPNF8b*l-n}sm`nG2GWGW&4oJg*yfC22#Drzh5^ATCSRXrYMV>7t`J9h>jQBt1pm( zR=Iv=#JzQg{7!!1fWj>#Y-q-Y8H%p*2aO2&JFaQQ5|x$6ffT9wNB0#IQ4sgCCRVPU zlp!X19LRI_pHF@7ZE@wt;qTS1A!+rE?<3CWDOAj2*Z2Go|An~j z^l=zia0t(gc}hS3;7f}f)O4GU*|yU`RF0ZW#a@?IG?H)&Kc3CmlCW=&WkZ(TuU}qF>RTJ7fH|-qF^1 zKJ3J(six>z1u?)GBjC~?Zs7Ce;Kx1^6n@Q!_`JgFPq#cQo+d$oEgyT>+_ci%vI@L* zWT(vo_kHRdLqg1(qTTclB$_Olp#J5p8TDuTNAovig|>@0LK!ny>eC{&tpLN`!`hkt zktgTuo%2Pqmp3JGQeKd=q9}-iB<`_X>Q9y99(@0=l;59uE^S+COKa+ecHyuPNz!?3 zCO|!M?kCKuqVjK}7f{x?)(E&Bf2&@0iLS}%5lm@Q$6Fy;cgDK2Kg5&~il>N+L$Gao z5*mUgZe#AGd&Z5cp7+WEybuyx>nmsEngfo>UsE`;soo6!K>DS+_=2%rYpp2_#hX>{ z@5+A*n<`MXt_D}Whi8)PkTPS^<0WQ(E=FVk>$|rFMl?g;6=m*+mn@PrJo8-&ZncUr z)|!(3${MX;7QG{s#{~_n6&Zo)=3XAF@F-cib5IK$!(YX6&b*H2R;-nd4C=|BkaR~X zsN3F3t62)R;Zu(Ruok*`PwP-gCRqKpa&Ov#{)%zY(CZ0wkRS^3CnvrO55_WbqJrl1 zS#1_yEMdALOX=p0etVJ=LgNnMjyfnKi%pc9l8H8uvRA<06Mw$16vBEno_4z<6ZG^f-&#Sj1?=t+&4#%bzD5JL+RWI< znlP)l4d&s;@yjc9RZ;Zg5b6f*%@t#wuJz+VDyr3OlehFs8BOdl!UOW~3$Xg#^s zZ$TBR{?9M)|FC$(Gl23QLFLkVl-|nM$K9eB(I%Q$ep(u#&WtS;r2GqLg>Vu6%uoBOcKh|T_-E65sbw?Ryv+;~ z#IpN9qJFu77iwmHBg#tmPh@Km9HQ-#laHaI05|p7Uae!R(E0}C{s*xaP8g8LKuL^& zR{L@bdr%vyxfCO)Tia|)N4d+seGj5CieUPdKJ)7|PDLESdrg2Tz&>x@y6)L$?HJSg z{_R{9AlEeg-ohjlID{4A)PyW^l=C38tqX7ZXNFAF;y4B%Y~351-%>=H)tBzMpkfpr zQ?V~{O(UBtd>;)l3pZv0+HEhV(0w_4&CZjL; zrY3Fr6gHzdhZDvH96Q9hpfyC9RhI{2jiOsy@sXnZF+2#U*2D6=&$e=bSKcD2<)!p=JFDMaQNuFyieRJffya2Rte zF(cG5QF<(wdpcBk;iL595o`6bLMivpf;vj;Fp(rbx`D@E=LJU6`yq`<`Py86V+(^! z{ePl<9pgrNk2s4qyfRBn=s9IYWR#5r_8QfeP*;9z$Ox)$#GloKI;$I4b zoVe@iX0L|ns`GavBGZ79WB7O*&7+Parr_*Zv)PegqQ5o%a8EcsFFBtWw95ot-pM%_ zP%GTbhj!+;=%oI-I;_0au|Fqqn48}dx6fia(_WfO?T5T$x3r6E{uw+PVRs&osr5Be zXa(Ww{O$@(^ZNF%(Vf5Lo?NAlZiF!{}{t21L*kNnB32kqiK)Dh-E8~Gf_*Vg2l zr6IU3&fLR(F1OBQ!|W-&*>U{akB(+~z9FfS3?wQx@t^tAM2vsQZ5?Klm~2rpD=3Cc z&`1=iHdp`oAy8vZH>=Gd*k1#uGuvroPA(IhT>EGTEJ>K{Q(0B_b)amD3}?|5U% z6A5tNM_yk=nDgH}%EXRurNke`Xl_XvWamUJjGrVr>t)Bk8aRpXeMn6^^I=nrc_tz1 zvi)H}@Xv<6%6?@#+b<3$DdCex@#AeF2U~w5*ve*O)4|c3ZjBiEcHQ=(xr1>W_EUHQ7|{y z_xp&(D5pbSt6D*5a2uunJrmZkZst$71=BY(mbF6K^Xd}G`KtSct7OS5dE@!tONxTI!HUl~>jV04>+ACs`PmEYh zeQ5MSTJ=(|I@CQ@u8l)GrDwAmR9Kxo_WVaZx{D93Zezgy$1(+m3*Wtl&weL5@h->k z{*-6w%|Ux=Nc4wojtT_=t@89a_*_TAEKKWZXuPVbF&dq{oR%9Ly0xl9{lnuXD34m7 zjdq0G>cY36cn_waQ{cKd8`Yf6@!l)H^S8V7Q%30I7BG@nFfYaI7-F3JT7k%|FoM{HQ6Lub?>6T*9QwT%LlOj6Q|Q zp`@}Ce+LTYG47OH>W*QDkNEgf=~)n`#77910RuUqThFM{9qenj`akQ0wXmbOr4)se z5yahpWPbK~nF?}sOQ_34uD?nkMF`G&#B*_k!*&f!?^-(H2AcOo@<(3o$2_ofn+u@c z63`;ah}3i%1G5*H*R1jY)xQ5k+zAb;1)9VL6`d09Gxl61*_2MD4r^w9Nd!o6&03{& zTTOxC&xh=15RL3GQ7b*C=$2-SFYJ)%a?v9Ad~c(=Ym36n%TrJ-7z!*Ct8Bjit8596 zMLyq6b7SgfEK*m%z~O;Q_rsg{2!rH#;gQB%_Aqd|u5kk`2%9gn-v1^J!}BZhDnStd zEWOg?&vzuTNV6L2{+9p})nS-V zOheD?7Qj>c1leC8aI{n^kIO^7KtcCTEybiLw%ROKx8fPS4n`e#Z%>SM_wu$OriLW; zLbOX0R^Tv_R3GbB(V9!0Q>XMsZ>lJ5$0iD_FCwF11S)oI3q-A{OZV8&Hc2GMIE4A7 zVvgTCDoWEVOB;cT>_LuZd|VlJE*2lB^~@$*LHsxK?P~BPWox5FUbrrTTt%fP&n8C zlqW#P7>F9wiuZouFO~1rkngN_zYng^f5U;M`czAxk+VTu$kD(7JiC9ovx_{F2`Cwp zn%8J~J`%Bb87weG?EtEQ)!5(?A5ks9ICY2A>uN2v(Akiy()><-;HF~^d8Up3^fEWCj# z`HvA1f(0weoDk*iOzWBwfw);;g z=r_XqKX6qG)!9`~hoxhAmZuE5XQ@#_Wfj{z-)G?{2|F7&x}b6rzmNInXT2zygFFlc zvanKh#-CM6ac<(F52rg$&NsA8A@HxM27_&~Xa zrL6{B6yPuz#mWC^K@_>C@v@t0w&S{L*XK{eU%oL{wa*okmvX~Y9A*U&69zLgTsgHv z70Mys2D$?yJs7k89J(#@>^Gjoa}w_&F<{+$%g*hULuJS!xdvA12;`C%vAEX{EN+F+Dc zRD+one2q*1UMj|~RQFRoRZ|9n;|(ve0r2 z&LisW8!^#&#qzGMwm zAB~$1L|CM(6}LOAP`x>QP1L_>2Lj9Yh`XjFeBf52s+L)dQUP)j9nx}G;ozemrEf%E zgCr%@)sp}Aiyl$k&X7;DGWYWJgHCTyte*}L8!?h zf~Vjb&|iTYrLtkT)&E`f&n2jOJWKZM~5?c+*UEwVd4C=Dr}+UV+lI=uUJTqv1VBH>-yx_Mg_VExQcZ?yr&Gx7?oTV|6A|v z@~Wt*9q(xVFVg%EX9%wa)5@Dr-61P3sf)Fh3**(gFf>f+u;;}4$P^v!@ZMbn&@L*b z;^AcxVbLoXD3}1aY~d;TWTog<{%aoSNqhru%xmLPyN6%ZcbsMH*l*?L9!@p`YYTcE>6x2f(%| z{ZiuC?;PY9SeRXg#{yq>19Jpb>bf15mNfyJloz0no&hFjDlu>4uXJxRe^j+TgzZ@t zb;8~K!sODr_|^Qdb`Wi=UP&;~_pyD9ICN|XKA#_N&|a$V74lE1 z&A1yjR`M?kjvIB!dplke>@-sDg`Lu0{$M6#IC=r5u~~d8eN7oKEMcn*JCa7pOux2qZw>u@XeW%czo%V#|5+KBSK<|f!};i^Mt~q0 zhQ)vWjVx~ewZLTmKl1xOdC$N4Vg8n;91?Mg5)0UI9^?MQ)-Upff*`I=`TFHWYL`Bm zKX8ui_Dk>w*}UAz_#K_Cmj;E(bJc97^W`L#18nTfBsSr4QD?tZ@ult#rEq)1pN>wH z>c8?o@?CmIME~|{T_wTdTPH$wwT2$V18I4JdEb#2;HQIjzsXb=U6*K2q~3JmXY1pJ zBl=YSSX1%Sd9>)zem;0Kx3or8yG|F=RsSO z{&LtQc`kWylx`!CjG1!`m{G3(xy*x|{-=-B%zd#Q}hy6$y)VYF7`#=Dg zr~O3ne9en%yO)4NVi;(-9=Ce5F<2^U_!;1J@ z6<4E{i@A!a+j%oj##}7+wJiI{3Pf+9%;buueFub^8IKazR0+xTXKQz;|1fkvo&<;E zXNW0Cif`eb3*P>9miLJ7@Z>3&k0zCCW$Hn5hbbXnjdq3j_w+fRpKt5BYJYBSYDGKV ziImf%UQ|4YU;g+&gy`s1Bk9rXNfHZ*X2|d;&9%chS7N+_hy3^#mUrEouZEjnF-k6; zsD&);r&!y`G1D|1VzS-s$g9T3)~c=_?bZUarzaff>auN4V^ZS}atS}{Xo_|@S>a1{$a7v}>d%x)=w0G)S zyl5Uj(XIg+FcPwPLmibOU$O207Gd0?$Y1Q-V+f=(*TGZO7!%wv?6Lbbez2#aP z*TBXm4|l3+tFHvjr_AjZ^Mk!Xg4;Q$FB|gHuid(S%qaGL=y@|zhZuMIC0zGlG)fgO zBvGm_buD##9j1&OOi`{YO6Q(=fO7ugw8MZb(4S9S+WZG;XBpL2kOkltD5ba;mr~q{ zdnj(j-HW?BB)}FZ4#kVRyE_yp1b4UKZowtMZgWPgAk_ix#nHDL2&TZ$hI-S}cQwc|_ z+ZLnRci)5>Jk#srjO%1(56Un#S~d8~v(U4_pc((Y^lIYZ+EU|hKf@${qilJIGfOkK zf_!K!;qcP3+>1yj^b+0bD$wm@fUccI17v!MWCdZXh{juhG*sshZu^6BZkdQC`ZVZ+ z+^So4Cye8}pODxSi|`m+I0xX2@(YW;`|)nZG3BavnM+t!pS~ZHJ}3H38_y>=nG#M~ zKd&Zj2|c)3dM@sk42m*z?DLwgk&*!?!*7#G*rmIpX=RSJDltLQvc_m!nRS^WWtUgC zu-}Plqb|z~_$O;kV#@m8QFo{~IKrFX{N@f&1*XubG*;{n?p?H(bUUZf;AL#aDm^t( z?0?O}*l6Lw_71aju9|i$AT?oA_tdv5elk;X@HpjDEB3(o}C!axWN%DtcM`uEt<^{})r`{*wnPI5HUah6!vs)4or$aUj9r6Q?7aEo z6Yo-aIwrM_Xu+YnVTB`4?O7@7vd?<8U zF{0W^Z!zV2{qeDq?#W>i_B<9bXLHCl6UX!lAwCZ`Y*jA$q2r>s>?QO1U?H zs2cS7M2Q^NcKCbHQyb0td{NBWojxO!vgO$7it=>GNRh}UYoM}Qj z?d{~|I)DFs6Y)gRk0I^P+nEQ6Q`|Xc`|_3dm?<)}Q5;<+f>wpc)BF7tBn6+n{O=2S zBGBfc2qw|LnIDC}#B!cF1n6dFYd(%@&$fz&J4U>yHyV2}Y3*@!+*n$>n})ZvH9=#y zCcrGxav>;CC&|5<#umR`hPdht$%hjp%I$5xMPst`5JSyRF6B=e&zKr%nai z_38(&2aHUiL|%F$L;B~Tb4^lCFekngosDN2X}>cBtqKazxuC9`Cqbn@(RltVmWF~`J0@ugzLX(T6Z~~(JQ*wJKVne+(R1w1x(N%GdAYnV(m@lu<7|-)N zt9~`90<^g=rf&|Pxbzi%qfye{^37y8_h5a{lJ)~ursigDArpxi*NW_u&zg6zz=g{Y z_Y@y}YA9AFmac|AUt=a>B=;islImd;S>DLZ3#p`M!V1nsDVHmc6utE9)tMrmY{4-_ zyM3ZqpZqM@6vY&Z|=IWGL9OBDr!!rmNX&e{o3=~d};@k1gdyKu-9UE31qGKzX)*I)Z zJKup1f4I|bAW#dB{PrG&naS4~vob?8g-n<}AwafzjRz*%WTT(LR=z7Cx$(y(G%91d5v*tZw0_n{DAaV(CDlTx5rcbrUL&kajdYa3SdRiWv zM^hh4{$P2B_+*6A*(X^wBrnQkZ`Gum65)l-u-$k*DlG*>Y$Q-S4xZE}xyl@ljg=|7 z&y18!N=J*1eXmwaOk+XG5F4LE1?MqKL9SSYcb) z;54=3_3pLp?lk;luA=ecx@CD!u|fF_OJNwQCEUGL;N0^t|Hs5T-+%I*yMo_-87z1kE5~o4g3HisFuxjGqGWIa(OgW zhpqgm4h*}yWqBlSWM4^3H_|Qai?|o=aSOYN#rzlwPTK34p1hpp3Y+*0f zYM;YAKqza`5;gZaicqAMC=K-d*-r|^s%L9|TkXDhkc z=6m+d;9%$hecnE_$FWlx{ibYKZIZ#a$P`alFN)4?BZ~aoy4R=M){IG`mVh*gnyqMB z_jRMOZjn%nz&xidSLUYH0->AAtfV&Y*8CxmH^Mm~FqF9(0L&zz#|UPw_lhhPNeEgo zV%Gi@RUV@06I#sfms&KrMA)5_e(<>5B}T}JFxTXW1ELEU_HJ1hY6$Bci4r zXstW7j~mYbY~bJpS(5j4IS|m+l`X*Mf}y1HX=%Y}HZ)9RI_dWMl`UaAO46zT`LHUn z9fWrX+$+iTO(=DBnA@I29sg$*J9I5g%N#aV!WeqCr*%L=*}__!+(`SEt87f*CwCf2)u*bVq%P zV^lMRJ$!nLkCkUp`9YeuZYC}kc)}&xz0oVFxk`5~om~!qua8C3bnfFj{yLTqv6o2f za->G3K^EoSxIKDo&vt?!>5^S^Nuv-zqp3Km0olr(_IG($kyfWv$ke!H>U)=M(y_X6 z#O8xHITsNNqPIg?{CEW{ACd&v!@qu?6PlovT#BC{o#b*}NQwNhJ?4?WMCTLWtPg8+ z1bc(sSuNESwg!hMu%3hm^&%S?eB-S`B37uR`gEc_bqtC3O2#Huhvm4N|nmh zWYP5ePMX9sLB~hC9v8t}Jceb>!80v5Z=LzJ1F5aU}c*bOnZvJp6slts z_4666caBJROcMkZv^8_c|Jv|m2Tjr6Lhapg|LNzVt5~p4)tpL-*XXHWUS7KBBWwLQ zWZ)eFn{^dh`xIjp?obtJissEIsON>#Ya6_J zvTNaWXgmZRrm86W$@G}y$~1L6U091&xrpd83f(B+;Bu1_^wy)&Okzz5?>bb<0s%7g zkYocL^)Acks{@i(JN2eOFszDBe#7JE+W1ZvU6PpL`NGvYu}CjMKcZ zB(!H}1_1j^TFrP%+_aQmvo-&)F|KQA3(rM*kJipQQF*)T?SR>tTXn+Jf?jJS>Yk%C z0!Wg|bJvxx2I|k(t6K)9GhV+1;*X<`kmBd!tUKTISV{HzED)dNz%)M0Wo@(<0m^L@ zp6_I5GRd<^6A1H*^a4u0dMc`vn8FS>fD6jiejT9$7ts`BE#dk5Nu&uAcGs}EyiwJ9 z0yXQv%)-DDs*9*GhL-NWk4&)!z2ED#b@U|eLR`z>!qZF30?RTOQ_}C+HT48!$e3(j zzvZjW084$^Lzn|qQ}#75Yf>GhRAtQ0M~5XFfBmW&sGY6SU3N4D2giVB!B z>|oY62@}Vk6_&|1sEQjwtIAyE!(q!&vhBnX{1bB5`4=W^*ue~oF8M}yf6!^I8C4+s zmcilJ^x3q`WWEF8Sj3Y?@~*ai8^|)2ui@X;s+Hfd*gWadOs_SWI_0hgd-AXE{;+k0 z!{k(iiZ9%G79; zw#L+kNSb~>j7)G6Y;BFXznnd=cdTx#F#0t^3Y#j+yCL#-nJZXw4I%9u_2!TK!^V|F zclsGgkvi3CHn#;Ov|G*+jd~ei1G`r`o<&A)+W3f9H3}WP$EwyNdyeiK)<=lV=Xf5u z9>4OS*B&lC2Q?Zuzi(4t?(?mRdeg1T^|jFvsz@ge{n`|A8=yL0NL985>9+>ZmL4Tx z*${$jef>nZ%GQZPP}CAR>TaB8#09`j&f6^?)%m|Q*w76*;g}6ccNIMzZ=KFb;&z)V zgRTmDj}1vEHgLKGNsXhOA_`}BS4E~l9$mDBtX=K8XMpA)Pw3Kzo6nss4{{%|PDNQX zi}AHlij_v^sCG;^3<1cR4+wBAu((YoeupF9Tyzz=?SsQL4t30jn_0&v@?Qs!ZzSAQ z{^=c*T#(KFAO2&nc!#x=BmDxNJ}*xpMGOO1qE*~Vj)GbODv?0VhxKj#3sd8paTh;V z#Yc0x6jo?U$9T#zczAU9WYkewm&&Awcvku}4Fk2+VxDS*sECfF*Sh4j_+_CA zzjj`X*xR3)RP2@^jA9jT2jhHbjuxtlgIM=EMas#Z2wm zvr{_55Wd4Y`BE36SoJx~Tv#Phd zwoFZ&tw$@jBVLKZ$y_8NLaVzFr0-(rY|cuBR?i?>?sww!@{@G4*xl0?=;B;WwBXF| zqB85`J-y;8lIhF>20)z5J83Em#u=BrZrR5VHH+7id!;xh7W3wcyy6!7uzPpO!A9oM z4rni*&*41v5cC-8v#3Y*S&62?%!}G3_`0sr?DtZ9N3&w0Sb~py4Wj|UZ$N>ljX!od z@vQoaK;aj|LJ%gHt#&lyy(mgd{aecwS7e5MMZ%0ii$?j@-P3~)A-mPzrB|npb^FCR zaI<*S5AA#$QdAu@fVTBUn(f;WqWr%b%GVMpO0aY0vW66;jI>#(D84*d`Ot|b?ma9=Ig|=ZCi)9jD7B(>uJi+U4ef2$I#qo-b?bH9dg1ah zI@19nVv%|qv=qKRm(61CAUjR4<%Q+l;La_XI5F`Q0rY(k$%N1j`$~{kEfviBgx!BP z(q%FYK?UZ^kbqJ|Sy6h<<$pLttUQvnrVZ7_7zR6mo?d8wIm{;4&b>R@tt=3PwLSK7 zF0tv;K(8|ta@qm}Xcv5mj^h zsIGQvobBQnrdf%5VCI*1SX&&Q%irH6(pBc|Am+CUa}D|xP**0YIwA`*TTBcFY-_PD z9dfWHnzZMc@tvpBpX}Z84;ruBvKIeDse(uHWkFS8M)J0?K)ipb@L4X-H%hfN$Uu5VvUdoFsL1e^GbpE%;FIE1|Ax<)0`gLaCr^^7=1KZD zncu9u5A_pY{)ps3ja{(SS-V|SeGwpVsvc#QLQiPUAbA*I?v&e~O>i?Bmxzf~`Dl9}=GgDgVmB{MBB4RUeX10ZU*HGWL=9Z}|5J ze7K1#7%VG#mSc-ilJLZ@kgF^Xy6s-gDEzvby%GiyYfR&jxTORsKY%JC&#ky`Llity z)HTT?^u1cn$dP~_n>M}LLoAvBA!MDLz$qumRHGt z^F?s{Gs5rO;w271lF|FB= z=G*1nI!G@gJFaC_Pj8g_I&Tjl?X<^{^u=koa8DE$bD6M*! zf&7zd&spwwyZ!*e;SV5Q_%s!!w)|;>Iyy@J1%m$z#Ew)L=ZSE10u>VX7rqMlr1Wi7 z4zSya3mC#{xD8CWP#@Lg`#&0|%fD=Z62;C@`=@fg_U&a9NP)^E!pz>$UV+Lj<0|i| z_TVV7?SO@3jq2pNsRcu}qGc{SQUxQyEKgW`P2{gX*(b=24Rk910p(2d<+5YT>BcK+ zcgyO&h0)pdwx3w9Io;hvNu!vNm#lIGY;7wW+L3jaj%f^q54C5>IRd%dRs<5icS+SI ztav$$(dCS}qz-q(1`RH@^vo^z@FyP0D+wb0z>=-^y+QGvN1xK_%>Y+GsK4)6M%SJ* z|BmHu6F=0K}W+C-IdX(cS8Y9~dOxxqOr z9=i|3F@1cXoPvA8aLvE~Vv^67bb3IAr^tV!z=D$p3*bgz!~+_Js=NGc)3{Wyj3a(N zx2BXzVI9~rd7{=%I?DUm%;O;WUjM2jgR$Bd>ZLE^qktJzZIi(UM(E(toqzfr#?zC- zVtE=PU!!O%SC(q^Fl~qD6TE=zXXLx_pHc5?Z_|#X&B6B9Q8$`ao2B(qS_KurK4cg1$c1S@54vuv!sAu4{Qa-&mE$tH zG>baacX#N6`t^wsH;4wX>{PvC1c8{DOz5@jETLut)j*p$FUT#nH7~~k{)$Ma&&yw7 z3M!#M!}t@C=qRh-hbch80PX4O1Lbc5L&t~8S6XT-he_s|$4LD)|HDB1*A37%4DFXW zaGBcjME=H-NZBa|!|GxEZAYB9 zGhH&3wtND=qe=eRaX>!^mvOq^v8J5Kwveu>tLxf*KG-cXD4kDSlQ*Z1<5dH9J!+>H zuuuwScZ`*oZPUTlLmX#X#gRQW80oKf%|Hc9Sx$u7MT=N%`w-^=?&3|@L zJr&Ha*>v8dP0>u0%)X9v`LDV#iqxDYg_`xG0IJGN<%D!9Z9Kv6D+g?dc&&;9aLD0M zS%SiML;b{dv}3$9Of&G3EhPS`S?%o3l5rz&Q0poBm6~CTS0_H0w+GQC-o3sTP=~j} zt;(&zJ8zrbUf0rFu}!c4KKp7mnBCPanqHFoK1Fw)Ohap)%m6&)_{{8Q?nW{q$0W;U zRhB9E4*&iM@4QRNxbV=cV^P7(HvKtU+xSlZva7AL(+}X^*u0^;Hx}?0>ij3ope`8R zFD#gCQCWy!Rv?7A&^pZ=MY1R!N(;ddy%R%;(<+xBjeqbJeE2BwSttsVX@WLpJz1aE{#+C9ahNUd?37E6#0Nu)@W7AD^8R#nC< z2&lV$4R6=Yt-Bl6IIWxnH~K_Zjp$!QaN$emEKCA=$aGs}Z?2|kK;I$rCVafRb_vFK z>7715KOc39%2;mnkR~mWUO(z{<3YJOAr`3Hao5C22)De9ojHDF|4^f9+Fv|gOq2!5 z{Hch#T)RT&Tg8$()xyXqw#9g-e23$izM1G0=aagq zWOv74v0?X;`pD*;E*#%Dhut#gPpZ%5ip-qEW#yZ~z+Tna0LX4Nd(u_uEtAyTHo?dh zThsF+URP^pka@lgi$Fyf>Gh5NHHqf0yp>QrfJpSG)Imm?OM!~;5?9}$Myj8_?b)jg z`*#Zrgg4e}onF11Q>cDXcP5oCuFs=$L-vm0 ze{U=fRsMdqb@msl{nMJKaa98o;dj#uE5ww{NRoftEJSqtB?D6nG~Ii-Vli@+E|~&r zUB}l{hZyIH-q}$UQJO4>I3uoD`5$_qz?DuLWe+}{v)(aXG?);5KDVxxYShWl$nG>g zol);-1(`P0cclF}9+188`X{r~6-VOtE)R2*)?iX@cZ}mX)l^g`U$f}DHNC1_-0;z> zB@5K2N6mgP4P`~su*UqYIyc^mon^yI)+XnVyeiNyjOw}fpP#E zy`c`X?mvtoosJUYS03X%kCPWxk{zzW`0tsXd@zrfJ#)0iHuAgJ9T=D{3cCN>3*2@R zX0P`%I$dRN1+gptG18T$=sN*O*qFi=Cz}e^;EQg1ieOPyqR7Nckp0&Dm6Y?Itlt)5 zF#JNesl(Q7fVcyX$rZLNniCGU{hd>|^TuqP{@i%eBi6=uy>lz^*sn!0>K^o2Vnk~d zQZe`BG4KPQ?Fs~@Ujg~Q2nM3r9L@y>f2(?W`DvfX10`i5EwKpHb45~*<3_qUfXyy~ zGo3W>_`Re1Qa*3R}^=o1*Ae>0S{ChnPl9#g_wL@{jn`_r3!$H4qm^ zZjEL3F%HN6G7CZ>`HbGVQ`zSg9rxE30a?AT6(cPOjz;ypRPa2Mg;RAvr1;_Lp_ehH*Ytng= zna8J`9h$L8Dy==AfdIYwenQ`uhC2*X!t0@#P{(Z3q;cI1zYeH(Vh&3ud=(kx)Pf`= z4t<#C!6%$0p&S{E+35(8AwoF_bZFynL6wt#Ilgz3(-ee|4d!tpvU6SlPc9YJ0K_ z17((B@)&IvMCwXOD%dX%gEE)BRP8|gePKsjs|u_79W6}&M{GXq-7fUD-DYTxi>| z8{8>AK#tA%8CEn{h}>7y93QV8XXG=obzv0;mGN9FcbJRWjaVx`-$qxk={@n5D zwFSoh_~WoPc2rS_hKh3a%w*hIX?x4kVgqbOnZDoRI zvrS9==Q3Qs>n$%;u{0)ffs=cZB?MjG73h5jRIFRp-L(IMiWe8Z*}C#B*Qkfy3uX6T z&^l|^$eEd@a$2=7FdVuqQpV<3A#%xU3`E+yTS*m~YgQW87n`Y;>as7%HMdFGkcYvo zO84pVI=CY_;M?s559po*=3VQD_h}{N-{{lpk8S`_fJ15dSM9<3tKF;wJum#2*DyZa z&0x}e=yAaq+uXiFB1^nERkrv|C#`4jno~dZYdXHK&592%GtLH3w_n3nk@ubPEfoF8 zH;(FW>~c43Lnb(Vqp%WU5?L&qu6I_Q)AH+|MU@2z-na;|dXfnJa8O)k(o-hHuySd5 zB=YH92xI10;0pu3YKF?n|{1 z`m7wF0rSo=Jscxwi;3WQ1uts)h5K;dAm*t*-Uj-&QJq{fb-)(cH} zM6Y;AjtRjm#j3u+_43z-fWljkzSF_X$Bz#d%ekK)0`|mZkBF;aW-q_7R4rpo_SE+? zS4ixfy((xjNIp{^oI_fXr#RYLM>_v;O{8%hGL%t^vo5&e%0+i1-bl;R_Eh!QPS%j@ zwSF{w3FX~l+?lvQ9|p>&vm*(Vq4y0^Rl2BZj0){hiVrP6rlLDIdF%Aqe@~}p2hVO& z)zNVVZ4>hPn514u`1hnP0=zHHG9j6S4PIT3pTU5la|U`pnwY1Ewa`YN1U_qTI(k1z z6+cAF+|w{?8kaoI8dAU5phmxWGUsS;T1sOIyphz^gM1y&t#4d=<;rOmmbJofj+a*8 z4~K#n@4G>cRD^!wt&={6U@yhW&1q==lJFPJ@AJe@k`QM-9%|S%eh@Estp2{b*{gc*Rno&hzrDfSZbvNQ zIVtuVxI460Sh(^w;%M76pzJpvmE#%Xz5Pwq1m1SlZ;BV$zD_*iOv?BI`|=cUZE-p7 zQz^9NcR8!txxm#9ETfa1M#1y=Xx)r4der9bF5V;k_FaqJ(R{i_DPh)A$2#W9{rv4H zav9Ohg96x{8KO8E*UKqXXk$VqRKLmXncIjQrBddq77arT+pbT_Vj!gwXuw~-Mm z&vG@84VorVZY&nFJ6Ipc{kZ&Knq4R*iTcU=^!j!C!!z*q#-S7Pa8=pp*Rhkd6DQdo zlNUV1Ew?$_87VqhBuYke90oz`t1k+5g0i*ll}^GhclKRB^ zCp!GsygcP&`(F@UBNqKfEkBK&0Y!sd1Bn{bC*_E8e8a*YFr3i#NZiujCZqG2uAZeR zv{pnu$&#!3J4g=j^ftCE;Q~wN0s<;H){7`X!wu&n%sVEF#uXBP?eUewnffmjGJ$mY zBX8H18V>ByI~FQd59C0MKN?jam%vT=f>MiR4RG~o*fAUajH4S)`5lGgtl6w>7=6vl z-nlEGtgqJ!$eXTO2Q8Q02DL32CNtUKbeS03L$A{9W3#c$t-(-g%i$YvxFpSI2Uc?3E)k%?tw! zlvAEKZ4DE#wwW1!c)#3!+p~rP`);syG+GF{PSN-L4(~}p?)&v|!a{YGgIxMZuN29dzMc?knDVCqT$;cAPE6vzMS{W66V9 zcKzZ83%0~}5`KA$EC4Pi#Y)iCADfir`8Tysf({x0 z=_7%d#P`>~8=5eRFv@=L2W>pr=Dk3D zFm-MW>@eEI<0sibOQUpa3aZmloZAz@mF5O{s>H#gYxxo|Ju?X&+o$;AaM~-BZ`np8 zQeQ{+9G7YgYNv$zZOaFT3y|81lJ#NKs~&tvMcO>&7n=p0YTlQ2_H|>o2&n|kWL3#I zU<=8yX1=bgXLcgF?VB$BN; z|9;v@7t^`9cRN%xOMpi6q;A9?tWTms+{y6@pEAL&LVspsLr9l5H5W%;Zi1@)MP#fI z8kSc0DWq^s!n#wi5G>zqaPuJ5lLNLkDHZ&YIJkY}gn@rVTq8LjFgr6L*TgrDK60GD#-T=c-qHpv7sRGxU+qvn z&N1j)Q#<4?mck~x@E11Zvcl%znoec2%EKvl;9`QD)uEE3WVj90Sg`ckHpuqB!TA@p zcihofCi%a=?`~^hSg%zceDTNRs7Gn$T+ApzVbA&avKVF57wY42`F|J!7##XrDO()r z5v+4(PzO2-^o_5}b!>7<^N+1#gQ`KrAABC8X|(iKDOQ{Ugr|>AFe;pa$)<@4yl|IY zK;deA#9Wr&b-+%;cEkRi%$;1zl?PlQIzp@XYr-=pWT|#~Ml&ZAl&8UVk5NMW1Y0X3 zr{Q%%ip8rasnI84p@S~h=^2k*cAjl<^E4G&sU8mTA1f(!JS(aY}Rk4OLH$vk~xC znw=mr!>`=o3-qh0Yn)Jb+Hp-p$XLPvvG1mRp_BU7p)L~7FtEzTK7?;)7<}*S+z_&T zwhbhW8e;lvdPsh~{!uAlYvFCl7yI+j>{tGyPKISd9+afjr~{Oin|@NVN?N2Y{ySp@ z`g0>KCGhLCt-8^TR@8GeGal$yk0W4USXs>SSx?oFwhrg^y1-RssSB<^ZU*X<3 zb4(pMR(l47o#`^AzD})OmeN17D6Arx{w?eX>kQsfAh)MjV~riBSxAMiI%Z)1JBYSd z{*_!6u*JjSqb1%#C5=aF_T+c%?pukY$p1eV1F_Us2<_}^X|61xb&UDmm$a$CYF`Mk zGle^mO3gj%N;Xg52F)1TlY&jK=Fct9^|hBLI}7h~JUY$XhiJET6`GpMZsYE{`Tf5W z+yq8@)omTUo68&vU0lkv@DJ0P+4`{g6eo6cY8ZGM`0tQC>i-!s&`fRG*lgKgb}~*t zI^QgzQ6hclbuV9)r_NQ4>tn9LzE79kC;sT6O4KE<8Y~Vr$35ekhWgtCXR;f~bLz`b zho?`dTt|JpDPkTEi=YX#{a4nR#Q*Yh26p=n3n5)roG7RV(r?A9ek`@jD}oV~giiLoe3tNlgSr7jOeBnCXq`$i z(PE_Augh=DZz}tWT(y=dyh%I7!ZA*?Cy6=Z!PC=|Lp^K<2T|Rhi%mZM)8558%u$Os z4>xNJ-$Sj*JqM>GwwapGI;Y9nZVYAVc7A9_ubS}nkPsAyB6RgH>rrd_quoR6;HMeE z9_O@CKDtB4k&m`-TpMs|t+1zF3F+sW%j{$fe9RtysXTR}UU~P6?b^FxQ5whW;)42< zA9v`xqY4_q17i=~(?$hv(ooW=mmJqGI3S~xc5USj7cMXL$%K-;YZk!+ALYGkzGI(y zyAs@+jqK}$q&TOwrr^-%7TpMWm+;d=u)O*do@N2LL$M@YFlt_9{Of2A7Vw|~fG0rr( zn7_B@_}j^uDp$LU4>{gFNKKi;O`93mel!VZon~`+tSJA(FSGp&;sV0^C@cJJ%06e) z$Y(OA#{u+8!__-PwOeGTRVM$z=G#UM%9Lsxh;9;rN*wg2{LPXD_>p|~$0G<>KbM;` z8efTQHzRES^YrSHw(JmK3k=3-%z8cohsAHKR*mCc@ngnLWnC@yFk#@4t3ai0%y7!R z6=SE&cbzwIhXxZTd1j+3zFWD&Ocli z4xjx6;?WTrb$V)ozz4!K>=4s{eaG97!pK{N-H=(S<@F=lM@&ldcS>&5veRd**M1Qr z=_hK27)yK0VWL2N#OJR<;)nPjkPT@g#0`!Xcsixsldbv@&8%zWjK%Q@TSB~JaP5Z# z+M=qkc6Yxs=2(uh$G?Z2V8kqWfY7H%G#@LnT0wcJEuCvcp&quR=vEc6+TsJH@1s>< zxJK6Gy8u%pmoY!`8))S9J^Is+pqzd@22DM>IX8)AMB^l;YJ%MeWH9?a7^1>mkxDOcjeGL3AuSV7;{jg@7>`ZJ?D;tCM*zO#A=|3dcC-*W@sd*A&U6v3gcryk%*!afoN zAFK-_-^gtA(K11(AUqz)<28e3e2-AU=iP4Mnv_$|wSMIpQOk*GU9b50>c3r}t=JQ< znGve`2;ueD>7#o!uuqVd3pQNG7t%>PB%xqD217eHu z)KoR>^l4yN|LCPzzHE=gIA0#^Y+8J~Syx!&(pak6-fcy7+zV>Qx;R4-Rr)TO=~C!N z;)6xPBqTxYg)J%8O3pR(=ZP`{rM-%K$OMrkUW?slCul}~#gb0Y?UtgA+c<(^E7~=k z6QK=WVA#LW~!- zbR=8DCzYT>jFLH7;4sc3h95W?`@z2dur|*_k>y2aY$kEK-{@agLKNkxU_!< zGad24LaK_lA?fZ{KH^^<6*F>lFa!iv!iEu3QHk8=wF&RKTb9u!;UjA#C1GDdLQ~VR zH$wO?0e*@ZfxGR^{1(_Oeu_My_i-@Ee6EefS(;n8N1vf+ZjP1R%GXBgb{g+*=@5`l@vQ4O*kYDFxJ(0{IRAC2=yDTp zgZ|fyzvn_$AMojZyoll(Qv|TN7{fcB&|xg!$z152Ej-|GiNTlaY{UMQpdzjnxDagz z7nA@n$hpI^3CaI13zOIT_8!L`@j=G-&Qg%);{a|X`dh?S7^5vt1>- z&r{g7N8=&sEU3E;&dIE&3!%KB_-1)+y=onpQxNYJRo>s{h;Rl*A{jg%#Zi^Z-#U&5 zXJO8XJ~&|9FT2Kao2DLQC{*%UdXQbQ4Z`b;o5frFyRL$Uc-3>a;*n?14!mKbR$6qQXXSk&3S~`%J(#Imujmxp# zsmII!vZx;jKA~RG^{wojUi%8=0_VS@Pcgn7Pu^Gv{sreK4miW64u3*{5s~E#@n_56 z>7y)o&Iig;y^SV)fV+-*yKRqskWO(D@W8K-En=|DflP~E%Y)cq&==Sg%q*%-w4?OE zwr^G4SV~hmu!y}mTmJOzOqqRuVzGFTFt{}OBWGtsNv~}`Ofl~Ka2+H(%TRI8Bhq+g zA>2}7YTeO#PJKP$OYyvW%>iNzHl4}Umr+-R1VKI*TPmvaGE$&OU2G{IiaauupqGXO zKv;_9DPf}Q9Felu*O7V;uIE~4i;Q2Kq=2|`$MIOIgsO5D&;|JsEsj$KuMxo=+n!C? z9*nz>#sCSv6c^2J{H4_1k;mPttjg#be5|G#AA(EY>5=|~0GtR-mMpgW`ECMcgl}RwQc*)R+Cst0CAE#X&cbO=v zhe72`cSX?tr?RiOttEu60jxq>9tEo3zKlj#2B4=lT6PorR}P8h zidEPEQod4?lm4?DZoj<&zpSKW!m#ZbtKr)FdzD)|ZN4GD?_s@KO0XN2D97g=@jC73 zGoqNma&^GEUWJ;(9~-^ADfigGS!&Y44NwRTan?y(pRR@3o7Tk%nuz zAMaJ-(a1Zt?=mW!wAeJ{mF=>ppuCw=Dm}!nOgMjTX{_vBOr=$}5J6bG_n5S9*~5w; zxl<*elnVzNuc{_)C@@EQ_R)&e#0U!H(YzL#=}zNOf{qsBL=7|4m?l=mtxHSp$0kxe zxp|$AykWiq$fh1zEg5M>C6+ZG9}lP1jywo2-=>L2Hg(zg1@FBz(PS(B>;z)CuT%PP z?(Y9rOAM*4HZez`294omkR-(K!L$5L6YljxXtU;mU9WA~NaCSb!l6F%c3s-yi{5Gs z_L=9^LnRW-$q=_`SBZI=H&~uqm?NZo{rf7t0fjyxpf*>!|+HUHN2dHP)K5Z}E3BQy;G<1(2rzOMa`5nPV#DnTK)PpU2O}E#MAcb?2>Vbe&~$7)QiLGds?xi*h9kvdGchSzN|*%ac7qJe2{>GBsvnTXqS9Q#2#%2e0q z#=G`!4p^nujL10{tbPZot7xy@rZHoA^457y<5o$AMO~xH?So#R#`^%-6S^m&+b{nb z^Fqbo3v&A}(c^2kV6*u)H#t>gi&hH4^qonfay~kNiHgLVQ2DQ9Uo(bRRTNh#2o39vA&z&%$QpMakY?>Cq_%xoWf@m1DrK4Kl|%P(yqB zOwa91w$jCv$1>2O*=6#CwJyZp&GVpue1HG`KAIf3d2QRem81R$f`B|vIvsf*r68)$ zl{PVZPj`2E^>>&tNk~+W70M|Vg?5cHUe?R*EbU%qoXU$4;aC!pKW5gadZBXweI-M0 zY0<+CMSAB)zOo6_)=uQejW<{ih+HpWht6!ss!Q53@8mBO-9!U&(KL zO5o5bmKyCIN-MU{a#5~gX!6vIMa|8LSDTQuu*J;3aLfB9U1$AHrL`M#-Rxn;8msLA zpJ$NY=PNlvd$#ixG%uZ#J-WbWvW5w8NX#0+=`dDn zBVVmxc6IaZTjm?qU<}#Cwy)@1j@||alu6ITmH&MKzOh4bCezY&xyJUe4CIj5$~)#W zv9GFPmCHsAy|Evo*Y->x*@=fTY>;03o(Z`NlA*IXlvJ)d(tPh-megmf(##z;SkFX@ z0BRxVs99q6u-71f@S52!Anntvwg(=40N9h@FnTTD3x8&1Ug~A!@nW{3 zc2Qan5pC&vu_ATj$7xs?s(G)8n3VL`o`Oy4Du|8K0J@v!a)CPEymPGedsET40ZW%PE*JFt^I-67 z3nT1VEQ4UPo}bm(!Gy%ckVs?ab{h~PJ_aAko!Pl??oJSZNFC-NP8;@=)8-sxS&f{c z^AdK-56do+wR8k*Sc|f3+!Nt<=xli{S!KLBe$!~{$BW}$@^v7U7bx=LbwFA5NRv45iDYOGfbQA5!dzykh5p_TSL*V z*Q+9I=hT!YFI}hatm64_L3B;VByXJ;#X@Nq^k2ce4tb+@Zxu zhA9zT?$}%=G=Ezw{dOaTa&3pNU19@1zg6lv<*)DAe^aPoX!EHRDRj-Dz3XyUUrRU$ zAt1QuhfZQiG~0&*cHM~pyu!l_wqPHJ{Ne`vf(nd>mu=~fXF`*31zuZ65eQ~onRO;S zhOmgITdBtxBv%5j@|JEviG6={sO8ei?(Ud>fqdtlGy-}Ib`N$hcjr27=(lRU>uTx( zF*5b)?A;t}Ry}3%sHYC>f>v{NvoVvA6D({&*UX&Ei|?GSX}1H%$px^+^rCNwgbC&e z0rMUm(&qjJ$v$WzE$1qx;|7_JAsI!RlDw2{iAgDXaD>80fE@jSay=R9bz!2@>n84)_UiVyh*)hYg9AWyL;jx(j=X20e^HKAM-a8+ z|H|OXliBJWUXNYT7x}zqNgm9d<&d2_P~T*E`%|LlcmK~M=*_QDItxfdf;LToc6p{t zKjWs^8MP2n*ky2^;@j*?j)d!5W@8_cWi`ToEU-IQZffwh_hLi=(s{Z$d(bO)SanE$BcQ(-W1{QU)aJR^-0Xpyx z47~=7tWXH{a@rq$tdpbjo{TDNNVpy38%5y~PQ9UUXxhtNsurxYiSUhB`n0UV3x{5HXQ^t);bLdsj9(t-Gqod5h zhWNF)Y|bosH?L56OyH#a)`bw7j+| zN%FGhjeTHaSh+nqpykb+Yr8%}`#@NQJL;X4dOXs`R@P_nv z_q76e`!7pl{@N{vmyfN`S3QgLF5D+&Q5^-&AvAzvdoNl1rA|E=O`>#ce#HVlA9`QTRJy5M^JCac8DH z221&}(%Zu%fI`q8ZM!*g3GK@?e-x<9vi{^D-VzsZClA>Z26flDP1KQI7N*cAqn{PT z&xCB~NQZ2BO8GvIy6C0s?+&lQK6HO7TQa{SAgsKglzNRCyBaQk$J+^wzVMvqn3lm3 z0r&y1^Ajp|XHPe5n*@RrsR99R;&qqnAi7-BUgVL5im} z`fVa(hpC2FB9;XDM@FL$(#aV&crkmEK#%ap-?Y0eiC1tX7E9}HGy}P4I|-%CiQZP) z=APgKW|qNKSQ~K>&X$9V`XbG>PYA2^F_(*AbY2R^X8jx5dT5-x%;Dur7`1P>K%Ivq zEsX~4flQ=I*6#bhY6_71Ipvmzbm9BZ<%=mabpK}J!MhFj^@Sva_d4bB z`d>lvJs=p^I!HxjlBkN!E*?={+=?UZ5%Rd5JU>%SGc!A?A_0 zLiY~40+C`j4`i)Y7gsGwOWBa$sNgqchn6nBa?~AISQ--eV#(xXmhRJ*+!AbYcDwyd zS-2Vf&jpO5B|V0{WeTdvXUO<|tt`7+uX+$Ao_EEx7q>j1RRpyAs8`P=b-)NzGUH`Bc~~5xvi~^7PjTX>ZS(@RuTY(i4u5 zI^Id0QYmr;M1(mn)jFsDgB^t3*yX45yfzJKPLFq+f3&po>Ge8cHQ(M4^wHKASu~r} z5-(ezDc~iVu(mT4mAre{2up`H&;O$C28^`-I=fC_*s069Gi>poU&k|2Ks<@hDt+2C zLRx*Xdt;yUBV8q>i$g){O~|`&;M4gz4;3@-TB{OVRpcO zG@(YL6Q#B#NhmI=)@vP|RjKQP)bVD@J-z78)-=hX*4Dx5m$Q^hYF2QsoA_vQ`)~3; zq;#&h_LpwC_Z?@jqu5zrtny5U@O|1*WTzP zV$(5xm1zAY^yduJl$Q(((fh#K_Ywx1t1_I?!=6zHtea^*HL=O16xY00r?pHuQ0bj!@#)J540h z7XpP&df5ux>z0i7DSBt?De=MJfwrxb>Y5XZs9uCC;t!H!`8-br^S_VOYI zYZ2kW=9WoAon_im@ia!7>0IdEs8Z>(L&OE7)fsT6M2cU0SH&&ul?q%D@+JnvTLR0$ ztL*BPo818YKcdEdVIt#!$J!ecI*vhqyW+g=%%}329McRpkTHruFRwpUw-*rRj8nia z;{Ooqudd)ebg55D!wJpY$7E*#PmOA+QUo=WooG$d0Ot+zLSeOv4L^*PAf-SqF!q{@ zPZ^r6FO~nRW6oXM0Ha)>SPiz%e&RErw3)%}VKnVel~(7_1S=DeFd-c*fL3qXc+30G zT2upzT9@K9?rbT3bP6ju7DbGq#D*8)jjxMv#O28;q&I=_Z#bP=s9n;03}dI} z1WhSW*2j$bf3cDbD`nbM80&o5+IUUjF_zb$fcu%ONLu*UfZ8cj#F_zo!;ODk9UD~b1Mxq^Yk9QD-@uXYS?R{QXQE{lKj zJe8Nyf4&fB@XmL1hqBK_dnk#(F!qy=U&k;PXw23O6-?r4YrGPQ;QXEnyr zV*H=ri264TC3x2A=p72Z3$GR@-|@1%`KMF%Ah3;I5E%tp%!aRJu1(0qrwM0ouLSDl zkHE7=`#W{UlIMTD+Cl`Sn1B6Gb5M7|uljoJ7s`im3ZV*J)*f12LSZ(xNb^6Ze+7jR zH-AohTwF-#VKu}SGUmbo2h`FxC}BJw9x$I?YGFU%05flz7KU3WPowbQ=^S2`cRB_} zQ*PJl^(1=FVi(i?STH4)^vyU$UymUet83RRW&vX_xzfc~+FypwF_qS0wfe089skHb?XHBL zKl;7jI;vB1&?ggnF}RzU+9;!&EaPvpO@K^E^GBH&y^Ao|dsiVI93<@`W5D8;)_8&$ zXe5HRJqjLY`9i3{oTuq$CanmTGa#4CH+BWH9Zy67Z(g2ZAilnjOBk<=Ggb$S_r-vy z)Iz62o^F(bgbj7f2D203^$eFMBBL4y@8Qf&IU&-vs!1f$7aYi~NClVg@2e1JF&x(z z@N~f$HSR+PP?O$EcZq3|JUF2cC?_YF_v?a4+NEUfz&$V+XYo0y3KDga`rU zgV~JH5Ea)@j~=qTXtf^c2G^_+krc8i+Ye<@Qghvx8Nw0iJPDN^TbKLsshMN-Og#BG zYJ7rNmtQa%i&5Qow?w1I2Dty_YMYMQl{F=C2e*=asM4MgPhUxPnsY(n^d0_BGFIov z6R}-~DfK3x{(PQu}um@-HPg;ddilC`-_!O|K}(8hSAgAZ9Rs`&-B_q ze7_#o)!W=mbaL#qIX`-n#|+hG*roSkaM4mcQ$HMU1OY zsC-bp^#`uc_|hb9%axd|1(M}YgIo+~|J*awtH6U504|*KCI@V*(QcF%Qo0 z3GY4TqIW2iT|NSFUH- zBkRu*)~mogg2wBkQP$6Sry4dCNJg0uE#Xp*P>pzm3FR%y z>|NmmtKjPEo)Hr&H?E(-n2?D0dgMn`5nYKXnYc-Hf9!jV4xn@rcRl^l0D5T> z-bidZ*EI3TO--#zoo7LK%~DNVh)9kFxxPRhWJF@urDzWdxQ)GsE*nEd&Y~lI%&|dm z&hVUmvUm}_-7p@nmIEizVal+%%_&v0r~?B3@$XLpTq6DpwbJAl-i^23Bre`{iknx1 zs2{vpwHevO{h-x)lP|}Ac|A?RrSa<+Ot|a_q$ux|_J+I*%r1+|-kI(LwZ0hh^{QN! z=hDr0UeLrnQ2q;rX^vFP!v3#`U`}NbJ(mv*J;T++r{`e`-x;ocb0+_j)}P z@=1(4hFENrM@BA>t-7DlJgZ_5Zl0`my?(VICVbip&j~1Su@gcKHrqj;~bZ>Rpb3Mf$Ahu!%fvV7yUpxYy?5dLGcQ5{W zm+fPqeHk08F0qAq zZRF>-G{n#$hA8eXzhn;iNQ`k~Ep5m=swTTi+j}c2sM~Ev4>oF@%e^TyQjz zXbwF5{Q!+fE%a7u+79?S(j1z0D)A|8*a#o5WWdt_0ya*5^0}Sn)N){Dc3(J6V?+() zvIJY>_ps>JL<2*TrT8|D?W3&{zqK=hlroF}qNpoWAu-lePRER!Z)DQ2@TOOP%U)D3 zNL)T?V>z}m0rYfI$0TY{S6IZ&Ju}}Nu_ENOY?5n>u@UpD{mW)g>Cm|AUr zai?f0z+$E<(QS4x|+)0>>nHvb`W&`ru{)iYou)ovkc?I5$QE4e5K zP1l!JcDC9xmS-}1Y=%i_1iC@edl+ly=nx4njBB5Li4BSSLQo(1Nto;@}>f>CvHhmW@jx=sRydX*IwdIQnq> zV7TinXtF$TT3V)g+h{M`v|B44Yb!Qru~Z3lSl3|Y{$^-_*1-G*h=X)o&i>O8ZQ<(A z>Vz@4{j}Y>#_D7?x45GCMqr8i4bVN$AoA)|a@De;n|+z{IU$HF=5vfclWufV|EmA{ zIUgPKIih!sQ6KtOIQze1uk^(~!}Dpb{iuiUdfKOK1t$smnSkl~i zDm9Q1+9OZaEtjR~IU<>wNzHM!UE;EsWYTx%tZCdQjVlw0ts%89%53Je#)Rc?t4`n! z@&1_mZwntL9^*#No>V&#MzoLt=! zSbPa9o0e$L%n49+stl52 zu;ZV_=b{~&nxps6%y<7nNR&0PMHPzw>N-Zyf6Sx)+Hu+~p{y#?op&kD#775Q7=N57 zvGIDl>l7-D>od(m%1 zU42PG7^guU!ka7ln9pyZOjL(t5*9q3Ai>&codj`AL+6ixQ{A^bCU|Agh>Aihpc!_T zE33u~9a6an?&|K}_o`;z>*;>|W~RHVKOorYSbX+eP^8jo z$=J630Ym1cBPOpMrX!g1u-aBlr%lhAqAiNjeKpf$1DgCWh;rG&;- zpFbB-bx(DRM^g;$vWB|c7=hzl-uWFd$$}V4O+=XHMVXnjPhKtTlRCAsMX;|~FM(V| zxzdjZO|x|pmwHa%9-i~C$`vy-WH$KCX10l%B1oCW4OR>7HUqBPeq81c(#M?(R2THY zxQ`_f-d>0w;h>4f?0xuU0wp#1^yl);1U%OJLR z0{-M%D9d7IUZnM!iF5yDSO00Qf{-cd&1<)|t7M&<<^VfD#J_;h(bCQW7e5hVmM)#+ z^w%!cRFv)$d2*}a<2*{_U6mM6qAhf%Xa(j`9%)Q1E+~;9TAI3zL$={Bn^_(S0t-c_ z=nao|(=u9pNoW&12-T8ba$Hk`e0I|Pjm0zLbn?X(vT}(w@y@fq#b&)-Aa#nEG(}?6 zoj{9DW%kQUygsjkYS>yxb%;1rzg}o?)YqVawjhwK765cw40tqw4ol5#=@uy;)^^Z~ zc5$zQk9C}O*oAqr*an7@ofDi76y0rpd)S)#b?26&efIg@cqG4U*LUcwk<=2h zN|^TNtN4DM{dSM__-WVhfbqFrm;V*mk@>XK7z=5fTD@flHLF5$B&(tn6C~UPQ#q_j z$V$=L!2%VtIubt1(~B=lZn%uXeJVl(R6ILB+ffpO3QY#83>T*~qlvX@4jFS(KmcF;=#$%smTm*c81q>Oy1DxV2G zX$kLvg5P#N%o+(Xk>(Q}#r^Xw?KF?M#5ABzHSzIdTn3~-ZjyWvalAnIvUG}{jy>kx z{|QM>%V#g2P-FPAf>ajAwqRB1&sn$kI!RW)^~nhUbOI{W&Q}|Ou$~$>z;{;6d(`bC-_(*c+%YNUMl82*OwswgCEVo z;XnZw_OcE+e4#0B_CZf35Ao`#ne^PW?W2xw;#fWk?p8_ddHV%-I*M8XRcdN77{jagV^fFXpa)zWxBPT3UZ7-GA7(m6A`kXh*Q>QZe8HAI8Y~u{BYf(*p3^y^sBQd4}E7UAwQ6f!<}ym~w&fCCU8OAD2+_ zuts>w1^*uLk{0&6Bp9!rJz1#e)kkh;>C@)4Uo#P-9o%5|V0*%WR@s37c5R`rwX&A2 zFykBpwiz>OhCY@ED7%h}RmHIQ9NwIB9L{7dEoOBq7gEoT>Vvb4_>>OZ)5z{QwF`n* z(`|~9<4UaFN0~hcMflo<9U=}B{(ez`u>G^{^HvhT3wgDGP1K{r!|cjhZVi^F1ujHc z=~rH&i)g%mwRkCdV#JbX#n`0|{ZtJ`Z^X-g7A|1v2=*l-;g3DPdRuq(wv0THC+>b6 zZGJ^k94g`R+0T&k_R?xN6j2@CakmE)Y*&f)#WfF^&E{tYVtJXB^j5NA`b-^Lbd%_RH?ls2XB$41}mknWHkl>nc zdmiHZ>UYu=d8jbdye2xr0*_)vx^k`_*twmG9VtA{XYBf3*F&aImBf>xGdP&!JyJC7 zwb_Ou1}(x-^W`|t+y>2WZ~>-HJGKlXsu)&B69 z+>wl`F-%|695abnZ5f1s$=;t(bMtqNb&eoYc7wx;*x=kJvfLzp6`{6T1o7+D$Lb+{6YD==|m$P(Sj7gz7VW^b3VcoUcjFHbM4C zG8+ZHN96jCyFVgsI4gHO{UR#p`Qu$d?XvD}Ep}(>8Rqa3t!+|O#S^WIo&9kZ@A~Sf zt5==iMzC8f30($DO^>!J0QAB>Iz{jxs>|}s?2$2x>pb4F1k)Y+=?3LbzquSm_y}rkhSN1{QzwVf;HL(mQ(6VNguBwePPfQky zGI#do=Xmqjhk9m+epaD`J6FQeQ9yr?ck)ILqU>KGH)QgAzk)~Sf@OQM2(g)Eh*W{Z zsPM(2{S}h9;Ly_SlVC?as<_Jb)_NiV(yhe?GaF38QIhFT^>Vvxo(}u){m_)^7+r^l<*AwsEoDsBs3|A&sxO<=`*Z4$ zD|kY=EsxEVCx^J7Q|1ENtA~AOw1ub9s|9}LBQFcwrHSb#Mk}J80AjR>coC3@ z`ELwT#`ia{>`A7H1%}`_PdKb@@UYigSxExSH6#p_M?m;jE)@p(psI_&)7SrE&T z2h6Z`Ya-Sd5^ds|5v)0AtXFrh$OUA^ZzFgf@pUy{BOXm>RsNtDXHDIiyd%-$`59H> z>q&lbtH3wd6j^2d=y`oXpeKN1ZaC99@Pv8){gWfvfhZeEj1xKMNWGn9ZtOe+7~>+kb2OlGb29O(@PLt7k-W+X>~HBf zlIy;!F;DZf(Ro$uOTYZ|NqEfrT{U6BHR7?oD9H|nG)vST8;|$}YAfbGHqFCVUo?4W z^k7%>o7auHV+_m`YSH8ksnPC?eDSw4Gx84Lj6GX__-N6U0sNYF12I1^N>qOKq_A}C z12iU^`5m}?FD;~zaoU+bf+&+X2h%*04rf1{e3YF`cTCSM^#1Y>bQ3Bko&F4g_x^GDlO z^U|xq+U71*uZZ5QCr)^;`hJw5qaPT%gM&f&%8byLUW)DYbcS*zh<#q!pP}RTdNg_QK zou*xZOWA9j>8t9Kb}@`Juw=ToGubm2d_vC|o-Yer8%oQ>WopX^JynP&wXx_f` zL51PPn2WbTiJmhZM!l!l!IrfW@pkhak4<3*?2ctGmBrh&h6vIxC#7kY8Z#5N?>HA$>{i#^OH4n(7pDY@}qGVH>ElyyL=U>#VhG zc9^RI+&?L{ZB4QTqK=wmM7Ko%_opBL`7)aZy2KIAb-6+I8Z4Ho`f)_t2H-Pp-n}H( zY$Ftr4*nd0`W`%b^PKWr8FcA}rnHUi? z1A78>s!zuGG`NW`XeCj?W(rjc%ZHx!GVk3!;29IP)rkl%;d^SHPWb+s_1LJ6`cy{| z^oUKicH)a&Puq{6I}__W!=kH5S|k+f7Dqb66J;TzDS%7apjZPYxtRP(v9g5aty-fM zh}P@O2)-5#zze1%mT+}4;U)I8kS;Oiyg@5GlmbCU)xhTpkIRkJjM5F`>KgC5Wi3|C z94b^Zsw=gsZ8){2&5TDPGcax2R^oBF=FEGl(EkWuCEB?MX`!K&iQ#laS0-?d?vA-h zDG_tbw_Lo#S1GnF%yBp_TuF+nnDSngy;_T$mtaz4ivZFT0Kb!d5jQo=x}f2GE+r|} z;^!zD>g}b>37Sm%(Uy6$*OTgT|I?aEEj~?g0SRP;Pl*mwP4ZXlfBj{&pUEKcB2ty8 z;JX&h!ctnjq*InzBE=tXr|GJDH%(9XyINw=1+n9s?^}}n8TZ7iyGnNiGjxM&L2cKT zBf=TOeNaQSGTaYbFUVbM|aFhvM&=(@-@#jdQ? zlpyiu1ZB)DDpS~=Rlz!;_WLUqBXJ_5LeMIhqX9xWQ}w1R$$qq?Csj7Yh4*AX*xG)H zbmKw!Wb9TZ3B_Zf(;jfsHD*dKUcyDp@)O3|?70%SV@8?Q;t6n|PtE{O11lI~jvGM& z#!0>_$~aOb0$p;>&hazGzjuCo6gxMHX_2YBcL=TsbW}Nc#o!Te9=usA#@3dB2r1S4 zkSYOhp{d47&Ej3mo?d&5BpkZE#UmM*q{%^qxOhr@@uVjaXIXMyRSk4JQHMMBHstu# z#IDP8&6e}J6ELb99woPqT+ zD)-s=_CCXw@n*IUnme9idfyNUICIg@zwMD`Jq=t$0tt8FERSVJ%y^{OvNHVfc4zWQSZKF?8RaC{}pzD#sT z8+FyCov|BbVkk5kMAW?Rq3xeh0%4^1V`db>NW#^&?xKVL;3rCK&*LzAjuWG;>oqUB z>TtrfhzW{H5#EO3B z&1d`4?*0uy@~c121bo2-c!eVK@{bE<^o%>%45AGE=zwwlzzg1AsB&4&&Nd0in}GNEC&D zZTu*;P?;v(`1zn| zgz`RYm}AkWRau2#uV^1WXFgCGk06Qj%rKQ4>U`Oc3Ms^WjFR7-vV8s0!yhD1zw8XD zyg4BOPl3nH`Uc_Jk(eFlg5KrJS}3NPAX{y@nlVk2a+MEu>G|jl(?|PRdbavp#GMt+ zv(w-zL6D6d561LY6d_VWs7C}-bvh^<{P>6>u6?G1~{X2>(U zy3Z}GTIf!Idu;qIXJIvS#$o7LBXd_NTNeenQa?A ze5z4#u3@iyPz#T7gvPvb?-{&0RU4@%L5hdrek4Q%Ny_{&4%n?ZuuAUMH3|*XobbU6 zP&HOlHpPB7#7i+Je><{MB<(XGwtVDJtBx9+D+h_PkTX>;R^n%8nmF$RBZdh;)N*WuHmJKY&wuOR)rI$#tB=p`A*qX#_jrv z-{Wc9pHi%W8&CJplJ}N>OtBiy1zv@^q%?gdGxTg!Ogb-T^c*Mn9Fg7AcV6A>q__S3 zNB8l}T7((&Wuf2Cm!&iYddmQ&Cc^&KR!!`Wra8!8GRc+1g*M$L#yp{e(k%mHx8y;#gPN6T05S zotshbek?JVUW=KL-5bH_4-OfaQx-Uq!SLg16!t{Twz~Qt&zl|J2`KM`T&5uFZ6KEU zv3F85p>^jWM_EXldtfLcWZaa#woCOXD3$r1F(>#E3EE%%!+AAKqu)q3B-rIsS0V3( z4^3B%VEbnu@TR%FKR0cJ-9}b@3woUne-{+}w>HbGWn9gcdk#tCH*(F(b1L`3 z@1*rD1pKe8r*OT3lJ+bNpIpg0C3R-LRvTGuRFL0Fh1ZL;ME@#`aS-0nv%FE93vFXZ zEAk+PetX5?t1wrpHV`cn)Iq?Juh-mVBAGu39U2%^gd~r3k%=ldFrAg2KZ&gOw>N|= z*C0;FuD+MKf2YQ)J9WRfoua0`q9db~Lpc=SQJp8)74XZh+(zvb9&D({xon>PdNaT? zqVpmI3;L}AZ!&#a;-JbzZu~%C;LEB?8|+(j8YVBLJ!y0N!JkWO4!>!#ga6)x$+ja( z`J2a05Vh~mppQpt{xiCE5qo5djvz$pXrdCv2cwy}wsAV!0;-pE=RZHjJo5W~_~Wrn z9evv3l0dcWA?|qWoOL;#nZ{F%v^|S*Z7Hey*ip7@aZ2VqV5 zi+d2{A0hE}H_>x&xyacog1?QIPc5t1e5fCx$kMq-m5+=?`?=zRq$1u8X`n4&h=`~~ z{?a91lUMYDRrjlqZDONXj=h_lG7hm~C!_XU|8*>pm10&o8n7>k0oS<7qP}1~vT2ZV z*8+XYcob}2?&`*oGy9(Z!6hjD{j|3R#`vX4dv77Tqfb8Yus2w9XjNA741=wN5~6yX zHy3C^06?QBrBLwxG2H zHX-nlB~&e3souO0eQ#=hh_Iq=fH*3CUC+QHqO3k_Gc% z`TNDzbib;3H4Nq1RVz!_5yLOf(?WI!sPyHf%8(#HBm~!n>n6tZcg6}|7F1by&y)Fu zf6BI+;Y`Lv{g5n(z{+DFXgADuUG>wqZ7mi*1JKc<^`k<}zb|Nzh-ZmX4cF1}Lkrzv}m*XK$K%rOvmMOGmk;)vV9bN=&6JR}azCbg9$REEQil#|5^=i&7i<}e$xh})=dehn`xQ@;7tcRfq4 zM?_KFSe$L7glfK?**0MfKvOptOTsK`BOHm~ezhtUbLKOA8qACF!=7@b?Ah;3BW4I1 zC`FZ?j1rH3aQ4eoV`Z9KY=nAg z-;|`p+=$jE?p_2|^Tu!o!RSEUezBx33W*1oNNrs7CoQc=3Pha4uU|Yqo?6Zmq^*O$ z7u~Apcuih^vB2|0ojBm>JB>>|bD0&8-ix~rfR>q+sZQZd|UNj(s4HINDR8_*i>QJ?HpJGNd zi_ChLLy=Jm>ZlpU_6F7yLWkH*i2H%+%>?{#wIt@BBR1VB$Eh=1Q zS7g^3rPpkTY?JKd+?2Vfi|ja~fl^#3?zpbAx$_{n6a&xqTx-#GWTXBZcK>h};iA`TI+_XDaOps_aKoZm=8N!$BZR!2ggpa=%K6i*b%E@%KzO*xCPy^(dMT#!U zi00U9lbU`t#eOBjL%T>PM7XxSg?(vu{@lsI;37`!Alih0e zmS$tiT}yIN{P?GD_x!7_2nBdQqf-5LD5n?rid<`b=Vk<(5-PtX`*~m}*xwI|Qmg;w z*H4dPeA#_8f|*Pz3pg?K?KQ2yG3%AwQ9;Oj!Y8uE@lCYI zQONBQZv8L97AC5udjttYPcFRL6bZ%mD@3#KqNn*A>pHc9+oK&`0kdry|#OIyI1zKn~H2e@8awk~bf4*#PKMAq2Wl_Q4_ zty$L@3PnadwCNy#e9zcjxwF;yUtVnP9!+s~t|44;8p8XbPW)aKocShJoz)-3vFbuX z>vP|eOY;dQ;V9yeo6K=TX`Ir*i=v5toF|ONujl=A${ZQ&=@`Lt|23;{kLG@;ugF+x zgGdtg1owJ-t^}|{0v5Uv8C+8*@deIy8`(mXXWrX#%{S5XEJ_Q8v{Tl6E~QwbGUpfB zp@-(og80GjC5G@vza&ImCR=;|2Js{q9O-_UMUplf#(a9f+uO`8QnSuDyYB-DTLH1M zPRTgCCZ_t$kc*5j&-bcUmVDBPwCzjXfz-5eP7moznL#czbuhiq@~y2@-H1RI=Z30q@ICT`C7hYIBFP}D2DKvY(=m9nzEqXs+YI7BJGL6_ zw?}JeJ)We(XiR#RsXW>5RCuY6eyfmB`OzX(uzb+{*z;H(U>?E33bS0TVl z^$IWeCEgw@OZwT+Y}vKED%l$H1heT479j7RCKF6tcXxX|4A74(?g|7Xkh(%l`tUSN=lV zfmt}H%l~(ZitkDv5%WK3ZHe8#&D!*r2}6F1x*17$y6vb7yM#~$+=x>YmXq$+wR)cm zOMd+*@CJ{+Ja!_i^YeePtVT;n>;yb!N4Gt{`yE$evqsI8?+->!?q!RRz(p=^=_AL+ z>%gc9jV0uu$q51F$$5Hju=c6+TDB)~)ivt}*$7&3PVj`9+Y^CITbV%4!xOJigL&pJ z(}gh>PrfbzqufLNygfN1vVneYDX7pi!sWRsC+}T4c9*ap$$ysakFbmLFHBh28QOQb zf8Qol^l$rKd?bFR$oV*c5R+f^mMPb@C*pZ~*UKqVkHLazi!(u@K`y?JzUXDo zos%UA;~dM@dD?u>zJ=W&zaS$g3^rQI1IiS?ey-FQt_GGLC7PFXkGpw)6DWtn5An|w zP@f<~rhik4#1Q+7S6^SeCZ(=HeD+F>?e6|6%nWinoVbWfgYe$AKt%kIzi z5LQIZ`s>ndYfe(%@DKyf_N1JC(g-@xu7q#C_JI_;Uo=+}6%f8pj|$~Yh@tYEk!rn@ zw)}dh=|9-=0hS5lveCl^D!+xT?lyNsNJM@S33`R3CRQ$?Vf2I8oZd!B|D3LNF!`1% z^O$7^8M9i~oU+(*H#IE$I)Hxc*Q|C~43V;RFgR3@R|oJbnIACW9MW{{w&FLA=Hc4V zf>Xii)pSW}{?6w?ora21<^?@DLI#1Pq0}c6tV<+Gwx{M?W1`#-vH$+K}I-4jpciTtA zuKXZ=>7%orLk@EkwbeYsljQ2!9^UhQ@8a{!x)@uGR+5-h=cb&hyCd9_E~3ia^Cy|7 zupzRv45vhhVXdEEaraV}u%-)Zo7zsaAgFS%`r!V0p`IYcW9OQ+Zg<0MNeNbi7YIAL zA2dbx$>0zQdgfR82g&{u92&*{lcLC9=}G|pPU7bDXR?{SXkQb-Zw2oK!fD^==6)~0 zeJ-0kE}O*@6(5%gYQAO2JWNXqam6BDm4AttvKj;t-H82fNpAiHR%T|sAA-kF;mS+a z2}ga9I5h3dF^WKuCOlTSYXwsGksxU^+o%{CQmb_OMd&S$uG}2Gb{7l<5NjTeO>r=q z;en5wZS34@>O^PKNnvo%U5h}1fsRcFdU4fdj>HESI6ampb)BiQQJU)dWtHy;kc$4Y z+Y*qgD|~*s7XaIP8Wbb(iNxOcH^<-xTJ@iNJAekU4)?DrYWUL|`QzJwPj}or9B)OL z(7AIZ-=?n1ab;*;&S-&KCNE>U6#okvmH!M*h}kB)>~;QRBm$zQ9J;^NbqKZ`eR}&^ z@#-Mu3bXqzR3;!c^-dD2r}_7@Ur!QbQygO;Nc?I&yD^~D$N-QPd|Od8cl zbICn`LzoC$$vdk9W*f!?X5j+MYin`oVw@S^>%9|wWBr2SoZf`NW`iG$!5x$1$M7Zq zrR8zV;}eIU9bhI6SDU@J@%jlK{$tR`eH|3KDrIw>sG*w#@~Y6DUzjslKVR^hveSjd z>;=O1Zid8Avv~=10oxP4T{L4*S1;X}w{f zJ#zp#mbS)6#z2$_EWOx7?#S+`?(yiX{F2Q~AGtgB4g#z1{paB;C+44e_5lBOEN{6f zi#c-su8$ZEmr>mHmJTQi%Q^}K|(i^+t6GTGE#1i*)m_#5`ypb=crVUVu z^D_DyvkJQwECVjXqhwnUO`lyJzoWDj$WJ&kPDF5kqAZZQESvbEujD~AxP95xd*b^j zu^T}XreIUv237nhDe#lQYU)xUg*T_mn$@RVFG0y?Qd$w_E7JE@jf{-p`5y8UPJkNn zU%LW!hh-Y{>#YF!4#%yKC7g*krBm-G8zw=O5V+iA`pAL@>avPROJ=z(^xR8C9C&`8 z*ezY7etFO8I;2b|W5yJ`JJoKyzf)hvbx$^|$--mu>7`JEd9E^SGQF zR`v~Ru&VgGL}FZI=kA|r6A(F6YztKX9>SOIZVthRUj$*7e z-CP9SC7USC(16>`XnM1qet{ zpr8=j9|*h3s5Y1-TIz)YrMRXPcX#_J?jGC;E+x2A+*90(O9}2C+#yASySoLKXXnYk zw}0pCIlE_NcIVE$vodmfmVy1EX8h19b9vcm)H$l%JSAqvo|GWTPAdlF>{WO~vOknm zO^5R0m`+!xWzKe%z)y+o#qzDRNACPSS=&jy-SD1Ev=JXxiN+G^@0iaG1dE=X0VD)G zH9dB8|78Bv7r8QuO*7?99*0CSeXEN&A#4zDb*)n@-qj`hRPeliGbyznfB^{joL!Vc zCJzlnQLywUl3od+pIXIQ25i*Dr&WYh+1~T;W$etwBv3( z;lX-brG@?*0rXZM45F0PY=vt!^Y40r+_kGOvKT9Gk5@t2qsY^?Xr)lgK>PH)R$Lih zJ|*Q`l%a1Eqidf*q{g;k*QNyB46WPlnZ~wB$`(Z7+`omt9cLWC0~eWRIJCYKT3|Ln z>{NiC3!)pjX~K@N>IM2{BxE{!aVoxY(n*`>mMX%rJ>8VY=!V!WZg+))G^AVT`QYVL zI|R&HWDOR072_I%e2R%qK}YC9Lc!-NhT0CX;AN6qq(=l8W7ahi0HO-#jwEwhS8_iyg(4Bz;4UESSSn}HTWZ4b)DLAa`f#+;lWi+3|7Nr zx?`3bha<;DG#e8$)Wq}cf?Wyebj*`F^Zh?4ttJ1Uv~uKm{R3hB&Tzy;#FJ*mKi-je zmGr7%V!5>uB-k=zt8@Rm@yL4Ax(<)|AB@)Ikgu~LPL={L3em`4EZ9bluF>Ay;}!^_ zzi;i~{ZzSOeBqX>fp`XQS0;DiBeo*yHU@ZkFIMUBTpdru`cj4Z_h@+=i$u+dT5uuK ziBydaq_H#iK-rj^GFDb{%Jql&5r>bk3vD?wip8#*WB1Dm>afaA0ynKD6@WTH;p<>x z^6sJkD~?hR)SbU}yeu)@-@dv6N=Ix&xH^(&oPG0-DQqQOft2#sVvnQu`As~Q8sxE$6B#~!bta{ynNIwF2~p$CtBQ|(6RF{74|5-DvsFAA%T0D1x&aw zHTWsvLbLWi2X9qnt}<&a&7s367IqsT>Fb55=Z*q@$dl z2wk=9-)QQ#bNY?q)-&+exJPKUb#dOIerM`|>-N^LJ3BFVYZE{%e~~=lM=sEGErvCm zlYoUY3!RX!>b>?n0HcWmE+3ugFSbyD!7Ro-uE+WX0=9d#JhDOtfi$i5v#{!Fgs@C& z#&GSspFZ5^PIVXwOXZeR-yMHC#Swf+uGw?<)U5;`4GEAf)`FHufY1MQ8g7JJTe1HU zzG|QTNAQ1qub}AZJ!wQCdRlO%d1U=8&Uf26n<>DLGTZ95_lk$!FSNa?z}$0kkjD=~ zmwJ~{S5rJ@1hTo59Q9^U1`VNCtV<=TH)x?z7O1Ai4ReJn|;aFPJOkbYHT@ z_M#*?VX%D_fCbs~u0MbA-XEs&Jsp;>Zd!euB_9;5KH_l9-jjG5^vahH89A0OuU%&_ zcOu*az1MEK=E|>Img++<;H1gBH5D0%y1@Chjxw&d$HsoU`J{=m4FZ;qG_V9ze`f^~e zen~3gCS3lZFq5(L%#VWvcJX4ibkOp13^~ShESg>vA!e2^=|%%2c1rT_dIrasvcxU} z=|3o%k^bJ)d58Aae+6afid ziS0q*CMO^C3Xbl0|DX20z5a=*+KH4;#hRDt9UA3;%3crX7dvGsdH6US>H?T}F zaF$f+OWjQjr8oa7SIP*l)BUS-PvNX71Dp~&Y^ebLV3cdfDn$Wq$dEh6~{s*ORs8sF_SlNLAZn8f2SMFK^u$9enf7 zT6Hqpk|8eNH!5k7EId?hnq?v(@=E(U`gU5mlt%E!m{+kz{#^Dx8dZ1=SfMoJofa$~ znGBiBUJtvIJWZUDTQ(0YdFShmMLe@15=?K`dn_tB_~<8cTIGq7acymPFEIK!CB6IZ$M#Jn_kjr!la9!Io^UMz4m+;QVd17MZ>r)Oj-MMGnSO z?gN1?IeKKquN|q85@WWxr8l&Brg~aM$uCjnW;Uvw&v?`Oi`T+o=?`y&&J`bJN1T`0 z7Q^xOMf&6F>MBv0++tCDJpUx!oIHXI6S*q>%6*Cw2{#kn`&k0iqKP`E#C`a#t%WNG zV$*Z%2ta%t11iqZLG;tPw_ zq;a-br@Mb9+&GfsXoqX;8f$^|-vwg|UD8}mt^5JZs=-om+lG^A=h!9ixBud7g3mda zTZFc3B&%ni6o12*9w_*#jp7-wXy+NSg8j#-_4aav7TK1s<@`y_l(=c(QdMr7H(&Tp*$MkTC2-Bu-~L!Xzm za>UJVTrXmGZirsNtjR!ezbqC5h+435EjUYitlX;oegAb}3lHjtqgh%b@dXqD!XkW6h;lr$PJN(9(Gpdb+mg_ z?)I&S-=SzZj)C#Ao;JWku{D@vm~a&@^Uc|nO=#C5JOA4F^>+)qy-2Ey@`KPS={#D^ zdP_dIKkrlZcm=Jd{C$c7Mm~sYSC$7Wi}VWt*#}eZBwVA))#CLg6IA%BX)FLfMot&* z%Bm!=o9qQ@(v{lgLTT9hNDU5G~j%dnI#rH`zIOZ3s#;AMacU3tE*uF*D_^yva-rAKy6hJ&&|$fk!o!#Hv4oO`-Otoq8}t(#1< zgA=B*52RX(C)VMZj;UqGVg~thB9?_k>G))e!Iyz%!`@UdG_{;y+_8V{G5)5~XOQq! zjp5IQg7icEG@Qc)ywrtio9SSS0dOnjQ!Zg-)^T_;FBV}n!Z*ZuS)qv#bKH?<944^f zb80b1#tQ~fr}AH0^%-JbGb8byLat@5%LJi}1!SaduK9OBQ|>ZdJc^AZ_+ue zRo!@wkiXRV`q;cH8XvIZK5UxeR$6_n6i*j6z0RFOVFB!H&DI>=(NZx)$e#YV9g(BR zZ5mo`kSlCGm<}GPV#|z!nV#g4D#E-dFJd%YS1k4t+)6LCUoD*fvYdQ@xB8hj^Hr8d zl?b$uvUFZauw*d@+tBiIP|a(emsX;~!|d`&Mg+JLXJJf=j(WXnt*-+YmCQkIpU?3U&3;i?7N#8B z`A;3=%CQnM)KE5L$D-~q%0`;@7S&6v_3eb4-mg3FTwR>DOP`W(tCv+j&2d4re5PwC zH&_o;-9x|5Mt*bfC5#6KYFz6?uDjB9rQsP;`$7^1W81D=dJU{q^{U$D@iPU(6e*WTi zLRxn7hrTQQ`2O|HknU!uTAsS+W+z&{U}pODCy$@v3CRP2BJM&rs;<;&EN~WcwF2rIl-bRFH2nF%<*S<)O zv%YZWYAxO4yMH8PO@0tpsQmAr49Qhw_xfy9F6)lGJX4WlE9aHWVh^Uz&tSbt)W}$~ zuFYWnmjWZ7j9BwGQU$ki0962LrN<-GKYl;Z>s9_Ne_za6nqDfmcfh>5<1Aokri9!% zi$(MmGwkPpLLlFK<*@he-_+?|!q0@h$pN%bYlVBIrYtT|>c~*qX*F^HzXN`u+);Ci zi)=&%oqQ}aO-P2Pe*yfV+1u-H6iRkn%6=xoiDG-lZ3?34xGu@n9X0QkxD^0>61vyU zw4%`&=B{nFt7Vh|iPlB<8lNljv`9+vjFj7FHlQzX9hTei;ukLX=sxQsh)00|%>Y3_ zzP|%6=zN4U7&|fe)Qhq{$Ju2IExXFTfHoi|iYw7x{WWfPXNIkTp1%U)5|Elega z<(cTBkW-!dqnn4Y^hjOk=a7vNN#(a;Yp;8KlWgc;q~Nb@#22FVOa^@T1j4+fDt)mK z;2l|AD~&xHe%(Rj&n=sEJ;KL2TVIJJWMqVEF~-mwXXFeHz3ckDh3#VOcYd&aePD9?+FByyiweO|rbzS{eIwUabkWWwSQ0lYf7 z3*hUru*yr(T!cjmdwoed6ux549;)xAyHISE=8!si0@W zkO(FnP)G!OHD23!nA2|cRo>nMhnPO5!yH^T)M;g#*leHLNh22b&BZonI2UVp6<&Ph zu_;@O3knY9Y$C6~_6ofttXu1RrdsyaXg%D(F_bK8b-U`Yb6;WxXUg9^VzkAp;(PPc z5~|J&<~ps}y-L1dX63r9Qvs{+i>8L2ABq$l#hK3UPR5B`SnAGLNg9if80O(^uXH+P z2xQUZS|p72-zwAj#zi6!P6LW6k>(j$+BANB2E(}OPzC51%gepO?ff!DDUJpGQ}$>| zmsk|F5Ovp@i1TZlcVF#OW&mecH(%<{j`X=snGP9J&R1H-|C*;SPVj7^ISe)+(S@Mf zppdt5V#sl%fFa0d2H=oF0SlZ-@2O)vo5%8p zm1I6V_`6sJ+gg7zuAnSgf+VgJFs*P~Jm|)DO-Ik|_*YOI?R>>0Zi-lCLdq^YSNtM` z{4{SFc7Gl6;2sp1un^MT6$0jnuk8)7+p5ojfT*k@(Iu{{V!-Q-kRjgV4DtJQQw?u` z4dYWHjRz#o7r2eOa-`U*v$mx;Qh62w<^?Yt#l+Fw=6%G&9OL| z>qze*22^{YUL}OjEg6&9si@=;yo}}II^T|RVvp$;e*CTJ;V1(JW?TQmKdXawb=HRs z{pY^n^26~T}7Y# z!-2weX@8Rbt1~i6(m{b(HwX?bY84rIZt{8uq-BXU`01N;Zkx~9oLpPIwNm^SdDTf9 z>KN<+>9#<{N7{HXL&;PC0MjgPi1NT|{7bjj*S!_kn$faPB*VI}q(_Ek=pAYL@7VXu0iG~t+ti|j_(qlgx5s)-Yt zk9|s;YF1(+oqSOcr0N6jC<(1csm0MDZVtNU;V(jK&L!5v)-$z~5Rtu?f$cHewd9Tm zQdo!N0=PotqP7vvlsuQDb@;T9y|n%QRH>%cEWvpWakKf-ml7frQ4b`K^51!CZp?rC z>Ek>KGM)S4N%=*FNnY0!crc*=DH!O>FwE@ zd1ifi=3U(kWmZ=}ETxyDlUpCja_Z5YGkzN=u=(g%2r67V#d^vt`3#Po>;PLZx8obq z?pHlM(7Y;!$8?!&h88}gw<;j4R%@=%2-hX>y5Rdm`sB<{4gbaP(68OEp1pmnV)O)~=?;Mq5vo?~!pW`9CJ*A&n zVL69=8y|B?2hTm)R|?+N#g`*d&KR|$KA+?(>WaXY|6OeuqF}U~%ATGzJdszA2kk1X z@Q5r50R3WMywEdF-9a4|)YRH;>SBlECV7-sjyMJXUy};!KP7%%0=(eR)&C@`_1n4< zz0RfeKIlqRTHP<#bAF?vpr@MBN3Bfs*Mzeer=zh6=b6Qt&5gKllH(SNu5K-^{CMHA z7p&vs1wOBZ`Fqx?ukUkbY#`7Dx@UA31N!||^(l|v#TTk7I|aF8auS)z5&SH;|Htr2 zX=M8738M$2VTtwq-G}o9TULSVn;w}A=HmoY>|8KG8Wzj@;q$1Ioxmu45e^E(O)4>l zDmE4MkV(H1N7P386{4J&41Kq+WC6SsN7XE0zKc426zn0-e47xPg9R=eXu+BASJjh9 zz}bm10V^keP5y$A5OyH`dXh6DmX@q}f}!>ixf@shf}*X^t2tXY-$G&#cS5Q;=UoCv z3nx&%^EYN_f@+ynqefQd4+ z6b_?cOz(b^l(DKGwzU#@AO}kKe0@5DV#-pfgkP}3+R4CN&NQ|2iEHhXk>6#eCBAV? zID1QOIRwGIJ$EB_i)`!LGUBvik-Q?FLh<$Mm!dgbI>9*FKmV1l4s4J!{ zQ@oQN@IN{Wc~K$n2p|uo*q`r``!-&WspM4VrY^Cytjtk#XZ(pY8V4F~JiF-f8w+t3 zQ@W<&r@1|Y_uZ7#-g+_SJnE~<)69#8v6YEN!EFwZr`CY>j+PW* zx#>IE&7ZasF=RCa9Gr9V?I%b#mJJa22TOR4AujC;GmeV=kdDEQsR< zON8Np@w7y{NBT;Z>9en9Zm9VUDTNH*w67!JlReyUs5EyU`I4`ar5%Kh# zxd)okj3X6PXUd(XkXkoq)aENeW)*huZq>VHk4D>38F`y-sW1TC3k|s%I}Pj^ zwd3w5K{dc0=JZBzgqmwTl`KZzzHK}zIk8?fZ`#Uhzi4>d=<)=NA!cIl2Cwq_+4$@3 zI9M%mDz$hRoYs=@40A*o#I^;iFI60*yPD-;;tHwqm|vZbF-+GA|*TsTuWxgaBo zmM~Q7(lTA+K}%LVxSc+HM^|X3d-`&3d!Kvlju&x3C_XU~W^{eA)N}Yt$lXxlNJab&Q&F z^%CF|yM~<02Q(~Ex^?k<28{{XL=x?ixCq6hjFmo@nFgbJT%o~|g67X&w`}`UN~%(Z zB_<5&iW@dmif9>l`DJm|Z!h6G^XXY#3gsc~>T|&T%~g`^S-{M>imW{u5 z$tcQY{<09kG?nyH&NaUMeFS66H;_Q3x2SLa$^u7CZn76eGX9|LI7wJxQVX=Z=I>36 zItL4#HiwSMQeG}?^#psYd^hHJFJyUL2X}R4MMhQ6q2^C1#_vFZlT}+$%*GX%KMOA` z-YaYJ<4&?NC;_d_Z(6qW!!UGGc*I`_l$BcYjl2V zqjGd!Cwnl{02KtvRV}O2NTz7$xG6T6Ad!-l3V%w!;o)?V311|}4N#25moBd!lbe_>v{N5x4W_jf{+w_fnuKhKmu@h3uw-czXYnrC0)Lln zAM^}Z6x`E^_%cHeTgy2D%tb({bEVAV3vun`rCb#tVTKw&dH2?kp&tIZbDgJn%U&ea z>B;RpuFcjJHe8{`8k-Z!;l7UvCYfM+jEdWt)`x0b^=BBQN&W&xXz-`c_tIx7xS04? zTh{2?Z5+PhG+yaCSfSXyEYO<#xMFX%Ef1u^UT<=fD5Ww4L0jy!WXd!!TfLn!AIAs^ zG&{a+Umk)aYur-4#H6k=yO%cM!k?N+MzKEL19U6s52OV-q0E^bG|oKM)8v*d`ygA; zSE!Fkw613&+(Mb@hqW88?+?;*K@BRup%g?5kJIZTpCxr*imR6#zGtGHT$%K0} zO?gctFK|yZehfy87bt}dygNOo*hLgkIJ6+UK)ps1hgzvSx^uM6^m@Q|T5kk$$8G3v zC#?6hq)RleWSg{FKmL6b34Az)cX#cb71K6iRr4Xj4iXex-H9tI(2QkKs)XZEKD2x{ z=3ba8o(=;?pPH-sil1W(T~lgW_{h$IzZ8@|;5wlpZ`y#;7m+SO3S1*CGsi8D=ka^a zoUy+<8`br4O0wHA9qK0O96 z78k8QAx?D>6lvPx;kzHZ7ud?K&GXMnk&Fn8TD{m~9qiBQysmlYPXJ z#ZcbCX}^BGMd4i^0KsK;yd`t8{bppd($&V9ql706Jaj4FYz!)k2KA2# zcs=$oys0sP2zO>~RH!}xX4((6LYDE;{~DOrCVdodcwd@m zeevbVQH8_6Rl5qt-*L7P`EIGzoK44ZIo78)PW@@A2WFP_^ouF(PJm! zke}*AZqGKxNcWfCUD;!uaW#E}gw!c2ez6lZ8`!Yj>2U5xm+tZtv~#*dsH)iRNJzEn z<}c^S&>?}!LS(|lLgLWKDgUsNnSCx|z7Wjmq2nk%*?*>9jV@;S=ZA)iP+Pv1<}XoW z#eI+1G3$O&tHe?js1s4StC!f>*1Pq7&zpmj@G4(mXwM16wIiksu`(ZGq9HPjXFi?$ zcsfV_Wa`(sY*iWYR_W}vyQ<3kXsCbxo8T6~Q-sfUPElDTQrFAdRXuMGYb2@GBH0>} zJrv@b+h|+d=PC6E=5|%bGd@Me57D@*udm1i_yV`?=_ZCA{M04h+h~*nk~O?mxHI_Y zFb#F_WubT4KR+?lxoz(RVP6(X7R*{BY>s3Z?w3YPEX$nnno(_mb^|^)b)M9|I}sf3 zO$RBxqif#-t&6f1NxVzTDZ6u)b!l5rx#M4*RmtA!4YoD~C*Cd08v$G1xU8?5YH(A; z2WYpk6l1>wFkn|yHSlOZX3-4={(VJY8FY8={(+35Cb(CQ{ZC<|QM-k|2-+^E0G(n* zcI;*SkV`%n0UQZFYh;Om3wVvTK7$uYVcKt%Ar>QaH49i!gXxE%eDHrwg%&sQ0ak_1 ze0I~=@&fM#X_yhp>K)Dd#am#cAXGXi_s#2Ea>?Al`y9&%X4M}zBL8f%%`y4&47K$wU-e23Nz9lM+L>{O@uD9 zf20&#rB%YFq*IxS-t;>@{Qm`2h0y?mz znWH_=zW^8lYP9}j^l>s5zHFVb62(l~-AMW5_&bwZA;(gb@;d4i3it*N*m z7T~M;)%RtXw?8k9}#|9(69RY<;%2hMgsrr_vu4 zzd$vs$vRhNe~nFXJw$g<8Hea!)hnlmBXxW{z1|=F^d(x{(UHcU%qhSl71ma{{Pbh= zy|>wAr9B!wknOrn{Go4zXmw+|{y}(lvlxWE&Y;iF6h=7K!;o)>+!SrTa{`7k2v_Dr zB}NdIRLkUOX+W^6zwgQRe!O5E-j|(OV~!7ATG&8k3)It{wLwn4qk`Iw{H)wTG#Msw ze7!N#z~N}*y)~668@3eHQGyT*rQU`U7AB<_`#Qk?(ODw3yzh@%mQPzZo{KJXFbi5* z##`y=+d`om?!Mi8J^>87oXJtPh{TGNgU%@RZSQ!PO59u?&n@WYtc57Ru3oKk2k)<<&U zg^y{_J&~@+bL)l{Vmn7`??#_<4t8D#nS)%!>5ElcNRy2e?6kfyjTs$`IXI<$)6h`y zDk4#jp~vQLq+NAXTTdEoky5-Z?xkpPDehjNxVsf61or?fR^07}LveQv4#A-~1b2s^ zg&@1#J?nc`^T#`1Cg)6M?%es_cP4rF&c;d3RyGhmmmYdw$!HX2DX3O-#TuDM=i@$R zcJzLdVAkt2xDEMAgEulnCZ+Eq_xhFOS8vnvH+(FVd}-xnB zH|S#U_yy-LwjWQ-%jyPwHSD|YQ@a_;tZK6ttFSf&KW$)~2j8tsU zT1m&5U>GezhIwNSpf^j=Eyr%o-!36yOuaH$$k;u)^M?=|)!|`(vVP z1|%l`#EmeyM!A#O@^gBEDdYPd$DLR9DEzhOEz3qVSuYxN!~5Rnc%(64y5i>x_xI$V zoj{N`rWQ%_T~lQC=7pC;;Ml>{-W*QI6K2!nI}~kJ2O(61u%h>x$4*Q4FQ_h2r4Ncd zA{~8(F21BA8^Vg1At#MKv<@bM@(wqWf{^9cCk+4TlNx+VE7{?@*EFJm^9hibR& z$1qZs1+6#NS+>`N=jn`5K0{hwnO z^T)@9OmJJ{E5@|rn~@FqCj69Rm~IcR^@mMOA+!*aQg36;!#3fO>o*h@@T+HYtKs9< zS|1gDuH2Uxch?S1HTM$^2CKI39D8QZ+achR7{NLP2M#S#VU)+{DX(R`xJ`#FTah`r z+jsUntBQT8#&=o!&~x14zH7QRi;MzF?32iDS-vXFDD+yEUxE=M`*)Jx86{2EFyZd^ zKT7HG-~2Sy91E7_u`xQaxT6T-o&j$0<*d|x7S!7W*6_<41kA_GVLIlJ*|?s6s*OB; zGEwB34Fs9AkNRj&t2O`;j#kk=D~ah3)TSEW`+d>1mwNo(S3w3|ZuMVK8Hi}8Nb$G{q~=kXbgb!cd4sW&Cda{H^?6T9 zv6Bi{Pu!|S1tg2H=&3<>x)1d;0w=ST+zYBagz&BOm=lQ-`manDQ$J!~qi*ZPEHaG8 zZ=AI7dF|3PeEfJr?Vagzt!&4=eyLFdYxd^D?j>{Qhov(*9=S+gHJRZ1MOP|7_m_sZ zoK9VQ(FYCpYq13~q+ZboWc<89i15#kAFbZ~HpTt*=XJi)?JJ%P#ostGFnC>6 zMJ~ngoys&NG2SE$qSN@}SlEpiFGX42O^5jQ`lbk9H8KVSK2m-Qh;3f}L3zBql4Y=b zlF_8`-7V0+Be7(HN4;x`d3oYxhx47J*%G7vT=tmN+e>t1*3;7pF^%a$)MZo%nF5XF zHy3|Z(AJF@Mc$U=ftRCFM{MCGIU7$SM;G4tqd#fEXsm#QuhCskJrbBuPX6Jei2a_o z;Iix~9&foJg4{%wD;S!%(u6>ZZnM$Dw2Wf;voP4vMfK)i-~&vB7RXIeDsbsmLEqRl1M zB#u7Bc6i3YU9u8Z*Qph&DuNp1owQX%*(ePZ^-N5IP|013gf7?9WD+Aht`n>|zGlN_ zhS2OhJ>z_QbE6`k3{=6#w?-3yJkp+4#CV?}@NgW&-RLbSE%#ej%Lk&}|1Uzz4d%5A`VK6XUC?JVM0(PS? z%#7Bz+SuYsOR8&+@%u<3R&Tjl${urAB>E!ot&{WIF!P{}+sAm4N&d-Dj`89Ey!*8ZX9nj6~s*vJ`s}S7)N!?64^7l=8JH$__x>j; z#_i20HTaS2_aI%>&>RIBwrTc! zJ5C9@X3x73W&FwZbRw?`^?P-$EK*{o@x8W@%;ml(*~llv41v}wkqM0ACsB%qB{Z-2 zuTIW!ZQH@)iF#tJN3@>9nC3U#5I#Eh=&QkH((fQxcVZ{HQ8)_u#~~H9=&jIXPJM6F z;BNA5hpp=>avHUB^Pq{mBAGM#aHkxZVkxQhCKwU}(L?5in~-kOn^cKxWTfu`Lz`5ZCd;VRB`nls^*n!-y_c3so<)N)-qr=2?Knwb#H1xq^zh6&7?s`4*8Tqqz1gLfaK>Tv! zXXkU&;&FdXJPK8$K5O)^64;@~CHM`dd~SGGqPTJDk_>fns^8n6u_7pSCZc0^37kD! z;$=TnIJmmw^oWmhu}tWXbnoBHdRlRrLZv)3dsZc7<2CHaMA3Nq8fR_H%xT(+TYub+ zFmu0Qaj+`Yn)sxUZ%wkX)k22nxPrXyAqhttC4FCv!wro2{(-NT4uQ-n;5qh}m-g$2 z8@3_FUjw{}yANBl#mKHBE@<5hxBUW>0kO<_zmSjW{|03)%D%;GyE>FvWi zR+Bd^nxo^oYypfL_)En0weaZ)xB3xi-TnQ}7?u6-eelvjnBHVqQ~fCZiHn{oX|16B zeUm~CUMiBkq~q|81!-99bixXQgPPayx`kWsM;kdHUekNgK(D-1H4}y9x z6&?KkS^^Z9TKC(B`VQX!L;}!xWeN=@w_Ag2)6FZpxTpQy6l9jyf2b(JJeiJ|=LE)T z2((~8^2!H{(j&w}@~m#WStWsvsg^l9K0YeT1#4=d(_uEX<_qD0GhzNxOUwMvTbK8i z=F#r;*xeOwUTy4`_|#*9@2HX=%sm>v)kjyi@0a2DeS;Lcy%;We5X`%N?eq24owOv* zNb{Jg;+oQe+`;R+cLR+TM+u0CeE0FW?P*9$F-NQ9Sj}*zrFP#wSV0bj0N=g&vT6*EWNm`LmUK{(je z;xEN|DXni0pQA!nUImcpHK-vZzseVrluKhk{U(>r`<6UxS5y$4&SK8-;k3#1w_ey7 zeJEHYa~as5WjROrxfQ|TtWrwYAA|Vvi#T>Py+~3HIybMef0PVE3@$*F>?-D|p{g

      +VwP57lv= zG}SeVCV88hoWqg;i2KVvLO;>PI4UlkUg&fT*I`j=-Y2~w?BvrwCr@_hvMtb-S;LJEnRoLqf1xeVf9~wt7czX#ClVgze`TgQ z2HU*xir^}<`%=$YMsWrkX|C59@cM08M%#UGSNzN;(94S}{Oo10&-nV+8xqH~i+ooC z0*h?~@5pt=#?G?t+M1FsI zwDx!{4b|<)&N;w?6o-k#l%yegs6u3YY2fH~L_p4b<^$F>WV05)O};Hd0&&RXW7c=cgB4y8c-Z`{_JuYTR5O`>BHx<_K6YgO<$5?1fDO=HvC2Koi zleyxlsB2izrUmsTJ`k)F7f9mE*y%*oj7gW$)v>+clVQ04L2brp9$L}Cw>OzRUTeHr z5gLcWg+IXN)@jH-fX+fb_EpAzn6z`v=^Q8+c94<~Z}C2R1)vC>5wht1_H6 zw|B>U`s90Il>)IU1bkSP{0fsha9vi`rbd7t8r)|d@w7&nxonWhv+{0h1>!clYqpI_ z8f%Ptkg>Pojs=`ngu{geB^-t*!q+m%;9Tp;Btwcn`x;ca9}s+1O1Fv9&);8!qjmGN z(&nElH2&7UkG6W0o-o8iH*+}}dNw*Ho9bhxt8p3W84joK=HW@?xb3f?E?i*bI~Msv zLBIlbF#oHQIspKp%4N-diP6MNkxg*|a*djm$&Vm2?C!WoDiNz*S~OYuSY6Q%b>ast z6w4Z?`n%hWT`x>IcEbieR-AXdq9CZxJ=Ovcxsi;;DfoZxs|~SN>DxZv;IiG10;CD| z8?j?m)sIGfFgj!lv=j*5Z|0W|$|YR7V<3hpy2xKBx|WW6^Ecjkt=&eEr93FE!N(lS z3>n>)1=kW}2C&lovGA>$5DIY*5ktuPdHY=TLuItnqGny2Et=X6JqB||v*}Y<`%zO% z&!t3p;$71)Kku(n;*eg)fDl(`nz-17GTpw}T9`%Q%L4-t7>-Om{QbOxw$&r**KrI- zk2mFtL2|FDZV^N!)o~2W=iQ(M|kk$ zrA)@N=`Wn*rBt-!^4|}&1uI7iwc+o3daA0_V9ZLXJg%`I0ds=1sG5Q(tlSB+vZFB8 z1qvee%6O#AO^O7~7`VRI0SOH^RxvYPN*tT0KmO(YI_4Ok&vIhfgb`}?VDH%_gb$Q5r)tq5Pm zCDYaO4I3NO-6m9*wD7(gePbi6W92emv$sj?dWzwll5K+*Ss1~rhXp4!hDx~(E!1pN z?w{V1xwyQL&1Y>eA9mH7cXA1Y#d|q2T3^qb;j>r!s(CH)$u#s$DeeW(o)}08(@*w2 z_WwWuy_`eN+-bJVkvMOb$-ZNaB_9hv$na?{5*Kq7sTla_3F`1 zdKsu(Y&HR ze&-;L6)x8q?E@f)r-vhyM-Yp&?~o~nzQvZLuMI4iaK@8NBB-IT4bly6eEL-ojI9NF z!~T2>F{kSV<^FnB7xE1GoFq(2`O@Tj=+XB|2`pUMJjwU+F$1EbQV!ertKr z4^eP0GeM>0Ckwh6R|qQogL{}B#S&Gx@Y~ompmHXY08N_iR!l6tNX`qgDYg3tv^h&# zDB0$IpfE(QQ|VoKdjgGMgG;p8^!XKT-1z}9y;uKi!kBW zChLec8z+NtwYEBk5OoyD)o-E!l>K9iOnYc8k!LPnI#{hgRXQ>|7;IP@o~3z~eTJQ~ ziOb)%@`&v%aA9}ZxD4K|kOym6il840>ZoP^B-@Il)VNZgv}`IFN!WPRku7Z;e*QlJ)u7MOZQBuR4+rV>%a!|hkPUe?%Q7C$J)(1 z%_3~H(&vid_Z$EBQ3)z>XGlgyt29}*;^>t8qucLQeZzb1rIAqBcdV7y$*oP zIKZ!$+@fw#inTgg$9NSccl~Csz87xV19m22Vc#t@fC$%eX!$Kd)PK3Ch%YhC#Wv|A z-2fnC0+h^-!VJ)38hd*#3TIk4v6Wu8o1Qe}tfq13F0IlZnzLw+y7Y+$UOIQJ`J4v; zTxf!cq$+YdEUqxD6&y2%>4Eu-3d}8o@7SO0AIgk2LmMr>0 zz;7h0)l`-6d1WwN-D0$W4*q7rf0tQ5m|v3hmTT;PRPRo zL-+JFejIBKyM*qMn7?v zdFf=Di}(w0{+v2qc}{_89sjXNE(`cALB1ls_0~k{wBS6S)M$(sq7aKP`H`&^JA|2b zVY+`(=}~3z&TS*6p!D?A2gzz z6+t1@&e{-DcCnlC!+!C~NP=Kfy<{e7d5tmFMc(;o1^ByGKk04HYMmuMhL>=erQ5Ou%~*iXh6+vlB~r6woB?QQOKF zTa_`joxE2A&VIK%THhTH@1Ic?_)bxHN>y@cYB8-enY;BKK3C^4ZQrhbV;zag^LW z278%OiOl^r8g!&(BYae7jB&4?MQ{)iu*m@|)JgL`S+LoXuETTAJ~|l<(#y(unj}>6 z2JOAqI0Jliza;XCzI!Rik*#D!Gz0|ev4taCqz@N;seAZxj*w-0E4Akw9S75z$i4aLE$^4Rb$wg!SuQLMYtqORxH1>&2g#$DZYyfTh_^3_J7B)Gz@sS$ds@_9 z&-@1XawS}({f45q;FO>dggf01+}(H*U1Xu=?->}Xxn^ndw8`1BNE%sc6LEwx@!aG( zhckP^>u;ParZVk)1rEC_@8~x_&EyWjjjCYeL|U zGJviB&`mwIe)x`^5u!R`vt^1PPgb=4<;mw(;_RXLyP_Q`9N&`a`Jn=?Z!=pgXDA8D z6G}BybWg=KP^KNe0DY37#1*>7)ijpren?m9CCM0FfW>Lixav3u(4w8klG3|wQ+Z*4 zP;X~u{+i=kuCvyl4=FTfl5^Q8ySg z!>5jqP2&@($sQulS1<{C+#f9o+06J{c+ zJej_VJ&Q6jpFYiL+t?p!wi%V@WiS3xvmJOX(dO=z$K3TsSBaYE3#%(4NeP~Rr2`LSR3sQXN&}_~Zl|EO#=UD=h`dp_G<% zZy%0%)4iour{0K!NaL!0!fDC&7d%)Wh+S=Jz5|(-9NQKgi@Bd2J=M?cs4vN+jM+n^8V=$!^G$a_YiToX zd+v2`&Ij81G2<`g%rR#DSwD8^IYpxY)RPvf#w|jNR_bUYR_czzl93~35r@IIX(}!L z%Z-gA>N6eyM!u%DO>m@;5zt zl@B@RLb{m zeea{??mNBxz_T)9gQpiK+IY zGb0dzfOR9;1tFS`&7Fq)Ec4)8+!$e3a;)yb&m)b;@F*phQ}o^9WRG3rLu!}b~KiP@?hFrq%ia#w=$`I{foR$CaWl^pmS^+AXD` zv`KZQTt&FAV9{k-0=&b6Q9kBAc~jryx@Y{OhLZ9j@KtRpMi%-O(T;wmZows!djl~` zl>nkfrtMh-OQ*hljaxe!H_?c>ba7+3@o!>G)e}%?AlZx2X~q;&W#KH~SMsY!HmjNq z11vS+BE9I@9$Lg@8(2FLt`-7-V_x5ySt1!D?BJM_-YB1`TR5PF+$2gYzR_oyJtdUl zUF4|iyos_;njW$6a?T=g~Z&14t!BxS8T|+ z2|sNg3FpPME3Em(f~=>R11<%!X{);4J|!v&jj#=LXjq|7VbsK`0G-JSh|ZcXF{L?E zOsZ~?ZJg(gC+6lELWo|Zol>XuU<6z>N*^0%ia~9EU?4t_EO@1u$6U#gCwdl)0l$=j zO_H9E552qm_TBl#zK|GDCK@k5n$f>U#RT=!Bzxtv6}Wqy+Sbpd21b9O+fy^feHd45s?X)gWIT5^P1;IIdJMAGAxden9dyRY8By*2A|lztTXgLpY_ zPhph4%ZTlo%XpCv`{T~6H z*YiI}q@L20p#1qv+#X!^_N9~xp`jSI6S-JEI%Z!2LMsMCZs_UsCbx~dON=Hzy}14` zHtT{SN{1BIiEZazQu7HP5pklW`S48hN%PbDtUmNNTl6s-b~42xhVS~jW)bM1JK9>7 zv-2i!mmsG{SZMFcpkr^rwQt%4kO~SnKN=F+NqK8EV&Rq*xh!O#9&N{Qd4aB1nBkm5 zCY8cfVdU4BecB=Z1^8w|)tg~e1Q6sWexnUmr-<8`Ax8?jf(ej!7dnS3+!7YTDar&obpZ~0l;WTKz-W;K2I z_5-Oeh`1+Mz*Aq#7Z(Sw+%AH0>@ujKPNLN#Xl-rf83v2|jlJ|e&%co`=M$LAfRl~t zFvY%;3BsT|G;i31kggBlcZHL=^$OV;lTN;XOnYm zbw9C-PYokv83@oleW=N^HpFjJw_$1 z5X2KHk>x{z>Z`K1x!tmVqD~y&$L_ySM^PFxWl3#Lh|VnUzg?eSjSWlbhnet66;}R!HPUtU|D_ulZq{GfQ3G%kciI!%9Mo2QB(D1##T^!t=Dk<5jNYid$|8dJ6T` zrp_LS&VKl#XVu>i>hAs1vtO_7rX!l!KLe6%ulWk8n+>gFd2mVY67ef;pn4rFvt>yW zWFF4F&Qj#;GeMNDLI6oBponL(hjMo)J@ucfCl%HRCTwd~6Nu3%DX9M25^^30fXxWFxX`A$zwyAv5+`~Sj4Y-8|&8$ z_8lJC%KtQjMv&JpP4ql^AF}31CQ4>u2YOR6WhA;VoSP10nSN~~bYi5w4WV1B_@pdF zEKIa=hSkHmT`r791GPxpQ#GE*q(!TI&s|UkZK@GZ73F~`TGwOD; zQE0PlzS)82#JlA={(AUT-ION0o99v9J#i;%U*dND(UE;>SjR_h^~uu*ecM1~1@HgA zth)ap?O~paLK*(T-9Ic9JqE?;XBLwLUn?T>x7uHHBuP$-hXFH?t=t!O+<5DJ!aq5$ za=J)j14y2~Z3XCiDfUbMGqw&jlsfM>uX_3ruxjT>hrF?DW$3vgmal7Y=Uu3lp6O6E ziC&%}(=-89xf7EDW)@qBJan0`A>Csp!%LeHe6(jjj{1e?W;5F(3|Z|surJV|g@esY z6=);5@QwK z|16VjzfeYtfh6j2hc9$eK1XdOA3ZDm%1%vkaf9Zq$Fc00kdM9+Rw>G|>Wy-29Vfh6 zWMRY}Yn7Jzt;?G=3jws-^jqM6q&WZAA=)r)pwEfd(f9_b#HWeeemWUfQV}zMBHM8H z2Al|NPO}dlLW?E?k^wvwzxBg0;rL2znd<=nP@Hgn1fWki30idu^Cu6Z7T8c^^|^bS zTA9LR_842AHJV7O(WG=;8F%U0+=C!rR%OxJOHg@X>nlIkAujbn-PHG5-B-lB8T70xAxVDzi?xgJnBFH^MQ-n3B$`CV_ae3U_I`+ z29GY4Hveo*DJlK1fVA)c){Ra6TM{zrT%GSlyIXm(AC(?4jC4`7-iU4sI>6F@^8Cly z_df~CGSb6$hc?{^c=k*K5kO^t*_#V;e(iZRWAlfXJ@BDde6-kjElC6H^#;yQ!i_Lp z>)`y=n>)LZ>6_HZc8z6#B)TiLn42*d#LbINdz>lt&Ig(){ULdgNrJN|3whtE*dzoo zYTguh;qi#$12>|F1*_VvtPJh85|qMQ1DTWj`gl^5PF9UJx}aqqTfgoW&p=9SHI{!> z;#faJ@_+V1SkVyk@rsS|OJL~4aQSjeZRIHGT=O`Y-{yZ<#{BC5wEjms67iD{SAUUR zu_r3~fDtI>;e)B|8qRK027Aw^Pf0PT4$i>;!);#lk~t z>au8ug0(0c7%?5tPnpH}g!wnD2s-8r^r;YOscq_h$yrwf>n(}8Vh+|mw}B1#2JhQj zguS@&7Kli(s#+@v@#t8e--rT{i2!$#Q>s>sW>osyHwdAgd(s#Vq3;Hxny1p0C}=P6 z;>|}^&sv6dmstrs`iNOQ`cdFq9hE$@r|ILB56qB9Ms-OE8ch_X?VH+U z=#7i49?KIB#JGJP>?ehUQoB=mCW8GRn;ZN?m^j7xg!~IZ^_2XD&wp_*5f(s2bbLjg z)ib=())48p5o@gS=DW=VAxk6*B8r)5-tYPD<)qJ>!c{~5Qq1C7-n|jJkG@_)a^O>#+OZ+DVwtjr#qefa1669q#+{-FBH{ z*7}zN35*(O&|k^e%=LAHu*S z_xeTVvjL6pUu0%C+6=8rsaYJqdB0izdyviNBb)lT!l(t-qi%fe*oyyvF+_M^M{bN^ zi5jjYdsnBwj%n)?gI}q=o{@N8vdMe%2UNAm1rv?N4eeJuhD?9 z@uzIuK92t@nRpJ9?&m1^z$7^UnvTT zMq{caCg*A)61Qw`;YazWOuTtxXWJg{*c`al;r3_X0WI^LMOWWmuHk7FLiH>28B=K|<LeKqIe|lp7)I@T*^`QJ~6LA#3y*tMGG@ll`^*b-)boIfuhlE{J zYQ0l+8HNbi-1pwHdBX=gw{pbF43xQ|gEdU|BK1WR#dmsGorF3bHf7&+u++o-(+{pV z#@?&$DX9&S31ycEAuUQAwYz$EmvECMSu-ncQ=Qg)$HlfKFbEm2?G~K!ok(a&`vY`z z=l#mBDxe`x$AXP5XN$?~BFOMxI`wjzUL1*(>Tzgx08=ixZwVweQJ-eLXQ-9bW@6`9 ztHfGUU1$CE@ui=I*L{M)S3xUX+Nb;5EB%*^Usz&=JD$a{9f9?6n!ED(h_0Y%e|j!| zH7~|4=x)hFo!0DkUB{3G(OU1|dtTwX@7J)T?@HM|dD1kJ&7ngGzbA^|)t1r|6x;G% zB@-ov8h+R__0`=f7C2k_&Y&M*-e?xh%uPnLFVqb z3CRdC(__)o#NwC;!x%8As}zk0LdHrw#E0`(e#iC5LST`m|H|$7=@`MZ25W0YJ4>PB zlSv_UGP`5zr#GlxP!!2?tCy-T&}ueH4|T4fbM}@jN3j*R@P8%m0-up&T@f&*r{PBV zWbN%w_7t3Zy_8|SrpWr?`6_o(0)CI6mxU+dZO^H$K#Hc{dK}&MrFnOkSR+y8CK6e= zqZWQ~`I&{kNAe~Tf&ZT(5#j2)w{b{0x#YVai^iRYhNy@yg^YHG1gb(0&fX@=scj#>` z-R#02zR*bR2+ez52xo7?i$MCCC~02F&q8Sn$zeBHj64VTj_6d@O|x@0pNs=zpY{`g z?R5P6NGhvDBTdNEs6bQHlQ&^=19<6q0#kLaZPbl7G+bXGfV(uKQ@OO_rqt=#WyN~z zU6Y@yX9xOA_c}YR)R@tk%-YNf^{NU>3`O=_w{yg?RlvV*>i+ymqO1Q0Q~cHR^t!n7 zYs|gYrS_xmQmMKKv48r`?!y^SbwxWBxdapHTM3DgcF9)*bh~y*bsdq6r29SpNIhM-{g}TVZ`16PtVe?t2&XSo z?X@}bC5ZY`@9o6WI~FIk_Ti$1=|<5Yo@k@X12w(v%@KObxw%%2WBn)OB^Qqynt@6U zUO^}dpheX+u+Ps2|2O6}zS#{}f>deQ?|*E!?V9h~4Lj*Vd}C{9N)1&ys7d@2wbYYt zA7sUcq`_RL5kPB3f21d6xR#NDznC7aO~FP_YIrSr?k*_YEo?Zy4SRon#s1C=FZxcr z!zGg;cn%y*_|N8e^OouYFq1Wv>vnj50qMSBZ&}g{V8v6=@iP0mdJ&Vuf%gEm(4_1f zy{oZH-sw1zIM~4w{AAkf_+hQn$HU;Rr>k(y0?WeX{1)Az@9dDZf}9e!fGESP0nmfO zPZ^+p<%Wz}`+BoZleQ^HK=pR4)N}h&u|%I!qw^~Q9P+-;kbm7iO&^)*Rw59JTdw&H zJegxgRBuE4P6h4QUF!k{j{*9x)aJ;VDj{M3E)|}k74E~-2alpvH)z(ead-Cq&ADr?#%!ke(MhZR3pEC!0rpk>%kWnb)Iw^k zI`}2lZr4mzPluAIMZ`mUmmf25rM>cxj{a)m$RB-FtxuBs(Xnt6`q4@^A|BL3Yn%k= zcl4+u;apL1)`pyWfioPhVko=W9Alw7&5dgm^$=H&kpD#U`gcRQ&^_my)uiRRc=r0A znsjbA(U`23v3T0jYl-aeU@Ou+TEo-{>Tz6ttQ!4GLQwG09Qj9qZn>wtZ*qL_s1VI{ zI$4wP9RC$@SP(%MtKo_>?G*lTMiJy>dG`7d>`mQglon)JaWg5h#Z4El1JY>JCXC*| zDD(C{4vQ)Yn{uCzIkbmTPDy!hPB6D_TNir~erc4sFG+6O z(Ut3RCU|kCesk5{WVBh?-)=uT_i7>RiQT=w8g+gi>+&j|0RFQ*DgV(_qT1)VL5WkJ zgj(Q-5>%bfh#{uvaE^8*Vk$qqh!~JgfZl-oXhU3_0`>T+_i~1RFAiP$7a#ic?IejP zuFXVDHLZ>LHi|nj*9{@iw#uLB-}yUJ;~c=6>`t+wsgoXZSM3`|rRFwN(1E?&!Y}?1 z5kD&i!8nwa(Se1d9RY9Jc_wCB`h6M%a9K^01Lq|3$g8oxRV^xPVgl5v@$!EqUiHVH zWvo7>k&J-74=i#FLnyc>mWV7aCOm-PjJoq%G?{IZyZ0wUM$duY(bQj}=%vd#X4{=N zRTH@XNBvNXKMUVFBswI*%DEpQY1#K`9n1 z#`w|iO_)Vr!IN54ynv)>-7tdbHqk?rxPB-(%Xr*|0 z!j&672ErhdjeQSTk~wSn_YL_<`2Nu0Pz#!5qFsrqfbIjx6@heJ8h*f#^67K;61PT$ z38T|T4b8wk;59CmG$@_%0J@9je0yViiDX#$r#CiOuK;}VI(+*7lHo$4y6tG0#vMEP zV|}W>uaA%7$;rJ2(O*@%GNk5d>U7p5okLxq4xLv=kXK{P~;J zLu%G}uI+Cg=Gbt;Jl@p0N8GKE^0qXr?cX|3WKYq2dU%>Ps>c;OMK2~iaSL%X4qYA! zS^F>~ZCyXDjZC`a+Jz~_nXLi>$NQww5KJ4VKnd4hZ0^iIAw1hR_|yIHM`muH{%ve3 z2#T$S|Gf$<{v9ZE5AVrpIZ-cL2JQ;csTx$H*{Y9DqpCz6;X>Bxf+T*Q?owdm944NA z>wV2ztqF|!@XmmhIQ5tl^E9!V>t{lP1a-e9{+sJVK6nw~F_%VqN1`eP%pGHJPs^yI zy4eK8*?d3w+L4%JaFIZHZd_G2;?wEp92B((?c^E7j_O6yPF0Pfs@5C9!L*Z3$Rlp^ zMsN_GcZ}+b$!DCQz07;!p>uZ9hOVDTR!HSyeAqvGk#r8&&`*0r%2+bt%6Q$cR|q+c z3fJ)@ySY8oc}d*k2d%z30gL_VkFG7$eJbG6V?cR zfqg+BGC~{U=a+~t&|0x7F+TF?xtWYs}zTcknoV8cKNpJ1!QUKps7Fz9kXP8T* z=^^h{IN*}slZ3Q(I_}Y-OaB7OzESME6x=>z=xc4vds3#_Z`8WTUy$8;0;8=p9f4y$ zRx`UWR`lp^C1s4qj#w1En~WTl4NW`GIos|n)e_WviZk@f5mYyN|9+M&-?I)H_E(|( z^HouCS>^FZpuDtE5F$JxaqKyuslzTsv!U%N{*^l{FA^|o3h^zdX?o)2%pFh z55eH!@4nc*%fMPuQ8iT|KA6JrD#NW-)W2h-A{_EscC#{Q>$22gmQp((`++H-cDQRh z8MB{`o8&luZMUTrWPt z(l=XCKLGpuWZbR1e=FA#WtNCq{0$GQ-{B$PElor!&48-*3TI`xPB~&ayKnG438T1p z`6nv9+%U{5<>h%Hgt!@d9-;r`Hc+~?F>^8l9kD2BL8lRTnz+Syf862=@6@(ksc}%c zYgQBH^ccm{&A$F49}l;Zu6(E_c+pmNle{7*53FGjoXwdq?ZI<&P`2-B6lE8uKP5z# z6tczGTnD)BRL5wzRHsLmGg9%%8>$>j@iIiZ`nb)_4S|w%OZM@wqOz(j#xfM!^;X9~z?qUEF>qswPhN1{)cxkcPwT@=`pZN*_Dg0Oem(Ke|XC0?x zw@ti>jqo}D_Th~lZk;!6nAw3dT~$8sPXaR)*`H(wks4dhMD>*KJ%2@yoVDwLsgI0Z z^y*@9e!0(*|2a{LJ5?&6dzKO}nwPq@zrWO0sGXQh8^zK}KRvq$U&F}GF#v-JROWbU zZ5*Z91KOrBOqt@a)K#b85XWlZ_zo%b$k%Sk?QPV{II77FNhmJA42Sv5^%0&=E)ck_ z3^e~}V0E1nbEsoLc-r1*VO?^{4S6*;Zj*?$W2=_DG7WKcCHQZ4!#@v>vV9W1r8&Zp zs>Gom&d8Yo6~PeSU*Wzv7RZ-mJ%BY6-xSl>|wIy(aoJuwd>%km@ zz3mVgdsQ^+A6#4~ot#(&kNNtv1PsFo-s1C4Y2tv1zLkLLJDT;>H7e9UO&E9p0*2;n z6b)@S`C6i&0%NjfPNCBS&m?6zyy3l{j;a~m-R7#3CrtwPIj1|jstwFYXp_z%jmA4$ zjiN%_XuPup-I5k1+vUh!lFl-H!utK@boRQ>zZmn1?MM;1MJr*KQ8T6!K}T%e-vYS4`K-u@mwi9Lljb|x%kw68*sBSw zf$~>jKl7P?H`x6t53mG)3^#-jKVP_)SsEw$4&3!`r;qXJs`kF)K{ z;xX1kpcwmx2~$GM%H!K5Z5S`Pv?rjsTkDz*g5@u%R@E!|C82c`nHu89@Dz@dL;bWT zT)R~VbKPmqB|&o{5uJipGIgPSjeGZ3qPEFm@44_ZrTn|PD39BlF``fyt^03TsHEo_ za>S?^^uVpC-p5ZwSXkQ`Q3vsHaCltlsK#T2Gw#df+`X?Pz(dv5#%oGw#?BxjPJfhaM;d)4Anpb;kQOm;Bqf{m1u#b$? zqmzyMw3fC5GJclRJI>ev1b*qsR(PQ5u*zx_qna+P^wi zxOaW2pZ!fvnu2n>`$*v&?rL^JVKMCLET+GOzLXTx)EM{fVgsL_;_4t>j*FS_Q;Uca zmfn%!=V_*iO>_!B1rz}suKS5AJ3S~N9>b-s+beBsz(w?xQ zlHOQ0!m1=Iu`B(ymWG@w1v`kF=s+Z^SwbmlR_BmX-P+ z)W*Z~E44X49e9v^ASS~QM$IJqXv#rB*E&z=1<^ADP!1}1w>f3gLaUB|kC)_*fdiW^ zP~QLNop5(W0${fq@h`FSl0IA&sCvsSGq))u-%XBzL~7Xn_9silSFoH zX$+D8*ZL`W^=@ufmRNw}jJ==4u~?0EkAZ#8MM!T>J{XKO$Q<&0opQ zEovW?QP-S4lV-v%IGDEKCN`NJe2?Zti!-FTFK>6u4{an{5So zmO$t#&ibm|+A)m9lO|{8#yj)`w{#RNpC0W4+-1E1B@{GqPTSX>9R_QSqLDVZ+TbCr zLWE(A8g26iF!pVXvbSTW)*x{$pz$E@0`CSCcV;6Woqw0-dHCMXnA)q+w5NYBGJfg# zarKhT&qW@8V(`q~ib4qb?stBi-P3$-)HV?p`z__ozC7vALm6CNr0fK5--xohW(ip< zkZ|*T@tzI&G8TWSaakQ&J6{=mcL8#zw_*HY5~p(O?+YQAd>ytub&eKs*s|?f&{5R# zG}sgud@g+zC@n0D9&2;C)W)Z^Gf5uR!IHQ(`NvptiVa5_oqoZIpaGW%`u310#65(UNpX9%FWNnR~-o(@Lj8 z9R@;;4R)^g8cq9t>Sp|h=4s;+#tlsLRMARGKTh*i4O*)$c0+%iFVEPM4JyabcLP#r zD(OgVE&PXe{B}<QEKx_U+ryv$(f>|4^QD{RYMEEP`tUOp_nu?9}L1z z9pTZ;QSp*D!ln6fseFY|!Kd2jq(kp6fmMB1K^g#`8B#L;p%)~qFBiR5o^!aBtes{DZy8xyLiBEG-+ zKIP)yt{zS#Qqg#joKCBe)wR@njvsuhKT+v@Ov3bxBA>~A*UstK3V8azp6&{PM6%@b zq%%$C63K9MG;62mlO;qW{0g+mS7TL^ z7(74p=1Bi_D*Fcrw-SQ>E-?7FNbdGvqaqNy@bW!785i^OwIL}5S=DTAHuoORxaXcw z{luyLb7Nx~s(lp*wlQ@owNnylF;bv*J37}W>(P{bz`YlM zUX~(S)^o|9T8}MhO?=NY7zP!6#IGN$Oy{_IA|vrg4C6(bPRM8O1Xm@7;>tKe;USAOQ&K1XnHpE;Wb;G<-DuOjmvjyy<1Vv$fTj&SHfjzp30*?#|u zW@~$3It`NclH7-Z>O0D&n?n!!u^fgb@U~`@j~0a*{OrVAB^RGs4qJ=K%FCTdt~13mUz95QLek_=9giaZI25` z9v0N|ZdecYd`aa1rb!3GF8r;j@-77n;h~&c!5+Jx4hVOR1wmU3dqT~M8}8c*>(Pmy ztEkZ7uZ{`h*#+m&kAn);4(nlebcX%KJ2p{19bqBH^pl0(JuRD%=+VHtMz=w&+9b9_h&3iLf3cn)&^U9 z_Eo@b9OS@t^ah9D6K90

      !!@Zc90o1;}z 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%0Ar6L<7>3`tl+LDLb|#@kHT@RTG!k4?}e5}m&GR2 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

      8S!$^_}xwajB|@!J^9Lw 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

      QqXE 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 Eb_Be`@tyHbc^{XPJz&8OIn<-aRJB;izX6P0* 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%0DGg~Yzd%|ifaO(bl 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Ν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

      TtrI;ig6ox9X9 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ÐJcA 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�b^$-mN=hb2)k6A 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

      uM%PTGrga26XDC`l+!wdd6qc4(7xpcXzg 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 z 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%0Dx_ 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 Y`WoJFCNMjzj_CCkszj$vg54 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­5>Uw|+VzY5u?z&O@B?z$s2fTsQG= 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 diff --git a/build/old_releases/K902337.TIR b/build/old_releases/K902337.TIR deleted file mode 100644 index 94dd014..0000000 --- a/build/old_releases/K902337.TIR +++ /dev/null @@ -1,7 +0,0 @@ -FEMIA K WIR 1 191 312 0 0 2 0 0 0 330 731 . 0 0 0 0 0 800 -#A -#/1/ A G D - R C T - Z RELE EX. _ _ _ _ _ CLI -TIR f 0000 20170516214711 yukon tiradm -TIR e 0000 20170516214720 yukon tiradm -WIR < 0000 20170516214748 yukon tiradm -TIR E 0000 20170516214748 yukon tiradm diff --git a/build/old_releases/NUGG_ABAP2XLSX_V_1_0.nugg b/build/old_releases/NUGG_ABAP2XLSX_V_1_0.nugg deleted file mode 100644 index 6483950..0000000 --- a/build/old_releases/NUGG_ABAP2XLSX_V_1_0.nugg +++ /dev/null @@ -1,11526 +0,0 @@ - - - - class ZCL_EXCEL_STYLE_ALIGNMENT definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_ALIGNMENT -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data HORIZONTAL type ZEXCEL_ALIGNMENT . - data VERTICAL type ZEXCEL_ALIGNMENT . - data TEXTROTATION type ZEXCEL_TEXT_ROTATION value 0. "#EC NOTEXT . - data WRAPTEXT type FLAG . - data SHRINKTOFIT type FLAG . - data INDENT type ZEXCEL_INDENT value 0. "#EC NOTEXT . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_ALIGNMENT -*"* do not include other source files here!!! -private section. - - constants C_HORIZONTAL_GENERAL type ZEXCEL_ALIGNMENT value 'general'. "#EC NOTEXT - constants C_HORIZONTAL_LEFT type ZEXCEL_ALIGNMENT value 'left'. "#EC NOTEXT - constants C_HORIZONTAL_RIGHT type ZEXCEL_ALIGNMENT value 'right'. "#EC NOTEXT - constants C_HORIZONTAL_CENTER type ZEXCEL_ALIGNMENT value 'center'. "#EC NOTEXT - constants C_HORIZONTAL_CENTER_CONTINUOUS type ZEXCEL_ALIGNMENT value 'centerContinuous'. "#EC NOTEXT - constants C_HORIZONTAL_JUSTIFY type ZEXCEL_ALIGNMENT value 'justify'. "#EC NOTEXT - constants C_VERTICAL_BOTTOM type ZEXCEL_ALIGNMENT value 'bottom'. "#EC NOTEXT - constants C_VERTICAL_TOP type ZEXCEL_ALIGNMENT value 'top'. "#EC NOTEXT - constants C_VERTICAL_CENTER type ZEXCEL_ALIGNMENT value 'center'. "#EC NOTEXT - constants C_VERTICAL_JUSTIFY type ZEXCEL_ALIGNMENT value 'justify'. "#EC NOTEXT - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - METHOD constructor. - horizontal = me->c_horizontal_general. - vertical = me->c_vertical_bottom. - wrapText = abap_false. - shrinkToFit = abap_false. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_BORDER definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_BORDER -*"* do not include other source files here!!! -public section. - - data BORDER_STYLE type ZEXCEL_BORDER . - data BORDER_COLOR type ZEXCEL_STYLE_COLOR_ARGB . - class-data C_BORDER_NONE type ZEXCEL_BORDER value 'none'. "#EC NOTEXT . - class-data C_BORDER_DASHDOT type ZEXCEL_BORDER value 'dashDot'. "#EC NOTEXT . - class-data C_BORDER_DASHDOTDOT type ZEXCEL_BORDER value 'dashDotDot'. "#EC NOTEXT . - class-data C_BORDER_DASHED type ZEXCEL_BORDER value 'dashed'. "#EC NOTEXT . - class-data C_BORDER_DOTTED type ZEXCEL_BORDER value 'dotted'. "#EC NOTEXT . - class-data C_BORDER_DOUBLE type ZEXCEL_BORDER value 'double'. "#EC NOTEXT . - class-data C_BORDER_HAIR type ZEXCEL_BORDER value 'hair'. "#EC NOTEXT . - class-data C_BORDER_MEDIUM type ZEXCEL_BORDER value 'medium'. "#EC NOTEXT . - class-data C_BORDER_MEDIUMDASHDOT type ZEXCEL_BORDER value 'mediumDashDot'. "#EC NOTEXT . - class-data C_BORDER_MEDIUMDASHDOTDOT type ZEXCEL_BORDER value 'mediumDashDotDot'. "#EC NOTEXT . - class-data C_BORDER_MEDIUMDASHED type ZEXCEL_BORDER value 'mediumDashed'. "#EC NOTEXT . - class-data C_BORDER_SLANTDASHDOT type ZEXCEL_BORDER value 'slantDashDot'. "#EC NOTEXT . - class-data C_BORDER_THICK type ZEXCEL_BORDER value 'thick'. "#EC NOTEXT . - class-data C_BORDER_THIN type ZEXCEL_BORDER value 'thin'. "#EC NOTEXT . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_BORDER -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - METHOD constructor. - border_style = zcl_excel_style_border=>c_border_none. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_BORDERS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_BORDERS -*"* do not include other source files here!!! -public section. - - data LEFT type ref to ZCL_EXCEL_STYLE_BORDER . - data RIGHT type ref to ZCL_EXCEL_STYLE_BORDER . - data TOP type ref to ZCL_EXCEL_STYLE_BORDER . - data DOWN type ref to ZCL_EXCEL_STYLE_BORDER . - data DIAGONAL type ref to ZCL_EXCEL_STYLE_BORDER . - data ALLBORDERS type ref to ZCL_EXCEL_STYLE_BORDER . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FILL) type ZEXCEL_S_STYLE_BORDER . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_BORDERS -*"* do not include other source files here!!! -private section. - - constants C_DIAGONAL_NONE type ZEXCEL_DIAGONAL value 0. "#EC NOTEXT - constants C_DIAGONAL_UP type ZEXCEL_DIAGONAL value 1. "#EC NOTEXT - constants C_DIAGONAL_DOWN type ZEXCEL_DIAGONAL value 2. "#EC NOTEXT - constants C_DIAGONAL_BOTH type ZEXCEL_DIAGONAL value 3. "#EC NOTEXT - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - method CONSTRUCTOR. -endmethod. - - - - METHOD get_structure. - -* Check if all borders is set otherwise check single border - IF me->allborders IS BOUND. - es_fill-left_color = me->allborders->border_color. - es_fill-left_style = me->allborders->border_style. - es_fill-right_color = me->allborders->border_color. - es_fill-right_style = me->allborders->border_style. - es_fill-top_color = me->allborders->border_color. - es_fill-top_style = me->allborders->border_style. - es_fill-bottom_color = me->allborders->border_color. - es_fill-bottom_style = me->allborders->border_style. - ELSE. - IF me->left IS BOUND. - es_fill-left_color = me->left->border_color. - es_fill-left_style = me->left->border_style. - ENDIF. - IF me->right IS BOUND. - es_fill-right_color = me->right->border_color. - es_fill-right_style = me->right->border_style. - ENDIF. - IF me->top IS BOUND. - es_fill-top_color = me->top->border_color. - es_fill-top_style = me->top->border_style. - ENDIF. - IF me->down IS BOUND. - es_fill-bottom_color = me->down->border_color. - es_fill-bottom_style = me->down->border_style. - ENDIF. - ENDIF. - -* Check if diagonal is set - IF me->diagonal IS BOUND. - es_fill-diagonal_color = me->diagonal->border_color. - es_fill-diagonal_style = me->diagonal->border_style. - ENDIF. - -ENDMETHOD. "get_structure - - - - class ZCL_EXCEL_STYLE_COLOR definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_COLOR -*"* do not include other source files here!!! -public section. - - class-data C_BLACK type ZEXCEL_STYLE_COLOR_ARGB value 'FF000000'. "#EC NOTEXT . - class-data C_BLUE type ZEXCEL_STYLE_COLOR_ARGB value 'FF0000FF'. "#EC NOTEXT . - class-data C_DARKBLUE type ZEXCEL_STYLE_COLOR_ARGB value 'FF000080'. "#EC NOTEXT . - class-data C_DARKGREEN type ZEXCEL_STYLE_COLOR_ARGB value 'FF008000'. "#EC NOTEXT . - class-data C_DARKRED type ZEXCEL_STYLE_COLOR_ARGB value 'FF800000'. "#EC NOTEXT . - class-data C_DARKYELLOW type ZEXCEL_STYLE_COLOR_ARGB value 'FF808000'. "#EC NOTEXT . - class-data C_GRAY type ZEXCEL_STYLE_COLOR_ARGB value 'FFCCCCCC'. "#EC NOTEXT . - class-data C_GREEN type ZEXCEL_STYLE_COLOR_ARGB value 'FF00FF00'. "#EC NOTEXT . - class-data C_RED type ZEXCEL_STYLE_COLOR_ARGB value 'FFFF0000'. "#EC NOTEXT . - class-data C_WHITE type ZEXCEL_STYLE_COLOR_ARGB value 'FFFFFFFF'. "#EC NOTEXT . - class-data C_YELLOW type ZEXCEL_STYLE_COLOR_ARGB value 'FFFFFF00'. "#EC NOTEXT . - - methods CONSTRUCTOR . - class-methods CREATE_NEW_ARGB - importing - !IP_RED type ZEXCEL_STYLE_COLOR_COMPONENT - !IP_GREEN type ZEXCEL_STYLE_COLOR_COMPONENT - !IP_BLU type ZEXCEL_STYLE_COLOR_COMPONENT - returning - value(EP_COLOR_ARGB) type ZEXCEL_STYLE_COLOR_ARGB . - *"* protected components of class ZCL_EXCEL_STYLE_COLOR -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_COLOR -*"* do not include other source files here!!! -private section. - - class-data C_ALPHA type CHAR2 value 'FF'. "#EC NOTEXT . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - method CONSTRUCTOR. - - -endmethod. - - - - - - - METHOD create_new_argb. - - - CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_CONDITIONAL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_CONDITIONAL -*"* do not include other source files here!!! -public section. - - class-data C_ICONSET_3ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '3Arrows'. "#EC NOTEXT . - class-data C_ICONSET_3ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '3ArrowsGray'. "#EC NOTEXT . - class-data C_ICONSET_3FLAGS type ZEXCEL_CONDITION_RULE_ICONSET value '3Flags'. "#EC NOTEXT . - class-data C_ICONSET_3SIGNS type ZEXCEL_CONDITION_RULE_ICONSET value '3Signs'. "#EC NOTEXT . - class-data C_ICONSET_3SYMBOLS type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols'. "#EC NOTEXT . - class-data C_ICONSET_3SYMBOLS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols2'. "#EC NOTEXT . - class-data C_ICONSET_3TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value ''. "#EC NOTEXT . - class-data C_ICONSET_3TRAFFICLIGHTS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3TrafficLights2'. "#EC NOTEXT . - class-data C_ICONSET_4ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '4Arrows'. "#EC NOTEXT . - class-data C_ICONSET_4ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '4ArrowsGray'. "#EC NOTEXT . - class-data C_ICONSET_4RATING type ZEXCEL_CONDITION_RULE_ICONSET value '4Rating'. "#EC NOTEXT . - class-data C_ICONSET_4REDTOBLACK type ZEXCEL_CONDITION_RULE_ICONSET value '4RedToBlack'. "#EC NOTEXT . - class-data C_ICONSET_4TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value '4TrafficLights'. "#EC NOTEXT . - class-data C_ICONSET_5ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '5Arrows'. "#EC NOTEXT . - class-data C_ICONSET_5ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '5ArrowsGray'. "#EC NOTEXT . - class-data C_ICONSET_5QUARTERS type ZEXCEL_CONDITION_RULE_ICONSET value '5Quarters'. "#EC NOTEXT . - class-data C_ICONSET_5RATING type ZEXCEL_CONDITION_RULE_ICONSET value '5Rating'. "#EC NOTEXT . - class-data C_OPERATOR_BEGINSWITH type ZEXCEL_CONDITION_OPERATOR value 'beginsWith'. "#EC NOTEXT . - class-data C_OPERATOR_BETWEEN type ZEXCEL_CONDITION_OPERATOR value 'between'. "#EC NOTEXT . - class-data C_OPERATOR_CONTAINSTEXT type ZEXCEL_CONDITION_OPERATOR value 'containsText'. "#EC NOTEXT . - class-data C_OPERATOR_ENDSWITH type ZEXCEL_CONDITION_OPERATOR value 'endsWith'. "#EC NOTEXT . - class-data C_OPERATOR_EQUAL type ZEXCEL_CONDITION_OPERATOR value 'equal'. "#EC NOTEXT . - class-data C_OPERATOR_GREATERTHAN type ZEXCEL_CONDITION_OPERATOR value 'greaterThan'. "#EC NOTEXT . - class-data C_OPERATOR_GREATERTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'greaterThanOrEqual'. "#EC NOTEXT . - class-data C_OPERATOR_LESSTHAN type ZEXCEL_CONDITION_OPERATOR value 'lessThan'. "#EC NOTEXT . - class-data C_OPERATOR_LESSTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'lessThanOrEqual'. "#EC NOTEXT . - class-data C_OPERATOR_NONE type ZEXCEL_CONDITION_OPERATOR value ''. "#EC NOTEXT . - class-data C_OPERATOR_NOTCONTAINS type ZEXCEL_CONDITION_OPERATOR value 'notContains'. "#EC NOTEXT . - class-data C_OPERATOR_NOTEQUAL type ZEXCEL_CONDITION_OPERATOR value 'notEqual'. "#EC NOTEXT . - class-data C_RULE_CELLIS type ZEXCEL_CONDITION_RULE value 'cellIs'. "#EC NOTEXT . - class-data C_RULE_CONTAINSTEXT type ZEXCEL_CONDITION_RULE value 'containsText'. "#EC NOTEXT . - class-data C_RULE_EXPRESSION type ZEXCEL_CONDITION_RULE value 'expression'. "#EC NOTEXT . - class-data C_RULE_ICONSET type ZEXCEL_CONDITION_RULE value 'iconSet'. "#EC NOTEXT . - class-data C_RULE_NONE type ZEXCEL_CONDITION_RULE value 'none'. "#EC NOTEXT . - data FORMULA type ZEXCEL_STYLE_FORMULA . - data ICONSET type ZEXCEL_CONDITION_RULE_ICONSET . - data OPERATOR type ZEXCEL_CONDITION_OPERATOR . - data PRIORITY type ZEXCEL_STYLE_PRIORITY value 1. "#EC NOTEXT . - data RULE type ZEXCEL_CONDITION_RULE . - - methods CONSTRUCTOR . - methods GET_DIMENSION_RANGE - returning - value(EP_DIMENSION_RANGE) type STRING . - methods SET_RANGE - importing - !IP_START_ROW type ZEXCEL_CELL_ROW - !IP_START_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_STOP_ROW type ZEXCEL_CELL_ROW - !IP_STOP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_CONDITIONAL -*"* do not include other source files here!!! -private section. - - data START_CELL type ZEXCEL_S_CELL_DATA . - data STOP_CELL type ZEXCEL_S_CELL_DATA . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - rule = me->c_rule_none. - operator = me->c_operator_none. -* inizialize dimension range - stop_cell-cell_row = 1. - stop_cell-cell_column = 1. - start_cell-cell_row = 1. - start_cell-cell_column = 1. -ENDMETHOD. - - - - METHOD get_dimension_range. - IF stop_cell EQ start_cell. "only one cell - ep_dimension_range = start_cell-cell_coords. - ELSE. - CONCATENATE start_cell-cell_coords ':' stop_cell-cell_coords INTO ep_dimension_range. - ENDIF. -ENDMETHOD. - - - - - - - METHOD set_range. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string. - - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - stop_cell-cell_row = 1. - stop_cell-cell_column = lv_column. - lv_row_alpha = ip_stop_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_stop_column lv_row_alpha INTO stop_cell-cell_coords. - - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - start_cell-cell_row = 1. - start_cell-cell_column = lv_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_start_column lv_row_alpha INTO start_cell-cell_coords. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_FILL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_FILL -*"* do not include other source files here!!! -public section. - - class-data C_FILL_NONE type ZEXCEL_FILL_TYPE value 'none'. "#EC NOTEXT . - class-data C_FILL_SOLID type ZEXCEL_FILL_TYPE value 'solid'. "#EC NOTEXT . - class-data C_FILL_GRADIENT_LINEAR type ZEXCEL_FILL_TYPE value 'linear'. "#EC NOTEXT . - class-data C_FILL_GRADIENT_PATH type ZEXCEL_FILL_TYPE value 'path'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKDOWN type ZEXCEL_FILL_TYPE value 'darkDown'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKGRAY type ZEXCEL_FILL_TYPE value 'darkGray'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKGRID type ZEXCEL_FILL_TYPE value 'darkGrid'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKHORIZONTAL type ZEXCEL_FILL_TYPE value 'darkHorizontal'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKTRELLIS type ZEXCEL_FILL_TYPE value 'darkTrellis'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKUP type ZEXCEL_FILL_TYPE value 'darkUp'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKVERTICAL type ZEXCEL_FILL_TYPE value 'darkVertical'. "#EC NOTEXT . - class-data C_FILL_PATTERN_GRAY0625 type ZEXCEL_FILL_TYPE value 'gray0625'. "#EC NOTEXT . - class-data C_FILL_PATTERN_GRAY125 type ZEXCEL_FILL_TYPE value 'gray125'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTDOWN type ZEXCEL_FILL_TYPE value 'lightDown'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTGRAY type ZEXCEL_FILL_TYPE value 'lightGray'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTGRID type ZEXCEL_FILL_TYPE value 'lightGrid'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTHORIZONTAL type ZEXCEL_FILL_TYPE value 'lightHorizontal'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTTRELLIS type ZEXCEL_FILL_TYPE value 'lightTrellis'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTUP type ZEXCEL_FILL_TYPE value 'lightUp'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTVERTICAL type ZEXCEL_FILL_TYPE value 'lightVertical'. "#EC NOTEXT . - class-data C_FILL_PATTERN_MEDIUMGRAY type ZEXCEL_FILL_TYPE value 'mediumGray'. "#EC NOTEXT . - data FILLTYPE type ZEXCEL_FILL_TYPE . - data ROTATION type ZEXCEL_ROTATION . - data FGCOLOR type ZEXCEL_STYLE_COLOR_ARGB . - data BGCOLOR type ZEXCEL_STYLE_COLOR_ARGB value '64'. "#EC NOTEXT . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FILL) type ZEXCEL_S_STYLE_FILL . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_FILL -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - filltype = zcl_excel_style_fill=>c_fill_none. - rotation = 0. -ENDMETHOD. - - - - METHOD get_structure. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgColor = me->fgColor. - es_fill-bgColor = me->bgColor. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_FONT definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data BOLD type FLAG . - data COLOR type ZEXCEL_STYLE_COLOR_ARGB . - class-data C_SCHEME_MAJOR type ZEXCEL_STYLE_FONT_SCHEME value 'major'. "#EC NOTEXT . - class-data C_SCHEME_MINOR type ZEXCEL_STYLE_FONT_SCHEME value 'minor'. "#EC NOTEXT . - class-data C_UNDERLINE_DOUBLE type CHAR20 value 'double'. "#EC NOTEXT . - class-data C_UNDERLINE_DOUBLEACCOUNTING type CHAR20 value 'doubleAccounting'. "#EC NOTEXT . - class-data C_UNDERLINE_NONE type CHAR20 value 'none'. "#EC NOTEXT . - class-data C_UNDERLINE_SINGLE type CHAR20 value 'single'. "#EC NOTEXT . - class-data C_UNDERLINE_SINGLEACCOUNTING type CHAR20 value 'singleAccounting'. "#EC NOTEXT . - data FAMILY type INT1 value 2. "#EC NOTEXT . - data ITALIC type FLAG . - data NAME type CHAR255 value 'Calibri'. "#EC NOTEXT . - data SCHEME type ZEXCEL_STYLE_FONT_SCHEME . - data SIZE type INT1 value 11. "#EC NOTEXT . - data STRIKETHROUGH type FLAG . - data UNDERLINE type FLAG . - data UNDERLINE_MODE type CHAR20 . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FONT) type ZEXCEL_S_STYLE_FONT . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - METHOD constructor. - - - me->color = zcl_excel_style_color=>c_black. - me->scheme = zcl_excel_style_font=>c_scheme_minor. - me->underline_mode = zcl_excel_style_font=>c_underline_single. -ENDMETHOD. - - - - METHOD get_structure. - - - es_font-bold = me->bold. - es_font-italic = me->italic. - es_font-underline = me->underline. - es_font-underline_mode = me->underline_mode. - es_font-strikethrough = me->strikethrough. - es_font-size = me->size. - es_font-color = me->color. - es_font-name = me->name. - es_font-family = me->family. - es_font-scheme = me->scheme. - -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_NUMBER_FORMAT definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_NUMBER_FORMAT -*"* do not include other source files here!!! -public section. - - class-data C_FORMAT_NUMBER type ZEXCEL_NUMBER_FORMAT value '0'. "#EC NOTEXT . - class-data C_FORMAT_NUMBER_00 type ZEXCEL_NUMBER_FORMAT value '0.00'. "#EC NOTEXT . - class-data C_FORMAT_NUMBER_COMMA_SEP1 type ZEXCEL_NUMBER_FORMAT value '#,##0.00'. "#EC NOTEXT . - class-data C_FORMAT_NUMBER_COMMA_SEP2 type ZEXCEL_NUMBER_FORMAT value '#,##0.00_-'. "#EC NOTEXT . - class-data C_FORMAT_PERCENTAGE type ZEXCEL_NUMBER_FORMAT value '0%'. "#EC NOTEXT . - class-data C_FORMAT_PERCENTAGE_00 type ZEXCEL_NUMBER_FORMAT value '0.00%'. "#EC NOTEXT . - class-data C_FORMAT_DATE_YYYYMMDD2 type ZEXCEL_NUMBER_FORMAT value 'yyyy-mm-dd'. "#EC NOTEXT . - class-data C_FORMAT_DATE_YYYYMMDD type ZEXCEL_NUMBER_FORMAT value 'yy-mm-dd'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DDMMYYYY type ZEXCEL_NUMBER_FORMAT value 'dd/mm/yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DMYSLASH type ZEXCEL_NUMBER_FORMAT value 'd/m/y'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DMYMINUS type ZEXCEL_NUMBER_FORMAT value 'd-m-y'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DMMINUS type ZEXCEL_NUMBER_FORMAT value 'd-m'. "#EC NOTEXT . - class-data C_FORMAT_DATE_MYMINUS type ZEXCEL_NUMBER_FORMAT value 'm-y'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX14 type ZEXCEL_NUMBER_FORMAT value 'mm-dd-yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX15 type ZEXCEL_NUMBER_FORMAT value 'd-mmm-yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX16 type ZEXCEL_NUMBER_FORMAT value 'd-mmm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX17 type ZEXCEL_NUMBER_FORMAT value 'mmm-yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX22 type ZEXCEL_NUMBER_FORMAT value 'm/d/yy h:mm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DATETIME type ZEXCEL_NUMBER_FORMAT value 'd/m/y h:mm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME1 type ZEXCEL_NUMBER_FORMAT value 'h:mm AM/PM'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME2 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss AM/PM'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME3 type ZEXCEL_NUMBER_FORMAT value 'h:mm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME4 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME5 type ZEXCEL_NUMBER_FORMAT value 'mm:ss'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME6 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME7 type ZEXCEL_NUMBER_FORMAT value 'i:s.S'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME8 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss@'. "#EC NOTEXT . - class-data C_FORMAT_DATE_YYYYMMDDSLASH type ZEXCEL_NUMBER_FORMAT value 'yy/mm/dd@'. "#EC NOTEXT . - class-data C_FORMAT_CURRENCY_USD_SIMPLE type ZEXCEL_NUMBER_FORMAT value '"$"#,##0.00_-'. "#EC NOTEXT . - class-data C_FORMAT_CURRENCY_USD type ZEXCEL_NUMBER_FORMAT value '$#,##0_-'. "#EC NOTEXT . - class-data C_FORMAT_CURRENCY_EUR_SIMPLE type ZEXCEL_NUMBER_FORMAT value '[$EUR ]#,##0.00_-'. "#EC NOTEXT . - data FORMAT_CODE type ZEXCEL_NUMBER_FORMAT . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(EP_NUMBER_FORMAT) type ZEXCEL_NUMBER_FORMAT . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_NUMBER_FORMAT -*"* do not include other source files here!!! -private section. - - class-data C_FORMAT_GENERAL type ZEXCEL_NUMBER_FORMAT value ''. "#EC NOTEXT . - class-data C_FORMAT_TEXT type ZEXCEL_NUMBER_FORMAT value '@'. "#EC NOTEXT . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - format_code = me->c_format_general. -ENDMETHOD. - - - - METHOD get_structure. - ep_number_format = me->format_code. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_PROTECTION definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_PROTECTION -*"* do not include other source files here!!! -public section. - - constants C_PROTECTION_INHERIT type ZEXCEL_PROTECTION value 'inherit'. "#EC NOTEXT - constants C_PROTECTION_PROTECTED type ZEXCEL_PROTECTION value 'protected'. "#EC NOTEXT - constants C_PROTECTION_UNPROTECTED type ZEXCEL_PROTECTION value 'unprotected'. "#EC NOTEXT - data LOCKED type ZEXCEL_PROTECTION . - data HIDDEN type ZEXCEL_PROTECTION . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_PROTECTION -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - METHOD constructor. - locked = me->c_protection_inherit. - hidden = me->c_protection_inherit. -ENDMETHOD. - - - - class ZCL_EXCEL_WORKSHEET definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_WORKSHEET -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - class-data C_BREAK_COLUMN type ZEXCEL_BREAK value 2. "#EC NOTEXT . - class-data C_BREAK_NONE type ZEXCEL_BREAK value 0. "#EC NOTEXT . - class-data C_BREAK_ROW type ZEXCEL_BREAK value 1. "#EC NOTEXT . - class-data C_SHEET_STATE_HIDDEN type ZEXCEL_SHEET_STATE value 'hidden'. "#EC NOTEXT . - class-data C_SHEET_STATE_VERYHIDDEN type ZEXCEL_SHEET_STATE value 'veryHidden'. "#EC NOTEXT . - class-data C_SHEET_STATE_VISIBLE type ZEXCEL_SHEET_STATE value 'visible'. "#EC NOTEXT . - data DEFAULTROWHEIGHT type INT1 value 15. "#EC NOTEXT . - data SHEET_CONTENT type ZEXCEL_T_CELL_DATA . - data SHEET_SETUP type ref to ZCL_EXCEL_SHEET_SETUP . - data SHEET_STATE type ZEXCEL_SHEET_STATE . - data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . - - methods CONSTRUCTOR - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional . - methods GET_ACTIVE_CELL - returning - value(EP_ACTIVE_CELL) type STRING . - methods GET_CELL - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_ROW type ZEXCEL_CELL_ROW - exporting - !EP_VALUE type ZEXCEL_CELL_VALUE - !EP_RC type SYSUBRC . - methods GET_DIMENSION_RANGE - returning - value(EP_DIMENSION_RANGE) type STRING . - methods GET_GUID - returning - value(EP_GUID) type GUID_16 . - methods SET_CELL - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_ROW type ZEXCEL_CELL_ROW - !IP_VALUE type ZEXCEL_CELL_VALUE - !IP_FORMULA type ZEXCEL_CELL_FORMULA optional - !IP_STYLE type ZEXCEL_CELL_STYLE optional . - 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 optional - !IP_TOP_LEFT_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA default 'B' - !IP_TOP_LEFT_ROW type ZEXCEL_CELL_ROW default 3 . - methods ADD_NEW_CONDITIONAL_STYLE - returning - value(EO_CONDITIONAL_STYLE) type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods GET_COND_STYLES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - *"* protected components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_WORKSHEET -*"* do not include other source files here!!! -private section. - - data ACTIVE_CELL type ZEXCEL_S_CELL_DATA . - data CONDITIONAL_STYLES type ref to ZCL_EXCEL_STYLES_CONDITIONAL . - data GUID type GUID_16 . - data LOWER_CELL type ZEXCEL_S_CELL_DATA . - data UPPER_CELL type ZEXCEL_S_CELL_DATA . - - methods UPDATE_DIMENSION_RANGE . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - METHOD add_new_conditional_style. - - - CREATE OBJECT eo_conditional_style. - conditional_styles->add( eo_conditional_style ). -ENDMETHOD. - - - - METHOD constructor. - - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - - sheet_state = me->c_sheet_state_visible. - - CREATE OBJECT sheet_setup. - CREATE OBJECT conditional_styles. - -* 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. - - - - METHOD get_active_cell. - - - DATA: lv_active_column TYPE zexcel_cell_column_alpha, - lv_active_row TYPE string. - - lv_active_column = zcl_excel_common=>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. - - - - - - - METHOD get_cell. - - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = zcl_excel_common=>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. -ENDMETHOD. - - - - method GET_COND_STYLES_ITERATOR. - - - eo_iterator = me->conditional_styles->get_iterator( ). -endmethod. - - - - METHOD get_dimension_range. - - - me->update_dimension_range( ). - IF upper_cell EQ lower_cell. "only one cell - ep_dimension_range = upper_cell-cell_coords. - ELSE. - CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. - ENDIF. - -ENDMETHOD. - - - - method GET_GUID. - - - ep_guid = me->guid. - -endmethod. - - - - - - - - METHOD set_cell. - - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data, - lv_row_alpha TYPE string. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = ZCL_EXCEL_COMMON=>convert_column2int( ip_column ). - - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row - cell_column = lv_column. - - IF sy-subrc EQ 0. - <fs_sheet_content>-cell_value = ip_value. - <fs_sheet_content>-cell_formula = ip_formula. - <fs_sheet_content>-cell_style = ip_style. - ELSE. - ls_sheet_content-cell_row = ip_row. - ls_sheet_content-cell_column = lv_column. - ls_sheet_content-cell_value = ip_value. - ls_sheet_content-cell_formula = ip_formula. - ls_sheet_content-cell_style = ip_style. - lv_row_alpha = ip_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_column lv_row_alpha INTO ls_sheet_content-cell_coords. - APPEND ls_sheet_content TO sheet_content. - SORT sheet_content BY cell_row cell_column. -* me->update_dimension_range( ). - - ENDIF. - -ENDMETHOD. - - - - - - - - - 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 '2', - lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - 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: <fs_table_line> TYPE ANY, - <fs_fldval> TYPE ANY, - <fs_dfies> TYPE dfies, - <fs_cell_value> TYPE zexcel_cell_value. - - lv_column_int = zcl_excel_common=>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=>describe_by_data_ref( lr_data ). - - ls_header = lo_tabdescr->get_ddic_header( ). - - lt_dfies = lo_tabdescr->get_ddic_field_list( ). - -* It is better to loop column by column - LOOP AT lt_dfies ASSIGNING <fs_dfies>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - " First of all write column header - lv_cell_value = <fs_dfies>-scrtext_m. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_cell_value - ip_style = ip_hdr_style ). - ADD 1 TO lv_row_int. - LOOP AT ip_table ASSIGNING <fs_table_line>. - ASSIGN COMPONENT <fs_dfies>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - MOVE <fs_fldval> TO lv_cell_value. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_cell_value - ip_style = ip_body_style ). - ADD 1 TO lv_row_int. - ENDLOOP. - lv_row_int = ip_top_left_row. - ADD 1 TO lv_column_int. - ENDLOOP. - -ENDMETHOD. - - - 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. - -* update dimension range - lt_sheet_content = sheet_content. - "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=>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. - - "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=>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. - - - - class ZCL_EXCEL_WORKSHEETS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -public section. - - data ACTIVE_WORKSHEET type ZEXCEL_ACTIVE_WORKSHEET value 1. "#EC NOTEXT . - data NAME type ZEXCEL_WORKSHEETS_NAME value 'Worksheets'. "#EC NOTEXT . - - methods ADD - importing - !IP_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type ZEXCEL_ACTIVE_WORKSHEET - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -private section. - - data WORKSHEETS type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD ADD. - - - worksheets->add( ip_worksheet ). -ENDMETHOD. - - - METHOD clear. - - - worksheets->clear( ). -ENDMETHOD. - - - METHOD constructor. - - - CREATE OBJECT worksheets. - -ENDMETHOD. - - - - - METHOD get. - - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_worksheet ?= worksheets->if_object_collection~get( lv_index ). -ENDMETHOD. - - - - METHOD get_iterator. - - - eo_iterator ?= worksheets->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD is_empty. - - - is_empty = worksheets->if_object_collection~is_empty( ). -ENDMETHOD. - - - - METHOD remove. - - - worksheets->remove( ip_worksheet ). -ENDMETHOD. - - - - METHOD size. - - - ep_size = worksheets->if_object_collection~size( ). -ENDMETHOD. - - - - class ZCL_EXCEL_WRITER_2007 definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_WRITER_2007 -*"* do not include other source files here!!! -public section. - - methods CONSTRUCTOR - importing - !IO_EXCEL type ref to ZCL_EXCEL . - methods CREATE - returning - value(EP_EXCEL) type XSTRING . - *"* protected components of class ZCL_EXCEL_WRITER_2007 -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_WRITER_2007 -*"* do not include other source files here!!! -private section. - - constants C_CONTENT_TYPES type STRING value '[Content_Types].xml'. "#EC NOTEXT - constants C_DOCPROPS_APP type STRING value 'docProps/app.xml'. "#EC NOTEXT - constants C_DOCPROPS_CORE type STRING value 'docProps/core.xml'. "#EC NOTEXT - constants C_RELATIONSHIPS type STRING value '_rels/.rels'. "#EC NOTEXT - constants C_XL_CALCCHAIN type STRING value 'xl/calcChain.xml'. "#EC NOTEXT - constants C_XL_RELATIONSHIPS type STRING value 'xl/_rels/workbook.xml.rels'. "#EC NOTEXT - constants C_XL_SHAREDSTRINGS type STRING value 'xl/sharedStrings.xml'. "#EC NOTEXT - constants C_XL_SHEET type STRING value 'xl/worksheets/sheet#.xml'. "#EC NOTEXT - constants C_XL_SHEET_RELS type STRING value 'xl/worksheets/_rels/sheet#.xml.rels'. "#EC NOTEXT - constants C_XL_STYLES type STRING value 'xl/styles.xml'. "#EC NOTEXT - constants C_XL_THEME type STRING value 'xl/theme/theme1.xml'. "#EC NOTEXT - constants C_XL_WORKBOOK type STRING value 'xl/workbook.xml'. "#EC NOTEXT - data EXCEL type ref to ZCL_EXCEL . - data SHARED_STRINGS type ZEXCEL_T_SHARED_STRING . - data STYLES_MAPPING type ZEXCEL_T_STYLES_MAPPING . - - methods CREATE_CONTENT_TYPES - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_DOCPROPS_APP - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_DOCPROPS_CORE - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_RELATIONSHIPS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_CALCCHAIN - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_RELATIONSHIPS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHAREDSTRINGS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHEET - importing - !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET - !IV_ACTIVE type FLAG default '' - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHEET_RELS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_STYLES - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_THEME - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_WORKBOOK - returning - value(EP_CONTENT) type XSTRING . - methods FLAG2BOOL - importing - !IP_FLAG type FLAG - returning - value(EP_BOOLEAN) type CHAR5 . - methods GET_SHARED_STRING_INDEX - importing - !IP_CELL_VALUE type ZEXCEL_CELL_VALUE - returning - value(EP_INDEX) type INT4 . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - METHOD constructor. - - - me->excel = io_excel. -ENDMETHOD. - - - - METHOD create. - - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_syindex TYPE string. - - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sharedStrings.xml to zip - lv_content = me->create_xl_calcchain( ). - lo_zip->add( name = me->c_xl_calcchain - content = lv_content ). - -********************************************************************** -* STEP 11: Add sheet#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_true. - ENDIF. - - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 11: Create the final zip - ep_excel = lo_zip->save( ). - -ENDMETHOD. - - - - METHOD create_content_types. - - -** Constant node name - DATA: lc_xml_node_types TYPE string VALUE 'Types', - lc_xml_node_override TYPE string VALUE 'Override', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - " Node namespace - lc_xml_node_types_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/content-types', - " Node extension - lc_xml_node_rels_ext TYPE string VALUE 'rels', - lc_xml_node_xml_ext TYPE string VALUE 'xml', - " Node partnumber - lc_xml_node_theme_pn TYPE string VALUE '/xl/theme/theme1.xml', - lc_xml_node_styles_pn TYPE string VALUE '/xl/styles.xml', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_props_pn TYPE string VALUE '/docProps/app.xml', - lc_xml_node_worksheet_pn TYPE string VALUE '/xl/worksheets/sheet#.xml', - lc_xml_node_strings_pn TYPE string VALUE '/xl/sharedStrings.xml', - lc_xml_node_core_pn TYPE string VALUE '/docProps/core.xml', - " Node contentType - lc_xml_node_theme_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.theme+xml', - lc_xml_node_styles_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', - lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', - lc_xml_node_rels_ct TYPE string VALUE 'application/vnd.openxmlformats-package.relationships+xml', - lc_xml_node_xml_ct TYPE string VALUE 'application/xml', - lc_xml_node_props_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.extended-properties+xml', - lc_xml_node_worksheet_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', - lc_xml_node_strings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', - lc_xml_node_core_ct TYPE string VALUE 'application/vnd.openxmlformats-package.core-properties+xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_worksheets_num TYPE i, - lv_worksheets_numc TYPE numc3, - lv_xml_node_worksheet_pn TYPE string, - lv_xml_size TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node types - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_types - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_types_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_theme_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_theme_ct ). - lo_element_root->append_child( lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_styles_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_styles_ct ). - lo_element_root->append_child( lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_rels_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_rels_ct ). - lo_element_root->append_child( lo_element ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_xml_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_xml_ct ). - lo_element_root->append_child( lo_element ). - - " Workbook node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_workb_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - lo_element_root->append_child( lo_element ). - - " Properties node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_props_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_props_ct ). - lo_element_root->append_child( lo_element ). - - " Worksheet node - lv_worksheets_num = excel->get_worksheets_size( ). - DO lv_worksheets_num TIMES. - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - - MOVE sy-index TO lv_worksheets_numc. - SHIFT lv_worksheets_numc LEFT DELETING LEADING '0'. - lv_xml_node_worksheet_pn = lc_xml_node_worksheet_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_worksheet_pn WITH lv_worksheets_numc. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_xml_node_worksheet_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lv_xml_node_worksheet_pn ). - lo_element_root->append_child( lo_element ). - ENDDO. - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_strings_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_strings_ct ). - lo_element_root->append_child( lo_element ). - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_core_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_core_ct ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_docprops_app. - - -** Constant node name - DATA: lc_xml_node_properties TYPE string VALUE 'Properties', - lc_xml_node_application TYPE string VALUE 'Application', - lc_xml_node_docsecurity TYPE string VALUE 'DocSecurity', - lc_xml_node_scalecrop TYPE string VALUE 'ScaleCrop', - lc_xml_node_headingpairs TYPE string VALUE 'HeadingPairs', - lc_xml_node_vector TYPE string VALUE 'vector', - lc_xml_node_variant TYPE string VALUE 'variant', - lc_xml_node_lpstr TYPE string VALUE 'lpstr', - lc_xml_node_i4 TYPE string VALUE 'i4', - lc_xml_node_titlesofparts TYPE string VALUE 'TitlesOfParts', - lc_xml_node_company TYPE string VALUE 'Company', - lc_xml_node_linksuptodate TYPE string VALUE 'LinksUpToDate', - lc_xml_node_shareddoc TYPE string VALUE 'SharedDoc', - lc_xml_node_hyperlinkschanged TYPE string VALUE 'HyperlinksChanged', - lc_xml_node_appversion TYPE string VALUE 'AppVersion', - " Namespace prefix - lc_vt_ns TYPE string VALUE 'vt', - lc_xml_node_props_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', - lc_xml_node_props_vt_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - " Node attributes - lc_xml_attr_size TYPE string VALUE 'size', - lc_xml_attr_basetype TYPE string VALUE 'baseType'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element_vector TYPE REF TO if_ixml_element, - lo_sub_element_variant TYPE REF TO if_ixml_element, - lo_sub_element_lpstr TYPE REF TO if_ixml_element, - lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node properties - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_properties - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_props_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:vt' - value = lc_xml_node_props_vt_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Application - lo_element = lo_document->create_simple_element( name = lc_xml_node_application - parent = lo_document ). - lv_value = excel->properties->application. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " DocSecurity - lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity - parent = lo_document ). - lv_value = excel->properties->docsecurity. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " ScaleCrop - lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->scalecrop ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " HeadingPairs - lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = '2' ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_variant ). - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( lv_value ). - lo_sub_element_variant->append_child( lo_sub_element_lpstr ). " lpstr node - - lo_sub_element_vector->append_child( lo_sub_element_variant ). " variant node - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** i4 node - lo_sub_element_i4 = lo_document->create_simple_element_ns( name = lc_xml_node_i4 - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( lv_value ). - lo_sub_element_variant->append_child( lo_sub_element_i4 ). " lpstr node - - lo_sub_element_vector->append_child( lo_sub_element_variant ). " variant node - - lo_element->append_child( lo_sub_element_vector ). " vector node - - lo_element_root->append_child( lo_element ). " HeadingPairs - - - " TitlesOfParts - lo_element = lo_document->create_simple_element( name = lc_xml_node_titlesofparts - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = lv_value ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_lpstr ). - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " ** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->title. - lo_sub_element_lpstr->set_value( lv_value ). - lo_sub_element_vector->append_child( lo_sub_element_lpstr ). " lpstr node - ENDWHILE. - - lo_element->append_child( lo_sub_element_vector ). " vector node - - lo_element_root->append_child( lo_element ). " TitlesOfParts - - - - " Company - lo_element = lo_document->create_simple_element( name = lc_xml_node_company - parent = lo_document ). - lv_value = excel->properties->company. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " LinksUpToDate - lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->linksuptodate ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " SharedDoc - lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->shareddoc ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " HyperlinksChanged - lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->hyperlinkschanged ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " AppVersion - lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion - parent = lo_document ). - lv_value = excel->properties->appversion. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_docprops_core. - - -** Constant node name - DATA: lc_xml_node_coreproperties TYPE string VALUE 'coreProperties', - lc_xml_node_creator TYPE string VALUE 'creator', - lc_xml_node_lastmodifiedby TYPE string VALUE 'lastModifiedBy', - lc_xml_node_created TYPE string VALUE 'created', - lc_xml_node_modified TYPE string VALUE 'modified', - " Node attributes - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_target TYPE string VALUE 'dcterms:W3CDTF', - " Node namespace - lc_cp_ns TYPE string VALUE 'cp', - lc_dc_ns TYPE string VALUE 'dc', - lc_dcterms_ns TYPE string VALUE 'dcterms', - lc_dcmitype_ns TYPE string VALUE 'dcmitype', - lc_xsi_ns TYPE string VALUE 'xsi', - lc_xml_node_cp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', - lc_xml_node_dc_ns TYPE string VALUE 'http://purl.org/dc/elements/1.1/', - lc_xml_node_dcterms_ns TYPE string VALUE 'http://purl.org/dc/terms/', - lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', - lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node coreProperties - lo_element_root = lo_document->create_simple_element_ns( name = lc_xml_node_coreproperties - prefix = lc_cp_ns - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:cp' - value = lc_xml_node_cp_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dc' - value = lc_xml_node_dc_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcterms' - value = lc_xml_node_dcterms_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcmitype' - value = lc_xml_node_dcmitype_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:xsi' - value = lc_xml_node_xsi_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Creator node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_creator - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->properties->creator. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " lastModifiedBy node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby - prefix = lc_cp_ns - parent = lo_document ). - lv_value = excel->properties->lastmodifiedby. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " Created node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - lv_value = excel->properties->created. - lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " Modified node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - lv_value = excel->properties->modified. - lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD CREATE_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_rId1_id TYPE string VALUE 'rId1', - lc_xml_node_rId2_id TYPE string VALUE 'rId2', - lc_xml_node_rId3_id TYPE string VALUE 'rId3', - " Node type - lc_xml_node_rId1_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - lc_xml_node_rId2_tp TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lc_xml_node_rId3_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - " Node target - lc_xml_node_rId1_tg TYPE string VALUE 'xl/workbook.xml', - lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', - lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId3_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId3_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId2_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId2_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId1_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId1_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_calcchain. - - -** Constant node name - DATA: lc_xml_node_calcchain TYPE string VALUE 'calcChain', - lc_xml_node_c TYPE string VALUE 'c', - " Node attributes - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_i TYPE string VALUE 'i', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string, - lv_value_i TYPE string, - lv_sheets_count TYPE i. - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data. - -********************************************************************** -* STEP 1: Create xl/calcChain.xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node calcChain - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_calcchain - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_sheets_count. - MOVE lv_sheets_count TO lv_value_i. - SHIFT lv_value_i RIGHT DELETING TRAILING space. - SHIFT lv_value_i LEFT DELETING LEADING space. - LOOP AT lo_worksheet->sheet_content ASSIGNING <ls_sheet_content> WHERE cell_formula IS NOT INITIAL. - " formula chain node - lo_element = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_i - value = lv_value_i ). - lo_element_root->append_child( lo_element ). - ENDLOOP. - ENDWHILE. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_relationships. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_sheet_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lc_xml_node_rid_theme_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - lc_xml_node_rid_styles_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lc_xml_node_rid_shared_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - lc_xml_node_rid_calcchain_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain', - " Node target - lc_xml_node_ridx_tg TYPE string VALUE 'worksheets/sheet#.xml', - lc_xml_node_rid_shared_tg TYPE string VALUE 'sharedStrings.xml', - lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', - lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml', - lc_xml_node_rid_calcchain_tg TYPE string VALUE 'calcChain.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 2. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_styles_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( lo_element ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size - 1. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_theme_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( lo_element ). - - lv_size = excel->get_worksheets_size( ). - - DO lv_size TIMES. - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - lv_xml_node_ridx_tg = lc_xml_node_ridx_tg. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_tg WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_sheet_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( lo_element ). - ENDDO. - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 3 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_shared_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( lo_element ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 1 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_calcchain_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_calcchain_tg ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_sharedstrings. - - -** Constant node name - DATA: lc_xml_node_sst TYPE string VALUE 'sst', - lc_xml_node_si TYPE string VALUE 'si', - lc_xml_node_t TYPE string VALUE 't', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_value TYPE string, - lv_count_str TYPE string, - lv_uniquecount_str TYPE string, - lv_sytabix TYPE sytabix, - lv_count TYPE i, - lv_uniquecount TYPE i. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_sheet_string> TYPE zexcel_s_shared_string. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - DESCRIBE TABLE lt_cell_data LINES lv_count. - MOVE lv_count TO lv_count_str. - - SHIFT lv_count_str RIGHT DELETING TRAILING space. - SHIFT lv_count_str LEFT DELETING LEADING space. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - DESCRIBE TABLE lt_cell_data LINES lv_uniquecount. - MOVE lv_uniquecount TO lv_uniquecount_str. - - SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. - SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - lv_sytabix = sy-tabix - 1. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. - APPEND ls_shared_string TO shared_strings. - ENDLOOP. - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_sst - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_count - value = lv_count_str ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_uniquecount - value = lv_uniquecount_str ). - -********************************************************************** -* STEP 4: Create subnode - LOOP AT shared_strings ASSIGNING <fs_sheet_string>. - lo_element = lo_document->create_simple_element( name = lc_xml_node_si - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). - lo_sub_element->set_value( <fs_sheet_string>-string_value ). - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). - ENDLOOP. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - METHOD create_xl_sheet. - - -** Constant node name - DATA: lc_xml_node_worksheet TYPE string VALUE 'worksheet', - lc_xml_node_dimension TYPE string VALUE 'dimension', - lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', - lc_xml_node_sheetview TYPE string VALUE 'sheetView', - lc_xml_node_selection TYPE string VALUE 'selection', - lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', - lc_xml_node_sheetdata TYPE string VALUE 'sheetData', - lc_xml_node_row TYPE string VALUE 'row', - lc_xml_node_c TYPE string VALUE 'c', - lc_xml_node_v TYPE string VALUE 'v', - lc_xml_node_f TYPE string VALUE 'f', - lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', - lc_xml_node_condformatting TYPE string VALUE 'conditionalFormatting', - lc_xml_node_cfrule TYPE string VALUE 'cfRule', - lc_xml_node_iconset TYPE string VALUE 'iconSet', - lc_xml_node_cfvo TYPE string VALUE 'cfvo', - lc_xml_node_formula TYPE string VALUE 'formula', - " Node attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_tabselected TYPE string VALUE 'tabSelected', - lc_xml_attr_workbookviewid TYPE string VALUE 'workbookViewId', - lc_xml_attr_activecell TYPE string VALUE 'activeCell', - lc_xml_attr_sqref TYPE string VALUE 'sqref', - lc_xml_attr_defaultrowheight TYPE string VALUE 'defaultRowHeight', - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_s TYPE string VALUE 's', - lc_xml_attr_spans TYPE string VALUE 'spans', - lc_xml_attr_t TYPE string VALUE 't', - lc_xml_attr_left TYPE string VALUE 'left', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_header TYPE string VALUE 'header', - lc_xml_attr_footer TYPE string VALUE 'footer', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_iconset TYPE string VALUE 'iconSet', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_dxfid TYPE string VALUE 'dxfId', - lc_xml_attr_priority TYPE string VALUE 'priority', - lc_xml_attr_operator TYPE string VALUE 'operator', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - - DATA: lv_value TYPE string, - lt_percent_val TYPE TABLE OF string, - ls_percent_val TYPE string, - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping. - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_worksheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " dimension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension - parent = lo_document ). - lv_value = io_worksheet->get_dimension_range( ). - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_value ). - lo_element_root->append_child( lo_element ). - - " sheetViews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews - parent = lo_document ). - " sheetView node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_sheetview - parent = lo_document ). - IF iv_active EQ abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '1' ). - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid - value = '0' ). - - " selection node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection - parent = lo_document ). - lv_value = io_worksheet->get_active_cell( ). - lo_element_3->set_attribute_ns( name = lc_xml_attr_activecell - value = lv_value ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - lo_element_2->append_child( lo_element_3 ). " sheetView node - - lo_element->append_child( lo_element_2 ). " sheetView node - - lo_element_root->append_child( lo_element ). " sheetViews node - - - " sheetFormatPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetformatpr - parent = lo_document ). - lv_value = io_worksheet->defaultrowheight. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight - value = lv_value ). - lo_element_root->append_child( lo_element ). " sheetFormatPr node - - " sheetData node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata - parent = lo_document ). - LOOP AT io_worksheet->sheet_content ASSIGNING <ls_sheet_content>. - CLEAR ls_style_mapping. - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = '1:1' ). " <******************************* - ENDIF. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_r - value = <ls_sheet_content>-cell_coords ). - - IF <ls_sheet_content>-cell_style IS NOT INITIAL. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. - lv_value = ls_style_mapping-style. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_3->set_attribute_ns( name = lc_xml_attr_s - value = lv_value ). - ENDIF. - IF ls_style_mapping-cell_format IS INITIAL. " to avoid errors if no style has been created - IF <ls_sheet_content>-cell_formula IS INITIAL. - ls_style_mapping-cell_format = 'S'. - ELSE. - ls_style_mapping-cell_format = 'F'. - ENDIF. - ENDIF. - " is a shared string and is not a formula - IF ls_style_mapping-cell_format EQ 'S'. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = 's' ). - ENDIF. - IF <ls_sheet_content>-cell_formula IS NOT INITIAL. - " fomula node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_formula. - lo_element_4->set_value( lv_value ). - lo_element_3->append_child( lo_element_4 ). " fomula node - ENDIF. - " value node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_document ). - - IF ls_style_mapping-cell_format EQ 'S'. - lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_4->set_value( lv_value ). - ELSE. - lv_value = <ls_sheet_content>-cell_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_4->set_value( lv_value ). - ENDIF. - - lo_element_3->append_child( lo_element_4 ). " value node - - lo_element_2->append_child( lo_element_3 ). " column node - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - lo_element->append_child( lo_element_2 ). " row node - ls_last_row = <ls_sheet_content>. - ENDIF. - - ENDLOOP. - lo_element_root->append_child( lo_element ). " sheetData node - - " Conditional formatting node - lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->get_next( ). - IF lo_style_conditional->rule IS INITIAL. - CONTINUE. - ENDIF. - lo_element = lo_document->create_simple_element( name = lc_xml_node_condformatting - parent = lo_document ). - lv_value = lo_style_conditional->get_dimension_range( ) . - lo_element->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - " cfRule node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_cfrule - parent = lo_document ). - lv_value = lo_style_conditional->rule. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = lo_style_conditional->priority. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_priority - value = lv_value ). - - CASE lo_style_conditional->rule. - WHEN zcl_excel_style_conditional=>c_rule_iconset. - CLEAR lt_percent_val. - " iconset node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_iconset - parent = lo_document ). - IF lo_style_conditional->iconset NE zcl_excel_style_conditional=>c_iconset_3trafficlights. - lv_value = lo_style_conditional->iconset. - lo_element_3->set_attribute_ns( name = lc_xml_attr_iconset - value = lv_value ). - ENDIF. - - CASE lo_style_conditional->iconset. - WHEN zcl_excel_style_conditional=>c_iconset_3trafficlights2 OR - zcl_excel_style_conditional=>c_iconset_3arrows OR - zcl_excel_style_conditional=>c_iconset_3arrowsgray OR - zcl_excel_style_conditional=>c_iconset_3flags OR - zcl_excel_style_conditional=>c_iconset_3signs OR - zcl_excel_style_conditional=>c_iconset_3symbols OR - zcl_excel_style_conditional=>c_iconset_3symbols2 OR - zcl_excel_style_conditional=>c_iconset_3trafficlights OR - zcl_excel_style_conditional=>c_iconset_3trafficlights2. - APPEND '0' TO lt_percent_val. - APPEND '33' TO lt_percent_val. - APPEND '67' TO lt_percent_val. - WHEN zcl_excel_style_conditional=>c_iconset_4arrows OR - zcl_excel_style_conditional=>c_iconset_4arrowsgray OR - zcl_excel_style_conditional=>c_iconset_4rating OR - zcl_excel_style_conditional=>c_iconset_4redtoblack OR - zcl_excel_style_conditional=>c_iconset_4trafficlights. - APPEND '0' TO lt_percent_val. - APPEND '25' TO lt_percent_val. - APPEND '50' TO lt_percent_val. - APPEND '75' TO lt_percent_val. - WHEN zcl_excel_style_conditional=>c_iconset_5arrows OR - zcl_excel_style_conditional=>c_iconset_5arrowsgray OR - zcl_excel_style_conditional=>c_iconset_5quarters OR - zcl_excel_style_conditional=>c_iconset_5rating. - APPEND '0' TO lt_percent_val. - APPEND '20' TO lt_percent_val. - APPEND '40' TO lt_percent_val. - APPEND '60' TO lt_percent_val. - APPEND '80' TO lt_percent_val. - WHEN OTHERS. - CLEAR lt_percent_val. - ENDCASE. - - LOOP AT lt_percent_val INTO ls_percent_val. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = 'percent' ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = ls_percent_val ). - lo_element_3->append_child( lo_element_4 ). " cfvo node - ENDLOOP. - - - lo_element_2->append_child( lo_element_3 ). " iconset node - WHEN zcl_excel_style_conditional=>c_rule_cellis. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = '0' ). " @TODO <***************************** - lv_value = lo_style_conditional->operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = lo_style_conditional->formula. - lo_element_3->set_value( lv_value ). - lo_element_2->append_child( lo_element_3 ). " formula node - - ENDCASE. - - lo_element->append_child( lo_element_2 ). " cfRule node - - lo_element_root->append_child( lo_element ). " Conditional formatting node - ENDWHILE. - " pageMargins node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_document ). - - lo_element->set_attribute_ns( name = lc_xml_attr_left - value = '0.7' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_right - value = '0.7' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_top - value = '0.75' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_bottom - value = '0.75' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_header - value = '0.3' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_footer - value = '0.3' ). " @TODO <***************************** - lo_element_root->append_child( lo_element ). " sheetFormatPr node - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_sheet_rels. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - lc_xml_node_rid_print_id TYPE string VALUE 'rId1', - " Node type - lc_xml_node_rid_print_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - " Node target - lc_xml_node_rid_print_tg TYPE string VALUE '../printerSettings/printerSettings1.bin'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rid_print_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_print_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_print_tg ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_styles. - - -** Constant node name - DATA: lc_xml_node_stylesheet TYPE string VALUE 'styleSheet', - " font - lc_xml_node_fonts TYPE string VALUE 'fonts', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - " fill - lc_xml_node_fills TYPE string VALUE 'fills', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - lc_xml_node_gradientfill TYPE string VALUE 'gradientFill', - lc_xml_node_stop TYPE string VALUE 'stop', - " borders - lc_xml_node_borders TYPE string VALUE 'borders', - lc_xml_node_border TYPE string VALUE 'border', - lc_xml_node_left TYPE string VALUE 'left', - lc_xml_node_right TYPE string VALUE 'right', - lc_xml_node_top TYPE string VALUE 'top', - lc_xml_node_bottom TYPE string VALUE 'bottom', - lc_xml_node_diagonal TYPE string VALUE 'diagonal', - " Styles - lc_xml_node_cellstylexfs TYPE string VALUE 'cellStyleXfs', - lc_xml_node_xf TYPE string VALUE 'xf', - lc_xml_node_cellxfs TYPE string VALUE 'cellXfs', - lc_xml_node_cellstyles TYPE string VALUE 'cellStyles', - lc_xml_node_cellstyle TYPE string VALUE 'cellStyle', - lc_xml_node_dxfs TYPE string VALUE 'dxfs', - lc_xml_node_tablestyles TYPE string VALUE 'tableStyles', - " Colors - lc_xml_node_colors TYPE string VALUE 'colors', - lc_xml_node_mrucolors TYPE string VALUE 'mruColors', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_position TYPE string VALUE 'position', - lc_xml_attr_degree TYPE string VALUE 'degree', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_attr_numfmtid TYPE string VALUE 'numFmtId', - lc_xml_attr_fontid TYPE string VALUE 'fontId', - lc_xml_attr_fillid TYPE string VALUE 'fillId', - lc_xml_attr_borderid TYPE string VALUE 'borderId', - lc_xml_attr_xfid TYPE string VALUE 'xfId', - lc_xml_attr_applynumberformat TYPE string VALUE 'applyNumberFormat', - lc_xml_attr_applyfont TYPE string VALUE 'applyFont', - lc_xml_attr_applyfill TYPE string VALUE 'applyFill', - lc_xml_attr_applyborder TYPE string VALUE 'applyBorder', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_builtinid TYPE string VALUE 'builtinId', - lc_xml_attr_defaulttablestyle TYPE string VALUE 'defaultTableStyle', - lc_xml_attr_defaultpivotstyle TYPE string VALUE 'defaultPivotStyle', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_fonts TYPE REF TO if_ixml_element, - lo_element_font TYPE REF TO if_ixml_element, - lo_element_fills TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_borders TYPE REF TO if_ixml_element, - lo_element_border TYPE REF TO if_ixml_element, - lo_element_cellxfs TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style TYPE REF TO zcl_excel_style. - - - DATA: lt_fonts TYPE zexcel_t_style_font, - ls_font TYPE zexcel_s_style_font, - lt_fills TYPE zexcel_t_style_fill, - ls_fill TYPE zexcel_s_style_fill, - lt_borders TYPE zexcel_t_style_border, - ls_border TYPE zexcel_s_style_border, - ls_format TYPE zexcel_number_format, - lt_cellxfs TYPE zexcel_t_cellxfs, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_styles_mapping TYPE zexcel_s_styles_mapping, - lt_colors TYPE TABLE OF zexcel_style_color_argb, - ls_color TYPE zexcel_style_color_argb. - - DATA: lv_value TYPE string, - lv_fonts_count TYPE i, - lv_fills_count TYPE i, - lv_borders_count TYPE i, - lv_cellxfs_count TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_stylesheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lo_element_fonts = lo_document->create_simple_element( name = lc_xml_node_fonts - parent = lo_document ). - - lo_element_fills = lo_document->create_simple_element( name = lc_xml_node_fills - parent = lo_document ). - - lo_element_borders = lo_document->create_simple_element( name = lc_xml_node_borders - parent = lo_document ). - - lo_element_cellxfs = lo_document->create_simple_element( name = lc_xml_node_cellxfs - parent = lo_document ). - -* Compress styles - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_style ?= lo_iterator->get_next( ). - ls_font = lo_style->font->get_structure( ). - ls_fill = lo_style->fill->get_structure( ). - ls_border = lo_style->borders->get_structure( ). - ls_format = lo_style->number_format->get_structure( ). - - -* Compress fonts - READ TABLE lt_fonts FROM ls_font TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fontid = sy-tabix. - ELSE. - APPEND ls_font TO lt_fonts. - DESCRIBE TABLE lt_fonts LINES ls_cellxfs-fontid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fontid. - -* Compress fills - READ TABLE lt_fills FROM ls_fill TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fillid = sy-tabix. - ELSE. - APPEND ls_fill TO lt_fills. - DESCRIBE TABLE lt_fills LINES ls_cellxfs-fillid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fillid. - -* Compress borders - READ TABLE lt_borders FROM ls_border TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-borderid = sy-tabix. - ELSE. - APPEND ls_border TO lt_borders. - DESCRIBE TABLE lt_borders LINES ls_cellxfs-borderid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-borderid. - - IF ls_format IS INITIAL. - ls_cellxfs-numfmtid = 0. " number format - ELSE. - ls_cellxfs-numfmtid = ls_format. " number format - ENDIF. - ls_cellxfs-xfid = 0. - - IF ls_format IS NOT INITIAL. - ls_cellxfs-applynumberformat = 1. - ls_styles_mapping-cell_format = 'I'. - ELSE. - ls_cellxfs-applynumberformat = 0. - ls_styles_mapping-cell_format = 'S'. - ENDIF. - IF ls_cellxfs-fontid NE 0. - ls_cellxfs-applyfont = 1. - ELSE. - ls_cellxfs-applyfont = 0. - ENDIF. - IF ls_cellxfs-fillid NE 0. - ls_cellxfs-applyfill = 1. - ELSE. - ls_cellxfs-applyfill = 0. - ENDIF. - IF ls_cellxfs-borderid NE 0. - ls_cellxfs-applyborder = 1. - ELSE. - ls_cellxfs-applyborder = 0. - ENDIF. - -* Remap styles - READ TABLE lt_cellxfs FROM ls_cellxfs TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_styles_mapping-style = sy-tabix. - ELSE. - APPEND ls_cellxfs TO lt_cellxfs. - DESCRIBE TABLE lt_cellxfs LINES ls_styles_mapping-style. - ENDIF. - SUBTRACT 1 FROM ls_styles_mapping-style. - ls_styles_mapping-guid = lo_style->get_guid( ). - APPEND ls_styles_mapping TO me->styles_mapping. - ENDWHILE. - - " create font elements - LOOP AT lt_fonts INTO ls_font. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz - parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "color - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_font-color. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "name - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name - parent = lo_document ). - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family - parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "scheme - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - lo_element_fonts->append_child( lo_element_font ). - " Collect color - APPEND ls_font-color TO lt_colors. - ENDLOOP. - - " create fill elements - LOOP AT lt_fills INTO ls_fill. - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - IF ls_fill-fgcolor IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_fgcolor - parent = lo_document ). - lv_value = ls_fill-fgcolor. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - - lo_sub_element->append_child( lo_sub_element_2 )." fgcolor - ENDIF. - " bgcolor - IF ls_fill-bgcolor IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_bgcolor - parent = lo_document ). - lv_value = ls_fill-bgcolor. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indexed - value = lv_value ). - - lo_sub_element->append_child( lo_sub_element_2 )." bgcolor - ENDIF. - - lo_element_fill->append_child( lo_sub_element )."pattern - lo_element_fills->append_child( lo_element_fill ). - " Collect color - IF ls_fill-fgcolor IS NOT INITIAL. - APPEND ls_fill-fgcolor TO lt_colors. - ENDIF. - ENDLOOP. - - " create border elements - LOOP AT lt_borders INTO ls_border. - lo_element_border = lo_document->create_simple_element( name = lc_xml_node_border - parent = lo_document ). - "left - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_left - parent = lo_document ). - IF ls_border-left_style IS NOT INITIAL. - lv_value = ls_border-left_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-left_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-left_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-left_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "right - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right - parent = lo_document ). - IF ls_border-right_style IS NOT INITIAL. - lv_value = ls_border-right_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-right_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-right_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-right_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "top - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top - parent = lo_document ). - IF ls_border-top_style IS NOT INITIAL. - lv_value = ls_border-top_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-top_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-top_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-top_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "bottom - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom - parent = lo_document ). - IF ls_border-bottom_style IS NOT INITIAL. - lv_value = ls_border-bottom_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-bottom_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-bottom_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-bottom_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "diagonal - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal - parent = lo_document ). - IF ls_border-diagonal_style IS NOT INITIAL. - lv_value = ls_border-diagonal_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-diagonal_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-diagonal_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-diagonal_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - lo_element_borders->append_child( lo_element_border ). - ENDLOOP. - - " update attribute "count" - DESCRIBE TABLE lt_fonts LINES lv_fonts_count. - MOVE lv_fonts_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fonts->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_fills LINES lv_fills_count. - MOVE lv_fills_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fills->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_borders LINES lv_borders_count. - MOVE lv_borders_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_borders->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_cellxfs LINES lv_cellxfs_count. - MOVE lv_cellxfs_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_cellxfs->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - - " Append to root node - lo_element_root->append_child( lo_element_fonts ). - lo_element_root->append_child( lo_element_fills ). - lo_element_root->append_child( lo_element_borders ). - - " cellstylexfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fontid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fillid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid - value = '0' ). - - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). - - LOOP AT lt_cellxfs INTO ls_cellxfs. - lo_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - MOVE ls_cellxfs-numfmtid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - MOVE ls_cellxfs-fontid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fontid - value = lv_value ). - MOVE ls_cellxfs-fillid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fillid - value = lv_value ). - MOVE ls_cellxfs-borderid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_borderid - value = lv_value ). - MOVE ls_cellxfs-xfid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_xfid - value = lv_value ). - IF ls_cellxfs-applynumberformat EQ 1. - MOVE ls_cellxfs-applynumberformat TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applynumberformat - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfont EQ 1. - MOVE ls_cellxfs-applyfont TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfont - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfill EQ 1. - MOVE ls_cellxfs-applyfill TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfill - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyborder EQ 1. - MOVE ls_cellxfs-applyborder TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyborder - value = lv_value ). - ENDIF. - lo_element_cellxfs->append_child( lo_element ). - ENDLOOP. - - lo_element_root->append_child( lo_element_cellxfs ). - - " cellStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_cellstyle - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = 'Normal' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xfid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid - value = '0' ). - - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). - - " dxfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element_root->append_child( lo_element ). - - " tableStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaulttablestyle - value = 'TableStyleMedium9' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle - value = 'PivotStyleLight16' ). - lo_element_root->append_child( lo_element ). - - " colors node - lo_element = lo_document->create_simple_element( name = lc_xml_node_colors - parent = lo_document ). - " mruColors node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_mrucolors - parent = lo_document ). - - SORT lt_colors. - DELETE ADJACENT DUPLICATES FROM lt_colors. - - LOOP AT lt_colors INTO ls_color. - " color node - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color node - ENDLOOP. - - lo_element->append_child( lo_sub_element )." mruColors node - lo_element_root->append_child( lo_element )." colors node - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_theme. - - -* @TODO * - - DATA: lv_xl_theme TYPE string, - lv_xl_theme_01 TYPE string, - lv_xl_theme_02 TYPE string, - lv_xl_theme_03 TYPE string, - lv_xl_theme_04 TYPE string, - lv_xl_theme_05 TYPE string, - lv_xl_theme_06 TYPE string, - lv_xl_theme_07 TYPE string, - lv_xl_theme_08 TYPE string, - lv_xl_theme_09 TYPE string, - lv_xl_theme_10 TYPE string, - lv_xl_theme_11 TYPE string, - lv_xl_theme_12 TYPE string, - lv_xl_theme_13 TYPE string, - lv_xl_theme_14 TYPE string, - lv_xl_theme_15 TYPE string, - lv_xl_theme_16 TYPE string, - lv_xl_theme_17 TYPE string, - lv_xl_theme_18 TYPE string, - lv_xl_theme_19 TYPE string, - lv_xl_theme_20 TYPE string, - lv_xl_theme_21 TYPE string, - lv_xl_theme_22 TYPE string, - lv_xl_theme_23 TYPE string, - lv_xl_theme_24 TYPE string, - lv_xl_theme_25 TYPE string, - lv_xl_theme_26 TYPE string, - lv_xl_theme_27 TYPE string, - lv_xl_theme_28 TYPE string, - lv_xl_theme_29 TYPE string, - lv_xl_theme_30 TYPE string, - lv_xl_theme_31 TYPE string, - lv_xl_theme_32 TYPE string. - - lv_xl_theme_01 = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'. - lv_xl_theme_02 = '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" '. - lv_xl_theme_03 = 'lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr '. - lv_xl_theme_04 = 'val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink>'. - lv_xl_theme_05 = '<a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_06 = '<a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" '. - lv_xl_theme_07 = 'typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font '. - lv_xl_theme_08 = 'script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" '. - lv_xl_theme_09 = 'typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_10 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_11 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_12 = '<a:font script="Arab" typeface="Arial"/><a:font script="Hebr" '. - lv_xl_theme_13 = 'typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font '. - lv_xl_theme_14 = 'script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font '. - lv_xl_theme_15 = 'script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_16 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_17 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_18 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod '. - lv_xl_theme_19 = 'val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1">'. - lv_xl_theme_20 = '<a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs '. - lv_xl_theme_21 = 'pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" '. - lv_xl_theme_22 = 'algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr '. - lv_xl_theme_23 = 'val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst>'. - lv_xl_theme_24 = '<a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst>'. - lv_xl_theme_25 = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" '. - lv_xl_theme_26 = 'dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig '. - lv_xl_theme_27 = 'rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_28 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade '. - lv_xl_theme_29 = 'val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" '. - lv_xl_theme_30 = 't="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr '. - lv_xl_theme_31 = 'val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme>'. - lv_xl_theme_32 = '</a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>'. - - - CONCATENATE lv_xl_theme_01 lv_xl_theme_02 lv_xl_theme_03 lv_xl_theme_04 lv_xl_theme_05 lv_xl_theme_06 lv_xl_theme_07 lv_xl_theme_08 lv_xl_theme_09 lv_xl_theme_10 lv_xl_theme_11 lv_xl_theme_12 lv_xl_theme_13 lv_xl_theme_14 lv_xl_theme_15 - lv_xl_theme_16 lv_xl_theme_17 lv_xl_theme_18 lv_xl_theme_19 lv_xl_theme_20 lv_xl_theme_21 lv_xl_theme_22 lv_xl_theme_23 lv_xl_theme_24 lv_xl_theme_25 lv_xl_theme_26 lv_xl_theme_27 lv_xl_theme_28 lv_xl_theme_29 lv_xl_theme_30 - lv_xl_theme_31 lv_xl_theme_32 - INTO lv_xl_theme SEPARATED BY space. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - text = lv_xl_theme - IMPORTING - buffer = ep_content. - - -ENDMETHOD. - - - - METHOD create_xl_workbook. - - -** Constant node name - DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', - lc_xml_node_fileversion TYPE string VALUE 'fileVersion', - lc_xml_node_workbookpr TYPE string VALUE 'workbookPr', - lc_xml_node_bookviews TYPE string VALUE 'bookViews', - lc_xml_node_workbookview TYPE string VALUE 'workbookView', - lc_xml_node_sheets TYPE string VALUE 'sheets', - lc_xml_node_sheet TYPE string VALUE 'sheet', - lc_xml_node_calcpr TYPE string VALUE 'calcPr', - " Node attributes - lc_xml_attr_appname TYPE string VALUE 'appName', - lc_xml_attr_lastedited TYPE string VALUE 'lastEdited', - lc_xml_attr_lowestedited TYPE string VALUE 'lowestEdited', - lc_xml_attr_rupbuild TYPE string VALUE 'rupBuild', - lc_xml_attr_themeversion TYPE string VALUE 'defaultThemeVersion', - lc_xml_attr_xwindow TYPE string VALUE 'xWindow', - lc_xml_attr_ywindow TYPE string VALUE 'yWindow', - lc_xml_attr_windowwidth TYPE string VALUE 'windowWidth', - lc_xml_attr_windowheight TYPE string VALUE 'windowHeight', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_sheetid TYPE string VALUE 'sheetId', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_calcid TYPE string VALUE 'calcId', - " Node namespace - lc_r_ns TYPE string VALUE 'r', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_xml_node_ridx_id TYPE string, - lv_value TYPE string, - lv_syindex TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_workbook - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnode - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_fileversion - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_appname - value = 'xl' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lastedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lowestedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild - value = '4506' ). - lo_element_root->append_child( lo_element ). - - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_themeversion - value = '124226' ). - lo_element_root->append_child( lo_element ). - - " bookviews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews - parent = lo_document ). - " bookview node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_workbookview - parent = lo_document ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xwindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_ywindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowwidth - value = '19035' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight - value = '8445' ). - lo_element->append_child( lo_sub_element )." bookview node - lo_element_root->append_child( lo_element )." bookviews node - - " sheets node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets - parent = lo_document ). - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " sheet node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->title. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_sheetid - value = lv_syindex ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_id - prefix = lc_r_ns - value = lv_xml_node_ridx_id ). - lo_element->append_child( lo_sub_element ). " sheet node - ENDWHILE. - lo_element_root->append_child( lo_element )." sheets node - - " calcPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_calcid - value = '125725' ). - lo_element_root->append_child( lo_element ). - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - METHOD flag2bool. - - - IF ip_flag EQ abap_true. - ep_boolean = 'true'. - ELSE. - ep_boolean = 'false'. - ENDIF. -ENDMETHOD. - - - - - METHOD get_shared_string_index. - - - DATA ls_shared_string TYPE zexcel_s_shared_string. - - READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value. - ep_index = ls_shared_string-string_no. - -ENDMETHOD. - - - - class ZCL_EXCEL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL -*"* do not include other source files here!!! -public section. - - constants C_XLS type ZEXCEL_FORMAT value 'XLS'. "#EC NOTEXT - constants C_XLSX type ZEXCEL_FORMAT value 'XLSX'. "#EC NOTEXT - data PROPERTIES type ref to ZCL_EXCEL_PROPERTIES . - data SECURITY type ref to ZCL_EXCEL_SECURITY . - - methods ADD_NEW_DRAWING - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional - returning - value(EO_DRAWING) type ref to ZCL_EXCEL_DRAWING . - methods ADD_NEW_STYLE - returning - value(EO_STYLE) type ref to ZCL_EXCEL_STYLE . - methods ADD_NEW_WORKSHEET - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods CONSTRUCTOR . - methods GET_ACTIVE_WORKSHEET - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods GET_DRAWINGS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_STYLES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_WORKSHEETS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_WORKSHEETS_NAME - returning - value(EP_NAME) type ZEXCEL_WORKSHEETS_NAME . - methods GET_WORKSHEETS_SIZE - returning - value(EP_SIZE) type I . - methods SAVE_AS - importing - !IP_FORMAT type ZEXCEL_FORMAT - returning - value(EP_FILE) type XSTRING . - *"* protected components of class ZABAP_EXCEL -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL -*"* do not include other source files here!!! -private section. - - data DRAWINGS type ref to ZCL_EXCEL_DRAWINGS . - data RANGES type ref to ZCL_EXCEL_RANGES . - data STYLES type ref to ZCL_EXCEL_STYLES . - data WORKSHEETS type ref to ZCL_EXCEL_WORKSHEETS . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - METHOD add_new_drawing. - - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_drawing - EXPORTING - ip_title = ip_title. - drawings->add( eo_drawing ). -ENDMETHOD. - - - - method ADD_NEW_STYLE. - - -* Create default style - CREATE OBJECT eo_style. - styles->add( eo_style ). - -endmethod. - - - - - METHOD add_new_worksheet. - - - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_worksheet - EXPORTING - ip_title = ip_title. - worksheets->add( eo_worksheet ). - worksheets->active_worksheet = worksheets->size( ). -ENDMETHOD. - - - METHOD constructor. - - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style. - -* Inizialize instance objects - CREATE OBJECT properties. - CREATE OBJECT security. - CREATE OBJECT worksheets. - CREATE OBJECT ranges. - CREATE OBJECT styles. - CREATE OBJECT drawings. - - me->add_new_worksheet( ). - me->add_new_style( ). " Standard style - lo_style = me->add_new_style( ). " Standard style with fill gray125 - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_pattern_gray125. - - -ENDMETHOD. - - - - method GET_ACTIVE_WORKSHEET. - - - eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). - -endmethod. - - - - METHOD GET_DRAWINGS_ITERATOR. - - - eo_iterator = me->drawings->get_iterator( ). -ENDMETHOD. - - - - METHOD GET_STYLES_ITERATOR. - - - eo_iterator = me->styles->get_iterator( ). -ENDMETHOD. - - - - METHOD get_worksheets_iterator. - - - eo_iterator = me->worksheets->get_iterator( ). -ENDMETHOD. - - - - METHOD GET_WORKSHEETS_NAME. - - - ep_name = me->worksheets->name. - -ENDMETHOD. - - - - METHOD get_worksheets_size. - - - ep_size = me->worksheets->size( ). - -ENDMETHOD. - - - - - METHOD save_as. - - - DATA lo_excel_writer_2007 TYPE REF TO zcl_excel_writer_2007. - -* Determine the output engine to use - CASE ip_format. - WHEN me->c_xlsx. " XLSX for Office 2007 - CREATE OBJECT lo_excel_writer_2007 EXPORTING io_excel = me. - ep_file = lo_excel_writer_2007->create( ). - WHEN OTHERS. - ENDCASE. - -ENDMETHOD. - - - - class ZCL_EXCEL_COMMON definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_COMMON -*"* do not include other source files here!!! -public section. - - class-methods CONVERT_COLUMN2ALPHA - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA . - class-methods CONVERT_COLUMN2INT - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN . - *"* protected components of class ZCL_EXCEL_COMMON -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_COMMON -*"* do not include other source files here!!! -private section. - - class-data C_EXCEL_COL_MODULE type INT2 value 64. "#EC NOTEXT . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - METHOD convert_column2alpha. - - - DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce, - lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - - lv_column = ip_column. - WHILE lv_column GT 0. - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - ENDWHILE. - -ENDMETHOD. - - - - - METHOD convert_column2int. - - - DATA: lv_uccpi TYPE i, - lv_char TYPE c, - lv_column(2) TYPE c. - -* Calculate most significant letter - lv_char = ip_column+1(1). - IF lv_char IS NOT INITIAL. "To avoid the first 26 column that have only a char in first position - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - - ep_column = ep_column MOD ( zcl_excel_common=>c_excel_col_module ). - - lv_char = ip_column(1). - lv_uccpi = cl_abap_conv_out_ce=>uccpi( lv_char ). - - lv_uccpi = ( lv_uccpi MOD ( zcl_excel_common=>c_excel_col_module ) ) * 26. - - ep_column = ep_column + lv_uccpi. - ELSE. - lv_char = ip_column(1). - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - ep_column = ep_column - zcl_excel_common=>c_excel_col_module. - ENDIF. - -ENDMETHOD. - - - - class ZCL_EXCEL_DRAWING definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . - data X_REFERENCES type CHAR1 . - data Y_REFERENCES type CHAR1 . - data GRAPH_TYPE type ZEXCEL_GRAPH_TYPE . - - methods CONSTRUCTOR - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional . - methods GET_GUID - returning - value(EP_GUID) type GUID_16 . - *"* protected components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! -private section. - - data GUID type GUID_16 . - data LOWER_CELL type ZEXCEL_S_CELL_DATA . - data UPPER_CELL type ZEXCEL_S_CELL_DATA . - constants C_EXCEL_COL_MODULE type INT2 value 64. "#EC NOTEXT - - methods CONVERT_COLUMN2ALPHA - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA . - methods CONVERT_COLUMN2INT - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - METHOD CONSTRUCTOR. - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - -* inizialize dimension range - lower_cell-cell_row = 1. - lower_cell-cell_column = 1. - upper_cell-cell_row = 1. - upper_cell-cell_column = 1. -ENDMETHOD. - - - - - METHOD CONVERT_COLUMN2ALPHA. - DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce, - lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - - lv_column = ip_column. - WHILE lv_column GT 0. - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - ENDWHILE. - -ENDMETHOD. - - - - - METHOD CONVERT_COLUMN2INT. - - DATA: lv_uccpi TYPE i, - lv_char TYPE c, - lv_column(2) TYPE c. - -* Calculate most significant letter - lv_char = ip_column+1(1). - IF lv_char IS NOT INITIAL. "To avoid the first 26 column that have only a char in first position - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - - ep_column = ep_column MOD ( me->c_excel_col_module ). - - lv_char = ip_column(1). - lv_uccpi = cl_abap_conv_out_ce=>uccpi( lv_char ). - - lv_uccpi = ( lv_uccpi MOD ( me->c_excel_col_module ) ) * 26. - - ep_column = ep_column + lv_uccpi. - ELSE. - lv_char = ip_column(1). - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - ep_column = ep_column - me->c_excel_col_module. - ENDIF. - -ENDMETHOD. - - - - method GET_GUID. - - ep_guid = me->guid. - -endmethod. - - - - class ZCL_EXCEL_DRAWINGS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_DRAWINGS -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type ZEXCEL_ACTIVE_WORKSHEET - returning - value(EO_DRAWING) type ref to ZCL_EXCEL_DRAWING . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_DRAWINGS -*"* do not include other source files here!!! -private section. - - data DRAWINGS type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - METHOD add. - - - drawings->add( ip_drawing ). -ENDMETHOD. - - - METHOD clear. - - - drawings->clear( ). -ENDMETHOD. - - - METHOD constructor. - - - CREATE OBJECT drawings. - -ENDMETHOD. - - - - - METHOD get. - - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_drawing ?= drawings->if_object_collection~get( lv_index ). -ENDMETHOD. - - - - METHOD get_iterator. - - - eo_iterator ?= drawings->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD is_empty. - - - is_empty = drawings->if_object_collection~is_empty( ). -ENDMETHOD. - - - - METHOD remove. - - - drawings->remove( ip_drawing ). -ENDMETHOD. - - - - METHOD size. - - - ep_size = drawings->if_object_collection~size( ). -ENDMETHOD. - - - - class ZCL_EXCEL_PROPERTIES definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_PROPERTIES -*"* do not include other source files here!!! -public section. - - data CREATOR type ZEXCEL_CREATOR value 'Unknown Creator'. "#EC NOTEXT . - data LASTMODIFIEDBY type ZEXCEL_CREATOR value 'Unknown Creator'. "#EC NOTEXT . - data CREATED type TIMESTAMPL . - data MODIFIED type TIMESTAMPL . - data TITLE type ZEXCEL_TITLE value 'Untitled Spreadsheet'. "#EC NOTEXT . - data SUBJECT type ZEXCEL_SUBJECT . - data DESCRIPTION type ZEXCEL_DESCRIPTION . - data KEYWORDS type ZEXCEL_KEYWORDS . - data CATEGORY type ZEXCEL_CATEGORY . - data COMPANY type ZEXCEL_COMPANY value 'Microsoft Corporation'. "#EC NOTEXT . - data APPLICATION type ZEXCEL_APPLICATION value 'Microsoft Excel'. "#EC NOTEXT . - data DOCSECURITY type ZEXCEL_DOCSECURITY value '0'. "#EC NOTEXT . - data SCALECROP type ZEXCEL_SCALECROP value ''. "#EC NOTEXT . - data LINKSUPTODATE type FLAG . - data SHAREDDOC type FLAG . - data HYPERLINKSCHANGED type FLAG . - data APPVERSION type ZEXCEL_APPVERSION value '12.0000'. "#EC NOTEXT . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_PROPERTIES -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_PROPERTIES -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - METHOD CONSTRUCTOR. - - DATA: lv_timestamp TYPE timestampl. - - GET TIME STAMP FIELD lv_timestamp. - created = lv_timestamp. - modified = lv_timestamp. - -ENDMETHOD. - - - - class ZCL_EXCEL_RANGE definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_RANGE -*"* do not include other source files here!!! -public section. - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -protected section. - *"* private components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - method CONSTRUCTOR. -endmethod. - - - - class ZCL_EXCEL_RANGES definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_RANGES -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_RANGE type ref to ZCL_EXCEL_RANGE . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type I - returning - value(EO_RANGE) type ref to ZCL_EXCEL_RANGE . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_RANGE type ref to ZCL_EXCEL_RANGE . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZABAP_EXCEL_RANGES -*"* do not include other source files here!!! -private section. - - data RANGES type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - METHOD ADD. - ranges->add( ip_range ). -ENDMETHOD. - - - METHOD CLEAR. - ranges->clear( ). -ENDMETHOD. - - - method CONSTRUCTOR. -endmethod. - - - - - METHOD GET. - eo_range ?= ranges->if_object_collection~get( ip_index ). -ENDMETHOD. - - - - METHOD GET_ITERATOR. - eo_iterator ?= ranges->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD IS_EMPTY. - is_empty = ranges->if_object_collection~is_empty( ). -ENDMETHOD. - - - - METHOD REMOVE. - ranges->remove( ip_range ). -ENDMETHOD. - - - - METHOD SIZE. - ep_size = ranges->if_object_collection~size( ). -ENDMETHOD. - - - - class ZCL_EXCEL_SECURITY definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_SECURITY -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data LOCKREVISION type FLAG . - data LOCKSTRUCTURE type FLAG . - data LOCKWINDOWS type FLAG . - data REVISIONSPASSWORD type ZEXCEL_REVISIONSPASSWORD . - data WORKBOOKPASSWORD type ZEXCEL_WORKBOOKPASSWORD . - - methods CONSTRUCTOR . - methods IS_SECURITY_ENABLED - returning - value(EP_SECURITY_ENABLED) type FLAG . - *"* protected components of class ZABAP_EXCEL_SECURITY -*"* do not include other source files here!!! -protected section. - *"* private components of class ZABAP_EXCEL_SECURITY -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - method CONSTRUCTOR. -endmethod. - - - - METHOD IS_SECURITY_ENABLED. - IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. - ep_security_enabled = abap_true. - ENDIF. -ENDMETHOD. - - - - class ZCL_EXCEL_SHEET_SETUP definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_SHEET_SETUP -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - constants C_PAPERSIZE_LETTER type ZEXCEL_SHEET_PAPER_SIZE value 1. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_SMALL type ZEXCEL_SHEET_PAPER_SIZE value 2. "#EC NOTEXT - constants C_PAPERSIZE_TABLOID type ZEXCEL_SHEET_PAPER_SIZE value 3. "#EC NOTEXT - constants C_PAPERSIZE_LEDGER type ZEXCEL_SHEET_PAPER_SIZE value 4. "#EC NOTEXT - constants C_PAPERSIZE_LEGAL type ZEXCEL_SHEET_PAPER_SIZE value 5. "#EC NOTEXT - constants C_PAPERSIZE_STATEMENT type ZEXCEL_SHEET_PAPER_SIZE value 6. "#EC NOTEXT - constants C_PAPERSIZE_EXECUTIVE type ZEXCEL_SHEET_PAPER_SIZE value 7. "#EC NOTEXT - constants C_PAPERSIZE_A3 type ZEXCEL_SHEET_PAPER_SIZE value 8. "#EC NOTEXT - constants C_PAPERSIZE_A4 type ZEXCEL_SHEET_PAPER_SIZE value 9. "#EC NOTEXT - constants C_PAPERSIZE_A4_SMALL type ZEXCEL_SHEET_PAPER_SIZE value 10. "#EC NOTEXT - constants C_PAPERSIZE_A5 type ZEXCEL_SHEET_PAPER_SIZE value 11. "#EC NOTEXT - constants C_PAPERSIZE_B4 type ZEXCEL_SHEET_PAPER_SIZE value 12. "#EC NOTEXT - constants C_PAPERSIZE_B5 type ZEXCEL_SHEET_PAPER_SIZE value 13. "#EC NOTEXT - constants C_PAPERSIZE_FOLIO type ZEXCEL_SHEET_PAPER_SIZE value 14. "#EC NOTEXT - constants C_PAPERSIZE_QUARTO type ZEXCEL_SHEET_PAPER_SIZE value 15. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_1 type ZEXCEL_SHEET_PAPER_SIZE value 16. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_2 type ZEXCEL_SHEET_PAPER_SIZE value 17. "#EC NOTEXT - constants C_PAPERSIZE_NOTE type ZEXCEL_SHEET_PAPER_SIZE value 18. "#EC NOTEXT - constants C_PAPERSIZE_NO9_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 19. "#EC NOTEXT - constants C_PAPERSIZE_NO10_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 20. "#EC NOTEXT - constants C_PAPERSIZE_NO11_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 21. "#EC NOTEXT - constants C_PAPERSIZE_NO12_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 22. "#EC NOTEXT - constants C_PAPERSIZE_NO14_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 23. "#EC NOTEXT - constants C_PAPERSIZE_C type ZEXCEL_SHEET_PAPER_SIZE value 24. "#EC NOTEXT - constants C_PAPERSIZE_D type ZEXCEL_SHEET_PAPER_SIZE value 25. "#EC NOTEXT - constants C_PAPERSIZE_E type ZEXCEL_SHEET_PAPER_SIZE value 26. "#EC NOTEXT - constants C_PAPERSIZE_DL_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 27. "#EC NOTEXT - constants C_PAPERSIZE_C5_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 28. "#EC NOTEXT - constants C_PAPERSIZE_C3_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 29. "#EC NOTEXT - constants C_PAPERSIZE_C4_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 30. "#EC NOTEXT - constants C_PAPERSIZE_C6_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 31. "#EC NOTEXT - constants C_PAPERSIZE_C65_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 32. "#EC NOTEXT - constants C_PAPERSIZE_B4_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 33. "#EC NOTEXT - constants C_PAPERSIZE_B5_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 34. "#EC NOTEXT - constants C_PAPERSIZE_B6_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 35. "#EC NOTEXT - constants C_PAPERSIZE_ITALY_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 36. "#EC NOTEXT - constants C_PAPERSIZE_MONARCH_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 37. "#EC NOTEXT - constants C_PAPERSIZE_6_3_4_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 38. "#EC NOTEXT - constants C_PAPERSIZE_US_STD_FANFOLD type ZEXCEL_SHEET_PAPER_SIZE value 39. "#EC NOTEXT - constants C_PAPERSIZE_DE_STD_FANFOLD type ZEXCEL_SHEET_PAPER_SIZE value 40. "#EC NOTEXT - constants C_PAPERSIZE_DE_LEG_FANFOLD type ZEXCEL_SHEET_PAPER_SIZE value 41. "#EC NOTEXT - constants C_PAPERSIZE_ISO_B4 type ZEXCEL_SHEET_PAPER_SIZE value 42. "#EC NOTEXT - constants C_PAPERSIZE_JPN_DBL_POSTCARD type ZEXCEL_SHEET_PAPER_SIZE value 43. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_PAPER_1 type ZEXCEL_SHEET_PAPER_SIZE value 44. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_PAPER_2 type ZEXCEL_SHEET_PAPER_SIZE value 45. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_PAPER_3 type ZEXCEL_SHEET_PAPER_SIZE value 46. "#EC NOTEXT - constants C_PAPERSIZE_INVITE_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 47. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 48. "#EC NOTEXT - constants C_PAPERSIZE_LEGAL_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 49. "#EC NOTEXT - constants C_PAPERSIZE_TABL_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 50. "#EC NOTEXT - constants C_PAPERSIZE_A4_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 51. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 52. "#EC NOTEXT - constants C_PAPERSIZE_A4_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 53. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_EXTV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 54. "#EC NOTEXT - constants C_PAPERSIZE_SUPERA_A4_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 55. "#EC NOTEXT - constants C_PAPERSIZE_SUPERB_A3_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 56. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_PLUS_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 57. "#EC NOTEXT - constants C_PAPERSIZE_A4_PLUS_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 58. "#EC NOTEXT - constants C_PAPERSIZE_A5_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 59. "#EC NOTEXT - constants C_PAPERSIZE_JIS_B5_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 60. "#EC NOTEXT - constants C_PAPERSIZE_A3_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 61. "#EC NOTEXT - constants C_PAPERSIZE_A5_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 62. "#EC NOTEXT - constants C_PAPERSIZE_ISO_B5_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 63. "#EC NOTEXT - constants C_PAPERSIZE_A2_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 64. "#EC NOTEXT - constants C_PAPERSIZE_A3_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 65. "#EC NOTEXT - constants C_PAPERSIZE_A3_EXTRA_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 66. "#EC NOTEXT - constants C_ORIENTATION_DEFAULT type ZEXCEL_SHEET_ORIENATATION value 'default'. "#EC NOTEXT - constants C_ORIENTATION_LANDSCAPE type ZEXCEL_SHEET_ORIENATATION value 'landscape'. "#EC NOTEXT - constants C_ORIENTATION_PORTRAIT type ZEXCEL_SHEET_ORIENATATION value 'portrait'. "#EC NOTEXT - data ORIENTATION type ZEXCEL_SHEET_ORIENATATION . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_SHEET_SETUP -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - orientation = me->c_orientation_default. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE -*"* do not include other source files here!!! -public section. - - data FONT type ref to ZCL_EXCEL_STYLE_FONT . - data FILL type ref to ZCL_EXCEL_STYLE_FILL . - data BORDERS type ref to ZCL_EXCEL_STYLE_BORDERS . - data NUMBER_FORMAT type ref to ZCL_EXCEL_STYLE_NUMBER_FORMAT . - - methods CONSTRUCTOR . - methods GET_GUID - returning - value(EP_GUID) type ZEXCEL_CELL_STYLE . - *"* protected components of class ZABAP_EXCEL_STYLE -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE -*"* do not include other source files here!!! -private section. - - data ALIGNMENT type ref to ZCL_EXCEL_STYLE_ALIGNMENT . - data PROTECTION type ref to ZCL_EXCEL_STYLE_PROTECTION . - data GUID type ZEXCEL_CELL_STYLE . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - METHOD constructor. - - - CREATE OBJECT font. - CREATE OBJECT fill. - CREATE OBJECT borders. - CREATE OBJECT alignment. - CREATE OBJECT number_format. - CREATE OBJECT protection. - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - -ENDMETHOD. - - - - METHOD get_guid. - - - ep_guid = me->guid. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLES definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLES -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_STYLE type ref to ZCL_EXCEL_STYLE . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type I - returning - value(EO_STYLE) type ref to ZCL_EXCEL_STYLE . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_STYLE type ref to ZCL_EXCEL_STYLE . - methods SIZE - returning - value(EP_SIZE) type I . - methods REGISTER_NEW_STYLE - importing - !IO_STYLE type ref to ZCL_EXCEL_STYLE - returning - value(EP_STYLE_CODE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLES -*"* do not include other source files here!!! -private section. - - data STYLES type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - METHOD add. - - - styles->add( ip_style ). -ENDMETHOD. - - - METHOD clear. - - - styles->clear( ). -ENDMETHOD. - - - METHOD constructor. - - - CREATE OBJECT styles. -ENDMETHOD. - - - - - METHOD get. - - - eo_style ?= styles->if_object_collection~get( ip_index ). -ENDMETHOD. - - - - METHOD get_iterator. - - - eo_iterator ?= styles->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD is_empty. - - - is_empty = styles->if_object_collection~is_empty( ). -ENDMETHOD. - - - - - METHOD register_new_style. - - - me->add( io_style ). - ep_style_code = me->size( ) - 1. "style count starts from 0 -ENDMETHOD. - - - - METHOD remove. - - - styles->remove( ip_style ). -ENDMETHOD. - - - - METHOD size. - - - ep_size = styles->if_object_collection~size( ). -ENDMETHOD. - - - - class ZCL_EXCEL_STYLES_CONDITIONAL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLES_CONDITIONAL -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_STYLE_CONDITIONAL type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type ZEXCEL_ACTIVE_WORKSHEET - returning - value(EO_STYLE_CONDITIONAL) type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_STYLE_CONDITIONAL type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLES_CONDITIONAL -*"* do not include other source files here!!! -private section. - - data STYLES_CONDITIONAL type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - METHOD add. - styles_conditional->add( ip_style_conditional ). -ENDMETHOD. - - - METHOD clear. - styles_conditional->clear( ). -ENDMETHOD. - - - METHOD constructor. - - CREATE OBJECT styles_conditional. - -ENDMETHOD. - - - - - METHOD get. - DATA lv_index TYPE i. - lv_index = ip_index. - eo_style_conditional ?= styles_conditional->if_object_collection~get( lv_index ). -ENDMETHOD. - - - - METHOD get_iterator. - eo_iterator ?= styles_conditional->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD is_empty. - is_empty = styles_conditional->if_object_collection~is_empty( ). -ENDMETHOD. - - - - METHOD remove. - styles_conditional->remove( ip_style_conditional ). -ENDMETHOD. - - - - METHOD size. - ep_size = styles_conditional->if_object_collection~size( ). -ENDMETHOD. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - class ZCL_EXCEL_STYLE_ALIGNMENT definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_ALIGNMENT -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data HORIZONTAL type ZEXCEL_ALIGNMENT . - data VERTICAL type ZEXCEL_ALIGNMENT . - data TEXTROTATION type ZEXCEL_TEXT_ROTATION value 0. "#EC NOTEXT . - data WRAPTEXT type FLAG . - data SHRINKTOFIT type FLAG . - data INDENT type ZEXCEL_INDENT value 0. "#EC NOTEXT . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_ALIGNMENT -*"* do not include other source files here!!! -private section. - - constants C_HORIZONTAL_GENERAL type ZEXCEL_ALIGNMENT value 'general'. "#EC NOTEXT - constants C_HORIZONTAL_LEFT type ZEXCEL_ALIGNMENT value 'left'. "#EC NOTEXT - constants C_HORIZONTAL_RIGHT type ZEXCEL_ALIGNMENT value 'right'. "#EC NOTEXT - constants C_HORIZONTAL_CENTER type ZEXCEL_ALIGNMENT value 'center'. "#EC NOTEXT - constants C_HORIZONTAL_CENTER_CONTINUOUS type ZEXCEL_ALIGNMENT value 'centerContinuous'. "#EC NOTEXT - constants C_HORIZONTAL_JUSTIFY type ZEXCEL_ALIGNMENT value 'justify'. "#EC NOTEXT - constants C_VERTICAL_BOTTOM type ZEXCEL_ALIGNMENT value 'bottom'. "#EC NOTEXT - constants C_VERTICAL_TOP type ZEXCEL_ALIGNMENT value 'top'. "#EC NOTEXT - constants C_VERTICAL_CENTER type ZEXCEL_ALIGNMENT value 'center'. "#EC NOTEXT - constants C_VERTICAL_JUSTIFY type ZEXCEL_ALIGNMENT value 'justify'. "#EC NOTEXT - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - METHOD constructor. - horizontal = me->c_horizontal_general. - vertical = me->c_vertical_bottom. - wrapText = abap_false. - shrinkToFit = abap_false. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_BORDER definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_BORDER -*"* do not include other source files here!!! -public section. - - data BORDER_STYLE type ZEXCEL_BORDER . - data BORDER_COLOR type ZEXCEL_STYLE_COLOR_ARGB . - class-data C_BORDER_NONE type ZEXCEL_BORDER value 'none'. "#EC NOTEXT . - class-data C_BORDER_DASHDOT type ZEXCEL_BORDER value 'dashDot'. "#EC NOTEXT . - class-data C_BORDER_DASHDOTDOT type ZEXCEL_BORDER value 'dashDotDot'. "#EC NOTEXT . - class-data C_BORDER_DASHED type ZEXCEL_BORDER value 'dashed'. "#EC NOTEXT . - class-data C_BORDER_DOTTED type ZEXCEL_BORDER value 'dotted'. "#EC NOTEXT . - class-data C_BORDER_DOUBLE type ZEXCEL_BORDER value 'double'. "#EC NOTEXT . - class-data C_BORDER_HAIR type ZEXCEL_BORDER value 'hair'. "#EC NOTEXT . - class-data C_BORDER_MEDIUM type ZEXCEL_BORDER value 'medium'. "#EC NOTEXT . - class-data C_BORDER_MEDIUMDASHDOT type ZEXCEL_BORDER value 'mediumDashDot'. "#EC NOTEXT . - class-data C_BORDER_MEDIUMDASHDOTDOT type ZEXCEL_BORDER value 'mediumDashDotDot'. "#EC NOTEXT . - class-data C_BORDER_MEDIUMDASHED type ZEXCEL_BORDER value 'mediumDashed'. "#EC NOTEXT . - class-data C_BORDER_SLANTDASHDOT type ZEXCEL_BORDER value 'slantDashDot'. "#EC NOTEXT . - class-data C_BORDER_THICK type ZEXCEL_BORDER value 'thick'. "#EC NOTEXT . - class-data C_BORDER_THIN type ZEXCEL_BORDER value 'thin'. "#EC NOTEXT . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_BORDER -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - METHOD constructor. - border_style = zcl_excel_style_border=>c_border_none. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_BORDERS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_BORDERS -*"* do not include other source files here!!! -public section. - - data LEFT type ref to ZCL_EXCEL_STYLE_BORDER . - data RIGHT type ref to ZCL_EXCEL_STYLE_BORDER . - data TOP type ref to ZCL_EXCEL_STYLE_BORDER . - data DOWN type ref to ZCL_EXCEL_STYLE_BORDER . - data DIAGONAL type ref to ZCL_EXCEL_STYLE_BORDER . - data ALLBORDERS type ref to ZCL_EXCEL_STYLE_BORDER . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FILL) type ZEXCEL_S_STYLE_BORDER . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_BORDERS -*"* do not include other source files here!!! -private section. - - constants C_DIAGONAL_NONE type ZEXCEL_DIAGONAL value 0. "#EC NOTEXT - constants C_DIAGONAL_UP type ZEXCEL_DIAGONAL value 1. "#EC NOTEXT - constants C_DIAGONAL_DOWN type ZEXCEL_DIAGONAL value 2. "#EC NOTEXT - constants C_DIAGONAL_BOTH type ZEXCEL_DIAGONAL value 3. "#EC NOTEXT - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - method CONSTRUCTOR. -endmethod. - - - - METHOD get_structure. - -* Check if all borders is set otherwise check single border - IF me->allborders IS BOUND. - es_fill-left_color = me->allborders->border_color. - es_fill-left_style = me->allborders->border_style. - es_fill-right_color = me->allborders->border_color. - es_fill-right_style = me->allborders->border_style. - es_fill-top_color = me->allborders->border_color. - es_fill-top_style = me->allborders->border_style. - es_fill-bottom_color = me->allborders->border_color. - es_fill-bottom_style = me->allborders->border_style. - ELSE. - IF me->left IS BOUND. - es_fill-left_color = me->left->border_color. - es_fill-left_style = me->left->border_style. - ENDIF. - IF me->right IS BOUND. - es_fill-right_color = me->right->border_color. - es_fill-right_style = me->right->border_style. - ENDIF. - IF me->top IS BOUND. - es_fill-top_color = me->top->border_color. - es_fill-top_style = me->top->border_style. - ENDIF. - IF me->down IS BOUND. - es_fill-bottom_color = me->down->border_color. - es_fill-bottom_style = me->down->border_style. - ENDIF. - ENDIF. - -* Check if diagonal is set - IF me->diagonal IS BOUND. - es_fill-diagonal_color = me->diagonal->border_color. - es_fill-diagonal_style = me->diagonal->border_style. - ENDIF. - -ENDMETHOD. "get_structure - - - - class ZCL_EXCEL_STYLE_COLOR definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_COLOR -*"* do not include other source files here!!! -public section. - - class-data C_BLACK type ZEXCEL_STYLE_COLOR_ARGB value 'FF000000'. "#EC NOTEXT . - class-data C_BLUE type ZEXCEL_STYLE_COLOR_ARGB value 'FF0000FF'. "#EC NOTEXT . - class-data C_DARKBLUE type ZEXCEL_STYLE_COLOR_ARGB value 'FF000080'. "#EC NOTEXT . - class-data C_DARKGREEN type ZEXCEL_STYLE_COLOR_ARGB value 'FF008000'. "#EC NOTEXT . - class-data C_DARKRED type ZEXCEL_STYLE_COLOR_ARGB value 'FF800000'. "#EC NOTEXT . - class-data C_DARKYELLOW type ZEXCEL_STYLE_COLOR_ARGB value 'FF808000'. "#EC NOTEXT . - class-data C_GRAY type ZEXCEL_STYLE_COLOR_ARGB value 'FFCCCCCC'. "#EC NOTEXT . - class-data C_GREEN type ZEXCEL_STYLE_COLOR_ARGB value 'FF00FF00'. "#EC NOTEXT . - class-data C_RED type ZEXCEL_STYLE_COLOR_ARGB value 'FFFF0000'. "#EC NOTEXT . - class-data C_WHITE type ZEXCEL_STYLE_COLOR_ARGB value 'FFFFFFFF'. "#EC NOTEXT . - class-data C_YELLOW type ZEXCEL_STYLE_COLOR_ARGB value 'FFFFFF00'. "#EC NOTEXT . - - methods CONSTRUCTOR . - class-methods CREATE_NEW_ARGB - importing - !IP_RED type ZEXCEL_STYLE_COLOR_COMPONENT - !IP_GREEN type ZEXCEL_STYLE_COLOR_COMPONENT - !IP_BLU type ZEXCEL_STYLE_COLOR_COMPONENT - returning - value(EP_COLOR_ARGB) type ZEXCEL_STYLE_COLOR_ARGB . - *"* protected components of class ZCL_EXCEL_STYLE_COLOR -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_COLOR -*"* do not include other source files here!!! -private section. - - class-data C_ALPHA type CHAR2 value 'FF'. "#EC NOTEXT . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - method CONSTRUCTOR. - - -endmethod. - - - - - - - METHOD create_new_argb. - - - CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_CONDITIONAL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_CONDITIONAL -*"* do not include other source files here!!! -public section. - - class-data C_ICONSET_3ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '3Arrows'. "#EC NOTEXT . - class-data C_ICONSET_3ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '3ArrowsGray'. "#EC NOTEXT . - class-data C_ICONSET_3FLAGS type ZEXCEL_CONDITION_RULE_ICONSET value '3Flags'. "#EC NOTEXT . - class-data C_ICONSET_3SIGNS type ZEXCEL_CONDITION_RULE_ICONSET value '3Signs'. "#EC NOTEXT . - class-data C_ICONSET_3SYMBOLS type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols'. "#EC NOTEXT . - class-data C_ICONSET_3SYMBOLS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols2'. "#EC NOTEXT . - class-data C_ICONSET_3TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value ''. "#EC NOTEXT . - class-data C_ICONSET_3TRAFFICLIGHTS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3TrafficLights2'. "#EC NOTEXT . - class-data C_ICONSET_4ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '4Arrows'. "#EC NOTEXT . - class-data C_ICONSET_4ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '4ArrowsGray'. "#EC NOTEXT . - class-data C_ICONSET_4RATING type ZEXCEL_CONDITION_RULE_ICONSET value '4Rating'. "#EC NOTEXT . - class-data C_ICONSET_4REDTOBLACK type ZEXCEL_CONDITION_RULE_ICONSET value '4RedToBlack'. "#EC NOTEXT . - class-data C_ICONSET_4TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value '4TrafficLights'. "#EC NOTEXT . - class-data C_ICONSET_5ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '5Arrows'. "#EC NOTEXT . - class-data C_ICONSET_5ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '5ArrowsGray'. "#EC NOTEXT . - class-data C_ICONSET_5QUARTERS type ZEXCEL_CONDITION_RULE_ICONSET value '5Quarters'. "#EC NOTEXT . - class-data C_ICONSET_5RATING type ZEXCEL_CONDITION_RULE_ICONSET value '5Rating'. "#EC NOTEXT . - class-data C_OPERATOR_BEGINSWITH type ZEXCEL_CONDITION_OPERATOR value 'beginsWith'. "#EC NOTEXT . - class-data C_OPERATOR_BETWEEN type ZEXCEL_CONDITION_OPERATOR value 'between'. "#EC NOTEXT . - class-data C_OPERATOR_CONTAINSTEXT type ZEXCEL_CONDITION_OPERATOR value 'containsText'. "#EC NOTEXT . - class-data C_OPERATOR_ENDSWITH type ZEXCEL_CONDITION_OPERATOR value 'endsWith'. "#EC NOTEXT . - class-data C_OPERATOR_EQUAL type ZEXCEL_CONDITION_OPERATOR value 'equal'. "#EC NOTEXT . - class-data C_OPERATOR_GREATERTHAN type ZEXCEL_CONDITION_OPERATOR value 'greaterThan'. "#EC NOTEXT . - class-data C_OPERATOR_GREATERTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'greaterThanOrEqual'. "#EC NOTEXT . - class-data C_OPERATOR_LESSTHAN type ZEXCEL_CONDITION_OPERATOR value 'lessThan'. "#EC NOTEXT . - class-data C_OPERATOR_LESSTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'lessThanOrEqual'. "#EC NOTEXT . - class-data C_OPERATOR_NONE type ZEXCEL_CONDITION_OPERATOR value ''. "#EC NOTEXT . - class-data C_OPERATOR_NOTCONTAINS type ZEXCEL_CONDITION_OPERATOR value 'notContains'. "#EC NOTEXT . - class-data C_OPERATOR_NOTEQUAL type ZEXCEL_CONDITION_OPERATOR value 'notEqual'. "#EC NOTEXT . - class-data C_RULE_CELLIS type ZEXCEL_CONDITION_RULE value 'cellIs'. "#EC NOTEXT . - class-data C_RULE_CONTAINSTEXT type ZEXCEL_CONDITION_RULE value 'containsText'. "#EC NOTEXT . - class-data C_RULE_EXPRESSION type ZEXCEL_CONDITION_RULE value 'expression'. "#EC NOTEXT . - class-data C_RULE_ICONSET type ZEXCEL_CONDITION_RULE value 'iconSet'. "#EC NOTEXT . - class-data C_RULE_NONE type ZEXCEL_CONDITION_RULE value 'none'. "#EC NOTEXT . - data FORMULA type ZEXCEL_STYLE_FORMULA . - data ICONSET type ZEXCEL_CONDITION_RULE_ICONSET . - data OPERATOR type ZEXCEL_CONDITION_OPERATOR . - data PRIORITY type ZEXCEL_STYLE_PRIORITY value 1. "#EC NOTEXT . - data RULE type ZEXCEL_CONDITION_RULE . - - methods CONSTRUCTOR . - methods GET_DIMENSION_RANGE - returning - value(EP_DIMENSION_RANGE) type STRING . - methods SET_RANGE - importing - !IP_START_ROW type ZEXCEL_CELL_ROW - !IP_START_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_STOP_ROW type ZEXCEL_CELL_ROW - !IP_STOP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_CONDITIONAL -*"* do not include other source files here!!! -private section. - - data START_CELL type ZEXCEL_S_CELL_DATA . - data STOP_CELL type ZEXCEL_S_CELL_DATA . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - rule = me->c_rule_none. - operator = me->c_operator_none. -* inizialize dimension range - stop_cell-cell_row = 1. - stop_cell-cell_column = 1. - start_cell-cell_row = 1. - start_cell-cell_column = 1. -ENDMETHOD. - - - - METHOD get_dimension_range. - IF stop_cell EQ start_cell. "only one cell - ep_dimension_range = start_cell-cell_coords. - ELSE. - CONCATENATE start_cell-cell_coords ':' stop_cell-cell_coords INTO ep_dimension_range. - ENDIF. -ENDMETHOD. - - - - - - - METHOD set_range. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string. - - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - stop_cell-cell_row = 1. - stop_cell-cell_column = lv_column. - lv_row_alpha = ip_stop_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_stop_column lv_row_alpha INTO stop_cell-cell_coords. - - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - start_cell-cell_row = 1. - start_cell-cell_column = lv_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_start_column lv_row_alpha INTO start_cell-cell_coords. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_FILL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_FILL -*"* do not include other source files here!!! -public section. - - class-data C_FILL_NONE type ZEXCEL_FILL_TYPE value 'none'. "#EC NOTEXT . - class-data C_FILL_SOLID type ZEXCEL_FILL_TYPE value 'solid'. "#EC NOTEXT . - class-data C_FILL_GRADIENT_LINEAR type ZEXCEL_FILL_TYPE value 'linear'. "#EC NOTEXT . - class-data C_FILL_GRADIENT_PATH type ZEXCEL_FILL_TYPE value 'path'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKDOWN type ZEXCEL_FILL_TYPE value 'darkDown'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKGRAY type ZEXCEL_FILL_TYPE value 'darkGray'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKGRID type ZEXCEL_FILL_TYPE value 'darkGrid'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKHORIZONTAL type ZEXCEL_FILL_TYPE value 'darkHorizontal'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKTRELLIS type ZEXCEL_FILL_TYPE value 'darkTrellis'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKUP type ZEXCEL_FILL_TYPE value 'darkUp'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKVERTICAL type ZEXCEL_FILL_TYPE value 'darkVertical'. "#EC NOTEXT . - class-data C_FILL_PATTERN_GRAY0625 type ZEXCEL_FILL_TYPE value 'gray0625'. "#EC NOTEXT . - class-data C_FILL_PATTERN_GRAY125 type ZEXCEL_FILL_TYPE value 'gray125'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTDOWN type ZEXCEL_FILL_TYPE value 'lightDown'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTGRAY type ZEXCEL_FILL_TYPE value 'lightGray'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTGRID type ZEXCEL_FILL_TYPE value 'lightGrid'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTHORIZONTAL type ZEXCEL_FILL_TYPE value 'lightHorizontal'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTTRELLIS type ZEXCEL_FILL_TYPE value 'lightTrellis'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTUP type ZEXCEL_FILL_TYPE value 'lightUp'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTVERTICAL type ZEXCEL_FILL_TYPE value 'lightVertical'. "#EC NOTEXT . - class-data C_FILL_PATTERN_MEDIUMGRAY type ZEXCEL_FILL_TYPE value 'mediumGray'. "#EC NOTEXT . - data FILLTYPE type ZEXCEL_FILL_TYPE . - data ROTATION type ZEXCEL_ROTATION . - data FGCOLOR type ZEXCEL_STYLE_COLOR_ARGB . - data BGCOLOR type ZEXCEL_STYLE_COLOR_ARGB value '64'. "#EC NOTEXT . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FILL) type ZEXCEL_S_STYLE_FILL . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_FILL -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - filltype = zcl_excel_style_fill=>c_fill_none. - rotation = 0. -ENDMETHOD. - - - - METHOD get_structure. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgColor = me->fgColor. - es_fill-bgColor = me->bgColor. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_FONT definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data BOLD type FLAG . - data COLOR type ZEXCEL_STYLE_COLOR_ARGB . - class-data C_SCHEME_MAJOR type ZEXCEL_STYLE_FONT_SCHEME value 'major'. "#EC NOTEXT . - class-data C_SCHEME_MINOR type ZEXCEL_STYLE_FONT_SCHEME value 'minor'. "#EC NOTEXT . - class-data C_UNDERLINE_DOUBLE type CHAR20 value 'double'. "#EC NOTEXT . - class-data C_UNDERLINE_DOUBLEACCOUNTING type CHAR20 value 'doubleAccounting'. "#EC NOTEXT . - class-data C_UNDERLINE_NONE type CHAR20 value 'none'. "#EC NOTEXT . - class-data C_UNDERLINE_SINGLE type CHAR20 value 'single'. "#EC NOTEXT . - class-data C_UNDERLINE_SINGLEACCOUNTING type CHAR20 value 'singleAccounting'. "#EC NOTEXT . - data FAMILY type INT1 value 2. "#EC NOTEXT . - data ITALIC type FLAG . - data NAME type CHAR255 value 'Calibri'. "#EC NOTEXT . - data SCHEME type ZEXCEL_STYLE_FONT_SCHEME . - data SIZE type INT1 value 11. "#EC NOTEXT . - data STRIKETHROUGH type FLAG . - data UNDERLINE type FLAG . - data UNDERLINE_MODE type CHAR20 . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FONT) type ZEXCEL_S_STYLE_FONT . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - METHOD constructor. - - - me->color = zcl_excel_style_color=>c_black. - me->scheme = zcl_excel_style_font=>c_scheme_minor. - me->underline_mode = zcl_excel_style_font=>c_underline_single. -ENDMETHOD. - - - - METHOD get_structure. - - - es_font-bold = me->bold. - es_font-italic = me->italic. - es_font-underline = me->underline. - es_font-underline_mode = me->underline_mode. - es_font-strikethrough = me->strikethrough. - es_font-size = me->size. - es_font-color = me->color. - es_font-name = me->name. - es_font-family = me->family. - es_font-scheme = me->scheme. - -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_NUMBER_FORMAT definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_NUMBER_FORMAT -*"* do not include other source files here!!! -public section. - - class-data C_FORMAT_NUMBER type ZEXCEL_NUMBER_FORMAT value '0'. "#EC NOTEXT . - class-data C_FORMAT_NUMBER_00 type ZEXCEL_NUMBER_FORMAT value '0.00'. "#EC NOTEXT . - class-data C_FORMAT_NUMBER_COMMA_SEP1 type ZEXCEL_NUMBER_FORMAT value '#,##0.00'. "#EC NOTEXT . - class-data C_FORMAT_NUMBER_COMMA_SEP2 type ZEXCEL_NUMBER_FORMAT value '#,##0.00_-'. "#EC NOTEXT . - class-data C_FORMAT_PERCENTAGE type ZEXCEL_NUMBER_FORMAT value '0%'. "#EC NOTEXT . - class-data C_FORMAT_PERCENTAGE_00 type ZEXCEL_NUMBER_FORMAT value '0.00%'. "#EC NOTEXT . - class-data C_FORMAT_DATE_YYYYMMDD2 type ZEXCEL_NUMBER_FORMAT value 'yyyy-mm-dd'. "#EC NOTEXT . - class-data C_FORMAT_DATE_YYYYMMDD type ZEXCEL_NUMBER_FORMAT value 'yy-mm-dd'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DDMMYYYY type ZEXCEL_NUMBER_FORMAT value 'dd/mm/yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DMYSLASH type ZEXCEL_NUMBER_FORMAT value 'd/m/y'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DMYMINUS type ZEXCEL_NUMBER_FORMAT value 'd-m-y'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DMMINUS type ZEXCEL_NUMBER_FORMAT value 'd-m'. "#EC NOTEXT . - class-data C_FORMAT_DATE_MYMINUS type ZEXCEL_NUMBER_FORMAT value 'm-y'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX14 type ZEXCEL_NUMBER_FORMAT value 'mm-dd-yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX15 type ZEXCEL_NUMBER_FORMAT value 'd-mmm-yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX16 type ZEXCEL_NUMBER_FORMAT value 'd-mmm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX17 type ZEXCEL_NUMBER_FORMAT value 'mmm-yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX22 type ZEXCEL_NUMBER_FORMAT value 'm/d/yy h:mm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DATETIME type ZEXCEL_NUMBER_FORMAT value 'd/m/y h:mm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME1 type ZEXCEL_NUMBER_FORMAT value 'h:mm AM/PM'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME2 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss AM/PM'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME3 type ZEXCEL_NUMBER_FORMAT value 'h:mm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME4 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME5 type ZEXCEL_NUMBER_FORMAT value 'mm:ss'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME6 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME7 type ZEXCEL_NUMBER_FORMAT value 'i:s.S'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME8 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss@'. "#EC NOTEXT . - class-data C_FORMAT_DATE_YYYYMMDDSLASH type ZEXCEL_NUMBER_FORMAT value 'yy/mm/dd@'. "#EC NOTEXT . - class-data C_FORMAT_CURRENCY_USD_SIMPLE type ZEXCEL_NUMBER_FORMAT value '"$"#,##0.00_-'. "#EC NOTEXT . - class-data C_FORMAT_CURRENCY_USD type ZEXCEL_NUMBER_FORMAT value '$#,##0_-'. "#EC NOTEXT . - class-data C_FORMAT_CURRENCY_EUR_SIMPLE type ZEXCEL_NUMBER_FORMAT value '[$EUR ]#,##0.00_-'. "#EC NOTEXT . - data FORMAT_CODE type ZEXCEL_NUMBER_FORMAT . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(EP_NUMBER_FORMAT) type ZEXCEL_NUMBER_FORMAT . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_NUMBER_FORMAT -*"* do not include other source files here!!! -private section. - - class-data C_FORMAT_GENERAL type ZEXCEL_NUMBER_FORMAT value ''. "#EC NOTEXT . - class-data C_FORMAT_TEXT type ZEXCEL_NUMBER_FORMAT value '@'. "#EC NOTEXT . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - format_code = me->c_format_general. -ENDMETHOD. - - - - METHOD get_structure. - ep_number_format = me->format_code. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE_PROTECTION definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_PROTECTION -*"* do not include other source files here!!! -public section. - - constants C_PROTECTION_INHERIT type ZEXCEL_PROTECTION value 'inherit'. "#EC NOTEXT - constants C_PROTECTION_PROTECTED type ZEXCEL_PROTECTION value 'protected'. "#EC NOTEXT - constants C_PROTECTION_UNPROTECTED type ZEXCEL_PROTECTION value 'unprotected'. "#EC NOTEXT - data LOCKED type ZEXCEL_PROTECTION . - data HIDDEN type ZEXCEL_PROTECTION . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_PROTECTION -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - METHOD constructor. - locked = me->c_protection_inherit. - hidden = me->c_protection_inherit. -ENDMETHOD. - - - - class ZCL_EXCEL_WORKSHEET definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_WORKSHEET -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - class-data C_BREAK_COLUMN type ZEXCEL_BREAK value 2. "#EC NOTEXT . - class-data C_BREAK_NONE type ZEXCEL_BREAK value 0. "#EC NOTEXT . - class-data C_BREAK_ROW type ZEXCEL_BREAK value 1. "#EC NOTEXT . - class-data C_SHEET_STATE_HIDDEN type ZEXCEL_SHEET_STATE value 'hidden'. "#EC NOTEXT . - class-data C_SHEET_STATE_VERYHIDDEN type ZEXCEL_SHEET_STATE value 'veryHidden'. "#EC NOTEXT . - class-data C_SHEET_STATE_VISIBLE type ZEXCEL_SHEET_STATE value 'visible'. "#EC NOTEXT . - data DEFAULTROWHEIGHT type INT1 value 15. "#EC NOTEXT . - data SHEET_CONTENT type ZEXCEL_T_CELL_DATA . - data SHEET_SETUP type ref to ZCL_EXCEL_SHEET_SETUP . - data SHEET_STATE type ZEXCEL_SHEET_STATE . - data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . - - methods CONSTRUCTOR - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional . - methods GET_ACTIVE_CELL - returning - value(EP_ACTIVE_CELL) type STRING . - methods GET_CELL - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_ROW type ZEXCEL_CELL_ROW - exporting - !EP_VALUE type ZEXCEL_CELL_VALUE - !EP_RC type SYSUBRC . - methods GET_DIMENSION_RANGE - returning - value(EP_DIMENSION_RANGE) type STRING . - methods GET_GUID - returning - value(EP_GUID) type GUID_16 . - methods SET_CELL - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_ROW type ZEXCEL_CELL_ROW - !IP_VALUE type ZEXCEL_CELL_VALUE - !IP_FORMULA type ZEXCEL_CELL_FORMULA optional - !IP_STYLE type ZEXCEL_CELL_STYLE optional . - 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 optional - !IP_TOP_LEFT_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA default 'B' - !IP_TOP_LEFT_ROW type ZEXCEL_CELL_ROW default 3 . - methods ADD_NEW_CONDITIONAL_STYLE - returning - value(EO_CONDITIONAL_STYLE) type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods GET_COND_STYLES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - *"* protected components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_WORKSHEET -*"* do not include other source files here!!! -private section. - - data ACTIVE_CELL type ZEXCEL_S_CELL_DATA . - data CONDITIONAL_STYLES type ref to ZCL_EXCEL_STYLES_CONDITIONAL . - data GUID type GUID_16 . - data LOWER_CELL type ZEXCEL_S_CELL_DATA . - data UPPER_CELL type ZEXCEL_S_CELL_DATA . - - methods UPDATE_DIMENSION_RANGE . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - METHOD add_new_conditional_style. - - - CREATE OBJECT eo_conditional_style. - conditional_styles->add( eo_conditional_style ). -ENDMETHOD. - - - - METHOD constructor. - - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - - sheet_state = me->c_sheet_state_visible. - - CREATE OBJECT sheet_setup. - CREATE OBJECT conditional_styles. - -* 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. - - - - METHOD get_active_cell. - - - DATA: lv_active_column TYPE zexcel_cell_column_alpha, - lv_active_row TYPE string. - - lv_active_column = zcl_excel_common=>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. - - - - - - - METHOD get_cell. - - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = zcl_excel_common=>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. -ENDMETHOD. - - - - method GET_COND_STYLES_ITERATOR. - - - eo_iterator = me->conditional_styles->get_iterator( ). -endmethod. - - - - METHOD get_dimension_range. - - - me->update_dimension_range( ). - IF upper_cell EQ lower_cell. "only one cell - ep_dimension_range = upper_cell-cell_coords. - ELSE. - CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. - ENDIF. - -ENDMETHOD. - - - - method GET_GUID. - - - ep_guid = me->guid. - -endmethod. - - - - - - - - METHOD set_cell. - - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data, - lv_row_alpha TYPE string. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = ZCL_EXCEL_COMMON=>convert_column2int( ip_column ). - - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row - cell_column = lv_column. - - IF sy-subrc EQ 0. - <fs_sheet_content>-cell_value = ip_value. - <fs_sheet_content>-cell_formula = ip_formula. - <fs_sheet_content>-cell_style = ip_style. - ELSE. - ls_sheet_content-cell_row = ip_row. - ls_sheet_content-cell_column = lv_column. - ls_sheet_content-cell_value = ip_value. - ls_sheet_content-cell_formula = ip_formula. - ls_sheet_content-cell_style = ip_style. - lv_row_alpha = ip_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_column lv_row_alpha INTO ls_sheet_content-cell_coords. - APPEND ls_sheet_content TO sheet_content. - SORT sheet_content BY cell_row cell_column. -* me->update_dimension_range( ). - - ENDIF. - -ENDMETHOD. - - - - - - - - - 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 '2', - lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - 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: <fs_table_line> TYPE ANY, - <fs_fldval> TYPE ANY, - <fs_dfies> TYPE dfies, - <fs_cell_value> TYPE zexcel_cell_value. - - lv_column_int = zcl_excel_common=>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=>describe_by_data_ref( lr_data ). - - ls_header = lo_tabdescr->get_ddic_header( ). - - lt_dfies = lo_tabdescr->get_ddic_field_list( ). - -* It is better to loop column by column - LOOP AT lt_dfies ASSIGNING <fs_dfies>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - " First of all write column header - lv_cell_value = <fs_dfies>-scrtext_m. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_cell_value - ip_style = ip_hdr_style ). - ADD 1 TO lv_row_int. - LOOP AT ip_table ASSIGNING <fs_table_line>. - ASSIGN COMPONENT <fs_dfies>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - MOVE <fs_fldval> TO lv_cell_value. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_cell_value - ip_style = ip_body_style ). - ADD 1 TO lv_row_int. - ENDLOOP. - lv_row_int = ip_top_left_row. - ADD 1 TO lv_column_int. - ENDLOOP. - -ENDMETHOD. - - - 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. - -* update dimension range - lt_sheet_content = sheet_content. - "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=>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. - - "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=>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. - - - - class ZCL_EXCEL_WORKSHEETS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -public section. - - data ACTIVE_WORKSHEET type ZEXCEL_ACTIVE_WORKSHEET value 1. "#EC NOTEXT . - data NAME type ZEXCEL_WORKSHEETS_NAME value 'Worksheets'. "#EC NOTEXT . - - methods ADD - importing - !IP_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type ZEXCEL_ACTIVE_WORKSHEET - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -private section. - - data WORKSHEETS type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - METHOD ADD. - - - worksheets->add( ip_worksheet ). -ENDMETHOD. - - - METHOD clear. - - - worksheets->clear( ). -ENDMETHOD. - - - METHOD constructor. - - - CREATE OBJECT worksheets. - -ENDMETHOD. - - - - - METHOD get. - - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_worksheet ?= worksheets->if_object_collection~get( lv_index ). -ENDMETHOD. - - - - METHOD get_iterator. - - - eo_iterator ?= worksheets->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD is_empty. - - - is_empty = worksheets->if_object_collection~is_empty( ). -ENDMETHOD. - - - - METHOD remove. - - - worksheets->remove( ip_worksheet ). -ENDMETHOD. - - - - METHOD size. - - - ep_size = worksheets->if_object_collection~size( ). -ENDMETHOD. - - - - class ZCL_EXCEL_WRITER_2007 definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_WRITER_2007 -*"* do not include other source files here!!! -public section. - - methods CONSTRUCTOR - importing - !IO_EXCEL type ref to ZCL_EXCEL . - methods CREATE - returning - value(EP_EXCEL) type XSTRING . - *"* protected components of class ZCL_EXCEL_WRITER_2007 -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_WRITER_2007 -*"* do not include other source files here!!! -private section. - - constants C_CONTENT_TYPES type STRING value '[Content_Types].xml'. "#EC NOTEXT - constants C_DOCPROPS_APP type STRING value 'docProps/app.xml'. "#EC NOTEXT - constants C_DOCPROPS_CORE type STRING value 'docProps/core.xml'. "#EC NOTEXT - constants C_RELATIONSHIPS type STRING value '_rels/.rels'. "#EC NOTEXT - constants C_XL_CALCCHAIN type STRING value 'xl/calcChain.xml'. "#EC NOTEXT - constants C_XL_RELATIONSHIPS type STRING value 'xl/_rels/workbook.xml.rels'. "#EC NOTEXT - constants C_XL_SHAREDSTRINGS type STRING value 'xl/sharedStrings.xml'. "#EC NOTEXT - constants C_XL_SHEET type STRING value 'xl/worksheets/sheet#.xml'. "#EC NOTEXT - constants C_XL_SHEET_RELS type STRING value 'xl/worksheets/_rels/sheet#.xml.rels'. "#EC NOTEXT - constants C_XL_STYLES type STRING value 'xl/styles.xml'. "#EC NOTEXT - constants C_XL_THEME type STRING value 'xl/theme/theme1.xml'. "#EC NOTEXT - constants C_XL_WORKBOOK type STRING value 'xl/workbook.xml'. "#EC NOTEXT - data EXCEL type ref to ZCL_EXCEL . - data SHARED_STRINGS type ZEXCEL_T_SHARED_STRING . - data STYLES_MAPPING type ZEXCEL_T_STYLES_MAPPING . - - methods CREATE_CONTENT_TYPES - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_DOCPROPS_APP - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_DOCPROPS_CORE - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_RELATIONSHIPS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_CALCCHAIN - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_RELATIONSHIPS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHAREDSTRINGS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHEET - importing - !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET - !IV_ACTIVE type FLAG default '' - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHEET_RELS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_STYLES - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_THEME - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_WORKBOOK - returning - value(EP_CONTENT) type XSTRING . - methods FLAG2BOOL - importing - !IP_FLAG type FLAG - returning - value(EP_BOOLEAN) type CHAR5 . - methods GET_SHARED_STRING_INDEX - importing - !IP_CELL_VALUE type ZEXCEL_CELL_VALUE - returning - value(EP_INDEX) type INT4 . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - METHOD constructor. - - - me->excel = io_excel. -ENDMETHOD. - - - - METHOD create. - - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_syindex TYPE string. - - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sharedStrings.xml to zip - lv_content = me->create_xl_calcchain( ). - lo_zip->add( name = me->c_xl_calcchain - content = lv_content ). - -********************************************************************** -* STEP 11: Add sheet#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_true. - ENDIF. - - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 11: Create the final zip - ep_excel = lo_zip->save( ). - -ENDMETHOD. - - - - METHOD create_content_types. - - -** Constant node name - DATA: lc_xml_node_types TYPE string VALUE 'Types', - lc_xml_node_override TYPE string VALUE 'Override', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - " Node namespace - lc_xml_node_types_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/content-types', - " Node extension - lc_xml_node_rels_ext TYPE string VALUE 'rels', - lc_xml_node_xml_ext TYPE string VALUE 'xml', - " Node partnumber - lc_xml_node_theme_pn TYPE string VALUE '/xl/theme/theme1.xml', - lc_xml_node_styles_pn TYPE string VALUE '/xl/styles.xml', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_props_pn TYPE string VALUE '/docProps/app.xml', - lc_xml_node_worksheet_pn TYPE string VALUE '/xl/worksheets/sheet#.xml', - lc_xml_node_strings_pn TYPE string VALUE '/xl/sharedStrings.xml', - lc_xml_node_core_pn TYPE string VALUE '/docProps/core.xml', - " Node contentType - lc_xml_node_theme_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.theme+xml', - lc_xml_node_styles_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', - lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', - lc_xml_node_rels_ct TYPE string VALUE 'application/vnd.openxmlformats-package.relationships+xml', - lc_xml_node_xml_ct TYPE string VALUE 'application/xml', - lc_xml_node_props_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.extended-properties+xml', - lc_xml_node_worksheet_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', - lc_xml_node_strings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', - lc_xml_node_core_ct TYPE string VALUE 'application/vnd.openxmlformats-package.core-properties+xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_worksheets_num TYPE i, - lv_worksheets_numc TYPE numc3, - lv_xml_node_worksheet_pn TYPE string, - lv_xml_size TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node types - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_types - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_types_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_theme_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_theme_ct ). - lo_element_root->append_child( lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_styles_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_styles_ct ). - lo_element_root->append_child( lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_rels_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_rels_ct ). - lo_element_root->append_child( lo_element ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_xml_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_xml_ct ). - lo_element_root->append_child( lo_element ). - - " Workbook node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_workb_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - lo_element_root->append_child( lo_element ). - - " Properties node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_props_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_props_ct ). - lo_element_root->append_child( lo_element ). - - " Worksheet node - lv_worksheets_num = excel->get_worksheets_size( ). - DO lv_worksheets_num TIMES. - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - - MOVE sy-index TO lv_worksheets_numc. - SHIFT lv_worksheets_numc LEFT DELETING LEADING '0'. - lv_xml_node_worksheet_pn = lc_xml_node_worksheet_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_worksheet_pn WITH lv_worksheets_numc. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_xml_node_worksheet_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lv_xml_node_worksheet_pn ). - lo_element_root->append_child( lo_element ). - ENDDO. - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_strings_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_strings_ct ). - lo_element_root->append_child( lo_element ). - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_core_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_core_ct ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_docprops_app. - - -** Constant node name - DATA: lc_xml_node_properties TYPE string VALUE 'Properties', - lc_xml_node_application TYPE string VALUE 'Application', - lc_xml_node_docsecurity TYPE string VALUE 'DocSecurity', - lc_xml_node_scalecrop TYPE string VALUE 'ScaleCrop', - lc_xml_node_headingpairs TYPE string VALUE 'HeadingPairs', - lc_xml_node_vector TYPE string VALUE 'vector', - lc_xml_node_variant TYPE string VALUE 'variant', - lc_xml_node_lpstr TYPE string VALUE 'lpstr', - lc_xml_node_i4 TYPE string VALUE 'i4', - lc_xml_node_titlesofparts TYPE string VALUE 'TitlesOfParts', - lc_xml_node_company TYPE string VALUE 'Company', - lc_xml_node_linksuptodate TYPE string VALUE 'LinksUpToDate', - lc_xml_node_shareddoc TYPE string VALUE 'SharedDoc', - lc_xml_node_hyperlinkschanged TYPE string VALUE 'HyperlinksChanged', - lc_xml_node_appversion TYPE string VALUE 'AppVersion', - " Namespace prefix - lc_vt_ns TYPE string VALUE 'vt', - lc_xml_node_props_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', - lc_xml_node_props_vt_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - " Node attributes - lc_xml_attr_size TYPE string VALUE 'size', - lc_xml_attr_basetype TYPE string VALUE 'baseType'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element_vector TYPE REF TO if_ixml_element, - lo_sub_element_variant TYPE REF TO if_ixml_element, - lo_sub_element_lpstr TYPE REF TO if_ixml_element, - lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node properties - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_properties - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_props_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:vt' - value = lc_xml_node_props_vt_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Application - lo_element = lo_document->create_simple_element( name = lc_xml_node_application - parent = lo_document ). - lv_value = excel->properties->application. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " DocSecurity - lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity - parent = lo_document ). - lv_value = excel->properties->docsecurity. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " ScaleCrop - lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->scalecrop ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " HeadingPairs - lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = '2' ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_variant ). - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( lv_value ). - lo_sub_element_variant->append_child( lo_sub_element_lpstr ). " lpstr node - - lo_sub_element_vector->append_child( lo_sub_element_variant ). " variant node - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** i4 node - lo_sub_element_i4 = lo_document->create_simple_element_ns( name = lc_xml_node_i4 - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( lv_value ). - lo_sub_element_variant->append_child( lo_sub_element_i4 ). " lpstr node - - lo_sub_element_vector->append_child( lo_sub_element_variant ). " variant node - - lo_element->append_child( lo_sub_element_vector ). " vector node - - lo_element_root->append_child( lo_element ). " HeadingPairs - - - " TitlesOfParts - lo_element = lo_document->create_simple_element( name = lc_xml_node_titlesofparts - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = lv_value ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_lpstr ). - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " ** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->title. - lo_sub_element_lpstr->set_value( lv_value ). - lo_sub_element_vector->append_child( lo_sub_element_lpstr ). " lpstr node - ENDWHILE. - - lo_element->append_child( lo_sub_element_vector ). " vector node - - lo_element_root->append_child( lo_element ). " TitlesOfParts - - - - " Company - lo_element = lo_document->create_simple_element( name = lc_xml_node_company - parent = lo_document ). - lv_value = excel->properties->company. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " LinksUpToDate - lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->linksuptodate ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " SharedDoc - lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->shareddoc ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " HyperlinksChanged - lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->hyperlinkschanged ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " AppVersion - lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion - parent = lo_document ). - lv_value = excel->properties->appversion. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_docprops_core. - - -** Constant node name - DATA: lc_xml_node_coreproperties TYPE string VALUE 'coreProperties', - lc_xml_node_creator TYPE string VALUE 'creator', - lc_xml_node_lastmodifiedby TYPE string VALUE 'lastModifiedBy', - lc_xml_node_created TYPE string VALUE 'created', - lc_xml_node_modified TYPE string VALUE 'modified', - " Node attributes - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_target TYPE string VALUE 'dcterms:W3CDTF', - " Node namespace - lc_cp_ns TYPE string VALUE 'cp', - lc_dc_ns TYPE string VALUE 'dc', - lc_dcterms_ns TYPE string VALUE 'dcterms', - lc_dcmitype_ns TYPE string VALUE 'dcmitype', - lc_xsi_ns TYPE string VALUE 'xsi', - lc_xml_node_cp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', - lc_xml_node_dc_ns TYPE string VALUE 'http://purl.org/dc/elements/1.1/', - lc_xml_node_dcterms_ns TYPE string VALUE 'http://purl.org/dc/terms/', - lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', - lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node coreProperties - lo_element_root = lo_document->create_simple_element_ns( name = lc_xml_node_coreproperties - prefix = lc_cp_ns - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:cp' - value = lc_xml_node_cp_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dc' - value = lc_xml_node_dc_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcterms' - value = lc_xml_node_dcterms_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcmitype' - value = lc_xml_node_dcmitype_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:xsi' - value = lc_xml_node_xsi_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Creator node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_creator - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->properties->creator. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " lastModifiedBy node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby - prefix = lc_cp_ns - parent = lo_document ). - lv_value = excel->properties->lastmodifiedby. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " Created node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - lv_value = excel->properties->created. - lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " Modified node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - lv_value = excel->properties->modified. - lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD CREATE_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_rId1_id TYPE string VALUE 'rId1', - lc_xml_node_rId2_id TYPE string VALUE 'rId2', - lc_xml_node_rId3_id TYPE string VALUE 'rId3', - " Node type - lc_xml_node_rId1_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - lc_xml_node_rId2_tp TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lc_xml_node_rId3_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - " Node target - lc_xml_node_rId1_tg TYPE string VALUE 'xl/workbook.xml', - lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', - lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId3_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId3_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId2_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId2_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId1_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId1_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_calcchain. - - -** Constant node name - DATA: lc_xml_node_calcchain TYPE string VALUE 'calcChain', - lc_xml_node_c TYPE string VALUE 'c', - " Node attributes - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_i TYPE string VALUE 'i', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string, - lv_value_i TYPE string, - lv_sheets_count TYPE i. - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data. - -********************************************************************** -* STEP 1: Create xl/calcChain.xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node calcChain - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_calcchain - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_sheets_count. - MOVE lv_sheets_count TO lv_value_i. - SHIFT lv_value_i RIGHT DELETING TRAILING space. - SHIFT lv_value_i LEFT DELETING LEADING space. - LOOP AT lo_worksheet->sheet_content ASSIGNING <ls_sheet_content> WHERE cell_formula IS NOT INITIAL. - " formula chain node - lo_element = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_i - value = lv_value_i ). - lo_element_root->append_child( lo_element ). - ENDLOOP. - ENDWHILE. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_relationships. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_sheet_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lc_xml_node_rid_theme_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - lc_xml_node_rid_styles_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lc_xml_node_rid_shared_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - lc_xml_node_rid_calcchain_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain', - " Node target - lc_xml_node_ridx_tg TYPE string VALUE 'worksheets/sheet#.xml', - lc_xml_node_rid_shared_tg TYPE string VALUE 'sharedStrings.xml', - lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', - lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml', - lc_xml_node_rid_calcchain_tg TYPE string VALUE 'calcChain.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 2. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_styles_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( lo_element ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size - 1. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_theme_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( lo_element ). - - lv_size = excel->get_worksheets_size( ). - - DO lv_size TIMES. - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - lv_xml_node_ridx_tg = lc_xml_node_ridx_tg. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_tg WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_sheet_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( lo_element ). - ENDDO. - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 3 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_shared_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( lo_element ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 1 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_calcchain_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_calcchain_tg ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_sharedstrings. - - -** Constant node name - DATA: lc_xml_node_sst TYPE string VALUE 'sst', - lc_xml_node_si TYPE string VALUE 'si', - lc_xml_node_t TYPE string VALUE 't', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_value TYPE string, - lv_count_str TYPE string, - lv_uniquecount_str TYPE string, - lv_sytabix TYPE sytabix, - lv_count TYPE i, - lv_uniquecount TYPE i. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_sheet_string> TYPE zexcel_s_shared_string. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - DESCRIBE TABLE lt_cell_data LINES lv_count. - MOVE lv_count TO lv_count_str. - - SHIFT lv_count_str RIGHT DELETING TRAILING space. - SHIFT lv_count_str LEFT DELETING LEADING space. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - DESCRIBE TABLE lt_cell_data LINES lv_uniquecount. - MOVE lv_uniquecount TO lv_uniquecount_str. - - SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. - SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - lv_sytabix = sy-tabix - 1. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. - APPEND ls_shared_string TO shared_strings. - ENDLOOP. - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_sst - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_count - value = lv_count_str ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_uniquecount - value = lv_uniquecount_str ). - -********************************************************************** -* STEP 4: Create subnode - LOOP AT shared_strings ASSIGNING <fs_sheet_string>. - lo_element = lo_document->create_simple_element( name = lc_xml_node_si - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). - lo_sub_element->set_value( <fs_sheet_string>-string_value ). - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). - ENDLOOP. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - - METHOD create_xl_sheet. - - -** Constant node name - DATA: lc_xml_node_worksheet TYPE string VALUE 'worksheet', - lc_xml_node_dimension TYPE string VALUE 'dimension', - lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', - lc_xml_node_sheetview TYPE string VALUE 'sheetView', - lc_xml_node_selection TYPE string VALUE 'selection', - lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', - lc_xml_node_sheetdata TYPE string VALUE 'sheetData', - lc_xml_node_row TYPE string VALUE 'row', - lc_xml_node_c TYPE string VALUE 'c', - lc_xml_node_v TYPE string VALUE 'v', - lc_xml_node_f TYPE string VALUE 'f', - lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', - lc_xml_node_condformatting TYPE string VALUE 'conditionalFormatting', - lc_xml_node_cfrule TYPE string VALUE 'cfRule', - lc_xml_node_iconset TYPE string VALUE 'iconSet', - lc_xml_node_cfvo TYPE string VALUE 'cfvo', - lc_xml_node_formula TYPE string VALUE 'formula', - " Node attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_tabselected TYPE string VALUE 'tabSelected', - lc_xml_attr_workbookviewid TYPE string VALUE 'workbookViewId', - lc_xml_attr_activecell TYPE string VALUE 'activeCell', - lc_xml_attr_sqref TYPE string VALUE 'sqref', - lc_xml_attr_defaultrowheight TYPE string VALUE 'defaultRowHeight', - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_s TYPE string VALUE 's', - lc_xml_attr_spans TYPE string VALUE 'spans', - lc_xml_attr_t TYPE string VALUE 't', - lc_xml_attr_left TYPE string VALUE 'left', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_header TYPE string VALUE 'header', - lc_xml_attr_footer TYPE string VALUE 'footer', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_iconset TYPE string VALUE 'iconSet', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_dxfid TYPE string VALUE 'dxfId', - lc_xml_attr_priority TYPE string VALUE 'priority', - lc_xml_attr_operator TYPE string VALUE 'operator', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. - - DATA: lv_value TYPE string, - lt_percent_val TYPE TABLE OF string, - ls_percent_val TYPE string, - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping. - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_worksheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " dimension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension - parent = lo_document ). - lv_value = io_worksheet->get_dimension_range( ). - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_value ). - lo_element_root->append_child( lo_element ). - - " sheetViews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews - parent = lo_document ). - " sheetView node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_sheetview - parent = lo_document ). - IF iv_active EQ abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '1' ). - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid - value = '0' ). - - " selection node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection - parent = lo_document ). - lv_value = io_worksheet->get_active_cell( ). - lo_element_3->set_attribute_ns( name = lc_xml_attr_activecell - value = lv_value ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - lo_element_2->append_child( lo_element_3 ). " sheetView node - - lo_element->append_child( lo_element_2 ). " sheetView node - - lo_element_root->append_child( lo_element ). " sheetViews node - - - " sheetFormatPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetformatpr - parent = lo_document ). - lv_value = io_worksheet->defaultrowheight. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight - value = lv_value ). - lo_element_root->append_child( lo_element ). " sheetFormatPr node - - " sheetData node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata - parent = lo_document ). - LOOP AT io_worksheet->sheet_content ASSIGNING <ls_sheet_content>. - CLEAR ls_style_mapping. - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = '1:1' ). " <******************************* - ENDIF. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_r - value = <ls_sheet_content>-cell_coords ). - - IF <ls_sheet_content>-cell_style IS NOT INITIAL. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. - lv_value = ls_style_mapping-style. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_3->set_attribute_ns( name = lc_xml_attr_s - value = lv_value ). - ENDIF. - IF ls_style_mapping-cell_format IS INITIAL. " to avoid errors if no style has been created - IF <ls_sheet_content>-cell_formula IS INITIAL. - ls_style_mapping-cell_format = 'S'. - ELSE. - ls_style_mapping-cell_format = 'F'. - ENDIF. - ENDIF. - " is a shared string and is not a formula - IF ls_style_mapping-cell_format EQ 'S'. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = 's' ). - ENDIF. - IF <ls_sheet_content>-cell_formula IS NOT INITIAL. - " fomula node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_formula. - lo_element_4->set_value( lv_value ). - lo_element_3->append_child( lo_element_4 ). " fomula node - ENDIF. - " value node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_document ). - - IF ls_style_mapping-cell_format EQ 'S'. - lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_4->set_value( lv_value ). - ELSE. - lv_value = <ls_sheet_content>-cell_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_4->set_value( lv_value ). - ENDIF. - - lo_element_3->append_child( lo_element_4 ). " value node - - lo_element_2->append_child( lo_element_3 ). " column node - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - lo_element->append_child( lo_element_2 ). " row node - ls_last_row = <ls_sheet_content>. - ENDIF. - - ENDLOOP. - lo_element_root->append_child( lo_element ). " sheetData node - - " Conditional formatting node - lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->get_next( ). - IF lo_style_conditional->rule IS INITIAL. - CONTINUE. - ENDIF. - lo_element = lo_document->create_simple_element( name = lc_xml_node_condformatting - parent = lo_document ). - lv_value = lo_style_conditional->get_dimension_range( ) . - lo_element->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - " cfRule node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_cfrule - parent = lo_document ). - lv_value = lo_style_conditional->rule. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = lo_style_conditional->priority. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_priority - value = lv_value ). - - CASE lo_style_conditional->rule. - WHEN zcl_excel_style_conditional=>c_rule_iconset. - CLEAR lt_percent_val. - " iconset node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_iconset - parent = lo_document ). - IF lo_style_conditional->iconset NE zcl_excel_style_conditional=>c_iconset_3trafficlights. - lv_value = lo_style_conditional->iconset. - lo_element_3->set_attribute_ns( name = lc_xml_attr_iconset - value = lv_value ). - ENDIF. - - CASE lo_style_conditional->iconset. - WHEN zcl_excel_style_conditional=>c_iconset_3trafficlights2 OR - zcl_excel_style_conditional=>c_iconset_3arrows OR - zcl_excel_style_conditional=>c_iconset_3arrowsgray OR - zcl_excel_style_conditional=>c_iconset_3flags OR - zcl_excel_style_conditional=>c_iconset_3signs OR - zcl_excel_style_conditional=>c_iconset_3symbols OR - zcl_excel_style_conditional=>c_iconset_3symbols2 OR - zcl_excel_style_conditional=>c_iconset_3trafficlights OR - zcl_excel_style_conditional=>c_iconset_3trafficlights2. - APPEND '0' TO lt_percent_val. - APPEND '33' TO lt_percent_val. - APPEND '67' TO lt_percent_val. - WHEN zcl_excel_style_conditional=>c_iconset_4arrows OR - zcl_excel_style_conditional=>c_iconset_4arrowsgray OR - zcl_excel_style_conditional=>c_iconset_4rating OR - zcl_excel_style_conditional=>c_iconset_4redtoblack OR - zcl_excel_style_conditional=>c_iconset_4trafficlights. - APPEND '0' TO lt_percent_val. - APPEND '25' TO lt_percent_val. - APPEND '50' TO lt_percent_val. - APPEND '75' TO lt_percent_val. - WHEN zcl_excel_style_conditional=>c_iconset_5arrows OR - zcl_excel_style_conditional=>c_iconset_5arrowsgray OR - zcl_excel_style_conditional=>c_iconset_5quarters OR - zcl_excel_style_conditional=>c_iconset_5rating. - APPEND '0' TO lt_percent_val. - APPEND '20' TO lt_percent_val. - APPEND '40' TO lt_percent_val. - APPEND '60' TO lt_percent_val. - APPEND '80' TO lt_percent_val. - WHEN OTHERS. - CLEAR lt_percent_val. - ENDCASE. - - LOOP AT lt_percent_val INTO ls_percent_val. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = 'percent' ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = ls_percent_val ). - lo_element_3->append_child( lo_element_4 ). " cfvo node - ENDLOOP. - - - lo_element_2->append_child( lo_element_3 ). " iconset node - WHEN zcl_excel_style_conditional=>c_rule_cellis. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = '0' ). " @TODO <***************************** - lv_value = lo_style_conditional->operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = lo_style_conditional->formula. - lo_element_3->set_value( lv_value ). - lo_element_2->append_child( lo_element_3 ). " formula node - - ENDCASE. - - lo_element->append_child( lo_element_2 ). " cfRule node - - lo_element_root->append_child( lo_element ). " Conditional formatting node - ENDWHILE. - " pageMargins node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_document ). - - lo_element->set_attribute_ns( name = lc_xml_attr_left - value = '0.7' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_right - value = '0.7' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_top - value = '0.75' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_bottom - value = '0.75' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_header - value = '0.3' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_footer - value = '0.3' ). " @TODO <***************************** - lo_element_root->append_child( lo_element ). " sheetFormatPr node - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_sheet_rels. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - lc_xml_node_rid_print_id TYPE string VALUE 'rId1', - " Node type - lc_xml_node_rid_print_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - " Node target - lc_xml_node_rid_print_tg TYPE string VALUE '../printerSettings/printerSettings1.bin'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rid_print_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_print_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_print_tg ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_styles. - - -** Constant node name - DATA: lc_xml_node_stylesheet TYPE string VALUE 'styleSheet', - " font - lc_xml_node_fonts TYPE string VALUE 'fonts', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - " fill - lc_xml_node_fills TYPE string VALUE 'fills', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - lc_xml_node_gradientfill TYPE string VALUE 'gradientFill', - lc_xml_node_stop TYPE string VALUE 'stop', - " borders - lc_xml_node_borders TYPE string VALUE 'borders', - lc_xml_node_border TYPE string VALUE 'border', - lc_xml_node_left TYPE string VALUE 'left', - lc_xml_node_right TYPE string VALUE 'right', - lc_xml_node_top TYPE string VALUE 'top', - lc_xml_node_bottom TYPE string VALUE 'bottom', - lc_xml_node_diagonal TYPE string VALUE 'diagonal', - " Styles - lc_xml_node_cellstylexfs TYPE string VALUE 'cellStyleXfs', - lc_xml_node_xf TYPE string VALUE 'xf', - lc_xml_node_cellxfs TYPE string VALUE 'cellXfs', - lc_xml_node_cellstyles TYPE string VALUE 'cellStyles', - lc_xml_node_cellstyle TYPE string VALUE 'cellStyle', - lc_xml_node_dxfs TYPE string VALUE 'dxfs', - lc_xml_node_tablestyles TYPE string VALUE 'tableStyles', - " Colors - lc_xml_node_colors TYPE string VALUE 'colors', - lc_xml_node_mrucolors TYPE string VALUE 'mruColors', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_position TYPE string VALUE 'position', - lc_xml_attr_degree TYPE string VALUE 'degree', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_attr_numfmtid TYPE string VALUE 'numFmtId', - lc_xml_attr_fontid TYPE string VALUE 'fontId', - lc_xml_attr_fillid TYPE string VALUE 'fillId', - lc_xml_attr_borderid TYPE string VALUE 'borderId', - lc_xml_attr_xfid TYPE string VALUE 'xfId', - lc_xml_attr_applynumberformat TYPE string VALUE 'applyNumberFormat', - lc_xml_attr_applyfont TYPE string VALUE 'applyFont', - lc_xml_attr_applyfill TYPE string VALUE 'applyFill', - lc_xml_attr_applyborder TYPE string VALUE 'applyBorder', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_builtinid TYPE string VALUE 'builtinId', - lc_xml_attr_defaulttablestyle TYPE string VALUE 'defaultTableStyle', - lc_xml_attr_defaultpivotstyle TYPE string VALUE 'defaultPivotStyle', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_fonts TYPE REF TO if_ixml_element, - lo_element_font TYPE REF TO if_ixml_element, - lo_element_fills TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_borders TYPE REF TO if_ixml_element, - lo_element_border TYPE REF TO if_ixml_element, - lo_element_cellxfs TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style TYPE REF TO zcl_excel_style. - - - DATA: lt_fonts TYPE zexcel_t_style_font, - ls_font TYPE zexcel_s_style_font, - lt_fills TYPE zexcel_t_style_fill, - ls_fill TYPE zexcel_s_style_fill, - lt_borders TYPE zexcel_t_style_border, - ls_border TYPE zexcel_s_style_border, - ls_format TYPE zexcel_number_format, - lt_cellxfs TYPE zexcel_t_cellxfs, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_styles_mapping TYPE zexcel_s_styles_mapping, - lt_colors TYPE TABLE OF zexcel_style_color_argb, - ls_color TYPE zexcel_style_color_argb. - - DATA: lv_value TYPE string, - lv_fonts_count TYPE i, - lv_fills_count TYPE i, - lv_borders_count TYPE i, - lv_cellxfs_count TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_stylesheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lo_element_fonts = lo_document->create_simple_element( name = lc_xml_node_fonts - parent = lo_document ). - - lo_element_fills = lo_document->create_simple_element( name = lc_xml_node_fills - parent = lo_document ). - - lo_element_borders = lo_document->create_simple_element( name = lc_xml_node_borders - parent = lo_document ). - - lo_element_cellxfs = lo_document->create_simple_element( name = lc_xml_node_cellxfs - parent = lo_document ). - -* Compress styles - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_style ?= lo_iterator->get_next( ). - ls_font = lo_style->font->get_structure( ). - ls_fill = lo_style->fill->get_structure( ). - ls_border = lo_style->borders->get_structure( ). - ls_format = lo_style->number_format->get_structure( ). - - -* Compress fonts - READ TABLE lt_fonts FROM ls_font TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fontid = sy-tabix. - ELSE. - APPEND ls_font TO lt_fonts. - DESCRIBE TABLE lt_fonts LINES ls_cellxfs-fontid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fontid. - -* Compress fills - READ TABLE lt_fills FROM ls_fill TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fillid = sy-tabix. - ELSE. - APPEND ls_fill TO lt_fills. - DESCRIBE TABLE lt_fills LINES ls_cellxfs-fillid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fillid. - -* Compress borders - READ TABLE lt_borders FROM ls_border TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-borderid = sy-tabix. - ELSE. - APPEND ls_border TO lt_borders. - DESCRIBE TABLE lt_borders LINES ls_cellxfs-borderid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-borderid. - - IF ls_format IS INITIAL. - ls_cellxfs-numfmtid = 0. " number format - ELSE. - ls_cellxfs-numfmtid = ls_format. " number format - ENDIF. - ls_cellxfs-xfid = 0. - - IF ls_format IS NOT INITIAL. - ls_cellxfs-applynumberformat = 1. - ls_styles_mapping-cell_format = 'I'. - ELSE. - ls_cellxfs-applynumberformat = 0. - ls_styles_mapping-cell_format = 'S'. - ENDIF. - IF ls_cellxfs-fontid NE 0. - ls_cellxfs-applyfont = 1. - ELSE. - ls_cellxfs-applyfont = 0. - ENDIF. - IF ls_cellxfs-fillid NE 0. - ls_cellxfs-applyfill = 1. - ELSE. - ls_cellxfs-applyfill = 0. - ENDIF. - IF ls_cellxfs-borderid NE 0. - ls_cellxfs-applyborder = 1. - ELSE. - ls_cellxfs-applyborder = 0. - ENDIF. - -* Remap styles - READ TABLE lt_cellxfs FROM ls_cellxfs TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_styles_mapping-style = sy-tabix. - ELSE. - APPEND ls_cellxfs TO lt_cellxfs. - DESCRIBE TABLE lt_cellxfs LINES ls_styles_mapping-style. - ENDIF. - SUBTRACT 1 FROM ls_styles_mapping-style. - ls_styles_mapping-guid = lo_style->get_guid( ). - APPEND ls_styles_mapping TO me->styles_mapping. - ENDWHILE. - - " create font elements - LOOP AT lt_fonts INTO ls_font. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz - parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "color - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_font-color. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "name - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name - parent = lo_document ). - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family - parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "scheme - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - lo_element_fonts->append_child( lo_element_font ). - " Collect color - APPEND ls_font-color TO lt_colors. - ENDLOOP. - - " create fill elements - LOOP AT lt_fills INTO ls_fill. - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - IF ls_fill-fgcolor IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_fgcolor - parent = lo_document ). - lv_value = ls_fill-fgcolor. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - - lo_sub_element->append_child( lo_sub_element_2 )." fgcolor - ENDIF. - " bgcolor - IF ls_fill-bgcolor IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_bgcolor - parent = lo_document ). - lv_value = ls_fill-bgcolor. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indexed - value = lv_value ). - - lo_sub_element->append_child( lo_sub_element_2 )." bgcolor - ENDIF. - - lo_element_fill->append_child( lo_sub_element )."pattern - lo_element_fills->append_child( lo_element_fill ). - " Collect color - IF ls_fill-fgcolor IS NOT INITIAL. - APPEND ls_fill-fgcolor TO lt_colors. - ENDIF. - ENDLOOP. - - " create border elements - LOOP AT lt_borders INTO ls_border. - lo_element_border = lo_document->create_simple_element( name = lc_xml_node_border - parent = lo_document ). - "left - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_left - parent = lo_document ). - IF ls_border-left_style IS NOT INITIAL. - lv_value = ls_border-left_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-left_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-left_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-left_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "right - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right - parent = lo_document ). - IF ls_border-right_style IS NOT INITIAL. - lv_value = ls_border-right_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-right_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-right_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-right_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "top - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top - parent = lo_document ). - IF ls_border-top_style IS NOT INITIAL. - lv_value = ls_border-top_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-top_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-top_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-top_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "bottom - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom - parent = lo_document ). - IF ls_border-bottom_style IS NOT INITIAL. - lv_value = ls_border-bottom_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-bottom_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-bottom_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-bottom_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "diagonal - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal - parent = lo_document ). - IF ls_border-diagonal_style IS NOT INITIAL. - lv_value = ls_border-diagonal_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-diagonal_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-diagonal_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-diagonal_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - lo_element_borders->append_child( lo_element_border ). - ENDLOOP. - - " update attribute "count" - DESCRIBE TABLE lt_fonts LINES lv_fonts_count. - MOVE lv_fonts_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fonts->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_fills LINES lv_fills_count. - MOVE lv_fills_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fills->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_borders LINES lv_borders_count. - MOVE lv_borders_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_borders->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_cellxfs LINES lv_cellxfs_count. - MOVE lv_cellxfs_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_cellxfs->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - - " Append to root node - lo_element_root->append_child( lo_element_fonts ). - lo_element_root->append_child( lo_element_fills ). - lo_element_root->append_child( lo_element_borders ). - - " cellstylexfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fontid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fillid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid - value = '0' ). - - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). - - LOOP AT lt_cellxfs INTO ls_cellxfs. - lo_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - MOVE ls_cellxfs-numfmtid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - MOVE ls_cellxfs-fontid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fontid - value = lv_value ). - MOVE ls_cellxfs-fillid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fillid - value = lv_value ). - MOVE ls_cellxfs-borderid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_borderid - value = lv_value ). - MOVE ls_cellxfs-xfid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_xfid - value = lv_value ). - IF ls_cellxfs-applynumberformat EQ 1. - MOVE ls_cellxfs-applynumberformat TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applynumberformat - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfont EQ 1. - MOVE ls_cellxfs-applyfont TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfont - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfill EQ 1. - MOVE ls_cellxfs-applyfill TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfill - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyborder EQ 1. - MOVE ls_cellxfs-applyborder TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyborder - value = lv_value ). - ENDIF. - lo_element_cellxfs->append_child( lo_element ). - ENDLOOP. - - lo_element_root->append_child( lo_element_cellxfs ). - - " cellStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_cellstyle - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = 'Normal' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xfid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid - value = '0' ). - - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). - - " dxfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element_root->append_child( lo_element ). - - " tableStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaulttablestyle - value = 'TableStyleMedium9' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle - value = 'PivotStyleLight16' ). - lo_element_root->append_child( lo_element ). - - " colors node - lo_element = lo_document->create_simple_element( name = lc_xml_node_colors - parent = lo_document ). - " mruColors node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_mrucolors - parent = lo_document ). - - SORT lt_colors. - DELETE ADJACENT DUPLICATES FROM lt_colors. - - LOOP AT lt_colors INTO ls_color. - " color node - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color node - ENDLOOP. - - lo_element->append_child( lo_sub_element )." mruColors node - lo_element_root->append_child( lo_element )." colors node - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - METHOD create_xl_theme. - - -* @TODO * - - DATA: lv_xl_theme TYPE string, - lv_xl_theme_01 TYPE string, - lv_xl_theme_02 TYPE string, - lv_xl_theme_03 TYPE string, - lv_xl_theme_04 TYPE string, - lv_xl_theme_05 TYPE string, - lv_xl_theme_06 TYPE string, - lv_xl_theme_07 TYPE string, - lv_xl_theme_08 TYPE string, - lv_xl_theme_09 TYPE string, - lv_xl_theme_10 TYPE string, - lv_xl_theme_11 TYPE string, - lv_xl_theme_12 TYPE string, - lv_xl_theme_13 TYPE string, - lv_xl_theme_14 TYPE string, - lv_xl_theme_15 TYPE string, - lv_xl_theme_16 TYPE string, - lv_xl_theme_17 TYPE string, - lv_xl_theme_18 TYPE string, - lv_xl_theme_19 TYPE string, - lv_xl_theme_20 TYPE string, - lv_xl_theme_21 TYPE string, - lv_xl_theme_22 TYPE string, - lv_xl_theme_23 TYPE string, - lv_xl_theme_24 TYPE string, - lv_xl_theme_25 TYPE string, - lv_xl_theme_26 TYPE string, - lv_xl_theme_27 TYPE string, - lv_xl_theme_28 TYPE string, - lv_xl_theme_29 TYPE string, - lv_xl_theme_30 TYPE string, - lv_xl_theme_31 TYPE string, - lv_xl_theme_32 TYPE string. - - lv_xl_theme_01 = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'. - lv_xl_theme_02 = '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" '. - lv_xl_theme_03 = 'lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr '. - lv_xl_theme_04 = 'val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink>'. - lv_xl_theme_05 = '<a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_06 = '<a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" '. - lv_xl_theme_07 = 'typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font '. - lv_xl_theme_08 = 'script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" '. - lv_xl_theme_09 = 'typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_10 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_11 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_12 = '<a:font script="Arab" typeface="Arial"/><a:font script="Hebr" '. - lv_xl_theme_13 = 'typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font '. - lv_xl_theme_14 = 'script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font '. - lv_xl_theme_15 = 'script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_16 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_17 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_18 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod '. - lv_xl_theme_19 = 'val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1">'. - lv_xl_theme_20 = '<a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs '. - lv_xl_theme_21 = 'pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" '. - lv_xl_theme_22 = 'algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr '. - lv_xl_theme_23 = 'val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst>'. - lv_xl_theme_24 = '<a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst>'. - lv_xl_theme_25 = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" '. - lv_xl_theme_26 = 'dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig '. - lv_xl_theme_27 = 'rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_28 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade '. - lv_xl_theme_29 = 'val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" '. - lv_xl_theme_30 = 't="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr '. - lv_xl_theme_31 = 'val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme>'. - lv_xl_theme_32 = '</a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>'. - - - CONCATENATE lv_xl_theme_01 lv_xl_theme_02 lv_xl_theme_03 lv_xl_theme_04 lv_xl_theme_05 lv_xl_theme_06 lv_xl_theme_07 lv_xl_theme_08 lv_xl_theme_09 lv_xl_theme_10 lv_xl_theme_11 lv_xl_theme_12 lv_xl_theme_13 lv_xl_theme_14 lv_xl_theme_15 - lv_xl_theme_16 lv_xl_theme_17 lv_xl_theme_18 lv_xl_theme_19 lv_xl_theme_20 lv_xl_theme_21 lv_xl_theme_22 lv_xl_theme_23 lv_xl_theme_24 lv_xl_theme_25 lv_xl_theme_26 lv_xl_theme_27 lv_xl_theme_28 lv_xl_theme_29 lv_xl_theme_30 - lv_xl_theme_31 lv_xl_theme_32 - INTO lv_xl_theme SEPARATED BY space. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - text = lv_xl_theme - IMPORTING - buffer = ep_content. - - -ENDMETHOD. - - - - METHOD create_xl_workbook. - - -** Constant node name - DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', - lc_xml_node_fileversion TYPE string VALUE 'fileVersion', - lc_xml_node_workbookpr TYPE string VALUE 'workbookPr', - lc_xml_node_bookviews TYPE string VALUE 'bookViews', - lc_xml_node_workbookview TYPE string VALUE 'workbookView', - lc_xml_node_sheets TYPE string VALUE 'sheets', - lc_xml_node_sheet TYPE string VALUE 'sheet', - lc_xml_node_calcpr TYPE string VALUE 'calcPr', - " Node attributes - lc_xml_attr_appname TYPE string VALUE 'appName', - lc_xml_attr_lastedited TYPE string VALUE 'lastEdited', - lc_xml_attr_lowestedited TYPE string VALUE 'lowestEdited', - lc_xml_attr_rupbuild TYPE string VALUE 'rupBuild', - lc_xml_attr_themeversion TYPE string VALUE 'defaultThemeVersion', - lc_xml_attr_xwindow TYPE string VALUE 'xWindow', - lc_xml_attr_ywindow TYPE string VALUE 'yWindow', - lc_xml_attr_windowwidth TYPE string VALUE 'windowWidth', - lc_xml_attr_windowheight TYPE string VALUE 'windowHeight', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_sheetid TYPE string VALUE 'sheetId', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_calcid TYPE string VALUE 'calcId', - " Node namespace - lc_r_ns TYPE string VALUE 'r', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_xml_node_ridx_id TYPE string, - lv_value TYPE string, - lv_syindex TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_workbook - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnode - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_fileversion - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_appname - value = 'xl' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lastedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lowestedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild - value = '4506' ). - lo_element_root->append_child( lo_element ). - - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_themeversion - value = '124226' ). - lo_element_root->append_child( lo_element ). - - " bookviews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews - parent = lo_document ). - " bookview node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_workbookview - parent = lo_document ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xwindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_ywindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowwidth - value = '19035' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight - value = '8445' ). - lo_element->append_child( lo_sub_element )." bookview node - lo_element_root->append_child( lo_element )." bookviews node - - " sheets node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets - parent = lo_document ). - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " sheet node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->title. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_sheetid - value = lv_syindex ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_id - prefix = lc_r_ns - value = lv_xml_node_ridx_id ). - lo_element->append_child( lo_sub_element ). " sheet node - ENDWHILE. - lo_element_root->append_child( lo_element )." sheets node - - " calcPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_calcid - value = '125725' ). - lo_element_root->append_child( lo_element ). - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - METHOD flag2bool. - - - IF ip_flag EQ abap_true. - ep_boolean = 'true'. - ELSE. - ep_boolean = 'false'. - ENDIF. -ENDMETHOD. - - - - - METHOD get_shared_string_index. - - - DATA ls_shared_string TYPE zexcel_s_shared_string. - - READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value. - ep_index = ls_shared_string-string_no. - -ENDMETHOD. - - - - class ZCL_EXCEL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL -*"* do not include other source files here!!! -public section. - - constants C_XLS type ZEXCEL_FORMAT value 'XLS'. "#EC NOTEXT - constants C_XLSX type ZEXCEL_FORMAT value 'XLSX'. "#EC NOTEXT - data PROPERTIES type ref to ZCL_EXCEL_PROPERTIES . - data SECURITY type ref to ZCL_EXCEL_SECURITY . - - methods ADD_NEW_DRAWING - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional - returning - value(EO_DRAWING) type ref to ZCL_EXCEL_DRAWING . - methods ADD_NEW_STYLE - returning - value(EO_STYLE) type ref to ZCL_EXCEL_STYLE . - methods ADD_NEW_WORKSHEET - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods CONSTRUCTOR . - methods GET_ACTIVE_WORKSHEET - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods GET_DRAWINGS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_STYLES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_WORKSHEETS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_WORKSHEETS_NAME - returning - value(EP_NAME) type ZEXCEL_WORKSHEETS_NAME . - methods GET_WORKSHEETS_SIZE - returning - value(EP_SIZE) type I . - methods SAVE_AS - importing - !IP_FORMAT type ZEXCEL_FORMAT - returning - value(EP_FILE) type XSTRING . - *"* protected components of class ZABAP_EXCEL -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL -*"* do not include other source files here!!! -private section. - - data DRAWINGS type ref to ZCL_EXCEL_DRAWINGS . - data RANGES type ref to ZCL_EXCEL_RANGES . - data STYLES type ref to ZCL_EXCEL_STYLES . - data WORKSHEETS type ref to ZCL_EXCEL_WORKSHEETS . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - METHOD add_new_drawing. - - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_drawing - EXPORTING - ip_title = ip_title. - drawings->add( eo_drawing ). -ENDMETHOD. - - - - method ADD_NEW_STYLE. - - -* Create default style - CREATE OBJECT eo_style. - styles->add( eo_style ). - -endmethod. - - - - - METHOD add_new_worksheet. - - - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_worksheet - EXPORTING - ip_title = ip_title. - worksheets->add( eo_worksheet ). - worksheets->active_worksheet = worksheets->size( ). -ENDMETHOD. - - - METHOD constructor. - - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style. - -* Inizialize instance objects - CREATE OBJECT properties. - CREATE OBJECT security. - CREATE OBJECT worksheets. - CREATE OBJECT ranges. - CREATE OBJECT styles. - CREATE OBJECT drawings. - - me->add_new_worksheet( ). - me->add_new_style( ). " Standard style - lo_style = me->add_new_style( ). " Standard style with fill gray125 - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_pattern_gray125. - - -ENDMETHOD. - - - - method GET_ACTIVE_WORKSHEET. - - - eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). - -endmethod. - - - - METHOD GET_DRAWINGS_ITERATOR. - - - eo_iterator = me->drawings->get_iterator( ). -ENDMETHOD. - - - - METHOD GET_STYLES_ITERATOR. - - - eo_iterator = me->styles->get_iterator( ). -ENDMETHOD. - - - - METHOD get_worksheets_iterator. - - - eo_iterator = me->worksheets->get_iterator( ). -ENDMETHOD. - - - - METHOD GET_WORKSHEETS_NAME. - - - ep_name = me->worksheets->name. - -ENDMETHOD. - - - - METHOD get_worksheets_size. - - - ep_size = me->worksheets->size( ). - -ENDMETHOD. - - - - - METHOD save_as. - - - DATA lo_excel_writer_2007 TYPE REF TO zcl_excel_writer_2007. - -* Determine the output engine to use - CASE ip_format. - WHEN me->c_xlsx. " XLSX for Office 2007 - CREATE OBJECT lo_excel_writer_2007 EXPORTING io_excel = me. - ep_file = lo_excel_writer_2007->create( ). - WHEN OTHERS. - ENDCASE. - -ENDMETHOD. - - - - class ZCL_EXCEL_COMMON definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_COMMON -*"* do not include other source files here!!! -public section. - - class-methods CONVERT_COLUMN2ALPHA - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA . - class-methods CONVERT_COLUMN2INT - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN . - *"* protected components of class ZCL_EXCEL_COMMON -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_COMMON -*"* do not include other source files here!!! -private section. - - class-data C_EXCEL_COL_MODULE type INT2 value 64. "#EC NOTEXT . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - METHOD convert_column2alpha. - - - DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce, - lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - - lv_column = ip_column. - WHILE lv_column GT 0. - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - ENDWHILE. - -ENDMETHOD. - - - - - METHOD convert_column2int. - - - DATA: lv_uccpi TYPE i, - lv_char TYPE c, - lv_column(2) TYPE c. - -* Calculate most significant letter - lv_char = ip_column+1(1). - IF lv_char IS NOT INITIAL. "To avoid the first 26 column that have only a char in first position - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - - ep_column = ep_column MOD ( zcl_excel_common=>c_excel_col_module ). - - lv_char = ip_column(1). - lv_uccpi = cl_abap_conv_out_ce=>uccpi( lv_char ). - - lv_uccpi = ( lv_uccpi MOD ( zcl_excel_common=>c_excel_col_module ) ) * 26. - - ep_column = ep_column + lv_uccpi. - ELSE. - lv_char = ip_column(1). - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - ep_column = ep_column - zcl_excel_common=>c_excel_col_module. - ENDIF. - -ENDMETHOD. - - - - class ZCL_EXCEL_DRAWING definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . - data X_REFERENCES type CHAR1 . - data Y_REFERENCES type CHAR1 . - data GRAPH_TYPE type ZEXCEL_GRAPH_TYPE . - - methods CONSTRUCTOR - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional . - methods GET_GUID - returning - value(EP_GUID) type GUID_16 . - *"* protected components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! -private section. - - data GUID type GUID_16 . - data LOWER_CELL type ZEXCEL_S_CELL_DATA . - data UPPER_CELL type ZEXCEL_S_CELL_DATA . - constants C_EXCEL_COL_MODULE type INT2 value 64. "#EC NOTEXT - - methods CONVERT_COLUMN2ALPHA - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA . - methods CONVERT_COLUMN2INT - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - METHOD CONSTRUCTOR. - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - -* inizialize dimension range - lower_cell-cell_row = 1. - lower_cell-cell_column = 1. - upper_cell-cell_row = 1. - upper_cell-cell_column = 1. -ENDMETHOD. - - - - - METHOD CONVERT_COLUMN2ALPHA. - DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce, - lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - - lv_column = ip_column. - WHILE lv_column GT 0. - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - ENDWHILE. - -ENDMETHOD. - - - - - METHOD CONVERT_COLUMN2INT. - - DATA: lv_uccpi TYPE i, - lv_char TYPE c, - lv_column(2) TYPE c. - -* Calculate most significant letter - lv_char = ip_column+1(1). - IF lv_char IS NOT INITIAL. "To avoid the first 26 column that have only a char in first position - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - - ep_column = ep_column MOD ( me->c_excel_col_module ). - - lv_char = ip_column(1). - lv_uccpi = cl_abap_conv_out_ce=>uccpi( lv_char ). - - lv_uccpi = ( lv_uccpi MOD ( me->c_excel_col_module ) ) * 26. - - ep_column = ep_column + lv_uccpi. - ELSE. - lv_char = ip_column(1). - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - ep_column = ep_column - me->c_excel_col_module. - ENDIF. - -ENDMETHOD. - - - - method GET_GUID. - - ep_guid = me->guid. - -endmethod. - - - - class ZCL_EXCEL_DRAWINGS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_DRAWINGS -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type ZEXCEL_ACTIVE_WORKSHEET - returning - value(EO_DRAWING) type ref to ZCL_EXCEL_DRAWING . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_DRAWINGS -*"* do not include other source files here!!! -private section. - - data DRAWINGS type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - METHOD add. - - - drawings->add( ip_drawing ). -ENDMETHOD. - - - METHOD clear. - - - drawings->clear( ). -ENDMETHOD. - - - METHOD constructor. - - - CREATE OBJECT drawings. - -ENDMETHOD. - - - - - METHOD get. - - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_drawing ?= drawings->if_object_collection~get( lv_index ). -ENDMETHOD. - - - - METHOD get_iterator. - - - eo_iterator ?= drawings->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD is_empty. - - - is_empty = drawings->if_object_collection~is_empty( ). -ENDMETHOD. - - - - METHOD remove. - - - drawings->remove( ip_drawing ). -ENDMETHOD. - - - - METHOD size. - - - ep_size = drawings->if_object_collection~size( ). -ENDMETHOD. - - - - class ZCL_EXCEL_PROPERTIES definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_PROPERTIES -*"* do not include other source files here!!! -public section. - - data CREATOR type ZEXCEL_CREATOR value 'Unknown Creator'. "#EC NOTEXT . - data LASTMODIFIEDBY type ZEXCEL_CREATOR value 'Unknown Creator'. "#EC NOTEXT . - data CREATED type TIMESTAMPL . - data MODIFIED type TIMESTAMPL . - data TITLE type ZEXCEL_TITLE value 'Untitled Spreadsheet'. "#EC NOTEXT . - data SUBJECT type ZEXCEL_SUBJECT . - data DESCRIPTION type ZEXCEL_DESCRIPTION . - data KEYWORDS type ZEXCEL_KEYWORDS . - data CATEGORY type ZEXCEL_CATEGORY . - data COMPANY type ZEXCEL_COMPANY value 'Microsoft Corporation'. "#EC NOTEXT . - data APPLICATION type ZEXCEL_APPLICATION value 'Microsoft Excel'. "#EC NOTEXT . - data DOCSECURITY type ZEXCEL_DOCSECURITY value '0'. "#EC NOTEXT . - data SCALECROP type ZEXCEL_SCALECROP value ''. "#EC NOTEXT . - data LINKSUPTODATE type FLAG . - data SHAREDDOC type FLAG . - data HYPERLINKSCHANGED type FLAG . - data APPVERSION type ZEXCEL_APPVERSION value '12.0000'. "#EC NOTEXT . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_PROPERTIES -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_PROPERTIES -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - METHOD CONSTRUCTOR. - - DATA: lv_timestamp TYPE timestampl. - - GET TIME STAMP FIELD lv_timestamp. - created = lv_timestamp. - modified = lv_timestamp. - -ENDMETHOD. - - - - class ZCL_EXCEL_RANGE definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_RANGE -*"* do not include other source files here!!! -public section. - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -protected section. - *"* private components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - method CONSTRUCTOR. -endmethod. - - - - class ZCL_EXCEL_RANGES definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_RANGES -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_RANGE type ref to ZCL_EXCEL_RANGE . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type I - returning - value(EO_RANGE) type ref to ZCL_EXCEL_RANGE . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_RANGE type ref to ZCL_EXCEL_RANGE . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZABAP_EXCEL_RANGES -*"* do not include other source files here!!! -private section. - - data RANGES type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - METHOD ADD. - ranges->add( ip_range ). -ENDMETHOD. - - - METHOD CLEAR. - ranges->clear( ). -ENDMETHOD. - - - method CONSTRUCTOR. -endmethod. - - - - - METHOD GET. - eo_range ?= ranges->if_object_collection~get( ip_index ). -ENDMETHOD. - - - - METHOD GET_ITERATOR. - eo_iterator ?= ranges->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD IS_EMPTY. - is_empty = ranges->if_object_collection~is_empty( ). -ENDMETHOD. - - - - METHOD REMOVE. - ranges->remove( ip_range ). -ENDMETHOD. - - - - METHOD SIZE. - ep_size = ranges->if_object_collection~size( ). -ENDMETHOD. - - - - class ZCL_EXCEL_SECURITY definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_SECURITY -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data LOCKREVISION type FLAG . - data LOCKSTRUCTURE type FLAG . - data LOCKWINDOWS type FLAG . - data REVISIONSPASSWORD type ZEXCEL_REVISIONSPASSWORD . - data WORKBOOKPASSWORD type ZEXCEL_WORKBOOKPASSWORD . - - methods CONSTRUCTOR . - methods IS_SECURITY_ENABLED - returning - value(EP_SECURITY_ENABLED) type FLAG . - *"* protected components of class ZABAP_EXCEL_SECURITY -*"* do not include other source files here!!! -protected section. - *"* private components of class ZABAP_EXCEL_SECURITY -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - method CONSTRUCTOR. -endmethod. - - - - METHOD IS_SECURITY_ENABLED. - IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. - ep_security_enabled = abap_true. - ENDIF. -ENDMETHOD. - - - - class ZCL_EXCEL_SHEET_SETUP definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_SHEET_SETUP -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - constants C_PAPERSIZE_LETTER type ZEXCEL_SHEET_PAPER_SIZE value 1. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_SMALL type ZEXCEL_SHEET_PAPER_SIZE value 2. "#EC NOTEXT - constants C_PAPERSIZE_TABLOID type ZEXCEL_SHEET_PAPER_SIZE value 3. "#EC NOTEXT - constants C_PAPERSIZE_LEDGER type ZEXCEL_SHEET_PAPER_SIZE value 4. "#EC NOTEXT - constants C_PAPERSIZE_LEGAL type ZEXCEL_SHEET_PAPER_SIZE value 5. "#EC NOTEXT - constants C_PAPERSIZE_STATEMENT type ZEXCEL_SHEET_PAPER_SIZE value 6. "#EC NOTEXT - constants C_PAPERSIZE_EXECUTIVE type ZEXCEL_SHEET_PAPER_SIZE value 7. "#EC NOTEXT - constants C_PAPERSIZE_A3 type ZEXCEL_SHEET_PAPER_SIZE value 8. "#EC NOTEXT - constants C_PAPERSIZE_A4 type ZEXCEL_SHEET_PAPER_SIZE value 9. "#EC NOTEXT - constants C_PAPERSIZE_A4_SMALL type ZEXCEL_SHEET_PAPER_SIZE value 10. "#EC NOTEXT - constants C_PAPERSIZE_A5 type ZEXCEL_SHEET_PAPER_SIZE value 11. "#EC NOTEXT - constants C_PAPERSIZE_B4 type ZEXCEL_SHEET_PAPER_SIZE value 12. "#EC NOTEXT - constants C_PAPERSIZE_B5 type ZEXCEL_SHEET_PAPER_SIZE value 13. "#EC NOTEXT - constants C_PAPERSIZE_FOLIO type ZEXCEL_SHEET_PAPER_SIZE value 14. "#EC NOTEXT - constants C_PAPERSIZE_QUARTO type ZEXCEL_SHEET_PAPER_SIZE value 15. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_1 type ZEXCEL_SHEET_PAPER_SIZE value 16. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_2 type ZEXCEL_SHEET_PAPER_SIZE value 17. "#EC NOTEXT - constants C_PAPERSIZE_NOTE type ZEXCEL_SHEET_PAPER_SIZE value 18. "#EC NOTEXT - constants C_PAPERSIZE_NO9_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 19. "#EC NOTEXT - constants C_PAPERSIZE_NO10_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 20. "#EC NOTEXT - constants C_PAPERSIZE_NO11_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 21. "#EC NOTEXT - constants C_PAPERSIZE_NO12_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 22. "#EC NOTEXT - constants C_PAPERSIZE_NO14_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 23. "#EC NOTEXT - constants C_PAPERSIZE_C type ZEXCEL_SHEET_PAPER_SIZE value 24. "#EC NOTEXT - constants C_PAPERSIZE_D type ZEXCEL_SHEET_PAPER_SIZE value 25. "#EC NOTEXT - constants C_PAPERSIZE_E type ZEXCEL_SHEET_PAPER_SIZE value 26. "#EC NOTEXT - constants C_PAPERSIZE_DL_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 27. "#EC NOTEXT - constants C_PAPERSIZE_C5_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 28. "#EC NOTEXT - constants C_PAPERSIZE_C3_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 29. "#EC NOTEXT - constants C_PAPERSIZE_C4_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 30. "#EC NOTEXT - constants C_PAPERSIZE_C6_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 31. "#EC NOTEXT - constants C_PAPERSIZE_C65_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 32. "#EC NOTEXT - constants C_PAPERSIZE_B4_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 33. "#EC NOTEXT - constants C_PAPERSIZE_B5_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 34. "#EC NOTEXT - constants C_PAPERSIZE_B6_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 35. "#EC NOTEXT - constants C_PAPERSIZE_ITALY_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 36. "#EC NOTEXT - constants C_PAPERSIZE_MONARCH_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 37. "#EC NOTEXT - constants C_PAPERSIZE_6_3_4_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 38. "#EC NOTEXT - constants C_PAPERSIZE_US_STD_FANFOLD type ZEXCEL_SHEET_PAPER_SIZE value 39. "#EC NOTEXT - constants C_PAPERSIZE_DE_STD_FANFOLD type ZEXCEL_SHEET_PAPER_SIZE value 40. "#EC NOTEXT - constants C_PAPERSIZE_DE_LEG_FANFOLD type ZEXCEL_SHEET_PAPER_SIZE value 41. "#EC NOTEXT - constants C_PAPERSIZE_ISO_B4 type ZEXCEL_SHEET_PAPER_SIZE value 42. "#EC NOTEXT - constants C_PAPERSIZE_JPN_DBL_POSTCARD type ZEXCEL_SHEET_PAPER_SIZE value 43. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_PAPER_1 type ZEXCEL_SHEET_PAPER_SIZE value 44. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_PAPER_2 type ZEXCEL_SHEET_PAPER_SIZE value 45. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_PAPER_3 type ZEXCEL_SHEET_PAPER_SIZE value 46. "#EC NOTEXT - constants C_PAPERSIZE_INVITE_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 47. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 48. "#EC NOTEXT - constants C_PAPERSIZE_LEGAL_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 49. "#EC NOTEXT - constants C_PAPERSIZE_TABL_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 50. "#EC NOTEXT - constants C_PAPERSIZE_A4_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 51. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 52. "#EC NOTEXT - constants C_PAPERSIZE_A4_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 53. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_EXTV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 54. "#EC NOTEXT - constants C_PAPERSIZE_SUPERA_A4_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 55. "#EC NOTEXT - constants C_PAPERSIZE_SUPERB_A3_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 56. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_PLUS_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 57. "#EC NOTEXT - constants C_PAPERSIZE_A4_PLUS_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 58. "#EC NOTEXT - constants C_PAPERSIZE_A5_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 59. "#EC NOTEXT - constants C_PAPERSIZE_JIS_B5_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 60. "#EC NOTEXT - constants C_PAPERSIZE_A3_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 61. "#EC NOTEXT - constants C_PAPERSIZE_A5_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 62. "#EC NOTEXT - constants C_PAPERSIZE_ISO_B5_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 63. "#EC NOTEXT - constants C_PAPERSIZE_A2_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 64. "#EC NOTEXT - constants C_PAPERSIZE_A3_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 65. "#EC NOTEXT - constants C_PAPERSIZE_A3_EXTRA_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 66. "#EC NOTEXT - constants C_ORIENTATION_DEFAULT type ZEXCEL_SHEET_ORIENATATION value 'default'. "#EC NOTEXT - constants C_ORIENTATION_LANDSCAPE type ZEXCEL_SHEET_ORIENATATION value 'landscape'. "#EC NOTEXT - constants C_ORIENTATION_PORTRAIT type ZEXCEL_SHEET_ORIENATATION value 'portrait'. "#EC NOTEXT - data ORIENTATION type ZEXCEL_SHEET_ORIENATATION . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_SHEET_SETUP -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD constructor. - orientation = me->c_orientation_default. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLE definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE -*"* do not include other source files here!!! -public section. - - data FONT type ref to ZCL_EXCEL_STYLE_FONT . - data FILL type ref to ZCL_EXCEL_STYLE_FILL . - data BORDERS type ref to ZCL_EXCEL_STYLE_BORDERS . - data NUMBER_FORMAT type ref to ZCL_EXCEL_STYLE_NUMBER_FORMAT . - - methods CONSTRUCTOR . - methods GET_GUID - returning - value(EP_GUID) type ZEXCEL_CELL_STYLE . - *"* protected components of class ZABAP_EXCEL_STYLE -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE -*"* do not include other source files here!!! -private section. - - data ALIGNMENT type ref to ZCL_EXCEL_STYLE_ALIGNMENT . - data PROTECTION type ref to ZCL_EXCEL_STYLE_PROTECTION . - data GUID type ZEXCEL_CELL_STYLE . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - METHOD constructor. - - - CREATE OBJECT font. - CREATE OBJECT fill. - CREATE OBJECT borders. - CREATE OBJECT alignment. - CREATE OBJECT number_format. - CREATE OBJECT protection. - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - -ENDMETHOD. - - - - METHOD get_guid. - - - ep_guid = me->guid. -ENDMETHOD. - - - - class ZCL_EXCEL_STYLES definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLES -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_STYLE type ref to ZCL_EXCEL_STYLE . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type I - returning - value(EO_STYLE) type ref to ZCL_EXCEL_STYLE . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_STYLE type ref to ZCL_EXCEL_STYLE . - methods SIZE - returning - value(EP_SIZE) type I . - methods REGISTER_NEW_STYLE - importing - !IO_STYLE type ref to ZCL_EXCEL_STYLE - returning - value(EP_STYLE_CODE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLES -*"* do not include other source files here!!! -private section. - - data STYLES type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - METHOD add. - - - styles->add( ip_style ). -ENDMETHOD. - - - METHOD clear. - - - styles->clear( ). -ENDMETHOD. - - - METHOD constructor. - - - CREATE OBJECT styles. -ENDMETHOD. - - - - - METHOD get. - - - eo_style ?= styles->if_object_collection~get( ip_index ). -ENDMETHOD. - - - - METHOD get_iterator. - - - eo_iterator ?= styles->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD is_empty. - - - is_empty = styles->if_object_collection~is_empty( ). -ENDMETHOD. - - - - - METHOD register_new_style. - - - me->add( io_style ). - ep_style_code = me->size( ) - 1. "style count starts from 0 -ENDMETHOD. - - - - METHOD remove. - - - styles->remove( ip_style ). -ENDMETHOD. - - - - METHOD size. - - - ep_size = styles->if_object_collection~size( ). -ENDMETHOD. - - - - class ZCL_EXCEL_STYLES_CONDITIONAL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLES_CONDITIONAL -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_STYLE_CONDITIONAL type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type ZEXCEL_ACTIVE_WORKSHEET - returning - value(EO_STYLE_CONDITIONAL) type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_STYLE_CONDITIONAL type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLES_CONDITIONAL -*"* do not include other source files here!!! -private section. - - data STYLES_CONDITIONAL type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - METHOD add. - styles_conditional->add( ip_style_conditional ). -ENDMETHOD. - - - METHOD clear. - styles_conditional->clear( ). -ENDMETHOD. - - - METHOD constructor. - - CREATE OBJECT styles_conditional. - -ENDMETHOD. - - - - - METHOD get. - DATA lv_index TYPE i. - lv_index = ip_index. - eo_style_conditional ?= styles_conditional->if_object_collection~get( lv_index ). -ENDMETHOD. - - - - METHOD get_iterator. - eo_iterator ?= styles_conditional->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD is_empty. - is_empty = styles_conditional->if_object_collection~is_empty( ). -ENDMETHOD. - - - - METHOD remove. - styles_conditional->remove( ip_style_conditional ). -ENDMETHOD. - - - - METHOD size. - ep_size = styles_conditional->if_object_collection~size( ). -ENDMETHOD. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel1. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'Sheet1'. -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -" Convert to binary -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - -" Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\HelloWorld.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel2. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -" Creates active sheet -CREATE OBJECT lo_excel. - -" Create border object -CREATE OBJECT lo_border_dark. -lo_border_dark->border_color = zcl_excel_style_color=>c_black. -lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. -CREATE OBJECT lo_border_light. -lo_border_light->border_color = zcl_excel_style_color=>c_gray. -lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. -" Create a bold / italic style -lo_style_bold = lo_excel->add_new_style( ). -lo_style_bold->font->bold = abap_true. -lo_style_bold->font->italic = abap_true. -lo_style_bold->font->color = zcl_excel_style_color=>c_red. -lv_style_bold_guid = lo_style_bold->get_guid( ). -" Create an underline double style -lo_style_underline = lo_excel->add_new_style( ). -lo_style_underline->font->underline = abap_true. -lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. -lv_style_underline_guid = lo_style_underline->get_guid( ). -" Create filled style -lo_style_filled = lo_excel->add_new_style( ). -lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. -lo_style_filled->fill->fgcolor = zcl_excel_style_color=>c_yellow. -lv_style_filled_guid = lo_style_filled->get_guid( ). -" Create border with button effects -lo_style_button = lo_excel->add_new_style( ). -lo_style_button->borders->right = lo_border_dark. -lo_style_button->borders->down = lo_border_dark. -lo_style_button->borders->left = lo_border_light. -lo_style_button->borders->top = lo_border_light. -lv_style_button_guid = lo_style_button->get_guid( ). -"Create style with border -lo_style_border = lo_excel->add_new_style( ). -lo_style_border->borders->allborders = lo_border_dark. -lv_style_border_guid = lo_style_border->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'Styles'. -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). -lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). -lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). -lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). -lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -" Convert to binary -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - -" Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\Styles.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel3. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_header TYPE REF TO zcl_excel_style, - lo_style_body TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_header_guid TYPE zexcel_cell_style, - lv_style_body_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -" Creates active sheet -CREATE OBJECT lo_excel. - -" Create border object -CREATE OBJECT lo_border_dark. -lo_border_dark->border_color = zcl_excel_style_color=>c_black. -lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. -" Create filled style -lo_style_header = lo_excel->add_new_style( ). -lo_style_header->fill->filltype = zcl_excel_style_fill=>c_fill_solid. -lo_style_header->fill->fgcolor = zcl_excel_style_color=>c_yellow. -lo_style_header->borders->allborders = lo_border_dark. -lv_style_header_guid = lo_style_header->get_guid( ). -"Create style with border -lo_style_body = lo_excel->add_new_style( ). -lo_style_body->borders->allborders = lo_border_dark. -lv_style_body_guid = lo_style_body->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'Internal table'. - -DATA lt_test TYPE TABLE OF sflight. -SELECT * FROM sflight INTO TABLE lt_test. -lo_worksheet->set_table( ip_table = lt_test - ip_hdr_style = lv_style_header_guid - ip_body_style = lv_style_body_guid ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -" Convert to binary -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - -" Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\iTab.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'Sheet1'. -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). - -lo_worksheet = lo_excel->add_new_worksheet( ). -lo_worksheet->title = 'Sheet2'. -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -" Convert to binary -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - -" Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\Sheets.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel5. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_number TYPE REF TO zcl_excel_style, - lv_file TYPE xstring, - lv_style_number_guid TYPE zexcel_cell_style, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -CREATE OBJECT lo_excel. - -lo_style_number = lo_excel->add_new_style( ). -lo_style_number->number_format->format_code = zcl_excel_style_number_format=>c_format_number. -lv_style_number_guid = lo_style_number->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '100' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = '1000' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = '150' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = '500' ip_style = lv_style_number_guid ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -"convert to table -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -"Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\CondFormatting.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel6. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_number TYPE REF TO zcl_excel_style, - lv_file TYPE xstring, - lv_style_number_guid TYPE zexcel_cell_style, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -CREATE OBJECT lo_excel. - -lo_style_number = lo_excel->add_new_style( ). -lo_style_number->number_format->format_code = zcl_excel_style_number_format=>c_format_number. -lv_style_number_guid = lo_style_number->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '100' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = '1000' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = '150' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = '500' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = '1760' ip_formula = 'SUM(C4:C8)' ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -"convert to table -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -"Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\Formula.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel7. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_number TYPE REF TO zcl_excel_style, - lv_file TYPE xstring, - lv_style_number_guid TYPE zexcel_cell_style, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -CREATE OBJECT lo_excel. - -lo_style_number = lo_excel->add_new_style( ). -lo_style_number->number_format->format_code = zcl_excel_style_number_format=>c_format_number. -lv_style_number_guid = lo_style_number->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3arrows. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 5 - ip_stop_column = 'B' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'C_ICONSET_3ARROWS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'B' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3arrowsgray. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 5 - ip_stop_column = 'C' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'C_ICONSET_3ARROWSGRAY' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3flags. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 5 - ip_stop_column = 'D' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'C_ICONSET_3FLAGS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'D' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'D' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 5 - ip_stop_column = 'E' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'C_ICONSET_3TRAFFICLIGHTS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'E' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 5 - ip_stop_column = 'F' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'C_ICONSET_3TRAFFICLIGHTS2' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'F' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'F' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'F' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'F' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3signs. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'G' - ip_start_row = 5 - ip_stop_column = 'G' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = 'C_ICONSET_3SIGNS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'G' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'G' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'G' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'G' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'G' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3symbols. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'H' - ip_start_row = 5 - ip_stop_column = 'H' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'H' ip_value = 'C_ICONSET_3SYMBOLS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'H' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'H' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'H' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'H' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'H' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3symbols2. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'I' - ip_start_row = 5 - ip_stop_column = 'I' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'I' ip_value = 'C_ICONSET_3SYMBOLS2' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'I' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'I' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'I' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'I' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'I' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4arrows. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 12 - ip_stop_column = 'B' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = 'C_ICONSET_4ARROWS' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'B' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'B' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'B' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4arrowsgray. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 12 - ip_stop_column = 'C' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'C' ip_value = 'C_ICONSET_4ARROWSGRAY' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'C' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'C' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'C' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'C' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4redtoblack. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 12 - ip_stop_column = 'D' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'D' ip_value = 'C_ICONSET_4REDTOBLACK' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'D' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'D' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'D' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4rating. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 12 - ip_stop_column = 'E' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'E' ip_value = 'C_ICONSET_4RATING' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'E' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'E' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'E' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'E' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4trafficlights. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 12 - ip_stop_column = 'F' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'F' ip_value = 'C_ICONSET_4TRAFFICLIGHTS' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'F' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'F' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'F' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'F' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_5arrows. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 19 - ip_stop_column = 'B' - ip_stop_row = 23 ). - -lo_worksheet->set_cell( ip_row = 18 ip_column = 'B' ip_value = 'C_ICONSET_5ARROWS' ). -lo_worksheet->set_cell( ip_row = 19 ip_column = 'B' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 20 ip_column = 'B' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 21 ip_column = 'B' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 22 ip_column = 'B' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 23 ip_column = 'B' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_5arrowsgray. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 19 - ip_stop_column = 'C' - ip_stop_row = 23 ). - -lo_worksheet->set_cell( ip_row = 18 ip_column = 'C' ip_value = 'C_ICONSET_5ARROWSGRAY' ). -lo_worksheet->set_cell( ip_row = 19 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 20 ip_column = 'C' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 21 ip_column = 'C' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 22 ip_column = 'C' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 23 ip_column = 'C' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_5rating. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 19 - ip_stop_column = 'D' - ip_stop_row = 23 ). - -lo_worksheet->set_cell( ip_row = 18 ip_column = 'D' ip_value = 'C_ICONSET_5RATING' ). -lo_worksheet->set_cell( ip_row = 19 ip_column = 'D' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 20 ip_column = 'D' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 21 ip_column = 'D' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 22 ip_column = 'D' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 23 ip_column = 'D' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_5quarters. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 19 - ip_stop_column = 'E' - ip_stop_row = 23 ). - -lo_worksheet->set_cell( ip_row = 18 ip_column = 'E' ip_value = 'C_ICONSET_5QUARTERS' ). -lo_worksheet->set_cell( ip_row = 19 ip_column = 'E' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 20 ip_column = 'E' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 21 ip_column = 'E' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 22 ip_column = 'E' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 23 ip_column = 'E' ip_value = '50' ip_style = lv_style_number_guid ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -"convert to table -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -"Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\Iconset.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/old_releases/NUGG_ABAP2XLSX_V_1_0.nugg.zip b/build/old_releases/NUGG_ABAP2XLSX_V_1_0.nugg.zip deleted file mode 100644 index b1c2f6839753e6afb67b623eb62ab3a708e15a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86986 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�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 - - - class ZCL_EXCEL_STYLES_CONDITIONAL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLES_CONDITIONAL -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_STYLE_CONDITIONAL type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type ZEXCEL_ACTIVE_WORKSHEET - returning - value(EO_STYLE_CONDITIONAL) type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_STYLE_CONDITIONAL type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLES_CONDITIONAL -*"* do not include other source files here!!! -private section. - - data STYLES_CONDITIONAL type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - styles_conditional->add( ip_style_conditional ). -endmethod. - - - method CLEAR. - styles_conditional->clear( ). -endmethod. - - - method CONSTRUCTOR. - - CREATE OBJECT styles_conditional. - -endmethod. - - - - - method GET. - DATA lv_index TYPE i. - lv_index = ip_index. - eo_style_conditional ?= styles_conditional->if_object_collection~get( lv_index ). -endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= styles_conditional->if_object_collection~get_iterator( ). -endmethod. - - - - method IS_EMPTY. - is_empty = styles_conditional->if_object_collection~is_empty( ). -endmethod. - - - - method REMOVE. - styles_conditional->remove( ip_style_conditional ). -endmethod. - - - - method SIZE. - ep_size = styles_conditional->if_object_collection~size( ). -endmethod. - - - - class ZCL_EXCEL_STYLE_ALIGNMENT definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_ALIGNMENT -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data HORIZONTAL type ZEXCEL_ALIGNMENT . - data VERTICAL type ZEXCEL_ALIGNMENT . - data TEXTROTATION type ZEXCEL_TEXT_ROTATION value 0. "#EC NOTEXT . - data WRAPTEXT type FLAG . - data SHRINKTOFIT type FLAG . - data INDENT type ZEXCEL_INDENT value 0. "#EC NOTEXT . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_ALIGNMENT -*"* do not include other source files here!!! -private section. - - constants C_HORIZONTAL_GENERAL type ZEXCEL_ALIGNMENT value 'general'. "#EC NOTEXT - constants C_HORIZONTAL_LEFT type ZEXCEL_ALIGNMENT value 'left'. "#EC NOTEXT - constants C_HORIZONTAL_RIGHT type ZEXCEL_ALIGNMENT value 'right'. "#EC NOTEXT - constants C_HORIZONTAL_CENTER type ZEXCEL_ALIGNMENT value 'center'. "#EC NOTEXT - constants C_HORIZONTAL_CENTER_CONTINUOUS type ZEXCEL_ALIGNMENT value 'centerContinuous'. "#EC NOTEXT - constants C_HORIZONTAL_JUSTIFY type ZEXCEL_ALIGNMENT value 'justify'. "#EC NOTEXT - constants C_VERTICAL_BOTTOM type ZEXCEL_ALIGNMENT value 'bottom'. "#EC NOTEXT - constants C_VERTICAL_TOP type ZEXCEL_ALIGNMENT value 'top'. "#EC NOTEXT - constants C_VERTICAL_CENTER type ZEXCEL_ALIGNMENT value 'center'. "#EC NOTEXT - constants C_VERTICAL_JUSTIFY type ZEXCEL_ALIGNMENT value 'justify'. "#EC NOTEXT - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - horizontal = me->c_horizontal_general. - vertical = me->c_vertical_bottom. - wrapText = abap_false. - shrinkToFit = abap_false. -endmethod. - - - - class ZCL_EXCEL_STYLE_BORDER definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_BORDER -*"* do not include other source files here!!! -public section. - - data BORDER_STYLE type ZEXCEL_BORDER . - data BORDER_COLOR type ZEXCEL_STYLE_COLOR_ARGB . - class-data C_BORDER_NONE type ZEXCEL_BORDER value 'none'. "#EC NOTEXT . - class-data C_BORDER_DASHDOT type ZEXCEL_BORDER value 'dashDot'. "#EC NOTEXT . - class-data C_BORDER_DASHDOTDOT type ZEXCEL_BORDER value 'dashDotDot'. "#EC NOTEXT . - class-data C_BORDER_DASHED type ZEXCEL_BORDER value 'dashed'. "#EC NOTEXT . - class-data C_BORDER_DOTTED type ZEXCEL_BORDER value 'dotted'. "#EC NOTEXT . - class-data C_BORDER_DOUBLE type ZEXCEL_BORDER value 'double'. "#EC NOTEXT . - class-data C_BORDER_HAIR type ZEXCEL_BORDER value 'hair'. "#EC NOTEXT . - class-data C_BORDER_MEDIUM type ZEXCEL_BORDER value 'medium'. "#EC NOTEXT . - class-data C_BORDER_MEDIUMDASHDOT type ZEXCEL_BORDER value 'mediumDashDot'. "#EC NOTEXT . - class-data C_BORDER_MEDIUMDASHDOTDOT type ZEXCEL_BORDER value 'mediumDashDotDot'. "#EC NOTEXT . - class-data C_BORDER_MEDIUMDASHED type ZEXCEL_BORDER value 'mediumDashed'. "#EC NOTEXT . - class-data C_BORDER_SLANTDASHDOT type ZEXCEL_BORDER value 'slantDashDot'. "#EC NOTEXT . - class-data C_BORDER_THICK type ZEXCEL_BORDER value 'thick'. "#EC NOTEXT . - class-data C_BORDER_THIN type ZEXCEL_BORDER value 'thin'. "#EC NOTEXT . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_BORDER -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - border_style = zcl_excel_style_border=>c_border_none. -endmethod. - - - - class ZCL_EXCEL_STYLE_BORDERS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_BORDERS -*"* do not include other source files here!!! -public section. - - data LEFT type ref to ZCL_EXCEL_STYLE_BORDER . - data RIGHT type ref to ZCL_EXCEL_STYLE_BORDER . - data TOP type ref to ZCL_EXCEL_STYLE_BORDER . - data DOWN type ref to ZCL_EXCEL_STYLE_BORDER . - data DIAGONAL type ref to ZCL_EXCEL_STYLE_BORDER . - data ALLBORDERS type ref to ZCL_EXCEL_STYLE_BORDER . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FILL) type ZEXCEL_S_STYLE_BORDER . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_BORDERS -*"* do not include other source files here!!! -private section. - - constants C_DIAGONAL_NONE type ZEXCEL_DIAGONAL value 0. "#EC NOTEXT - constants C_DIAGONAL_UP type ZEXCEL_DIAGONAL value 1. "#EC NOTEXT - constants C_DIAGONAL_DOWN type ZEXCEL_DIAGONAL value 2. "#EC NOTEXT - constants C_DIAGONAL_BOTH type ZEXCEL_DIAGONAL value 3. "#EC NOTEXT - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - method CONSTRUCTOR. -endmethod. - - - - method GET_STRUCTURE. - -* Check if all borders is set otherwise check single border - IF me->allborders IS BOUND. - es_fill-left_color = me->allborders->border_color. - es_fill-left_style = me->allborders->border_style. - es_fill-right_color = me->allborders->border_color. - es_fill-right_style = me->allborders->border_style. - es_fill-top_color = me->allborders->border_color. - es_fill-top_style = me->allborders->border_style. - es_fill-bottom_color = me->allborders->border_color. - es_fill-bottom_style = me->allborders->border_style. - ELSE. - IF me->left IS BOUND. - es_fill-left_color = me->left->border_color. - es_fill-left_style = me->left->border_style. - ENDIF. - IF me->right IS BOUND. - es_fill-right_color = me->right->border_color. - es_fill-right_style = me->right->border_style. - ENDIF. - IF me->top IS BOUND. - es_fill-top_color = me->top->border_color. - es_fill-top_style = me->top->border_style. - ENDIF. - IF me->down IS BOUND. - es_fill-bottom_color = me->down->border_color. - es_fill-bottom_style = me->down->border_style. - ENDIF. - ENDIF. - -* Check if diagonal is set - IF me->diagonal IS BOUND. - es_fill-diagonal_color = me->diagonal->border_color. - es_fill-diagonal_style = me->diagonal->border_style. - ENDIF. - -endmethod. - - - - class ZCL_EXCEL_STYLE_COLOR definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_COLOR -*"* do not include other source files here!!! -public section. - - class-data C_BLACK type ZEXCEL_STYLE_COLOR_ARGB value 'FF000000'. "#EC NOTEXT . - class-data C_BLUE type ZEXCEL_STYLE_COLOR_ARGB value 'FF0000FF'. "#EC NOTEXT . - class-data C_DARKBLUE type ZEXCEL_STYLE_COLOR_ARGB value 'FF000080'. "#EC NOTEXT . - class-data C_DARKGREEN type ZEXCEL_STYLE_COLOR_ARGB value 'FF008000'. "#EC NOTEXT . - class-data C_DARKRED type ZEXCEL_STYLE_COLOR_ARGB value 'FF800000'. "#EC NOTEXT . - class-data C_DARKYELLOW type ZEXCEL_STYLE_COLOR_ARGB value 'FF808000'. "#EC NOTEXT . - class-data C_GRAY type ZEXCEL_STYLE_COLOR_ARGB value 'FFCCCCCC'. "#EC NOTEXT . - class-data C_GREEN type ZEXCEL_STYLE_COLOR_ARGB value 'FF00FF00'. "#EC NOTEXT . - class-data C_RED type ZEXCEL_STYLE_COLOR_ARGB value 'FFFF0000'. "#EC NOTEXT . - class-data C_WHITE type ZEXCEL_STYLE_COLOR_ARGB value 'FFFFFFFF'. "#EC NOTEXT . - class-data C_YELLOW type ZEXCEL_STYLE_COLOR_ARGB value 'FFFFFF00'. "#EC NOTEXT . - - methods CONSTRUCTOR . - class-methods CREATE_NEW_ARGB - importing - !IP_RED type ZEXCEL_STYLE_COLOR_COMPONENT - !IP_GREEN type ZEXCEL_STYLE_COLOR_COMPONENT - !IP_BLU type ZEXCEL_STYLE_COLOR_COMPONENT - returning - value(EP_COLOR_ARGB) type ZEXCEL_STYLE_COLOR_ARGB . - *"* protected components of class ZCL_EXCEL_STYLE_COLOR -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_COLOR -*"* do not include other source files here!!! -private section. - - class-data C_ALPHA type CHAR2 value 'FF'. "#EC NOTEXT . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - method CONSTRUCTOR. - - -endmethod. - - - - - - - method CREATE_NEW_ARGB. - - - CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - -endmethod. - - - - class ZCL_EXCEL_STYLE_CONDITIONAL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_CONDITIONAL -*"* do not include other source files here!!! -public section. - - class-data C_ICONSET_3ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '3Arrows'. "#EC NOTEXT . - class-data C_ICONSET_3ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '3ArrowsGray'. "#EC NOTEXT . - class-data C_ICONSET_3FLAGS type ZEXCEL_CONDITION_RULE_ICONSET value '3Flags'. "#EC NOTEXT . - class-data C_ICONSET_3SIGNS type ZEXCEL_CONDITION_RULE_ICONSET value '3Signs'. "#EC NOTEXT . - class-data C_ICONSET_3SYMBOLS type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols'. "#EC NOTEXT . - class-data C_ICONSET_3SYMBOLS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols2'. "#EC NOTEXT . - class-data C_ICONSET_3TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value ''. "#EC NOTEXT . - class-data C_ICONSET_3TRAFFICLIGHTS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3TrafficLights2'. "#EC NOTEXT . - class-data C_ICONSET_4ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '4Arrows'. "#EC NOTEXT . - class-data C_ICONSET_4ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '4ArrowsGray'. "#EC NOTEXT . - class-data C_ICONSET_4RATING type ZEXCEL_CONDITION_RULE_ICONSET value '4Rating'. "#EC NOTEXT . - class-data C_ICONSET_4REDTOBLACK type ZEXCEL_CONDITION_RULE_ICONSET value '4RedToBlack'. "#EC NOTEXT . - class-data C_ICONSET_4TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value '4TrafficLights'. "#EC NOTEXT . - class-data C_ICONSET_5ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '5Arrows'. "#EC NOTEXT . - class-data C_ICONSET_5ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '5ArrowsGray'. "#EC NOTEXT . - class-data C_ICONSET_5QUARTERS type ZEXCEL_CONDITION_RULE_ICONSET value '5Quarters'. "#EC NOTEXT . - class-data C_ICONSET_5RATING type ZEXCEL_CONDITION_RULE_ICONSET value '5Rating'. "#EC NOTEXT . - class-data C_OPERATOR_BEGINSWITH type ZEXCEL_CONDITION_OPERATOR value 'beginsWith'. "#EC NOTEXT . - class-data C_OPERATOR_BETWEEN type ZEXCEL_CONDITION_OPERATOR value 'between'. "#EC NOTEXT . - class-data C_OPERATOR_CONTAINSTEXT type ZEXCEL_CONDITION_OPERATOR value 'containsText'. "#EC NOTEXT . - class-data C_OPERATOR_ENDSWITH type ZEXCEL_CONDITION_OPERATOR value 'endsWith'. "#EC NOTEXT . - class-data C_OPERATOR_EQUAL type ZEXCEL_CONDITION_OPERATOR value 'equal'. "#EC NOTEXT . - class-data C_OPERATOR_GREATERTHAN type ZEXCEL_CONDITION_OPERATOR value 'greaterThan'. "#EC NOTEXT . - class-data C_OPERATOR_GREATERTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'greaterThanOrEqual'. "#EC NOTEXT . - class-data C_OPERATOR_LESSTHAN type ZEXCEL_CONDITION_OPERATOR value 'lessThan'. "#EC NOTEXT . - class-data C_OPERATOR_LESSTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'lessThanOrEqual'. "#EC NOTEXT . - class-data C_OPERATOR_NONE type ZEXCEL_CONDITION_OPERATOR value ''. "#EC NOTEXT . - class-data C_OPERATOR_NOTCONTAINS type ZEXCEL_CONDITION_OPERATOR value 'notContains'. "#EC NOTEXT . - class-data C_OPERATOR_NOTEQUAL type ZEXCEL_CONDITION_OPERATOR value 'notEqual'. "#EC NOTEXT . - class-data C_RULE_CELLIS type ZEXCEL_CONDITION_RULE value 'cellIs'. "#EC NOTEXT . - class-data C_RULE_CONTAINSTEXT type ZEXCEL_CONDITION_RULE value 'containsText'. "#EC NOTEXT . - class-data C_RULE_EXPRESSION type ZEXCEL_CONDITION_RULE value 'expression'. "#EC NOTEXT . - class-data C_RULE_ICONSET type ZEXCEL_CONDITION_RULE value 'iconSet'. "#EC NOTEXT . - class-data C_RULE_NONE type ZEXCEL_CONDITION_RULE value 'none'. "#EC NOTEXT . - data FORMULA type ZEXCEL_STYLE_FORMULA . - data ICONSET type ZEXCEL_CONDITION_RULE_ICONSET . - data OPERATOR type ZEXCEL_CONDITION_OPERATOR . - data PRIORITY type ZEXCEL_STYLE_PRIORITY value 1. "#EC NOTEXT . - data RULE type ZEXCEL_CONDITION_RULE . - - methods CONSTRUCTOR . - methods GET_DIMENSION_RANGE - returning - value(EP_DIMENSION_RANGE) type STRING . - methods SET_RANGE - importing - !IP_START_ROW type ZEXCEL_CELL_ROW - !IP_START_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_STOP_ROW type ZEXCEL_CELL_ROW - !IP_STOP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_CONDITIONAL -*"* do not include other source files here!!! -private section. - - data START_CELL type ZEXCEL_S_CELL_DATA . - data STOP_CELL type ZEXCEL_S_CELL_DATA . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - rule = me->c_rule_none. - operator = me->c_operator_none. -* inizialize dimension range - stop_cell-cell_row = 1. - stop_cell-cell_column = 1. - start_cell-cell_row = 1. - start_cell-cell_column = 1. -endmethod. - - - - method GET_DIMENSION_RANGE. - IF stop_cell EQ start_cell. "only one cell - ep_dimension_range = start_cell-cell_coords. - ELSE. - CONCATENATE start_cell-cell_coords ':' stop_cell-cell_coords INTO ep_dimension_range. - ENDIF. -endmethod. - - - - - - - method SET_RANGE. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string. - - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - stop_cell-cell_row = 1. - stop_cell-cell_column = lv_column. - lv_row_alpha = ip_stop_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_stop_column lv_row_alpha INTO stop_cell-cell_coords. - - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - start_cell-cell_row = 1. - start_cell-cell_column = lv_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_start_column lv_row_alpha INTO start_cell-cell_coords. -endmethod. - - - - class ZCL_EXCEL_STYLE_FILL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_FILL -*"* do not include other source files here!!! -public section. - - class-data C_FILL_NONE type ZEXCEL_FILL_TYPE value 'none'. "#EC NOTEXT . - class-data C_FILL_SOLID type ZEXCEL_FILL_TYPE value 'solid'. "#EC NOTEXT . - class-data C_FILL_GRADIENT_LINEAR type ZEXCEL_FILL_TYPE value 'linear'. "#EC NOTEXT . - class-data C_FILL_GRADIENT_PATH type ZEXCEL_FILL_TYPE value 'path'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKDOWN type ZEXCEL_FILL_TYPE value 'darkDown'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKGRAY type ZEXCEL_FILL_TYPE value 'darkGray'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKGRID type ZEXCEL_FILL_TYPE value 'darkGrid'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKHORIZONTAL type ZEXCEL_FILL_TYPE value 'darkHorizontal'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKTRELLIS type ZEXCEL_FILL_TYPE value 'darkTrellis'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKUP type ZEXCEL_FILL_TYPE value 'darkUp'. "#EC NOTEXT . - class-data C_FILL_PATTERN_DARKVERTICAL type ZEXCEL_FILL_TYPE value 'darkVertical'. "#EC NOTEXT . - class-data C_FILL_PATTERN_GRAY0625 type ZEXCEL_FILL_TYPE value 'gray0625'. "#EC NOTEXT . - class-data C_FILL_PATTERN_GRAY125 type ZEXCEL_FILL_TYPE value 'gray125'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTDOWN type ZEXCEL_FILL_TYPE value 'lightDown'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTGRAY type ZEXCEL_FILL_TYPE value 'lightGray'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTGRID type ZEXCEL_FILL_TYPE value 'lightGrid'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTHORIZONTAL type ZEXCEL_FILL_TYPE value 'lightHorizontal'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTTRELLIS type ZEXCEL_FILL_TYPE value 'lightTrellis'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTUP type ZEXCEL_FILL_TYPE value 'lightUp'. "#EC NOTEXT . - class-data C_FILL_PATTERN_LIGHTVERTICAL type ZEXCEL_FILL_TYPE value 'lightVertical'. "#EC NOTEXT . - class-data C_FILL_PATTERN_MEDIUMGRAY type ZEXCEL_FILL_TYPE value 'mediumGray'. "#EC NOTEXT . - data FILLTYPE type ZEXCEL_FILL_TYPE . - data ROTATION type ZEXCEL_ROTATION . - data FGCOLOR type ZEXCEL_STYLE_COLOR_ARGB . - data BGCOLOR type ZEXCEL_STYLE_COLOR_ARGB value '64'. "#EC NOTEXT . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FILL) type ZEXCEL_S_STYLE_FILL . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_FILL -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - filltype = zcl_excel_style_fill=>c_fill_none. - rotation = 0. -endmethod. - - - - method GET_STRUCTURE. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgColor = me->fgColor. - es_fill-bgColor = me->bgColor. -endmethod. - - - - class ZCL_EXCEL_STYLE_FONT definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data BOLD type FLAG . - data COLOR type ZEXCEL_STYLE_COLOR_ARGB . - class-data C_SCHEME_MAJOR type ZEXCEL_STYLE_FONT_SCHEME value 'major'. "#EC NOTEXT . - class-data C_SCHEME_MINOR type ZEXCEL_STYLE_FONT_SCHEME value 'minor'. "#EC NOTEXT . - class-data C_UNDERLINE_DOUBLE type CHAR20 value 'double'. "#EC NOTEXT . - class-data C_UNDERLINE_DOUBLEACCOUNTING type CHAR20 value 'doubleAccounting'. "#EC NOTEXT . - class-data C_UNDERLINE_NONE type CHAR20 value 'none'. "#EC NOTEXT . - class-data C_UNDERLINE_SINGLE type CHAR20 value 'single'. "#EC NOTEXT . - class-data C_UNDERLINE_SINGLEACCOUNTING type CHAR20 value 'singleAccounting'. "#EC NOTEXT . - data FAMILY type INT1 value 2. "#EC NOTEXT . - data ITALIC type FLAG . - data NAME type CHAR255 value 'Calibri'. "#EC NOTEXT . - data SCHEME type ZEXCEL_STYLE_FONT_SCHEME . - data SIZE type INT1 value 11. "#EC NOTEXT . - data STRIKETHROUGH type FLAG . - data UNDERLINE type FLAG . - data UNDERLINE_MODE type CHAR20 . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FONT) type ZEXCEL_S_STYLE_FONT . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - - me->color = zcl_excel_style_color=>c_black. - me->scheme = zcl_excel_style_font=>c_scheme_minor. - me->underline_mode = zcl_excel_style_font=>c_underline_single. -endmethod. - - - - method GET_STRUCTURE. - - - es_font-bold = me->bold. - es_font-italic = me->italic. - es_font-underline = me->underline. - es_font-underline_mode = me->underline_mode. - es_font-strikethrough = me->strikethrough. - es_font-size = me->size. - es_font-color = me->color. - es_font-name = me->name. - es_font-family = me->family. - es_font-scheme = me->scheme. - -endmethod. - - - - class ZCL_EXCEL_STYLE_NUMBER_FORMAT definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_NUMBER_FORMAT -*"* do not include other source files here!!! -public section. - - class-data C_FORMAT_NUMBER type ZEXCEL_NUMBER_FORMAT value '0'. "#EC NOTEXT . - class-data C_FORMAT_NUMBER_00 type ZEXCEL_NUMBER_FORMAT value '0.00'. "#EC NOTEXT . - class-data C_FORMAT_NUMBER_COMMA_SEP1 type ZEXCEL_NUMBER_FORMAT value '#,##0.00'. "#EC NOTEXT . - class-data C_FORMAT_NUMBER_COMMA_SEP2 type ZEXCEL_NUMBER_FORMAT value '#,##0.00_-'. "#EC NOTEXT . - class-data C_FORMAT_PERCENTAGE type ZEXCEL_NUMBER_FORMAT value '0%'. "#EC NOTEXT . - class-data C_FORMAT_PERCENTAGE_00 type ZEXCEL_NUMBER_FORMAT value '0.00%'. "#EC NOTEXT . - class-data C_FORMAT_DATE_YYYYMMDD2 type ZEXCEL_NUMBER_FORMAT value 'yyyy-mm-dd'. "#EC NOTEXT . - class-data C_FORMAT_DATE_YYYYMMDD type ZEXCEL_NUMBER_FORMAT value 'yy-mm-dd'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DDMMYYYY type ZEXCEL_NUMBER_FORMAT value 'dd/mm/yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DMYSLASH type ZEXCEL_NUMBER_FORMAT value 'd/m/y'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DMYMINUS type ZEXCEL_NUMBER_FORMAT value 'd-m-y'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DMMINUS type ZEXCEL_NUMBER_FORMAT value 'd-m'. "#EC NOTEXT . - class-data C_FORMAT_DATE_MYMINUS type ZEXCEL_NUMBER_FORMAT value 'm-y'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX14 type ZEXCEL_NUMBER_FORMAT value 'mm-dd-yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX15 type ZEXCEL_NUMBER_FORMAT value 'd-mmm-yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX16 type ZEXCEL_NUMBER_FORMAT value 'd-mmm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX17 type ZEXCEL_NUMBER_FORMAT value 'mmm-yy'. "#EC NOTEXT . - class-data C_FORMAT_DATE_XLSX22 type ZEXCEL_NUMBER_FORMAT value 'm/d/yy h:mm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_DATETIME type ZEXCEL_NUMBER_FORMAT value 'd/m/y h:mm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME1 type ZEXCEL_NUMBER_FORMAT value 'h:mm AM/PM'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME2 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss AM/PM'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME3 type ZEXCEL_NUMBER_FORMAT value 'h:mm'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME4 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME5 type ZEXCEL_NUMBER_FORMAT value 'mm:ss'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME6 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME7 type ZEXCEL_NUMBER_FORMAT value 'i:s.S'. "#EC NOTEXT . - class-data C_FORMAT_DATE_TIME8 type ZEXCEL_NUMBER_FORMAT value 'h:mm:ss@'. "#EC NOTEXT . - class-data C_FORMAT_DATE_YYYYMMDDSLASH type ZEXCEL_NUMBER_FORMAT value 'yy/mm/dd@'. "#EC NOTEXT . - class-data C_FORMAT_CURRENCY_USD_SIMPLE type ZEXCEL_NUMBER_FORMAT value '"$"#,##0.00_-'. "#EC NOTEXT . - class-data C_FORMAT_CURRENCY_USD type ZEXCEL_NUMBER_FORMAT value '$#,##0_-'. "#EC NOTEXT . - class-data C_FORMAT_CURRENCY_EUR_SIMPLE type ZEXCEL_NUMBER_FORMAT value '[$EUR ]#,##0.00_-'. "#EC NOTEXT . - data FORMAT_CODE type ZEXCEL_NUMBER_FORMAT . - - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(EP_NUMBER_FORMAT) type ZEXCEL_NUMBER_FORMAT . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_NUMBER_FORMAT -*"* do not include other source files here!!! -private section. - - class-data C_FORMAT_GENERAL type ZEXCEL_NUMBER_FORMAT value ''. "#EC NOTEXT . - class-data C_FORMAT_TEXT type ZEXCEL_NUMBER_FORMAT value '@'. "#EC NOTEXT . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - format_code = me->c_format_general. -endmethod. - - - - method GET_STRUCTURE. - ep_number_format = me->format_code. -endmethod. - - - - class ZCL_EXCEL_STYLE_PROTECTION definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE_PROTECTION -*"* do not include other source files here!!! -public section. - - constants C_PROTECTION_INHERIT type ZEXCEL_PROTECTION value 'inherit'. "#EC NOTEXT - constants C_PROTECTION_PROTECTED type ZEXCEL_PROTECTION value 'protected'. "#EC NOTEXT - constants C_PROTECTION_UNPROTECTED type ZEXCEL_PROTECTION value 'unprotected'. "#EC NOTEXT - data LOCKED type ZEXCEL_PROTECTION . - data HIDDEN type ZEXCEL_PROTECTION . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_PROTECTION -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - method CONSTRUCTOR. - locked = me->c_protection_inherit. - hidden = me->c_protection_inherit. -endmethod. - - - - class ZCL_EXCEL_WORKSHEET definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_WORKSHEET -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - class-data C_BREAK_COLUMN type ZEXCEL_BREAK value 2. "#EC NOTEXT . - class-data C_BREAK_NONE type ZEXCEL_BREAK value 0. "#EC NOTEXT . - class-data C_BREAK_ROW type ZEXCEL_BREAK value 1. "#EC NOTEXT . - class-data C_SHEET_STATE_HIDDEN type ZEXCEL_SHEET_STATE value 'hidden'. "#EC NOTEXT . - class-data C_SHEET_STATE_VERYHIDDEN type ZEXCEL_SHEET_STATE value 'veryHidden'. "#EC NOTEXT . - class-data C_SHEET_STATE_VISIBLE type ZEXCEL_SHEET_STATE value 'visible'. "#EC NOTEXT . - data DEFAULTROWHEIGHT type INT1 value 15. "#EC NOTEXT . - data SHEET_CONTENT type ZEXCEL_T_CELL_DATA . - data SHEET_SETUP type ref to ZCL_EXCEL_SHEET_SETUP . - data SHEET_STATE type ZEXCEL_SHEET_STATE . - data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . - - 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 CONSTRUCTOR - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional . - methods GET_ACTIVE_CELL - returning - value(EP_ACTIVE_CELL) type STRING . - methods GET_CELL - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_ROW type ZEXCEL_CELL_ROW - exporting - !EP_VALUE type ZEXCEL_CELL_VALUE - !EP_RC type SYSUBRC . - 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_DIMENSION_RANGE - returning - value(EP_DIMENSION_RANGE) type STRING . - methods GET_GUID - returning - value(EP_GUID) type OLTPGUID16 . - methods SET_CELL - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_ROW type ZEXCEL_CELL_ROW - !IP_VALUE type ZEXCEL_CELL_VALUE - !IP_FORMULA type ZEXCEL_CELL_FORMULA optional - !IP_STYLE type ZEXCEL_CELL_STYLE optional . - 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 optional - !IP_TOP_LEFT_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA default 'B' - !IP_TOP_LEFT_ROW type ZEXCEL_CELL_ROW default 3 . - methods GET_DATA_VALIDATIONS_SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_WORKSHEET -*"* do not include other source files here!!! -private section. - - data ACTIVE_CELL type ZEXCEL_S_CELL_DATA . - data CONDITIONAL_STYLES type ref to ZCL_EXCEL_STYLES_CONDITIONAL . - data DATA_VALIDATIONS type ref to ZCL_EXCEL_DATA_VALIDATIONS . - data GUID type OLTPGUID16 . - data LOWER_CELL type ZEXCEL_S_CELL_DATA . - data UPPER_CELL type ZEXCEL_S_CELL_DATA . - - methods UPDATE_DIMENSION_RANGE . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - method ADD_NEW_CONDITIONAL_STYLE. - - - CREATE OBJECT eo_conditional_style. - conditional_styles->add( eo_conditional_style ). -endmethod. - - - - method ADD_NEW_DATA_VALIDATION. - - - CREATE OBJECT eo_data_validation. - data_validations->add( eo_data_validation ). -endmethod. - - - - METHOD constructor. - - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - - sheet_state = me->c_sheet_state_visible. - - CREATE OBJECT sheet_setup. - CREATE OBJECT conditional_styles. - CREATE OBJECT data_validations. - -* 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. - - - - method GET_ACTIVE_CELL. - - - DATA: lv_active_column TYPE zexcel_cell_column_alpha, - lv_active_row TYPE string. - - lv_active_column = zcl_excel_common=>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. - - - - - - - method GET_CELL. - - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = zcl_excel_common=>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. -endmethod. - - - - method GET_COND_STYLES_ITERATOR. - - - eo_iterator = me->conditional_styles->get_iterator( ). -endmethod. - - - - method GET_DATA_VALIDATIONS_ITERATOR. - - - eo_iterator = me->data_validations->get_iterator( ). -endmethod. - - - - method GET_DATA_VALIDATIONS_SIZE. - ep_size = me->data_validations->size( ). -endmethod. - - - - method GET_DIMENSION_RANGE. - - - me->update_dimension_range( ). - IF upper_cell EQ lower_cell. "only one cell - ep_dimension_range = upper_cell-cell_coords. - ELSE. - CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. - ENDIF. - -endmethod. - - - - method GET_GUID. - - - ep_guid = me->guid. - -endmethod. - - - - - - - - method SET_CELL. - - - DATA: lv_column TYPE zexcel_cell_column, - ls_sheet_content TYPE zexcel_s_cell_data, - lv_row_alpha TYPE string. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data. - - lv_column = ZCL_EXCEL_COMMON=>convert_column2int( ip_column ). - - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH KEY cell_row = ip_row - cell_column = lv_column. - - IF sy-subrc EQ 0. - <fs_sheet_content>-cell_value = ip_value. - <fs_sheet_content>-cell_formula = ip_formula. - <fs_sheet_content>-cell_style = ip_style. - ELSE. - ls_sheet_content-cell_row = ip_row. - ls_sheet_content-cell_column = lv_column. - ls_sheet_content-cell_value = ip_value. - ls_sheet_content-cell_formula = ip_formula. - ls_sheet_content-cell_style = ip_style. - lv_row_alpha = ip_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_column lv_row_alpha INTO ls_sheet_content-cell_coords. - APPEND ls_sheet_content TO sheet_content. - SORT sheet_content BY cell_row cell_column. -* me->update_dimension_range( ). - - ENDIF. - -endmethod. - - - - - - - - - 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 '2', - lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', - 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: <fs_table_line> TYPE ANY, - <fs_fldval> TYPE ANY, - <fs_dfies> TYPE dfies, - <fs_cell_value> TYPE zexcel_cell_value. - - lv_column_int = zcl_excel_common=>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=>describe_by_data_ref( lr_data ). - - ls_header = lo_tabdescr->get_ddic_header( ). - - lt_dfies = lo_tabdescr->get_ddic_field_list( ). - -* It is better to loop column by column - LOOP AT lt_dfies ASSIGNING <fs_dfies>. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - " First of all write column header - lv_cell_value = <fs_dfies>-scrtext_m. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_cell_value - ip_style = ip_hdr_style ). - ADD 1 TO lv_row_int. - LOOP AT ip_table ASSIGNING <fs_table_line>. - ASSIGN COMPONENT <fs_dfies>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>. - MOVE <fs_fldval> TO lv_cell_value. - me->set_cell( ip_column = lv_column_alpha - ip_row = lv_row_int - ip_value = lv_cell_value - ip_style = ip_body_style ). - ADD 1 TO lv_row_int. - ENDLOOP. - lv_row_int = ip_top_left_row. - ADD 1 TO lv_column_int. - ENDLOOP. - -endmethod. - - - 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. - -* update dimension range - lt_sheet_content = sheet_content. - "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=>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. - - "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=>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. - - - - class ZCL_EXCEL_WORKSHEETS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -public section. - - data ACTIVE_WORKSHEET type ZEXCEL_ACTIVE_WORKSHEET value 1. "#EC NOTEXT . - data NAME type ZEXCEL_WORKSHEETS_NAME value 'Worksheets'. "#EC NOTEXT . - - methods ADD - importing - !IP_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type ZEXCEL_ACTIVE_WORKSHEET - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -private section. - - data WORKSHEETS type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - method ADD. - - - worksheets->add( ip_worksheet ). -endmethod. - - - method CLEAR. - - - worksheets->clear( ). -endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT worksheets. - -endmethod. - - - - - method GET. - - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_worksheet ?= worksheets->if_object_collection~get( lv_index ). -endmethod. - - - - method GET_ITERATOR. - - - eo_iterator ?= worksheets->if_object_collection~get_iterator( ). -endmethod. - - - - method IS_EMPTY. - - - is_empty = worksheets->if_object_collection~is_empty( ). -endmethod. - - - - method REMOVE. - - - worksheets->remove( ip_worksheet ). -endmethod. - - - - method SIZE. - - - ep_size = worksheets->if_object_collection~size( ). -endmethod. - - - - class ZCL_EXCEL_WRITER_2007 definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_WRITER_2007 -*"* do not include other source files here!!! -public section. - - methods CONSTRUCTOR - importing - !IO_EXCEL type ref to ZCL_EXCEL . - methods CREATE - returning - value(EP_EXCEL) type XSTRING . - *"* protected components of class ZCL_EXCEL_WRITER_2007 -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_WRITER_2007 -*"* do not include other source files here!!! -private section. - - constants C_CONTENT_TYPES type STRING value '[Content_Types].xml'. "#EC NOTEXT - constants C_DOCPROPS_APP type STRING value 'docProps/app.xml'. "#EC NOTEXT - constants C_DOCPROPS_CORE type STRING value 'docProps/core.xml'. "#EC NOTEXT - constants C_RELATIONSHIPS type STRING value '_rels/.rels'. "#EC NOTEXT - constants C_XL_CALCCHAIN type STRING value 'xl/calcChain.xml'. "#EC NOTEXT - constants C_XL_RELATIONSHIPS type STRING value 'xl/_rels/workbook.xml.rels'. "#EC NOTEXT - constants C_XL_SHAREDSTRINGS type STRING value 'xl/sharedStrings.xml'. "#EC NOTEXT - constants C_XL_SHEET type STRING value 'xl/worksheets/sheet#.xml'. "#EC NOTEXT - constants C_XL_SHEET_RELS type STRING value 'xl/worksheets/_rels/sheet#.xml.rels'. "#EC NOTEXT - constants C_XL_STYLES type STRING value 'xl/styles.xml'. "#EC NOTEXT - constants C_XL_THEME type STRING value 'xl/theme/theme1.xml'. "#EC NOTEXT - constants C_XL_WORKBOOK type STRING value 'xl/workbook.xml'. "#EC NOTEXT - data EXCEL type ref to ZCL_EXCEL . - data SHARED_STRINGS type ZEXCEL_T_SHARED_STRING . - data STYLES_MAPPING type ZEXCEL_T_STYLES_MAPPING . - - methods CREATE_CONTENT_TYPES - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_DOCPROPS_APP - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_DOCPROPS_CORE - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_RELATIONSHIPS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_CALCCHAIN - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_RELATIONSHIPS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHAREDSTRINGS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHEET - importing - !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET - !IV_ACTIVE type FLAG default '' - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHEET_RELS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_STYLES - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_THEME - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_WORKBOOK - returning - value(EP_CONTENT) type XSTRING . - methods FLAG2BOOL - importing - !IP_FLAG type FLAG - returning - value(EP_BOOLEAN) type CHAR5 . - methods GET_SHARED_STRING_INDEX - importing - !IP_CELL_VALUE type ZEXCEL_CELL_VALUE - returning - value(EP_INDEX) type INT4 . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - - me->excel = io_excel. -endmethod. - - - - method CREATE. - - -* Office 2007 file format is a cab of several xml files with extension .xlsx - - DATA: lo_zip TYPE REF TO cl_abap_zip, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator. - - DATA: lv_content TYPE xstring, - lv_active TYPE flag, - lv_xl_sheet TYPE string, - lv_xl_sheet_rels TYPE string, - lv_syindex TYPE string. - - -********************************************************************** -* STEP 1: Create archive object file (ZIP) - CREATE OBJECT lo_zip. - -********************************************************************** -* STEP 2: Add [Content_Types].xml to zip - lv_content = me->create_content_types( ). - lo_zip->add( name = me->c_content_types - content = lv_content ). - -********************************************************************** -* STEP 3: Add _rels/.rels to zip - lv_content = me->create_relationships( ). - lo_zip->add( name = me->c_relationships - content = lv_content ). - -********************************************************************** -* STEP 4: Add docProps/app.xml to zip - lv_content = me->create_docprops_app( ). - lo_zip->add( name = me->c_docprops_app - content = lv_content ). - -********************************************************************** -* STEP 5: Add docProps/core.xml to zip - lv_content = me->create_docprops_core( ). - lo_zip->add( name = me->c_docprops_core - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_relationships( ). - lo_zip->add( name = me->c_xl_relationships - content = lv_content ). - -********************************************************************** -* STEP 6: Add xl/_rels/workbook.xml.rels to zip - lv_content = me->create_xl_theme( ). - lo_zip->add( name = me->c_xl_theme - content = lv_content ). - -********************************************************************** -* STEP 7: Add xl/workbook.xml to zip - lv_content = me->create_xl_workbook( ). - lo_zip->add( name = me->c_xl_workbook - content = lv_content ). - -********************************************************************** -* STEP 8: Add xl/workbook.xml to zip -* lv_content = me->create_xl_styles_static( ). - lv_content = me->create_xl_styles( ). - lo_zip->add( name = me->c_xl_styles - content = lv_content ). - -********************************************************************** -* STEP 9: Add sharedStrings.xml to zip - lv_content = me->create_xl_sharedstrings( ). - lo_zip->add( name = me->c_xl_sharedstrings - content = lv_content ). - -********************************************************************** -* STEP 10: Add sharedStrings.xml to zip - lv_content = me->create_xl_calcchain( ). - lo_zip->add( name = me->c_xl_calcchain - content = lv_content ). - -********************************************************************** -* STEP 11: Add sheet#.xml to zip - lo_iterator = me->excel->get_worksheets_iterator( ). - lo_active_worksheet = me->excel->get_active_worksheet( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_active_worksheet->get_guid( ) EQ lo_worksheet->get_guid( ). - lv_active = abap_true. - ELSE. - lv_active = abap_true. - ENDIF. - - lv_content = me->create_xl_sheet( io_worksheet = lo_worksheet - iv_active = lv_active ). - lv_xl_sheet = me->c_xl_sheet. - MOVE sy-index TO lv_syindex. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet - content = lv_content ). - - lv_xl_sheet_rels = me->c_xl_sheet_rels. - lv_content = me->create_xl_sheet_rels( ). - REPLACE ALL OCCURRENCES OF '#' IN lv_xl_sheet_rels WITH lv_syindex. - lo_zip->add( name = lv_xl_sheet_rels - content = lv_content ). - ENDWHILE. - -********************************************************************** -* STEP 11: Create the final zip - ep_excel = lo_zip->save( ). - -endmethod. - - - - method CREATE_CONTENT_TYPES. - - -** Constant node name - DATA: lc_xml_node_types TYPE string VALUE 'Types', - lc_xml_node_override TYPE string VALUE 'Override', - lc_xml_node_default TYPE string VALUE 'Default', - " Node attributes - lc_xml_attr_partname TYPE string VALUE 'PartName', - lc_xml_attr_extension TYPE string VALUE 'Extension', - lc_xml_attr_contenttype TYPE string VALUE 'ContentType', - " Node namespace - lc_xml_node_types_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/content-types', - " Node extension - lc_xml_node_rels_ext TYPE string VALUE 'rels', - lc_xml_node_xml_ext TYPE string VALUE 'xml', - " Node partnumber - lc_xml_node_theme_pn TYPE string VALUE '/xl/theme/theme1.xml', - lc_xml_node_styles_pn TYPE string VALUE '/xl/styles.xml', - lc_xml_node_workb_pn TYPE string VALUE '/xl/workbook.xml', - lc_xml_node_props_pn TYPE string VALUE '/docProps/app.xml', - lc_xml_node_worksheet_pn TYPE string VALUE '/xl/worksheets/sheet#.xml', - lc_xml_node_strings_pn TYPE string VALUE '/xl/sharedStrings.xml', - lc_xml_node_core_pn TYPE string VALUE '/docProps/core.xml', - " Node contentType - lc_xml_node_theme_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.theme+xml', - lc_xml_node_styles_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', - lc_xml_node_workb_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', - lc_xml_node_rels_ct TYPE string VALUE 'application/vnd.openxmlformats-package.relationships+xml', - lc_xml_node_xml_ct TYPE string VALUE 'application/xml', - lc_xml_node_props_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.extended-properties+xml', - lc_xml_node_worksheet_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', - lc_xml_node_strings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', - lc_xml_node_core_ct TYPE string VALUE 'application/vnd.openxmlformats-package.core-properties+xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_worksheets_num TYPE i, - lv_worksheets_numc TYPE numc3, - lv_xml_node_worksheet_pn TYPE string, - lv_xml_size TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node types - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_types - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_types_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_theme_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_theme_ct ). - lo_element_root->append_child( lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_styles_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_styles_ct ). - lo_element_root->append_child( lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_rels_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_rels_ct ). - lo_element_root->append_child( lo_element ). - - " extension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_default - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_extension - value = lc_xml_node_xml_ext ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_xml_ct ). - lo_element_root->append_child( lo_element ). - - " Workbook node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_workb_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_workb_ct ). - lo_element_root->append_child( lo_element ). - - " Properties node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_props_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_props_ct ). - lo_element_root->append_child( lo_element ). - - " Worksheet node - lv_worksheets_num = excel->get_worksheets_size( ). - DO lv_worksheets_num TIMES. - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - - MOVE sy-index TO lv_worksheets_numc. - SHIFT lv_worksheets_numc LEFT DELETING LEADING '0'. - lv_xml_node_worksheet_pn = lc_xml_node_worksheet_pn. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_worksheet_pn WITH lv_worksheets_numc. - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lv_xml_node_worksheet_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lv_xml_node_worksheet_pn ). - lo_element_root->append_child( lo_element ). - ENDDO. - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_strings_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_strings_ct ). - lo_element_root->append_child( lo_element ). - - " Strings node - lo_element = lo_document->create_simple_element( name = lc_xml_node_override - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_partname - value = lc_xml_node_core_pn ). - lo_element->set_attribute_ns( name = lc_xml_attr_contenttype - value = lc_xml_node_core_ct ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -endmethod. - - - - method CREATE_DOCPROPS_APP. - - -** Constant node name - DATA: lc_xml_node_properties TYPE string VALUE 'Properties', - lc_xml_node_application TYPE string VALUE 'Application', - lc_xml_node_docsecurity TYPE string VALUE 'DocSecurity', - lc_xml_node_scalecrop TYPE string VALUE 'ScaleCrop', - lc_xml_node_headingpairs TYPE string VALUE 'HeadingPairs', - lc_xml_node_vector TYPE string VALUE 'vector', - lc_xml_node_variant TYPE string VALUE 'variant', - lc_xml_node_lpstr TYPE string VALUE 'lpstr', - lc_xml_node_i4 TYPE string VALUE 'i4', - lc_xml_node_titlesofparts TYPE string VALUE 'TitlesOfParts', - lc_xml_node_company TYPE string VALUE 'Company', - lc_xml_node_linksuptodate TYPE string VALUE 'LinksUpToDate', - lc_xml_node_shareddoc TYPE string VALUE 'SharedDoc', - lc_xml_node_hyperlinkschanged TYPE string VALUE 'HyperlinksChanged', - lc_xml_node_appversion TYPE string VALUE 'AppVersion', - " Namespace prefix - lc_vt_ns TYPE string VALUE 'vt', - lc_xml_node_props_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', - lc_xml_node_props_vt_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', - " Node attributes - lc_xml_attr_size TYPE string VALUE 'size', - lc_xml_attr_basetype TYPE string VALUE 'baseType'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element_vector TYPE REF TO if_ixml_element, - lo_sub_element_variant TYPE REF TO if_ixml_element, - lo_sub_element_lpstr TYPE REF TO if_ixml_element, - lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node properties - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_properties - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_props_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:vt' - value = lc_xml_node_props_vt_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Application - lo_element = lo_document->create_simple_element( name = lc_xml_node_application - parent = lo_document ). - lv_value = excel->properties->application. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " DocSecurity - lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity - parent = lo_document ). - lv_value = excel->properties->docsecurity. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " ScaleCrop - lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->scalecrop ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " HeadingPairs - lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = '2' ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_variant ). - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( lv_value ). - lo_sub_element_variant->append_child( lo_sub_element_lpstr ). " lpstr node - - lo_sub_element_vector->append_child( lo_sub_element_variant ). " variant node - - " ** variant node - lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant - prefix = lc_vt_ns - parent = lo_document ). - - " *** i4 node - lo_sub_element_i4 = lo_document->create_simple_element_ns( name = lc_xml_node_i4 - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( lv_value ). - lo_sub_element_variant->append_child( lo_sub_element_i4 ). " lpstr node - - lo_sub_element_vector->append_child( lo_sub_element_variant ). " variant node - - lo_element->append_child( lo_sub_element_vector ). " vector node - - lo_element_root->append_child( lo_element ). " HeadingPairs - - - " TitlesOfParts - lo_element = lo_document->create_simple_element( name = lc_xml_node_titlesofparts - parent = lo_document ). - - - " * vector node - lo_sub_element_vector = lo_document->create_simple_element_ns( name = lc_xml_node_vector - prefix = lc_vt_ns - parent = lo_document ). - lv_value = excel->get_worksheets_size( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_size - value = lv_value ). - lo_sub_element_vector->set_attribute_ns( name = lc_xml_attr_basetype - value = lc_xml_node_lpstr ). - - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " ** lpstr node - lo_sub_element_lpstr = lo_document->create_simple_element_ns( name = lc_xml_node_lpstr - prefix = lc_vt_ns - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->title. - lo_sub_element_lpstr->set_value( lv_value ). - lo_sub_element_vector->append_child( lo_sub_element_lpstr ). " lpstr node - ENDWHILE. - - lo_element->append_child( lo_sub_element_vector ). " vector node - - lo_element_root->append_child( lo_element ). " TitlesOfParts - - - - " Company - lo_element = lo_document->create_simple_element( name = lc_xml_node_company - parent = lo_document ). - lv_value = excel->properties->company. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " LinksUpToDate - lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->linksuptodate ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " SharedDoc - lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->shareddoc ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " HyperlinksChanged - lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged - parent = lo_document ). - lv_value = me->flag2bool( excel->properties->hyperlinkschanged ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " AppVersion - lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion - parent = lo_document ). - lv_value = excel->properties->appversion. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -endmethod. - - - - method CREATE_DOCPROPS_CORE. - - -** Constant node name - DATA: lc_xml_node_coreproperties TYPE string VALUE 'coreProperties', - lc_xml_node_creator TYPE string VALUE 'creator', - lc_xml_node_lastmodifiedby TYPE string VALUE 'lastModifiedBy', - lc_xml_node_created TYPE string VALUE 'created', - lc_xml_node_modified TYPE string VALUE 'modified', - " Node attributes - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_target TYPE string VALUE 'dcterms:W3CDTF', - " Node namespace - lc_cp_ns TYPE string VALUE 'cp', - lc_dc_ns TYPE string VALUE 'dc', - lc_dcterms_ns TYPE string VALUE 'dcterms', - lc_dcmitype_ns TYPE string VALUE 'dcmitype', - lc_xsi_ns TYPE string VALUE 'xsi', - lc_xml_node_cp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', - lc_xml_node_dc_ns TYPE string VALUE 'http://purl.org/dc/elements/1.1/', - lc_xml_node_dcterms_ns TYPE string VALUE 'http://purl.org/dc/terms/', - lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', - lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_value TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node coreProperties - lo_element_root = lo_document->create_simple_element_ns( name = lc_xml_node_coreproperties - prefix = lc_cp_ns - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:cp' - value = lc_xml_node_cp_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dc' - value = lc_xml_node_dc_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcterms' - value = lc_xml_node_dcterms_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:dcmitype' - value = lc_xml_node_dcmitype_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:xsi' - value = lc_xml_node_xsi_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Creator node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_creator - prefix = lc_dc_ns - parent = lo_document ). - lv_value = excel->properties->creator. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " lastModifiedBy node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby - prefix = lc_cp_ns - parent = lo_document ). - lv_value = excel->properties->lastmodifiedby. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " Created node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - lv_value = excel->properties->created. - lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - - " Modified node - lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified - prefix = lc_dcterms_ns - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - prefix = lc_xsi_ns - value = lc_xml_attr_target ). - lv_value = excel->properties->modified. - lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -endmethod. - - - - method CREATE_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_rId1_id TYPE string VALUE 'rId1', - lc_xml_node_rId2_id TYPE string VALUE 'rId2', - lc_xml_node_rId3_id TYPE string VALUE 'rId3', - " Node type - lc_xml_node_rId1_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - lc_xml_node_rId2_tp TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - lc_xml_node_rId3_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - " Node target - lc_xml_node_rId1_tg TYPE string VALUE 'xl/workbook.xml', - lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', - lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - " Theme node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId3_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId3_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( lo_element ). - - " Styles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId2_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId2_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( lo_element ). - - " rels node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rId1_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rId1_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -endmethod. - - - - method CREATE_XL_CALCCHAIN. - - -** Constant node name - DATA: lc_xml_node_calcchain TYPE string VALUE 'calcChain', - lc_xml_node_c TYPE string VALUE 'c', - " Node attributes - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_i TYPE string VALUE 'i', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lv_value TYPE string, - lv_value_i TYPE string, - lv_sheets_count TYPE i. - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data. - -********************************************************************** -* STEP 1: Create xl/calcChain.xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node calcChain - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_calcchain - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - ADD 1 TO lv_sheets_count. - MOVE lv_sheets_count TO lv_value_i. - SHIFT lv_value_i RIGHT DELETING TRAILING space. - SHIFT lv_value_i LEFT DELETING LEADING space. - LOOP AT lo_worksheet->sheet_content ASSIGNING <ls_sheet_content> WHERE cell_formula IS NOT INITIAL. - " formula chain node - lo_element = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_i - value = lv_value_i ). - lo_element_root->append_child( lo_element ). - ENDLOOP. - ENDWHILE. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -endmethod. - - - - method CREATE_XL_RELATIONSHIPS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - " Node type - lc_xml_node_rid_sheet_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - lc_xml_node_rid_theme_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - lc_xml_node_rid_styles_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - lc_xml_node_rid_shared_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - lc_xml_node_rid_calcchain_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain', - " Node target - lc_xml_node_ridx_tg TYPE string VALUE 'worksheets/sheet#.xml', - lc_xml_node_rid_shared_tg TYPE string VALUE 'sharedStrings.xml', - lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', - lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml', - lc_xml_node_rid_calcchain_tg TYPE string VALUE 'calcChain.xml'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - - DATA: lv_xml_node_ridx_tg TYPE string, - lv_xml_node_ridx_id TYPE string, - lv_size TYPE i, - lv_syindex(2) TYPE c. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lv_size = excel->get_worksheets_size( ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size + 2. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_styles_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( lo_element ). - - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_size = lv_size - 1. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_theme_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( lo_element ). - - lv_size = excel->get_worksheets_size( ). - - DO lv_size TIMES. - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - lv_xml_node_ridx_tg = lc_xml_node_ridx_tg. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_tg WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_sheet_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( lo_element ). - ENDDO. - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 3 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_shared_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( lo_element ). - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - ADD 1 TO lv_size. - lv_syindex = lv_size. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_xml_node_ridx_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_calcchain_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_calcchain_tg ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -endmethod. - - - - method CREATE_XL_SHAREDSTRINGS. - - -** Constant node name - DATA: lc_xml_node_sst TYPE string VALUE 'sst', - lc_xml_node_si TYPE string VALUE 'si', - lc_xml_node_t TYPE string VALUE 't', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, - ls_shared_string TYPE zexcel_s_shared_string, - lv_value TYPE string, - lv_count_str TYPE string, - lv_uniquecount_str TYPE string, - lv_sytabix TYPE sytabix, - lv_count TYPE i, - lv_uniquecount TYPE i. - - FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data, - <fs_sheet_string> TYPE zexcel_s_shared_string. - -********************************************************************** -* STEP 1: Collect strings from each worksheet - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data. - ENDWHILE. - - DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL. " delete formula content - - DESCRIBE TABLE lt_cell_data LINES lv_count. - MOVE lv_count TO lv_count_str. - - SHIFT lv_count_str RIGHT DELETING TRAILING space. - SHIFT lv_count_str LEFT DELETING LEADING space. - - SORT lt_cell_data BY cell_value. - DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value. - - DESCRIBE TABLE lt_cell_data LINES lv_uniquecount. - MOVE lv_uniquecount TO lv_uniquecount_str. - - SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. - SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - lv_sytabix = sy-tabix - 1. - MOVE lv_sytabix TO ls_shared_string-string_no. - MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. - APPEND ls_shared_string TO shared_strings. - ENDLOOP. - - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_sst - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_count - value = lv_count_str ). - lo_element_root->set_attribute_ns( name = lc_xml_attr_uniquecount - value = lv_uniquecount_str ). - -********************************************************************** -* STEP 4: Create subnode - LOOP AT shared_strings ASSIGNING <fs_sheet_string>. - lo_element = lo_document->create_simple_element( name = lc_xml_node_si - parent = lo_document ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). - lo_sub_element->set_value( <fs_sheet_string>-string_value ). - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). - ENDLOOP. - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -endmethod. - - - - - - METHOD create_xl_sheet. - - -** Constant node name - DATA: lc_xml_node_worksheet TYPE string VALUE 'worksheet', - lc_xml_node_dimension TYPE string VALUE 'dimension', - lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', - lc_xml_node_sheetview TYPE string VALUE 'sheetView', - lc_xml_node_selection TYPE string VALUE 'selection', - lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', - lc_xml_node_sheetdata TYPE string VALUE 'sheetData', - lc_xml_node_row TYPE string VALUE 'row', - lc_xml_node_c TYPE string VALUE 'c', - lc_xml_node_v TYPE string VALUE 'v', - lc_xml_node_f TYPE string VALUE 'f', - lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', - lc_xml_node_condformatting TYPE string VALUE 'conditionalFormatting', - lc_xml_node_cfrule TYPE string VALUE 'cfRule', - lc_xml_node_iconset TYPE string VALUE 'iconSet', - lc_xml_node_cfvo TYPE string VALUE 'cfvo', - lc_xml_node_formula TYPE string VALUE 'formula', - lc_xml_node_datavalidations TYPE string VALUE 'dataValidations', - lc_xml_node_datavalidation TYPE string VALUE 'dataValidation', - lc_xml_node_formula1 TYPE string VALUE 'formula1', - " Node attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_tabselected TYPE string VALUE 'tabSelected', - lc_xml_attr_workbookviewid TYPE string VALUE 'workbookViewId', - lc_xml_attr_activecell TYPE string VALUE 'activeCell', - lc_xml_attr_sqref TYPE string VALUE 'sqref', - lc_xml_attr_defaultrowheight TYPE string VALUE 'defaultRowHeight', - lc_xml_attr_r TYPE string VALUE 'r', - lc_xml_attr_s TYPE string VALUE 's', - lc_xml_attr_spans TYPE string VALUE 'spans', - lc_xml_attr_t TYPE string VALUE 't', - lc_xml_attr_left TYPE string VALUE 'left', - lc_xml_attr_right TYPE string VALUE 'right', - lc_xml_attr_top TYPE string VALUE 'top', - lc_xml_attr_bottom TYPE string VALUE 'bottom', - lc_xml_attr_header TYPE string VALUE 'header', - lc_xml_attr_footer TYPE string VALUE 'footer', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_iconset TYPE string VALUE 'iconSet', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_dxfid TYPE string VALUE 'dxfId', - lc_xml_attr_priority TYPE string VALUE 'priority', - lc_xml_attr_operator TYPE string VALUE 'operator', - lc_xml_attr_allowblank TYPE string VALUE 'allowBlank', - lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage', - lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_element_2 TYPE REF TO if_ixml_element, - lo_element_3 TYPE REF TO if_ixml_element, - lo_element_4 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - - DATA: lv_value TYPE string, - lt_percent_val TYPE TABLE OF string, - ls_percent_val TYPE string, - lv_cell_row_s TYPE string, - ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping. - - FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_worksheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " dimension node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension - parent = lo_document ). - lv_value = io_worksheet->get_dimension_range( ). - lo_element->set_attribute_ns( name = lc_xml_attr_ref - value = lv_value ). - lo_element_root->append_child( lo_element ). - - " sheetViews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews - parent = lo_document ). - " sheetView node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_sheetview - parent = lo_document ). - IF iv_active EQ abap_true. - lo_element_2->set_attribute_ns( name = lc_xml_attr_tabselected - value = '1' ). - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid - value = '0' ). - - " selection node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection - parent = lo_document ). - lv_value = io_worksheet->get_active_cell( ). - lo_element_3->set_attribute_ns( name = lc_xml_attr_activecell - value = lv_value ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - lo_element_2->append_child( lo_element_3 ). " sheetView node - - lo_element->append_child( lo_element_2 ). " sheetView node - - lo_element_root->append_child( lo_element ). " sheetViews node - - - " sheetFormatPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetformatpr - parent = lo_document ). - lv_value = io_worksheet->defaultrowheight. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight - value = lv_value ). - lo_element_root->append_child( lo_element ). " sheetFormatPr node - - " sheetData node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata - parent = lo_document ). - LOOP AT io_worksheet->sheet_content ASSIGNING <ls_sheet_content>. - CLEAR ls_style_mapping. - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = '1:1' ). " <******************************* - ENDIF. - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c - parent = lo_document ). - - lo_element_3->set_attribute_ns( name = lc_xml_attr_r - value = <ls_sheet_content>-cell_coords ). - - IF <ls_sheet_content>-cell_style IS NOT INITIAL. - READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-cell_style. - lv_value = ls_style_mapping-style. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_3->set_attribute_ns( name = lc_xml_attr_s - value = lv_value ). - ENDIF. - IF ls_style_mapping-cell_format IS INITIAL. " to avoid errors if no style has been created - IF <ls_sheet_content>-cell_formula IS INITIAL. - ls_style_mapping-cell_format = 'S'. - ELSE. - ls_style_mapping-cell_format = 'F'. - ENDIF. - ENDIF. - " is a shared string and is not a formula - IF ls_style_mapping-cell_format EQ 'S'. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t - value = 's' ). - ENDIF. - IF <ls_sheet_content>-cell_formula IS NOT INITIAL. - " fomula node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f - parent = lo_document ). - lv_value = <ls_sheet_content>-cell_formula. - lo_element_4->set_value( lv_value ). - lo_element_3->append_child( lo_element_4 ). " fomula node - ENDIF. - " value node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v - parent = lo_document ). - - IF ls_style_mapping-cell_format EQ 'S'. - lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_4->set_value( lv_value ). - ELSE. - lv_value = <ls_sheet_content>-cell_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_4->set_value( lv_value ). - ENDIF. - - lo_element_3->append_child( lo_element_4 ). " value node - - lo_element_2->append_child( lo_element_3 ). " column node - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - lo_element->append_child( lo_element_2 ). " row node - ls_last_row = <ls_sheet_content>. - ENDIF. - - ENDLOOP. - lo_element_root->append_child( lo_element ). " sheetData node - - " Conditional formatting node - lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->get_next( ). - IF lo_style_conditional->rule IS INITIAL. - CONTINUE. - ENDIF. - lo_element = lo_document->create_simple_element( name = lc_xml_node_condformatting - parent = lo_document ). - lv_value = lo_style_conditional->get_dimension_range( ) . - lo_element->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - - " cfRule node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_cfrule - parent = lo_document ). - lv_value = lo_style_conditional->rule. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - lv_value = lo_style_conditional->priority. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_priority - value = lv_value ). - - CASE lo_style_conditional->rule. - WHEN zcl_excel_style_conditional=>c_rule_iconset. - CLEAR lt_percent_val. - " iconset node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_iconset - parent = lo_document ). - IF lo_style_conditional->iconset NE zcl_excel_style_conditional=>c_iconset_3trafficlights. - lv_value = lo_style_conditional->iconset. - lo_element_3->set_attribute_ns( name = lc_xml_attr_iconset - value = lv_value ). - ENDIF. - - CASE lo_style_conditional->iconset. - WHEN zcl_excel_style_conditional=>c_iconset_3trafficlights2 OR - zcl_excel_style_conditional=>c_iconset_3arrows OR - zcl_excel_style_conditional=>c_iconset_3arrowsgray OR - zcl_excel_style_conditional=>c_iconset_3flags OR - zcl_excel_style_conditional=>c_iconset_3signs OR - zcl_excel_style_conditional=>c_iconset_3symbols OR - zcl_excel_style_conditional=>c_iconset_3symbols2 OR - zcl_excel_style_conditional=>c_iconset_3trafficlights OR - zcl_excel_style_conditional=>c_iconset_3trafficlights2. - APPEND '0' TO lt_percent_val. - APPEND '33' TO lt_percent_val. - APPEND '67' TO lt_percent_val. - WHEN zcl_excel_style_conditional=>c_iconset_4arrows OR - zcl_excel_style_conditional=>c_iconset_4arrowsgray OR - zcl_excel_style_conditional=>c_iconset_4rating OR - zcl_excel_style_conditional=>c_iconset_4redtoblack OR - zcl_excel_style_conditional=>c_iconset_4trafficlights. - APPEND '0' TO lt_percent_val. - APPEND '25' TO lt_percent_val. - APPEND '50' TO lt_percent_val. - APPEND '75' TO lt_percent_val. - WHEN zcl_excel_style_conditional=>c_iconset_5arrows OR - zcl_excel_style_conditional=>c_iconset_5arrowsgray OR - zcl_excel_style_conditional=>c_iconset_5quarters OR - zcl_excel_style_conditional=>c_iconset_5rating. - APPEND '0' TO lt_percent_val. - APPEND '20' TO lt_percent_val. - APPEND '40' TO lt_percent_val. - APPEND '60' TO lt_percent_val. - APPEND '80' TO lt_percent_val. - WHEN OTHERS. - CLEAR lt_percent_val. - ENDCASE. - - LOOP AT lt_percent_val INTO ls_percent_val. - " cfvo node - lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_cfvo - parent = lo_document ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_type - value = 'percent' ). - lo_element_4->set_attribute_ns( name = lc_xml_attr_val - value = ls_percent_val ). - lo_element_3->append_child( lo_element_4 ). " cfvo node - ENDLOOP. - - - lo_element_2->append_child( lo_element_3 ). " iconset node - WHEN zcl_excel_style_conditional=>c_rule_cellis. - lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid - value = '0' ). " @TODO <***************************** - lv_value = lo_style_conditional->operator. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " formula node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula - parent = lo_document ). - lv_value = lo_style_conditional->formula. - lo_element_3->set_value( lv_value ). - lo_element_2->append_child( lo_element_3 ). " formula node - - ENDCASE. - - lo_element->append_child( lo_element_2 ). " cfRule node - - lo_element_root->append_child( lo_element ). " Conditional formatting node - ENDWHILE. - - - IF io_worksheet->get_data_validations_size( ) GT 0. - " dataValidations node - lo_element = lo_document->create_simple_element( name = lc_xml_node_datavalidations - parent = lo_document ). - " Conditional formatting node - lo_iterator = io_worksheet->get_data_validations_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_data_validation ?= lo_iterator->get_next( ). - " dataValidation node - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_datavalidation - parent = lo_document ). - lv_value = lo_data_validation->type. - lo_element_2->set_attribute_ns( name = lc_xml_attr_type - value = lv_value ). - IF lo_data_validation->allowblank EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_allowblank - value = lv_value ). - IF lo_data_validation->showinputmessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showinputmessage - value = lv_value ). - IF lo_data_validation->showerrormessage EQ abap_true. - lv_value = '1'. - ELSE. - lv_value = '0'. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_showerrormessage - value = lv_value ). - lv_cell_row_s = lo_data_validation->cell_row. - SHIFT lv_cell_row_s RIGHT DELETING TRAILING space. - SHIFT lv_cell_row_s LEFT DELETING LEADING space. - CONCATENATE lo_data_validation->cell_column lv_cell_row_s INTO lv_value. - lo_element_2->set_attribute_ns( name = lc_xml_attr_sqref - value = lv_value ). - " formula1 node - lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula1 - parent = lo_document ). - lv_value = lo_data_validation->value. - lo_element_3->set_value( lv_value ). - - lo_element_2->append_child( lo_element_3 ). " formula1 node - - lo_element->append_child( lo_element_2 ). " dataValidation node - ENDWHILE. - lo_element_root->append_child( lo_element ). " dataValidations node - ENDIF. - - " pageMargins node - lo_element = lo_document->create_simple_element( name = lc_xml_node_pagemargins - parent = lo_document ). - - lo_element->set_attribute_ns( name = lc_xml_attr_left - value = '0.7' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_right - value = '0.7' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_top - value = '0.75' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_bottom - value = '0.75' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_header - value = '0.3' ). " @TODO <***************************** - lo_element->set_attribute_ns( name = lc_xml_attr_footer - value = '0.3' ). " @TODO <***************************** - lo_element_root->append_child( lo_element ). " sheetFormatPr node - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - method CREATE_XL_SHEET_RELS. - - -** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', - " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#', - lc_xml_node_rid_print_id TYPE string VALUE 'rId1', - " Node type - lc_xml_node_rid_print_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - " Node target - lc_xml_node_rid_print_tg TYPE string VALUE '../printerSettings/printerSettings1.bin'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_rels_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - " Relationship node - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lc_xml_node_rid_print_id ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_print_tp ). - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lc_xml_node_rid_print_tg ). - lo_element_root->append_child( lo_element ). - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -endmethod. - - - - method CREATE_XL_STYLES. - - -** Constant node name - DATA: lc_xml_node_stylesheet TYPE string VALUE 'styleSheet', - " font - lc_xml_node_fonts TYPE string VALUE 'fonts', - lc_xml_node_font TYPE string VALUE 'font', - lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - " fill - lc_xml_node_fills TYPE string VALUE 'fills', - lc_xml_node_fill TYPE string VALUE 'fill', - lc_xml_node_patternfill TYPE string VALUE 'patternFill', - lc_xml_node_fgcolor TYPE string VALUE 'fgColor', - lc_xml_node_bgcolor TYPE string VALUE 'bgColor', - lc_xml_node_gradientfill TYPE string VALUE 'gradientFill', - lc_xml_node_stop TYPE string VALUE 'stop', - " borders - lc_xml_node_borders TYPE string VALUE 'borders', - lc_xml_node_border TYPE string VALUE 'border', - lc_xml_node_left TYPE string VALUE 'left', - lc_xml_node_right TYPE string VALUE 'right', - lc_xml_node_top TYPE string VALUE 'top', - lc_xml_node_bottom TYPE string VALUE 'bottom', - lc_xml_node_diagonal TYPE string VALUE 'diagonal', - " Styles - lc_xml_node_cellstylexfs TYPE string VALUE 'cellStyleXfs', - lc_xml_node_xf TYPE string VALUE 'xf', - lc_xml_node_cellxfs TYPE string VALUE 'cellXfs', - lc_xml_node_cellstyles TYPE string VALUE 'cellStyles', - lc_xml_node_cellstyle TYPE string VALUE 'cellStyle', - lc_xml_node_dxfs TYPE string VALUE 'dxfs', - lc_xml_node_tablestyles TYPE string VALUE 'tableStyles', - " Colors - lc_xml_node_colors TYPE string VALUE 'colors', - lc_xml_node_mrucolors TYPE string VALUE 'mruColors', - " Node attributes - lc_xml_attr_count TYPE string VALUE 'count', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_theme TYPE string VALUE 'theme', - lc_xml_attr_rgb TYPE string VALUE 'rgb', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_position TYPE string VALUE 'position', - lc_xml_attr_degree TYPE string VALUE 'degree', - lc_xml_attr_patterntype TYPE string VALUE 'patternType', - lc_xml_attr_numfmtid TYPE string VALUE 'numFmtId', - lc_xml_attr_fontid TYPE string VALUE 'fontId', - lc_xml_attr_fillid TYPE string VALUE 'fillId', - lc_xml_attr_borderid TYPE string VALUE 'borderId', - lc_xml_attr_xfid TYPE string VALUE 'xfId', - lc_xml_attr_applynumberformat TYPE string VALUE 'applyNumberFormat', - lc_xml_attr_applyfont TYPE string VALUE 'applyFont', - lc_xml_attr_applyfill TYPE string VALUE 'applyFill', - lc_xml_attr_applyborder TYPE string VALUE 'applyBorder', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_builtinid TYPE string VALUE 'builtinId', - lc_xml_attr_defaulttablestyle TYPE string VALUE 'defaultTableStyle', - lc_xml_attr_defaultpivotstyle TYPE string VALUE 'defaultPivotStyle', - " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element_fonts TYPE REF TO if_ixml_element, - lo_element_font TYPE REF TO if_ixml_element, - lo_element_fills TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_borders TYPE REF TO if_ixml_element, - lo_element_border TYPE REF TO if_ixml_element, - lo_element_cellxfs TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_style TYPE REF TO zcl_excel_style. - - - DATA: lt_fonts TYPE zexcel_t_style_font, - ls_font TYPE zexcel_s_style_font, - lt_fills TYPE zexcel_t_style_fill, - ls_fill TYPE zexcel_s_style_fill, - lt_borders TYPE zexcel_t_style_border, - ls_border TYPE zexcel_s_style_border, - ls_format TYPE zexcel_number_format, - lt_cellxfs TYPE zexcel_t_cellxfs, - ls_cellxfs TYPE zexcel_s_cellxfs, - ls_styles_mapping TYPE zexcel_s_styles_mapping, - lt_colors TYPE TABLE OF zexcel_style_color_argb, - ls_color TYPE zexcel_style_color_argb. - - DATA: lv_value TYPE string, - lv_fonts_count TYPE i, - lv_fills_count TYPE i, - lv_borders_count TYPE i, - lv_cellxfs_count TYPE i. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -*********************************************************************** -* STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_stylesheet - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - -********************************************************************** -* STEP 4: Create subnodes - - lo_element_fonts = lo_document->create_simple_element( name = lc_xml_node_fonts - parent = lo_document ). - - lo_element_fills = lo_document->create_simple_element( name = lc_xml_node_fills - parent = lo_document ). - - lo_element_borders = lo_document->create_simple_element( name = lc_xml_node_borders - parent = lo_document ). - - lo_element_cellxfs = lo_document->create_simple_element( name = lc_xml_node_cellxfs - parent = lo_document ). - -* Compress styles - lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_style ?= lo_iterator->get_next( ). - ls_font = lo_style->font->get_structure( ). - ls_fill = lo_style->fill->get_structure( ). - ls_border = lo_style->borders->get_structure( ). - ls_format = lo_style->number_format->get_structure( ). - - -* Compress fonts - READ TABLE lt_fonts FROM ls_font TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fontid = sy-tabix. - ELSE. - APPEND ls_font TO lt_fonts. - DESCRIBE TABLE lt_fonts LINES ls_cellxfs-fontid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fontid. - -* Compress fills - READ TABLE lt_fills FROM ls_fill TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-fillid = sy-tabix. - ELSE. - APPEND ls_fill TO lt_fills. - DESCRIBE TABLE lt_fills LINES ls_cellxfs-fillid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-fillid. - -* Compress borders - READ TABLE lt_borders FROM ls_border TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_cellxfs-borderid = sy-tabix. - ELSE. - APPEND ls_border TO lt_borders. - DESCRIBE TABLE lt_borders LINES ls_cellxfs-borderid. - ENDIF. - SUBTRACT 1 FROM ls_cellxfs-borderid. - - IF ls_format IS INITIAL. - ls_cellxfs-numfmtid = 0. " number format - ELSE. - ls_cellxfs-numfmtid = ls_format. " number format - ENDIF. - ls_cellxfs-xfid = 0. - - IF ls_format IS NOT INITIAL. - ls_cellxfs-applynumberformat = 1. - ls_styles_mapping-cell_format = 'I'. - ELSE. - ls_cellxfs-applynumberformat = 0. - ls_styles_mapping-cell_format = 'S'. - ENDIF. - IF ls_cellxfs-fontid NE 0. - ls_cellxfs-applyfont = 1. - ELSE. - ls_cellxfs-applyfont = 0. - ENDIF. - IF ls_cellxfs-fillid NE 0. - ls_cellxfs-applyfill = 1. - ELSE. - ls_cellxfs-applyfill = 0. - ENDIF. - IF ls_cellxfs-borderid NE 0. - ls_cellxfs-applyborder = 1. - ELSE. - ls_cellxfs-applyborder = 0. - ENDIF. - -* Remap styles - READ TABLE lt_cellxfs FROM ls_cellxfs TRANSPORTING NO FIELDS. - IF sy-subrc EQ 0. - ls_styles_mapping-style = sy-tabix. - ELSE. - APPEND ls_cellxfs TO lt_cellxfs. - DESCRIBE TABLE lt_cellxfs LINES ls_styles_mapping-style. - ENDIF. - SUBTRACT 1 FROM ls_styles_mapping-style. - ls_styles_mapping-guid = lo_style->get_guid( ). - APPEND ls_styles_mapping TO me->styles_mapping. - ENDWHILE. - - " create font elements - LOOP AT lt_fonts INTO ls_font. - lo_element_font = lo_document->create_simple_element( name = lc_xml_node_font - parent = lo_document ). - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz - parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "color - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_font-color. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "name - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name - parent = lo_document ). - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family - parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - "scheme - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - lo_element_fonts->append_child( lo_element_font ). - " Collect color - APPEND ls_font-color TO lt_colors. - ENDLOOP. - - " create fill elements - LOOP AT lt_fills INTO ls_fill. - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - IF ls_fill-fgcolor IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_fgcolor - parent = lo_document ). - lv_value = ls_fill-fgcolor. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - - lo_sub_element->append_child( lo_sub_element_2 )." fgcolor - ENDIF. - " bgcolor - IF ls_fill-bgcolor IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_bgcolor - parent = lo_document ). - lv_value = ls_fill-bgcolor. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indexed - value = lv_value ). - - lo_sub_element->append_child( lo_sub_element_2 )." bgcolor - ENDIF. - - lo_element_fill->append_child( lo_sub_element )."pattern - lo_element_fills->append_child( lo_element_fill ). - " Collect color - IF ls_fill-fgcolor IS NOT INITIAL. - APPEND ls_fill-fgcolor TO lt_colors. - ENDIF. - ENDLOOP. - - " create border elements - LOOP AT lt_borders INTO ls_border. - lo_element_border = lo_document->create_simple_element( name = lc_xml_node_border - parent = lo_document ). - "left - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_left - parent = lo_document ). - IF ls_border-left_style IS NOT INITIAL. - lv_value = ls_border-left_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-left_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-left_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-left_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "right - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right - parent = lo_document ). - IF ls_border-right_style IS NOT INITIAL. - lv_value = ls_border-right_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-right_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-right_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-right_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "top - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top - parent = lo_document ). - IF ls_border-top_style IS NOT INITIAL. - lv_value = ls_border-top_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-top_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-top_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-top_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "bottom - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom - parent = lo_document ). - IF ls_border-bottom_style IS NOT INITIAL. - lv_value = ls_border-bottom_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-bottom_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-bottom_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-bottom_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - - "diagonal - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal - parent = lo_document ). - IF ls_border-diagonal_style IS NOT INITIAL. - lv_value = ls_border-diagonal_style. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_style - value = lv_value ). - ENDIF. - IF ls_border-diagonal_color IS NOT INITIAL. - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_border-diagonal_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color -* Collect color - APPEND ls_border-diagonal_color TO lt_colors. - ENDIF. - lo_element_border->append_child( lo_sub_element ). - lo_element_borders->append_child( lo_element_border ). - ENDLOOP. - - " update attribute "count" - DESCRIBE TABLE lt_fonts LINES lv_fonts_count. - MOVE lv_fonts_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fonts->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_fills LINES lv_fills_count. - MOVE lv_fills_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_fills->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_borders LINES lv_borders_count. - MOVE lv_borders_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_borders->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - DESCRIBE TABLE lt_cellxfs LINES lv_cellxfs_count. - MOVE lv_cellxfs_count TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_cellxfs->set_attribute_ns( name = lc_xml_attr_count - value = lv_value ). - - " Append to root node - lo_element_root->append_child( lo_element_fonts ). - lo_element_root->append_child( lo_element_fills ). - lo_element_root->append_child( lo_element_borders ). - - " cellstylexfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fontid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_fillid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid - value = '0' ). - - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). - - LOOP AT lt_cellxfs INTO ls_cellxfs. - lo_element = lo_document->create_simple_element( name = lc_xml_node_xf - parent = lo_document ). - MOVE ls_cellxfs-numfmtid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_numfmtid - value = lv_value ). - MOVE ls_cellxfs-fontid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fontid - value = lv_value ). - MOVE ls_cellxfs-fillid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_fillid - value = lv_value ). - MOVE ls_cellxfs-borderid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_borderid - value = lv_value ). - MOVE ls_cellxfs-xfid TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_xfid - value = lv_value ). - IF ls_cellxfs-applynumberformat EQ 1. - MOVE ls_cellxfs-applynumberformat TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applynumberformat - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfont EQ 1. - MOVE ls_cellxfs-applyfont TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfont - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyfill EQ 1. - MOVE ls_cellxfs-applyfill TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyfill - value = lv_value ). - ENDIF. - IF ls_cellxfs-applyborder EQ 1. - MOVE ls_cellxfs-applyborder TO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_applyborder - value = lv_value ). - ENDIF. - lo_element_cellxfs->append_child( lo_element ). - ENDLOOP. - - lo_element_root->append_child( lo_element_cellxfs ). - - " cellStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '1' ). - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_cellstyle - parent = lo_document ). - - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = 'Normal' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xfid - value = '0' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid - value = '0' ). - - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). - - " dxfs node - lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element_root->append_child( lo_element ). - - " tableStyles node - lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_count - value = '0' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaulttablestyle - value = 'TableStyleMedium9' ). - lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle - value = 'PivotStyleLight16' ). - lo_element_root->append_child( lo_element ). - - " colors node - lo_element = lo_document->create_simple_element( name = lc_xml_node_colors - parent = lo_document ). - " mruColors node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_mrucolors - parent = lo_document ). - - SORT lt_colors. - DELETE ADJACENT DUPLICATES FROM lt_colors. - - LOOP AT lt_colors INTO ls_color. - " color node - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_color - parent = lo_document ). - lv_value = ls_color. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb - value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color node - ENDLOOP. - - lo_element->append_child( lo_sub_element )." mruColors node - lo_element_root->append_child( lo_element )." colors node - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -endmethod. - - - - method CREATE_XL_THEME. - - -* @TODO * - - DATA: lv_xl_theme TYPE string, - lv_xl_theme_01 TYPE string, - lv_xl_theme_02 TYPE string, - lv_xl_theme_03 TYPE string, - lv_xl_theme_04 TYPE string, - lv_xl_theme_05 TYPE string, - lv_xl_theme_06 TYPE string, - lv_xl_theme_07 TYPE string, - lv_xl_theme_08 TYPE string, - lv_xl_theme_09 TYPE string, - lv_xl_theme_10 TYPE string, - lv_xl_theme_11 TYPE string, - lv_xl_theme_12 TYPE string, - lv_xl_theme_13 TYPE string, - lv_xl_theme_14 TYPE string, - lv_xl_theme_15 TYPE string, - lv_xl_theme_16 TYPE string, - lv_xl_theme_17 TYPE string, - lv_xl_theme_18 TYPE string, - lv_xl_theme_19 TYPE string, - lv_xl_theme_20 TYPE string, - lv_xl_theme_21 TYPE string, - lv_xl_theme_22 TYPE string, - lv_xl_theme_23 TYPE string, - lv_xl_theme_24 TYPE string, - lv_xl_theme_25 TYPE string, - lv_xl_theme_26 TYPE string, - lv_xl_theme_27 TYPE string, - lv_xl_theme_28 TYPE string, - lv_xl_theme_29 TYPE string, - lv_xl_theme_30 TYPE string, - lv_xl_theme_31 TYPE string, - lv_xl_theme_32 TYPE string. - - lv_xl_theme_01 = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'. - lv_xl_theme_02 = '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" '. - lv_xl_theme_03 = 'lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr '. - lv_xl_theme_04 = 'val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink>'. - lv_xl_theme_05 = '<a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_06 = '<a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" '. - lv_xl_theme_07 = 'typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font '. - lv_xl_theme_08 = 'script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" '. - lv_xl_theme_09 = 'typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_10 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_11 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/>'. - lv_xl_theme_12 = '<a:font script="Arab" typeface="Arial"/><a:font script="Hebr" '. - lv_xl_theme_13 = 'typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font '. - lv_xl_theme_14 = 'script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font '. - lv_xl_theme_15 = 'script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" '. - lv_xl_theme_16 = 'typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" '. - lv_xl_theme_17 = 'typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_18 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod '. - lv_xl_theme_19 = 'val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1">'. - lv_xl_theme_20 = '<a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs '. - lv_xl_theme_21 = 'pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" '. - lv_xl_theme_22 = 'algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr '. - lv_xl_theme_23 = 'val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst>'. - lv_xl_theme_24 = '<a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst>'. - lv_xl_theme_25 = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" '. - lv_xl_theme_26 = 'dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig '. - lv_xl_theme_27 = 'rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/>'. - lv_xl_theme_28 = '</a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade '. - lv_xl_theme_29 = 'val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" '. - lv_xl_theme_30 = 't="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr '. - lv_xl_theme_31 = 'val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme>'. - lv_xl_theme_32 = '</a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>'. - - - CONCATENATE lv_xl_theme_01 lv_xl_theme_02 lv_xl_theme_03 lv_xl_theme_04 lv_xl_theme_05 lv_xl_theme_06 lv_xl_theme_07 lv_xl_theme_08 lv_xl_theme_09 lv_xl_theme_10 lv_xl_theme_11 lv_xl_theme_12 lv_xl_theme_13 lv_xl_theme_14 lv_xl_theme_15 - lv_xl_theme_16 lv_xl_theme_17 lv_xl_theme_18 lv_xl_theme_19 lv_xl_theme_20 lv_xl_theme_21 lv_xl_theme_22 lv_xl_theme_23 lv_xl_theme_24 lv_xl_theme_25 lv_xl_theme_26 lv_xl_theme_27 lv_xl_theme_28 lv_xl_theme_29 lv_xl_theme_30 - lv_xl_theme_31 lv_xl_theme_32 - INTO lv_xl_theme SEPARATED BY space. - - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - text = lv_xl_theme - IMPORTING - buffer = ep_content. - - -endmethod. - - - - METHOD create_xl_workbook. - - -** Constant node name - DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', - lc_xml_node_fileversion TYPE string VALUE 'fileVersion', - lc_xml_node_workbookpr TYPE string VALUE 'workbookPr', - lc_xml_node_bookviews TYPE string VALUE 'bookViews', - lc_xml_node_workbookview TYPE string VALUE 'workbookView', - lc_xml_node_sheets TYPE string VALUE 'sheets', - lc_xml_node_sheet TYPE string VALUE 'sheet', - lc_xml_node_calcpr TYPE string VALUE 'calcPr', - lc_xml_node_definednames TYPE string VALUE 'definedNames', - lc_xml_node_definedname TYPE string VALUE 'definedName', - " Node attributes - lc_xml_attr_appname TYPE string VALUE 'appName', - lc_xml_attr_lastedited TYPE string VALUE 'lastEdited', - lc_xml_attr_lowestedited TYPE string VALUE 'lowestEdited', - lc_xml_attr_rupbuild TYPE string VALUE 'rupBuild', - lc_xml_attr_themeversion TYPE string VALUE 'defaultThemeVersion', - lc_xml_attr_xwindow TYPE string VALUE 'xWindow', - lc_xml_attr_ywindow TYPE string VALUE 'yWindow', - lc_xml_attr_windowwidth TYPE string VALUE 'windowWidth', - lc_xml_attr_windowheight TYPE string VALUE 'windowHeight', - lc_xml_attr_name TYPE string VALUE 'name', - lc_xml_attr_sheetid TYPE string VALUE 'sheetId', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_calcid TYPE string VALUE 'calcId', - " Node namespace - lc_r_ns TYPE string VALUE 'r', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - " Node id - lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_sub_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range. - - DATA: lv_xml_node_ridx_id TYPE string, - lv_value TYPE string, - lv_syindex TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - -********************************************************************** -* STEP 3: Create main node - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_workbook - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). - lo_element_root->set_attribute_ns( name = 'xmlns:r' - value = lc_xml_node_r_ns ). - -********************************************************************** -* STEP 4: Create subnode - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_fileversion - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_appname - value = 'xl' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lastedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_lowestedited - value = '4' ). - lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild - value = '4506' ). - lo_element_root->append_child( lo_element ). - - " fileVersion node - lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_themeversion - value = '124226' ). - lo_element_root->append_child( lo_element ). - - " bookviews node - lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews - parent = lo_document ). - " bookview node - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_workbookview - parent = lo_document ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_xwindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_ywindow - value = '120' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowwidth - value = '19035' ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight - value = '8445' ). - lo_element->append_child( lo_sub_element )." bookview node - lo_element_root->append_child( lo_element )." bookviews node - - " sheets node - lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets - parent = lo_document ). - lo_iterator = excel->get_worksheets_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " sheet node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet - parent = lo_document ). - lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_worksheet->title. - lv_syindex = sy-index. - SHIFT lv_syindex RIGHT DELETING TRAILING space. - SHIFT lv_syindex LEFT DELETING LEADING space. - lv_xml_node_ridx_id = lc_xml_node_ridx_id. - REPLACE ALL OCCURRENCES OF '#' IN lv_xml_node_ridx_id WITH lv_syindex. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_sheetid - value = lv_syindex ). - lo_sub_element->set_attribute_ns( name = lc_xml_attr_id - prefix = lc_r_ns - value = lv_xml_node_ridx_id ). - lo_element->append_child( lo_sub_element ). " sheet node - ENDWHILE. - lo_element_root->append_child( lo_element )." sheets node - - - " ranges node - lo_element = lo_document->create_simple_element( name = lc_xml_node_definedNames - parent = lo_document ). - lo_iterator = excel->get_ranges_iterator( ). - - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - " range node - lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedName - parent = lo_document ). - lo_range ?= lo_iterator->if_object_collection_iterator~get_next( ). - lv_value = lo_range->name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_name - value = lv_value ). - lv_value = lo_range->get_value( ). - lo_sub_element->set_value( lv_value ). - lo_element->append_child( lo_sub_element ). " range node - ENDWHILE. - lo_element_root->append_child( lo_element )." ranges node - - " calcPr node - lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr - parent = lo_document ). - lo_element->set_attribute_ns( name = lc_xml_attr_calcid - value = '125725' ). - lo_element_root->append_child( lo_element ). - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -ENDMETHOD. - - - - - method FLAG2BOOL. - - - IF ip_flag EQ abap_true. - ep_boolean = 'true'. - ELSE. - ep_boolean = 'false'. - ENDIF. -endmethod. - - - - - method GET_SHARED_STRING_INDEX. - - - DATA ls_shared_string TYPE zexcel_s_shared_string. - - READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value. - ep_index = ls_shared_string-string_no. - -endmethod. - - - - class ZCL_EXCEL definition - public - final - create public . - -*"* public components of class ZCL_EXCEL -*"* do not include other source files here!!! -public section. - - constants C_XLS type ZEXCEL_FORMAT value 'XLS'. "#EC NOTEXT - constants C_XLSX type ZEXCEL_FORMAT value 'XLSX'. "#EC NOTEXT - data PROPERTIES type ref to ZCL_EXCEL_PROPERTIES . - data SECURITY type ref to ZCL_EXCEL_SECURITY . - - methods ADD_NEW_DRAWING - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional - returning - value(EO_DRAWING) type ref to ZCL_EXCEL_DRAWING . - methods ADD_NEW_RANGE - returning - value(EO_RANGE) type ref to ZCL_EXCEL_RANGE . - methods ADD_NEW_STYLE - returning - value(EO_STYLE) type ref to ZCL_EXCEL_STYLE . - methods ADD_NEW_WORKSHEET - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods CONSTRUCTOR . - methods GET_ACTIVE_WORKSHEET - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods GET_DRAWINGS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_RANGES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_STYLES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_WORKSHEETS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_WORKSHEETS_NAME - returning - value(EP_NAME) type ZEXCEL_WORKSHEETS_NAME . - methods GET_WORKSHEETS_SIZE - returning - value(EP_SIZE) type I . - methods SAVE_AS - importing - !IP_FORMAT type ZEXCEL_FORMAT - returning - value(EP_FILE) type XSTRING . - *"* protected components of class ZABAP_EXCEL -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL -*"* do not include other source files here!!! -private section. - - data DRAWINGS type ref to ZCL_EXCEL_DRAWINGS . - data RANGES type ref to ZCL_EXCEL_RANGES . - data STYLES type ref to ZCL_EXCEL_STYLES . - data WORKSHEETS type ref to ZCL_EXCEL_WORKSHEETS . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - method ADD_NEW_DRAWING. - - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_drawing - EXPORTING - ip_title = ip_title. - drawings->add( eo_drawing ). -endmethod. - - - - method ADD_NEW_RANGE. - - -* Create default blank range - CREATE OBJECT eo_range. - ranges->add( eo_range ). -endmethod. - - - - method ADD_NEW_STYLE. - - -* Create default style - CREATE OBJECT eo_style. - styles->add( eo_style ). - -endmethod. - - - - - method ADD_NEW_WORKSHEET. - - - DATA: lv_guid TYPE guid_16. -* Create default blank worksheet - CREATE OBJECT eo_worksheet - EXPORTING - ip_title = ip_title. - worksheets->add( eo_worksheet ). - worksheets->active_worksheet = worksheets->size( ). -endmethod. - - - method CONSTRUCTOR. - - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style. - -* Inizialize instance objects - CREATE OBJECT properties. - CREATE OBJECT security. - CREATE OBJECT worksheets. - CREATE OBJECT ranges. - CREATE OBJECT styles. - CREATE OBJECT drawings. - - me->add_new_worksheet( ). - me->add_new_style( ). " Standard style - lo_style = me->add_new_style( ). " Standard style with fill gray125 - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_pattern_gray125. - - -endmethod. - - - - method GET_ACTIVE_WORKSHEET. - - - eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). - -endmethod. - - - - method GET_DRAWINGS_ITERATOR. - - - eo_iterator = me->drawings->get_iterator( ). -endmethod. - - - - method GET_RANGES_ITERATOR. - - - eo_iterator = me->ranges->get_iterator( ). -endmethod. - - - - method GET_STYLES_ITERATOR. - - - eo_iterator = me->styles->get_iterator( ). -endmethod. - - - - method GET_WORKSHEETS_ITERATOR. - - - eo_iterator = me->worksheets->get_iterator( ). -endmethod. - - - - method GET_WORKSHEETS_NAME. - - - ep_name = me->worksheets->name. - -endmethod. - - - - method GET_WORKSHEETS_SIZE. - - - ep_size = me->worksheets->size( ). - -endmethod. - - - - - method SAVE_AS. - - - DATA lo_excel_writer_2007 TYPE REF TO zcl_excel_writer_2007. - -* Determine the output engine to use - CASE ip_format. - WHEN me->c_xlsx. " XLSX for Office 2007 - CREATE OBJECT lo_excel_writer_2007 EXPORTING io_excel = me. - ep_file = lo_excel_writer_2007->create( ). - WHEN OTHERS. - ENDCASE. - -endmethod. - - - - class ZCL_EXCEL_COMMON definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_COMMON -*"* do not include other source files here!!! -public section. - - class-methods CONVERT_COLUMN2ALPHA - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA . - class-methods CONVERT_COLUMN2INT - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN . - *"* protected components of class ZCL_EXCEL_COMMON -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_COMMON -*"* do not include other source files here!!! -private section. - - class-data C_EXCEL_COL_MODULE type INT2 value 64. "#EC NOTEXT . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method CONVERT_COLUMN2ALPHA. - - - DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce, - lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - - lv_column = ip_column. - WHILE lv_column GT 0. - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - ENDWHILE. - -endmethod. - - - - - method CONVERT_COLUMN2INT. - - - DATA: lv_uccpi TYPE i, - lv_char TYPE c, - lv_column(2) TYPE c. - -* Calculate most significant letter - lv_char = ip_column+1(1). - IF lv_char IS NOT INITIAL. "To avoid the first 26 column that have only a char in first position - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - - ep_column = ep_column MOD ( zcl_excel_common=>c_excel_col_module ). - - lv_char = ip_column(1). - lv_uccpi = cl_abap_conv_out_ce=>uccpi( lv_char ). - - lv_uccpi = ( lv_uccpi MOD ( zcl_excel_common=>c_excel_col_module ) ) * 26. - - ep_column = ep_column + lv_uccpi. - ELSE. - lv_char = ip_column(1). - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - ep_column = ep_column - zcl_excel_common=>c_excel_col_module. - ENDIF. - -endmethod. - - - - class ZCL_EXCEL_DATA_VALIDATION definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_DATA_VALIDATION -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data ALLOWBLANK type FLAG value 'X'. "#EC NOTEXT . - data CELL_ROW type ZEXCEL_CELL_ROW . - class-data C_TYPE_LIST type ZEXCEL_DATA_VAL_TYPE value 'list'. "#EC NOTEXT . - data SHOWERRORMESSAGE type FLAG value 'X'. "#EC NOTEXT . - data SHOWINPUTMESSAGE type FLAG value 'X'. "#EC NOTEXT . - data TYPE type ZEXCEL_DATA_VAL_TYPE . - data VALUE type ZEXCEL_VALIDATION_FORMULA1 . - data CELL_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_DATA_VALIDATION -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - METHOD constructor. - type = me->c_type_list. -* inizialize dimension range - cell_row = 1. - cell_column = 'A'. -ENDMETHOD. - - - - class ZCL_EXCEL_DATA_VALIDATIONS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_DATA_VALIDATIONS -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - methods ADD - importing - !IP_DATA_VALIDATION type ref to ZCL_EXCEL_DATA_VALIDATION . - methods CLEAR . - methods CONSTRUCTOR . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_DATA_VALIDATION type ref to ZCL_EXCEL_DATA_VALIDATION . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_DATA_VALIDATIONS -*"* do not include other source files here!!! -private section. - - data DATA_VALIDATIONS type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - METHOD add. - data_validations->add( ip_data_validation ). -ENDMETHOD. - - - METHOD clear. - data_validations->clear( ). -ENDMETHOD. - - - METHOD constructor. - - CREATE OBJECT data_validations. - -ENDMETHOD. - - - - METHOD get_iterator. - eo_iterator ?= data_validations->if_object_collection~get_iterator( ). -ENDMETHOD. - - - - METHOD is_empty. - is_empty = data_validations->if_object_collection~is_empty( ). -ENDMETHOD. - - - - METHOD remove. - data_validations->remove( ip_data_validation ). -ENDMETHOD. - - - - METHOD size. - ep_size = data_validations->if_object_collection~size( ). -ENDMETHOD. - - - - class ZCL_EXCEL_DRAWING definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . - data X_REFERENCES type CHAR1 . - data Y_REFERENCES type CHAR1 . - data GRAPH_TYPE type ZEXCEL_GRAPH_TYPE . - - methods CONSTRUCTOR - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE optional . - methods GET_GUID - returning - value(EP_GUID) type GUID_16 . - *"* protected components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! -private section. - - data GUID type GUID_16 . - data LOWER_CELL type ZEXCEL_S_CELL_DATA . - data UPPER_CELL type ZEXCEL_S_CELL_DATA . - constants C_EXCEL_COL_MODULE type INT2 value 64. "#EC NOTEXT - - methods CONVERT_COLUMN2ALPHA - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA . - methods CONVERT_COLUMN2INT - importing - !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - returning - value(EP_COLUMN) type ZEXCEL_CELL_COLUMN . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - method CONSTRUCTOR. - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - - IF ip_title IS NOT INITIAL. - title = ip_title. - ELSE. - title = me->guid. - ENDIF. - -* inizialize dimension range - lower_cell-cell_row = 1. - lower_cell-cell_column = 1. - upper_cell-cell_row = 1. - upper_cell-cell_column = 1. -endmethod. - - - - - method CONVERT_COLUMN2ALPHA. - DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce, - lv_uccpi TYPE i, - lv_text TYPE sychar02, - lv_module TYPE int4, - lv_column TYPE zexcel_cell_column. - - lv_column = ip_column. - WHILE lv_column GT 0. - lv_module = ( lv_column - 1 ) MOD 26. - lv_uccpi = 65 + lv_module. - - lv_column = ( lv_column - lv_module ) / 26. - - lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ). - CONCATENATE lv_text ep_column INTO ep_column. - ENDWHILE. - -endmethod. - - - - - method CONVERT_COLUMN2INT. - - DATA: lv_uccpi TYPE i, - lv_char TYPE c, - lv_column(2) TYPE c. - -* Calculate most significant letter - lv_char = ip_column+1(1). - IF lv_char IS NOT INITIAL. "To avoid the first 26 column that have only a char in first position - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - - ep_column = ep_column MOD ( me->c_excel_col_module ). - - lv_char = ip_column(1). - lv_uccpi = cl_abap_conv_out_ce=>uccpi( lv_char ). - - lv_uccpi = ( lv_uccpi MOD ( me->c_excel_col_module ) ) * 26. - - ep_column = ep_column + lv_uccpi. - ELSE. - lv_char = ip_column(1). - ep_column = cl_abap_conv_out_ce=>uccpi( lv_char ). - ep_column = ep_column - me->c_excel_col_module. - ENDIF. - -endmethod. - - - - method GET_GUID. - - ep_guid = me->guid. - -endmethod. - - - - class ZCL_EXCEL_DRAWINGS definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_DRAWINGS -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type ZEXCEL_ACTIVE_WORKSHEET - returning - value(EO_DRAWING) type ref to ZCL_EXCEL_DRAWING . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_DRAWINGS -*"* do not include other source files here!!! -private section. - - data DRAWINGS type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - - - drawings->add( ip_drawing ). -endmethod. - - - method CLEAR. - - - drawings->clear( ). -endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT drawings. - -endmethod. - - - - - method GET. - - - DATA lv_index TYPE i. - lv_index = ip_index. - eo_drawing ?= drawings->if_object_collection~get( lv_index ). -endmethod. - - - - method GET_ITERATOR. - - - eo_iterator ?= drawings->if_object_collection~get_iterator( ). -endmethod. - - - - method IS_EMPTY. - - - is_empty = drawings->if_object_collection~is_empty( ). -endmethod. - - - - method REMOVE. - - - drawings->remove( ip_drawing ). -endmethod. - - - - method SIZE. - - - ep_size = drawings->if_object_collection~size( ). -endmethod. - - - - class ZCL_EXCEL_PROPERTIES definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_PROPERTIES -*"* do not include other source files here!!! -public section. - - data CREATOR type ZEXCEL_CREATOR value 'Unknown Creator'. "#EC NOTEXT . - data LASTMODIFIEDBY type ZEXCEL_CREATOR value 'Unknown Creator'. "#EC NOTEXT . - data CREATED type TIMESTAMPL . - data MODIFIED type TIMESTAMPL . - data TITLE type ZEXCEL_TITLE value 'Untitled Spreadsheet'. "#EC NOTEXT . - data SUBJECT type ZEXCEL_SUBJECT . - data DESCRIPTION type ZEXCEL_DESCRIPTION . - data KEYWORDS type ZEXCEL_KEYWORDS . - data CATEGORY type ZEXCEL_CATEGORY . - data COMPANY type ZEXCEL_COMPANY value 'Microsoft Corporation'. "#EC NOTEXT . - data APPLICATION type ZEXCEL_APPLICATION value 'Microsoft Excel'. "#EC NOTEXT . - data DOCSECURITY type ZEXCEL_DOCSECURITY value '0'. "#EC NOTEXT . - data SCALECROP type ZEXCEL_SCALECROP value ''. "#EC NOTEXT . - data LINKSUPTODATE type FLAG . - data SHAREDDOC type FLAG . - data HYPERLINKSCHANGED type FLAG . - data APPVERSION type ZEXCEL_APPVERSION value '12.0000'. "#EC NOTEXT . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_PROPERTIES -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_PROPERTIES -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - DATA: lv_timestamp TYPE timestampl. - - GET TIME STAMP FIELD lv_timestamp. - created = lv_timestamp. - modified = lv_timestamp. - -endmethod. - - - - class ZCL_EXCEL_RANGE definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_RANGE -*"* do not include other source files here!!! -public section. - - data NAME type ZEXCEL_RANGE_NAME . - data GUID type ZEXCEL_RANGE_GUID . - - methods CONSTRUCTOR . - methods GET_GUID - returning - value(EP_GUID) type ZEXCEL_RANGE_GUID . - methods SET_VALUE - importing - !IP_SHEET_NAME type ZEXCEL_SHEET_TITLE - !IP_START_ROW type ZEXCEL_CELL_ROW - !IP_START_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA - !IP_STOP_ROW type ZEXCEL_CELL_ROW - !IP_STOP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA . - methods GET_VALUE - returning - value(EP_VALUE) type ZEXCEL_RANGE_VALUE . - *"* protected components of class ZABAP_EXCEL_WORKSHEET -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_RANGE -*"* do not include other source files here!!! -private section. - - data VALUE type ZEXCEL_RANGE_VALUE . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - method CONSTRUCTOR. -endmethod. - - - - METHOD get_guid. - - ep_guid = me->guid. - -ENDMETHOD. - - - - METHOD get_value. - - ep_value = me->value. - -ENDMETHOD. - - - - - - - - METHOD set_value. - DATA: lv_start_row_c TYPE char7, - lv_stop_row_c TYPE char7. - lv_stop_row_c = ip_stop_row. - SHIFT lv_stop_row_c RIGHT DELETING TRAILING space. - SHIFT lv_stop_row_c LEFT DELETING LEADING space. - lv_start_row_c = ip_start_row. - SHIFT lv_start_row_c RIGHT DELETING TRAILING space. - SHIFT lv_start_row_c LEFT DELETING LEADING space. - CONCATENATE ip_sheet_name '!$' ip_start_column '$' lv_start_row_c ':$' ip_stop_column '$' lv_stop_row_c INTO me->value. -ENDMETHOD. - - - - class ZCL_EXCEL_RANGES definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_RANGES -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_RANGE type ref to ZCL_EXCEL_RANGE . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type I - returning - value(EO_RANGE) type ref to ZCL_EXCEL_RANGE . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_RANGE type ref to ZCL_EXCEL_RANGE . - methods SIZE - returning - value(EP_SIZE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZABAP_EXCEL_RANGES -*"* do not include other source files here!!! -private section. - - data RANGES type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - ranges->add( ip_range ). -endmethod. - - - method CLEAR. - ranges->clear( ). -endmethod. - - - METHOD constructor. - - - CREATE OBJECT ranges. - -ENDMETHOD. - - - - - method GET. - eo_range ?= ranges->if_object_collection~get( ip_index ). -endmethod. - - - - method GET_ITERATOR. - eo_iterator ?= ranges->if_object_collection~get_iterator( ). -endmethod. - - - - method IS_EMPTY. - is_empty = ranges->if_object_collection~is_empty( ). -endmethod. - - - - method REMOVE. - ranges->remove( ip_range ). -endmethod. - - - - method SIZE. - ep_size = ranges->if_object_collection~size( ). -endmethod. - - - - class ZCL_EXCEL_SECURITY definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_SECURITY -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - data LOCKREVISION type FLAG . - data LOCKSTRUCTURE type FLAG . - data LOCKWINDOWS type FLAG . - data REVISIONSPASSWORD type ZEXCEL_REVISIONSPASSWORD . - data WORKBOOKPASSWORD type ZEXCEL_WORKBOOKPASSWORD . - - methods CONSTRUCTOR . - methods IS_SECURITY_ENABLED - returning - value(EP_SECURITY_ENABLED) type FLAG . - *"* protected components of class ZABAP_EXCEL_SECURITY -*"* do not include other source files here!!! -protected section. - *"* private components of class ZABAP_EXCEL_SECURITY -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - method CONSTRUCTOR. -endmethod. - - - - method IS_SECURITY_ENABLED. - IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. - ep_security_enabled = abap_true. - ENDIF. -endmethod. - - - - class ZCL_EXCEL_SHEET_SETUP definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_SHEET_SETUP -*"* do not include other source files here!!! -public section. - type-pools ABAP . - - constants C_PAPERSIZE_LETTER type ZEXCEL_SHEET_PAPER_SIZE value 1. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_SMALL type ZEXCEL_SHEET_PAPER_SIZE value 2. "#EC NOTEXT - constants C_PAPERSIZE_TABLOID type ZEXCEL_SHEET_PAPER_SIZE value 3. "#EC NOTEXT - constants C_PAPERSIZE_LEDGER type ZEXCEL_SHEET_PAPER_SIZE value 4. "#EC NOTEXT - constants C_PAPERSIZE_LEGAL type ZEXCEL_SHEET_PAPER_SIZE value 5. "#EC NOTEXT - constants C_PAPERSIZE_STATEMENT type ZEXCEL_SHEET_PAPER_SIZE value 6. "#EC NOTEXT - constants C_PAPERSIZE_EXECUTIVE type ZEXCEL_SHEET_PAPER_SIZE value 7. "#EC NOTEXT - constants C_PAPERSIZE_A3 type ZEXCEL_SHEET_PAPER_SIZE value 8. "#EC NOTEXT - constants C_PAPERSIZE_A4 type ZEXCEL_SHEET_PAPER_SIZE value 9. "#EC NOTEXT - constants C_PAPERSIZE_A4_SMALL type ZEXCEL_SHEET_PAPER_SIZE value 10. "#EC NOTEXT - constants C_PAPERSIZE_A5 type ZEXCEL_SHEET_PAPER_SIZE value 11. "#EC NOTEXT - constants C_PAPERSIZE_B4 type ZEXCEL_SHEET_PAPER_SIZE value 12. "#EC NOTEXT - constants C_PAPERSIZE_B5 type ZEXCEL_SHEET_PAPER_SIZE value 13. "#EC NOTEXT - constants C_PAPERSIZE_FOLIO type ZEXCEL_SHEET_PAPER_SIZE value 14. "#EC NOTEXT - constants C_PAPERSIZE_QUARTO type ZEXCEL_SHEET_PAPER_SIZE value 15. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_1 type ZEXCEL_SHEET_PAPER_SIZE value 16. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_2 type ZEXCEL_SHEET_PAPER_SIZE value 17. "#EC NOTEXT - constants C_PAPERSIZE_NOTE type ZEXCEL_SHEET_PAPER_SIZE value 18. "#EC NOTEXT - constants C_PAPERSIZE_NO9_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 19. "#EC NOTEXT - constants C_PAPERSIZE_NO10_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 20. "#EC NOTEXT - constants C_PAPERSIZE_NO11_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 21. "#EC NOTEXT - constants C_PAPERSIZE_NO12_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 22. "#EC NOTEXT - constants C_PAPERSIZE_NO14_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 23. "#EC NOTEXT - constants C_PAPERSIZE_C type ZEXCEL_SHEET_PAPER_SIZE value 24. "#EC NOTEXT - constants C_PAPERSIZE_D type ZEXCEL_SHEET_PAPER_SIZE value 25. "#EC NOTEXT - constants C_PAPERSIZE_E type ZEXCEL_SHEET_PAPER_SIZE value 26. "#EC NOTEXT - constants C_PAPERSIZE_DL_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 27. "#EC NOTEXT - constants C_PAPERSIZE_C5_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 28. "#EC NOTEXT - constants C_PAPERSIZE_C3_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 29. "#EC NOTEXT - constants C_PAPERSIZE_C4_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 30. "#EC NOTEXT - constants C_PAPERSIZE_C6_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 31. "#EC NOTEXT - constants C_PAPERSIZE_C65_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 32. "#EC NOTEXT - constants C_PAPERSIZE_B4_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 33. "#EC NOTEXT - constants C_PAPERSIZE_B5_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 34. "#EC NOTEXT - constants C_PAPERSIZE_B6_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 35. "#EC NOTEXT - constants C_PAPERSIZE_ITALY_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 36. "#EC NOTEXT - constants C_PAPERSIZE_MONARCH_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 37. "#EC NOTEXT - constants C_PAPERSIZE_6_3_4_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 38. "#EC NOTEXT - constants C_PAPERSIZE_US_STD_FANFOLD type ZEXCEL_SHEET_PAPER_SIZE value 39. "#EC NOTEXT - constants C_PAPERSIZE_DE_STD_FANFOLD type ZEXCEL_SHEET_PAPER_SIZE value 40. "#EC NOTEXT - constants C_PAPERSIZE_DE_LEG_FANFOLD type ZEXCEL_SHEET_PAPER_SIZE value 41. "#EC NOTEXT - constants C_PAPERSIZE_ISO_B4 type ZEXCEL_SHEET_PAPER_SIZE value 42. "#EC NOTEXT - constants C_PAPERSIZE_JPN_DBL_POSTCARD type ZEXCEL_SHEET_PAPER_SIZE value 43. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_PAPER_1 type ZEXCEL_SHEET_PAPER_SIZE value 44. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_PAPER_2 type ZEXCEL_SHEET_PAPER_SIZE value 45. "#EC NOTEXT - constants C_PAPERSIZE_STANDARD_PAPER_3 type ZEXCEL_SHEET_PAPER_SIZE value 46. "#EC NOTEXT - constants C_PAPERSIZE_INVITE_ENVELOPE type ZEXCEL_SHEET_PAPER_SIZE value 47. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 48. "#EC NOTEXT - constants C_PAPERSIZE_LEGAL_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 49. "#EC NOTEXT - constants C_PAPERSIZE_TABL_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 50. "#EC NOTEXT - constants C_PAPERSIZE_A4_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 51. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 52. "#EC NOTEXT - constants C_PAPERSIZE_A4_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 53. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_EXTV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 54. "#EC NOTEXT - constants C_PAPERSIZE_SUPERA_A4_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 55. "#EC NOTEXT - constants C_PAPERSIZE_SUPERB_A3_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 56. "#EC NOTEXT - constants C_PAPERSIZE_LETTER_PLUS_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 57. "#EC NOTEXT - constants C_PAPERSIZE_A4_PLUS_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 58. "#EC NOTEXT - constants C_PAPERSIZE_A5_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 59. "#EC NOTEXT - constants C_PAPERSIZE_JIS_B5_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 60. "#EC NOTEXT - constants C_PAPERSIZE_A3_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 61. "#EC NOTEXT - constants C_PAPERSIZE_A5_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 62. "#EC NOTEXT - constants C_PAPERSIZE_ISO_B5_EXTRA_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 63. "#EC NOTEXT - constants C_PAPERSIZE_A2_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 64. "#EC NOTEXT - constants C_PAPERSIZE_A3_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 65. "#EC NOTEXT - constants C_PAPERSIZE_A3_EXTRA_TV_PAPER type ZEXCEL_SHEET_PAPER_SIZE value 66. "#EC NOTEXT - constants C_ORIENTATION_DEFAULT type ZEXCEL_SHEET_ORIENATATION value 'default'. "#EC NOTEXT - constants C_ORIENTATION_LANDSCAPE type ZEXCEL_SHEET_ORIENATATION value 'landscape'. "#EC NOTEXT - constants C_ORIENTATION_PORTRAIT type ZEXCEL_SHEET_ORIENATATION value 'portrait'. "#EC NOTEXT - data ORIENTATION type ZEXCEL_SHEET_ORIENATATION . - - methods CONSTRUCTOR . - *"* protected components of class ZABAP_EXCEL_STYLE -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_SHEET_SETUP -*"* do not include other source files here!!! -private section. - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - ABAP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - orientation = me->c_orientation_default. -endmethod. - - - - class ZCL_EXCEL_STYLE definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLE -*"* do not include other source files here!!! -public section. - - data FONT type ref to ZCL_EXCEL_STYLE_FONT . - data FILL type ref to ZCL_EXCEL_STYLE_FILL . - data BORDERS type ref to ZCL_EXCEL_STYLE_BORDERS . - data NUMBER_FORMAT type ref to ZCL_EXCEL_STYLE_NUMBER_FORMAT . - - methods CONSTRUCTOR . - methods GET_GUID - returning - value(EP_GUID) type ZEXCEL_CELL_STYLE . - *"* protected components of class ZABAP_EXCEL_STYLE -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE -*"* do not include other source files here!!! -private section. - - data ALIGNMENT type ref to ZCL_EXCEL_STYLE_ALIGNMENT . - data PROTECTION type ref to ZCL_EXCEL_STYLE_PROTECTION . - data GUID type ZEXCEL_CELL_STYLE . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - - - - - - method CONSTRUCTOR. - - - CREATE OBJECT font. - CREATE OBJECT fill. - CREATE OBJECT borders. - CREATE OBJECT alignment. - CREATE OBJECT number_format. - CREATE OBJECT protection. - - CALL FUNCTION 'GUID_CREATE' - IMPORTING - ev_guid_16 = me->guid. - -endmethod. - - - - method GET_GUID. - - - ep_guid = me->guid. -endmethod. - - - - class ZCL_EXCEL_STYLES definition - public - final - create public . - -*"* public components of class ZCL_EXCEL_STYLES -*"* do not include other source files here!!! -public section. - - methods ADD - importing - !IP_STYLE type ref to ZCL_EXCEL_STYLE . - methods CLEAR . - methods CONSTRUCTOR . - methods GET - importing - !IP_INDEX type I - returning - value(EO_STYLE) type ref to ZCL_EXCEL_STYLE . - methods GET_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods IS_EMPTY - returning - value(IS_EMPTY) type FLAG . - methods REMOVE - importing - !IP_STYLE type ref to ZCL_EXCEL_STYLE . - methods SIZE - returning - value(EP_SIZE) type I . - methods REGISTER_NEW_STYLE - importing - !IO_STYLE type ref to ZCL_EXCEL_STYLE - returning - value(EP_STYLE_CODE) type I . - *"* protected components of class ZABAP_EXCEL_WORKSHEETS -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLES -*"* do not include other source files here!!! -private section. - - data STYLES type ref to CL_OBJECT_COLLECTION . - *"* local class implementation for public class -*"* use this source file for the implementation part of -*"* local helper classes - *"* use this source file for any type declarations (class -*"* definitions, interfaces or data types) you need for method -*"* implementation or private method's signature - *"* use this source file for any macro definitions you need -*"* in the implementation part of the class - - - - method ADD. - - - styles->add( ip_style ). -endmethod. - - - method CLEAR. - - - styles->clear( ). -endmethod. - - - method CONSTRUCTOR. - - - CREATE OBJECT styles. -endmethod. - - - - - method GET. - - - eo_style ?= styles->if_object_collection~get( ip_index ). -endmethod. - - - - method GET_ITERATOR. - - - eo_iterator ?= styles->if_object_collection~get_iterator( ). -endmethod. - - - - method IS_EMPTY. - - - is_empty = styles->if_object_collection~is_empty( ). -endmethod. - - - - - method REGISTER_NEW_STYLE. - - - me->add( io_style ). - ep_style_code = me->size( ) - 1. "style count starts from 0 -endmethod. - - - - method REMOVE. - - - styles->remove( ip_style ). -endmethod. - - - - method SIZE. - - - ep_size = styles->if_object_collection~size( ). -endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel9. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_file TYPE xstring, - lv_style_number_guid TYPE zexcel_cell_style, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'sheet1'. -lo_range = lo_excel->add_new_range( ). -lo_range->name = 'range'. -lo_range->set_value( ip_sheet_name = lo_worksheet->title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - -lo_data_validation = lo_worksheet->add_new_data_validation( ). -lo_data_validation->value = lo_range->name. -lo_data_validation->cell_row = 4. -lo_data_validation->cell_column = 'A'. - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Select a value' ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -"convert to table -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -"Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\DataValidation.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel8. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lv_file TYPE xstring, - lv_style_number_guid TYPE zexcel_cell_style, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'sheet1'. -lo_range = lo_excel->add_new_range( ). -lo_range->name = 'range'. -lo_range->set_value( ip_sheet_name = lo_worksheet->title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -"convert to table -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -"Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\Range.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel7. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_number TYPE REF TO zcl_excel_style, - lv_file TYPE xstring, - lv_style_number_guid TYPE zexcel_cell_style, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -CREATE OBJECT lo_excel. - -lo_style_number = lo_excel->add_new_style( ). -lo_style_number->number_format->format_code = zcl_excel_style_number_format=>c_format_number. -lv_style_number_guid = lo_style_number->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3arrows. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 5 - ip_stop_column = 'B' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'C_ICONSET_3ARROWS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'B' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3arrowsgray. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 5 - ip_stop_column = 'C' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'C_ICONSET_3ARROWSGRAY' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3flags. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 5 - ip_stop_column = 'D' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'C_ICONSET_3FLAGS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'D' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'D' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 5 - ip_stop_column = 'E' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'C_ICONSET_3TRAFFICLIGHTS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'E' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 5 - ip_stop_column = 'F' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'C_ICONSET_3TRAFFICLIGHTS2' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'F' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'F' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'F' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'F' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3signs. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'G' - ip_start_row = 5 - ip_stop_column = 'G' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = 'C_ICONSET_3SIGNS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'G' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'G' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'G' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'G' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'G' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3symbols. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'H' - ip_start_row = 5 - ip_stop_column = 'H' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'H' ip_value = 'C_ICONSET_3SYMBOLS' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'H' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'H' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'H' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'H' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'H' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3symbols2. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'I' - ip_start_row = 5 - ip_stop_column = 'I' - ip_stop_row = 9 ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'I' ip_value = 'C_ICONSET_3SYMBOLS2' ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'I' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'I' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'I' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'I' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'I' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4arrows. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 12 - ip_stop_column = 'B' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = 'C_ICONSET_4ARROWS' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'B' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'B' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'B' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4arrowsgray. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 12 - ip_stop_column = 'C' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'C' ip_value = 'C_ICONSET_4ARROWSGRAY' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'C' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'C' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'C' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'C' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4redtoblack. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 12 - ip_stop_column = 'D' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'D' ip_value = 'C_ICONSET_4REDTOBLACK' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'D' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'D' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'D' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4rating. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 12 - ip_stop_column = 'E' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'E' ip_value = 'C_ICONSET_4RATING' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'E' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'E' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'E' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'E' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_4trafficlights. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'F' - ip_start_row = 12 - ip_stop_column = 'F' - ip_stop_row = 16 ). - -lo_worksheet->set_cell( ip_row = 11 ip_column = 'F' ip_value = 'C_ICONSET_4TRAFFICLIGHTS' ). -lo_worksheet->set_cell( ip_row = 12 ip_column = 'F' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 14 ip_column = 'F' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 15 ip_column = 'F' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 16 ip_column = 'F' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_5arrows. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'B' - ip_start_row = 19 - ip_stop_column = 'B' - ip_stop_row = 23 ). - -lo_worksheet->set_cell( ip_row = 18 ip_column = 'B' ip_value = 'C_ICONSET_5ARROWS' ). -lo_worksheet->set_cell( ip_row = 19 ip_column = 'B' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 20 ip_column = 'B' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 21 ip_column = 'B' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 22 ip_column = 'B' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 23 ip_column = 'B' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_5arrowsgray. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 19 - ip_stop_column = 'C' - ip_stop_row = 23 ). - -lo_worksheet->set_cell( ip_row = 18 ip_column = 'C' ip_value = 'C_ICONSET_5ARROWSGRAY' ). -lo_worksheet->set_cell( ip_row = 19 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 20 ip_column = 'C' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 21 ip_column = 'C' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 22 ip_column = 'C' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 23 ip_column = 'C' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_5rating. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'D' - ip_start_row = 19 - ip_stop_column = 'D' - ip_stop_row = 23 ). - -lo_worksheet->set_cell( ip_row = 18 ip_column = 'D' ip_value = 'C_ICONSET_5RATING' ). -lo_worksheet->set_cell( ip_row = 19 ip_column = 'D' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 20 ip_column = 'D' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 21 ip_column = 'D' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 22 ip_column = 'D' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 23 ip_column = 'D' ip_value = '50' ip_style = lv_style_number_guid ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_5quarters. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'E' - ip_start_row = 19 - ip_stop_column = 'E' - ip_stop_row = 23 ). - -lo_worksheet->set_cell( ip_row = 18 ip_column = 'E' ip_value = 'C_ICONSET_5QUARTERS' ). -lo_worksheet->set_cell( ip_row = 19 ip_column = 'E' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 20 ip_column = 'E' ip_value = '20' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 21 ip_column = 'E' ip_value = '30' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 22 ip_column = 'E' ip_value = '40' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 23 ip_column = 'E' ip_value = '50' ip_style = lv_style_number_guid ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -"convert to table -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -"Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\Iconset.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel6. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_number TYPE REF TO zcl_excel_style, - lv_file TYPE xstring, - lv_style_number_guid TYPE zexcel_cell_style, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -CREATE OBJECT lo_excel. - -lo_style_number = lo_excel->add_new_style( ). -lo_style_number->number_format->format_code = zcl_excel_style_number_format=>c_format_number. -lv_style_number_guid = lo_style_number->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '100' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = '1000' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = '150' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = '500' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = '1760' ip_formula = 'SUM(C4:C8)' ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -"convert to table -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -"Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\Formula.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel5. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional, - lo_style_number TYPE REF TO zcl_excel_style, - lv_file TYPE xstring, - lv_style_number_guid TYPE zexcel_cell_style, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -CREATE OBJECT lo_excel. - -lo_style_number = lo_excel->add_new_style( ). -lo_style_number->number_format->format_code = zcl_excel_style_number_format=>c_format_number. -lv_style_number_guid = lo_style_number->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). - -lo_style_conditional = lo_worksheet->add_new_conditional_style( ). -lo_style_conditional->rule = zcl_excel_style_conditional=>c_rule_iconset. -lo_style_conditional->iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights2. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - -lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '100' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = '1000' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = '150' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = '10' ip_style = lv_style_number_guid ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = '500' ip_style = lv_style_number_guid ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -"convert to table -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -"Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\CondFormatting.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'Sheet1'. -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). - -lo_worksheet = lo_excel->add_new_worksheet( ). -lo_worksheet->title = 'Sheet2'. -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -" Convert to binary -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - -" Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\Sheets.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel3. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_header TYPE REF TO zcl_excel_style, - lo_style_body TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_header_guid TYPE zexcel_cell_style, - lv_style_body_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -" Creates active sheet -CREATE OBJECT lo_excel. - -" Create border object -CREATE OBJECT lo_border_dark. -lo_border_dark->border_color = zcl_excel_style_color=>c_black. -lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. -" Create filled style -lo_style_header = lo_excel->add_new_style( ). -lo_style_header->fill->filltype = zcl_excel_style_fill=>c_fill_solid. -lo_style_header->fill->fgcolor = zcl_excel_style_color=>c_yellow. -lo_style_header->borders->allborders = lo_border_dark. -lv_style_header_guid = lo_style_header->get_guid( ). -"Create style with border -lo_style_body = lo_excel->add_new_style( ). -lo_style_body->borders->allborders = lo_border_dark. -lv_style_body_guid = lo_style_body->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'Internal table'. - -DATA lt_test TYPE TABLE OF sflight. -SELECT * FROM sflight INTO TABLE lt_test. -lo_worksheet->set_table( ip_table = lt_test - ip_hdr_style = lv_style_header_guid - ip_body_style = lv_style_body_guid ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -" Convert to binary -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - -" Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\iTab.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel2. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -" Creates active sheet -CREATE OBJECT lo_excel. - -" Create border object -CREATE OBJECT lo_border_dark. -lo_border_dark->border_color = zcl_excel_style_color=>c_black. -lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. -CREATE OBJECT lo_border_light. -lo_border_light->border_color = zcl_excel_style_color=>c_gray. -lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. -" Create a bold / italic style -lo_style_bold = lo_excel->add_new_style( ). -lo_style_bold->font->bold = abap_true. -lo_style_bold->font->italic = abap_true. -lo_style_bold->font->color = zcl_excel_style_color=>c_red. -lv_style_bold_guid = lo_style_bold->get_guid( ). -" Create an underline double style -lo_style_underline = lo_excel->add_new_style( ). -lo_style_underline->font->underline = abap_true. -lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. -lv_style_underline_guid = lo_style_underline->get_guid( ). -" Create filled style -lo_style_filled = lo_excel->add_new_style( ). -lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. -lo_style_filled->fill->fgcolor = zcl_excel_style_color=>c_yellow. -lv_style_filled_guid = lo_style_filled->get_guid( ). -" Create border with button effects -lo_style_button = lo_excel->add_new_style( ). -lo_style_button->borders->right = lo_border_dark. -lo_style_button->borders->down = lo_border_dark. -lo_style_button->borders->left = lo_border_light. -lo_style_button->borders->top = lo_border_light. -lv_style_button_guid = lo_style_button->get_guid( ). -"Create style with border -lo_style_border = lo_excel->add_new_style( ). -lo_style_border->borders->allborders = lo_border_dark. -lv_style_border_guid = lo_style_border->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'Styles'. -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). -lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). -lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). -lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). -lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -" Convert to binary -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - -" Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\Styles.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZIFE_TEST_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel1. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE STANDARD TABLE OF solisti1. - -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->title = 'Sheet1'. -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - -lv_file = lo_excel->save_as( zcl_excel=>c_xlsx ). - -" Convert to binary -CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - -" Save the file -CALL FUNCTION 'GUI_DOWNLOAD' - EXPORTING - bin_filesize = lv_bytecount - filename = 'C:\HelloWorld.xlsx' - filetype = 'BIN' - TABLES - data_tab = lt_file_tab. - - - - - - - - *&---------------------------------------------------------------------* -*& Report Z_ZAKE_SVN -*& -*&---------------------------------------------------------------------* -*& Checkout / Checkin the ZAKE_SVN Project -*& -*&---------------------------------------------------------------------* - -REPORT zake_svn_a2x. - -CONSTANTS cl_svn TYPE seoclsname VALUE 'ZCL_ZAKE_SVN'. -CONSTANTS cl_tortoise_svn TYPE seoclsname VALUE 'ZCL_ZAKE_TORTOISE_SVN'. - -DATA package TYPE devclass. -DATA zake TYPE REF TO zake. - -DATA zake_objects TYPE scts_tadir. - -DATA files TYPE string_table. -DATA file LIKE LINE OF files. - -DATA zake_build TYPE string. -DATA zake_nuggetname TYPE string. - -DATA comment_str TYPE string. -DATA loclpath_str TYPE string. -DATA svnpath_str TYPE string. -DATA username_str TYPE string. -DATA password_str TYPE string. -DATA class TYPE seoclsname. - -DATA: ex TYPE REF TO zcx_saplink, - message TYPE string. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE a. -PARAMETERS: - checkout TYPE flag RADIOBUTTON GROUP act, - update TYPE flag RADIOBUTTON GROUP act DEFAULT 'X', - checkin TYPE flag RADIOBUTTON GROUP act. -SELECTION-SCREEN END OF BLOCK a. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE b. -PARAMETERS: - svn TYPE flag RADIOBUTTON GROUP cl, - tortoise TYPE flag RADIOBUTTON GROUP cl. -SELECTION-SCREEN END OF BLOCK b. - -SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE c. -PARAMETERS: - loclpath TYPE char512 DEFAULT 'C:\ZAKE_SVN\Projects\abap2xlsx' LOWER CASE OBLIGATORY, - zakebuil TYPE char512 DEFAULT 'C:\ZAKE_SVN\Projects\abap2xlsx\build\NUGG_ABAP2XLSX_V_1_0.nugg' LOWER CASE OBLIGATORY, - zakenugg TYPE char512 DEFAULT 'C:\ZAKE_SVN\Projects\abap2xlsx\nuggs\NUGG_ABAP2XLSX_V_1_0.nugg' LOWER CASE OBLIGATORY, - svnpath TYPE char512 DEFAULT 'https://abap2xlsx.googlecode.com/svn/trunk/abap2xlsx' LOWER CASE OBLIGATORY, - comment TYPE char512 DEFAULT '' LOWER CASE, - username TYPE char512 LOWER CASE, - password TYPE char512 LOWER CASE, - testrun TYPE flag DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK c. - -INITIALIZATION. - a = 'Action'. - b = 'Version Controll Program'. - c = 'Parameters'. - -START-OF-SELECTION. - - svnpath_str = svnpath. - loclpath_str = loclpath. - zake_build = zakebuil. - zake_nuggetname = zakenugg. - comment_str = comment. - - SELECT * INTO TABLE zake_objects FROM tadir WHERE devclass = 'ZABAP2XLSX'. - DELETE zake_objects WHERE object = 'DEVC'. - - TRY. - IF svn = 'X'. - class = cl_svn. - ELSE. - class = cl_tortoise_svn. - ENDIF. - - CREATE OBJECT zake - TYPE - (class) - EXPORTING - i_svnpath = svnpath_str - i_localpath = loclpath_str. - zake->set_testrun( testrun ). - - IF checkin = 'X'. - zake->set_package( 'ZA2X' ). - zake->set_checkin_objects( zake_objects ). - zake->create_slinkees( zake_nuggetname ). - " Build a complete package for download -* zake->set_package( 'ZA2X' ). -* zake->set_checkin_objects( zake_objects ). -* " Let's add the CMD Scripts to the complete package -* CONCATENATE loclpath 'bin/svn-script.cmd' INTO file. -* APPEND file TO files. -* CONCATENATE loclpath 'bin/tortoise-svn-script.cmd' INTO file. -* APPEND file TO files. -* zake->add_files_to_zip( files ). -* " We don't want that for the complete Package Slinkees are created -* " in the ZAKE folder -* zake->download_slinkees_to_lm = space. -* zake->download_nugget_to_lm = space. -* zake->create_slinkees( zake_nuggetname ). - IF testrun IS INITIAL. - zake->checkin( comment_str ). - ENDIF. - ELSE. - IF update = 'X'. - zake->update( ). - ELSE. - zake->checkout( ). - ENDIF. - " zake->install_slinkees_from_lm( testrun ). - zake->install_objects( zake_objects ). - ENDIF. - CATCH zcx_saplink INTO ex. - message = ex->msg. - WRITE: / 'An Error occured: ', message. - ENDTRY. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/old_releases/NUGG_ABAP2XLSX_V_1_1.nugg.zip b/build/old_releases/NUGG_ABAP2XLSX_V_1_1.nugg.zip deleted file mode 100644 index c207b98a124abb8331de0aee75b4b59a2975cd6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49055 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 diff --git a/build/old_releases/R902337.TIR b/build/old_releases/R902337.TIR deleted file mode 100644 index 4657b63ccc72cd22d560ac8594b9f7a3b9d70240..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1988495 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

      WZ)Q`M5i!`z!+E6PexmSlQQ@@Q%W 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

      Y5xM>ukZ)k$Z{O?gN8-ziL4 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

      kL$z;5hA@-y{X?T6N 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%0A~v_HG(zVc1A@J!(S$LqPi->G)d3J^nvmiyINM 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

      ^J@SdEB<9Uv~f^nUBhmitS<9=Y&uLvaZXEWOu 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

      M_<)<_4-k1Xnc+5&n~sy&YGx7# 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

        ta!oG9H(L(DG1^G$48e_jIh3#q+Ycn5xG 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ɋ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 diff --git a/tools/OpenXMLValidator/Binaries/OpenXMLValidator.exe b/tools/OpenXMLValidator/Binaries/OpenXMLValidator.exe deleted file mode 100644 index 54baeb857d4189fe3d11c6152c1a4b10763b42b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11264 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 - - diff --git a/tools/OpenXMLValidator/Binaries/OpenXMLValidator.pdb b/tools/OpenXMLValidator/Binaries/OpenXMLValidator.pdb deleted file mode 100644 index cfdf49d8d18c4715931a39b44cce160ec458c820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19968 zcmeI3dvMg%702%;7!8=nB5y6O6f}rz9wIN5S3(d-3X0g+W(rHPgh-Ob-3`^z&a4hP zW3?lH;8Z&>wNv|=+7|1hovNMKu}-T_Ym05;qpfYRqfRSGt>dfM&-ecB-TV?zqJj_D z182YYaqd0$o_l}iK7PM6wzs5Hnbf*$thTat>eN`{%KF&McvV%|(D8LE4OC?Ro6`y2 zuQ>GS01CfHfCYNqF3{0zfmzJqJx8+vj`F?_d!#y|Ibeo62BPNew}*hmIerRsL|dTv zi0)mXa|g4))_8TKynK5@1i>%Q8NYPHi^G=PHlla*s~dK9`LfCr7wE{dz=8a~mc+3C zS6n?Gh)13^j=mnfw)TQ~4dn8b&(1yT!63Ep z`*F9xp&I|5hwo|LzU#T(@okUYcgxv(W_;ZHU1(omfkQR^*FQc#`Ip@0NB?|HZ|98H zN1Ru%?Gl9~3lu4Fpik};-bPILEQwQcm;QfRxpvtv_U+kOe@ytdYmw!_r5+Eiy}qN}x` zy(_sO-Ih_m4pX;U0!iVVVHZs{9$tk zlkpkS>cJGKxj8~})6ua$P{2cCfs_7T73rm>YybN5Yo;_m8j-!<3+eu-1Xj6|T|tdk z1!2`a>!xSh7BUsF@U9wepHgHrZ*) z`@-=h%k>Vi#LP8AhWvWoix1y*$sd>8Ke@E%zVF|?hT^8t)R`J^2y;XA>P%Uz7mv`8 zqA_ZN^p~g(-`0vC+l;Xdv!bR9nJWTWV^$>68773pI~CP4^(6OF3q(o zCsj?Vf{<7KG2nsnt4UYA&w_iXbM%0ENe-1`q3cekSw>kPf^xHv{})^Y=a2=cFBTQ{ z=`#jDZ}n^><9T==`I|%XGC^3rwLNX?(KFdUUGb8B96#7tpl=8)+iMP}e2tqYTcj8| zH30itj?5P1`EShPWcD-3%Wa1TrzaR=uV*h+oDT={Dq`oDs@2>$R{`imOeeoH3e*6O z22TdZfTgso%v8cNO{p1bRNrwlEExMpe$I>}{ViB@66Msbmv-;VX^mlC=d?DR0)7kR zopVWTyet&1bZKkNeA9r$+`K(x$6&l7 z`Ek^|(cBj;Lho_lVvshOrD_-Y%kj2lW{P=*H03`7i^jq+cskqwuYoUzx55Sb_*y{E zl=rDyTr=;4cp1?7hM$4(rI4^utXU(Rs-ct}bhYser-e@)38!Zu6&sO|2^cBhld9-OZJ>!R0H z<$SXr7uAQ2OXh=CSLTE3^6S7YP8U8nPsgBZvDc-3t;#Sg@2^kt+uk2VXua=~)J}35 zW5!%9yH3PEmEsM(zt{Q^jC&+Me>B(R_e5N0j-QY(Yj_StYejxZ^-*z zJDy0f2HCw^57-O81&<`N3O*lhg|C9Q!UIV*@z4JqZaim)ZIR>zBW-y(6hizaI^kwU;3Efq=$j zI&!Zu9$K#-bYtfCmEm%7GV*J_jC_Wkv$3GYS?$pHhRe8i_AA$lyq>cbS5CV0EQZUq z6Zby!z3u-4Z#i)P@BLh_8VD^=gB`Jsl)UKLV%)??%0A?)uRF-QopLJUZ@7BYKRuiM>Iu~`xHU02 zugGUf=Nz~GZd0cq+1C?;T{0DAvaQZ5&hG?nhY6#0K12R`%Bq}~)%d9l$>I5uKR2o$ zs1;nE>Gxb8SjNGXGTG_C!YWd^)44nW#B>4tAal zFMyZA7r_ne=Que-<4iq#9$Y~kvX;g=M&0MaSK4?~Gts7>Z1-Dh2nWw~B<~wE9v8u) z&9qZK={iu)#r5D~@CJ~vGG75d3*H2lG0!xYM$x`e%!N_R#!)7l->c~v7HPkD2jL#L z7uLPh@kKmC@JB)Vre}O<<;y!z-b5Sz2ht={&5uy?O~{y8{I5&@fk&5qs>25zPNObF zOqoN!A4$4$2`6{6i{I?xPdfaPOK)`XQ7*p3;gb%5ccsXXe0E47)+C>DxGDAl6~wS^m<~3cVcBq4Yo?y9NpKY`|9C#U z2F736yQt0J7I+){UHERe2Yw9hg?GVPXWoL37Mftnqw4Dk?1y*(yu5Mh>P21I^cAaD zq}sLdTviLGVo+~q5{S0g{9UBCCg3A&wAEY~Z9C3IoicN4B_p-7{vG4!7zV_(MQ#{}> zD*gTyZ@T|f|0T?+Ylkb1n?=GK`C>QPm_|9D!*DoYF2CN|bIb!09NZhk}Gk;VO+ zos5}XTVHq9jD3tr~B5*%vxB#aA8gDLNo1W@s}g^O+(+iHQq)AmGc|nY$@Zh<#3eo0rC>I zBpW$LoXj0XI8VpsiBXDBkAp}gSEM0d0zHU%F(P580=J*v@}T z>V`ok4M;{0Xs8{CAnbDs_z_y*-TwYh?+hz>dADIn*SeIc>`HXqfd7tO(CuztoKZNaGy6)`B-p1a&@pg>Z!2W z#(M_6V=ysz7_7UQGFa_Xo7FD0ll_M79qjiXYR3rpM0g~uwMcu7F|gXFJ;%xLN$_~s guSWz6^Z_iOc~hW*1qv1@SfF5mf&~f|IJzwGe^UMF_W%F@ diff --git a/tools/OpenXMLValidator/src/CommandLineArgs.cs b/tools/OpenXMLValidator/src/CommandLineArgs.cs deleted file mode 100644 index 43cbd68..0000000 --- a/tools/OpenXMLValidator/src/CommandLineArgs.cs +++ /dev/null @@ -1,77 +0,0 @@ -namespace Abap2Xlsx.OpenXMLValidator -{ - using System; - using System.IO; - - ///

        - /// Command line arguments for validator - /// - public class CommandLineArgs - { - - private const string DefaultDirectory = "."; - private const string DefaultSearchPattern = "*.xlsx|*.docx|*.pptx"; - - public string Directory { get; private set; } - public string SearchPattern { get; private set; } - public bool ShowUsage { get; private set; } - - public CommandLineArgs() - { - this.Directory = DefaultDirectory; - this.SearchPattern = DefaultSearchPattern; - } - - public void Parse(string[] args) - { - for (int currentArg = 0; currentArg < args.Length; currentArg++) - { - string arg = args[currentArg]; - - switch (arg) - { - case "-d": - case "/d": - string dir = GetNextArg(args, currentArg); - - DirectoryInfo di = new DirectoryInfo(dir); - if (!di.Exists) - { - throw new ArgumentException(string.Format("Unknown directory: {0}", dir)); - } - - this.Directory = dir; - currentArg++; - - break; - - case "-p": - case "/p": - this.SearchPattern = GetNextArg(args, currentArg); - currentArg++; - - break; - - case "-?": - case "/?": - this.ShowUsage = true; - - break; - - default: - throw new ArgumentException(string.Format("Unknown argument: {0}", arg)); - } - } - } - - private string GetNextArg(string[] args, int currentArg) - { - if (currentArg >= args.Length - 1) - { - throw new ArgumentException(string.Format("Missing value for argument: {0}", args[currentArg])); - } - - return args[currentArg + 1]; - } - } -} diff --git a/tools/OpenXMLValidator/src/OpenXMLValidator.csproj b/tools/OpenXMLValidator/src/OpenXMLValidator.csproj deleted file mode 100644 index e4faee7..0000000 --- a/tools/OpenXMLValidator/src/OpenXMLValidator.csproj +++ /dev/null @@ -1,74 +0,0 @@ - - - - Debug - x86 - 8.0.30703 - 2.0 - {99967614-17D7-4521-BE36-1540B6D5CD89} - Exe - Properties - OpenXMLValidator - OpenXMLValidator - v3.5 - Client - 512 - - - x86 - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - x86 - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - True - True - Resources.resx - - - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - - - - - - - - - \ No newline at end of file diff --git a/tools/OpenXMLValidator/src/Program.cs b/tools/OpenXMLValidator/src/Program.cs deleted file mode 100644 index 3da6f2d..0000000 --- a/tools/OpenXMLValidator/src/Program.cs +++ /dev/null @@ -1,148 +0,0 @@ -namespace Abap2Xlsx.OpenXMLValidator -{ - using System; - using System.Linq; - using System.IO; - using DocumentFormat.OpenXml.Packaging; - using DocumentFormat.OpenXml.Validation; - using System.Collections.Generic; - - /// - /// Simple command line wrapper around OpenXMLValidator. - /// See CommandLineArgs for possible options. - /// - class Program - { - /// - /// Entry point - /// - /// The arguments - static void Main(string[] args) - { - CommandLineArgs arguments = new CommandLineArgs(); - try - { - arguments.Parse(args); - } - catch (ArgumentException e) - { - Console.WriteLine(e.Message); - Console.WriteLine(Resources.Usage); - Environment.Exit(1); - } - - if (arguments.ShowUsage) - { - Console.WriteLine(Resources.Usage); - Environment.Exit(0); - } - - string[] patterns = arguments.SearchPattern.Split('|'); - List files = new List(); - foreach (string pattern in patterns) - { - files.AddRange(Directory.GetFiles(arguments.Directory, pattern)); - } - - if (!files.Any()) - { - Console.WriteLine("No matching files found"); - Environment.Exit(1); - } - - int validFiles = 0; - for (int i = 1; i <= files.Count; i++) - { - Console.WriteLine("Validating file {0} from {1}", i, files.Count); - if (ValidateFile(files[i - 1])) - { - validFiles++; - } - } - - Console.WriteLine("Files checked - {0}", files.Count); - Console.WriteLine("Valid files - {0}", validFiles); - Console.WriteLine("Invalid files - {0}", files.Count - validFiles); - } - - /// - /// Validates the file and prints result to console - /// - /// Path to the file - private static bool ValidateFile(string file) - { - ConsoleColor color = Console.ForegroundColor; - bool isValid = false; - - try - { - Console.WriteLine("File name: {0}", file); - - OpenXmlValidator validator = new OpenXmlValidator(); - - using (var doc = GetOpenXmlPackage(file)) - { - var errors = validator.Validate(doc); - if (errors.Any()) - { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("Found {0} validation errors: ", errors.Count()); - - int count = 0; - foreach (ValidationErrorInfo error in errors) - { - count++; - Console.WriteLine("Error " + count); - Console.WriteLine("Part: " + error.Part.Uri); - Console.WriteLine("Description: " + error.Description); - Console.WriteLine("Path: " + error.Path.XPath); - } - } - else - { - Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine("Document valid"); - isValid = true; - } - - Console.WriteLine(); - } - } - catch (Exception e) - { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("Exception occured while validating file: {0} - {1}",e.GetType().ToString() ,e.Message); - } - finally - { - Console.ForegroundColor = color; - } - - return isValid; - } - - /// - /// Returns OpenXmlPackage instance for a file. - /// .docx, .xlsx and .pptx files are supported - /// - /// Path to file - /// OpenXmlPackage instance - private static OpenXmlPackage GetOpenXmlPackage(string file) - { - FileInfo fi = new FileInfo(file); - - switch (fi.Extension.ToLowerInvariant()) - { - case ".xlsx": - return SpreadsheetDocument.Open(file, true); - case ".docx": - return WordprocessingDocument.Open(file, true); - case ".pptx": - return PresentationDocument.Open(file, true); - default: - throw new ArgumentException(string.Format("Unknown file extension {0}", fi.Extension), "file"); - } - - } - } -} diff --git a/tools/OpenXMLValidator/src/Properties/AssemblyInfo.cs b/tools/OpenXMLValidator/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 30c53ad..0000000 --- a/tools/OpenXMLValidator/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("OpenXMLValidator")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("OpenXMLValidator")] -[assembly: AssemblyCopyright("Copyright © 2010")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("ab032f8b-6f76-4bfc-8f1c-3a96d328f670")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/tools/OpenXMLValidator/src/Resources.Designer.cs b/tools/OpenXMLValidator/src/Resources.Designer.cs deleted file mode 100644 index 2acec77..0000000 --- a/tools/OpenXMLValidator/src/Resources.Designer.cs +++ /dev/null @@ -1,89 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Abap2Xlsx.OpenXMLValidator -{ - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenXMLValidator.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to USAGE: - /// OpenXMLValidator.exe [-d direcory] [-p pattern] - /// - ///OPTIONS: - /// -d - /// Directory with files for validation (default value if not specified - current directory) - /// -p - /// Search pattern used for finding files. * and ? allowed as wildcards (default value if not specified - *.xlsx) - /// -? - /// Show this help - /// - ///EXAMPLES: - /// OpenXMLValidator.exe - /// validate all xlsx files in current directory - /// OpenXMLValidator.exe -d c:\temp - /// validate all xlsx files in c:\temp directory - /// OpenXMLValidator.exe -d c:\ [rest of string was truncated]";. - /// - internal static string Usage { - get { - return ResourceManager.GetString("Usage", resourceCulture); - } - } - } -} diff --git a/tools/OpenXMLValidator/src/Resources.resx b/tools/OpenXMLValidator/src/Resources.resx deleted file mode 100644 index fa612ce..0000000 --- a/tools/OpenXMLValidator/src/Resources.resx +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Resources\usage.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;windows-1250 - - \ No newline at end of file diff --git a/tools/OpenXMLValidator/src/Resources/usage.txt b/tools/OpenXMLValidator/src/Resources/usage.txt deleted file mode 100644 index 1235e0a..0000000 --- a/tools/OpenXMLValidator/src/Resources/usage.txt +++ /dev/null @@ -1,20 +0,0 @@ -USAGE: - OpenXMLValidator.exe [-d direcory] [-p pattern] - -OPTIONS: - -d - Directory with files for validation (default value if not specified - current directory) - -p - Search pattern used for finding files. * and ? allowed as wildcards - Multiple patterns can be combined using '|' separator - (default value if not specified - *.xlsx|*.docx|*.pptx) - -? - Show this help - -EXAMPLES: - OpenXMLValidator.exe - validate all xlsx,docx,pptx files in current directory - OpenXMLValidator.exe -d c:\temp - validate all xlsx,docx,pptx files in c:\temp directory - OpenXMLValidator.exe -d c:\temp -p demo*.xlsx - validate all xlsx files in c:\temp directory starting with 'demo' \ No newline at end of file diff --git a/tools/OpenXMLValidator/src/app.config b/tools/OpenXMLValidator/src/app.config deleted file mode 100644 index e91dbe0..0000000 --- a/tools/OpenXMLValidator/src/app.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tools/OpenXMLValidator/src/readme.txt b/tools/OpenXMLValidator/src/readme.txt deleted file mode 100644 index 1fa40a0..0000000 --- a/tools/OpenXMLValidator/src/readme.txt +++ /dev/null @@ -1,2 +0,0 @@ -To build and run you need OpenXMl SDK installed. -It can be downloaded from http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&displaylang=en \ No newline at end of file From 2973d66594428869e34212f907e2317fdef970da Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Mon, 7 Feb 2022 16:37:06 +0100 Subject: [PATCH 02/33] Refactor headings logic in BIND_TABLE (#960) * Refactor headings logic in BIND_TABLE to help proposing a change for #764 Co-authored-by: sandraros Co-authored-by: Lars Hvam Co-authored-by: Abo --- src/zcl_excel_worksheet.clas.abap | 139 ++++++---- src/zcl_excel_worksheet.clas.testclasses.abap | 253 ++++++++++++++++++ 2 files changed, 334 insertions(+), 58 deletions(-) diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index e53cd0e..0f6db84 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -762,6 +762,12 @@ CLASS zcl_excel_worksheet DEFINITION CHANGING cs_complete_style_border TYPE zexcel_s_cstyle_border cs_complete_stylex_border TYPE zexcel_s_cstylex_border. + METHODS normalize_column_heading_texts + IMPORTING + iv_default_descr TYPE c + it_field_catalog TYPE zexcel_t_fieldcatalog + RETURNING + VALUE(result) TYPE zexcel_t_fieldcatalog. METHODS normalize_columnrow_parameter IMPORTING ip_columnrow TYPE csequence OPTIONAL @@ -952,8 +958,6 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. 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_value_lowercase TYPE string, lv_syindex TYPE c LENGTH 3, lo_iterator TYPE REF TO zcl_excel_collection_iterator, @@ -1022,75 +1026,26 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. lv_column_int = zcl_excel_common=>convert_column2int( ls_settings-top_left_column ). lv_row_int = ls_settings-top_left_row. + + lt_field_catalog = normalize_column_heading_texts( + iv_default_descr = iv_default_descr + it_field_catalog = lt_field_catalog ). + * It is better to loop column by column (only visible column) LOOP AT lt_field_catalog ASSIGNING WHERE dynpfld EQ abap_true. lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_column_int ). - " Due restrinction of new table object we cannot have two column with the same name - " Check if a column with the same name exists, if exists add a counter - " If no medium description is provided we try to use small or long - FIELD-SYMBOLS: TYPE any, - TYPE any, - TYPE any. - - CASE iv_default_descr. - WHEN 'M'. - ASSIGN -scrtext_m TO . - ASSIGN -scrtext_s TO . - ASSIGN -scrtext_l TO . - WHEN 'S'. - ASSIGN -scrtext_s TO . - ASSIGN -scrtext_m TO . - ASSIGN -scrtext_l TO . - WHEN 'L'. - ASSIGN -scrtext_l TO . - ASSIGN -scrtext_m TO . - ASSIGN -scrtext_s TO . - WHEN OTHERS. - ASSIGN -scrtext_m TO . - ASSIGN -scrtext_s TO . - ASSIGN -scrtext_l TO . - ENDCASE. - - - IF IS NOT INITIAL. - lv_value = . - -scrtext_l = lv_value. - ELSEIF IS NOT INITIAL. - lv_value = . - -scrtext_l = lv_value. - ELSEIF IS NOT INITIAL. - lv_value = . - -scrtext_l = lv_value. - ELSE. - lv_value = 'Column'. " default value as Excel does - -scrtext_l = lv_value. - ENDIF. - WHILE 1 = 1. - lv_value_lowercase = lv_value. - TRANSLATE lv_value_lowercase TO LOWER CASE. - READ TABLE lt_column_name_buffer TRANSPORTING NO FIELDS WITH KEY table_line = lv_value_lowercase BINARY SEARCH. - IF sy-subrc <> 0. - -scrtext_l = lv_value. - INSERT lv_value_lowercase INTO TABLE lt_column_name_buffer. - EXIT. - ELSE. - lv_syindex = sy-index. - CONCATENATE -scrtext_l lv_syindex INTO lv_value. - ENDIF. - - ENDWHILE. " First of all write column header IF -style_header IS NOT INITIAL. me->set_cell( ip_column = lv_column_alpha ip_row = lv_row_int - ip_value = lv_value + ip_value = -scrtext_l ip_style = -style_header ). ELSE. me->set_cell( ip_column = lv_column_alpha ip_row = lv_row_int - ip_value = lv_value ). + ip_value = -scrtext_l ). ENDIF. IF -column_formula IS NOT INITIAL. @@ -2973,6 +2928,74 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDMETHOD. + METHOD normalize_column_heading_texts. + + DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, + lv_value_lowercase TYPE string, + lv_syindex TYPE c LENGTH 3, + lt_column_name_buffer TYPE SORTED TABLE OF string WITH UNIQUE KEY table_line. + FIELD-SYMBOLS: TYPE zexcel_s_fieldcatalog, + TYPE any, + TYPE any, + TYPE any. + + " Due restrinction of new table object we cannot have two column with the same name + " Check if a column with the same name exists, if exists add a counter + " If no medium description is provided we try to use small or long + + lt_field_catalog = it_field_catalog. + + LOOP AT lt_field_catalog ASSIGNING WHERE dynpfld EQ abap_true. + + CASE iv_default_descr. + WHEN 'M'. + ASSIGN -scrtext_m TO . + ASSIGN -scrtext_s TO . + ASSIGN -scrtext_l TO . + WHEN 'S'. + ASSIGN -scrtext_s TO . + ASSIGN -scrtext_m TO . + ASSIGN -scrtext_l TO . + WHEN 'L'. + ASSIGN -scrtext_l TO . + ASSIGN -scrtext_m TO . + ASSIGN -scrtext_s TO . + WHEN OTHERS. + ASSIGN -scrtext_m TO . + ASSIGN -scrtext_s TO . + ASSIGN -scrtext_l TO . + ENDCASE. + + IF IS NOT INITIAL. + -scrtext_l = . + ELSEIF IS NOT INITIAL. + -scrtext_l = . + ELSEIF IS NOT INITIAL. + -scrtext_l = . + ELSE. + -scrtext_l = 'Column'. " default value as Excel does + ENDIF. + + DO. + lv_value_lowercase = -scrtext_l. + TRANSLATE lv_value_lowercase TO LOWER CASE. + READ TABLE lt_column_name_buffer TRANSPORTING NO FIELDS WITH KEY table_line = lv_value_lowercase BINARY SEARCH. + IF sy-subrc <> 0. + INSERT lv_value_lowercase INTO TABLE lt_column_name_buffer. + EXIT. + ELSE. + lv_syindex = sy-index. + CONCATENATE -scrtext_l lv_syindex INTO -scrtext_l. + ENDIF. + ENDDO. + + ENDLOOP. + + result = lt_field_catalog. + + ENDMETHOD. + + METHOD normalize_columnrow_parameter. IF ( ( ip_column IS NOT INITIAL OR ip_row IS NOT INITIAL ) AND ip_columnrow IS NOT INITIAL ) diff --git a/src/zcl_excel_worksheet.clas.testclasses.abap b/src/zcl_excel_worksheet.clas.testclasses.abap index 6cd36a0..980caba 100644 --- a/src/zcl_excel_worksheet.clas.testclasses.abap +++ b/src/zcl_excel_worksheet.clas.testclasses.abap @@ -1,3 +1,4 @@ +CLASS ltc_normalize_column_heading DEFINITION DEFERRED. CLASS ltc_normalize_columnrow_param DEFINITION DEFERRED. CLASS ltc_normalize_range_param DEFINITION DEFERRED. CLASS ltc_calculate_table_bottom_rig DEFINITION DEFERRED. @@ -6,6 +7,7 @@ CLASS ltc_check_cell_column_formula DEFINITION DEFERRED. CLASS ltc_check_overlapping DEFINITION DEFERRED. CLASS ltc_set_cell_value_types DEFINITION DEFERRED. CLASS zcl_excel_worksheet DEFINITION LOCAL FRIENDS + ltc_normalize_column_heading ltc_normalize_columnrow_param ltc_normalize_range_param ltc_calculate_table_bottom_rig @@ -122,6 +124,41 @@ CLASS ltc_check_overlapping DEFINITION FOR TESTING ENDCLASS. +CLASS ltc_normalize_column_heading DEFINITION FOR TESTING + RISK LEVEL HARMLESS + DURATION SHORT. + + PRIVATE SECTION. + TYPES : BEGIN OF ty_parameters, + BEGIN OF input, + default_descr TYPE c LENGTH 1, + field_catalog TYPE zexcel_t_fieldcatalog, + END OF input, + BEGIN OF output, + field_catalog TYPE zexcel_t_fieldcatalog, + END OF output, + END OF ty_parameters. + DATA: + cut TYPE REF TO zcl_excel_worksheet. "class under test + + METHODS setup. + METHODS: + prefer_small_text FOR TESTING RAISING cx_static_check, + prefer_medium_text FOR TESTING RAISING cx_static_check, + prefer_long_text FOR TESTING RAISING cx_static_check, + default_text_if_none FOR TESTING RAISING cx_static_check, + invalid_default_descr FOR TESTING RAISING cx_static_check. + + METHODS assert + IMPORTING + input TYPE ty_parameters-input + exp TYPE ty_parameters-output + RAISING + cx_static_check. + +ENDCLASS. + + CLASS ltc_normalize_columnrow_param DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. @@ -973,6 +1010,222 @@ CLASS ltc_check_overlapping IMPLEMENTATION. ENDCLASS. +CLASS ltc_normalize_column_heading IMPLEMENTATION. + + METHOD setup. + + DATA: lo_excel TYPE REF TO zcl_excel. + + CREATE OBJECT lo_excel. + + TRY. + CREATE OBJECT cut + EXPORTING + ip_excel = lo_excel. + CATCH zcx_excel. + cl_abap_unit_assert=>fail( 'Could not create instance' ). + ENDTRY. + + ENDMETHOD. + + METHOD prefer_small_text. + DATA: input TYPE ty_parameters-input, + exp TYPE ty_parameters-output, + field TYPE zexcel_s_fieldcatalog. + + input-default_descr = 'S'. + + field-dynpfld = abap_true. + + field-scrtext_s = 'Column1_S'. + field-scrtext_m = 'Column1_M'. + field-scrtext_l = 'Column1_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column1_S'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = ''. + field-scrtext_m = 'Column2_M'. + field-scrtext_l = 'Column2_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column2_M'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = ''. + field-scrtext_m = 'Column3_M'. + field-scrtext_l = ''. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column3_M'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = ''. + field-scrtext_m = ''. + field-scrtext_l = 'Column4_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column4_L'. + APPEND field TO exp-field_catalog. + + assert( input = input exp = exp ). + + ENDMETHOD. + + METHOD prefer_medium_text. + DATA: input TYPE ty_parameters-input, + exp TYPE ty_parameters-output, + field TYPE zexcel_s_fieldcatalog. + + input-default_descr = 'M'. + + field-dynpfld = abap_true. + + field-scrtext_s = 'Column1_S'. + field-scrtext_m = 'Column1_M'. + field-scrtext_l = 'Column1_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column1_M'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = 'Column2_S'. + field-scrtext_m = ''. + field-scrtext_l = 'Column2_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column2_S'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = 'Column3_S'. + field-scrtext_m = ''. + field-scrtext_l = ''. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column3_S'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = ''. + field-scrtext_m = ''. + field-scrtext_l = 'Column4_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column4_L'. + APPEND field TO exp-field_catalog. + + assert( input = input exp = exp ). + + ENDMETHOD. + + METHOD prefer_long_text. + DATA: input TYPE ty_parameters-input, + exp TYPE ty_parameters-output, + field TYPE zexcel_s_fieldcatalog. + + input-default_descr = 'L'. + + field-dynpfld = abap_true. + + field-scrtext_s = 'Column1_S'. + field-scrtext_m = 'Column1_M'. + field-scrtext_l = 'Column1_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column1_L'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = 'Column2_S'. + field-scrtext_m = 'Column2_M'. + field-scrtext_l = ''. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column2_M'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = 'Column3_S'. + field-scrtext_m = ''. + field-scrtext_l = ''. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column3_S'. + APPEND field TO exp-field_catalog. + + assert( input = input exp = exp ). + + ENDMETHOD. + + METHOD default_text_if_none. + DATA: input TYPE ty_parameters-input, + exp TYPE ty_parameters-output, + field TYPE zexcel_s_fieldcatalog. + + input-default_descr = 'S'. + + field-dynpfld = abap_true. + + field-scrtext_s = ''. + field-scrtext_m = ''. + field-scrtext_l = ''. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = ''. + field-scrtext_m = ''. + field-scrtext_l = ''. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column 1'. + APPEND field TO exp-field_catalog. + + assert( input = input exp = exp ). + + ENDMETHOD. + + METHOD invalid_default_descr. + DATA: input TYPE ty_parameters-input, + exp TYPE ty_parameters-output, + field TYPE zexcel_s_fieldcatalog. + + input-default_descr = '?'. + + field-dynpfld = abap_true. + + field-scrtext_s = 'Column1_S'. + field-scrtext_m = 'Column1_M'. + field-scrtext_l = 'Column1_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column1_M'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = 'Column2_S'. + field-scrtext_m = ''. + field-scrtext_l = 'Column2_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column2_S'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = 'Column3_S'. + field-scrtext_m = ''. + field-scrtext_l = ''. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column3_S'. + APPEND field TO exp-field_catalog. + + field-scrtext_s = ''. + field-scrtext_m = ''. + field-scrtext_l = 'Column4_L'. + APPEND field TO input-field_catalog. + field-scrtext_l = 'Column4_L'. + APPEND field TO exp-field_catalog. + + assert( input = input exp = exp ). + + ENDMETHOD. + + METHOD assert. + DATA: act TYPE ty_parameters-output. + + act-field_catalog = cut->normalize_column_heading_texts( + iv_default_descr = input-default_descr + it_field_catalog = input-field_catalog ). + + cl_abap_unit_assert=>assert_equals( exp = exp-field_catalog act = act-field_catalog ). + + ENDMETHOD. + +ENDCLASS. + + CLASS ltc_normalize_columnrow_param IMPLEMENTATION. METHOD setup. From f2dd72e76ecb77b4ce828f2584311e326b50b22d Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sat, 19 Feb 2022 15:59:22 +0100 Subject: [PATCH 03/33] SET_CELL use output length for conversion exits (#982) * SET_CELL use output length for conversion exits * bind_table: field catalog + demo Co-authored-by: sandraros Co-authored-by: Abo --- src/demos/zdemo_excel.prog.abap | 1 + src/demos/zdemo_excel33.prog.abap | 4 ++ src/demos/zdemo_excel33.prog.xml | 8 ++-- src/demos/zdemo_excel49.prog.abap | 41 +++++++++++++++++ src/demos/zdemo_excel49.prog.xml | 22 +++++++++ src/demos/zdemo_excel49.w3mi.data.xlsx | Bin 0 -> 6311 bytes src/demos/zdemo_excel49.w3mi.xml | 29 ++++++++++++ src/demos/zdemo_excel_checker.prog.abap | 4 ++ src/not_cloud/zcl_excel_converter.clas.abap | 12 +++-- src/zcl_excel_common.clas.abap | 5 +- src/zcl_excel_worksheet.clas.abap | 48 +++++++++++++++++--- src/zexcel_s_converter_option.tabl.xml | 9 ++++ 12 files changed, 168 insertions(+), 15 deletions(-) create mode 100644 src/demos/zdemo_excel49.prog.abap create mode 100644 src/demos/zdemo_excel49.prog.xml create mode 100644 src/demos/zdemo_excel49.w3mi.data.xlsx create mode 100644 src/demos/zdemo_excel49.w3mi.xml diff --git a/src/demos/zdemo_excel.prog.abap b/src/demos/zdemo_excel.prog.abap index ba60d41..f4b64fd 100644 --- a/src/demos/zdemo_excel.prog.abap +++ b/src/demos/zdemo_excel.prog.abap @@ -80,6 +80,7 @@ START-OF-SELECTION. SUBMIT zdemo_excel40 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Demo Printsettings SUBMIT zdemo_excel41 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Inheritance SUBMIT zdemo_excel44 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: No line if empty + SUBMIT zdemo_excel49 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind Table with field having Conversion Exit SUBMIT zdemo_excel_comments WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Comments SUBMIT ztest_excel_image_header WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Image in Header and Footer diff --git a/src/demos/zdemo_excel33.prog.abap b/src/demos/zdemo_excel33.prog.abap index 8e3add3..832ce64 100644 --- a/src/demos/zdemo_excel33.prog.abap +++ b/src/demos/zdemo_excel33.prog.abap @@ -19,12 +19,14 @@ DATA lt_test TYPE ty_t005t_lines. DATA: l_cell_value TYPE zexcel_cell_value, ls_area TYPE zexcel_s_autofilter_area. +DATA: ls_option TYPE zexcel_s_converter_option. CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. CONSTANTS: gc_save_file_name TYPE string VALUE '33_autofilter.xlsx'. INCLUDE zdemo_excel_outputopt_incl. +PARAMETERS p_convex AS CHECKBOX. START-OF-SELECTION. @@ -39,6 +41,8 @@ START-OF-SELECTION. CREATE OBJECT lo_converter. + ls_option-conv_exit_length = p_convex. + lo_converter->set_option( ls_option ). lo_converter->convert( EXPORTING it_table = lt_test i_row_int = 1 diff --git a/src/demos/zdemo_excel33.prog.xml b/src/demos/zdemo_excel33.prog.xml index 6c7b5be..9ef5f5f 100644 --- a/src/demos/zdemo_excel33.prog.xml +++ b/src/demos/zdemo_excel33.prog.xml @@ -14,13 +14,13 @@ R abap2xlsx Demo: Autofilter - 27 + 26 S - P_EMPTY - Leave Table Empty - 25 + P_CONVEX + Output length for conv. exits + 37 S diff --git a/src/demos/zdemo_excel49.prog.abap b/src/demos/zdemo_excel49.prog.abap new file mode 100644 index 0000000..00dfc8c --- /dev/null +++ b/src/demos/zdemo_excel49.prog.abap @@ -0,0 +1,41 @@ +*&---------------------------------------------------------------------* +*& Report zdemo_excel49 +*&---------------------------------------------------------------------* +*& +*&---------------------------------------------------------------------* +REPORT zdemo_excel49. +DATA: lo_excel TYPE REF TO zcl_excel, + lo_worksheet TYPE REF TO zcl_excel_worksheet, + ls_table_settings TYPE zexcel_s_table_settings, + ls_t002t TYPE t002t, + lt_t002t TYPE TABLE OF t002t. +CONSTANTS: gc_save_file_name TYPE string VALUE '49_Bind_Table_Conversion_Exit.xlsx'. +INCLUDE zdemo_excel_outputopt_incl. + +START-OF-SELECTION. + ls_t002t-spras = 'D'. + ls_t002t-sprsl = 'D'. + ls_t002t-sptxt = 'Deutsch'. + APPEND ls_t002t TO lt_t002t. + ls_t002t-spras = 'D'. + ls_t002t-sprsl = 'E'. + ls_t002t-sptxt = 'Englisch'. + APPEND ls_t002t TO lt_t002t. + ls_t002t-spras = 'E'. + ls_t002t-sprsl = 'D'. + ls_t002t-sptxt = 'German'. + APPEND ls_t002t TO lt_t002t. + ls_t002t-spras = 'E'. + ls_t002t-sprsl = 'E'. + ls_t002t-sptxt = 'English'. + APPEND ls_t002t TO lt_t002t. + + CREATE OBJECT lo_excel. + lo_worksheet = lo_excel->get_active_worksheet( ). + ls_table_settings-top_left_column = 'A'. + ls_table_settings-top_left_row = 1. + lo_worksheet->bind_table( + ip_table = lt_t002t + is_table_settings = ls_table_settings + ip_conv_exit_length = abap_true ). + lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel49.prog.xml b/src/demos/zdemo_excel49.prog.xml new file mode 100644 index 0000000..1249024 --- /dev/null +++ b/src/demos/zdemo_excel49.prog.xml @@ -0,0 +1,22 @@ + + + + + + ZDEMO_EXCEL49 + S + 1 + X + D$S + X + + + + R + abap2xlsx Demo: Bind Table with field having Conversion Exit + 60 + + + + + diff --git a/src/demos/zdemo_excel49.w3mi.data.xlsx b/src/demos/zdemo_excel49.w3mi.data.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ff63aeadbdf7392330551982450b2438cc368953 GIT binary patch literal 6311 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 Qp~K#IFyZP)@blY$02{jD(EtDd literal 0 HcmV?d00001 diff --git a/src/demos/zdemo_excel49.w3mi.xml b/src/demos/zdemo_excel49.w3mi.xml new file mode 100644 index 0000000..217c0b8 --- /dev/null +++ b/src/demos/zdemo_excel49.w3mi.xml @@ -0,0 +1,29 @@ + + + + + ZDEMO_EXCEL49 + 49_Bind_Table_Conversion_Exit.xlsx (ZDEMO_EXCEL49) + + + MI + ZDEMO_EXCEL49 + fileextension + .xlsx + + + MI + ZDEMO_EXCEL49 + filename + 49_Bind_Table_Conversion_Exit.xlsx + + + MI + ZDEMO_EXCEL49 + mimetype + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + + + diff --git a/src/demos/zdemo_excel_checker.prog.abap b/src/demos/zdemo_excel_checker.prog.abap index 36df336..ec4d8b6 100644 --- a/src/demos/zdemo_excel_checker.prog.abap +++ b/src/demos/zdemo_excel_checker.prog.abap @@ -890,6 +890,10 @@ CLASS lcl_app IMPLEMENTATION. line-objid = 'ZDEMO_EXCEL41'. line-filename = 'ABAP2XLSX Inheritance.xlsx'. APPEND line TO result. + line-program = 'ZDEMO_EXCEL49'. + line-objid = 'ZDEMO_EXCEL49'. + line-filename = '49_Bind_Table_Conversion_Exit.xlsx'. + APPEND line TO result. line-program = 'ZDEMO_EXCEL_COMMENTS'. line-objid = 'ZDEMO_EXCEL_COMMENTS'. line-filename = 'Comments.xlsx'. diff --git a/src/not_cloud/zcl_excel_converter.clas.abap b/src/not_cloud/zcl_excel_converter.clas.abap index b751dc0..24d70c3 100644 --- a/src/not_cloud/zcl_excel_converter.clas.abap +++ b/src/not_cloud/zcl_excel_converter.clas.abap @@ -1253,7 +1253,8 @@ CLASS zcl_excel_converter IMPLEMENTATION. wo_worksheet->set_cell( ip_column = l_col_alpha ip_row = l_row_int ip_value = - ip_style = l_style ). + ip_style = l_style + ip_conv_exit_length = ws_option-conv_exit_length ). CLEAR l_s_color. ELSE. l_style = get_color_style( i_row = l_table_row @@ -1262,7 +1263,8 @@ CLASS zcl_excel_converter IMPLEMENTATION. wo_worksheet->set_cell( ip_column = l_col_alpha ip_row = l_row_int ip_value = - ip_style = l_style ). + ip_style = l_style + ip_conv_exit_length = ws_option-conv_exit_length ). l_s_color = abap_true. ENDIF. READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row @@ -1551,7 +1553,8 @@ CLASS zcl_excel_converter IMPLEMENTATION. wo_worksheet->set_cell( ip_column = l_col_alpha ip_row = l_row_int ip_value = - ip_style = l_style ). + ip_style = l_style + ip_conv_exit_length = ws_option-conv_exit_length ). CLEAR l_s_color. ELSE. l_style = get_color_style( i_row = l_table_row @@ -1560,7 +1563,8 @@ CLASS zcl_excel_converter IMPLEMENTATION. wo_worksheet->set_cell( ip_column = l_col_alpha ip_row = l_row_int ip_value = - ip_style = l_style ). + ip_style = l_style + ip_conv_exit_length = ws_option-conv_exit_length ). l_s_color = abap_true. ENDIF. READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row diff --git a/src/zcl_excel_common.clas.abap b/src/zcl_excel_common.clas.abap index 939c7cd..d3ef1c3 100644 --- a/src/zcl_excel_common.clas.abap +++ b/src/zcl_excel_common.clas.abap @@ -119,6 +119,7 @@ CLASS zcl_excel_common DEFINITION IMPORTING !ip_table TYPE STANDARD TABLE !iv_hide_mandt TYPE abap_bool DEFAULT abap_true + !ip_conv_exit_length TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ep_fieldcatalog) TYPE zexcel_t_fieldcatalog . CLASS-METHODS number_to_excel_string @@ -922,7 +923,9 @@ CLASS zcl_excel_common IMPLEMENTATION. -scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ). -scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ). -scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ). - -abap_type = lo_salv_column_table->get_ddic_inttype( ). + IF ip_conv_exit_length = abap_false. + -abap_type = lo_salv_column_table->get_ddic_inttype( ). + ENDIF. -dynpfld = 'X'. " What in the world would we exclude here? " except for the MANDT-field of most tables ( 1st column that is ) diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 0f6db84..4c13310 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -172,6 +172,7 @@ CLASS zcl_excel_worksheet DEFINITION !is_table_settings TYPE zexcel_s_table_settings OPTIONAL VALUE(iv_default_descr) TYPE c OPTIONAL !iv_no_line_if_empty TYPE abap_bool DEFAULT abap_false + !ip_conv_exit_length TYPE abap_bool DEFAULT abap_false EXPORTING !es_table_settings TYPE zexcel_s_table_settings RAISING @@ -501,6 +502,7 @@ CLASS zcl_excel_worksheet DEFINITION !ip_abap_type TYPE abap_typekind OPTIONAL !it_rtf TYPE zexcel_t_rtf OPTIONAL !ip_column_formula_id TYPE mty_s_column_formula-id OPTIONAL + !ip_conv_exit_length TYPE abap_bool DEFAULT abap_false RAISING zcx_excel . METHODS set_cell_formula @@ -744,6 +746,11 @@ CLASS zcl_excel_worksheet DEFINITION is_color TYPE zexcel_s_style_color CHANGING cs_xcolor TYPE zexcel_s_cstylex_color. + METHODS create_data_conv_exit_length + IMPORTING + !ip_value TYPE simple + RETURNING + VALUE(ep_value) TYPE REF TO data. METHODS generate_title RETURNING VALUE(ep_title) TYPE zexcel_sheet_title . @@ -988,7 +995,8 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDIF. IF it_field_catalog IS NOT SUPPLIED. - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = ip_table ). + lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = ip_table + ip_conv_exit_length = ip_conv_exit_length ). ELSE. lt_field_catalog = it_field_catalog. ENDIF. @@ -1120,23 +1128,27 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ip_row = lv_row_int ip_value = ip_abap_type = -abap_type - ip_style = -style ). + ip_style = -style + ip_conv_exit_length = ip_conv_exit_length ). ELSE. me->set_cell( ip_column = lv_column_alpha ip_row = lv_row_int ip_value = - ip_style = -style ). + ip_style = -style + ip_conv_exit_length = ip_conv_exit_length ). ENDIF. ELSE. IF -abap_type IS NOT INITIAL. me->set_cell( ip_column = lv_column_alpha ip_row = lv_row_int ip_abap_type = -abap_type - ip_value = ). + ip_value = + ip_conv_exit_length = ip_conv_exit_length ). ELSE. me->set_cell( ip_column = lv_column_alpha ip_row = lv_row_int - ip_value = ). + ip_value = + ip_conv_exit_length = ip_conv_exit_length ). ENDIF. ENDIF. ENDIF. @@ -2025,6 +2037,26 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDMETHOD. "CONSTRUCTOR + METHOD create_data_conv_exit_length. + DATA: lo_addit TYPE REF TO cl_abap_elemdescr, + ls_dfies TYPE dfies, + l_function TYPE funcname, + l_value(50) TYPE c. + + lo_addit ?= cl_abap_typedescr=>describe_by_data( ip_value ). + lo_addit->get_ddic_field( RECEIVING p_flddescr = ls_dfies + EXCEPTIONS not_found = 1 + no_ddic_type = 2 + OTHERS = 3 ) . + IF sy-subrc = 0 AND ls_dfies-convexit IS NOT INITIAL. + CREATE DATA ep_value TYPE c LENGTH ls_dfies-outputlen. + ELSE. + CREATE DATA ep_value LIKE ip_value. + ENDIF. + + ENDMETHOD. + + METHOD delete_merge. DATA: lv_column TYPE i. @@ -3500,7 +3532,11 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. "if data type is passed just write the value. Otherwise map abap type to excel and perform conversion "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. + IF ip_conv_exit_length = abap_true. + lo_value = create_data_conv_exit_length( ip_value ). + ELSE. + CREATE DATA lo_value LIKE ip_value. + ENDIF. ASSIGN lo_value->* TO . = ip_value. IF ip_data_type IS SUPPLIED. diff --git a/src/zexcel_s_converter_option.tabl.xml b/src/zexcel_s_converter_option.tabl.xml index a0787a1..ab3440b 100644 --- a/src/zexcel_s_converter_option.tabl.xml +++ b/src/zexcel_s_converter_option.tabl.xml @@ -7,6 +7,7 @@ E INTTAB Converter options for grid configuration + E 2 @@ -42,6 +43,14 @@ F E + + CONV_EXIT_LENGTH + FLAG + 0 + X + F + E + From 211cf550e6bde1dd5d12fbc8e33ea99e06f3d93d Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sat, 19 Feb 2022 16:29:33 +0100 Subject: [PATCH 04/33] SET_CELL_FORMULA sets formula in wrong cell (#961) Co-authored-by: sandraros Co-authored-by: Abo --- src/zcl_excel_common.clas.abap | 21 +++++++++++++++++++++ src/zcl_excel_common.clas.testclasses.abap | 17 +++++++++++++++++ src/zcl_excel_worksheet.clas.abap | 20 ++++---------------- 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/zcl_excel_common.clas.abap b/src/zcl_excel_common.clas.abap index d3ef1c3..5236b98 100644 --- a/src/zcl_excel_common.clas.abap +++ b/src/zcl_excel_common.clas.abap @@ -38,6 +38,14 @@ CLASS zcl_excel_common DEFINITION VALUE(ep_column) TYPE zexcel_cell_column RAISING zcx_excel . + CLASS-METHODS convert_column_a_row2columnrow + IMPORTING + !i_column TYPE simple + !i_row TYPE zexcel_cell_row + RETURNING + VALUE(e_columnrow) TYPE string + RAISING + zcx_excel. CLASS-METHODS convert_columnrow2column_a_row IMPORTING !i_columnrow TYPE clike @@ -489,6 +497,19 @@ CLASS zcl_excel_common IMPLEMENTATION. ENDMETHOD. + METHOD convert_column_a_row2columnrow. + DATA: lv_row_alpha TYPE string, + lv_column_alpha TYPE zexcel_cell_column_alpha. + + lv_row_alpha = i_row. + lv_column_alpha = zcl_excel_common=>convert_column2alpha( i_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 e_columnrow. + + ENDMETHOD. + + METHOD convert_columnrow2column_a_row. *--------------------------------------------------------------------* "issue #256 - replacing char processing with regex diff --git a/src/zcl_excel_common.clas.testclasses.abap b/src/zcl_excel_common.clas.testclasses.abap index 7d229d1..e4b0987 100644 --- a/src/zcl_excel_common.clas.testclasses.abap +++ b/src/zcl_excel_common.clas.testclasses.abap @@ -37,6 +37,7 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING METHODS convert_column2int_maxcol FOR TESTING. METHODS convert_column2int_oob_empty FOR TESTING. METHODS convert_column2int_oob_invalid FOR TESTING. + METHODS convert_column_a_row2columnrow FOR TESTING RAISING cx_static_check. METHODS convert_columnrow2column_a_row FOR TESTING RAISING cx_static_check. METHODS date_to_excel_string1 FOR TESTING RAISING cx_static_check. METHODS date_to_excel_string2 FOR TESTING RAISING cx_static_check. @@ -338,6 +339,22 @@ CLASS lcl_excel_common_test IMPLEMENTATION. ENDMETHOD. "convert_column2int_oob_invalid. + METHOD convert_column_a_row2columnrow. + + DATA: cell_coords TYPE string. + + cell_coords = zcl_excel_common=>convert_column_a_row2columnrow( i_column = 'B' i_row = 6 ). + + cl_abap_unit_assert=>assert_equals( act = cell_coords exp = 'B6' ). + + + cell_coords = zcl_excel_common=>convert_column_a_row2columnrow( i_column = 2 i_row = 6 ). + + cl_abap_unit_assert=>assert_equals( act = cell_coords exp = 'B6' ). + + ENDMETHOD. + + METHOD convert_columnrow2column_a_row. DATA: column TYPE zexcel_cell_column_alpha, diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 4c13310..a94d403 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -3470,8 +3470,6 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. DATA: lv_column TYPE zexcel_cell_column, ls_sheet_content TYPE zexcel_s_cell_data, lv_row TYPE zexcel_cell_row, - 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, @@ -3668,10 +3666,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ls_sheet_content-column_formula_id = ip_column_formula_id. ls_sheet_content-cell_style = lv_style_guid. ls_sheet_content-data_type = lv_data_type. - lv_row_alpha = lv_row. - CONDENSE lv_row_alpha NO-GAPS. "ins #152 - replaced 2 shifts - should be faster - lv_col_alpha = zcl_excel_common=>convert_column2alpha( lv_column ). " issue #155 - less restrictive typing for ip_column - CONCATENATE lv_col_alpha lv_row_alpha INTO ls_sheet_content-cell_coords. " issue #155 - less restrictive typing for ip_column + ls_sheet_content-cell_coords = zcl_excel_common=>convert_column_a_row2columnrow( i_column = lv_column i_row = lv_row ). INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING . "ins #152 - Now always holds the data ENDIF. @@ -3760,6 +3755,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. CHECK ip_formula IS NOT INITIAL. " only create new entry in sheet_content when a formula is passed ls_sheet_content-cell_row = lv_row. ls_sheet_content-cell_column = lv_column. + ls_sheet_content-cell_coords = zcl_excel_common=>convert_column_a_row2columnrow( i_column = lv_column i_row = lv_row ). INSERT ls_sheet_content INTO TABLE me->sheet_content ASSIGNING . ENDIF. @@ -4204,17 +4200,9 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDIF. ENDLOOP. - lv_row_alpha = upper_cell-cell_row. - lv_column_alpha = zcl_excel_common=>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. + upper_cell-cell_coords = zcl_excel_common=>convert_column_a_row2columnrow( i_column = upper_cell-cell_column i_row = upper_cell-cell_row ). - lv_row_alpha = lower_cell-cell_row. - lv_column_alpha = zcl_excel_common=>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. + lower_cell-cell_coords = zcl_excel_common=>convert_column_a_row2columnrow( i_column = lower_cell-cell_column i_row = lower_cell-cell_row ). ENDMETHOD. "UPDATE_DIMENSION_RANGE From e97169a0c382cd22f82012e2e71796a7910ae26b Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Wed, 23 Feb 2022 23:00:24 +0100 Subject: [PATCH 05/33] Reader: custom paper height and width (#984) Fix #396 Co-authored-by: sandraros Co-authored-by: Abo --- src/zcl_excel_reader_2007.clas.abap | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index eac6192..df7f72b 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -2259,6 +2259,8 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. fittoheight TYPE string, fittowidth TYPE string, papersize TYPE string, + paperwidth TYPE string, + paperheight TYPE string, END OF lty_page_setup. TYPES: BEGIN OF lty_sheetformatpr, @@ -2823,6 +2825,8 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. io_worksheet->sheet_setup->orientation = ls_pagesetup-orientation. io_worksheet->sheet_setup->scale = ls_pagesetup-scale. io_worksheet->sheet_setup->paper_size = ls_pagesetup-papersize. + io_worksheet->sheet_setup->paper_height = ls_pagesetup-paperheight. + io_worksheet->sheet_setup->paper_width = ls_pagesetup-paperwidth. IF io_worksheet->sheet_setup->fit_to_page = 'X'. IF ls_pagesetup-fittowidth IS NOT INITIAL. io_worksheet->sheet_setup->fit_to_width = ls_pagesetup-fittowidth. From bea794926b201b1c9199efc4e24ac062113e4f6f Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sun, 6 Mar 2022 20:54:20 +0100 Subject: [PATCH 06/33] Delete objects moved to abap2xlsx/demos repository (#998) * Delete objects moved to abap2xlsx/demos repository * remove unused zexcel_export_dir * + procedure for the demo programs Co-authored-by: sandraros --- docs/abapGit-installation.md | 4 +- ... 89d0c0ce8687b56786306d6dd.sicf.xml | 18 - src/demos/zabap2xlsx_demo_show.prog.abap | 280 - src/demos/zabap2xlsx_demo_show.prog.xml | 22 - src/demos/zangry_birds.prog.abap | 752 --- src/demos/zangry_birds.prog.xml | 29 - src/demos/zdemo_calendar.prog.abap | 380 -- src/demos/zdemo_calendar.prog.xml | 130 - src/demos/zdemo_calendar_classes.prog.abap | 476 -- src/demos/zdemo_calendar_classes.prog.xml | 20 - src/demos/zdemo_excel.prog.abap | 91 - src/demos/zdemo_excel.prog.xml | 28 - src/demos/zdemo_excel1.prog.abap | 64 - src/demos/zdemo_excel1.prog.xml | 34 - src/demos/zdemo_excel10.prog.abap | 144 - src/demos/zdemo_excel10.prog.xml | 29 - src/demos/zdemo_excel11.prog.abap | 372 -- src/demos/zdemo_excel11.prog.xml | 95 - src/demos/zdemo_excel12.prog.abap | 108 - src/demos/zdemo_excel12.prog.xml | 29 - src/demos/zdemo_excel13.prog.abap | 87 - src/demos/zdemo_excel13.prog.xml | 29 - src/demos/zdemo_excel14.prog.abap | 160 - src/demos/zdemo_excel14.prog.xml | 29 - src/demos/zdemo_excel15.prog.abap | 162 - src/demos/zdemo_excel15.prog.xml | 35 - src/demos/zdemo_excel16.prog.abap | 131 - src/demos/zdemo_excel16.prog.xml | 50 - src/demos/zdemo_excel17.prog.abap | 53 - src/demos/zdemo_excel17.prog.xml | 36 - src/demos/zdemo_excel18.prog.abap | 34 - src/demos/zdemo_excel18.prog.xml | 29 - src/demos/zdemo_excel19.prog.abap | 53 - src/demos/zdemo_excel19.prog.xml | 55 - src/demos/zdemo_excel2.prog.abap | 224 - src/demos/zdemo_excel2.prog.xml | 29 - src/demos/zdemo_excel20.prog.abap | 193 - src/demos/zdemo_excel20.prog.xml | 4711 ----------------- src/demos/zdemo_excel21.prog.abap | 123 - src/demos/zdemo_excel21.prog.xml | 29 - src/demos/zdemo_excel22.prog.abap | 176 - src/demos/zdemo_excel22.prog.xml | 29 - src/demos/zdemo_excel23.prog.abap | 88 - src/demos/zdemo_excel23.prog.xml | 22 - src/demos/zdemo_excel24.prog.abap | 109 - src/demos/zdemo_excel24.prog.xml | 22 - src/demos/zdemo_excel25.prog.abap | 169 - src/demos/zdemo_excel25.prog.xml | 29 - src/demos/zdemo_excel26.prog.abap | 207 - src/demos/zdemo_excel26.prog.xml | 991 ---- src/demos/zdemo_excel27.prog.abap | 229 - src/demos/zdemo_excel27.prog.xml | 35 - src/demos/zdemo_excel28.prog.abap | 105 - src/demos/zdemo_excel28.prog.xml | 22 - src/demos/zdemo_excel29.prog.abap | 163 - src/demos/zdemo_excel29.prog.xml | 46 - src/demos/zdemo_excel3.prog.abap | 198 - src/demos/zdemo_excel3.prog.xml | 35 - src/demos/zdemo_excel30.prog.abap | 96 - src/demos/zdemo_excel30.prog.xml | 29 - src/demos/zdemo_excel31.prog.abap | 160 - src/demos/zdemo_excel31.prog.xml | 29 - src/demos/zdemo_excel32.prog.abap | 232 - src/demos/zdemo_excel32.prog.xml | 1941 ------- src/demos/zdemo_excel33.prog.abap | 118 - src/demos/zdemo_excel33.prog.xml | 35 - src/demos/zdemo_excel34.prog.abap | 217 - src/demos/zdemo_excel34.prog.xml | 29 - src/demos/zdemo_excel35.prog.abap | 170 - src/demos/zdemo_excel35.prog.xml | 29 - src/demos/zdemo_excel36.prog.abap | 111 - src/demos/zdemo_excel36.prog.xml | 22 - src/demos/zdemo_excel37.prog.abap | 301 -- src/demos/zdemo_excel37.prog.xml | 118 - src/demos/zdemo_excel38.prog.abap | 106 - src/demos/zdemo_excel38.prog.xml | 29 - src/demos/zdemo_excel39.prog.abap | 468 -- src/demos/zdemo_excel39.prog.xml | 50 - src/demos/zdemo_excel4.prog.abap | 115 - src/demos/zdemo_excel4.prog.xml | 29 - src/demos/zdemo_excel40.prog.abap | 63 - src/demos/zdemo_excel40.prog.xml | 29 - src/demos/zdemo_excel41.prog.abap | 102 - src/demos/zdemo_excel41.prog.xml | 1711 ------ src/demos/zdemo_excel42.prog.abap | 101 - src/demos/zdemo_excel42.prog.xml | 23 - src/demos/zdemo_excel43.prog.abap | 78 - src/demos/zdemo_excel43.prog.xml | 33 - src/demos/zdemo_excel44.prog.abap | 58 - src/demos/zdemo_excel44.prog.xml | 34 - src/demos/zdemo_excel45.prog.abap | 66 - src/demos/zdemo_excel45.prog.xml | 21 - src/demos/zdemo_excel46.prog.abap | 71 - src/demos/zdemo_excel46.prog.xml | 21 - src/demos/zdemo_excel47.prog.abap | 232 - src/demos/zdemo_excel47.prog.xml | 24 - src/demos/zdemo_excel48.prog.abap | 116 - src/demos/zdemo_excel48.prog.xml | 23 - src/demos/zdemo_excel49.prog.abap | 41 - src/demos/zdemo_excel49.prog.xml | 22 - src/demos/zdemo_excel5.prog.abap | 79 - src/demos/zdemo_excel5.prog.xml | 22 - src/demos/zdemo_excel6.prog.abap | 61 - src/demos/zdemo_excel6.prog.xml | 29 - src/demos/zdemo_excel7.prog.abap | 425 -- src/demos/zdemo_excel7.prog.xml | 29 - src/demos/zdemo_excel8.prog.abap | 71 - src/demos/zdemo_excel8.prog.xml | 29 - src/demos/zdemo_excel9.prog.abap | 203 - src/demos/zdemo_excel9.prog.xml | 35 - src/demos/zdemo_excel_checker.prog.abap | 1388 ----- src/demos/zdemo_excel_checker.prog.xml | 22 - src/demos/zdemo_excel_comments.prog.abap | 48 - src/demos/zdemo_excel_comments.prog.xml | 34 - src/demos/zdemo_excel_fill_template.prog.abap | 353 -- src/demos/zdemo_excel_fill_template.prog.xml | 58 - .../zdemo_excel_outputopt_incl.prog.abap | 391 -- src/demos/zdemo_excel_outputopt_incl.prog.xml | 20 - src/demos/zdemo_excel_wda01.wdya.xml | 14 - src/demos/zdemo_excel_wda01.wdyn.xml | 1410 ----- src/demos/zdemo_teched1.prog.abap | 83 - src/demos/zdemo_teched1.prog.xml | 29 - src/demos/zdemo_teched10.prog.abap | 49 - src/demos/zdemo_teched10.prog.xml | 29 - src/demos/zdemo_teched2.prog.abap | 91 - src/demos/zdemo_teched2.prog.xml | 29 - src/demos/zdemo_teched3.prog.abap | 107 - src/demos/zdemo_teched3.prog.xml | 29 - src/demos/zdemo_teched4.prog.abap | 129 - src/demos/zdemo_teched4.prog.xml | 29 - src/demos/zdemo_teched5.prog.abap | 150 - src/demos/zdemo_teched5.prog.xml | 29 - src/demos/zdemo_teched6.prog.abap | 157 - src/demos/zdemo_teched6.prog.xml | 29 - src/demos/zdemo_teched7.prog.abap | 160 - src/demos/zdemo_teched7.prog.xml | 29 - src/demos/zdemo_teched8.prog.abap | 222 - src/demos/zdemo_teched8.prog.xml | 29 - src/demos/zdemo_teched9.prog.abap | 211 - src/demos/zdemo_teched9.prog.xml | 29 - src/demos/zexcel_s_org_rel.tabl.xml | 260 - src/demos/ztest_excel_image_header.prog.abap | 106 - src/demos/ztest_excel_image_header.prog.xml | 32 - src/zexcel_export_dir.dtel.xml | 23 - 144 files changed, 3 insertions(+), 26123 deletions(-) delete mode 100644 src/demos/npl0018 89d0c0ce8687b56786306d6dd.sicf.xml delete mode 100644 src/demos/zabap2xlsx_demo_show.prog.abap delete mode 100644 src/demos/zabap2xlsx_demo_show.prog.xml delete mode 100644 src/demos/zangry_birds.prog.abap delete mode 100644 src/demos/zangry_birds.prog.xml delete mode 100644 src/demos/zdemo_calendar.prog.abap delete mode 100644 src/demos/zdemo_calendar.prog.xml delete mode 100644 src/demos/zdemo_calendar_classes.prog.abap delete mode 100644 src/demos/zdemo_calendar_classes.prog.xml delete mode 100644 src/demos/zdemo_excel.prog.abap delete mode 100644 src/demos/zdemo_excel.prog.xml delete mode 100644 src/demos/zdemo_excel1.prog.abap delete mode 100644 src/demos/zdemo_excel1.prog.xml delete mode 100644 src/demos/zdemo_excel10.prog.abap delete mode 100644 src/demos/zdemo_excel10.prog.xml delete mode 100644 src/demos/zdemo_excel11.prog.abap delete mode 100644 src/demos/zdemo_excel11.prog.xml delete mode 100644 src/demos/zdemo_excel12.prog.abap delete mode 100644 src/demos/zdemo_excel12.prog.xml delete mode 100644 src/demos/zdemo_excel13.prog.abap delete mode 100644 src/demos/zdemo_excel13.prog.xml delete mode 100644 src/demos/zdemo_excel14.prog.abap delete mode 100644 src/demos/zdemo_excel14.prog.xml delete mode 100644 src/demos/zdemo_excel15.prog.abap delete mode 100644 src/demos/zdemo_excel15.prog.xml delete mode 100644 src/demos/zdemo_excel16.prog.abap delete mode 100644 src/demos/zdemo_excel16.prog.xml delete mode 100644 src/demos/zdemo_excel17.prog.abap delete mode 100644 src/demos/zdemo_excel17.prog.xml delete mode 100644 src/demos/zdemo_excel18.prog.abap delete mode 100644 src/demos/zdemo_excel18.prog.xml delete mode 100644 src/demos/zdemo_excel19.prog.abap delete mode 100644 src/demos/zdemo_excel19.prog.xml delete mode 100644 src/demos/zdemo_excel2.prog.abap delete mode 100644 src/demos/zdemo_excel2.prog.xml delete mode 100644 src/demos/zdemo_excel20.prog.abap delete mode 100644 src/demos/zdemo_excel20.prog.xml delete mode 100644 src/demos/zdemo_excel21.prog.abap delete mode 100644 src/demos/zdemo_excel21.prog.xml delete mode 100644 src/demos/zdemo_excel22.prog.abap delete mode 100644 src/demos/zdemo_excel22.prog.xml delete mode 100644 src/demos/zdemo_excel23.prog.abap delete mode 100644 src/demos/zdemo_excel23.prog.xml delete mode 100644 src/demos/zdemo_excel24.prog.abap delete mode 100644 src/demos/zdemo_excel24.prog.xml delete mode 100644 src/demos/zdemo_excel25.prog.abap delete mode 100644 src/demos/zdemo_excel25.prog.xml delete mode 100644 src/demos/zdemo_excel26.prog.abap delete mode 100644 src/demos/zdemo_excel26.prog.xml delete mode 100644 src/demos/zdemo_excel27.prog.abap delete mode 100644 src/demos/zdemo_excel27.prog.xml delete mode 100644 src/demos/zdemo_excel28.prog.abap delete mode 100644 src/demos/zdemo_excel28.prog.xml delete mode 100644 src/demos/zdemo_excel29.prog.abap delete mode 100644 src/demos/zdemo_excel29.prog.xml delete mode 100644 src/demos/zdemo_excel3.prog.abap delete mode 100644 src/demos/zdemo_excel3.prog.xml delete mode 100644 src/demos/zdemo_excel30.prog.abap delete mode 100644 src/demos/zdemo_excel30.prog.xml delete mode 100644 src/demos/zdemo_excel31.prog.abap delete mode 100644 src/demos/zdemo_excel31.prog.xml delete mode 100644 src/demos/zdemo_excel32.prog.abap delete mode 100644 src/demos/zdemo_excel32.prog.xml delete mode 100644 src/demos/zdemo_excel33.prog.abap delete mode 100644 src/demos/zdemo_excel33.prog.xml delete mode 100644 src/demos/zdemo_excel34.prog.abap delete mode 100644 src/demos/zdemo_excel34.prog.xml delete mode 100644 src/demos/zdemo_excel35.prog.abap delete mode 100644 src/demos/zdemo_excel35.prog.xml delete mode 100644 src/demos/zdemo_excel36.prog.abap delete mode 100644 src/demos/zdemo_excel36.prog.xml delete mode 100644 src/demos/zdemo_excel37.prog.abap delete mode 100644 src/demos/zdemo_excel37.prog.xml delete mode 100644 src/demos/zdemo_excel38.prog.abap delete mode 100644 src/demos/zdemo_excel38.prog.xml delete mode 100644 src/demos/zdemo_excel39.prog.abap delete mode 100644 src/demos/zdemo_excel39.prog.xml delete mode 100644 src/demos/zdemo_excel4.prog.abap delete mode 100644 src/demos/zdemo_excel4.prog.xml delete mode 100644 src/demos/zdemo_excel40.prog.abap delete mode 100644 src/demos/zdemo_excel40.prog.xml delete mode 100644 src/demos/zdemo_excel41.prog.abap delete mode 100644 src/demos/zdemo_excel41.prog.xml delete mode 100644 src/demos/zdemo_excel42.prog.abap delete mode 100644 src/demos/zdemo_excel42.prog.xml delete mode 100644 src/demos/zdemo_excel43.prog.abap delete mode 100644 src/demos/zdemo_excel43.prog.xml delete mode 100644 src/demos/zdemo_excel44.prog.abap delete mode 100644 src/demos/zdemo_excel44.prog.xml delete mode 100644 src/demos/zdemo_excel45.prog.abap delete mode 100644 src/demos/zdemo_excel45.prog.xml delete mode 100644 src/demos/zdemo_excel46.prog.abap delete mode 100644 src/demos/zdemo_excel46.prog.xml delete mode 100644 src/demos/zdemo_excel47.prog.abap delete mode 100644 src/demos/zdemo_excel47.prog.xml delete mode 100644 src/demos/zdemo_excel48.prog.abap delete mode 100644 src/demos/zdemo_excel48.prog.xml delete mode 100644 src/demos/zdemo_excel49.prog.abap delete mode 100644 src/demos/zdemo_excel49.prog.xml delete mode 100644 src/demos/zdemo_excel5.prog.abap delete mode 100644 src/demos/zdemo_excel5.prog.xml delete mode 100644 src/demos/zdemo_excel6.prog.abap delete mode 100644 src/demos/zdemo_excel6.prog.xml delete mode 100644 src/demos/zdemo_excel7.prog.abap delete mode 100644 src/demos/zdemo_excel7.prog.xml delete mode 100644 src/demos/zdemo_excel8.prog.abap delete mode 100644 src/demos/zdemo_excel8.prog.xml delete mode 100644 src/demos/zdemo_excel9.prog.abap delete mode 100644 src/demos/zdemo_excel9.prog.xml delete mode 100644 src/demos/zdemo_excel_checker.prog.abap delete mode 100644 src/demos/zdemo_excel_checker.prog.xml delete mode 100644 src/demos/zdemo_excel_comments.prog.abap delete mode 100644 src/demos/zdemo_excel_comments.prog.xml delete mode 100644 src/demos/zdemo_excel_fill_template.prog.abap delete mode 100644 src/demos/zdemo_excel_fill_template.prog.xml delete mode 100644 src/demos/zdemo_excel_outputopt_incl.prog.abap delete mode 100644 src/demos/zdemo_excel_outputopt_incl.prog.xml delete mode 100644 src/demos/zdemo_excel_wda01.wdya.xml delete mode 100644 src/demos/zdemo_excel_wda01.wdyn.xml delete mode 100644 src/demos/zdemo_teched1.prog.abap delete mode 100644 src/demos/zdemo_teched1.prog.xml delete mode 100644 src/demos/zdemo_teched10.prog.abap delete mode 100644 src/demos/zdemo_teched10.prog.xml delete mode 100644 src/demos/zdemo_teched2.prog.abap delete mode 100644 src/demos/zdemo_teched2.prog.xml delete mode 100644 src/demos/zdemo_teched3.prog.abap delete mode 100644 src/demos/zdemo_teched3.prog.xml delete mode 100644 src/demos/zdemo_teched4.prog.abap delete mode 100644 src/demos/zdemo_teched4.prog.xml delete mode 100644 src/demos/zdemo_teched5.prog.abap delete mode 100644 src/demos/zdemo_teched5.prog.xml delete mode 100644 src/demos/zdemo_teched6.prog.abap delete mode 100644 src/demos/zdemo_teched6.prog.xml delete mode 100644 src/demos/zdemo_teched7.prog.abap delete mode 100644 src/demos/zdemo_teched7.prog.xml delete mode 100644 src/demos/zdemo_teched8.prog.abap delete mode 100644 src/demos/zdemo_teched8.prog.xml delete mode 100644 src/demos/zdemo_teched9.prog.abap delete mode 100644 src/demos/zdemo_teched9.prog.xml delete mode 100644 src/demos/zexcel_s_org_rel.tabl.xml delete mode 100644 src/demos/ztest_excel_image_header.prog.abap delete mode 100644 src/demos/ztest_excel_image_header.prog.xml delete mode 100644 src/zexcel_export_dir.dtel.xml diff --git a/docs/abapGit-installation.md b/docs/abapGit-installation.md index ecf54ab..1573184 100644 --- a/docs/abapGit-installation.md +++ b/docs/abapGit-installation.md @@ -4,8 +4,10 @@ ## Procedure -Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xls* if you just want to test. If you want to transport abap2xlsx to production then use a non local package. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo* +Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xlsx* if you just want to test. If you want to transport abap2xlsx to production then use a non local package. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo* ![abapGit New Online Repository](new-online-abap2xlsx.png) To install abap2xlsx click *pull*. + +After installing, if you want to install the **demo programs**, repeat the actions above, starting from *New Online* to *pull*, and fill *Git repository URL* with *https://github.com/abap2xlsx/demos*. diff --git a/src/demos/npl0018 89d0c0ce8687b56786306d6dd.sicf.xml b/src/demos/npl0018 89d0c0ce8687b56786306d6dd.sicf.xml deleted file mode 100644 index 000f545..0000000 --- a/src/demos/npl0018 89d0c0ce8687b56786306d6dd.sicf.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - /sap/bc/webdynpro/sap/NPL0018/ - - NPL0018 - NPL0018 - ZDEMO_EXCEL_WDA01 - - - NPL0018 - E - Web Dynpro Application ZDEMO_EXCEL_WDA01 / Component ZDEMO_EXCEL_WDA01 - - - - diff --git a/src/demos/zabap2xlsx_demo_show.prog.abap b/src/demos/zabap2xlsx_demo_show.prog.abap deleted file mode 100644 index fcb23a1..0000000 --- a/src/demos/zabap2xlsx_demo_show.prog.abap +++ /dev/null @@ -1,280 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZABAP2XLSX_DEMO_SHOW -*&---------------------------------------------------------------------* -REPORT zabap2xlsx_demo_show. - - -*----------------------------------------------------------------------* -* CLASS lcl_perform DEFINITION -*----------------------------------------------------------------------* -CLASS lcl_perform DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: setup_objects, - collect_reports, - - handle_nav FOR EVENT double_click OF cl_gui_alv_grid - IMPORTING e_row. - - PRIVATE SECTION. - TYPES: BEGIN OF ty_reports, - progname TYPE reposrc-progname, - sort TYPE reposrc-progname, - description TYPE repti, - filename TYPE string, - END OF ty_reports. - - CLASS-DATA: - lo_grid TYPE REF TO cl_gui_alv_grid, - lo_text TYPE REF TO cl_gui_textedit, - cl_document TYPE REF TO i_oi_document_proxy, - - t_reports TYPE STANDARD TABLE OF ty_reports WITH NON-UNIQUE DEFAULT KEY. - CLASS-DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control. "Office Dokument - -ENDCLASS. "lcl_perform DEFINITION - - -START-OF-SELECTION. - lcl_perform=>collect_reports( ). - lcl_perform=>setup_objects( ). - -END-OF-SELECTION. - - WRITE '.'. " Force output - - -*----------------------------------------------------------------------* -* CLASS lcl_perform IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_perform IMPLEMENTATION. - METHOD setup_objects. - DATA: lo_split TYPE REF TO cl_gui_splitter_container, - lo_container TYPE REF TO cl_gui_container. - - DATA: it_fieldcat TYPE lvc_t_fcat, - is_layout TYPE lvc_s_layo, - is_variant TYPE disvariant. - FIELD-SYMBOLS: LIKE LINE OF it_fieldcat. - - - CREATE OBJECT lo_split - EXPORTING - parent = cl_gui_container=>screen0 - rows = 1 - columns = 3 - no_autodef_progid_dynnr = 'X'. - lo_split->set_column_width( EXPORTING id = 1 - width = 20 ). - lo_split->set_column_width( EXPORTING id = 2 - width = 40 ). - -* Left: List of reports - lo_container = lo_split->get_container( row = 1 - column = 1 ). - - CREATE OBJECT lo_grid - EXPORTING - i_parent = lo_container. - SET HANDLER lcl_perform=>handle_nav FOR lo_grid. - - is_variant-report = sy-repid. - is_variant-handle = '0001'. - - is_layout-cwidth_opt = 'X'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING . - -fieldname = 'PROGNAME'. - -tabname = 'REPOSRC'. - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING . - -fieldname = 'SORT'. - -ref_field = 'PROGNAME'. - -ref_table = 'REPOSRC'. - -tech = abap_true. "No need to display this help field - - APPEND INITIAL LINE TO it_fieldcat ASSIGNING . - -fieldname = 'DESCRIPTION'. - -ref_field = 'REPTI'. - -ref_table = 'RS38M'. - - lo_grid->set_table_for_first_display( EXPORTING - is_variant = is_variant - i_save = 'A' - is_layout = is_layout - CHANGING - it_outtab = t_reports - it_fieldcatalog = it_fieldcat - EXCEPTIONS - invalid_parameter_combination = 1 - program_error = 2 - too_many_lines = 3 - OTHERS = 4 ). - -* Middle: Text with coding - lo_container = lo_split->get_container( row = 1 - column = 2 ). - CREATE OBJECT lo_text - EXPORTING - parent = lo_container. - lo_text->set_readonly_mode( cl_gui_textedit=>true ). - lo_text->set_font_fixed( ). - - - -* right: DemoOutput - lo_container = lo_split->get_container( row = 1 - column = 3 ). - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = lo_container - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - - ENDMETHOD. "setup_objects - - "collect_reports - METHOD collect_reports. - FIELD-SYMBOLS LIKE LINE OF t_reports. - DATA t_source TYPE STANDARD TABLE OF text255 WITH NON-UNIQUE DEFAULT KEY. - DATA texts TYPE STANDARD TABLE OF textpool. - DATA description TYPE textpool. - -* Get all demoreports - SELECT progname - INTO CORRESPONDING FIELDS OF TABLE t_reports - FROM reposrc - WHERE progname LIKE 'ZDEMO_EXCEL%' - AND progname <> sy-repid - AND subc = '1'. - - LOOP AT t_reports ASSIGNING . - -* Check if already switched to new outputoptions - READ REPORT -progname INTO t_source. - IF sy-subrc = 0. - FIND 'INCLUDE zdemo_excel_outputopt_incl.' IN TABLE t_source IGNORING CASE. - ENDIF. - IF sy-subrc <> 0. - DELETE t_reports. - CONTINUE. - ENDIF. - - -* Build half-numeric sort - -sort = -progname. - REPLACE REGEX '(ZDEMO_EXCEL)(\d\d)\s*$' IN -sort WITH '$1\0$2'. " REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN -sort WITH '$1$2'.REPLACE REGEX '(ZDEMO_EXCEL)([^][^])*$' IN -sort WITH '$1$2'.REPLACE - - REPLACE REGEX '(ZDEMO_EXCEL)(\d)\s*$' IN -sort WITH '$1\0\0$2'. - -* get report text - READ TEXTPOOL -progname INTO texts LANGUAGE sy-langu. - READ TABLE texts INTO description WITH KEY id = 'R'. - IF sy-subrc > 0. - "If not available in logon language, use english - READ TEXTPOOL -progname INTO texts LANGUAGE 'E'. - READ TABLE texts INTO description WITH KEY id = 'R'. - ENDIF. - "set report title - -description = description-entry. - - ENDLOOP. - - SORT t_reports BY sort progname. - - ENDMETHOD. "collect_reports - - METHOD handle_nav. - CONSTANTS: filename TYPE text80 VALUE 'ZABAP2XLSX_DEMO_SHOW.xlsx'. - DATA: wa_report LIKE LINE OF t_reports, - t_source TYPE STANDARD TABLE OF text255, - t_rawdata TYPE solix_tab, - wa_rawdata LIKE LINE OF t_rawdata, - bytecount TYPE i, - length TYPE i, - add_selopt TYPE flag. - - - READ TABLE t_reports INTO wa_report INDEX e_row-index. - CHECK sy-subrc = 0. - -* Set new text into middle frame - READ REPORT wa_report-progname INTO t_source. - lo_text->set_text_as_r3table( EXPORTING table = t_source ). - - -* Unload old xls-file - cl_document->close_document( ). - -* Get the demo -* If additional parameters found on selection screen, start via selection screen , otherwise start w/o - CLEAR add_selopt. - FIND 'PARAMETERS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ELSE. - FIND 'SELECT-OPTIONS' IN TABLE t_source. - IF sy-subrc = 0. - add_selopt = 'X'. - ENDIF. - ENDIF. - IF add_selopt IS INITIAL. - SUBMIT (wa_report-progname) AND RETURN "#EC CI_SUBMIT - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ELSE. - SUBMIT (wa_report-progname) VIA SELECTION-SCREEN AND RETURN "#EC CI_SUBMIT - WITH p_backfn = filename - WITH rb_back = 'X' - WITH rb_down = ' ' - WITH rb_send = ' ' - WITH rb_show = ' '. - ENDIF. - - OPEN DATASET filename FOR INPUT IN BINARY MODE. - IF sy-subrc = 0. - DO. - CLEAR wa_rawdata. - READ DATASET filename INTO wa_rawdata LENGTH length. - IF sy-subrc <> 0. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - EXIT. - ENDIF. - APPEND wa_rawdata TO t_rawdata. - ADD length TO bytecount. - ENDDO. - CLOSE DATASET filename. - ENDIF. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - ENDMETHOD. "handle_nav - -ENDCLASS. "lcl_perform IMPLEMENTATION diff --git a/src/demos/zabap2xlsx_demo_show.prog.xml b/src/demos/zabap2xlsx_demo_show.prog.xml deleted file mode 100644 index 63222e7..0000000 --- a/src/demos/zabap2xlsx_demo_show.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZABAP2XLSX_DEMO_SHOW - 1 - T - E - X - X - - - - R - abap2xlsx Demo Show - 19 - - - - - diff --git a/src/demos/zangry_birds.prog.abap b/src/demos/zangry_birds.prog.abap deleted file mode 100644 index 3ad0d17..0000000 --- a/src/demos/zangry_birds.prog.abap +++ /dev/null @@ -1,752 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZANGRY_BIRDS -*& Just for fun -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zangry_birds. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_border_light TYPE REF TO zcl_excel_style_border, - lo_style_color0 TYPE REF TO zcl_excel_style, - lo_style_color1 TYPE REF TO zcl_excel_style, - lo_style_color2 TYPE REF TO zcl_excel_style, - lo_style_color3 TYPE REF TO zcl_excel_style, - lo_style_color4 TYPE REF TO zcl_excel_style, - lo_style_color5 TYPE REF TO zcl_excel_style, - lo_style_color6 TYPE REF TO zcl_excel_style, - lo_style_color7 TYPE REF TO zcl_excel_style, - lo_style_credit TYPE REF TO zcl_excel_style, - lo_style_link TYPE REF TO zcl_excel_style, - lo_column TYPE REF TO zcl_excel_column, - lo_row TYPE REF TO zcl_excel_row, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_style_color0_guid TYPE zexcel_cell_style, - lv_style_color1_guid TYPE zexcel_cell_style, - lv_style_color2_guid TYPE zexcel_cell_style, - lv_style_color3_guid TYPE zexcel_cell_style, - lv_style_color4_guid TYPE zexcel_cell_style, - lv_style_color5_guid TYPE zexcel_cell_style, - lv_style_color6_guid TYPE zexcel_cell_style, - lv_style_color7_guid TYPE zexcel_cell_style, - lv_style_credit_guid TYPE zexcel_cell_style, - lv_style_link_guid TYPE zexcel_cell_style. - -DATA: lv_col_str TYPE zexcel_cell_column_alpha, - lv_row TYPE i, - lv_col TYPE i, - lt_mapper TYPE TABLE OF zexcel_cell_style, - ls_mapper TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'angry_birds.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_white. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - - " Create color white - lo_style_color0 = lo_excel->add_new_style( ). - lo_style_color0->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color0->fill->fgcolor-rgb = 'FFFFFFFF'. - lo_style_color0->borders->allborders = lo_border_light. - lv_style_color0_guid = lo_style_color0->get_guid( ). - - " Create color black - lo_style_color1 = lo_excel->add_new_style( ). - lo_style_color1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color1->fill->fgcolor-rgb = 'FF252525'. - lo_style_color1->borders->allborders = lo_border_light. - lv_style_color1_guid = lo_style_color1->get_guid( ). - - " Create color dark green - lo_style_color2 = lo_excel->add_new_style( ). - lo_style_color2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color2->fill->fgcolor-rgb = 'FF75913A'. - lo_style_color2->borders->allborders = lo_border_light. - lv_style_color2_guid = lo_style_color2->get_guid( ). - - " Create color light green - lo_style_color3 = lo_excel->add_new_style( ). - lo_style_color3->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color3->fill->fgcolor-rgb = 'FF9DFB73'. - lo_style_color3->borders->allborders = lo_border_light. - lv_style_color3_guid = lo_style_color3->get_guid( ). - - " Create color green - lo_style_color4 = lo_excel->add_new_style( ). - lo_style_color4->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color4->fill->fgcolor-rgb = 'FF92CF56'. - lo_style_color4->borders->allborders = lo_border_light. - lv_style_color4_guid = lo_style_color4->get_guid( ). - - " Create color 2dark green - lo_style_color5 = lo_excel->add_new_style( ). - lo_style_color5->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color5->fill->fgcolor-rgb = 'FF506228'. - lo_style_color5->borders->allborders = lo_border_light. - lv_style_color5_guid = lo_style_color5->get_guid( ). - - " Create color yellow - lo_style_color6 = lo_excel->add_new_style( ). - lo_style_color6->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color6->fill->fgcolor-rgb = 'FFC3E224'. - lo_style_color6->borders->allborders = lo_border_light. - lv_style_color6_guid = lo_style_color6->get_guid( ). - - " Create color yellow - lo_style_color7 = lo_excel->add_new_style( ). - lo_style_color7->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_color7->fill->fgcolor-rgb = 'FFB3C14F'. - lo_style_color7->borders->allborders = lo_border_light. - lv_style_color7_guid = lo_style_color7->get_guid( ). - - " Credits - lo_style_credit = lo_excel->add_new_style( ). - lo_style_credit->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_credit->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_credit->font->size = 20. - lv_style_credit_guid = lo_style_credit->get_guid( ). - - " Link - lo_style_link = lo_excel->add_new_style( ). - lo_style_link->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_link->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_link_guid = lo_style_link->get_guid( ). - - " Create image map " line 2 - DO 30 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 3 - DO 28 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 4 - DO 27 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 5 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 6 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 7 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 8 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 9 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 10 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 11 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 12 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 13 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 14 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 12 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 15 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 16 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 17 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 18 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 19 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 27 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 20 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 23 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 21 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 19 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 22 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 23 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 24 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 25 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 26 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 27 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 28 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color6_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 29 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 30 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 31 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color4_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 32 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color5_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 33 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 34 - DO 3 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 35 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 36 - DO 4 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 37 - DO 5 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color7_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 38 - DO 6 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 10 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 11 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 39 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 22 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 1 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 40 - DO 7 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 17 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 41 - DO 8 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 3 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 15 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 42 - DO 9 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 9 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 2 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 43 - DO 11 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 5 TIMES. APPEND lv_style_color3_guid TO lt_mapper. ENDDO. - DO 7 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 44 - DO 13 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 6 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - DO 4 TIMES. APPEND lv_style_color2_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 45 - DO 16 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 13 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - " line 46 - DO 18 TIMES. APPEND lv_style_color0_guid TO lt_mapper. ENDDO. - DO 8 TIMES. APPEND lv_style_color1_guid TO lt_mapper. ENDDO. - APPEND INITIAL LINE TO lt_mapper. " escape - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Angry Birds' ). - - lv_row = 1. - lv_col = 1. - - LOOP AT lt_mapper INTO ls_mapper. - lv_col_str = zcl_excel_common=>convert_column2alpha( lv_col ). - IF ls_mapper IS INITIAL. - lo_row = lo_worksheet->get_row( ip_row = lv_row ). - lo_row->set_row_height( ip_row_height = 8 ). - lv_col = 1. - lv_row = lv_row + 1. - CONTINUE. - ENDIF. - lo_worksheet->set_cell( ip_column = lv_col_str - ip_row = lv_row - ip_value = space - ip_style = ls_mapper ). - lv_col = lv_col + 1. - - lo_column = lo_worksheet->get_column( ip_column = lv_col_str ). - lo_column->set_width( ip_width = 2 ). - ENDLOOP. - - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 15 - ip_value = 'Created with abap2xlsx' - ip_style = lv_style_credit_guid ). - - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://abap2xlsx.github.io/abap2xlsx' ). - lo_worksheet->set_cell( ip_column = 'AP' - ip_row = 24 - ip_value = 'https://abap2xlsx.github.io/abap2xlsx' - ip_style = lv_style_link_guid - ip_hyperlink = lo_hyperlink ). - - lo_column = lo_worksheet->get_column( ip_column = 'AP' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->set_merge( ip_row = 15 ip_column_start = 'AP' ip_row_to = 22 ip_column_end = 'AR' ). - lo_worksheet->set_merge( ip_row = 24 ip_column_start = 'AP' ip_row_to = 26 ip_column_end = 'AR' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zangry_birds.prog.xml b/src/demos/zangry_birds.prog.xml deleted file mode 100644 index c2860eb..0000000 --- a/src/demos/zangry_birds.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZANGRY_BIRDS - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Styles - 25 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_calendar.prog.abap b/src/demos/zdemo_calendar.prog.abap deleted file mode 100644 index 53df60e..0000000 --- a/src/demos/zdemo_calendar.prog.abap +++ /dev/null @@ -1,380 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_CALENDAR -*& abap2xlsx Demo: Create Calendar with Pictures -*&---------------------------------------------------------------------* -*& This report creates a monthly calendar in the specified date range. -*& Each month is put on a seperate worksheet. The pictures for each -*& month can be specified in a tab delimited UTF-8 encoded file called -*& "Calendar.txt" which is saved in the Export Directory. -*& By default this is the SAP Workdir. The file contains 3 fields: -*& -*& Month (with leading 0) -*& Image Filename -*& Image Description -*& URL for the Description -*& Photographer -*& -*& The Images should be landscape JPEG's with a 3:2 ratio and min. -*& 450 pixel height. They must also be saved in the Export Directory. -*& In my tests I've discovered a limit of 20 MB in the -*& cl_gui_frontend_services=>gui_download method. So keep your images -*& smaller or change to a server export using OPEN DATASET. -*&---------------------------------------------------------------------* - -REPORT zdemo_calendar. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'Calendar.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. -INCLUDE zdemo_calendar_classes. - -DATA: lv_workdir TYPE string. - -PARAMETERS: p_from TYPE dfrom, - p_to TYPE dto. - -SELECTION-SCREEN BEGIN OF BLOCK orientation WITH FRAME TITLE orient. -PARAMETERS: p_portr TYPE flag RADIOBUTTON GROUP orie, - p_lands TYPE flag RADIOBUTTON GROUP orie DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK orientation. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - orient = 'Orientation'(000). - p_from = |{ sy-datum(4) }0101|. - p_to = |{ sy-datum(4) }1231|. - -START-OF-SELECTION. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column TYPE REF TO zcl_excel_column, - lo_row TYPE REF TO zcl_excel_row, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_drawing TYPE REF TO zcl_excel_drawing. - - DATA: lo_style_month TYPE REF TO zcl_excel_style, - lv_style_month_guid TYPE zexcel_cell_style. - DATA: lo_style_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lv_style_border_guid TYPE zexcel_cell_style. - DATA: lo_style_center TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style. - DATA: lo_style_right TYPE REF TO zcl_excel_style, - lv_style_right_guid TYPE zexcel_cell_style. - - DATA: lv_full_path TYPE string, - image_descr_path TYPE string, - lv_file_separator TYPE c. - DATA: lv_content TYPE xstring, - width TYPE i, - lv_height TYPE i, - lv_from_row TYPE zexcel_cell_row. - - DATA: month TYPE i, - month_nr TYPE fcmnr, - count TYPE i VALUE 1, - title TYPE zexcel_sheet_title, - value TYPE string, - image_path TYPE string, - date_from TYPE datum, - date_to TYPE datum, - row TYPE zexcel_cell_row, - to_row TYPE zexcel_cell_row, - to_col TYPE zexcel_cell_column_alpha, - to_col_end TYPE zexcel_cell_column_alpha, - to_col_int TYPE i. - - DATA: month_names TYPE TABLE OF t247. - FIELD-SYMBOLS: LIKE LINE OF month_names. - - TYPES: BEGIN OF tt_datatab, - month_nr TYPE fcmnr, - filename TYPE string, - descr TYPE string, - url TYPE string, - photographer TYPE string, - END OF tt_datatab. - - DATA: image_descriptions TYPE TABLE OF tt_datatab. - FIELD-SYMBOLS: LIKE LINE OF image_descriptions. - - CONSTANTS: lv_default_file_name TYPE string VALUE 'Calendar', "#EC NOTEXT - c_from_row_portrait TYPE zexcel_cell_row VALUE 28, - c_from_row_landscape TYPE zexcel_cell_row VALUE 38, - from_col TYPE zexcel_cell_column_alpha VALUE 'C', - c_height_portrait TYPE i VALUE 450, " Image Height in Portrait Mode - c_height_landscape TYPE i VALUE 670, " Image Height in Landscape Mode - c_factor TYPE f VALUE '1.5'. " Image Ratio, default 3:2 - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name '.xlsx' INTO lv_full_path. "#EC NOTEXT - - " Read Image Names for Month and Description - CONCATENATE p_path lv_file_separator lv_default_file_name '.txt' INTO image_descr_path. "#EC NOTEXT - cl_gui_frontend_services=>gui_upload( - EXPORTING - filename = image_descr_path " Name of file - filetype = 'ASC' " File Type (ASCII, Binary) - has_field_separator = 'X' - read_by_line = 'X' " File Written Line-By-Line to the Internal Table - codepage = '4110' - CHANGING - data_tab = image_descriptions " Transfer table for file contents - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create Styles - " Create an underline double style - lo_style_month = lo_excel->add_new_style( ). - lo_style_month->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lo_style_month->font->bold = abap_true. - lo_style_month->font->size = 36. - lv_style_month_guid = lo_style_month->get_guid( ). - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lo_style_border->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_border_guid = lo_style_border->get_guid( ). - "Create style alignment center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_center->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_center_guid = lo_style_center->get_guid( ). - "Create style alignment right - lo_style_right = lo_excel->add_new_style( ). - lo_style_right->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lv_style_right_guid = lo_style_right->get_guid( ). - - " Get Month Names - CALL FUNCTION 'MONTH_NAMES_GET' - TABLES - month_names = month_names. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = p_from - i_date_to = p_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - date_from = p_from. - - WHILE count <= month. - IF count = 1. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - ELSE. - lo_worksheet = lo_excel->add_new_worksheet( ). - ENDIF. - - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - - title = count. - value = count. - CONDENSE title. - CONDENSE value. - lo_worksheet->set_title( title ). - lo_worksheet->set_print_gridlines( abap_false ). - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_column = lo_worksheet->get_column( 'A' ). - lo_column->set_width( '1.0' ). - lo_column = lo_worksheet->get_column( 'B' ). - lo_column->set_width( '2.0' ). - IF p_lands = abap_true. - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lv_height = c_height_landscape. - lv_from_row = c_from_row_landscape. - lo_worksheet->sheet_setup->margin_top = '0.10'. - lo_worksheet->sheet_setup->margin_left = '0.10'. - lo_worksheet->sheet_setup->margin_right = '0.10'. - lo_worksheet->sheet_setup->margin_bottom = '0.10'. - ELSE. - lo_column = lo_worksheet->get_column( 'K' ). - lo_column->set_width( '3.0' ). - lo_worksheet->sheet_setup->margin_top = '0.80'. - lo_worksheet->sheet_setup->margin_left = '0.55'. - lo_worksheet->sheet_setup->margin_right = '0.05'. - lo_worksheet->sheet_setup->margin_bottom = '0.30'. - lv_height = c_height_portrait. - lv_from_row = c_from_row_portrait. - ENDIF. - - " Add Month Name - month_nr = date_from+4(2). - IF p_portr = abap_true. - READ TABLE month_names WITH KEY mnr = month_nr ASSIGNING . - CONCATENATE -ltx ` ` date_from(4) INTO value. - row = lv_from_row - 2. - to_col = from_col. - ELSE. - row = lv_from_row - 1. - to_col_int = zcl_excel_common=>convert_column2int( from_col ) + 32. - to_col = zcl_excel_common=>convert_column2alpha( to_col_int ). - to_col_int = to_col_int + 1. - to_col_end = zcl_excel_common=>convert_column2alpha( to_col_int ). - CONCATENATE month_nr '/' date_from+2(2) INTO value. - to_row = row + 2. - lo_worksheet->set_merge( - EXPORTING - ip_column_start = to_col " Cell Column Start - ip_column_end = to_col_end " Cell Column End - ip_row = row " Cell Row - ip_row_to = to_row " Cell Row - ). - ENDIF. - lo_worksheet->set_cell( - EXPORTING - ip_column = to_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = lv_style_month_guid - ). - - " Add drawing from a XSTRING read from a file - UNASSIGN . - READ TABLE image_descriptions WITH KEY month_nr = month_nr ASSIGNING . - IF IS ASSIGNED. - value = -descr. - IF p_portr = abap_true. - row = lv_from_row - 3. - ELSE. - row = lv_from_row - 2. - ENDIF. - IF NOT -url IS INITIAL. - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( -url ). - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = lo_hyperlink - ). - ELSE. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ). - ENDIF. - lo_row = lo_worksheet->get_row( row ). - lo_row->set_row_height( '22.0' ). - " Photographer - IF NOT -photographer IS INITIAL. - value = -photographer. - lo_worksheet->set_cell( - EXPORTING - ip_column = to_col_end " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = lv_style_right_guid - ). - ENDIF. - " In Landscape mode the row between the description and the - " dates should be not so high - IF p_lands = abap_true. - row = lv_from_row - 3. - lo_worksheet->set_cell( - EXPORTING - ip_column = from_col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row = lo_worksheet->get_row( row ). - lo_row->set_row_height( '7.0' ). - row = lv_from_row - 1. - lo_row = lo_worksheet->get_row( row ). - lo_row->set_row_height( '5.0' ). - ENDIF. - - CONCATENATE p_path lv_file_separator -filename INTO image_path. - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 1 - ip_from_col = 'B' ). - - lv_content = zcl_helper=>load_image( image_path ). - width = lv_height * c_factor. - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = width - ip_height = lv_height ). - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - - " Add Calendar - date_to = date_from. - date_to+6(2) = '01'. " First of month - ADD 31 TO date_to. " Somewhere in following month - date_to = date_to - date_to+6(2). " Last of month - IF p_portr = abap_true. - zcl_helper=>add_calendar( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ELSE. - zcl_helper=>add_calendar_landscape( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_from_row = lv_from_row - i_from_col = from_col - i_day_style = lv_style_border_guid - i_cw_style = lv_style_center_guid - CHANGING - c_worksheet = lo_worksheet - ). - ENDIF. - count = count + 1. - date_from = date_to + 1. - ENDWHILE. - - lo_excel->set_active_sheet_index_by_name( '1' ). -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_calendar.prog.xml b/src/demos/zdemo_calendar.prog.xml deleted file mode 100644 index b025e2e..0000000 --- a/src/demos/zdemo_calendar.prog.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - ZDEMO_CALENDAR - 1 - T - E - X - X - - - - I - 000 - Orientation - 21 - - - I - 001 - CW - 12 - - - I - 002 - Created with https://github.com/abap2xlsx/abap2xlsx - 132 - - - R - abap2xlsx Demo: Create Calendar with Pictures - 45 - - - S - P_FROM - From - 12 - - - S - P_LANDS - Landscape - 17 - - - S - P_PATH - Path - 12 - - - S - P_PORTR - Portrait - 16 - - - S - P_TO - To - 10 - - - - - D - - - I - 000 - Ausrichtung - 21 - - - I - 001 - KW - 12 - - - I - 002 - Erzeugt mit https://github.com/abap2xlsx/abap2xlsx - 132 - - - R - abap2xlsx Demo: Erzeugen eines Kalenders mit Bildern - 70 - - - S - P_FROM - Von - 38 - - - S - P_LANDS - Querformat - 38 - - - S - P_PATH - Pfad - 38 - - - S - P_PORTR - Hochformat - 38 - - - S - P_TO - Bis - 38 - - - - - - - diff --git a/src/demos/zdemo_calendar_classes.prog.abap b/src/demos/zdemo_calendar_classes.prog.abap deleted file mode 100644 index 106f9a6..0000000 --- a/src/demos/zdemo_calendar_classes.prog.abap +++ /dev/null @@ -1,476 +0,0 @@ -*&---------------------------------------------------------------------* -*& Include ZDEMO_CALENDAR_CLASSES -*&---------------------------------------------------------------------* - -*&---------------------------------------------------------------------* -*& Class ZCL_DATE_CALCULATION -*&---------------------------------------------------------------------* -* Text -*----------------------------------------------------------------------* -CLASS zcl_date_calculation DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: months_between_two_dates - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_incl_to TYPE flag - EXPORTING - e_month TYPE i. -ENDCLASS. "ZCL_DATE_CALCULATION - - -*----------------------------------------------------------------------* -* CLASS ZCL_DATE_CALCULATION IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation IMPLEMENTATION. - METHOD months_between_two_dates. - DATA: date_to TYPE datum. - DATA: BEGIN OF datum_von, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_von. - - DATA: BEGIN OF datum_bis, - jjjj(4) TYPE n, - mm(2) TYPE n, - tt(2) TYPE n, - END OF datum_bis. - - e_month = 0. - - CHECK i_date_from IS NOT INITIAL AND i_date_to IS NOT INITIAL. - - date_to = i_date_to. - IF i_incl_to = abap_true. - date_to = date_to + 1. - ENDIF. - - datum_von = i_date_from. - datum_bis = date_to. - - e_month = ( datum_bis-jjjj - datum_von-jjjj ) * 12 - + ( datum_bis-mm - datum_von-mm ). - ENDMETHOD. "MONTHS_BETWEEN_TWO_DATES -ENDCLASS. "ZCL_DATE_CALCULATION IMPLEMENTATION - -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test DEFINITION FOR TESTING - DURATION SHORT - RISK LEVEL HARMLESS - . - PRIVATE SECTION. - METHODS: - months_between_two_dates FOR TESTING. -ENDCLASS. "zcl_date_calculation_test DEFINITION -*----------------------------------------------------------------------* -* CLASS zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_date_calculation_test IMPLEMENTATION. - METHOD months_between_two_dates. - - DATA: date_from TYPE datum VALUE '20120101', - date_to TYPE datum VALUE '20121231'. - DATA: month TYPE i. - - zcl_date_calculation=>months_between_two_dates( - EXPORTING - i_date_from = date_from - i_date_to = date_to - i_incl_to = abap_true - IMPORTING - e_month = month - ). - - cl_abap_unit_assert=>assert_equals( - exp = 12 " Data Object with Expected Type - act = month " Data Object with Current Value - msg = 'Calculated date is wrong' " Message in Case of Error - ). - - ENDMETHOD. "months_between_two_dates -ENDCLASS. "zcl_date_calculation_test IMPLEMENTATION -*----------------------------------------------------------------------* -* CLASS zcl_helper DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper DEFINITION. - PUBLIC SECTION. - CLASS-METHODS: - load_image - IMPORTING - filename TYPE string - RETURNING VALUE(r_image) TYPE xstring, - add_calendar - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel, - add_calendar_landscape - IMPORTING - i_date_from TYPE datum - i_date_to TYPE datum - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - i_day_style TYPE zexcel_cell_style - i_cw_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel, - add_a2x_footer - IMPORTING - i_from_row TYPE zexcel_cell_row - i_from_col TYPE zexcel_cell_column_alpha - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel, - add_calender_week - IMPORTING - i_date TYPE datum - i_row TYPE zexcel_cell_row - i_col TYPE zexcel_cell_column_alpha - i_style TYPE zexcel_cell_style - CHANGING - c_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel. -ENDCLASS. "zcl_helper DEFINITION - -*----------------------------------------------------------------------* -* CLASS zcl_helper IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS zcl_helper IMPLEMENTATION. - METHOD load_image. - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = filename - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = r_image - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - ENDMETHOD. "load_image - METHOD add_calendar. - DATA: day_names TYPE TABLE OF t246. - DATA: row TYPE zexcel_cell_row, - row_max TYPE i, - col_int TYPE zexcel_cell_column, - col_max TYPE i, - from_col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha, - lo_column TYPE REF TO zcl_excel_column, - lo_row TYPE REF TO zcl_excel_row. - DATA: lv_date TYPE datum, - value TYPE string, - weekday TYPE wotnr, - weekrow TYPE wotnr VALUE 1, - day TYPE i, - width TYPE f, - height TYPE f. - DATA: hyperlink TYPE REF TO zcl_excel_hyperlink. - - FIELD-SYMBOLS: LIKE LINE OF day_names. - - lv_date = i_date_from. - from_col_int = zcl_excel_common=>convert_column2int( i_from_col ). - " Add description for Calendar Week - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = 'CW'(001) " Cell Value - ip_style = i_cw_style - ). - - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - LOOP AT day_names ASSIGNING . - row = i_from_row. - col_int = from_col_int + -wotnr. - col = zcl_excel_common=>convert_column2alpha( col_int ). - value = -langt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - ENDLOOP. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - - row = i_from_row + weekrow. - col_int = from_col_int + weekday. - col = zcl_excel_common=>convert_column2alpha( col_int ). - - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - - IF weekday = 7. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - weekrow = weekrow + 1. - ENDIF. - lv_date = lv_date + 1. - ENDWHILE. - " Add Calender Week - zcl_helper=>add_calender_week( - EXPORTING - i_date = lv_date - i_row = row - i_col = i_from_col - i_style = i_cw_style - CHANGING - c_worksheet = c_worksheet - ). - " Add Created with abap2xlsx - row = row + 2. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - col_int = from_col_int. - col_max = from_col_int + 7. - WHILE col_int <= col_max. - col = zcl_excel_common=>convert_column2alpha( col_int ). - IF sy-index = 1. - width = '5.0'. - ELSE. - width = '11.4'. - ENDIF. - lo_column = c_worksheet->get_column( col ). - lo_column->set_width( width ). - col_int = col_int + 1. - ENDWHILE. - row = i_from_row + 1. - row_max = i_from_row + 6. - WHILE row <= row_max. - height = 50. - lo_row = c_worksheet->get_row( row ). - lo_row->set_row_height( height ). - row = row + 1. - ENDWHILE. - ENDMETHOD. "add_calendar - METHOD add_a2x_footer. - DATA: value TYPE string, - hyperlink TYPE REF TO zcl_excel_hyperlink. - - value = 'Created with https://github.com/abap2xlsx/abap2xlsx'(002). - hyperlink = zcl_excel_hyperlink=>create_external_link( 'https://github.com/abap2xlsx/abap2xlsx' ). "#EC NOTEXT - c_worksheet->set_cell( - EXPORTING - ip_column = i_from_col " Cell Column - ip_row = i_from_row " Cell Row - ip_value = value " Cell Value - ip_hyperlink = hyperlink - ). - - ENDMETHOD. "add_a2x_footer - METHOD add_calendar_landscape. - DATA: day_names TYPE TABLE OF t246. - - DATA: lv_date TYPE datum, - day TYPE i, - value TYPE string, - weekday TYPE wotnr. - DATA: row TYPE zexcel_cell_row, - from_col_int TYPE zexcel_cell_column, - col_int TYPE zexcel_cell_column, - col TYPE zexcel_cell_column_alpha. - DATA: lo_column TYPE REF TO zcl_excel_column, - lo_row TYPE REF TO zcl_excel_row. - - FIELD-SYMBOLS: LIKE LINE OF day_names. - - lv_date = i_date_from. - " Add Days - CALL FUNCTION 'DAY_NAMES_GET' - TABLES - day_names = day_names. - - WHILE lv_date <= i_date_to. - day = lv_date+6(2). - CALL FUNCTION 'FIMA_X_DAY_IN_MONTH_COMPUTE' - EXPORTING - i_datum = lv_date - IMPORTING - e_wochentag_nr = weekday. - " Day name row - row = i_from_row. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - READ TABLE day_names ASSIGNING - WITH KEY wotnr = weekday. - value = -kurzt. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_cw_style - ). - - " Day row - row = i_from_row + 1. - value = day. - CONDENSE value. - - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = value " Cell Value - ip_style = i_day_style " Single-Character Indicator - ). - " width - lo_column = c_worksheet->get_column( col ). - lo_column->set_width( '3.6' ). - - - lv_date = lv_date + 1. - ENDWHILE. - " Add ABAP2XLSX Footer - row = i_from_row + 2. - c_worksheet->set_cell( - EXPORTING - ip_column = col " Cell Column - ip_row = row " Cell Row - ip_value = ' ' " Cell Value - ). - lo_row = c_worksheet->get_row( row ). - lo_row->set_row_height( '5.0' ). - row = i_from_row + 3. - zcl_helper=>add_a2x_footer( - EXPORTING - i_from_row = row - i_from_col = i_from_col - CHANGING - c_worksheet = c_worksheet - ). - - " Set with for all 31 coulumns - WHILE day < 32. - day = day + 1. - col_int = from_col_int + day + 2. - col = zcl_excel_common=>convert_column2alpha( col_int ). - " width - lo_column = c_worksheet->get_column( col ). - lo_column->set_width( '3.6' ). - ENDWHILE. - ENDMETHOD. "ADD_CALENDAR_LANDSCAPE - - METHOD add_calender_week. - DATA: week TYPE kweek, - week_int TYPE i, - value TYPE string. - " Add Calender Week - CALL FUNCTION 'DATE_GET_WEEK' - EXPORTING - date = i_date " Date for which the week should be calculated - IMPORTING - week = week. " Week for date (format:YYYYWW) - value = week+4(2). - week_int = value. - value = week_int. - CONDENSE value. - c_worksheet->set_cell( - EXPORTING - ip_column = i_col " Cell Column - ip_row = i_row " Cell Row - ip_value = value " Cell Value - ip_style = i_style - ). - ENDMETHOD. "add_calender_week -ENDCLASS. "zcl_helper IMPLEMENTATION diff --git a/src/demos/zdemo_calendar_classes.prog.xml b/src/demos/zdemo_calendar_classes.prog.xml deleted file mode 100644 index bdad86c..0000000 --- a/src/demos/zdemo_calendar_classes.prog.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - ZDEMO_CALENDAR_CLASSES - I - E - X - - - - R - Include ZDEMO_CALENDAR_CLASSES - 30 - - - - - diff --git a/src/demos/zdemo_excel.prog.abap b/src/demos/zdemo_excel.prog.abap deleted file mode 100644 index f4b64fd..0000000 --- a/src/demos/zdemo_excel.prog.abap +++ /dev/null @@ -1,91 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel. - -DATA: lv_workdir TYPE string, - lv_filesep TYPE c LENGTH 1, - lv_upfile TYPE string. - - -PARAMETERS: p_path TYPE zexcel_export_dir. -PARAMETERS: p_checkr NO-DISPLAY TYPE abap_bool. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_filesep ). - CONCATENATE p_path lv_filesep '01_HelloWorld.xlsx' INTO lv_upfile. - - SUBMIT zdemo_excel1 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Hello world - SUBMIT zdemo_excel2 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Styles - SUBMIT zdemo_excel3 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path WITH p_checkr = p_checkr AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: iTab binding - SUBMIT zdemo_excel4 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multi sheets, page setup and sheet properties - SUBMIT zdemo_excel5 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel6 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Formulas - SUBMIT zdemo_excel7 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional formatting - SUBMIT zdemo_excel8 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Ranges - SUBMIT zdemo_excel9 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Data validation - SUBMIT zdemo_excel10 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind table with field catalog - " zdemo_excel11 is not added because it has a selection screen and - " you also need to have business partners maintained in transaction BP - SUBMIT zdemo_excel12 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Column size - SUBMIT zdemo_excel13 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Merge cell - SUBMIT zdemo_excel14 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Alignment - " zdemo_excel15 added at the end - SUBMIT zdemo_excel16 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Drawing - SUBMIT zdemo_excel17 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Lock sheet - SUBMIT zdemo_excel18 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Lock workbook - SUBMIT zdemo_excel19 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Set active sheet - " zdemo_excel20 is not added because it uses ALV and cannot be processed (OLE2) - SUBMIT zdemo_excel21 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Color Picker - SUBMIT zdemo_excel22 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind table with field catalog & sheet style - SUBMIT zdemo_excel23 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multiple sheets with and w/o grid lines, print options - SUBMIT zdemo_excel24 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Multiple sheets with different default date formats - " zdemo_excel25 is not processed because the default logical path may not exist, and anyway zdemo_excel25 doesn't demonstrate any abap2xlsx feature - " zdemo_excel26 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel27 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Conditional Formatting - SUBMIT zdemo_excel28 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: CSV writer - " SUBMIT zdemo_excel29 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Macro enabled workbook - SUBMIT zdemo_excel30 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: ABAP Cell data types + leading blanks string - SUBMIT zdemo_excel31 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Autosize Column with different Font sizes - " zdemo_excel32 is not added because it uses ALV and cannot be processed (Native) - SUBMIT zdemo_excel33 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Table autofilter - SUBMIT zdemo_excel34 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Static Styles Chess - SUBMIT zdemo_excel35 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Static Styles - SUBMIT zdemo_excel36 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Style applied to sheet, column and single cell - SUBMIT zdemo_excel37 WITH p_upfile = lv_upfile - WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Simplest call of the reader and writer - passthrough data - SUBMIT zdemo_excel38 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Show off integration of drawings ( here using the SAP-Icons ) - SUBMIT zdemo_excel39 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Charts - SUBMIT zdemo_excel40 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Demo Printsettings - SUBMIT zdemo_excel41 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Inheritance - SUBMIT zdemo_excel44 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: No line if empty - SUBMIT zdemo_excel49 WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Bind Table with field having Conversion Exit - - SUBMIT zdemo_excel_comments WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Comments - SUBMIT ztest_excel_image_header WITH rb_down = abap_true WITH rb_show = abap_false WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT abap2xlsx Demo: Image in Header and Footer - " - " Reader/Writer Demo must always run at the end - " to make sure all documents where created - " - SUBMIT zdemo_excel15 WITH p_path = p_path AND RETURN. "#EC CI_SUBMIT Read Excel and write it back diff --git a/src/demos/zdemo_excel.prog.xml b/src/demos/zdemo_excel.prog.xml deleted file mode 100644 index 6efcb28..0000000 --- a/src/demos/zdemo_excel.prog.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - ZDEMO_EXCEL - 1 - T - E - X - X - - - - R - abap2xlsx Demo: - 15 - - - S - P_PATH - Select output path - 26 - - - - - diff --git a/src/demos/zdemo_excel1.prog.abap b/src/demos/zdemo_excel1.prog.abap deleted file mode 100644 index e1505a1..0000000 --- a/src/demos/zdemo_excel1.prog.abap +++ /dev/null @@ -1,64 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel1. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_column TYPE REF TO zcl_excel_column, - lv_date TYPE d, - lv_time TYPE t. - -CONSTANTS: gc_save_file_name TYPE string VALUE '01_HelloWorld.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lv_date = '20211231'. - lv_time = '055817'. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = lv_date ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = lv_time ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://abap2xlsx.github.io/abap2xlsx' ). - lo_worksheet->set_cell( ip_columnrow = 'B4' ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = '你好,世界' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = '(Chinese)' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'नमस्ते दुनिया' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 7 ip_value = '(Hindi)' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Hola Mundo' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 8 ip_value = '(Spanish)' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'مرحبا بالعالم' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 9 ip_value = '(Arabic)' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'ওহে বিশ্ব ' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_value = '(Bengali)' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 11 ip_value = 'Bonjour le monde' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 11 ip_value = '(French)' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 12 ip_value = 'Olá Mundo' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 12 ip_value = '(Portuguese)' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 13 ip_value = 'Привет, мир' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 13 ip_value = '(Russian)' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 14 ip_value = 'ہیلو دنیا' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 14 ip_value = '(Urdu)' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 15 ip_value = '👋🌎, 👋🌍, 👋🌏' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 15 ip_value = '(Emoji waving hand + 3 parts of the world)' ). - - lo_column = lo_worksheet->get_column( ip_column = 'B' ). - lo_column->set_width( ip_width = 11 ). - - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel1.prog.xml b/src/demos/zdemo_excel1.prog.xml deleted file mode 100644 index 6f74323..0000000 --- a/src/demos/zdemo_excel1.prog.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - ZDEMO_EXCEL1 - 1 - T - E - X - X - - - - S - P_PATH - . - 9 - D - - - S - RB_BACK - 17 - - - R - abap2xlsx Demo: Hello World - 28 - - - - - diff --git a/src/demos/zdemo_excel10.prog.abap b/src/demos/zdemo_excel10.prog.abap deleted file mode 100644 index 6393f2b..0000000 --- a/src/demos/zdemo_excel10.prog.abap +++ /dev/null @@ -1,144 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL10 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel10. - -TYPES: ty_sflight_lines TYPE TABLE OF sflight. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_cond TYPE REF TO zcl_excel_style_cond, - lo_column TYPE REF TO zcl_excel_column. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_iconset TYPE zexcel_conditional_iconset. - -CONSTANTS: gc_save_file_name TYPE string VALUE '10_iTabFieldCatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - FIELD-SYMBOLS: TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - ls_iconset-iconset = zcl_excel_style_cond=>c_iconset_5arrows. - ls_iconset-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '20'. - ls_iconset-cfvo3_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '40'. - ls_iconset-cfvo4_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset-cfvo4_value = '60'. - ls_iconset-cfvo5_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset-cfvo5_value = '80'. - ls_iconset-showvalue = zcl_excel_style_cond=>c_showvalue_true. - - "cond style - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->mode_iconset = ls_iconset. - lo_style_cond->priority = 1. - - DATA lt_test TYPE ty_sflight_lines. - PERFORM load_fixed_data CHANGING lt_test. - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING . - CASE -fieldname. - WHEN 'CARRID'. - -position = 3. - -dynpfld = abap_true. - -totals_function = zcl_excel_table=>totals_function_count. - WHEN 'CONNID'. - -position = 4. - -dynpfld = abap_true. - -abap_type = cl_abap_typedescr=>typekind_int. - "This avoid the excel warning that the number is formatted as a text: abap2xlsx is not able to recognize numc as a number so it formats the number as a text with - "the related warning. You can force the type and the framework will correctly format the number as a number - WHEN 'FLDATE'. - -position = 2. - -dynpfld = abap_true. - WHEN 'PRICE'. - -position = 1. - -dynpfld = abap_true. - -totals_function = zcl_excel_table=>totals_function_sum. - -style_cond = lo_style_cond->get_guid( ). - WHEN OTHERS. - -dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - - lo_column = lo_worksheet->get_column( ip_column = 'D' ). "make date field a bit wider - lo_column->set_width( ip_width = 13 ). - - -*** Create output - lcl_output=>output( lo_excel ). - - -FORM load_fixed_data CHANGING ct_test TYPE ty_sflight_lines. - DATA: lt_lines TYPE TABLE OF string, - lv_line TYPE string, - lt_fields TYPE TABLE OF string, - lv_comp TYPE i, - lv_field TYPE string, - ls_test TYPE sflight. - FIELD-SYMBOLS: TYPE simple. - - APPEND 'AA 0017 20171219 422 USD 747-400 385 371 191334 31 28 21 21' TO lt_lines. - APPEND 'AA 0017 20180309 422 USD 747-400 385 365 189984 31 29 21 20' TO lt_lines. - APPEND 'AA 0017 20180528 422 USD 747-400 385 374 193482 31 30 21 20' TO lt_lines. - APPEND 'AA 0017 20180816 422 USD 747-400 385 372 193127 31 30 21 20' TO lt_lines. - APPEND 'AA 0017 20181104 422 USD 747-400 385 44 23908 31 4 21 3' TO lt_lines. - APPEND 'AA 0017 20190123 422 USD 747-400 385 40 20347 31 3 21 2' TO lt_lines. - APPEND 'AZ 0555 20171219 185 EUR 737-800 140 133 32143 12 12 10 10' TO lt_lines. - APPEND 'AZ 0555 20180309 185 EUR 737-800 140 137 32595 12 12 10 10' TO lt_lines. - APPEND 'AZ 0555 20180528 185 EUR 737-800 140 134 31899 12 11 10 10' TO lt_lines. - APPEND 'AZ 0555 20180816 185 EUR 737-800 140 128 29775 12 10 10 9' TO lt_lines. - APPEND 'AZ 0555 20181104 185 EUR 737-800 140 0 0 12 0 10 0' TO lt_lines. - APPEND 'AZ 0555 20190123 185 EUR 737-800 140 23 5392 12 1 10 2' TO lt_lines. - APPEND 'AZ 0789 20171219 1030 EUR 767-200 260 250 307176 21 20 11 11' TO lt_lines. - APPEND 'AZ 0789 20180309 1030 EUR 767-200 260 252 306054 21 20 11 10' TO lt_lines. - APPEND 'AZ 0789 20180528 1030 EUR 767-200 260 252 307063 21 20 11 10' TO lt_lines. - APPEND 'AZ 0789 20180816 1030 EUR 767-200 260 249 300739 21 19 11 10' TO lt_lines. - APPEND 'AZ 0789 20181104 1030 EUR 767-200 260 104 127647 21 8 11 5' TO lt_lines. - APPEND 'AZ 0789 20190123 1030 EUR 767-200 260 18 22268 21 1 11 1' TO lt_lines. - APPEND 'DL 0106 20171217 611 USD A380-800 475 458 324379 30 29 20 20' TO lt_lines. - APPEND 'DL 0106 20180307 611 USD A380-800 475 458 324330 30 30 20 20' TO lt_lines. - APPEND 'DL 0106 20180526 611 USD A380-800 475 459 328149 30 29 20 20' TO lt_lines. - APPEND 'DL 0106 20180814 611 USD A380-800 475 462 326805 30 30 20 18' TO lt_lines. - APPEND 'DL 0106 20181102 611 USD A380-800 475 167 115554 30 10 20 6' TO lt_lines. - APPEND 'DL 0106 20190121 611 USD A380-800 475 11 9073 30 1 20 1' TO lt_lines. - LOOP AT lt_lines INTO lv_line. - CONDENSE lv_line. - SPLIT lv_line AT space INTO TABLE lt_fields. - lv_comp = 2. - LOOP AT lt_fields INTO lv_field. - ASSIGN COMPONENT lv_comp OF STRUCTURE ls_test TO . - = lv_field. - lv_comp = lv_comp + 1. - ENDLOOP. - APPEND ls_test TO ct_test. - ENDLOOP. -ENDFORM. diff --git a/src/demos/zdemo_excel10.prog.xml b/src/demos/zdemo_excel10.prog.xml deleted file mode 100644 index 7ee7b60..0000000 --- a/src/demos/zdemo_excel10.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL10 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Format internal table with field catalog - 57 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel11.prog.abap b/src/demos/zdemo_excel11.prog.abap deleted file mode 100644 index 52215d3..0000000 --- a/src/demos/zdemo_excel11.prog.abap +++ /dev/null @@ -1,372 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL11 -*& Export Organisation and Contact Persons using ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel11. - -DATA: central_search TYPE bapibus1006_central_search, - addressdata_search TYPE bapibus1006_addr_search, - others_search TYPE bapibus1006_other_data. -DATA: searchresult TYPE TABLE OF bapibus1006_bp_addr, - return TYPE TABLE OF bapiret2. -DATA: lines TYPE i. -FIELD-SYMBOLS: LIKE LINE OF searchresult. -DATA: centraldata TYPE bapibus1006_central, - centraldataperson TYPE bapibus1006_central_person, - centraldataorganization TYPE bapibus1006_central_organ. -DATA: addressdata TYPE bapibus1006_address. -DATA: relationships TYPE TABLE OF bapibus1006_relations. -FIELD-SYMBOLS: LIKE LINE OF relationships. -DATA: relationship_centraldata TYPE bapibus1006002_central. -DATA: relationship_addresses TYPE TABLE OF bapibus1006002_addresses. -FIELD-SYMBOLS: LIKE LINE OF relationship_addresses. - -DATA: lt_download TYPE TABLE OF zexcel_s_org_rel. -FIELD-SYMBOLS: LIKE LINE OF lt_download. - -CONSTANTS: gc_save_file_name TYPE string VALUE '11_Export_Org_and_Contact.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -PARAMETERS: md TYPE flag RADIOBUTTON GROUP act. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE TEXT-00a. -PARAMETERS: partnerc TYPE bu_type DEFAULT 2, " Organizations - postlcod TYPE ad_pstcd1 DEFAULT '8334*', - country TYPE land1 DEFAULT 'DE', - maxsel TYPE bu_maxsel DEFAULT 100. -SELECTION-SCREEN END OF BLOCK a. - -PARAMETERS: rel TYPE flag RADIOBUTTON GROUP act DEFAULT 'X'. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE TEXT-00b. -PARAMETERS: reltyp TYPE bu_reltyp DEFAULT 'BUR011', - partner TYPE bu_partner DEFAULT '191'. -SELECTION-SCREEN END OF BLOCK b. - -START-OF-SELECTION. - IF md = abap_true. - " Read all Companies by Master Data - central_search-partnercategory = partnerc. - addressdata_search-postl_cod1 = postlcod. - addressdata_search-country = country. - others_search-maxsel = maxsel. - others_search-no_search_for_contactperson = 'X'. - - CALL FUNCTION 'BAPI_BUPA_SEARCH_2' - EXPORTING - centraldata = central_search - addressdata = addressdata_search - others = others_search - TABLES - searchresult = searchresult - return = return. - - SORT searchresult BY partner. - DELETE ADJACENT DUPLICATES FROM searchresult COMPARING partner. - ELSEIF rel = abap_true. - " Read by Relationship - SELECT but050~partner1 AS partner FROM but050 - INNER JOIN but000 ON but000~partner = but050~partner1 AND but000~type = '2' - INTO CORRESPONDING FIELDS OF TABLE searchresult - WHERE but050~partner2 = partner - AND but050~reltyp = reltyp. - ENDIF. - - DESCRIBE TABLE searchresult LINES lines. - WRITE: / 'Number of search results: ', lines. - - LOOP AT searchresult ASSIGNING . - " Read Details of Organization - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = -partner - IMPORTING - centraldataorganization = centraldataorganization. - " Read Standard Address of Organization - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = -partner - IMPORTING - addressdata = addressdata. - - " Add Organization to Download - APPEND INITIAL LINE TO lt_download ASSIGNING . - " Fill Organization Partner Numbers - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = -partner - IMPORTING - businesspartnerout = -org_number - businesspartnerguidout = -org_guid. - - MOVE-CORRESPONDING centraldataorganization TO . - MOVE-CORRESPONDING addressdata TO . - CLEAR: addressdata. - - " Read all Relationships - CLEAR: relationships. - CALL FUNCTION 'BAPI_BUPA_RELATIONSHIPS_GET' - EXPORTING - businesspartner = -partner - TABLES - relationships = relationships. - DELETE relationships WHERE relationshipcategory <> 'BUR001'. - LOOP AT relationships ASSIGNING . - " Read details of Contact person - CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' - EXPORTING - businesspartner = -partner2 - IMPORTING - centraldata = centraldata - centraldataperson = centraldataperson. - " Read details of the Relationship - CALL FUNCTION 'BAPI_BUPR_CONTP_GETDETAIL' - EXPORTING - businesspartner = -partner1 - contactperson = -partner2 - IMPORTING - centraldata = relationship_centraldata. - " Read relationship address - CLEAR: relationship_addresses. - - CALL FUNCTION 'BAPI_BUPR_CONTP_ADDRESSES_GET' - EXPORTING - businesspartner = -partner1 - contactperson = -partner2 - TABLES - addresses = relationship_addresses. - - READ TABLE relationship_addresses - ASSIGNING - WITH KEY standardaddress = 'X'. - - IF sy-subrc = 0. - " Read Relationship Address - CLEAR addressdata. - CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' - EXPORTING - businesspartner = -partner - addressguid = -addressguid - IMPORTING - addressdata = addressdata. - - APPEND INITIAL LINE TO lt_download ASSIGNING . - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = -partner1 - IMPORTING - businesspartnerout = -org_number - businesspartnerguidout = -org_guid. - - CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' - EXPORTING - businesspartner = -partner2 - IMPORTING - businesspartnerout = -contpers_number - businesspartnerguidout = -contpers_guid. - - MOVE-CORRESPONDING centraldataorganization TO . - MOVE-CORRESPONDING addressdata TO . - MOVE-CORRESPONDING centraldataperson TO . - MOVE-CORRESPONDING relationship_centraldata TO . - - WRITE: / -partner1, -partner2. - WRITE: centraldataorganization-name1(20), centraldataorganization-name2(10). - WRITE: centraldataperson-firstname(15), centraldataperson-lastname(15). - WRITE: addressdata-street(25), addressdata-house_no, - addressdata-postl_cod1, addressdata-city(25). - ENDIF. - ENDLOOP. - - ENDLOOP. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_body TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_column TYPE REF TO zcl_excel_column, - lo_row TYPE REF TO zcl_excel_row. - - DATA: lv_style_body_even_guid TYPE zexcel_cell_style, - lv_style_body_green TYPE zexcel_cell_style. - - DATA: row TYPE zexcel_cell_row. - - DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings. - - DATA: column TYPE zexcel_cell_column, - column_alpha TYPE zexcel_cell_column_alpha, - value TYPE zexcel_cell_value. - - FIELD-SYMBOLS: TYPE zexcel_s_fieldcatalog. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - "Create style with border even - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_yellow. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_even_guid = lo_style_body->get_guid( ). - "Create style with border and green fill - lo_style_body = lo_excel->add_new_style( ). - lo_style_body->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_body->borders->allborders = lo_border_dark. - lv_style_body_green = lo_style_body->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Internal table' ). - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_download ). - - LOOP AT lt_field_catalog ASSIGNING . - CASE -fieldname. - WHEN 'ORG_NUMBER'. - -position = 1. - -dynpfld = abap_true. - WHEN 'CONTPERS_NUMBER'. - -position = 2. - -dynpfld = abap_true. - WHEN 'NAME1'. - -position = 3. - -dynpfld = abap_true. - WHEN 'NAME2'. - -position = 4. - -dynpfld = abap_true. - WHEN 'STREET'. - -position = 5. - -dynpfld = abap_true. - WHEN 'HOUSE_NO'. - -position = 6. - -dynpfld = abap_true. - WHEN 'POSTL_COD1'. - -position = 7. - -dynpfld = abap_true. - WHEN 'CITY'. - -position = 8. - -dynpfld = abap_true. - WHEN 'COUNTRYISO'. - -position = 9. - -dynpfld = abap_true. - WHEN 'FIRSTNAME'. - -position = 10. - -dynpfld = abap_true. - WHEN 'LASTNAME'. - -position = 11. - -dynpfld = abap_true. - WHEN 'FUNCTIONNAME'. - -position = 12. - -dynpfld = abap_true. - WHEN 'DEPARTMENTNAME'. - -position = 13. - -dynpfld = abap_true. - WHEN 'TEL1_NUMBR'. - -position = 14. - -dynpfld = abap_true. - WHEN 'TEL1_EXT'. - -position = 15. - -dynpfld = abap_true. - WHEN 'FAX_NUMBER'. - -position = 16. - -dynpfld = abap_true. - WHEN 'FAX_EXTENS'. - -position = 17. - -dynpfld = abap_true. - WHEN 'E_MAIL'. - -position = 18. - -dynpfld = abap_true. - WHEN OTHERS. - -dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = '2'. - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium5. - - lo_worksheet->bind_table( ip_table = lt_download - is_table_settings = ls_table_settings - it_field_catalog = lt_field_catalog ). - LOOP AT lt_download ASSIGNING . - row = sy-tabix + 2. - IF NOT -org_number IS INITIAL - AND -contpers_number IS INITIAL. - " Mark fields of Organization which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'C' - ip_row = row - ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'D' - ip_row = row - ip_style = lv_style_body_green - ). -* CATCH zcx_excel. " Exceptions for ABAP2XLSX - ELSEIF NOT -org_number IS INITIAL - AND NOT -contpers_number IS INITIAL. - " Mark fields of Relationship which can be changed green - lo_worksheet->set_cell_style( - ip_column = 'L' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'M' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'N' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'O' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'P' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'Q' ip_row = row ip_style = lv_style_body_green - ). - lo_worksheet->set_cell_style( - ip_column = 'R' ip_row = row ip_style = lv_style_body_green - ). - ENDIF. - ENDLOOP. - " Add Fieldnames in first row and hide the row - LOOP AT lt_field_catalog ASSIGNING - WHERE position <> '' AND dynpfld = abap_true. - column = -position. - column_alpha = zcl_excel_common=>convert_column2alpha( column ). - value = -fieldname. - lo_worksheet->set_cell( ip_column = column_alpha - ip_row = 1 - ip_value = value - ip_style = lv_style_body_even_guid ). - ENDLOOP. - " Hide first row - lo_row = lo_worksheet->get_row( 1 ). - lo_row->set_visible( abap_false ). - - DATA: highest_column TYPE zexcel_cell_column, - count TYPE int4, - col_alpha TYPE zexcel_cell_column_alpha. - - highest_column = lo_worksheet->get_highest_column( ). - count = 1. - WHILE count <= highest_column. - col_alpha = zcl_excel_common=>convert_column2alpha( ip_column = count ). - lo_column = lo_worksheet->get_column( ip_column = col_alpha ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - count = count + 1. - ENDWHILE. - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel11.prog.xml b/src/demos/zdemo_excel11.prog.xml deleted file mode 100644 index 9044355..0000000 --- a/src/demos/zdemo_excel11.prog.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - ZDEMO_EXCEL11 - 1 - K - E - X - X - - - - I - 00A - Select by master data - 132 - - - I - 00B - Select by relationship - 132 - - - R - abap2xlsx Demo: Export Organisation and Contact Persons - 55 - - - S - COUNTRY - . - 19 - D - - - S - MAXSEL - . - 27 - D - - - S - MD - Select by master data - 29 - - - S - PARTNER - . - 24 - D - - - S - PARTNERC - . - 19 - D - - - S - POSTLCOD - . - 19 - D - - - S - P_PATH - . - 21 - D - - - S - REL - Select by relationship - 30 - - - S - RELTYP - . - 25 - D - - - - - diff --git a/src/demos/zdemo_excel12.prog.abap b/src/demos/zdemo_excel12.prog.abap deleted file mode 100644 index 541234a..0000000 --- a/src/demos/zdemo_excel12.prog.abap +++ /dev/null @@ -1,108 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL12 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel12. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column TYPE REF TO zcl_excel_column, - lo_row TYPE REF TO zcl_excel_row. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: gc_save_file_name TYPE string VALUE '12_HideSizeOutlineRowsAndColumns.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world in AutoSize column' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Hello world in a column width size 50' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Hello world (hidden column)' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'Outline column level 0' ). - lo_worksheet->set_cell( ip_column = 'G' ip_row = 2 ip_value = 'Outline column level 1' ). - lo_worksheet->set_cell( ip_column = 'H' ip_row = 2 ip_value = 'Outline column level 2' ). - lo_worksheet->set_cell( ip_column = 'I' ip_row = 2 ip_value = 'Small' ). - - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Hello world (hidden row)' ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 5 ip_value = 'Hello world in a row height size 20' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Simple outline rows 10-16 ( collapsed )' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 19 ip_value = '3 Outlines - Outlinelevel 1 is collapsed' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_value = 'One of the two inner outlines is expanded, one collapsed' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_value = 'Inner outline level - expanded' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 24 ip_value = 'Inner outline level - lines 25-28 are collapsed' ). - - lo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_off. " By default is on - lo_worksheet->zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=>c_right_off. " By default is on - - " Column Settings - " Auto size - lo_column = lo_worksheet->get_column( ip_column = 'B' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( ip_column = 'I' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - " Manual Width - lo_column = lo_worksheet->get_column( ip_column = 'C' ). - lo_column->set_width( ip_width = 50 ). - lo_column = lo_worksheet->get_column( ip_column = 'D' ). - lo_column->set_visible( ip_visible = abap_false ). - " Implementation in the Writer is not working yet ===== TODO ===== - lo_column = lo_worksheet->get_column( ip_column = 'F' ). - lo_column->set_outline_level( ip_outline_level = 0 ). - lo_column = lo_worksheet->get_column( ip_column = 'G' ). - lo_column->set_outline_level( ip_outline_level = 1 ). - lo_column = lo_worksheet->get_column( ip_column = 'H' ). - lo_column->set_outline_level( ip_outline_level = 2 ). - - lo_row = lo_worksheet->get_row( ip_row = 1 ). - lo_row->set_visible( ip_visible = abap_false ). - lo_row = lo_worksheet->get_row( ip_row = 5 ). - lo_row->set_row_height( ip_row_height = 20 ). - -* Define an outline rows 10-16, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 10 - iv_row_to = 16 - iv_collapsed = abap_true ). " collapsed - -* Define an inner outline rows 21-22, expanded when outer outline becomes extended - lo_worksheet->set_row_outline( iv_row_from = 21 - iv_row_to = 22 - iv_collapsed = abap_false ). " expanded - -* Define an inner outline rows 25-28, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 25 - iv_row_to = 28 - iv_collapsed = abap_true ). " collapsed - -* Define an outer outline rows 20-30, collapsed on startup - lo_worksheet->set_row_outline( iv_row_from = 20 - iv_row_to = 30 - iv_collapsed = abap_true ). " collapsed - -* Hint: the order you create the outlines can be arbitrary -* You can start with inner outlines or with outer outlines - -*--------------------------------------------------------------------* -* Hide columns right of column M -*--------------------------------------------------------------------* - lo_worksheet->zif_excel_sheet_properties~hide_columns_from = 'M'. - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel12.prog.xml b/src/demos/zdemo_excel12.prog.xml deleted file mode 100644 index b11456f..0000000 --- a/src/demos/zdemo_excel12.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL12 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hide Columns - 29 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel13.prog.abap b/src/demos/zdemo_excel13.prog.abap deleted file mode 100644 index 514191d..0000000 --- a/src/demos/zdemo_excel13.prog.abap +++ /dev/null @@ -1,87 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL13 -*& -*&---------------------------------------------------------------------* -*& Example by: Alvaro "Blag" Tejada Galindo. -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel13. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_bold_border_guid TYPE zexcel_cell_style, - lo_style_bold_border TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '13_MergedCells.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - - lo_style_bold_border = lo_excel->add_new_style( ). - lo_style_bold_border->font->bold = abap_true. - lo_style_bold_border->font->italic = abap_false. - lo_style_bold_border->font->color-rgb = zcl_excel_style_color=>c_black. - lo_style_bold_border->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_bold_border->borders->allborders = lo_border_dark. - lv_style_bold_border_guid = lo_style_bold_border->get_guid( ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = '' ip_style = lv_style_bold_border_guid ). - - lo_worksheet->set_merge( ip_row = 4 ip_column_start = 'B' ip_column_end = 'G' ). - - " Test also if merge works when oher merged chells are empty - lo_worksheet->set_merge( ip_range = 'B6:G6' ip_value = 'Tomato' ). - - " Test the patch provided by Victor Alekhin to merge cells in one column - lo_worksheet->set_merge( ip_range = 'B8:G10' ip_value = 'Merge cells also over multiple rows by Victor Alekhin' ). - - " Test the patch provided by Alexander Budeyev with different column merges - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 'Merge cells with different merges by Alexander Budeyev' ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 'Test' ). - - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 'Banana' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = '' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 'Apple' ip_style = lv_style_bold_border_guid ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = '' ip_style = lv_style_bold_border_guid ). - - " Test merge (issue) - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'B' ip_column_end = 'C' ip_row_to = 15 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'D' ip_column_end = 'D' ip_row_to = 14 ). - lo_worksheet->set_merge( ip_row = 13 ip_column_start = 'E' ip_column_end = 'F' ). - - " Test area with merge - lo_worksheet->set_area( ip_row = 18 ip_row_to = 19 ip_column_start = 'B' ip_column_end = 'G' ip_style = lv_style_bold_border_guid - ip_value = 'Merge cells with new area method by Helmut Bohr ' ip_merge = abap_true ). - - " Test area without merge - lo_worksheet->set_area( ip_row = 21 ip_row_to = 22 ip_column_start = 'B' ip_column_end = 'G' ip_style = lv_style_bold_border_guid - ip_value = 'Test area' ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel13.prog.xml b/src/demos/zdemo_excel13.prog.xml deleted file mode 100644 index 985825a..0000000 --- a/src/demos/zdemo_excel13.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL13 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Merge cells - 28 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel14.prog.abap b/src/demos/zdemo_excel14.prog.abap deleted file mode 100644 index 2e746c2..0000000 --- a/src/demos/zdemo_excel14.prog.abap +++ /dev/null @@ -1,160 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL14 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel14. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_center TYPE REF TO zcl_excel_style, - lo_style_right TYPE REF TO zcl_excel_style, - lo_style_left TYPE REF TO zcl_excel_style, - lo_style_general TYPE REF TO zcl_excel_style, - lo_style_bottom TYPE REF TO zcl_excel_style, - lo_style_middle TYPE REF TO zcl_excel_style, - lo_style_top TYPE REF TO zcl_excel_style, - lo_style_justify TYPE REF TO zcl_excel_style, - lo_style_mixed TYPE REF TO zcl_excel_style, - lo_style_mixed_wrap TYPE REF TO zcl_excel_style, - lo_style_rotated TYPE REF TO zcl_excel_style, - lo_style_shrink TYPE REF TO zcl_excel_style, - lo_style_indent TYPE REF TO zcl_excel_style, - lv_style_center_guid TYPE zexcel_cell_style, - lv_style_right_guid TYPE zexcel_cell_style, - lv_style_left_guid TYPE zexcel_cell_style, - lv_style_general_guid TYPE zexcel_cell_style, - lv_style_bottom_guid TYPE zexcel_cell_style, - lv_style_middle_guid TYPE zexcel_cell_style, - lv_style_top_guid TYPE zexcel_cell_style, - lv_style_justify_guid TYPE zexcel_cell_style, - lv_style_mixed_guid TYPE zexcel_cell_style, - lv_style_mixed_wrap_guid TYPE zexcel_cell_style, - lv_style_rotated_guid TYPE zexcel_cell_style, - lv_style_shrink_guid TYPE zexcel_cell_style, - lv_style_indent_guid TYPE zexcel_cell_style. - -DATA: lo_row TYPE REF TO zcl_excel_row. - -CONSTANTS: gc_save_file_name TYPE string VALUE '14_Alignment.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'sheet1' ). - - "Center - lo_style_center = lo_excel->add_new_style( ). - lo_style_center->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lv_style_center_guid = lo_style_center->get_guid( ). - "Right - lo_style_right = lo_excel->add_new_style( ). - lo_style_right->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_right. - lv_style_right_guid = lo_style_right->get_guid( ). - "Left - lo_style_left = lo_excel->add_new_style( ). - lo_style_left->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_left. - lv_style_left_guid = lo_style_left->get_guid( ). - "General - lo_style_general = lo_excel->add_new_style( ). - lo_style_general->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_general. - lv_style_general_guid = lo_style_general->get_guid( ). - "Bottom - lo_style_bottom = lo_excel->add_new_style( ). - lo_style_bottom->alignment->vertical = zcl_excel_style_alignment=>c_vertical_bottom. - lv_style_bottom_guid = lo_style_bottom->get_guid( ). - "Middle - lo_style_middle = lo_excel->add_new_style( ). - lo_style_middle->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_middle_guid = lo_style_middle->get_guid( ). - "Top - lo_style_top = lo_excel->add_new_style( ). - lo_style_top->alignment->vertical = zcl_excel_style_alignment=>c_vertical_top. - lv_style_top_guid = lo_style_top->get_guid( ). - "Justify - lo_style_justify = lo_excel->add_new_style( ). - lo_style_justify->alignment->vertical = zcl_excel_style_alignment=>c_vertical_justify. - lv_style_justify_guid = lo_style_justify->get_guid( ). - - "Shrink - lo_style_shrink = lo_excel->add_new_style( ). - lo_style_shrink->alignment->shrinktofit = abap_true. - lv_style_shrink_guid = lo_style_shrink->get_guid( ). - - "Indent - lo_style_indent = lo_excel->add_new_style( ). - lo_style_indent->alignment->indent = 5. - lv_style_indent_guid = lo_style_indent->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed_wrap = lo_excel->add_new_style( ). - lo_style_mixed_wrap->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed_wrap->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_mixed_wrap->alignment->wraptext = abap_true. - lv_style_mixed_wrap_guid = lo_style_mixed_wrap->get_guid( ). - - "Middle / Centered / Wrap - lo_style_mixed = lo_excel->add_new_style( ). - lo_style_mixed->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_mixed->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lv_style_mixed_guid = lo_style_mixed->get_guid( ). - - "Center - lo_style_rotated = lo_excel->add_new_style( ). - lo_style_rotated->alignment->horizontal = zcl_excel_style_alignment=>c_horizontal_center. - lo_style_rotated->alignment->vertical = zcl_excel_style_alignment=>c_vertical_center. - lo_style_rotated->alignment->textrotation = 165. " -75° == 90° + 75° - lv_style_rotated_guid = lo_style_rotated->get_guid( ). - - - " Set row size for first 7 rows to 40 - DO 7 TIMES. - lo_row = lo_worksheet->get_row( sy-index ). - lo_row->set_row_height( 40 ). - ENDDO. - - "Horizontal alignment - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Centered Text' ip_style = lv_style_center_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Right Text' ip_style = lv_style_right_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Left Text' ip_style = lv_style_left_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'General Text' ip_style = lv_style_general_guid ). - - " Shrink & indent - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'Text shrinked' ip_style = lv_style_shrink_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 'Text indented' ip_style = lv_style_indent_guid ). - - "Vertical alignment - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Bottom Text' ip_style = lv_style_bottom_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Middle Text' ip_style = lv_style_middle_guid ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Top Text' ip_style = lv_style_top_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 'Justify Text' ip_style = lv_style_justify_guid ). - - " Wrapped - lo_worksheet->set_cell( ip_row = 10 ip_column = 'B' - ip_value = 'This is a wrapped text centered in the middle' - ip_style = lv_style_mixed_wrap_guid ). - - " Rotated - lo_worksheet->set_cell( ip_row = 10 ip_column = 'D' - ip_value = 'This is a centered text rotated by -75°' - ip_style = lv_style_rotated_guid ). - - " forced line break - DATA: lv_value TYPE string. - CONCATENATE 'This is a wrapped text centered in the middle' cl_abap_char_utilities=>cr_lf - 'and a manuall line break.' INTO lv_value. - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' - ip_value = lv_value - ip_style = lv_style_mixed_guid ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel14.prog.xml b/src/demos/zdemo_excel14.prog.xml deleted file mode 100644 index 8a72156..0000000 --- a/src/demos/zdemo_excel14.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL14 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Alignment - 26 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel15.prog.abap b/src/demos/zdemo_excel15.prog.abap deleted file mode 100644 index 1772aa2..0000000 --- a/src/demos/zdemo_excel15.prog.abap +++ /dev/null @@ -1,162 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL15 -*& -*&---------------------------------------------------------------------* -*& 2010-10-30, Gregor Wolf: -*& Added the functionality to ouput the read table content -*& 2011-12-19, Shahrin Shahrulzaman: -*& Added the functionality to have multiple input and output files -*&---------------------------------------------------------------------* - -REPORT zdemo_excel15. - -TYPES: - BEGIN OF t_demo_excel15, - input TYPE string, - END OF t_demo_excel15. - -CONSTANTS: sheet_with_date_formats TYPE string VALUE '24_Sheets_with_different_default_date_formats.xlsx'. - -DATA: excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - reader TYPE REF TO zif_excel_reader. - -DATA: ex TYPE REF TO zcx_excel, - msg TYPE string. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_workdir TYPE string, - output_file_path TYPE string, - input_file_path TYPE string, - lv_file_separator TYPE c. - -DATA: worksheet TYPE REF TO zcl_excel_worksheet, - highest_column TYPE zexcel_cell_column, - highest_row TYPE int4, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha, - row TYPE int4 VALUE 1, - value TYPE zexcel_cell_value, - converted_date TYPE d. - -DATA: - lt_files TYPE TABLE OF t_demo_excel15. -FIELD-SYMBOLS: TYPE t_demo_excel15. - -PARAMETERS: p_path TYPE zexcel_export_dir, - p_noout TYPE abap_bool DEFAULT abap_true. - - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = '01_HelloWorld.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = '02_Styles.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = '03_iTab.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = '04_Sheets.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = '05_Conditional.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = '07_ConditionalAll.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = '08_Range.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = '13_MergedCells.xlsx'. - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = sheet_with_date_formats. - APPEND INITIAL LINE TO lt_files ASSIGNING . - -input = '31_AutosizeWithDifferentFontSizes.xlsx'. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - - LOOP AT lt_files ASSIGNING . - CONCATENATE p_path lv_file_separator -input INTO input_file_path. - CONCATENATE p_path lv_file_separator '15_' -input INTO output_file_path. - REPLACE '.xlsx' IN output_file_path WITH 'FromReader.xlsx'. - - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( input_file_path ). - - IF p_noout EQ abap_false. - worksheet = excel->get_active_worksheet( ). - highest_column = worksheet->get_highest_column( ). - highest_row = worksheet->get_highest_row( ). - - WRITE: / 'Filename ', -input. - WRITE: / 'Highest column: ', highest_column, 'Highest row: ', highest_row. - WRITE: /. - - WHILE row <= highest_row. - WHILE column <= highest_column. - col_str = zcl_excel_common=>convert_column2alpha( column ). - worksheet->get_cell( - EXPORTING - ip_column = col_str - ip_row = row - IMPORTING - ep_value = value - ). - WRITE: value. - column = column + 1. - ENDWHILE. - WRITE: /. - column = 1. - row = row + 1. - ENDWHILE. - IF -input = sheet_with_date_formats. - worksheet->get_cell( - EXPORTING - ip_columnrow = 'A4' - IMPORTING - ep_value = value - ). - WRITE: / 'Date value using get_cell: ', value. - converted_date = zcl_excel_common=>excel_string_to_date( ip_value = value ). - WRITE: / 'Converted date: ', converted_date. - ENDIF. - ENDIF. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = output_file_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - - CATCH zcx_excel INTO ex. " Exceptions for ABAP2XLSX - msg = ex->get_text( ). - WRITE: / msg. - ENDTRY. - ENDLOOP. diff --git a/src/demos/zdemo_excel15.prog.xml b/src/demos/zdemo_excel15.prog.xml deleted file mode 100644 index 298e453..0000000 --- a/src/demos/zdemo_excel15.prog.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - ZDEMO_EXCEL15 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Reader - 22 - - - S - P_NOOUT - Hide output - 19 - - - S - P_PATH - . - 24 - D - - - - - diff --git a/src/demos/zdemo_excel16.prog.abap b/src/demos/zdemo_excel16.prog.abap deleted file mode 100644 index 15368b5..0000000 --- a/src/demos/zdemo_excel16.prog.abap +++ /dev/null @@ -1,131 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel16. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - - -DATA: ls_io TYPE skwf_io. - -CONSTANTS: gc_save_file_name TYPE string VALUE '16_Drawings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_objid TYPE sdok_docid DEFAULT '456694429165174BE10000000A1550C0', " Question mark in standard Web Dynpro WDT_QUIZ - p_class TYPE sdok_class DEFAULT 'M_IMAGE_P', - pobjtype TYPE skwf_ioty DEFAULT 'P'. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - "Load samle image - DATA: lt_bin TYPE solix_tab, - lv_len TYPE i, - lv_content TYPE xstring, - ls_key TYPE wwwdatatab. - - CALL METHOD cl_gui_frontend_services=>gui_upload - EXPORTING - filename = 'c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp' - filetype = 'BIN' - IMPORTING - filelength = lv_len - CHANGING - data_tab = lt_bin - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19. - IF sy-subrc <> 0. - ENDIF. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_len - IMPORTING - buffer = lv_content - TABLES - binary_tab = lt_bin - EXCEPTIONS - failed = 1 - OTHERS = 2. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Image from web repository (SMW0)' ). - - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 3 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Image from a file (c:\Program Files\SAP\FrontEnd\SAPgui\wwi\graphics\W_bio.bmp)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 9 - ip_from_col = 'B' ). - lo_drawing->set_media( ip_media = lv_content - ip_media_type = zcl_excel_drawing=>c_media_type_bmp - ip_width = 83 - ip_height = 160 ). - - lo_worksheet->add_drawing( lo_drawing ). - - ls_io-objid = p_objid. - ls_io-class = p_class. - ls_io-objtype = pobjtype. - IF ls_io IS NOT INITIAL. - " another drawing from a XSTRING read from a file - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_value = 'Mime repository (by default Question mark in standard Web Dynpro WDT_QUIZ)' ). - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 19 - ip_from_col = 'B' ). - lo_drawing->set_media_mime( ip_io = ls_io - ip_width = 126 - ip_height = 145 ). - - lo_worksheet->add_drawing( lo_drawing ). - ENDIF. - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel16.prog.xml b/src/demos/zdemo_excel16.prog.xml deleted file mode 100644 index e67de39..0000000 --- a/src/demos/zdemo_excel16.prog.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - ZDEMO_EXCEL16 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Drawings - 25 - - - S - POBJTYPE - . - 9 - D - - - S - P_CLASS - . - 9 - D - - - S - P_OBJID - . - 9 - D - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel17.prog.abap b/src/demos/zdemo_excel17.prog.abap deleted file mode 100644 index 78faf87..0000000 --- a/src/demos/zdemo_excel17.prog.abap +++ /dev/null @@ -1,53 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL17 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel17. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_protection TYPE REF TO zcl_excel_style, - lv_style_protection_guid TYPE zexcel_cell_style, - lo_style TYPE REF TO zcl_excel_style, - lv_style TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '17_SheetProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_pwd TYPE zexcel_aes_password LOWER CASE DEFAULT 'secret'. - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. -* lo_worksheet->zif_excel_sheet_protection~password = 'DAA7'. "it is the encoded word "secret" - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( p_pwd ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - " First style to unlock a cell - lo_style_protection = lo_excel->add_new_style( ). - lo_style_protection->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - lv_style_protection_guid = lo_style_protection->get_guid( ). - " Another style which should not affect the unlock style - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = 'FFCC3333'. - lv_style = lo_style->get_guid( ). - lo_worksheet->set_cell( ip_row = 3 ip_column = 'C' ip_value = 'This cell is locked locked and has the second formating' ip_style = lv_style ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'This cell is locked as all the others empty cell' ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel17.prog.xml b/src/demos/zdemo_excel17.prog.xml deleted file mode 100644 index 8968a64..0000000 --- a/src/demos/zdemo_excel17.prog.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - ZDEMO_EXCEL17 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Sheet Protection - 33 - - - S - P_PATH - . - 24 - D - - - S - P_PWD - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel18.prog.abap b/src/demos/zdemo_excel18.prog.abap deleted file mode 100644 index 4feafa9..0000000 --- a/src/demos/zdemo_excel18.prog.abap +++ /dev/null @@ -1,34 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL18 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel18. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_style_protection_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '18_BookProtection.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_excel->zif_excel_book_protection~protected = zif_excel_book_protection=>c_protected. - lo_excel->zif_excel_book_protection~lockrevision = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockstructure = zif_excel_book_protection=>c_locked. - lo_excel->zif_excel_book_protection~lockwindows = zif_excel_book_protection=>c_locked. - - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'This cell is unlocked' ip_style = lv_style_protection_guid ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel18.prog.xml b/src/demos/zdemo_excel18.prog.xml deleted file mode 100644 index 5a3c58c..0000000 --- a/src/demos/zdemo_excel18.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL18 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Book protection - 32 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel19.prog.abap b/src/demos/zdemo_excel19.prog.abap deleted file mode 100644 index 523c6ed..0000000 --- a/src/demos/zdemo_excel19.prog.abap +++ /dev/null @@ -1,53 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL19 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel19. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '19_SetActiveSheet.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_noout TYPE abap_bool DEFAULT abap_true. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " First Worksheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'First' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 1' ). - - " Second Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Second' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 2' ). - - " Third Worksheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Third' ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'This is Sheet 3' ). - - IF p_noout EQ abap_false. - DATA: active_sheet_index TYPE zexcel_active_worksheet. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index before: ', active_sheet_index. - ENDIF. - lo_excel->set_active_sheet_index( '2' ). - IF p_noout EQ abap_false. - active_sheet_index = lo_excel->get_active_sheet_index( ). - WRITE: 'Sheet Index after: ', active_sheet_index. - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel19.prog.xml b/src/demos/zdemo_excel19.prog.xml deleted file mode 100644 index cadc1bf..0000000 --- a/src/demos/zdemo_excel19.prog.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - ZDEMO_EXCEL19 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Set active sheet - 33 - - - S - P_NOOUT - Hide output - 19 - - - S - P_PATH - . - 26 - D - - - - - D - - - S - P_NOOUT - Hide output - 19 - - - S - P_PATH - . - 26 - D - - - - - - - diff --git a/src/demos/zdemo_excel2.prog.abap b/src/demos/zdemo_excel2.prog.abap deleted file mode 100644 index f0a1f2d..0000000 --- a/src/demos/zdemo_excel2.prog.abap +++ /dev/null @@ -1,224 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel2. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_filled_green TYPE REF TO zcl_excel_style, - lo_style_filled_turquoise TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border, - lo_style_gr_cornerlb TYPE REF TO zcl_excel_style, - lo_style_gr_cornerlt TYPE REF TO zcl_excel_style, - lo_style_gr_cornerrb TYPE REF TO zcl_excel_style, - lo_style_gr_cornerrt TYPE REF TO zcl_excel_style, - lo_style_gr_horizontal90 TYPE REF TO zcl_excel_style, - lo_style_gr_horizontal270 TYPE REF TO zcl_excel_style, - lo_style_gr_horizontalb TYPE REF TO zcl_excel_style, - lo_style_gr_vertical TYPE REF TO zcl_excel_style, - lo_style_gr_vertical2 TYPE REF TO zcl_excel_style, - lo_style_gr_fromcenter TYPE REF TO zcl_excel_style, - lo_style_gr_diagonal45 TYPE REF TO zcl_excel_style, - lo_style_gr_diagonal45b TYPE REF TO zcl_excel_style, - lo_style_gr_diagonal135 TYPE REF TO zcl_excel_style, - lo_style_gr_diagonal135b TYPE REF TO zcl_excel_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. -DATA: lo_row TYPE REF TO zcl_excel_row. - -CONSTANTS: gc_save_file_name TYPE string VALUE '02_Styles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - " Create filled style green - lo_style_filled_green = lo_excel->add_new_style( ). - lo_style_filled_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled_green->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled_green->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled_green->font->scheme = zcl_excel_style_font=>c_scheme_major. - - " Create filled with gradients - lo_style_gr_cornerlb = lo_excel->add_new_style( ). - lo_style_gr_cornerlb->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlb. - lo_style_gr_cornerlb->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_gr_cornerlb->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_gr_cornerlb->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_gr_cornerlb->font->scheme = zcl_excel_style_font=>c_scheme_major. - - lo_style_gr_cornerlt = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_cornerlt->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlt. - - lo_style_gr_cornerrb = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_cornerrb->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrb. - - lo_style_gr_cornerrt = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_cornerrt->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrt. - - lo_style_gr_horizontal90 = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_horizontal90->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal90. - - lo_style_gr_horizontal270 = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_horizontal270->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal270. - - lo_style_gr_horizontalb = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_horizontalb->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontalb. - - lo_style_gr_vertical = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_vertical->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - - lo_style_gr_vertical2 = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_vertical2->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_gr_vertical2->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_gr_vertical2->fill->bgcolor-rgb = zcl_excel_style_color=>c_blue. - - lo_style_gr_fromcenter = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_fromcenter->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_fromcenter. - - lo_style_gr_diagonal45 = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_diagonal45->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45. - - lo_style_gr_diagonal45b = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_diagonal45b->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45b. - - lo_style_gr_diagonal135 = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_diagonal135->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135. - - lo_style_gr_diagonal135b = lo_excel->add_new_style( io_clone_of = lo_style_gr_cornerlb ). - lo_style_gr_diagonal135b->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135b. - - - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://github.com/abap2xlsx/abap2xlsx/issues/92) - lo_style_filled_turquoise = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled_turquoise->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled_turquoise->fill->fgcolor-indexed = 16. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lo_style_bold ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lo_style_underline ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lo_style_filled ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lo_style_border ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lo_style_button ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lo_style_filled_turquoise ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lo_style_filled ). - " Change the style - lo_worksheet->set_cell_style( ip_column = 'B' ip_row = 6 ip_style = lo_style_filled_green ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://github.com/abap2xlsx/abap2xlsx/issues/44 - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lo_style_filled_green ). - - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_style = lo_style_gr_cornerlb ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlb ). - lo_row = lo_worksheet->get_row( ip_row = 10 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 11 ip_style = lo_style_gr_cornerlt ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerlt ). - lo_row = lo_worksheet->get_row( ip_row = 11 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 12 ip_style = lo_style_gr_cornerrb ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrb ). - lo_row = lo_worksheet->get_row( ip_row = 12 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 13 ip_style = lo_style_gr_cornerrt ip_value = zcl_excel_style_fill=>c_fill_gradient_cornerrt ). - lo_row = lo_worksheet->get_row( ip_row = 13 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 14 ip_style = lo_style_gr_horizontal90 ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal90 ). - lo_row = lo_worksheet->get_row( ip_row = 14 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 15 ip_style = lo_style_gr_horizontal270 ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontal270 ). - lo_row = lo_worksheet->get_row( ip_row = 15 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 16 ip_style = lo_style_gr_horizontalb ip_value = zcl_excel_style_fill=>c_fill_gradient_horizontalb ). - lo_row = lo_worksheet->get_row( ip_row = 16 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 17 ip_style = lo_style_gr_vertical ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row = lo_worksheet->get_row( ip_row = 17 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_style = lo_style_gr_vertical2 ip_value = zcl_excel_style_fill=>c_fill_gradient_vertical ). - lo_row = lo_worksheet->get_row( ip_row = 18 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_style = lo_style_gr_fromcenter ip_value = zcl_excel_style_fill=>c_fill_gradient_fromcenter ). - lo_row = lo_worksheet->get_row( ip_row = 19 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_style = lo_style_gr_diagonal45 ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - lo_row = lo_worksheet->get_row( ip_row = 20 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 21 ip_style = lo_style_gr_diagonal45b ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal45b ). - lo_row = lo_worksheet->get_row( ip_row = 21 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 22 ip_style = lo_style_gr_diagonal135 ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - lo_row = lo_worksheet->get_row( ip_row = 22 ). - lo_row->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 23 ip_style = lo_style_gr_diagonal135b ip_value = zcl_excel_style_fill=>c_fill_gradient_diagonal135b ). - lo_row = lo_worksheet->get_row( ip_row = 23 ). - lo_row->set_row_height( ip_row_height = 30 ). - - - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel2.prog.xml b/src/demos/zdemo_excel2.prog.xml deleted file mode 100644 index a36144e..0000000 --- a/src/demos/zdemo_excel2.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL2 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Styles - 25 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel20.prog.abap b/src/demos/zdemo_excel20.prog.abap deleted file mode 100644 index 255eca3..0000000 --- a/src/demos/zdemo_excel20.prog.abap +++ /dev/null @@ -1,193 +0,0 @@ -*--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL20 -* Demo for method zcl_excel_worksheet-bind_alv: -* export data from ALV (CL_GUI_ALV_GRID) object to excel -*--------------------------------------------------------------------* -REPORT zdemo_excel20. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_alv TYPE REF TO cl_gui_alv_grid, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook, - gt_listheader TYPE slis_t_listheader, - wa_listheader LIKE LINE OF gt_listheader. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '20_BindAlv.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 10 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - IF sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - -* export file to save file path - - PERFORM export_to_excel. - - ENDIF. -ENDFORM. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel. - -* create zcl_excel_worksheet object - - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - -* get ALV object from screen - - CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' - IMPORTING - e_grid = lo_alv. - -* build list header - - wa_listheader-typ = 'H'. - wa_listheader-info = sy-title. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'S'. - wa_listheader-info = 'Created by: ABAP2XLSX Group'. - APPEND wa_listheader TO gt_listheader. - - wa_listheader-typ = 'A'. - wa_listheader-info = - 'Project hosting at https://github.com/abap2xlsx'. - APPEND wa_listheader TO gt_listheader. - -* write to excel using method Bin_ALV - - lo_worksheet->bind_alv_ole2( - EXPORTING -* I_DOCUMENT_URL = SPACE " excel template -* I_XLS = 'X' " create in xls format? - i_save_path = l_path - io_alv = lo_alv - it_listheader = gt_listheader - i_top = 2 - i_left = 1 -* I_COLUMNS_HEADER = 'X' -* I_COLUMNS_AUTOFIT = 'X' -* I_FORMAT_COL_HEADER = -* I_FORMAT_SUBTOTAL = -* I_FORMAT_TOTAL = - EXCEPTIONS - miss_guide = 1 - ex_transfer_kkblo_error = 2 - fatal_error = 3 - inv_data_range = 4 - dim_mismatch_vkey = 5 - dim_mismatch_sema = 6 - error_in_sema = 7 - OTHERS = 8 - ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - -ENDFORM. "EXPORT_TO_EXCEL diff --git a/src/demos/zdemo_excel20.prog.xml b/src/demos/zdemo_excel20.prog.xml deleted file mode 100644 index 15e7cdc..0000000 --- a/src/demos/zdemo_excel20.prog.xml +++ /dev/null @@ -1,4711 +0,0 @@ - - - - - - ZDEMO_EXCEL20 - 1 - E - X - X - - - - 000010 - 000010 - - - - ALV_STATUS - D - 000004 - 000004 - 0001 - Standard for General List Output - - - - - %ML - 001 - S - Folder - F - - - %PC - 001 - S - ICON_EXPORT - @49@ - Local File... - L - - - %PC - 002 - S - ICON_EXPORT - @49@ - Local file... - L - - - %SC - 001 - S - ICON_SEARCH - @13@ - Find - N - - - %SC+ - 001 - S - ICON_SEARCH_NEXT - @4E@ - Find Next - - - %SC+ - 002 - S - ICON_SEARCH_NEXT - @4E@ - Find next - - - %SL - 001 - S - ICON_MAIL - @1S@ - Mail Recipient - M - - - %SL - 002 - S - ICON_MAIL - @1S@ - Mail recipient - M - - - &ABC - 001 - S - ICON_ABC - @DL@ - ABC Analysis - A - - - &ALL - 001 - S - ICON_SELECT_ALL - @4B@ - Select All - S - - - &ALL - 002 - S - ICON_SELECT_ALL - @4B@ - Select all - S - - - &AQW - 001 - S - ICON_WORD_PROCESSING - @DK@ - Word Processing... - W - - - &AQW - 002 - S - ICON_WORD_PROCESSING - @DK@ - Word processing... - W - - - &AUF - 001 - S - Define Totals Drilldown... - S - - - &AUF - 002 - S - Define Breakdown... - D - - - &AVE - 001 - S - Saving... - S - - - &AVE - 002 - S - ICON_ALV_VARIANT_SAVE - @DN@ - Save Layout... - - - &AVE - 003 - S - ICON_ALV_VARIANT_SAVE - @DN@ - Save layout... - - - &AVR - 001 - S - Mean Value - M - - - &AVR - 002 - S - Mean value - M - - - &CDF - 001 - S - Unfreeze Columns - U - - - &CDF - 002 - S - Unfreeze - U - - - &CFI - 001 - S - Freeze to Column - F - - - &CFI - 002 - S - Freeze to column - F - - - &COUNT - 001 - S - Count - C - - - &CRB - 001 - S - ICON_TOTAL_LEFT - @0B@ - First Column - - - &CRE - 001 - S - ICON_TOTAL_RIGHT - @0C@ - Last Column - - - &CRE - 002 - S - ICON_TOTAL_RIGHT - @0C@ - Last column - - - &CRL - 001 - S - ICON_COLUMN_LEFT - @0D@ - Column Left - - - &CRL - 002 - S - ICON_COLUMN_LEFT - @0D@ - Column left - - - &CRR - 001 - S - ICON_COLUMN_RIGHT - @0E@ - Column Right - - - &CRR - 002 - S - ICON_COLUMN_RIGHT - @0E@ - Column right - - - &DATA_SAVE - 001 - S - ICON_SYSTEM_SAVE - @2L@ - Save - - - &DAU - 001 - S - Automatic Separator - T - - - &DOF - 001 - S - Separator Always Off - E - - - &DON - 001 - S - Separator Always On - R - - - &EB9 - 001 - S - ICON_TABLE_SETTINGS - @36@ - Call Up Report... - B - - - &EB9 - 002 - S - ICON_TABLE_SETTINGS - @36@ - Call Report... - B - - - &EB9 - 003 - S - ICON_TABLE_SETTINGS - @36@ - Call Up Report - C - - - &ELP - 001 - S - ICON_SYSTEM_HELP - @35@ - Help - - - &ERW - 001 - S - Manage... - M - - - &ERW - 002 - S - Layout Management - L - - - &ETA - 001 - S - ICON_SELECT_DETAIL - @16@ - Details - - - &F03 - 001 - S - Back - B - - - &F12 - 001 - S - ICON_CANCEL - @0W@ - Cancel - A - - - &F15 - 001 - S - Exit - X - - - &F4 - 001 - S - Possible Entries - - - &GRAPH - 001 - S - ICON_GRAPHICS - @0N@ - Graphic - G - - - &IC1 - 001 - S - ICON_SELECT_DETAIL - @16@ - Choose - - - &ILD - 001 - S - ICON_FILTER_UNDO - @GD@ - Delete Filter - L - - - &ILD - 002 - S - Delete Filter - L - - - &ILT - 001 - S - ICON_FILTER - @4G@ - Set Filter - F - - - &ILT - 002 - S - ICON_FILTER - @4G@ - Set filter - F - - - &INFO - 001 - S - ICON_INFORMATION - @0S@ - Information - - - &KOM - 001 - S - ICON_COLLAPSE - @3T@ - Choose... - C - - - &LFO - 001 - S - List status... - L - - - &LFO - 002 - S - ICON_INFORMATION - @0S@ - List Status - - - &LFO - 003 - S - ICON_INFORMATION - @0S@ - List status... - - - &LIS - 001 - S - Basic List - B - - - &MAX - 001 - S - Maximum - A - - - &MIN - 001 - S - Minimum - I - - - &NFO - 001 - S - ICON_INFORMATION - @0S@ - Selections... - Selections - E - - - &NTE - 001 - S - ICON_REFRESH - @42@ - Refresh - - - &NTE - 002 - S - Refresh - - - &OAD - 001 - S - Choose... - H - - - &OAD - 002 - S - ICON_ALV_VARIANT_CHOOSE - @DM@ - Select Layout... - - - &OAD - 003 - S - ICON_ALV_VARIANT_CHOOSE - @DM@ - Select layout... - - - &ODN - 001 - S - ICON_SORT_DOWN - @3F@ - Sort in Descending Order - O - - - &ODN - 002 - S - ICON_SORT_DOWN - @3F@ - Sort in descending order - O - - - &OL0 - 001 - S - ICON_ALV_VARIANTS - @LZ@ - Change Layout... - - - &OL0 - 002 - S - ICON_ALV_VARIANTS - @LZ@ - Change layout... - - - &OLX - 001 - S - ICON_VARIANTS - @0R@ - Change... - C - - - &OMP - 001 - S - ICON_COLLAPSE - @3T@ - Collapse - - - &OPT - 001 - S - Optimize Width - P - - - &OPT - 002 - S - Optimize width - P - - - &OUP - 001 - S - ICON_SORT_UP - @3E@ - Sort in Ascending Order - I - - - &REFRESH - 001 - S - ICON_REFRESH - @42@ - Refresh - - - &RNT - 001 - S - ICON_PRINT - @0X@ - Print - P - - - &RNT_PREV - 001 - S - ICON_LAYOUT_CONTROL - @3G@ - Print Preview - R - - - &RNT_PREV - 002 - S - ICON_LAYOUT_CONTROL - @3G@ - Print preview - R - - - &SAL - 001 - S - ICON_DESELECT_ALL - @4D@ - Deselect All - D - - - &SAL - 002 - S - ICON_DESELECT_ALL - @4D@ - Deselect all - D - - - &SUM - 001 - S - ICON_INTERMEDIATE_SUM - @5V@ - Subtotals... - T - - - &UMC - 001 - S - ICON_SUM - @3Z@ - Total - T - - - &VEXCEL - 001 - S - ICON_XLS - @J2@ - Microsoft Excel - M - - - &VGRID - 001 - S - SAP List Viewer - S - - - &VLOTUS - 001 - S - Lotus 1-2-3 - L - - - &XINT - 001 - S - Additional Functions of SAP Query - E - - - &XML - 001 - S - XML Export - X - - - &XML - 002 - S - XML Export... - X - - - &XPA - 001 - S - ICON_EXPAND - @3S@ - Expand - - - &XXL - 001 - S - ICON_XXL - @DJ@ - Spreadsheet... - A - - - EXCEL - 001 - S - ICON_XLV - @J3@ - Excel - Export to Excel - - - P+ - 001 - S - Next Page - - - P+ - 002 - S - Next page - - - P++ - 001 - S - Last Page - - - P- - 001 - S - Previous Page - - - P-- - 001 - S - First Page - - - - - 000001 - 01 - F - &RNT_PREV - 001 - - - 000001 - 02 - F - &RNT - 001 - - - 000001 - 03 - S - - - 000001 - 04 - M - 000002 - - - 000001 - 05 - M - 000003 - - - 000001 - 06 - S - - - 000001 - 07 - F - &F15 - 001 - - - 000002 - 01 - F - &AQW - 001 - - - 000002 - 02 - F - &XXL - 001 - - - 000002 - 03 - F - %PC - 001 - - - 000002 - 04 - F - &XINT - 001 - - - 000003 - 01 - F - %SL - 001 - - - 000003 - 02 - F - %ML - 001 - - - 000004 - 01 - F - &ALL - 001 - - - 000004 - 02 - F - &SAL - 001 - - - 000004 - 03 - S - - - 000004 - 04 - F - &ILT - 001 - - - 000004 - 05 - F - &ILD - 001 - - - 000004 - 06 - S - - - 000004 - 07 - F - &OUP - 001 - - - 000004 - 08 - F - &ODN - 001 - - - 000004 - 09 - S - - - 000004 - 10 - M - 000005 - - - 000004 - 11 - F - &SUM - 001 - - - 000004 - 12 - S - - - 000004 - 13 - F - %SC - 001 - - - 000004 - 14 - S - - - 000004 - 15 - F - &F12 - 001 - - - 000005 - 01 - F - &UMC - 001 - - - 000005 - 02 - F - &AVR - 001 - - - 000005 - 03 - F - &MIN - 001 - - - 000005 - 04 - F - &MAX - 001 - - - 000005 - 05 - F - &COUNT - 001 - - - 000006 - 01 - F - &ABC - 001 - - - 000006 - 02 - S - - - 000006 - 03 - F - &F03 - 001 - - - 000007 - 01 - F - &VGRID - 001 - - - 000007 - 02 - F - &VEXCEL - 001 - - - 000007 - 03 - F - &VLOTUS - 001 - - - 000007 - 04 - S - - - 000007 - 05 - F - &GRAPH - 001 - - - 000008 - 01 - M - 000009 - - - 000008 - 02 - M - 000010 - - - 000008 - 03 - F - &AUF - 001 - - - 000009 - 01 - F - &OLX - 001 - - - 000009 - 02 - F - &OAD - 001 - - - 000009 - 03 - S - - - 000009 - 04 - F - &AVE - 001 - - - 000009 - 05 - S - - - 000009 - 06 - F - &ERW - 001 - - - 000010 - 01 - F - &OPT - 001 - - - 000010 - 02 - S - - - 000010 - 03 - F - &CFI - 001 - - - 000010 - 04 - F - &CDF - 001 - - - 000011 - 01 - F - &RNT - 001 - - - 000011 - 02 - M - 000012 - - - 000011 - 03 - M - 000013 - - - 000011 - 04 - S - - - 000011 - 05 - F - &F15 - 001 - - - 000012 - 01 - F - &AQW - 001 - - - 000012 - 02 - F - &XXL - 001 - - - 000012 - 03 - F - %PC - 001 - - - 000012 - 04 - F - &XINT - 001 - - - 000012 - 05 - F - &XML - 001 - - - 000013 - 01 - F - %SL - 001 - - - 000013 - 02 - F - %ML - 001 - - - 000014 - 01 - F - &ALL - 001 - - - 000014 - 02 - F - &SAL - 001 - - - 000014 - 03 - S - - - 000014 - 04 - F - &ILT - 001 - - - 000014 - 05 - F - &ILD - 002 - - - 000014 - 06 - S - - - 000014 - 07 - F - &OUP - 001 - - - 000014 - 08 - F - &ODN - 001 - - - 000014 - 09 - S - - - 000014 - 10 - M - 000015 - - - 000014 - 11 - F - &SUM - 001 - - - 000014 - 12 - S - - - 000014 - 13 - F - %SC - 001 - - - 000014 - 14 - S - - - 000014 - 15 - F - &F12 - 001 - - - 000015 - 01 - F - &UMC - 001 - - - 000015 - 02 - F - &AVR - 001 - - - 000015 - 03 - F - &MIN - 001 - - - 000015 - 04 - F - &MAX - 001 - - - 000015 - 05 - F - &COUNT - 001 - - - 000016 - 01 - F - &ABC - 001 - - - 000016 - 02 - S - - - 000016 - 03 - F - &F03 - 001 - - - 000017 - 01 - F - &LIS - 001 - - - 000017 - 02 - S - - - 000017 - 03 - M - 000018 - - - 000017 - 04 - S - - - 000017 - 05 - M - 000019 - - - 000017 - 06 - S - - - 000017 - 07 - M - 000020 - - - 000017 - 08 - S - - - 000017 - 09 - F - &NFO - 001 - - - 000017 - 10 - F - &LFO - 001 - - - 000018 - 01 - F - &OLX - 001 - - - 000018 - 02 - F - &OAD - 001 - - - 000018 - 03 - S - - - 000018 - 04 - F - &AVE - 001 - - - 000018 - 05 - S - - - 000018 - 06 - F - &ERW - 001 - - - 000019 - 01 - F - &KOM - 001 - - - 000019 - 02 - F - &AUF - 002 - - - 000020 - 01 - F - &OPT - 001 - - - 000020 - 02 - S - - - 000020 - 03 - F - &CFI - 001 - - - 000020 - 04 - F - &CDF - 002 - - - 000020 - 05 - S - - - 000020 - 06 - F - &DAU - 001 - - - 000020 - 07 - F - &DON - 001 - - - 000020 - 08 - F - &DOF - 001 - - - 000021 - 01 - F - &RNT_PREV - 001 - - - 000021 - 02 - F - &RNT - 001 - - - 000021 - 03 - S - - - 000021 - 04 - M - 000022 - - - 000021 - 05 - M - 000023 - - - 000021 - 06 - S - - - 000021 - 07 - F - &F15 - 001 - - - 000022 - 01 - F - &AQW - 001 - - - 000022 - 02 - F - &XXL - 001 - - - 000022 - 03 - F - %PC - 001 - - - 000022 - 04 - F - &XINT - 001 - - - 000023 - 01 - F - %SL - 001 - - - 000023 - 02 - F - %ML - 001 - - - 000024 - 01 - F - &ALL - 001 - - - 000024 - 02 - F - &SAL - 001 - - - 000024 - 03 - S - - - 000024 - 04 - F - &ILT - 001 - - - 000024 - 05 - F - &ILD - 001 - - - 000024 - 06 - S - - - 000024 - 07 - F - &OUP - 001 - - - 000024 - 08 - F - &ODN - 001 - - - 000024 - 09 - S - - - 000024 - 10 - M - 000025 - - - 000024 - 11 - F - &SUM - 001 - - - 000024 - 12 - S - - - 000024 - 13 - F - %SC - 001 - - - 000024 - 14 - S - - - 000024 - 15 - F - &F12 - 001 - - - 000025 - 01 - F - &UMC - 001 - - - 000025 - 02 - F - &AVR - 001 - - - 000025 - 03 - F - &MIN - 001 - - - 000025 - 04 - F - &MAX - 001 - - - 000025 - 05 - F - &COUNT - 001 - - - 000026 - 01 - F - &ABC - 001 - - - 000026 - 02 - S - - - 000026 - 03 - F - &F03 - 001 - - - 000027 - 01 - F - &VGRID - 001 - - - 000027 - 02 - F - &VEXCEL - 001 - - - 000027 - 03 - F - &VLOTUS - 001 - - - 000027 - 04 - S - - - 000027 - 05 - F - &GRAPH - 001 - - - 000028 - 01 - M - 000029 - - - 000028 - 02 - M - 000030 - - - 000028 - 03 - F - &AUF - 001 - - - 000029 - 01 - F - &OLX - 001 - - - 000029 - 02 - F - &OAD - 001 - - - 000029 - 03 - S - - - 000029 - 04 - F - &AVE - 001 - - - 000029 - 05 - S - - - 000029 - 06 - F - &ERW - 001 - - - 000030 - 01 - F - &OPT - 001 - - - 000030 - 02 - S - - - 000030 - 03 - F - &CFI - 001 - - - 000030 - 04 - F - &CDF - 001 - - - 000031 - 01 - F - &RNT - 001 - - - 000031 - 02 - M - 000032 - - - 000031 - 03 - M - 000033 - - - 000031 - 04 - S - - - 000031 - 05 - F - &F15 - 001 - - - 000032 - 01 - F - &AQW - 002 - - - 000032 - 02 - F - &XXL - 001 - - - 000032 - 03 - F - %PC - 002 - - - 000032 - 04 - F - &XINT - 001 - - - 000033 - 01 - F - %SL - 002 - - - 000033 - 02 - F - %ML - 001 - - - 000034 - 01 - F - &ALL - 002 - - - 000034 - 02 - F - &SAL - 002 - - - 000034 - 03 - S - - - 000034 - 04 - F - &ILT - 002 - - - 000034 - 05 - F - &ILD - 001 - - - 000034 - 06 - S - - - 000034 - 07 - F - &OUP - 001 - - - 000034 - 08 - F - &ODN - 002 - - - 000034 - 09 - S - - - 000034 - 10 - M - 000035 - - - 000034 - 11 - F - &SUM - 001 - - - 000034 - 12 - S - - - 000034 - 13 - F - %SC - 001 - - - 000034 - 14 - S - - - 000034 - 15 - F - &F12 - 001 - - - 000035 - 01 - F - &UMC - 001 - - - 000035 - 02 - F - &AVR - 002 - - - 000035 - 03 - F - &MIN - 001 - - - 000035 - 04 - F - &MAX - 001 - - - 000035 - 05 - F - &COUNT - 001 - - - 000036 - 01 - F - &ABC - 001 - - - 000036 - 02 - S - - - 000036 - 03 - F - &F03 - 001 - - - 000037 - 01 - F - &LIS - 001 - - - 000037 - 02 - S - - - 000037 - 03 - M - 000038 - - - 000037 - 04 - S - - - 000037 - 05 - M - 000039 - - - 000037 - 06 - S - - - 000037 - 07 - M - 000040 - - - 000037 - 08 - S - - - 000037 - 09 - F - &NFO - 001 - - - 000037 - 10 - F - &LFO - 001 - - - 000038 - 01 - F - &OLX - 001 - - - 000038 - 02 - F - &OAD - 001 - - - 000038 - 03 - S - - - 000038 - 04 - F - &AVE - 001 - - - 000038 - 05 - S - - - 000038 - 06 - F - &ERW - 002 - - - 000039 - 01 - F - &KOM - 001 - - - 000039 - 02 - F - &AUF - 002 - - - 000040 - 01 - F - &OPT - 002 - - - 000040 - 02 - S - - - 000040 - 03 - F - &CFI - 002 - - - 000040 - 04 - F - &CDF - 002 - - - 000040 - 05 - S - - - 000040 - 06 - F - &DAU - 001 - - - 000040 - 07 - F - &DON - 001 - - - 000040 - 08 - F - &DOF - 001 - - - - - 000001 - S - List - L - STANDARD_FULLSCREEN List - - - 000002 - S - Export - E - STANDARD Save - - - 000003 - S - Send To - S - - - 000004 - S - Edit - E - STANDARD - - - 000005 - S - Calculate - C - - - 000006 - S - Goto - G - STANDARD - - - 000007 - S - Views - I - - - 000008 - S - Settings - S - STANDARD_FULLSCREEN - - - 000009 - S - Layout - A - Sub STANDARD - - - 000010 - S - Columns - C - - - 000011 - S - List - L - STANDARD List - - - 000012 - S - Export - E - STANDARD Save - - - 000013 - S - Send To - S - - - 000014 - S - Edit - E - STANDARD - - - 000015 - S - Calculate - C - - - 000016 - S - Goto - G - STANDARD - - - 000017 - S - Settings - S - STANDARD - - - 000018 - S - Layout - A - Sub STANDARD - - - 000019 - S - Summation Levels - S - Sub STANDARD - - - 000020 - S - Columns - C - - - 000021 - S - List - L - STANDARD_FULLSCREEN List - - - 000022 - S - Export - E - STANDARD Save - - - 000023 - S - Send To - S - - - 000024 - S - Edit - E - STANDARD - - - 000025 - S - Calculate - C - - - 000026 - S - Goto - G - STANDARD - - - 000027 - S - Views - I - - - 000028 - S - Settings - S - STANDARD_FULLSCREEN - - - 000029 - S - Layout - A - Sub STANDARD - - - 000030 - S - Columns - C - - - 000031 - S - List - L - STANDARD List - - - 000032 - S - Export - E - STANDARD Save - - - 000033 - S - Send to - S - - - 000034 - S - Edit - E - STANDARD - - - 000035 - S - Calculate - C - - - 000036 - S - Goto - G - STANDARD - - - 000037 - S - Settings - S - STANDARD - - - 000038 - S - Layout - A - Sub STANDARD - - - 000039 - S - Summation levels - S - Sub STANDARD - - - 000040 - S - Columns - C - - - - - 000001 - 01 - 000001 - - - 000001 - 02 - 000004 - - - 000001 - 03 - 000006 - - - 000001 - 04 - 000007 - - - 000001 - 05 - 000008 - - - 000002 - 01 - 000011 - - - 000002 - 02 - 000014 - - - 000002 - 03 - 000016 - - - 000002 - 04 - 000017 - - - 000003 - 01 - 000021 - - - 000003 - 02 - 000024 - - - 000003 - 03 - 000026 - - - 000003 - 04 - 000027 - - - 000003 - 05 - 000028 - - - 000004 - 01 - 000031 - - - 000004 - 02 - 000034 - - - 000004 - 03 - 000036 - - - 000004 - 04 - 000037 - - - - - 000001 - 0001 - 01 - 39 - - - 000001 - 0001 - 02 - 37 - - - 000001 - 0001 - 03 - 08 - - - 000001 - 0001 - 04 - 05 - - - 000001 - 0001 - 05 - 06 - - - 000001 - 0001 - 06 - 28 - - - 000001 - 0001 - 07 - 40 - - - 000001 - 0001 - 08 - 29 - - - 000001 - 0001 - 09 - 38 - - - 000001 - 0001 - 10 - 30 - - - 000001 - 0001 - 11 - 46 - - - 000001 - 0001 - 12 - 43 - - - 000001 - 0001 - 13 - 44 - - - 000001 - 0001 - 14 - 45 - - - 000001 - 0001 - 15 - 31 - - - 000001 - 0001 - 16 - 25 - - - 000001 - 0001 - 17 - 47 - - - 000001 - 0001 - 18 - 32 - - - 000001 - 0001 - 19 - 33 - - - 000001 - 0001 - 20 - 34 - - - 000001 - 0001 - 21 - 36 - - - 000001 - 0001 - 22 - 13 - - - 000002 - 0001 - 01 - 39 - - - 000002 - 0001 - 02 - 37 - - - 000002 - 0001 - 03 - S - - - 000002 - 0001 - 04 - 05 - - - 000002 - 0001 - 05 - 06 - - - 000002 - 0001 - 06 - S - - - 000002 - 0001 - 07 - 28 - - - 000002 - 0001 - 08 - 40 - - - 000002 - 0001 - 09 - 29 - - - 000002 - 0001 - 10 - S - - - 000002 - 0001 - 11 - 30 - - - 000002 - 0001 - 12 - 42 - - - 000002 - 0001 - 13 - 35 - - - 000002 - 0001 - 14 - 47 - - - 000002 - 0001 - 15 - S - - - 000002 - 0001 - 16 - 43 - - - 000002 - 0001 - 17 - 44 - - - 000002 - 0001 - 18 - 45 - - - 000002 - 0001 - 19 - 31 - - - 000002 - 0001 - 20 - 25 - - - 000002 - 0001 - 21 - S - - - 000002 - 0001 - 22 - 32 - - - 000002 - 0001 - 23 - 33 - - - 000002 - 0001 - 24 - 34 - - - 000002 - 0001 - 25 - S - - - 000002 - 0001 - 26 - 41 - - - 000002 - 0001 - 27 - 07 - - - 000002 - 0001 - 28 - S - - - 000002 - 0001 - 29 - 18 - - - 000002 - 0001 - 30 - 26 - - - 000002 - 0001 - 31 - 27 - - - 000002 - 0001 - 32 - 19 - - - 000003 - 0001 - 01 - 39 - - - 000003 - 0001 - 02 - 37 - - - 000003 - 0001 - 03 - 08 - - - 000003 - 0001 - 04 - 05 - - - 000003 - 0001 - 05 - 06 - - - 000003 - 0001 - 06 - 28 - - - 000003 - 0001 - 07 - 40 - - - 000003 - 0001 - 08 - 29 - - - 000003 - 0001 - 09 - 38 - - - 000003 - 0001 - 10 - 30 - - - 000003 - 0001 - 11 - 46 - - - 000003 - 0001 - 12 - 43 - - - 000003 - 0001 - 13 - 44 - - - 000003 - 0001 - 14 - 45 - - - 000003 - 0001 - 15 - 31 - - - 000003 - 0001 - 16 - 25 - - - 000003 - 0001 - 17 - 47 - - - 000003 - 0001 - 18 - 32 - - - 000003 - 0001 - 19 - 33 - - - 000003 - 0001 - 20 - 34 - - - 000003 - 0001 - 21 - 36 - - - 000003 - 0001 - 22 - 13 - - - 000004 - 0001 - 01 - 39 - - - 000004 - 0001 - 02 - 37 - - - 000004 - 0001 - 03 - S - - - 000004 - 0001 - 04 - 05 - - - 000004 - 0001 - 05 - 06 - - - 000004 - 0001 - 06 - S - - - 000004 - 0001 - 07 - 28 - - - 000004 - 0001 - 08 - 40 - - - 000004 - 0001 - 09 - 29 - - - 000004 - 0001 - 10 - 38 - - - 000004 - 0001 - 11 - S - - - 000004 - 0001 - 12 - 30 - - - 000004 - 0001 - 13 - 42 - - - 000004 - 0001 - 14 - S - - - 000004 - 0001 - 15 - 45 - - - 000004 - 0001 - 16 - S - - - 000004 - 0001 - 17 - 32 - - - 000004 - 0001 - 18 - 33 - - - 000004 - 0001 - 19 - 34 - - - 000004 - 0001 - 20 - 09 - - - 000004 - 0001 - 21 - S - - - 000004 - 0001 - 22 - 41 - - - 000004 - 0001 - 23 - 07 - - - 000004 - 0001 - 24 - S - - - 000004 - 0001 - 25 - 18 - - - 000004 - 0001 - 26 - 26 - - - 000004 - 0001 - 27 - 27 - - - 000004 - 0001 - 28 - 19 - - - - - 000001 - 01 - &ELP - 001 - - - 000001 - 02 - &IC1 - 001 - - - 000001 - 03 - &F03 - 001 - - - 000001 - 04 - &F4 - 001 - - - 000001 - 05 - &ALL - 001 - - - 000001 - 06 - &SAL - 001 - - - 000001 - 08 - &REFRESH - 001 - - - 000001 - 11 - &DATA_SAVE - 001 - - - 000001 - 12 - &F12 - 001 - - - 000001 - 13 - EXCEL - 001 - - - 000001 - 15 - &F15 - 001 - - - 000001 - 25 - &ABC - 001 - - - 000001 - 28 - &OUP - 001 - - - 000001 - 29 - &ILT - 001 - - - 000001 - 30 - &UMC - 001 - - - 000001 - 31 - %SL - 001 - - - 000001 - 32 - &OL0 - 001 - - - 000001 - 33 - &OAD - 002 - - - 000001 - 34 - &AVE - 002 - - - 000001 - 36 - &INFO - 001 - - - 000001 - 37 - &EB9 - 001 - - - 000001 - 38 - &ILD - 001 - - - 000001 - 39 - &ETA - 001 - - - 000001 - 40 - &ODN - 001 - - - 000001 - 42 - &SUM - 001 - - - 000001 - 43 - &XXL - 001 - - - 000001 - 44 - &AQW - 001 - - - 000001 - 45 - %PC - 001 - - - 000001 - 46 - &RNT_PREV - 001 - - - 000001 - 47 - &GRAPH - 001 - - - 000001 - 71 - %SC - 001 - - - 000001 - 84 - %SC+ - 001 - - - 000001 - 86 - &RNT - 001 - - - 000002 - 01 - &ELP - 001 - - - 000002 - 02 - &IC1 - 001 - - - 000002 - 03 - &F03 - 001 - - - 000002 - 05 - &ALL - 001 - - - 000002 - 06 - &SAL - 001 - - - 000002 - 07 - &NFO - 001 - - - 000002 - 08 - &NTE - 001 - - - 000002 - 12 - &F12 - 001 - - - 000002 - 15 - &F15 - 001 - - - 000002 - 18 - &CRB - 001 - - - 000002 - 19 - &CRE - 001 - - - 000002 - 21 - P-- - 001 - - - 000002 - 22 - P- - 001 - - - 000002 - 23 - P+ - 001 - - - 000002 - 24 - P++ - 001 - - - 000002 - 25 - &ABC - 001 - - - 000002 - 26 - &CRL - 001 - - - 000002 - 27 - &CRR - 001 - - - 000002 - 28 - &OUP - 001 - - - 000002 - 29 - &ILT - 001 - - - 000002 - 30 - &UMC - 001 - - - 000002 - 31 - %SL - 001 - - - 000002 - 32 - &OL0 - 001 - - - 000002 - 33 - &OAD - 002 - - - 000002 - 34 - &AVE - 002 - - - 000002 - 35 - &XPA - 001 - - - 000002 - 37 - &EB9 - 002 - - - 000002 - 39 - &ETA - 001 - - - 000002 - 40 - &ODN - 001 - - - 000002 - 41 - &LFO - 002 - - - 000002 - 42 - &SUM - 001 - - - 000002 - 43 - &XXL - 001 - - - 000002 - 44 - &AQW - 001 - - - 000002 - 45 - %PC - 001 - - - 000002 - 46 - &RNT_PREV - 001 - - - 000002 - 47 - &OMP - 001 - - - 000002 - 48 - &XML - 001 - - - 000002 - 71 - %SC - 001 - - - 000002 - 80 - P-- - 001 - - - 000002 - 81 - P- - 001 - - - 000002 - 82 - P+ - 001 - - - 000002 - 83 - P++ - 001 - - - 000002 - 84 - %SC+ - 001 - - - 000002 - 86 - &RNT - 001 - - - 000003 - 01 - &ELP - 001 - - - 000003 - 02 - &IC1 - 001 - - - 000003 - 03 - &F03 - 001 - - - 000003 - 04 - &F4 - 001 - - - 000003 - 05 - &ALL - 001 - - - 000003 - 06 - &SAL - 001 - - - 000003 - 08 - &REFRESH - 001 - - - 000003 - 11 - &DATA_SAVE - 001 - - - 000003 - 12 - &F12 - 001 - - - 000003 - 13 - EXCEL - 001 - - - 000003 - 15 - &F15 - 001 - - - 000003 - 25 - &ABC - 001 - - - 000003 - 28 - &OUP - 001 - - - 000003 - 29 - &ILT - 001 - - - 000003 - 30 - &UMC - 001 - - - 000003 - 31 - %SL - 001 - - - 000003 - 32 - &OL0 - 001 - - - 000003 - 33 - &OAD - 002 - - - 000003 - 34 - &AVE - 002 - - - 000003 - 36 - &INFO - 001 - - - 000003 - 37 - &EB9 - 001 - - - 000003 - 38 - &ILD - 001 - - - 000003 - 39 - &ETA - 001 - - - 000003 - 40 - &ODN - 001 - - - 000003 - 42 - &SUM - 001 - - - 000003 - 43 - &XXL - 001 - - - 000003 - 44 - &AQW - 001 - - - 000003 - 45 - %PC - 001 - - - 000003 - 46 - &RNT_PREV - 001 - - - 000003 - 47 - &GRAPH - 001 - - - 000003 - 71 - %SC - 001 - - - 000003 - 84 - %SC+ - 001 - - - 000003 - 86 - &RNT - 001 - - - 000004 - 01 - &ELP - 001 - - - 000004 - 02 - &IC1 - 001 - - - 000004 - 03 - &F03 - 001 - - - 000004 - 05 - &ALL - 002 - - - 000004 - 06 - &SAL - 002 - - - 000004 - 07 - &NFO - 001 - - - 000004 - 08 - &NTE - 002 - - - 000004 - 09 - EXCEL - 001 - - - 000004 - 12 - &F12 - 001 - - - 000004 - 15 - &F15 - 001 - - - 000004 - 18 - &CRB - 001 - - - 000004 - 19 - &CRE - 002 - - - 000004 - 21 - P-- - 001 - - - 000004 - 22 - P- - 001 - - - 000004 - 23 - P+ - 002 - - - 000004 - 24 - P++ - 001 - - - 000004 - 25 - &ABC - 001 - - - 000004 - 26 - &CRL - 002 - - - 000004 - 27 - &CRR - 002 - - - 000004 - 28 - &OUP - 001 - - - 000004 - 29 - &ILT - 002 - - - 000004 - 30 - &UMC - 001 - - - 000004 - 31 - %SL - 002 - - - 000004 - 32 - &OL0 - 002 - - - 000004 - 33 - &OAD - 003 - - - 000004 - 34 - &AVE - 003 - - - 000004 - 35 - &XPA - 001 - - - 000004 - 37 - &EB9 - 003 - - - 000004 - 38 - &ILD - 001 - - - 000004 - 39 - &ETA - 001 - - - 000004 - 40 - &ODN - 002 - - - 000004 - 41 - &LFO - 003 - - - 000004 - 42 - &SUM - 001 - - - 000004 - 43 - &XXL - 001 - - - 000004 - 44 - &AQW - 002 - - - 000004 - 45 - %PC - 002 - - - 000004 - 46 - &RNT_PREV - 002 - - - 000004 - 47 - &OMP - 001 - - - 000004 - 48 - &XML - 002 - - - 000004 - 71 - %SC - 001 - - - 000004 - 80 - P-- - 001 - - - 000004 - 81 - P- - 001 - - - 000004 - 82 - P+ - 002 - - - 000004 - 83 - P++ - 001 - - - 000004 - 84 - %SC+ - 002 - - - 000004 - 86 - &RNT - 001 - - - - - ALV_STATUS - %CH - - - ALV_STATUS - %ML - - - ALV_STATUS - %PC - - - ALV_STATUS - %SC - - - ALV_STATUS - %SC+ - - - ALV_STATUS - %SL - - - ALV_STATUS - &ABC - - - ALV_STATUS - &ALL - - - ALV_STATUS - &AQW - - - ALV_STATUS - &AUF - - - ALV_STATUS - &AVE - - - ALV_STATUS - &AVR - - - ALV_STATUS - &BS - - - ALV_STATUS - &BS+ - - - ALV_STATUS - &BS- - - - ALV_STATUS - &CDF - - - ALV_STATUS - &CFI - - - ALV_STATUS - &COUNT - - - ALV_STATUS - &CRB - - - ALV_STATUS - &CRE - - - ALV_STATUS - &CRL - - - ALV_STATUS - &CRR - - - ALV_STATUS - &DAU - - - ALV_STATUS - &DOF - - - ALV_STATUS - &DON - - - ALV_STATUS - &EB3 - - - ALV_STATUS - &EB9 - - - ALV_STATUS - &ELP - - - ALV_STATUS - &ERW - - - ALV_STATUS - &ETA - - - ALV_STATUS - &F03 - - - ALV_STATUS - &F12 - - - ALV_STATUS - &F15 - - - ALV_STATUS - &IC1 - - - ALV_STATUS - &ILD - - - ALV_STATUS - &ILT - - - ALV_STATUS - &KOM - - - ALV_STATUS - &LFO - - - ALV_STATUS - &LIS - - - ALV_STATUS - &MAX - - - ALV_STATUS - &MIN - - - ALV_STATUS - &NFO - - - ALV_STATUS - &NTE - - - ALV_STATUS - &OAD - - - ALV_STATUS - &ODN - - - ALV_STATUS - &OL0 - - - ALV_STATUS - &OL1 - - - ALV_STATUS - &OLX - - - ALV_STATUS - &OMP - - - ALV_STATUS - &OPT - - - ALV_STATUS - &OUP - - - ALV_STATUS - &RNT - - - ALV_STATUS - &SAL - - - ALV_STATUS - &SUM - - - ALV_STATUS - &UMC - - - ALV_STATUS - &XML - - - ALV_STATUS - &XPA - - - ALV_STATUS - &XXL - - - ALV_STATUS - BAC1 - - - ALV_STATUS - BACK - - - ALV_STATUS - BEB1 - - - ALV_STATUS - BEB2 - - - ALV_STATUS - BEB3 - - - ALV_STATUS - BEB9 - - - ALV_STATUS - BEBN - - - ALV_STATUS - COL0 - - - ALV_STATUS - COLX - - - ALV_STATUS - DETA - - - ALV_STATUS - DRUK - - - ALV_STATUS - DSAL - - - ALV_STATUS - ENTE - - - ALV_STATUS - EXCEL - - - ALV_STATUS - EXIT - - - ALV_STATUS - EXPA - - - ALV_STATUS - FILD - - - ALV_STATUS - FILT - - - ALV_STATUS - GLIS - - - ALV_STATUS - HELP - - - ALV_STATUS - INFO - - - ALV_STATUS - KOMP - - - ALV_STATUS - P+ - - - ALV_STATUS - P++ - - - ALV_STATUS - P- - - - ALV_STATUS - P-- - - - ALV_STATUS - PF09 - - - ALV_STATUS - PF13 - - - ALV_STATUS - PIC1 - - - ALV_STATUS - PICK - - - ALV_STATUS - PRI - - - ALV_STATUS - PRIN - - - ALV_STATUS - PRNT - - - ALV_STATUS - RW - - - ALV_STATUS - SALL - - - ALV_STATUS - SAUF - - - ALV_STATUS - SAVE - - - ALV_STATUS - SCRB - - - ALV_STATUS - SCRE - - - ALV_STATUS - SCRL - - - ALV_STATUS - SCRR - - - ALV_STATUS - SKOM - - - ALV_STATUS - SODN - - - ALV_STATUS - SOUP - - - ALV_STATUS - SUMC - - - ALV_STATUS - ZSUM - - - - - A - 000001 - D - Standard Interface STANDARD_FULLSCREEN - - - P - 000001 - D - X - Standard Maximum Interaction STANDARD_FULLSCREEN - - - B - 000001 - 0001 - STANDARD_FULLSCREEN - - - A - 000002 - D - Standard User Interface STANDARD - - - P - 000002 - D - X - Standard Maximum Interaction - - - B - 000002 - 0001 - D - Standard Maximum Interaction - - - A - 000003 - D - Standard Interface STANDARD_FULLSCREEN - - - P - 000003 - D - X - Standard Maximum Interaction STANDARD_FULLSCREEN - - - B - 000003 - 0001 - STANDARD_FULLSCREEN - - - A - 000004 - D - Standard User Interface STANDARD - - - P - 000004 - D - X - Standard Maximum Interaction - - - B - 000004 - 0001 - D - X - Standard Maximum Interaction - - - - - - R - abap2xlsx Demo: Bind ALV OLE2 - 29 - - - - - diff --git a/src/demos/zdemo_excel21.prog.abap b/src/demos/zdemo_excel21.prog.abap deleted file mode 100644 index 7cebcd9..0000000 --- a/src/demos/zdemo_excel21.prog.abap +++ /dev/null @@ -1,123 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL21 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel21. - -TYPES: - BEGIN OF t_color_style, - color TYPE zexcel_style_color_argb, - style TYPE zexcel_cell_style, - END OF t_color_style. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_filled TYPE REF TO zcl_excel_style. - -DATA: color_styles TYPE TABLE OF t_color_style. - -FIELD-SYMBOLS: LIKE LINE OF color_styles. - -CONSTANTS: max TYPE i VALUE 255, - step TYPE i VALUE 51. - -DATA: red TYPE i, - green TYPE i, - blue TYPE i, - red_hex(1) TYPE x, - green_hex(1) TYPE x, - blue_hex(1) TYPE x, - red_str TYPE string, - green_str TYPE string, - blue_str TYPE string. - -DATA: color TYPE zexcel_style_color_argb, - tint TYPE zexcel_style_color_tint. - -DATA: row TYPE i, - row_tmp TYPE i, - column TYPE zexcel_cell_column VALUE 1, - col_str TYPE zexcel_cell_column_alpha. - -CONSTANTS: gc_save_file_name TYPE string VALUE '21_BackgroundColorPicker.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - WHILE red <= max. - green = 0. - WHILE green <= max. - blue = 0. - WHILE blue <= max. - red_hex = red. - red_str = red_hex. - green_hex = green. - green_str = green_hex. - blue_hex = blue. - blue_str = blue_hex. - " Create filled - CONCATENATE 'FF' red_str green_str blue_str INTO color. - APPEND INITIAL LINE TO color_styles ASSIGNING . - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = color. - -color = color. - -style = lo_style_filled->get_guid( ). - blue = blue + step. - ENDWHILE. - green = green + step. - ENDWHILE. - red = red + step. - ENDWHILE. - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Color Picker' ). - LOOP AT color_styles ASSIGNING . - row_tmp = ( max / step + 1 ) * 3. - IF row = row_tmp. - row = 0. - column = column + 1. - ENDIF. - row = row + 1. - col_str = zcl_excel_common=>convert_column2alpha( column ). - - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = col_str - ip_row = row - ip_value = -color - ip_style = -style ). - ENDLOOP. - - row = row + 2. - tint = '-0.5'. - DO 10 TIMES. - column = 1. - DO 10 TIMES. - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = sy-index - 1. - lo_style_filled->fill->fgcolor-tint = tint. - -style = lo_style_filled->get_guid( ). - col_str = zcl_excel_common=>convert_column2alpha( column ). - lo_worksheet->set_cell_style( ip_column = col_str - ip_row = row - ip_style = -style ). - - ADD 1 TO column. - ENDDO. - ADD '0.1' TO tint. - ADD 1 TO row. - ENDDO. - - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel21.prog.xml b/src/demos/zdemo_excel21.prog.xml deleted file mode 100644 index ab72a90..0000000 --- a/src/demos/zdemo_excel21.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL21 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: - 15 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel22.prog.abap b/src/demos/zdemo_excel22.prog.abap deleted file mode 100644 index d54fbf1..0000000 --- a/src/demos/zdemo_excel22.prog.abap +++ /dev/null @@ -1,176 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL22 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel22. - -TYPES: ty_sflight_lines TYPE TABLE OF sflight. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style TYPE REF TO zcl_excel_style, - lo_style_date TYPE REF TO zcl_excel_style, - lo_style_editable TYPE REF TO zcl_excel_style, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - ls_table_settings_out TYPE zexcel_s_table_settings. - -DATA: lv_style_guid TYPE zexcel_cell_style. - -DATA: lv_row TYPE char10. - -FIELD-SYMBOLS: TYPE zexcel_s_fieldcatalog. - -CONSTANTS: gc_save_file_name TYPE string VALUE '22_itab_fieldcatalog.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'PN_MASSIVE' ). - - DATA lt_test TYPE ty_sflight_lines. - PERFORM load_fixed_data CHANGING lt_test. - - " sheet style (white background) - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lv_style_guid = lo_style->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_guid ). - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_protection~password = zcl_excel_common=>encrypt_password( 'test' ). - lo_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection=>c_active. - lo_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection=>c_active. - - " Create cell style for display only fields - lo_style = lo_excel->add_new_style( ). - lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style->number_format->format_code = zcl_excel_style_number_format=>c_format_text. - - " Create cell style for display only date field - lo_style_date = lo_excel->add_new_style( ). - lo_style_date->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_date->fill->fgcolor-rgb = zcl_excel_style_color=>c_gray. - lo_style_date->number_format->format_code = zcl_excel_style_number_format=>c_format_date_ddmmyyyy. - - " Create cell style for editable fields - lo_style_editable = lo_excel->add_new_style( ). - lo_style_editable->protection->locked = zcl_excel_style_protection=>c_protection_unlocked. - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_test ). - - LOOP AT lt_field_catalog ASSIGNING . - CASE -fieldname. - WHEN 'CARRID'. - -position = 3. - -dynpfld = abap_true. - -style = lo_style->get_guid( ). - WHEN 'CONNID'. - -position = 1. - -dynpfld = abap_true. - -style = lo_style->get_guid( ). - -scrtext_m = |Flight\r\nNumber|. " Demonstrates header on 2 lines - WHEN 'FLDATE'. - -position = 2. - -dynpfld = abap_true. - -style = lo_style_date->get_guid( ). - WHEN 'PRICE'. - -position = 4. - -dynpfld = abap_true. - -style = lo_style_editable->get_guid( ). - -totals_function = zcl_excel_table=>totals_function_sum. - WHEN OTHERS. - -dynpfld = abap_false. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( EXPORTING - ip_table = lt_test - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - IMPORTING - es_table_settings = ls_table_settings_out ). - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lv_row = ls_table_settings_out-top_left_row. - CONDENSE lv_row. - CONCATENATE 'ISNUMBER(' ls_table_settings_out-top_left_column lv_row ')' INTO lo_data_validation->formula1. - lo_data_validation->cell_row = ls_table_settings_out-top_left_row. - lo_data_validation->cell_column = ls_table_settings_out-top_left_column. - lo_data_validation->cell_row_to = ls_table_settings_out-bottom_right_row. - lo_data_validation->cell_column_to = ls_table_settings_out-bottom_right_column. - - - -*** Create output - lcl_output=>output( lo_excel ). - - -FORM load_fixed_data CHANGING ct_test TYPE ty_sflight_lines. - DATA: lt_lines TYPE TABLE OF string, - lv_line TYPE string, - lt_fields TYPE TABLE OF string, - lv_comp TYPE i, - lv_field TYPE string, - ls_test TYPE sflight. - FIELD-SYMBOLS: TYPE simple. - - APPEND 'AA 0017 20171219 422 USD 747-400 385 371 191334 31 28 21 21' TO lt_lines. - APPEND 'AA 0017 20180309 422 USD 747-400 385 365 189984 31 29 21 20' TO lt_lines. - APPEND 'AA 0017 20180528 422 USD 747-400 385 374 193482 31 30 21 20' TO lt_lines. - APPEND 'AA 0017 20180816 422 USD 747-400 385 372 193127 31 30 21 20' TO lt_lines. - APPEND 'AA 0017 20181104 422 USD 747-400 385 44 23908 31 4 21 3' TO lt_lines. - APPEND 'AA 0017 20190123 422 USD 747-400 385 40 20347 31 3 21 2' TO lt_lines. - APPEND 'AZ 0555 20171219 185 EUR 737-800 140 133 32143 12 12 10 10' TO lt_lines. - APPEND 'AZ 0555 20180309 185 EUR 737-800 140 137 32595 12 12 10 10' TO lt_lines. - APPEND 'AZ 0555 20180528 185 EUR 737-800 140 134 31899 12 11 10 10' TO lt_lines. - APPEND 'AZ 0555 20180816 185 EUR 737-800 140 128 29775 12 10 10 9' TO lt_lines. - APPEND 'AZ 0555 20181104 185 EUR 737-800 140 0 0 12 0 10 0' TO lt_lines. - APPEND 'AZ 0555 20190123 185 EUR 737-800 140 23 5392 12 1 10 2' TO lt_lines. - APPEND 'AZ 0789 20171219 1030 EUR 767-200 260 250 307176 21 20 11 11' TO lt_lines. - APPEND 'AZ 0789 20180309 1030 EUR 767-200 260 252 306054 21 20 11 10' TO lt_lines. - APPEND 'AZ 0789 20180528 1030 EUR 767-200 260 252 307063 21 20 11 10' TO lt_lines. - APPEND 'AZ 0789 20180816 1030 EUR 767-200 260 249 300739 21 19 11 10' TO lt_lines. - APPEND 'AZ 0789 20181104 1030 EUR 767-200 260 104 127647 21 8 11 5' TO lt_lines. - APPEND 'AZ 0789 20190123 1030 EUR 767-200 260 18 22268 21 1 11 1' TO lt_lines. - APPEND 'DL 0106 20171217 611 USD A380-800 475 458 324379 30 29 20 20' TO lt_lines. - APPEND 'DL 0106 20180307 611 USD A380-800 475 458 324330 30 30 20 20' TO lt_lines. - APPEND 'DL 0106 20180526 611 USD A380-800 475 459 328149 30 29 20 20' TO lt_lines. - APPEND 'DL 0106 20180814 611 USD A380-800 475 462 326805 30 30 20 18' TO lt_lines. - APPEND 'DL 0106 20181102 611 USD A380-800 475 167 115554 30 10 20 6' TO lt_lines. - APPEND 'DL 0106 20190121 611 USD A380-800 475 11 9073 30 1 20 1' TO lt_lines. - LOOP AT lt_lines INTO lv_line. - CONDENSE lv_line. - SPLIT lv_line AT space INTO TABLE lt_fields. - lv_comp = 2. - LOOP AT lt_fields INTO lv_field. - ASSIGN COMPONENT lv_comp OF STRUCTURE ls_test TO . - = lv_field. - lv_comp = lv_comp + 1. - ENDLOOP. - APPEND ls_test TO ct_test. - ENDLOOP. -ENDFORM. diff --git a/src/demos/zdemo_excel22.prog.xml b/src/demos/zdemo_excel22.prog.xml deleted file mode 100644 index 30cbc8c..0000000 --- a/src/demos/zdemo_excel22.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL22 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Export internal table - 38 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel23.prog.abap b/src/demos/zdemo_excel23.prog.abap deleted file mode 100644 index 9716d62..0000000 --- a/src/demos/zdemo_excel23.prog.abap +++ /dev/null @@ -1,88 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel23. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '23_Sheets_with_and_without_grid_lines.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet with grid lines and print centered horizontal & vertical' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->zif_excel_sheet_properties~zoomscale_normal = 150. - - lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet with grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 160. - lo_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 200. - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the third sheet without grid lines in display and print' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). - lo_worksheet->set_print_gridlines( i_print_gridlines = abap_false ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the fourth sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 170. - lo_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 150. - - " Fourth sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the fourth sheet with grid lines and print centered ONLY horizontal' ). - lo_worksheet->set_show_gridlines( i_show_gridlines = abap_true ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection=>c_protected. - lo_worksheet->zif_excel_sheet_properties~zoomscale = 150. - lo_worksheet->zif_excel_sheet_properties~zoomscale_normal = 150. - - lo_worksheet->sheet_setup->horizontal_centered = abap_true. - - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel23.prog.xml b/src/demos/zdemo_excel23.prog.xml deleted file mode 100644 index 0ee7747..0000000 --- a/src/demos/zdemo_excel23.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZDEMO_EXCEL23 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Multiple sheets with and w/o grid lines, print options - 70 - - - - - diff --git a/src/demos/zdemo_excel24.prog.abap b/src/demos/zdemo_excel24.prog.abap deleted file mode 100644 index 2bdee7f..0000000 --- a/src/demos/zdemo_excel24.prog.abap +++ /dev/null @@ -1,109 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL23 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel24. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column TYPE REF TO zcl_excel_column, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lv_value TYPE string. -DATA: lv_date TYPE d VALUE '19000226', - lv_row TYPE i. - -CONSTANTS: gc_save_file_name TYPE string VALUE '24_Sheets_with_different_default_date_formats.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Default Date Format' ). - " Insert date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = lv_date ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!A1' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - lo_column = lo_worksheet->get_column( ip_column = 'A' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmdd ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYYMMDD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = lv_date ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet3!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the third sheet' ip_hyperlink = lo_hyperlink ). - - " Third sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " TODO: It seems that the zcl_excel_style_number_format=>c_format_date_yyyymmddslash - " does not produce a valid output - lo_worksheet->set_default_excel_date_format( zcl_excel_style_number_format=>c_format_date_yyyymmddslash ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Date Format set to YYYY/MM/DD' ). - " Insert current date - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Date:' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 4 ip_value = lv_date ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet4!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is link to the 4th sheet' ip_hyperlink = lo_hyperlink ). - - " 4th sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - " Illustrate the Problem caused by: - " Excel 2000 incorrectly assumes that the year 1900 is a leap year. - " http://support.microsoft.com/kb/214326/en-us - lo_worksheet->set_title( ip_title = 'Sheet4' ). - " Loop from Start Date to the Max Date current data in daily steps - CONSTANTS: lv_max TYPE d VALUE '19000302'. - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Formated date' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Integer value for this date' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'Date as string' ). - - lv_row = 4. - WHILE lv_date < lv_max. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_row ip_value = lv_date ). - lv_value = zcl_excel_common=>date_to_excel_string( lv_date ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_row ip_value = lv_value ). - lv_value = lv_date. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_row ip_value = lv_value ). - lv_date = lv_date + 1. - lv_row = lv_row + 1. - ENDWHILE. - - lv_row = lv_row + 1. - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_row ip_value = 'This is link to the first sheet' ip_hyperlink = lo_hyperlink ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel24.prog.xml b/src/demos/zdemo_excel24.prog.xml deleted file mode 100644 index 48326ff..0000000 --- a/src/demos/zdemo_excel24.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZDEMO_EXCEL24 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Multiple sheets with different default date formats - 70 - - - - - diff --git a/src/demos/zdemo_excel25.prog.abap b/src/demos/zdemo_excel25.prog.abap deleted file mode 100644 index e667781..0000000 --- a/src/demos/zdemo_excel25.prog.abap +++ /dev/null @@ -1,169 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL25 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel25. - -TYPES: BEGIN OF ty_f4_path, - pathintern TYPE filepath-pathintern, - pathname TYPE pathtext-pathname, - pathextern TYPE path-pathextern, - END OF ty_f4_path. - -DATA: lt_r_fldval TYPE RANGE OF filepath-pathintern, - lt_value TYPE TABLE OF ty_f4_path, - ls_value TYPE ty_f4_path. - -PARAMETERS log_path TYPE filepath-pathintern DEFAULT 'LOCAL_TEMPORARY_FILES'. -SELECTION-SCREEN COMMENT /35(83) physpath. -PARAMETERS filename TYPE string LOWER CASE DEFAULT '25_HelloWorld.xlsx'. -PARAMETERS param_1 TYPE string LOWER CASE. -PARAMETERS param_2 TYPE string LOWER CASE. - -AT SELECTION-SCREEN OUTPUT. - - PERFORM read_file_paths. - READ TABLE lt_value WITH KEY pathintern = log_path INTO ls_value. - physpath = ls_value-pathextern. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR log_path. - - DATA: lt_return TYPE TABLE OF ddshretval, - ls_return TYPE ddshretval, - lt_dynpfield TYPE TABLE OF dynpread, - ls_dynpfield TYPE dynpread. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = sy-repid - dynumb = sy-dynnr - request = 'A' " read all screen fields - TABLES - dynpfields = lt_dynpfield - EXCEPTIONS - OTHERS = 9. - - READ TABLE lt_dynpfield WITH KEY fieldname = 'LOG_PATH' INTO ls_dynpfield. - log_path = ls_dynpfield-fieldvalue. - - PERFORM read_file_paths. - - CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' - EXPORTING - value_org = 'S' - multiple_choice = ' ' - retfield = 'PATHINTERN' - TABLES - value_tab = lt_value - return_tab = lt_return - EXCEPTIONS - OTHERS = 0. - - IF lt_return IS INITIAL. - RETURN. - ENDIF. - - READ TABLE lt_return INDEX 1 INTO ls_return. - READ TABLE lt_value WITH KEY pathintern = ls_return-fieldval INTO ls_value. - - DELETE lt_dynpfield WHERE fieldname = 'LOG_PATH' OR fieldname = 'PHYSPATH'. - ls_dynpfield-fieldname = 'LOG_PATH'. - ls_dynpfield-fieldvalue = ls_value-pathintern. - APPEND ls_dynpfield TO lt_dynpfield. - ls_dynpfield-fieldname = 'PHYSPATH'. - ls_dynpfield-fieldvalue = ls_value-pathextern. - APPEND ls_dynpfield TO lt_dynpfield. - - CALL FUNCTION 'DYNP_VALUES_UPDATE' - EXPORTING - dyname = sy-repid - dynumb = sy-dynnr - TABLES - dynpfields = lt_dynpfield - EXCEPTIONS - OTHERS = 8. - -FORM read_file_paths. - - DATA: ls_r_fldval LIKE LINE OF lt_r_fldval. - - CLEAR lt_r_fldval. - IF log_path CA '*'. - ls_r_fldval-sign = 'I'. - ls_r_fldval-option = 'CP'. - ls_r_fldval-low = log_path. - APPEND ls_r_fldval TO lt_r_fldval. - ENDIF. - - SELECT filepath~pathintern pathtext~pathname path~pathextern - FROM filepath - INNER JOIN path ON path~pathintern = filepath~pathintern - INNER JOIN opsystem ON opsystem~filesys = path~filesys AND opsystem~opsys = sy-opsys - LEFT JOIN pathtext ON pathtext~pathintern = filepath~pathintern AND pathtext~language = sy-langu - INTO TABLE lt_value - WHERE filepath~pathintern IN lt_r_fldval. - -ENDFORM. - -START-OF-SELECTION. - -DATA: lo_excel TYPE REF TO zcl_excel. -DATA: lo_excel_writer TYPE REF TO zif_excel_writer. -DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet. -DATA: lo_exception TYPE REF TO cx_root. -DATA: lv_file TYPE xstring. -DATA: lv_default_file_name TYPE string. -DATA: lv_default_file_name2 TYPE c LENGTH 255. -DATA: lv_error TYPE string. - -CALL FUNCTION 'FILE_GET_NAME_USING_PATH' - EXPORTING - logical_path = log_path - file_name = filename - parameter_1 = param_1 - parameter_2 = param_2 - IMPORTING - file_name_with_path = lv_default_file_name " File name with path - EXCEPTIONS - other = 1. -IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. -ENDIF. - -" Creates active sheet -CREATE OBJECT lo_excel. - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->set_title( ip_title = 'Sheet1' ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - -CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -lv_file = lo_excel_writer->write_file( lo_excel ). - -TRY. - OPEN DATASET lv_default_file_name FOR OUTPUT IN BINARY MODE. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE cx_sy_file_open - EXPORTING - filename = lv_default_file_name - errorcode = sy-subrc - errortext = |Cannot create or open file - Check Tx FILE Logical Path 'LOCAL_TEMPORARY_FILES'|. - ENDIF. - TRANSFER lv_file TO lv_default_file_name. - - CLOSE DATASET lv_default_file_name. - CATCH cx_root INTO lo_exception. - lv_error = lo_exception->get_text( ). - MESSAGE lv_error TYPE 'I'. - STOP. -ENDTRY. - -lv_default_file_name2 = lv_default_file_name. -SET PARAMETER ID 'GR8' FIELD lv_default_file_name2. -SUBMIT zdemo_excel37 VIA SELECTION-SCREEN WITH p_applse = abap_true AND RETURN. diff --git a/src/demos/zdemo_excel25.prog.xml b/src/demos/zdemo_excel25.prog.xml deleted file mode 100644 index 708b1e3..0000000 --- a/src/demos/zdemo_excel25.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL25 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Write Hello World using Logical Path on the App Server - 70 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel26.prog.abap b/src/demos/zdemo_excel26.prog.abap deleted file mode 100644 index 2b830e9..0000000 --- a/src/demos/zdemo_excel26.prog.abap +++ /dev/null @@ -1,207 +0,0 @@ -*--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL26 -* Demo for method zcl_excel_worksheet-bind_object: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -REPORT zdemo_excel26. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '26_Bind_ALV.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 10 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - DATA: lo_error TYPE REF TO zcx_excel, - lv_message TYPE string. - IF sy-ucomm = 'EXCEL'. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - -* export file to save file path - TRY. - PERFORM export_to_excel. - CATCH zcx_excel INTO lo_error. - lv_message = lo_error->get_text( ). - MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. - ENDTRY. - - ENDIF. -ENDFORM. " USER_COMMAND - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel RAISING zcx_excel. - DATA: lo_error TYPE REF TO zcx_excel, - lv_message TYPE string. - -* create zcl_excel_worksheet object - - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). - - PERFORM write_file. - -ENDFORM. "EXPORT_TO_EXCEL -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -FORM write_file RAISING zcx_excel. - DATA: lt_file TYPE solix_tab, - l_bytecount TYPE i, - l_file TYPE xstring. - - DATA: lo_excel_writer TYPE REF TO zif_excel_writer. - - DATA: ls_seoclass TYPE seoclass. - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_BCS_CONVERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>xstring_to_solix - EXPORTING - iv_xstring = l_file - RECEIVING - et_solix = lt_file. - - l_bytecount = xstrlen( l_file ). - ELSE. - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = l_file - IMPORTING - output_length = l_bytecount - TABLES - binary_tab = lt_file. - ENDIF. - - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - CHANGING data_tab = lt_file ). - -ENDFORM. " WRITE_FILE diff --git a/src/demos/zdemo_excel26.prog.xml b/src/demos/zdemo_excel26.prog.xml deleted file mode 100644 index a1772c2..0000000 --- a/src/demos/zdemo_excel26.prog.xml +++ /dev/null @@ -1,991 +0,0 @@ - - - - - - ZDEMO_EXCEL26 - 1 - T - E - X - X - - - - 000010 - 000010 - - - - ALV_STATUS - D - 000001 - 000001 - 0001 - Standard for General List Output - - - - - %PC - 001 - S - ICON_EXPORT - @49@ - Local file... - - - %SC - 001 - S - ICON_SEARCH - @13@ - Find - - - %SC+ - 001 - S - ICON_SEARCH_NEXT - @4E@ - Find next - - - %SL - 001 - S - Mail recipient - - - &ABC - 001 - S - ABC Analysis - - - &ALL - 001 - S - ICON_SELECT_ALL - @4B@ - Select all - - - &AQW - 001 - S - Word processing... - - - &AVE - 001 - S - ICON_ALV_VARIANT_SAVE - @DN@ - Save layout... - - - &CRB - 001 - S - ICON_TOTAL_LEFT - @0B@ - First Column - - - &CRE - 001 - S - ICON_TOTAL_RIGHT - @0C@ - Last column - - - &CRL - 001 - S - ICON_COLUMN_LEFT - @0D@ - Column left - - - &CRR - 001 - S - ICON_COLUMN_RIGHT - @0E@ - Column right - - - &EB9 - 001 - S - ICON_TABLE_SETTINGS - @36@ - Call Up Report - - - &ETA - 001 - S - ICON_SELECT_DETAIL - @16@ - Details - - - &F03 - 001 - S - Back - - - &F12 - 001 - S - ICON_CANCEL - @0W@ - Cancel - - - &F15 - 001 - S - Exit - - - &IC1 - 001 - S - ICON_SELECT_DETAIL - @16@ - Choose - S - - - &ILD - 001 - S - ICON_FILTER_UNDO - @GD@ - Delete Filter - - - &ILT - 001 - S - ICON_FILTER - @4G@ - Set filter - - - &LFO - 001 - S - ICON_INFORMATION - @0S@ - List status... - - - &NFO - 001 - S - ICON_INFORMATION - @0S@ - Selections... - Selections - - - &NTE - 001 - S - Refresh - - - &OAD - 001 - S - ICON_ALV_VARIANT_CHOOSE - @DM@ - Select layout... - - - &ODN - 001 - S - ICON_SORT_DOWN - @3F@ - Sort in descendin. - - - &OL0 - 001 - S - ICON_ALV_VARIANTS - @LZ@ - Change layout... - - - &OMP - 001 - S - Collapse - - - &OUP - 001 - S - ICON_SORT_UP - @3E@ - Sort in Ascending... - - - &RNT - 001 - S - ICON_PRINT - @0X@ - Print - - - &RNT_PREV - 001 - S - Print preview - - - &SAL - 001 - S - ICON_DESELECT_ALL - @4D@ - Deselect all - - - &SUM - 001 - S - ICON_INTERMEDIATE_SUM - @5V@ - Subtotals... - - - &UMC - 001 - S - ICON_SUM - @3Z@ - Total - - - &XML - 001 - S - XML Export... - - - &XPA - 001 - S - Expand - - - &XXL - 001 - S - Spreadsheet... - - - EXCEL - 001 - S - ICON_XLV - @J3@ - Excel - Export to Excel - Export to Excel - - - P - 001 - S - First Page - - - P+ - 001 - S - ICON_NEXT_PAGE - @30@ - Next page - - - P++ - 001 - S - ICON_LAST_PAGE - @31@ - Last Page - - - P- - 001 - S - ICON_PREVIOUS_PAGE - @2Z@ - Previous Page - - - P-- - 001 - S - ICON_FIRST_PAGE - @2Y@ - First Page - - - - - 000001 - S - List - - - 000002 - S - Edit - - - 000003 - S - Goto - - - 000004 - S - Settings - - - - - 000001 - 01 - 000001 - - - 000001 - 02 - 000002 - - - 000001 - 03 - 000003 - - - 000001 - 04 - 000004 - - - - - 000001 - 0001 - 01 - 39 - - - 000001 - 0001 - 02 - 37 - - - 000001 - 0001 - 04 - 05 - - - 000001 - 0001 - 05 - 06 - - - 000001 - 0001 - 07 - 28 - - - 000001 - 0001 - 08 - 40 - - - 000001 - 0001 - 09 - 29 - - - 000001 - 0001 - 10 - 38 - - - 000001 - 0001 - 12 - 30 - - - 000001 - 0001 - 13 - 42 - - - 000001 - 0001 - 15 - 45 - - - 000001 - 0001 - 17 - 32 - - - 000001 - 0001 - 18 - 33 - - - 000001 - 0001 - 19 - 34 - - - 000001 - 0001 - 20 - 09 - - - 000001 - 0001 - 22 - 41 - - - 000001 - 0001 - 23 - 07 - - - 000001 - 0001 - 25 - 18 - - - 000001 - 0001 - 26 - 26 - - - 000001 - 0001 - 27 - 27 - - - 000001 - 0001 - 28 - 19 - - - - - 000001 - 02 - &IC1 - 001 - - - 000001 - 03 - &F03 - 001 - - - 000001 - 05 - &ALL - 001 - - - 000001 - 06 - &SAL - 001 - - - 000001 - 07 - &NFO - 001 - - - 000001 - 08 - &NTE - 001 - - - 000001 - 09 - EXCEL - 001 - - - 000001 - 12 - &F12 - 001 - - - 000001 - 15 - &F15 - 001 - - - 000001 - 18 - &CRB - 001 - - - 000001 - 19 - &CRE - 001 - - - 000001 - 21 - P - 001 - - - 000001 - 22 - P- - 001 - - - 000001 - 23 - P+ - 001 - - - 000001 - 24 - P++ - 001 - - - 000001 - 25 - &ABC - 001 - - - 000001 - 26 - &CRL - 001 - - - 000001 - 27 - &CRR - 001 - - - 000001 - 28 - &OUP - 001 - - - 000001 - 29 - &ILT - 001 - - - 000001 - 30 - &UMC - 001 - - - 000001 - 31 - %SL - 001 - - - 000001 - 32 - &OL0 - 001 - - - 000001 - 33 - &OAD - 001 - - - 000001 - 34 - &AVE - 001 - - - 000001 - 35 - &XPA - 001 - - - 000001 - 37 - &EB9 - 001 - - - 000001 - 38 - &ILD - 001 - - - 000001 - 39 - &ETA - 001 - - - 000001 - 40 - &ODN - 001 - - - 000001 - 41 - &LFO - 001 - - - 000001 - 42 - &SUM - 001 - - - 000001 - 43 - &XXL - 001 - - - 000001 - 44 - &AQW - 001 - - - 000001 - 45 - %PC - 001 - - - 000001 - 46 - &RNT_PREV - 001 - - - 000001 - 47 - &OMP - 001 - - - 000001 - 48 - &XML - 001 - - - 000001 - 71 - %SC - 001 - - - 000001 - 80 - P-- - 001 - - - 000001 - 81 - P- - 001 - - - 000001 - 82 - P+ - 001 - - - 000001 - 83 - P++ - 001 - - - 000001 - 84 - %SC+ - 001 - - - 000001 - 86 - &RNT - 001 - - - - - ALV_STATUS - %PC - - - ALV_STATUS - %SC - - - ALV_STATUS - %SC+ - - - ALV_STATUS - %SL - - - ALV_STATUS - &ABC - - - ALV_STATUS - &ALL - - - ALV_STATUS - &AQW - - - ALV_STATUS - &AVE - - - ALV_STATUS - &CRB - - - ALV_STATUS - &CRE - - - ALV_STATUS - &CRL - - - ALV_STATUS - &CRR - - - ALV_STATUS - &EB9 - - - ALV_STATUS - &ETA - - - ALV_STATUS - &F03 - - - ALV_STATUS - &F12 - - - ALV_STATUS - &F15 - - - ALV_STATUS - &IC1 - - - ALV_STATUS - &ILD - - - ALV_STATUS - &ILT - - - ALV_STATUS - &LFO - - - ALV_STATUS - &NFO - - - ALV_STATUS - &NTE - - - ALV_STATUS - &OAD - - - ALV_STATUS - &ODN - - - ALV_STATUS - &OL0 - - - ALV_STATUS - &OMP - - - ALV_STATUS - &OUP - - - ALV_STATUS - &RNT - - - ALV_STATUS - &RNT_PREV - - - ALV_STATUS - &SAL - - - ALV_STATUS - &SUM - - - ALV_STATUS - &UMC - - - ALV_STATUS - &XML - - - ALV_STATUS - &XPA - - - ALV_STATUS - &XXL - - - ALV_STATUS - EXCEL - - - ALV_STATUS - P - - - ALV_STATUS - P+ - - - ALV_STATUS - P++ - - - ALV_STATUS - P- - - - ALV_STATUS - P-- - - - - - A - 000001 - D - Standard for General List Output - - - P - 000001 - D - Standard for General List Output - - - B - 000001 - 0001 - D - Standard for General List Output - - - - - - R - abap2xlsx Demo: Test Excel Reader (Now in ZDEMO_EXCEL15) - 56 - - - - - diff --git a/src/demos/zdemo_excel27.prog.abap b/src/demos/zdemo_excel27.prog.abap deleted file mode 100644 index 8ffbeb1..0000000 --- a/src/demos/zdemo_excel27.prog.abap +++ /dev/null @@ -1,229 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL27 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel27. - -CLASS lcl_app DEFINITION. - PUBLIC SECTION. - METHODS main - RAISING - zcx_excel. - PRIVATE SECTION. - METHODS conditional_formatting_cellis - IMPORTING - column TYPE simple - row TYPE zexcel_cell_row - rule TYPE zexcel_condition_rule - op TYPE zexcel_condition_operator - f TYPE zexcel_style_formula - f2 TYPE zexcel_style_formula - numfmt TYPE string - RAISING - zcx_excel. - METHODS conditional_formatting_textfun - IMPORTING - column TYPE simple - row TYPE zexcel_cell_row - txtfun TYPE zcl_excel_style_cond=>tv_textfunction - text TYPE string - numfmt TYPE string - RAISING - zcx_excel. -ENDCLASS. - -CONSTANTS: c_fish TYPE string VALUE 'Fish'. - -DATA: lo_app TYPE REF TO lcl_app. -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_style_1 TYPE REF TO zcl_excel_style, - lo_style_2 TYPE REF TO zcl_excel_style, - lv_style_1_guid TYPE zexcel_cell_style, - lv_style_2_guid TYPE zexcel_cell_style, - lv_style_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_textfunction TYPE zcl_excel_style_cond=>ts_conditional_textfunction. - - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '27_ConditionalFormatting.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - DATA: lo_error TYPE REF TO zcx_excel, - lv_message TYPE string. - - CREATE OBJECT lo_app. - TRY. - lo_app->main( ). - CATCH zcx_excel INTO lo_error. - lv_message = lo_error->get_text( ). - MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. - ENDTRY. - - -CLASS lcl_app IMPLEMENTATION. - - METHOD main. - - DATA: - lo_style_cond TYPE REF TO zcl_excel_style_cond, - lo_style TYPE REF TO zcl_excel_style. - - " Creates active sheet - CREATE OBJECT lo_excel. - - lo_style_1 = lo_excel->add_new_style( ). - lo_style_1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_1->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_1_guid = lo_style_1->get_guid( ). - - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_2->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_2_guid = lo_style_2->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Conditional formatting'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = 'Select a value' ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_cellis. - ls_cellis-formula = '"Anchovy"'. - ls_cellis-operator = zcl_excel_style_cond=>c_operator_equal. - ls_cellis-cell_style = lv_style_1_guid. - lo_style_cond->mode_cellis = ls_cellis. - lo_style_cond->priority = 1. - lo_style_cond->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_cellis. - ls_cellis-formula = '"Carp"'. - ls_cellis-operator = zcl_excel_style_cond=>c_operator_equal. - ls_cellis-cell_style = lv_style_2_guid. - lo_style_cond->mode_cellis = ls_cellis. - lo_style_cond->priority = 2. - lo_style_cond->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). - - " Conditional formatting for all operators - conditional_formatting_cellis( column = 'C' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_equal f = '="Anchovy"' f2 = '' numfmt = 'equal to Anchovy' ). - conditional_formatting_cellis( column = 'C' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_equal f = '="Anchovy"' f2 = '' numfmt = 'equal to Anchovy' ). - conditional_formatting_cellis( column = 'D' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_notequal f = '="Anchovy"' f2 = '' numfmt = 'not equal to Anchovy' ). - conditional_formatting_cellis( column = 'E' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_between f = '="B"' f2 = '="CC"' numfmt = 'between B and CC' ). - conditional_formatting_cellis( column = 'F' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_greaterthan f = '="Catfish"' f2 = '' numfmt = 'greater than Catfish' ). - conditional_formatting_cellis( column = 'G' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_greaterthanorequal f = '="Catfish"' f2 = '' numfmt = 'greater than or equal to Catfish' ). - conditional_formatting_cellis( column = 'H' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_lessthan f = '="Catfish"' f2 = '' numfmt = 'less than Catfish' ). - conditional_formatting_cellis( column = 'I' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_lessthanorequal f = '="Catfish"' f2 = '' numfmt = 'less than or equal to Catfish' ). - - " Conditional formatting for all text functions - conditional_formatting_textfun( column = 'C' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_beginswith text = 'A' numfmt = 'begins with A' ). - conditional_formatting_textfun( column = 'D' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_containstext text = 'h' numfmt = 'contains text h' ). - conditional_formatting_textfun( column = 'E' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_endswith text = 'p' numfmt = 'ends with p' ). - conditional_formatting_textfun( column = 'F' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_notcontains text = 'h' numfmt = 'not contains h' ). - -*** Create output - lcl_output=>output( lo_excel ). - - ENDMETHOD. - - - METHOD conditional_formatting_cellis. - - DATA: - lo_style TYPE REF TO zcl_excel_style, - lo_style_cond TYPE REF TO zcl_excel_style_cond. - - lo_style = lo_excel->add_new_style( ). - lo_style->font->color-rgb = zcl_excel_style_color=>c_white. - lo_style->number_format->format_code = '@\ "' && numfmt && '"'. - lo_style->alignment->wraptext = abap_true. - lv_style_guid = lo_style->get_guid( ). - - lo_worksheet->set_cell( ip_row = row ip_column = column ip_formula = '$C$2' ip_style = lv_style_guid ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = rule. - ls_cellis-operator = op. - ls_cellis-formula = f. - ls_cellis-formula2 = f2. - ls_cellis-cell_style = lv_style_1_guid. - lo_style_cond->mode_cellis = ls_cellis. - lo_style_cond->priority = 1. - lo_style_cond->set_range( ip_start_column = column - ip_start_row = row - ip_stop_column = column - ip_stop_row = row ). - - ENDMETHOD. - - - METHOD conditional_formatting_textfun. - - DATA: - lo_style TYPE REF TO zcl_excel_style, - lo_style_cond TYPE REF TO zcl_excel_style_cond. - - lo_style = lo_excel->add_new_style( ). - lo_style->font->color-rgb = zcl_excel_style_color=>c_white. - lo_style->number_format->format_code = '@\ "' && numfmt && '"'. - lo_style->alignment->wraptext = abap_true. - lv_style_guid = lo_style->get_guid( ). - - lo_worksheet->set_cell( ip_row = row ip_column = column ip_formula = '$C$2' ip_style = lv_style_guid ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_textfunction. - ls_textfunction-textfunction = txtfun. - ls_textfunction-text = text. - ls_textfunction-cell_style = lv_style_1_guid. - lo_style_cond->mode_textfunction = ls_textfunction. - lo_style_cond->priority = 1. - lo_style_cond->set_range( ip_start_column = column - ip_start_row = row - ip_stop_column = column - ip_stop_row = row ). - - ENDMETHOD. - - -ENDCLASS. diff --git a/src/demos/zdemo_excel27.prog.xml b/src/demos/zdemo_excel27.prog.xml deleted file mode 100644 index df5b9d2..0000000 --- a/src/demos/zdemo_excel27.prog.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - ZDEMO_EXCEL27 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Data conditional formatting with styles - 56 - - - S - P_PATH - . - 24 - D - - - S - P_READER - Write back after using Reader - 37 - - - - - diff --git a/src/demos/zdemo_excel28.prog.abap b/src/demos/zdemo_excel28.prog.abap deleted file mode 100644 index 2cd4ec0..0000000 --- a/src/demos/zdemo_excel28.prog.abap +++ /dev/null @@ -1,105 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL28 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel28. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column TYPE REF TO zcl_excel_column. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '28_HelloWorld.csv'. - -PARAMETERS: p_path TYPE string. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = p_path - CHANGING selected_folder = p_path ). - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - - lo_column = lo_worksheet->get_column( 'B' ). - lo_column->set_width( 11 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_csv. - zcl_excel_writer_csv=>set_delimiter( ip_value = cl_abap_char_utilities=>horizontal_tab ). - zcl_excel_writer_csv=>set_enclosure( ip_value = '''' ). - zcl_excel_writer_csv=>set_endofline( ip_value = cl_abap_char_utilities=>cr_lf ). - - zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). - - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - REPLACE FIRST OCCURRENCE OF '.csv' IN lv_full_path WITH '_Sheet2.csv'. - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - - zcl_excel_writer_csv=>set_active_sheet_index_by_name( i_worksheet_name = 'Sheet1' ). - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE FIRST OCCURRENCE OF '_Sheet2.csv' IN lv_full_path WITH '_Sheet1.csv'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_excel28.prog.xml b/src/demos/zdemo_excel28.prog.xml deleted file mode 100644 index 88151f5..0000000 --- a/src/demos/zdemo_excel28.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZDEMO_EXCEL28 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: export in CSV - 29 - - - - - diff --git a/src/demos/zdemo_excel29.prog.abap b/src/demos/zdemo_excel29.prog.abap deleted file mode 100644 index c5a092d..0000000 --- a/src/demos/zdemo_excel29.prog.abap +++ /dev/null @@ -1,163 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL29 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel29. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_excel_reader TYPE REF TO zif_excel_reader. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_filename TYPE string, - lv_workdir TYPE string. -DATA: lv_separator TYPE c LENGTH 1. - -SELECTION-SCREEN COMMENT /1(83) p_text1. -SELECTION-SCREEN COMMENT /1(83) p_text2. -SELECTION-SCREEN SKIP 1. - -PARAMETERS: p_smw0 RADIOBUTTON GROUP rad1 DEFAULT 'X'. -PARAMETERS: p_objid TYPE w3objid OBLIGATORY DEFAULT 'ZDEMO_EXCEL29_INPUT'. - -PARAMETERS: p_file RADIOBUTTON GROUP rad1. -PARAMETERS: p_path TYPE zexcel_export_dir. - -LOAD-OF-PROGRAM. - p_text1 = 'abap2xlsx works with VBA macro by using an existing VBA binary.'. - p_text2 = '(we do not want to create a VBA editor).'. - -AT SELECTION-SCREEN OUTPUT. - IF p_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_separator ). - p_path = lv_workdir && lv_separator && 'TestMacro.xlsm'. - ENDIF. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - - DATA: lt_filetable TYPE filetable, - lv_rc TYPE i. - - CALL METHOD cl_gui_frontend_services=>file_open_dialog - EXPORTING - window_title = 'Select Macro-Enabled Workbook template' - default_extension = '*.xlsm' - file_filter = 'Excel Macro-Enabled Workbook (*.xlsm)|*.xlsm' - initial_directory = lv_workdir - CHANGING - file_table = lt_filetable - rc = lv_rc - EXCEPTIONS - file_open_dialog_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - OTHERS = 5. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - READ TABLE lt_filetable INTO lv_filename INDEX 1. - p_path = lv_filename. - -START-OF-SELECTION. - - lv_full_path = p_path. - - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_xlsm. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_xlsm. -* load template - IF p_file IS NOT INITIAL. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - ELSE. - PERFORM load_smw0 USING lo_excel_reader p_objid CHANGING lo_excel. - ENDIF. - lv_file = lo_excel_writer->write_file( lo_excel ). - REPLACE '.xlsm' IN lv_full_path WITH 'FromReader.xlsm'. - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - -FORM load_smw0 - USING - io_reader TYPE REF TO zif_excel_reader - iv_w3objid TYPE w3objid - CHANGING - ro_excel TYPE REF TO zcl_excel - RAISING - zcx_excel. - - DATA: lv_excel_data TYPE xstring, - lt_mime TYPE TABLE OF w3mime, - ls_key TYPE wwwdatatab, - lv_errormessage TYPE string, - lv_filesize TYPE i, - lv_filesizec TYPE c LENGTH 10. - -*--------------------------------------------------------------------* -* Read file into binary string -*--------------------------------------------------------------------* - - ls_key-relid = 'MI'. - ls_key-objid = iv_w3objid . - - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_key - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the MIME object'(004). - zcx_excel=>raise_text( lv_errormessage ). - ENDIF. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = ls_key-relid - objid = ls_key-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. - - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = lv_excel_data - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - -*--------------------------------------------------------------------* -* Parse Excel data into ZCL_EXCEL object from binary string -*--------------------------------------------------------------------* - ro_excel = io_reader->load( i_excel2007 = lv_excel_data ). - -ENDFORM. diff --git a/src/demos/zdemo_excel29.prog.xml b/src/demos/zdemo_excel29.prog.xml deleted file mode 100644 index 70525a5..0000000 --- a/src/demos/zdemo_excel29.prog.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - ZDEMO_EXCEL29 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Macro-Enabled workbook - 38 - - - S - P_FILE - Load template from file - 31 - - - S - P_OBJID - Object ID - 17 - - - S - P_PATH - Macro-enabled Workbook - 30 - - - S - P_SMW0 - Load template from SMW0 - 31 - - - - - diff --git a/src/demos/zdemo_excel3.prog.abap b/src/demos/zdemo_excel3.prog.abap deleted file mode 100644 index 1c4f24e..0000000 --- a/src/demos/zdemo_excel3.prog.abap +++ /dev/null @@ -1,198 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel3. - -TYPES: ty_sflight_lines TYPE TABLE OF sflight, - ty_scarr_lines TYPE TABLE OF scarr. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column TYPE REF TO zcl_excel_column. - -DATA: ls_table_settings TYPE zexcel_s_table_settings. - - -DATA: lv_title TYPE zexcel_sheet_title, - lt_carr TYPE ty_scarr_lines, - row TYPE zexcel_cell_row VALUE 2, - ls_error TYPE zcl_excel_worksheet=>mty_s_ignored_errors, - lt_error TYPE zcl_excel_worksheet=>mty_th_ignored_errors, - lo_range TYPE REF TO zcl_excel_range. -DATA: lo_data_validation TYPE REF TO zcl_excel_data_validation. -FIELD-SYMBOLS: LIKE LINE OF lt_carr. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '03_iTab.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_empty TYPE flag. -PARAMETERS: p_checkr NO-DISPLAY TYPE abap_bool. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table' ). - - DATA lt_test TYPE ty_sflight_lines. - - IF p_empty <> abap_true. - IF p_checkr = abap_true. - PERFORM load_fixed_data_for_checker CHANGING lt_test. - ELSE. - SELECT * FROM sflight INTO TABLE lt_test. "#EC CI_NOWHERE - ENDIF. - ENDIF. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-show_row_stripes = abap_true. - ls_table_settings-nofilters = abap_true. - - lo_worksheet->bind_table( ip_table = lt_test - is_table_settings = ls_table_settings ). - - IF p_checkr = abap_true. - PERFORM set_column_headers USING lo_worksheet - 'Airline;Flight Number;Date;Airfare;Airline Currency;Plane Type;Max. capacity econ.;Occupied econ.;Total;Max. capacity bus.;Occupied bus.;Max. capacity 1st;Occupied 1st'. - ENDIF. - - lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - IF lines( lt_test ) >= 1. - ls_error-cell_coords = |B2:B{ lines( lt_test ) + 1 }|. - ls_error-number_stored_as_text = abap_true. - INSERT ls_error INTO TABLE lt_error. - lo_worksheet->set_ignored_errors( lt_error ). - ENDIF. - - lo_column = lo_worksheet->get_column( ip_column = 'E' ). "make date field a bit wider - lo_column->set_width( ip_width = 11 ). - " Add another table for data validations - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = c_airlines ). - IF p_checkr = abap_true. - PERFORM load_scarr_data_for_checker CHANGING lt_carr. - ELSE. - SELECT * FROM scarr INTO TABLE lt_carr. "#EC CI_NOWHERE - ENDIF. - LOOP AT lt_carr ASSIGNING . - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = -carrid ). - row = row + 1. - ENDLOOP. - row = row - 1. - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_airlines. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 2 - ip_stop_column = 'A' - ip_stop_row = row ). - " Set Data Validation - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_airlines. - lo_data_validation->cell_row = 4. - lo_data_validation->cell_column = 'C'. - -*** Create output - lcl_output=>output( lo_excel ). - - - -FORM load_fixed_data_for_checker CHANGING ct_test TYPE ty_sflight_lines. - DATA: lt_lines TYPE TABLE OF string. - - APPEND 'AA;0017;20171219; 422;USD;747-400 ;385;371;191334;31;28;21;21' TO lt_lines. - APPEND 'AA;0017;20180309; 422;USD;747-400 ;385;365;189984;31;29;21;20' TO lt_lines. - APPEND 'AA;0017;20180528; 422;USD;747-400 ;385;374;193482;31;30;21;20' TO lt_lines. - APPEND 'AA;0017;20180816; 422;USD;747-400 ;385;372;193127;31;30;21;20' TO lt_lines. - APPEND 'AA;0017;20181104; 422;USD;747-400 ;385; 44; 23908;31; 4;21; 3' TO lt_lines. - APPEND 'AA;0017;20190123; 422;USD;747-400 ;385; 40; 20347;31; 3;21; 2' TO lt_lines. - APPEND 'AZ;0555;20171219; 185;EUR;737-800 ;140;133; 32143;12;12;10;10' TO lt_lines. - APPEND 'AZ;0555;20180309; 185;EUR;737-800 ;140;137; 32595;12;12;10;10' TO lt_lines. - APPEND 'AZ;0555;20180528; 185;EUR;737-800 ;140;134; 31899;12;11;10;10' TO lt_lines. - APPEND 'AZ;0555;20180816; 185;EUR;737-800 ;140;128; 29775;12;10;10; 9' TO lt_lines. - APPEND 'AZ;0555;20181104; 185;EUR;737-800 ;140; 0; 0;12; 0;10; 0' TO lt_lines. - APPEND 'AZ;0555;20190123; 185;EUR;737-800 ;140; 23; 5392;12; 1;10; 2' TO lt_lines. - APPEND 'AZ;0789;20171219;1030;EUR;767-200 ;260;250;307176;21;20;11;11' TO lt_lines. - APPEND 'AZ;0789;20180309;1030;EUR;767-200 ;260;252;306054;21;20;11;10' TO lt_lines. - APPEND 'AZ;0789;20180528;1030;EUR;767-200 ;260;252;307063;21;20;11;10' TO lt_lines. - APPEND 'AZ;0789;20180816;1030;EUR;767-200 ;260;249;300739;21;19;11;10' TO lt_lines. - APPEND 'AZ;0789;20181104;1030;EUR;767-200 ;260;104;127647;21; 8;11; 5' TO lt_lines. - APPEND 'AZ;0789;20190123;1030;EUR;767-200 ;260; 18; 22268;21; 1;11; 1' TO lt_lines. - APPEND 'DL;0106;20171217; 611;USD;A380-800;475;458;324379;30;29;20;20' TO lt_lines. - APPEND 'DL;0106;20180307; 611;USD;A380-800;475;458;324330;30;30;20;20' TO lt_lines. - APPEND 'DL;0106;20180526; 611;USD;A380-800;475;459;328149;30;29;20;20' TO lt_lines. - APPEND 'DL;0106;20180814; 611;USD;A380-800;475;462;326805;30;30;20;18' TO lt_lines. - APPEND 'DL;0106;20181102; 611;USD;A380-800;475;167;115554;30;10;20; 6' TO lt_lines. - APPEND 'DL;0106;20190121; 611;USD;A380-800;475; 11; 9073;30; 1;20; 1' TO lt_lines. - - PERFORM load_data USING lt_lines CHANGING ct_test. -ENDFORM. - -FORM load_scarr_data_for_checker CHANGING ct_scarr TYPE ty_scarr_lines. - DATA: lt_lines TYPE TABLE OF string. - - APPEND 'AA;American Airlines;USD;http://www.aa.com ' TO lt_lines. - APPEND 'AZ;Alitalia ;EUR;http://www.alitalia.it ' TO lt_lines. - APPEND 'DL;Delta Airlines ;USD;http://www.delta-air.com' TO lt_lines. - - PERFORM load_data USING lt_lines CHANGING ct_scarr. -ENDFORM. - -FORM load_data USING it_data TYPE table CHANGING ct_data TYPE table. - DATA: lv_line TYPE string, - lt_fields TYPE TABLE OF string, - lv_comp TYPE i, - lv_field TYPE string, - lv_ref_line TYPE REF TO data. - FIELD-SYMBOLS: - TYPE simple, - TYPE any. - - CREATE DATA lv_ref_line LIKE LINE OF ct_data. - ASSIGN lv_ref_line->* TO . - - LOOP AT it_data INTO lv_line. - CLEAR . - SPLIT lv_line AT ';' INTO TABLE lt_fields. - lv_comp = 2. - LOOP AT lt_fields INTO lv_field. - ASSIGN COMPONENT lv_comp OF STRUCTURE TO . - = lv_field. - lv_comp = lv_comp + 1. - ENDLOOP. - APPEND TO ct_data. - ENDLOOP. -ENDFORM. - -FORM set_column_headers - USING io_worksheet TYPE REF TO zcl_excel_worksheet - iv_headers TYPE csequence - RAISING zcx_excel. - - DATA: lt_headers TYPE TABLE OF string, - lv_header TYPE string, - lv_tabix TYPE i. - - SPLIT iv_headers AT ';' INTO TABLE lt_headers. - LOOP AT lt_headers INTO lv_header. - lv_tabix = sy-tabix. - io_worksheet->set_cell( ip_row = 1 ip_column = lv_tabix ip_value = lv_header ). - ENDLOOP. - -ENDFORM. diff --git a/src/demos/zdemo_excel3.prog.xml b/src/demos/zdemo_excel3.prog.xml deleted file mode 100644 index bb1a054..0000000 --- a/src/demos/zdemo_excel3.prog.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - ZDEMO_EXCEL3 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Export internal table - 38 - - - S - P_EMPTY - Leave Table Empty - 25 - - - S - P_PATH - . - 24 - D - - - - - diff --git a/src/demos/zdemo_excel30.prog.abap b/src/demos/zdemo_excel30.prog.abap deleted file mode 100644 index d36baf8..0000000 --- a/src/demos/zdemo_excel30.prog.abap +++ /dev/null @@ -1,96 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel30. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_column TYPE REF TO zcl_excel_column. - - -DATA: lv_value TYPE string, - lv_count TYPE i VALUE 10, - lv_packed TYPE p LENGTH 16 DECIMALS 1 VALUE '1234567890.5'. - -CONSTANTS: lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string, - lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed, - lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num, - lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date, - lc_typekind_s_ls TYPE string VALUE 's_leading_blanks'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '30_CellDataTypes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Cell data types' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Number as String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = '11' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = ' String with leading spaces' - ip_data_type = lc_typekind_s_ls ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = ' Negative Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.01-' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = '0 %' - ip_abap_type = lc_typekind_num ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = 'Date' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = '20110831' - ip_abap_type = lc_typekind_date ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value' - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.02' - ip_abap_type = lc_typekind_packed ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %' - ip_abap_type = lc_typekind_num ). - - WHILE lv_count <= 15. - lv_value = lv_count. - CONCATENATE 'Positive Value with' lv_value 'Digits' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_packed ). - CONCATENATE 'Positive Value with' lv_value 'Digits formated as string' INTO lv_value SEPARATED BY space. - lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_count ip_value = lv_value - ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_count ip_value = lv_packed - ip_abap_type = lc_typekind_string ). - lv_packed = lv_packed * 10. - lv_count = lv_count + 1. - ENDWHILE. - - lo_column = lo_worksheet->get_column( ip_column = 'A' ). - lo_column->set_auto_size( abap_true ). - lo_column = lo_worksheet->get_column( ip_column = 'B' ). - lo_column->set_auto_size( abap_true ). - lo_column = lo_worksheet->get_column( ip_column = 'C' ). - lo_column->set_auto_size( abap_true ). - lo_column = lo_worksheet->get_column( ip_column = 'D' ). - lo_column->set_auto_size( abap_true ). - lo_column = lo_worksheet->get_column( ip_column = 'E' ). - lo_column->set_auto_size( abap_true ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel30.prog.xml b/src/demos/zdemo_excel30.prog.xml deleted file mode 100644 index c686fa3..0000000 --- a/src/demos/zdemo_excel30.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL30 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: ABAP Cell data types - 37 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel31.prog.abap b/src/demos/zdemo_excel31.prog.abap deleted file mode 100644 index dfcae8e..0000000 --- a/src/demos/zdemo_excel31.prog.abap +++ /dev/null @@ -1,160 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel31. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_column TYPE REF TO zcl_excel_column. - - -DATA: fieldval TYPE text80, - row TYPE i, - style_column_a TYPE REF TO zcl_excel_style, - style_column_a_guid TYPE zexcel_cell_style, - style_column_b TYPE REF TO zcl_excel_style, - style_column_b_guid TYPE zexcel_cell_style, - style_column_c TYPE REF TO zcl_excel_style, - style_column_c_guid TYPE zexcel_cell_style, - style_font TYPE REF TO zcl_excel_style_font. - -CONSTANTS: gc_save_file_name TYPE string VALUE '31_AutosizeWithDifferentFontSizes.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - " Use active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Regular Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a_guid = style_column_a->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c_guid = style_column_c->get_guid( ). - - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - lo_column = lo_worksheet->get_column( 'A' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( 'B' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( 'C' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->calculate_column_widths( ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Bold Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->bold = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->bold = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->bold = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - lo_column = lo_worksheet->get_column( 'A' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( 'B' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( 'C' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->calculate_column_widths( ). - - " Add sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Italic Font' ). - - style_column_a = lo_excel->add_new_style( ). - style_column_a->font->size = 32. " quite large - style_column_a->font->italic = abap_true. - style_column_a_guid = style_column_a->get_guid( ). - - style_column_b = lo_excel->add_new_style( ). - style_column_b->font->italic = abap_true. - style_column_b_guid = style_column_b->get_guid( ). - - style_column_c = lo_excel->add_new_style( ). - style_column_c->font->size = 16. " not so large - style_column_c->font->italic = abap_true. - style_column_c_guid = style_column_c->get_guid( ). - - DO 20 TIMES. - row = sy-index. - CLEAR fieldval. - DO sy-index TIMES. - CONCATENATE fieldval 'X' INTO fieldval. - ENDDO. - lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). - ENDDO. - - lo_column = lo_worksheet->get_column( 'A' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( 'B' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( 'C' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_worksheet->calculate_column_widths( ). - - " Add sheet for merged cells - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Merged cells' ). - - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'This is a very long header text' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = 'Some data' ). - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Some more data' ). - - lo_worksheet->set_merge( - EXPORTING - ip_column_start = 'A' - ip_column_end = 'C' - ip_row = 1 ). - - lo_column = lo_worksheet->get_column( 'A' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - - lo_excel->set_active_sheet_index( i_active_worksheet = 1 ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel31.prog.xml b/src/demos/zdemo_excel31.prog.xml deleted file mode 100644 index e11aa28..0000000 --- a/src/demos/zdemo_excel31.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL31 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Autosize Column with different Font sizes - 58 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel32.prog.abap b/src/demos/zdemo_excel32.prog.abap deleted file mode 100644 index 0a16bca..0000000 --- a/src/demos/zdemo_excel32.prog.abap +++ /dev/null @@ -1,232 +0,0 @@ -*--------------------------------------------------------------------* -* REPORT ZDEMO_EXCEL32 -* Demo for export options from ALV GRID: -* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object -* to Excel. -*--------------------------------------------------------------------* -REPORT zdemo_excel32. - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events DEFINITION. - PUBLIC SECTION. - METHODS: - on_user_command FOR EVENT added_function OF cl_salv_events - IMPORTING e_salv_function. -ENDCLASS. "lcl_handle_events DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_handle_events IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_handle_events IMPLEMENTATION. - METHOD on_user_command. - PERFORM user_command." using e_salv_function text-i08. - ENDMETHOD. "on_user_command -ENDCLASS. "lcl_handle_events IMPLEMENTATION - -*--------------------------------------------------------------------* -* DATA DECLARATION -*--------------------------------------------------------------------* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook. - -DATA: l_path TYPE string, " local dir - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: - lv_default_file_name TYPE string VALUE '32_Export_ALV.xlsx', - lv_default_file_name2 TYPE string VALUE '32_Export_Convert.xlsx'. -*--------------------------------------------------------------------* -*START-OF-SELECTION -*--------------------------------------------------------------------* - -START-OF-SELECTION. - -* get data -* ------------------------------------------ - - SELECT * - INTO TABLE gt_sbook[] - FROM sbook "#EC CI_NOWHERE - UP TO 100 ROWS. - -* Display ALV -* ------------------------------------------ - - TRY. - cl_salv_table=>factory( - EXPORTING - list_display = abap_false - IMPORTING - r_salv_table = lo_salv - CHANGING - t_table = gt_sbook[] ). - CATCH cx_salv_msg . - ENDTRY. - - TRY. - lo_salv->set_screen_status( - EXPORTING - report = sy-repid - pfstatus = 'ALV_STATUS' - set_functions = lo_salv->c_functions_all ). - CATCH cx_salv_msg . - ENDTRY. - - lr_events = lo_salv->get_event( ). - CREATE OBJECT gr_events. - SET HANDLER gr_events->on_user_command FOR lr_events. - - lo_salv->display( ). - - -*&---------------------------------------------------------------------* -*& Form USER_COMMAND -*&---------------------------------------------------------------------* -* ALV user command -*--------------------------------------------------------------------* -FORM user_command . - DATA: lo_error TYPE REF TO zcx_excel, - lv_message TYPE string. - -* get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). - - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. - - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). - - - -* export file to save file path - TRY. - CASE sy-ucomm. - WHEN 'EXCELBIND'. - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - PERFORM export_to_excel_bind. - - WHEN 'EXCELCONV'. - - CONCATENATE l_path lv_file_separator lv_default_file_name2 - INTO l_path. - PERFORM export_to_excel_conv. - - ENDCASE. - - CATCH zcx_excel INTO lo_error. - lv_message = lo_error->get_text( ). - MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. - ENDTRY. - -ENDFORM. " USER_COMMAND -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_CONV -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_conv RAISING zcx_excel. - DATA: lo_converter TYPE REF TO zcl_excel_converter. - - CREATE OBJECT lo_converter. - lo_converter->convert( - EXPORTING - io_alv = lo_salv - it_table = gt_sbook - i_row_int = 2 - i_column_int = 2 ). - lo_converter->write_file( i_path = l_path ). - -ENDFORM. "EXPORT_TO_EXCEL_CONV - -*--------------------------------------------------------------------* -* FORM EXPORT_TO_EXCEL_BIND -*--------------------------------------------------------------------* -* This subroutine is principal demo session -*--------------------------------------------------------------------* -FORM export_to_excel_bind RAISING zcx_excel. -* create zcl_excel_worksheet object - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - -* write to excel using method Bin_object - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). - - PERFORM write_file. - -ENDFORM. "EXPORT_TO_EXCEL_BIND -*&---------------------------------------------------------------------* -*& Form WRITE_FILE -*&---------------------------------------------------------------------* -* text -*----------------------------------------------------------------------* -* --> p1 text -* <-- p2 text -*----------------------------------------------------------------------* -FORM write_file RAISING zcx_excel. - DATA: lt_file TYPE solix_tab, - l_bytecount TYPE i, - l_file TYPE xstring. - - DATA: lo_excel_writer TYPE REF TO zif_excel_writer. - - DATA: ls_seoclass TYPE seoclass. - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - l_file = lo_excel_writer->write_file( lo_excel ). - - SELECT SINGLE * INTO ls_seoclass - FROM seoclass - WHERE clsname = 'CL_BCS_CONVERT'. - - IF sy-subrc = 0. - CALL METHOD (ls_seoclass-clsname)=>xstring_to_solix - EXPORTING - iv_xstring = l_file - RECEIVING - et_solix = lt_file. - - l_bytecount = xstrlen( l_file ). - ELSE. - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = l_file - IMPORTING - output_length = l_bytecount - TABLES - binary_tab = lt_file. - ENDIF. - - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = l_bytecount - filename = l_path - filetype = 'BIN' - CHANGING data_tab = lt_file ). - -ENDFORM. " WRITE_FILE diff --git a/src/demos/zdemo_excel32.prog.xml b/src/demos/zdemo_excel32.prog.xml deleted file mode 100644 index 40161af..0000000 --- a/src/demos/zdemo_excel32.prog.xml +++ /dev/null @@ -1,1941 +0,0 @@ - - - - - - ZDEMO_EXCEL32 - 1 - E - X - X - - - - 000010 - 000010 - - - - ALV_STATUS - D - 000001 - 000001 - 0001 - Standard for General List Output - - - - - %ML - 001 - S - Folder - F - - - %PC - 001 - S - ICON_EXPORT - @49@ - Local file... - L - - - %SC - 001 - S - ICON_SEARCH - @13@ - Find - N - - - %SC+ - 001 - S - ICON_SEARCH_NEXT - @4E@ - Find next - - - %SL - 001 - S - ICON_MAIL - @1S@ - Mail recipient - M - - - &ABC - 001 - S - ICON_ABC - @DL@ - ABC Analysis - A - - - &ALL - 001 - S - ICON_SELECT_ALL - @4B@ - Select all - S - - - &AQW - 001 - S - ICON_WORD_PROCESSING - @DK@ - Word processing... - W - - - &AUF - 001 - S - Define Breakdown... - D - - - &AVE - 001 - S - Saving... - S - - - &AVE - 002 - S - ICON_ALV_VARIANT_SAVE - @DN@ - Save layout... - - - &AVR - 001 - S - Mean value - M - - - &CDF - 001 - S - Unfreeze - U - - - &CFI - 001 - S - Freeze to column - F - - - &COUNT - 001 - S - Count - C - - - &CRB - 001 - S - ICON_TOTAL_LEFT - @0B@ - First Column - - - &CRE - 001 - S - ICON_TOTAL_RIGHT - @0C@ - Last column - - - &CRL - 001 - S - ICON_COLUMN_LEFT - @0D@ - Column left - - - &CRR - 001 - S - ICON_COLUMN_RIGHT - @0E@ - Column right - - - &DAU - 001 - S - Automatic Separator - T - - - &DOF - 001 - S - Separator Always Off - E - - - &DON - 001 - S - Separator Always On - R - - - &EB9 - 001 - S - ICON_TABLE_SETTINGS - @36@ - Call Up Report - C - - - &ELP - 001 - S - ICON_SYSTEM_HELP - @35@ - Help - - - &ERW - 001 - S - Layout Management - L - - - &ETA - 001 - S - ICON_SELECT_DETAIL - @16@ - Details - - - &F03 - 001 - S - Back - B - - - &F12 - 001 - S - ICON_CANCEL - @0W@ - Cancel - A - - - &F15 - 001 - S - Exit - X - - - &IC1 - 001 - S - ICON_SELECT_DETAIL - @16@ - Choose - - - &ILD - 001 - S - ICON_FILTER_UNDO - @GD@ - Delete Filter - L - - - &ILT - 001 - S - ICON_FILTER - @4G@ - Set filter - F - - - &KOM - 001 - S - ICON_COLLAPSE - @3T@ - Choose... - C - - - &LFO - 001 - S - List status... - L - - - &LFO - 002 - S - ICON_INFORMATION - @0S@ - List status... - - - &LIS - 001 - S - Basic List - B - - - &MAX - 001 - S - Maximum - A - - - &MIN - 001 - S - Minimum - I - - - &NFO - 001 - S - ICON_INFORMATION - @0S@ - Selections... - Selections - E - - - &NTE - 001 - S - Refresh - - - &OAD - 001 - S - Choose... - H - - - &OAD - 002 - S - ICON_ALV_VARIANT_CHOOSE - @DM@ - Select layout... - - - &ODN - 001 - S - ICON_SORT_DOWN - @3F@ - Sort in descending order - O - - - &OL0 - 001 - S - ICON_ALV_VARIANTS - @LZ@ - Change layout... - - - &OLX - 001 - S - ICON_VARIANTS - @0R@ - Change... - C - - - &OMP - 001 - S - ICON_COLLAPSE - @3T@ - Collapse - - - &OPT - 001 - S - Optimize width - P - - - &OUP - 001 - S - ICON_SORT_UP - @3E@ - Sort in Ascending Order - I - - - &RNT - 001 - S - ICON_PRINT - @0X@ - Print - P - - - &RNT_PREV - 001 - S - ICON_LAYOUT_CONTROL - @3G@ - Print preview - R - - - &SAL - 001 - S - ICON_DESELECT_ALL - @4D@ - Deselect all - D - - - &SUM - 001 - S - ICON_INTERMEDIATE_SUM - @5V@ - Subtotals... - T - - - &UMC - 001 - S - ICON_SUM - @3Z@ - Total - T - - - &XINT - 001 - S - Additional Functions of SAP Query - E - - - &XML - 001 - S - XML Export... - X - - - &XPA - 001 - S - ICON_EXPAND - @3S@ - Expand - - - &XXL - 001 - S - ICON_XXL - @DJ@ - Spreadsheet... - A - - - EXCEL - 001 - S - ICON_XLV - @J3@ - Excel - Export to Excel - - - EXCELBIND - 001 - S - ICON_XLS - @J2@ - Excel bind - Excel bind - - - EXCELCELL - 001 - S - ICON_XXL - @DJ@ - Excel converter - - - EXCELCONV - 001 - S - @DJ@ - Excel converter - Excel converter - - - P+ - 001 - S - Next page - - - P++ - 001 - S - Last Page - - - P- - 001 - S - Previous Page - - - P-- - 001 - S - First Page - - - - - 000001 - 01 - F - &RNT - 001 - - - 000001 - 02 - M - 000002 - - - 000001 - 03 - M - 000003 - - - 000001 - 04 - S - - - 000001 - 05 - F - &F15 - 001 - - - 000002 - 01 - F - &AQW - 001 - - - 000002 - 02 - F - &XXL - 001 - - - 000002 - 03 - F - %PC - 001 - - - 000002 - 04 - F - &XINT - 001 - - - 000003 - 01 - F - %SL - 001 - - - 000003 - 02 - F - %ML - 001 - - - 000004 - 01 - F - &ALL - 001 - - - 000004 - 02 - F - &SAL - 001 - - - 000004 - 03 - S - - - 000004 - 04 - F - &ILT - 001 - - - 000004 - 05 - F - &ILD - 001 - - - 000004 - 06 - S - - - 000004 - 07 - F - &OUP - 001 - - - 000004 - 08 - F - &ODN - 001 - - - 000004 - 09 - S - - - 000004 - 10 - M - 000005 - - - 000004 - 11 - F - &SUM - 001 - - - 000004 - 12 - S - - - 000004 - 13 - F - %SC - 001 - - - 000004 - 14 - S - - - 000004 - 15 - F - &F12 - 001 - - - 000005 - 01 - F - &UMC - 001 - - - 000005 - 02 - F - &AVR - 001 - - - 000005 - 03 - F - &MIN - 001 - - - 000005 - 04 - F - &MAX - 001 - - - 000005 - 05 - F - &COUNT - 001 - - - 000006 - 01 - F - &ABC - 001 - - - 000006 - 02 - S - - - 000006 - 03 - F - &F03 - 001 - - - 000007 - 01 - F - &LIS - 001 - - - 000007 - 02 - S - - - 000007 - 03 - M - 000008 - - - 000007 - 04 - S - - - 000007 - 05 - M - 000009 - - - 000007 - 06 - S - - - 000007 - 07 - M - 000010 - - - 000007 - 08 - S - - - 000007 - 09 - F - &NFO - 001 - - - 000007 - 10 - F - &LFO - 001 - - - 000008 - 01 - F - &OLX - 001 - - - 000008 - 02 - F - &OAD - 001 - - - 000008 - 03 - S - - - 000008 - 04 - F - &AVE - 001 - - - 000008 - 05 - S - - - 000008 - 06 - F - &ERW - 001 - - - 000009 - 01 - F - &KOM - 001 - - - 000009 - 02 - F - &AUF - 001 - - - 000010 - 01 - F - &OPT - 001 - - - 000010 - 02 - S - - - 000010 - 03 - F - &CFI - 001 - - - 000010 - 04 - F - &CDF - 001 - - - 000010 - 05 - S - - - 000010 - 06 - F - &DAU - 001 - - - 000010 - 07 - F - &DON - 001 - - - 000010 - 08 - F - &DOF - 001 - - - - - 000001 - S - List - L - STANDARD List - - - 000002 - S - Export - E - STANDARD Save - - - 000003 - S - Send to - S - - - 000004 - S - Edit - E - STANDARD - - - 000005 - S - Calculate - C - - - 000006 - S - Goto - G - STANDARD - - - 000007 - S - Settings - S - STANDARD - - - 000008 - S - Layout - A - Sub STANDARD - - - 000009 - S - Summation levels - S - Sub STANDARD - - - 000010 - S - Columns - C - - - - - 000001 - 01 - 000001 - - - 000001 - 02 - 000004 - - - 000001 - 03 - 000006 - - - 000001 - 04 - 000007 - - - - - 000001 - 0001 - 01 - 39 - - - 000001 - 0001 - 02 - 37 - - - 000001 - 0001 - 03 - S - - - 000001 - 0001 - 04 - 05 - - - 000001 - 0001 - 05 - 06 - - - 000001 - 0001 - 06 - S - - - 000001 - 0001 - 07 - 28 - - - 000001 - 0001 - 08 - 40 - - - 000001 - 0001 - 09 - 29 - - - 000001 - 0001 - 10 - 38 - - - 000001 - 0001 - 11 - S - - - 000001 - 0001 - 12 - 30 - - - 000001 - 0001 - 13 - 42 - - - 000001 - 0001 - 14 - S - - - 000001 - 0001 - 15 - 45 - - - 000001 - 0001 - 16 - S - - - 000001 - 0001 - 17 - 32 - - - 000001 - 0001 - 18 - 33 - - - 000001 - 0001 - 19 - 34 - - - 000001 - 0001 - 20 - 09 - - - 000001 - 0001 - 21 - 13 - - - 000001 - 0001 - 22 - S - - - 000001 - 0001 - 23 - 41 - - - 000001 - 0001 - 24 - 07 - - - 000001 - 0001 - 25 - S - - - 000001 - 0001 - 26 - 18 - - - 000001 - 0001 - 27 - 26 - - - 000001 - 0001 - 28 - 27 - - - 000001 - 0001 - 29 - 19 - - - - - 000001 - 01 - &ELP - 001 - - - 000001 - 02 - &IC1 - 001 - - - 000001 - 03 - &F03 - 001 - - - 000001 - 05 - &ALL - 001 - - - 000001 - 06 - &SAL - 001 - - - 000001 - 07 - &NFO - 001 - - - 000001 - 08 - &NTE - 001 - - - 000001 - 09 - EXCELBIND - 001 - - - 000001 - 12 - &F12 - 001 - - - 000001 - 13 - EXCELCONV - 001 - - - 000001 - 15 - &F15 - 001 - - - 000001 - 18 - &CRB - 001 - - - 000001 - 19 - &CRE - 001 - - - 000001 - 21 - P-- - 001 - - - 000001 - 22 - P- - 001 - - - 000001 - 23 - P+ - 001 - - - 000001 - 24 - P++ - 001 - - - 000001 - 25 - &ABC - 001 - - - 000001 - 26 - &CRL - 001 - - - 000001 - 27 - &CRR - 001 - - - 000001 - 28 - &OUP - 001 - - - 000001 - 29 - &ILT - 001 - - - 000001 - 30 - &UMC - 001 - - - 000001 - 31 - %SL - 001 - - - 000001 - 32 - &OL0 - 001 - - - 000001 - 33 - &OAD - 002 - - - 000001 - 34 - &AVE - 002 - - - 000001 - 35 - &XPA - 001 - - - 000001 - 37 - &EB9 - 001 - - - 000001 - 38 - &ILD - 001 - - - 000001 - 39 - &ETA - 001 - - - 000001 - 40 - &ODN - 001 - - - 000001 - 41 - &LFO - 002 - - - 000001 - 42 - &SUM - 001 - - - 000001 - 43 - &XXL - 001 - - - 000001 - 44 - &AQW - 001 - - - 000001 - 45 - %PC - 001 - - - 000001 - 46 - &RNT_PREV - 001 - - - 000001 - 47 - &OMP - 001 - - - 000001 - 48 - &XML - 001 - - - 000001 - 71 - %SC - 001 - - - 000001 - 80 - P-- - 001 - - - 000001 - 81 - P- - 001 - - - 000001 - 82 - P+ - 001 - - - 000001 - 83 - P++ - 001 - - - 000001 - 84 - %SC+ - 001 - - - 000001 - 86 - &RNT - 001 - - - - - ALV_STATUS - %CH - - - ALV_STATUS - %ML - - - ALV_STATUS - %PC - - - ALV_STATUS - %SC - - - ALV_STATUS - %SC+ - - - ALV_STATUS - %SL - - - ALV_STATUS - &ABC - - - ALV_STATUS - &ALL - - - ALV_STATUS - &AQW - - - ALV_STATUS - &AUF - - - ALV_STATUS - &AVE - - - ALV_STATUS - &AVR - - - ALV_STATUS - &BS - - - ALV_STATUS - &BS+ - - - ALV_STATUS - &BS- - - - ALV_STATUS - &CDF - - - ALV_STATUS - &CFI - - - ALV_STATUS - &COUNT - - - ALV_STATUS - &CRB - - - ALV_STATUS - &CRE - - - ALV_STATUS - &CRL - - - ALV_STATUS - &CRR - - - ALV_STATUS - &DAU - - - ALV_STATUS - &DOF - - - ALV_STATUS - &DON - - - ALV_STATUS - &EB3 - - - ALV_STATUS - &EB9 - - - ALV_STATUS - &ELP - - - ALV_STATUS - &ERW - - - ALV_STATUS - &ETA - - - ALV_STATUS - &F03 - - - ALV_STATUS - &F12 - - - ALV_STATUS - &F15 - - - ALV_STATUS - &IC1 - - - ALV_STATUS - &ILD - - - ALV_STATUS - &ILT - - - ALV_STATUS - &KOM - - - ALV_STATUS - &LFO - - - ALV_STATUS - &LIS - - - ALV_STATUS - &MAX - - - ALV_STATUS - &MIN - - - ALV_STATUS - &NFO - - - ALV_STATUS - &NTE - - - ALV_STATUS - &OAD - - - ALV_STATUS - &ODN - - - ALV_STATUS - &OL0 - - - ALV_STATUS - &OL1 - - - ALV_STATUS - &OLX - - - ALV_STATUS - &OMP - - - ALV_STATUS - &OPT - - - ALV_STATUS - &OUP - - - ALV_STATUS - &RNT - - - ALV_STATUS - &SAL - - - ALV_STATUS - &SUM - - - ALV_STATUS - &UMC - - - ALV_STATUS - &XML - - - ALV_STATUS - &XPA - - - ALV_STATUS - &XXL - - - ALV_STATUS - BAC1 - - - ALV_STATUS - BACK - - - ALV_STATUS - BEB1 - - - ALV_STATUS - BEB2 - - - ALV_STATUS - BEB3 - - - ALV_STATUS - BEB9 - - - ALV_STATUS - BEBN - - - ALV_STATUS - COL0 - - - ALV_STATUS - COLX - - - ALV_STATUS - DETA - - - ALV_STATUS - DRUK - - - ALV_STATUS - DSAL - - - ALV_STATUS - ENTE - - - ALV_STATUS - EXCEL - - - ALV_STATUS - EXCELBIND - - - ALV_STATUS - EXCELCELL - - - ALV_STATUS - EXCELCONV - - - ALV_STATUS - EXIT - - - ALV_STATUS - EXPA - - - ALV_STATUS - FILD - - - ALV_STATUS - FILT - - - ALV_STATUS - GLIS - - - ALV_STATUS - HELP - - - ALV_STATUS - INFO - - - ALV_STATUS - KOMP - - - ALV_STATUS - P+ - - - ALV_STATUS - P++ - - - ALV_STATUS - P- - - - ALV_STATUS - P-- - - - ALV_STATUS - PF09 - - - ALV_STATUS - PF13 - - - ALV_STATUS - PIC1 - - - ALV_STATUS - PICK - - - ALV_STATUS - PRI - - - ALV_STATUS - PRIN - - - ALV_STATUS - PRNT - - - ALV_STATUS - RW - - - ALV_STATUS - SALL - - - ALV_STATUS - SAUF - - - ALV_STATUS - SAVE - - - ALV_STATUS - SCRB - - - ALV_STATUS - SCRE - - - ALV_STATUS - SCRL - - - ALV_STATUS - SCRR - - - ALV_STATUS - SKOM - - - ALV_STATUS - SODN - - - ALV_STATUS - SOUP - - - ALV_STATUS - SUMC - - - ALV_STATUS - ZSUM - - - - - A - 000001 - D - Standard User Interface STANDARD - - - P - 000001 - D - X - Standard Maximum Interaction - - - B - 000001 - 0001 - D - Standard Maximum Interaction - - - - - - R - abap2xlsx Demo: Export ALV - 26 - - - - - diff --git a/src/demos/zdemo_excel33.prog.abap b/src/demos/zdemo_excel33.prog.abap deleted file mode 100644 index 832ce64..0000000 --- a/src/demos/zdemo_excel33.prog.abap +++ /dev/null @@ -1,118 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel33. - -TYPES: ty_t005t_lines TYPE TABLE OF t005t. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_converter TYPE REF TO zcl_excel_converter, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - -DATA lt_test TYPE ty_t005t_lines. - -DATA: l_cell_value TYPE zexcel_cell_value, - ls_area TYPE zexcel_s_autofilter_area. -DATA: ls_option TYPE zexcel_s_converter_option. - -CONSTANTS: c_airlines TYPE string VALUE 'Airlines'. - -CONSTANTS: gc_save_file_name TYPE string VALUE '33_autofilter.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS p_convex AS CHECKBOX. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Internal table' ). - - PERFORM load_fixed_data CHANGING lt_test. - - CREATE OBJECT lo_converter. - - ls_option-conv_exit_length = p_convex. - lo_converter->set_option( ls_option ). - lo_converter->convert( EXPORTING - it_table = lt_test - i_row_int = 1 - i_column_int = 1 - io_worksheet = lo_worksheet - CHANGING - co_excel = lo_excel ) . - PERFORM set_column_headers USING lo_worksheet 'Client;Language;Country;Name;Nationality;Long name;Nationality'. - - lo_autofilter = lo_excel->add_new_autofilter( io_sheet = lo_worksheet ) . - - ls_area-row_start = 1. - ls_area-col_start = 1. - ls_area-row_end = lo_worksheet->get_highest_row( ). - ls_area-col_end = lo_worksheet->get_highest_column( ). - - lo_autofilter->set_filter_area( is_area = ls_area ). - - lo_worksheet->get_cell( EXPORTING - ip_column = 'C' - ip_row = 2 - IMPORTING - ep_value = l_cell_value ). - lo_autofilter->set_value( i_column = 3 - i_value = l_cell_value ). - - -*** Create output - lcl_output=>output( lo_excel ). - - -FORM load_fixed_data CHANGING ct_test TYPE ty_t005t_lines. - DATA: lt_lines TYPE TABLE OF string, - lv_line TYPE string, - lt_fields TYPE TABLE OF string, - lv_comp TYPE i, - lv_field TYPE string, - ls_test TYPE t005t. - FIELD-SYMBOLS: TYPE simple. - - APPEND '001 E AD Andorra Andorran Andorra Andorran ' TO lt_lines. - APPEND '001 E BE Belgium Belgian Belgium Belgian ' TO lt_lines. - APPEND '001 E DE Germany German Germany German ' TO lt_lines. - APPEND '001 E FM Micronesia Micronesian Micronesia Micronesian' TO lt_lines. - LOOP AT lt_lines INTO lv_line. - CONDENSE lv_line. - SPLIT lv_line AT space INTO TABLE lt_fields. - lv_comp = 1. - LOOP AT lt_fields INTO lv_field. - ASSIGN COMPONENT lv_comp OF STRUCTURE ls_test TO . - = lv_field. - lv_comp = lv_comp + 1. - ENDLOOP. - APPEND ls_test TO ct_test. - ENDLOOP. -ENDFORM. - -FORM set_column_headers - USING io_worksheet TYPE REF TO zcl_excel_worksheet - iv_headers TYPE csequence - RAISING zcx_excel. - - DATA: lt_headers TYPE TABLE OF string, - lv_header TYPE string, - lv_tabix TYPE i. - - SPLIT iv_headers AT ';' INTO TABLE lt_headers. - LOOP AT lt_headers INTO lv_header. - lv_tabix = sy-tabix. - io_worksheet->set_cell( ip_row = 1 ip_column = lv_tabix ip_value = lv_header ). - ENDLOOP. - -ENDFORM. diff --git a/src/demos/zdemo_excel33.prog.xml b/src/demos/zdemo_excel33.prog.xml deleted file mode 100644 index 9ef5f5f..0000000 --- a/src/demos/zdemo_excel33.prog.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - ZDEMO_EXCEL33 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Autofilter - 26 - - - S - P_CONVEX - Output length for conv. exits - 37 - - - S - P_PATH - . - 24 - D - - - - - diff --git a/src/demos/zdemo_excel34.prog.abap b/src/demos/zdemo_excel34.prog.abap deleted file mode 100644 index 8d8b0f3..0000000 --- a/src/demos/zdemo_excel34.prog.abap +++ /dev/null @@ -1,217 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel34. - -CONSTANTS: width TYPE f VALUE '10.14'. -CONSTANTS: height TYPE f VALUE '57.75'. - -DATA: current_row TYPE i, - col TYPE i, - col_alpha TYPE zexcel_cell_column_alpha, - row TYPE i, - row_board TYPE i, - colorflag TYPE i, - color TYPE zexcel_style_color_argb, - - lo_column TYPE REF TO zcl_excel_column, - lo_row TYPE REF TO zcl_excel_row, - - writing1 TYPE string, - writing2 TYPE string. - - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -CONSTANTS: gc_save_file_name TYPE string VALUE '34_Static Styles_Chess.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Spassky_vs_Bronstein' ). - -* Header - current_row = 1. - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'White' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Spassky, Boris V -- wins in turn 23' ). - - ADD 1 TO current_row. - lo_worksheet->set_cell( ip_row = current_row ip_column = 'B' ip_value = 'Black' ). - lo_worksheet->set_cell( ip_row = current_row ip_column = 'C' ip_value = 'Bronstein, David I' ). - - ADD 1 TO current_row. -* Set size of column + Writing above chessboard - DO 8 TIMES. - - writing1 = zcl_excel_common=>convert_column2alpha( sy-index ). - writing2 = sy-index . - row = current_row + sy-index. - - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - -* Set size of column - lo_column = lo_worksheet->get_column( col_alpha ). - lo_column->set_width( width ). - -* Set size of row - lo_row = lo_worksheet->get_row( row ). - lo_row->set_row_height( height ). - -* Set writing on chessboard - lo_worksheet->set_cell( ip_row = row - ip_column = 'A' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'A' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = 'J' - ip_value = writing2 ). - lo_worksheet->change_cell_style( ip_column = 'J' - ip_row = row - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center ). - - row = current_row + 9. - lo_worksheet->set_cell( ip_row = current_row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = current_row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - lo_worksheet->set_cell( ip_row = row - ip_column = col_alpha - ip_value = writing1 ). - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). - ENDDO. - lo_column = lo_worksheet->get_column( 'A' ). - lo_column->set_auto_size( abap_true ). - lo_column = lo_worksheet->get_column( 'J' ). - lo_column->set_auto_size( abap_true ). - -* Set win-position - CONSTANTS: c_pawn TYPE string VALUE 'Pawn'. - CONSTANTS: c_rook TYPE string VALUE 'Rook'. - CONSTANTS: c_knight TYPE string VALUE 'Knight'. - CONSTANTS: c_bishop TYPE string VALUE 'Bishop'. - CONSTANTS: c_queen TYPE string VALUE 'Queen'. - CONSTANTS: c_king TYPE string VALUE 'King'. - - row = current_row + 1. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_knight ). - row = current_row + 2. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_king ). - row = current_row + 3. - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 4. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_knight ). - row = current_row + 5. - lo_worksheet->set_cell( ip_row = row ip_column = 'E' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'F' ip_value = c_queen ). - row = current_row + 6. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_bishop ). - row = current_row + 7. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_pawn ). - lo_worksheet->set_cell( ip_row = row ip_column = 'I' ip_value = c_pawn ). - row = current_row + 8. - lo_worksheet->set_cell( ip_row = row ip_column = 'G' ip_value = c_rook ). - lo_worksheet->set_cell( ip_row = row ip_column = 'H' ip_value = c_king ). - -* Set Chessboard - DO 8 TIMES. - IF sy-index <= 3. " Black - color = zcl_excel_style_color=>c_black. - ELSE. - color = zcl_excel_style_color=>c_white. - ENDIF. - row_board = sy-index. - row = current_row + sy-index. - DO 8 TIMES. - col = sy-index + 1. - col_alpha = zcl_excel_common=>convert_column2alpha( col ). - TRY. -* Borders around outer limits - IF row_board = 1. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_top_style = zcl_excel_style_border=>c_border_thick - ip_borders_top_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF row_board = 8. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_down_style = zcl_excel_style_border=>c_border_thick - ip_borders_down_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 2. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_left_style = zcl_excel_style_border=>c_border_thick - ip_borders_left_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. - IF col = 9. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_borders_right_style = zcl_excel_style_border=>c_border_thick - ip_borders_right_color_rgb = zcl_excel_style_color=>c_black ). - ENDIF. -* Style for writing - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_font_color_rgb = color - ip_font_bold = 'X' - ip_font_size = 16 - ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center - ip_alignment_vertical = zcl_excel_style_alignment=>c_vertical_center - ip_fill_filltype = zcl_excel_style_fill=>c_fill_solid ). -* Color of field - colorflag = ( row + col ) MOD 2. - IF colorflag = 0. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFB5866A' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). - ELSE. - lo_worksheet->change_cell_style( ip_column = col_alpha - ip_row = row - ip_fill_fgcolor_rgb = 'FFF5DEBF' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). - ENDIF. - - - - CATCH zcx_excel . - ENDTRY. - - ENDDO. - ENDDO. - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel34.prog.xml b/src/demos/zdemo_excel34.prog.xml deleted file mode 100644 index 741632b..0000000 --- a/src/demos/zdemo_excel34.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL34 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Static Styles (Chess) - 37 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel35.prog.abap b/src/demos/zdemo_excel35.prog.abap deleted file mode 100644 index 1241229..0000000 --- a/src/demos/zdemo_excel35.prog.abap +++ /dev/null @@ -1,170 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL2 -*& Test Styles for ABAP2XLSX -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel35. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. - -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '35_Static_Styles.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_desktop_directory( CHANGING desktop_directory = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create border object - CREATE OBJECT lo_border_dark. - lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. - lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. - lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. - lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. - " Create a bold / italic style - lo_style_bold = lo_excel->add_new_style( ). - lo_style_bold->font->bold = abap_true. - lo_style_bold->font->italic = abap_true. - lo_style_bold->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_bold->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_bold->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_bold_guid = lo_style_bold->get_guid( ). - " Create an underline double style - lo_style_underline = lo_excel->add_new_style( ). - lo_style_underline->font->underline = abap_true. - lo_style_underline->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_underline->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_underline->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_underline->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_underline_guid = lo_style_underline->get_guid( ). - " Create filled style yellow - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-theme = zcl_excel_style_color=>c_theme_accent6. - lv_style_filled_guid = lo_style_filled->get_guid( ). - " Create border with button effects - lo_style_button = lo_excel->add_new_style( ). - lo_style_button->borders->right = lo_border_dark. - lo_style_button->borders->down = lo_border_dark. - lo_style_button->borders->left = lo_border_light. - lo_style_button->borders->top = lo_border_light. - lv_style_button_guid = lo_style_button->get_guid( ). - "Create style with border - lo_style_border = lo_excel->add_new_style( ). - lo_style_border->borders->allborders = lo_border_dark. - lo_style_border->borders->diagonal = lo_border_dark. - lo_style_border->borders->diagonal_mode = zcl_excel_style_borders=>c_diagonal_both. - lv_style_border_guid = lo_style_border->get_guid( ). - " Create filled style green - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_green. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lv_style_filled_green_guid = lo_style_filled->get_guid( ). - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) - lo_style_filled = lo_excel->add_new_style( ). - lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise - ip_index = 16 - ip_color = '0040E0D0' ). - - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_filled->fill->fgcolor-indexed = 16. - lv_style_filled_turquoise_guid = lo_style_filled->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_columnrow = 'B2' ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_bold_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 4 ip_value = 'Underlined text' ip_style = lv_style_underline_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 6 ip_value = 'Borders' ip_style = lv_style_border_guid ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 7 ip_value = 'I''m not a button :)' ip_style = lv_style_button_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 9 ip_value = 'Modified color for Excel 2003' ip_style = lv_style_filled_turquoise_guid ). - " Fill the cell and apply one style - lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = 'Filled text' ip_style = lv_style_filled_guid ). - " Change the style - lo_worksheet->set_cell_style( ip_columnrow = 'B6' ip_style = lv_style_filled_green_guid ). - " Add Style to an empty cell to test Fix for Issue - "#44 Exception ZCX_EXCEL thrown when style is set for an empty cell - " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell - lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - -* Demonstrate how to retroactivly change the cellstyle -*Filled text and underlinded text - lo_worksheet->change_cell_style( ip_columnrow = 'B5' - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - lo_worksheet->change_cell_style( ip_column = 'D' - ip_row = 4 - ip_font_bold = abap_true - ip_font_italic = abap_true ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_excel35.prog.xml b/src/demos/zdemo_excel35.prog.xml deleted file mode 100644 index a8a3fb5..0000000 --- a/src/demos/zdemo_excel35.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL35 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: static styles - 33 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel36.prog.abap b/src/demos/zdemo_excel36.prog.abap deleted file mode 100644 index 2211236..0000000 --- a/src/demos/zdemo_excel36.prog.abap +++ /dev/null @@ -1,111 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL36 -REPORT zdemo_excel36. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column TYPE REF TO zcl_excel_column, - col TYPE i. - -DATA: lo_style_arial20 TYPE REF TO zcl_excel_style, - lo_style_times11 TYPE REF TO zcl_excel_style, - lo_style_cambria8red TYPE REF TO zcl_excel_style. - -DATA: lv_style_arial20_guid TYPE zexcel_cell_style, - lv_style_times11_guid TYPE zexcel_cell_style, - lv_style_cambria8red_guid TYPE zexcel_cell_style. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '36_DefaultStyles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create a bold / italic style - lo_style_arial20 = lo_excel->add_new_style( ). - lo_style_arial20->font->name = zcl_excel_style_font=>c_name_arial. - lo_style_arial20->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_arial20->font->size = 20. - lv_style_arial20_guid = lo_style_arial20->get_guid( ). - - lo_style_times11 = lo_excel->add_new_style( ). - lo_style_times11->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_times11->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_times11->font->size = 11. - lv_style_times11_guid = lo_style_times11->get_guid( ). - - lo_style_cambria8red = lo_excel->add_new_style( ). - lo_style_cambria8red->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_cambria8red->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_cambria8red->font->size = 8. - lo_style_cambria8red->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_cambria8red_guid = lo_style_cambria8red->get_guid( ). - - lo_excel->set_default_style( lv_style_arial20_guid ). " Default for all new worksheets - -* 1st sheet - do not change anything --> defaultstyle from lo_excel should apply - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'Style for complete document' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 2nd sheet - defaultstyle for this sheet set explicitly ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for this sheet' ). - lo_worksheet->zif_excel_sheet_properties~set_style( lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'All cells in this sheet are set to font Times New Roman, fontsize 11' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 5 ip_value = 'because this style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 6 ip_value = 'thus the default style from zcl_excel does not apply to this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - -* 3rd sheet - defaultstyle for columns ( set to Times New Roman 11 ) - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( 'Style for 3 columns' ). - lo_column = lo_worksheet->get_column( 'B' ). - lo_column->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - lo_column = lo_worksheet->get_column( 'C' ). - lo_column->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - lo_column = lo_worksheet->get_column( 'F' ). - lo_column->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - - lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'The columns B,C and F are set to Times New Roman' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 10 ip_value = 'All other cells in this sheet are set to font Arial, fontsize 20' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 11 ip_value = 'because no separate style was passed for this sheet' ). - lo_worksheet->set_cell( ip_column = 2 ip_row = 12 ip_value = 'but a default style was set for the complete instance of zcl_excel' ). - - lo_worksheet->set_cell( ip_column = 8 ip_row = 1 ip_value = 'Of course' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 2 ip_value = 'setting a specific style to a cell' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 3 ip_value = 'takes precedence over all defaults' ip_style = lv_style_cambria8red_guid ). - lo_worksheet->set_cell( ip_column = 8 ip_row = 4 ip_value = 'Here: Cambria 8 in red' ip_style = lv_style_cambria8red_guid ). - - -* Set entry into each of the first 10 columns - DO 20 TIMES. - col = sy-index. - CASE col. - WHEN 2 " B - OR 3 " C - OR 6." F - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Times 11' ). - WHEN OTHERS. - lo_worksheet->set_cell( ip_column = col ip_row = 6 ip_value = 'Arial 20' ). - ENDCASE. - ENDDO. - - lo_worksheet->set_cell( ip_column = 2 ip_row = 1 ip_value = space ). " Missing feature "set active cell - use this to simulate that - - - - lo_excel->set_active_sheet_index( 1 ). - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel36.prog.xml b/src/demos/zdemo_excel36.prog.xml deleted file mode 100644 index c957dc4..0000000 --- a/src/demos/zdemo_excel36.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZDEMO_EXCEL36 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Default Styles - 31 - - - - - diff --git a/src/demos/zdemo_excel37.prog.abap b/src/demos/zdemo_excel37.prog.abap deleted file mode 100644 index b9eaf81..0000000 --- a/src/demos/zdemo_excel37.prog.abap +++ /dev/null @@ -1,301 +0,0 @@ -REPORT zdemo_excel37. - -DATA: excel TYPE REF TO zcl_excel, - reader TYPE REF TO zif_excel_reader, - go_error TYPE REF TO cx_root, - gv_memid_gr8 TYPE text255, - gv_message TYPE string, - lv_extension TYPE string, - gv_error_program_name TYPE syrepid, - gv_error_include_name TYPE syrepid, - gv_error_line TYPE i. - -DATA: gc_save_file_name TYPE string VALUE '37- Read template and output.&'. - -SELECTION-SCREEN BEGIN OF BLOCK blx WITH FRAME. -PARAMETERS: p_upfile TYPE string LOWER CASE MEMORY ID gr8. -PARAMETERS: p_applse AS CHECKBOX. -SELECTION-SCREEN END OF BLOCK blx. - -INCLUDE zdemo_excel_outputopt_incl. - -SELECTION-SCREEN BEGIN OF BLOCK cls WITH FRAME TITLE TEXT-cls. -PARAMETERS: lb_read TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -PARAMETERS: lb_write TYPE seoclsname AS LISTBOX VISIBLE LENGTH 40 LOWER CASE OBLIGATORY DEFAULT 'Autodetect'(001). -SELECTION-SCREEN END OF BLOCK cls. - -SELECTION-SCREEN BEGIN OF BLOCK bl_err WITH FRAME TITLE TEXT-err. -PARAMETERS: cb_errl AS CHECKBOX DEFAULT 'X'. -SELECTION-SCREEN BEGIN OF LINE. -PARAMETERS: cb_dump AS CHECKBOX DEFAULT space. -SELECTION-SCREEN COMMENT (60) cmt_dump FOR FIELD cb_dump. -SELECTION-SCREEN END OF LINE. -SELECTION-SCREEN END OF BLOCK bl_err. - -INITIALIZATION. - PERFORM setup_listboxes. - cmt_dump = TEXT-dum. - GET PARAMETER ID 'GR8' FIELD gv_memid_gr8. - p_upfile = gv_memid_gr8. - - IF p_upfile IS INITIAL. - p_upfile = 'c:\temp\whatever.xlsx'. - ENDIF. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile. - PERFORM f4_p_upfile CHANGING p_upfile. - - -START-OF-SELECTION. - IF cb_dump IS INITIAL. - TRY. - PERFORM read_template. - PERFORM write_template. -*** Create output - CATCH cx_root INTO go_error. - MESSAGE 'Error reading excelfile' TYPE 'I'. - gv_message = go_error->get_text( ). - IF cb_errl = ' '. - IF gv_message IS NOT INITIAL. - MESSAGE gv_message TYPE 'I'. - ENDIF. - ELSE. - go_error->get_source_position( IMPORTING program_name = gv_error_program_name - include_name = gv_error_include_name - source_line = gv_error_line ). - WRITE:/ 'Errormessage:' ,gv_message. - WRITE:/ 'Errorposition:', - AT /10 'Program:' ,gv_error_program_name, - AT /10 'include_name:' ,gv_error_include_name, - AT /10 'source_line:' ,gv_error_line. - ENDIF. - ENDTRY. - ELSE. " This will dump if an error occurs. In some cases the information given in cx_root is not helpful - this will show exactly where the problem is - PERFORM read_template. - PERFORM write_template. - ENDIF. - - - -*&---------------------------------------------------------------------* -*& Form F4_P_UPFILE -*&---------------------------------------------------------------------* -FORM f4_p_upfile CHANGING p_upfile TYPE string. - - DATA: lv_repid TYPE syrepid, - lt_fields TYPE dynpread_tabtype, - ls_field LIKE LINE OF lt_fields, - lt_files TYPE filetable, - lv_rc TYPE i, - lv_file_filter TYPE string. - - lv_repid = sy-repid. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = lv_repid - dynumb = '1000' - request = 'A' - TABLES - dynpfields = lt_fields - EXCEPTIONS - invalid_abapworkarea = 01 - invalid_dynprofield = 02 - invalid_dynproname = 03 - invalid_dynpronummer = 04 - invalid_request = 05 - no_fielddescription = 06 - undefind_error = 07. - READ TABLE lt_fields INTO ls_field WITH KEY fieldname = 'P_UPFILE'. - p_upfile = ls_field-fieldvalue. - - lv_file_filter = 'Excel Files (*.XLSX;*.XLSM)|*.XLSX;*.XLSM'. - cl_gui_frontend_services=>file_open_dialog( EXPORTING - default_filename = p_upfile - file_filter = lv_file_filter - CHANGING - file_table = lt_files - rc = lv_rc - EXCEPTIONS - OTHERS = 1 ). - READ TABLE lt_files INDEX 1 INTO p_upfile. - -ENDFORM. " F4_P_UPFILE - - -*&---------------------------------------------------------------------* -*& Form SETUP_LISTBOXES -*&---------------------------------------------------------------------* -FORM setup_listboxes . - - DATA: lv_id TYPE vrm_id, - lt_values TYPE vrm_values, - lt_implementing_classes TYPE seo_relkeys. - - FIELD-SYMBOLS: LIKE LINE OF lt_implementing_classes, - LIKE LINE OF lt_values. - -*--------------------------------------------------------------------* -* Possible READER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_READ'. - APPEND INITIAL LINE TO lt_values ASSIGNING . - -key = 'Autodetect'(001). - -text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_READER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING . - - APPEND INITIAL LINE TO lt_values ASSIGNING . - -key = -clsname. - -text = -clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -*--------------------------------------------------------------------* -* Possible WRITER-Classes -*--------------------------------------------------------------------* - lv_id = 'LB_WRITE'. - APPEND INITIAL LINE TO lt_values ASSIGNING . - -key = 'Autodetect'(001). - -text = 'Autodetect'(001). - - - PERFORM get_implementing_classds USING 'ZIF_EXCEL_WRITER' - CHANGING lt_implementing_classes. - CLEAR lt_values. - LOOP AT lt_implementing_classes ASSIGNING . - - APPEND INITIAL LINE TO lt_values ASSIGNING . - -key = -clsname. - -text = -clsname. - - ENDLOOP. - - CALL FUNCTION 'VRM_SET_VALUES' - EXPORTING - id = lv_id - values = lt_values - EXCEPTIONS - id_illegal_name = 1 - OTHERS = 2. - -ENDFORM. " SETUP_LISTBOXES - - -*&---------------------------------------------------------------------* -*& Form GET_IMPLEMENTING_CLASSDS -*&---------------------------------------------------------------------* -FORM get_implementing_classds USING iv_interface_name TYPE clike - CHANGING ct_implementing_classes TYPE seo_relkeys. - - DATA: lo_oo_interface TYPE REF TO cl_oo_interface, - lo_oo_class TYPE REF TO cl_oo_class, - lt_implementing_subclasses TYPE seo_relkeys. - - FIELD-SYMBOLS: LIKE LINE OF ct_implementing_classes. - - TRY. - lo_oo_interface ?= cl_oo_interface=>get_instance( iv_interface_name ). - CATCH cx_class_not_existent. - RETURN. - ENDTRY. - ct_implementing_classes = lo_oo_interface->get_implementing_classes( ). - - LOOP AT ct_implementing_classes ASSIGNING . - TRY. - lo_oo_class ?= cl_oo_class=>get_instance( -clsname ). - lt_implementing_subclasses = lo_oo_class->get_subclasses( ). - APPEND LINES OF lt_implementing_subclasses TO ct_implementing_classes. - CATCH cx_class_not_existent. - ENDTRY. - ENDLOOP. - - -ENDFORM. " GET_IMPLEMENTING_CLASSDS - - -*&---------------------------------------------------------------------* -*& Form READ_TEMPLATE -*&---------------------------------------------------------------------* -FORM read_template RAISING zcx_excel . - - CASE lb_read. - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( i_filename = p_upfile i_from_applserver = p_applse ). - "Use template for charts - excel->use_template = abap_true. - - WHEN '.XLSM'. - CREATE OBJECT reader TYPE zcl_excel_reader_xlsm. - excel = reader->load_file( i_filename = p_upfile i_from_applserver = p_applse ). - "Use template for charts - excel->use_template = abap_true. - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - CREATE OBJECT reader TYPE (lb_read). - excel = reader->load_file( i_filename = p_upfile i_from_applserver = p_applse ). - "Use template for charts - excel->use_template = abap_true. - - ENDCASE. - -ENDFORM. " READ_TEMPLATE - - -*&---------------------------------------------------------------------* -*& Form WRITE_TEMPLATE -*&---------------------------------------------------------------------* -FORM write_template RAISING zcx_excel. - - CASE lb_write. - - WHEN 'Autodetect'(001). - FIND REGEX '(\.xlsx|\.xlsm)\s*$' IN p_upfile SUBMATCHES lv_extension. - TRANSLATE lv_extension TO UPPER CASE. - CASE lv_extension. - - WHEN '.XLSX'. - REPLACE '&' IN gc_save_file_name WITH 'xlsx'. " Pass extension for standard writer - lcl_output=>output( excel ). - - WHEN '.XLSM'. - REPLACE '&' IN gc_save_file_name WITH 'xlsm'. " Pass extension for macro-writer - lcl_output=>output( cl_excel = excel - iv_writerclass_name = 'ZCL_EXCEL_WRITER_XLSM' ). - - WHEN OTHERS. - MESSAGE 'Unsupported filetype' TYPE 'I'. - RETURN. - - ENDCASE. - - WHEN OTHERS. - lcl_output=>output( cl_excel = excel - iv_writerclass_name = lb_write ). - ENDCASE. - -ENDFORM. " WRITE_TEMPLATE diff --git a/src/demos/zdemo_excel37.prog.xml b/src/demos/zdemo_excel37.prog.xml deleted file mode 100644 index 7894aef..0000000 --- a/src/demos/zdemo_excel37.prog.xml +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - ZDEMO_EXCEL37 - 1 - T - E - X - X - - - - I - DUM - Enable dump creation - 40 - - - R - abap2xlsx Demo: Read xlsx-file and output = using templates - 59 - - - S - CB_ERRL - Show error location - 27 - - - S - LB_READ - Reader class - 20 - - - S - LB_WRITE - Writer class - 20 - - - S - P_APPLSE - From Application Server - 31 - - - S - P_UPFILE - Input template - 22 - - - - - D - - - I - CLS - Auswahl der Reader- und Writerklasse - 70 - - - I - DUM - Dump bei unbeh. Exception. Man weiß wenn man das braucht - 60 - - - I - ERR - Besondere Schalter - 60 - - - R - Xlsx-Datei lesen und dann wieder ausgeben = Arbeiten mit Templates - 70 - - - S - CB_DUMP - Dump bei unbeh. Exceptions - 36 - - - S - CB_ERRL - Exceptionposition anzeigen - 34 - - - S - LB_READ - Reader-Klasse - 21 - - - S - LB_WRITE - Writer-Klasse - 21 - - - S - P_UPFILE - Hochzuladende Datei - 27 - - - - - - - diff --git a/src/demos/zdemo_excel38.prog.abap b/src/demos/zdemo_excel38.prog.abap deleted file mode 100644 index 2a59f9d..0000000 --- a/src/demos/zdemo_excel38.prog.abap +++ /dev/null @@ -1,106 +0,0 @@ -REPORT zdemo_excel38. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column TYPE REF TO zcl_excel_column, - lo_drawing TYPE REF TO zcl_excel_drawing. - -TYPES: BEGIN OF gty_icon, -* name TYPE icon_name, "Fix #228 - name TYPE iconname, "Fix #228 - objid TYPE w3objid, - END OF gty_icon, - gtyt_icon TYPE STANDARD TABLE OF gty_icon WITH NON-UNIQUE DEFAULT KEY. - -DATA: lt_icon TYPE gtyt_icon, - lv_row TYPE i, - ls_wwwdatatab TYPE wwwdatatab, - lt_mimedata TYPE STANDARD TABLE OF w3mime WITH NON-UNIQUE DEFAULT KEY, - lv_xstring TYPE xstring. - -FIELD-SYMBOLS: LIKE LINE OF lt_icon, - LIKE LINE OF lt_mimedata. - -CONSTANTS: gc_save_file_name TYPE string VALUE '38_SAP-Icons.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -TABLES: icon. -SELECT-OPTIONS: s_icon FOR icon-name DEFAULT 'ICON_LED_*' OPTION CP. - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Icons' ). - lo_column = lo_worksheet->get_column( ip_column = 'A' ). - lo_column->set_auto_size( 'X' ). - lo_column = lo_worksheet->get_column( ip_column = 'B' ). - lo_column->set_auto_size( 'X' ). - -* Get all icons - SELECT name - INTO TABLE lt_icon - FROM icon - WHERE name IN s_icon - ORDER BY name. - LOOP AT lt_icon ASSIGNING . - - lv_row = sy-tabix. -*--------------------------------------------------------------------* -* Set name of icon -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'A' - ip_value = -name ). -*--------------------------------------------------------------------* -* Check whether the mime-repository holds some icondata for us -*--------------------------------------------------------------------* - -* Get key - SELECT SINGLE objid - INTO -objid - FROM wwwdata - WHERE text = -name. - CHECK sy-subrc = 0. " :o( - lo_worksheet->set_cell( ip_row = lv_row - ip_column = 'B' - ip_value = -objid ). - -* Load mimedata - CLEAR lt_mimedata. - CLEAR ls_wwwdatatab. - ls_wwwdatatab-relid = 'MI' . - ls_wwwdatatab-objid = -objid. - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_wwwdatatab - TABLES - mime = lt_mimedata - EXCEPTIONS - wrong_object_type = 1 - import_error = 2 - OTHERS = 3. - CHECK sy-subrc = 0. " :o( - - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = lv_row - ip_from_col = 'C' ). - CLEAR lv_xstring. - LOOP AT lt_mimedata ASSIGNING . - CONCATENATE lv_xstring -line INTO lv_xstring IN BYTE MODE. - ENDLOOP. - - lo_drawing->set_media( ip_media = lv_xstring - ip_media_type = zcl_excel_drawing=>c_media_type_jpg - ip_width = 16 - ip_height = 14 ). - lo_worksheet->add_drawing( lo_drawing ). - - ENDLOOP. - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel38.prog.xml b/src/demos/zdemo_excel38.prog.xml deleted file mode 100644 index d4f0b87..0000000 --- a/src/demos/zdemo_excel38.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL38 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Read file and output - 36 - - - S - S_ICON - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel39.prog.abap b/src/demos/zdemo_excel39.prog.abap deleted file mode 100644 index 81688dd..0000000 --- a/src/demos/zdemo_excel39.prog.abap +++ /dev/null @@ -1,468 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL16 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel39. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing. - -DATA lv_value TYPE i. - -DATA: ls_io TYPE skwf_io. - -DATA: ls_upper TYPE zexcel_drawing_location, - ls_lower TYPE zexcel_drawing_location. - -DATA: lo_bar1 TYPE REF TO zcl_excel_graph_bars, - lo_bar1_stacked TYPE REF TO zcl_excel_graph_bars, - lo_bar2 TYPE REF TO zcl_excel_graph_bars, - lo_pie TYPE REF TO zcl_excel_graph_pie, - lo_line TYPE REF TO zcl_excel_graph_line. - -CONSTANTS: gc_save_file_name TYPE string VALUE '39_Charts.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Create a pie chart and series - CREATE OBJECT lo_pie. - - CALL METHOD lo_pie->create_serie - EXPORTING - ip_order = 0 - ip_sheet = 'Values' - ip_lbl_from_col = 'B' - ip_lbl_from_row = '1' - ip_lbl_to_col = 'B' - ip_lbl_to_row = '3' - ip_ref_from_col = 'A' - ip_ref_from_row = '1' - ip_ref_to_col = 'A' - ip_ref_to_row = '3' - ip_sername = 'My serie 1'. - - " Set style - lo_pie->set_style( zcl_excel_graph=>c_style_15 ). - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar1. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar1->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set style - lo_bar1->set_style( zcl_excel_graph=>c_style_default ). - lo_bar1->set_title( ip_value = 'TITLE!' ). - - " Set label to none - lo_bar1->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - -* Same barchart - but this time stacked - CREATE OBJECT lo_bar1_stacked. - - CALL METHOD lo_bar1_stacked->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar1_stacked->create_serie - EXPORTING - ip_order = 1 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_bar1_stacked->create_ax - EXPORTING - ip_type = zcl_excel_graph_bars=>c_catax. - - CALL METHOD lo_bar1_stacked->create_ax - EXPORTING - ip_type = zcl_excel_graph_bars=>c_valax. - - " Set style - lo_bar1_stacked->set_style( zcl_excel_graph=>c_style_default ). - - " Set label to none - lo_bar1_stacked->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). - - " Make it stacked - lo_bar1_stacked->ns_groupingval = zcl_excel_graph_bars=>c_groupingval_stacked. - - - " Create a bar chart, series and axes - CREATE OBJECT lo_bar2. - - CALL METHOD lo_bar2->create_serie - EXPORTING - ip_order = 0 - ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_yes - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_bar2->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Set layout - lo_bar2->set_show_legend_key( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_values( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_cat_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_ser_name( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_show_percent( zcl_excel_graph_bars=>c_show_true ). - lo_bar2->set_varycolor( zcl_excel_graph_bars=>c_show_true ). - - " Create a line chart, series and axes - CREATE OBJECT lo_line. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 0 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$D$1:$D$3' - ip_ref = 'Values!$C$1:$C$3' - ip_sername = 'My serie 1'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 1 - ip_symbol = zcl_excel_graph_line=>c_symbol_none - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$B$1:$B$3' - ip_ref = 'Values!$A$1:$A$3' - ip_sername = 'My serie 2'. - - CALL METHOD lo_line->create_serie - EXPORTING - ip_order = 2 - ip_symbol = zcl_excel_graph_line=>c_symbol_auto - ip_smooth = zcl_excel_graph_line=>c_show_false - ip_lbl = 'Values!$F$1:$F$3' - ip_ref = 'Values!$E$1:$E$3' - ip_sername = 'My serie 3'. - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_catax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - CALL METHOD lo_line->create_ax - EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_valax -* ip_orientation = -* ip_delete = -* ip_axpos = -* ip_formatcode = -* ip_sourcelinked = -* ip_majortickmark = -* ip_minortickmark = -* ip_ticklblpos = -* ip_crossax = -* ip_crosses = -* ip_auto = -* ip_lblalgn = -* ip_lbloffset = -* ip_nomultilvllbl = -* ip_crossbetween = - . - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet (Pie sheet) - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( 'PieChart' ). - - " Create global drawing, set type as pie chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART PIE' ). - lo_drawing->graph = lo_pie. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_pie. - - "Set chart position (anchor 2 cells) - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart1 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart1' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 2 SERIES' ). - lo_drawing->graph = lo_bar1. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 11. - ls_lower-row = 22. - ls_lower-col = 21. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'Stacked CHART BARS WITH 2 SER.' ). - lo_drawing->graph = lo_bar1_stacked. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 1. - ls_lower-row = 22. - ls_lower-col = 10. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " BarChart2 sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'BarChart2' ). - - " Create global drawing, set type as bar chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART BARS WITH 1 SERIE' ). - lo_drawing->graph = lo_bar2. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " LineChart sheet - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'LineChart' ). - - " Create global drawing, set type as line chart, assign chart, set position and media type - lo_drawing = lo_worksheet->excel->add_new_drawing( - ip_type = zcl_excel_drawing=>type_chart - ip_title = 'CHART LINES' ). - lo_drawing->graph = lo_line. - lo_drawing->graph_type = zcl_excel_drawing=>c_graph_line. - - "Set chart position (anchor 2 cells) - ls_upper-row = 0. - ls_upper-col = 0. - ls_lower-row = 30. - ls_lower-col = 20. - lo_drawing->set_position2( - EXPORTING - ip_from = ls_upper - ip_to = ls_lower ). - - lo_drawing->set_media( - EXPORTING - ip_media_type = zcl_excel_drawing=>c_media_type_xml ). - - lo_worksheet->add_drawing( lo_drawing ). - - " Values sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for chart - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = lv_value ). - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = lv_value ). - lv_value = -1. - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'One (Minus)' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Three' ). - - " Set values for chart - lv_value = 3. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = lv_value ). - lv_value = 1. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = lv_value ). - lv_value = 2. - lo_worksheet->set_cell( ip_column = 'E' ip_row = 3 ip_value = lv_value ). - - " Set labels for chart - lo_worksheet->set_cell( ip_column = 'F' ip_row = 3 ip_value = 'Two' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 2 ip_value = 'One' ). - lo_worksheet->set_cell( ip_column = 'F' ip_row = 1 ip_value = 'Three' ). - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel39.prog.xml b/src/demos/zdemo_excel39.prog.xml deleted file mode 100644 index fe9f92f..0000000 --- a/src/demos/zdemo_excel39.prog.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - ZDEMO_EXCEL39 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Drawings - 24 - - - S - POBJTYPE - . - 9 - D - - - S - P_CLASS - . - 9 - D - - - S - P_OBJID - . - 9 - D - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel4.prog.abap b/src/demos/zdemo_excel4.prog.abap deleted file mode 100644 index 5b5f020..0000000 --- a/src/demos/zdemo_excel4.prog.abap +++ /dev/null @@ -1,115 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL4 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - - lv_tabcolor TYPE zexcel_s_tabcolor, - - ls_header TYPE zexcel_s_worksheet_head_foot, - ls_footer TYPE zexcel_s_worksheet_head_foot. - -CONSTANTS: gc_save_file_name TYPE string VALUE '04_Sheets.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). -* Set color to tab with sheetname - Red - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = 'FF' - ip_green = '00' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to second sheet' ip_hyperlink = lo_hyperlink ). - - " Page printing settings - lo_worksheet->sheet_setup->set_page_margins( ip_header = '1' ip_footer = '1' ip_unit = 'cm' ). - lo_worksheet->sheet_setup->black_and_white = 'X'. - lo_worksheet->sheet_setup->fit_to_page = 'X'. " you should turn this on to activate fit_to_height and fit_to_width - lo_worksheet->sheet_setup->fit_to_height = 0. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->fit_to_width = 2. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lo_worksheet->sheet_setup->page_order = zcl_excel_sheet_setup=>c_ord_downthenover. - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->scale = 80. " used only if ip_fit_to_page = SPACE - - " Header and Footer - ls_header-right_value = 'print date &D'. - ls_header-right_font-size = 8. - ls_header-right_font-name = zcl_excel_style_font=>c_name_arial. - - ls_footer-left_value = '&Z&F'. "Path / Filename - ls_footer-left_font = ls_header-right_font. - ls_footer-right_value = 'page &P of &N'. "page x of y - ls_footer-right_font = ls_header-right_font. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). -* Set color to tab with sheetname - Green - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = '00' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to first sheet' ip_hyperlink = lo_hyperlink ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Sheet3 is hidden' ). - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). -* Set color to tab with sheetname - Blue - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = '00' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). -* Set color to tab with sheetname - other color - lv_tabcolor-rgb = zcl_excel_style_color=>create_new_argb( ip_red = '00' - ip_green = 'FF' - ip_blu = 'FF' ). - lo_worksheet->set_tabcolor( lv_tabcolor ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Cell B3 has value 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 0 ). - lo_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_hidezero. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel4.prog.xml b/src/demos/zdemo_excel4.prog.xml deleted file mode 100644 index 3e3c349..0000000 --- a/src/demos/zdemo_excel4.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL4 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Create XLXS with multiple sheets - 49 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel40.prog.abap b/src/demos/zdemo_excel40.prog.abap deleted file mode 100644 index 57ddf89..0000000 --- a/src/demos/zdemo_excel40.prog.abap +++ /dev/null @@ -1,63 +0,0 @@ -REPORT zdemo_excel40. - - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_changer TYPE REF TO zif_excel_style_changer. - -DATA: lv_row TYPE zexcel_cell_row, - lv_col TYPE i, - lv_row_char TYPE char10, - lv_value TYPE string, - ls_fontcolor TYPE zexcel_style_color_argb. - -CONSTANTS: gc_save_file_name TYPE string VALUE '40_Printsettings.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo Printsettings' ). - -*--------------------------------------------------------------------* -* Prepare sheet with trivial data -* - first 4 columns will have fontocolor set -* - first 3 rows will have fontcolor set -* These marked cells will be used for repeatable rows/columns on printpages -*--------------------------------------------------------------------* - lo_worksheet->set_area( - ip_range = 'A1:T100' - ip_formula = 'CHAR(64+COLUMN())&TEXT(ROW(),"????????0")' - ip_area = lo_worksheet->c_area-whole ). - - lo_style_changer = zcl_excel_style_changer=>create( lo_excel ). - lo_style_changer->set_fill_filltype( zcl_excel_style_fill=>c_fill_solid ). - lo_style_changer->set_fill_fgcolor_rgb( zcl_excel_style_color=>c_yellow ). - lo_worksheet->change_area_style( - ip_range = 'A1:T3' - ip_style_changer = lo_style_changer ). - - lo_style_changer = zcl_excel_style_changer=>create( lo_excel ). - lo_style_changer->set_font_color_rgb( zcl_excel_style_color=>c_red ). - lo_worksheet->change_area_style( - ip_range = 'A1:D100' - ip_style_changer = lo_style_changer ). - -*--------------------------------------------------------------------* -* Printsettings -*--------------------------------------------------------------------* - TRY. - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = 'A' - iv_columns_to = 'D' ). - lo_worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = 1 - iv_rows_to = 3 ). - CATCH zcx_excel . - ENDTRY. - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel40.prog.xml b/src/demos/zdemo_excel40.prog.xml deleted file mode 100644 index d9e5dff..0000000 --- a/src/demos/zdemo_excel40.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL40 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Area and Print settings - 39 - - - S - S_ICON - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel41.prog.abap b/src/demos/zdemo_excel41.prog.abap deleted file mode 100644 index c88be71..0000000 --- a/src/demos/zdemo_excel41.prog.abap +++ /dev/null @@ -1,102 +0,0 @@ -REPORT zdemo_excel41. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'ABAP2XLSX Inheritance.xlsx'. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL1 -* Variation of ZCL_EXCEL that creates numerous sheets -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel1 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor IMPORTING iv_sheetcount TYPE i DEFAULT 5 - RAISING zcx_excel. -ENDCLASS. - -CLASS lcl_my_zcl_excel1 IMPLEMENTATION. - METHOD constructor. - DATA: lv_sheets_to_create TYPE i. - super->constructor( ). - lv_sheets_to_create = iv_sheetcount - 1. " one gets created by standard class - DO lv_sheets_to_create TIMES. - TRY. - me->add_new_worksheet( ). - CATCH zcx_excel. - ENDTRY. - ENDDO. - me->set_active_sheet_index( 1 ). - - ENDMETHOD. -ENDCLASS. - -*--------------------------------------------------------------------* -* Demo inheritance ZCL_EXCEL_WORKSHEET -* Variation of ZCL_EXCEL_WORKSHEET ( and ZCL_EXCEL that calls the new type of worksheet ) -* that sets a fixed title -*--------------------------------------------------------------------* -CLASS lcl_my_zcl_excel2 DEFINITION INHERITING FROM zcl_excel. - PUBLIC SECTION. - METHODS: constructor RAISING zcx_excel. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet DEFINITION INHERITING FROM zcl_excel_worksheet. - PUBLIC SECTION. - METHODS: constructor IMPORTING ip_excel TYPE REF TO zcl_excel - ip_title TYPE zexcel_sheet_title OPTIONAL " Will be ignored - keep parameter for demonstration purpose - RAISING zcx_excel. -ENDCLASS. - -CLASS lcl_my_zcl_excel2 IMPLEMENTATION. - METHOD constructor. - - DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet. - - super->constructor( ). - -* To use own worksheet we have to remove the standard worksheet - lo_worksheet = get_active_worksheet( ). - me->worksheets->remove( lo_worksheet ). -* and replace it with own version - CREATE OBJECT lo_worksheet TYPE lcl_my_zcl_excel_worksheet - EXPORTING - ip_excel = me - ip_title = 'This title will be ignored'. - me->worksheets->add( lo_worksheet ). - - ENDMETHOD. -ENDCLASS. - -CLASS lcl_my_zcl_excel_worksheet IMPLEMENTATION. - METHOD constructor. - super->constructor( ip_excel = ip_excel - ip_title = 'Inherited Worksheet' ). - - ENDMETHOD. -ENDCLASS. - -DATA: go_excel1 TYPE REF TO lcl_my_zcl_excel1. -DATA: go_excel2 TYPE REF TO lcl_my_zcl_excel2. - - -SELECTION-SCREEN BEGIN OF BLOCK bli WITH FRAME TITLE TEXT-bli. -PARAMETERS: rbi_1 RADIOBUTTON GROUP rbi DEFAULT 'X' , " Simple inheritance - rbi_2 RADIOBUTTON GROUP rbi. -SELECTION-SCREEN END OF BLOCK bli. - -INCLUDE zdemo_excel_outputopt_incl. - -END-OF-SELECTION. - - CASE 'X'. - - WHEN rbi_1. " Simple inheritance of zcl_excel, object created directly - CREATE OBJECT go_excel1 - EXPORTING - iv_sheetcount = 5. - lcl_output=>output( go_excel1 ). - - WHEN rbi_2. " Inheritance of zcl_excel_worksheet, inheritance of zcl_excel needed to allow this - CREATE OBJECT go_excel2. - lcl_output=>output( go_excel2 ). - - - ENDCASE. diff --git a/src/demos/zdemo_excel41.prog.xml b/src/demos/zdemo_excel41.prog.xml deleted file mode 100644 index 7f16d30..0000000 --- a/src/demos/zdemo_excel41.prog.xml +++ /dev/null @@ -1,1711 +0,0 @@ - - - - - - ZDEMO_EXCEL41 - 1 - T - E - X - X - - - -
        - ZDEMO_EXCEL41 - 9000 - E - 9000 - N - 9000 - 027 - 120 -
        - - - SCREEN - SCREEN - - - CUST_CTRL - CC_9000 - SCREEN - 001 - 001 - 120 - 027 - - - - - SCREEN - SCREEN - OKCODE - OK_CODE - ____________________ - 020 - 020 - 001 - CHAR - X - - - - - PROCESS BEFORE OUTPUT. - - - MODULE STATUS_9000. - - - - PROCESS AFTER INPUT. - - - MODULE USER_COMMAND_9000 AT EXIT-COMMAND. - - - MODULE USER_COMMAND_9000. - - -
        -
        - - - 000010 - 000010 - - - - 9000 - D - 000006 - 000006 - 0001 - 9000 - - - TEST - D - 000005 - 000005 - 0001 - test - - - - - %EX - 001 - S - Exit - X - - - %PC - 001 - S - File... - F - - - %PRI - 001 - S - ICON_PRINT - @0X@ - Print - - - %SC - 001 - S - ICON_SEARCH - @13@ - Find... - F - - - %SC - 002 - S - ICON_SEARCH - @13@ - Find - S - - - %SC+ - 001 - S - ICON_SEARCH_NEXT - @4E@ - Find next - X - - - %SL - 001 - S - Office - E - - - %ST - 001 - S - Report tree - R - - - ABBR - 001 - S - ICON_CANCEL - @0W@ - Cancel - - - ASDF - 001 - S - Asdf - - - BACK - 001 - S - ICON_OKAY - @0V@ - Back - B - - - ENTER - 001 - S - ICON_OKAY - @0V@ - Enter - Enter - - - ENTER2 - 001 - S - Enter2 - - - EXIT - 001 - E - S - Exit - - - HUGO - 001 - S - Hugp - - - OKAY - 001 - S - ICON_OKAY - @0V@ - Okay - OKAY - - - P+ - 001 - S - Next page - - - P++ - 001 - S - Last Page - - - P- - 001 - S - Previous Page - - - P-- - 001 - S - First Page - - - PICK - 001 - S - ICON_SELECT_DETAIL - @16@ - Choose - S - - - PRI - 001 - S - ICON_PRINT - @0X@ - Print - P - - - RW - 001 - S - ICON_CANCEL - @0W@ - Cancel - A - - - - - 000001 - 01 - F - PRI - 001 - - - 000001 - 02 - M - 000002 - - - 000001 - 03 - F - %EX - 001 - - - 000002 - 01 - F - %SL - 001 - - - 000002 - 02 - F - %ST - 001 - - - 000002 - 03 - F - %PC - 001 - - - 000003 - 01 - F - PICK - 001 - - - 000003 - 02 - F - %SC - 001 - - - 000003 - 03 - F - %SC+ - 001 - - - 000003 - 04 - F - RW - 001 - - - 000004 - 01 - F - BACK - 001 - - - 000005 - 01 - F - PRI - 001 - - - 000005 - 02 - M - 000006 - - - 000005 - 03 - F - %EX - 001 - - - 000006 - 01 - F - %SL - 001 - - - 000006 - 02 - F - %ST - 001 - - - 000006 - 03 - F - %PC - 001 - - - 000007 - 01 - F - PICK - 001 - - - 000007 - 02 - F - %SC - 001 - - - 000007 - 03 - F - %SC+ - 001 - - - 000007 - 04 - F - RW - 001 - - - 000008 - 01 - F - BACK - 001 - - - 000009 - 01 - F - PRI - 001 - - - 000009 - 02 - M - 000010 - - - 000009 - 03 - F - %EX - 001 - - - 000010 - 01 - F - %SL - 001 - - - 000010 - 02 - F - %ST - 001 - - - 000010 - 03 - F - %PC - 001 - - - 000011 - 01 - F - PICK - 001 - - - 000011 - 02 - F - %SC - 001 - - - 000011 - 03 - F - %SC+ - 001 - - - 000011 - 04 - F - RW - 001 - - - 000012 - 01 - F - BACK - 001 - - - 000013 - 01 - F - PRI - 001 - - - 000013 - 02 - M - 000014 - - - 000013 - 03 - F - %EX - 001 - - - 000014 - 01 - F - %SL - 001 - - - 000014 - 02 - F - %ST - 001 - - - 000014 - 03 - F - %PC - 001 - - - 000015 - 01 - F - PICK - 001 - - - 000015 - 02 - F - %SC - 001 - - - 000015 - 03 - F - %SC+ - 001 - - - 000015 - 04 - F - RW - 001 - - - 000016 - 01 - F - BACK - 001 - - - 000017 - 01 - F - PRI - 001 - - - 000017 - 02 - M - 000018 - - - 000017 - 03 - F - %EX - 001 - - - 000018 - 01 - F - %SL - 001 - - - 000018 - 02 - F - %ST - 001 - - - 000018 - 03 - F - %PC - 001 - - - 000019 - 01 - F - PICK - 001 - - - 000019 - 02 - F - %SC - 001 - - - 000019 - 03 - F - %SC+ - 001 - - - 000019 - 04 - F - RW - 001 - - - 000020 - 01 - F - BACK - 001 - - - - - 000001 - S - List - L - - - 000002 - S - Save/Send - S - - - 000003 - S - Edit - E - - - 000004 - S - Goto - G - - - 000005 - S - List - L - - - 000006 - S - Save/Send - S - - - 000007 - S - Edit - E - - - 000008 - S - Goto - G - - - 000009 - S - List - L - - - 000010 - S - Save/Send - S - - - 000011 - S - Edit - E - - - 000012 - S - Goto - G - - - 000013 - S - List - L - - - 000014 - S - Save/Send - S - - - 000015 - S - Edit - E - - - 000016 - S - Goto - G - - - 000017 - S - List - L - - - 000018 - S - Save/Send - S - - - 000019 - S - Edit - E - - - 000020 - S - Goto - G - - - - - 000001 - 01 - 000001 - - - 000001 - 02 - 000003 - - - 000001 - 03 - 000004 - - - 000002 - 01 - 000005 - - - 000002 - 02 - 000007 - - - 000002 - 03 - 000008 - - - 000003 - 01 - 000009 - - - 000003 - 02 - 000011 - - - 000003 - 03 - 000012 - - - 000004 - 01 - 000013 - - - 000004 - 02 - 000015 - - - 000004 - 03 - 000016 - - - 000005 - 01 - 000017 - - - 000005 - 02 - 000019 - - - 000005 - 03 - 000020 - - - - - 000001 - 0001 - 01 - 02 - - - 000001 - 0001 - 02 - 86 - - - 000001 - 0001 - 03 - 71 - - - 000001 - 0001 - 04 - 84 - - - 000001 - 0001 - 05 - 12 - - - 000001 - 0001 - 06 - 06 - - - 000001 - 0001 - 07 - 03 - - - 000001 - 0001 - 08 - 05 - - - 000002 - 0001 - 01 - 02 - - - 000002 - 0001 - 02 - 86 - - - 000002 - 0001 - 03 - 71 - - - 000002 - 0001 - 04 - 84 - - - 000002 - 0001 - 05 - 12 - - - 000002 - 0001 - 06 - 05 - - - 000002 - 0001 - 07 - 00 - - - 000003 - 0001 - 01 - 02 - - - 000003 - 0001 - 02 - 86 - - - 000003 - 0001 - 03 - 71 - - - 000003 - 0001 - 04 - 84 - - - 000003 - 0001 - 05 - 12 - - - 000003 - 0001 - 06 - 00 - - - 000003 - 0001 - 07 - 05 - - - 000004 - 0001 - 01 - 02 - - - 000004 - 0001 - 02 - 86 - - - 000004 - 0001 - 03 - 71 - - - 000004 - 0001 - 04 - 84 - - - 000004 - 0001 - 05 - 12 - - - 000004 - 0001 - 06 - 05 - - - 000005 - 0001 - 01 - 02 - - - 000005 - 0001 - 02 - 86 - - - 000005 - 0001 - 03 - 71 - - - 000005 - 0001 - 04 - 84 - - - 000005 - 0001 - 05 - 12 - - - 000005 - 0001 - 15 - 13 - - - 000006 - 0001 - 01 - 13 - - - - - 000001 - 00 - ENTER - 001 - - - 000001 - 02 - PICK - 001 - - - 000001 - 03 - BACK - 001 - - - 000001 - 05 - ENTER - 001 - - - 000001 - 06 - ENTER2 - 001 - - - 000001 - 12 - RW - 001 - - - 000001 - 15 - %EX - 001 - - - 000001 - 71 - %SC - 002 - - - 000001 - 80 - P-- - 001 - - - 000001 - 81 - P- - 001 - - - 000001 - 82 - P+ - 001 - - - 000001 - 83 - P++ - 001 - - - 000001 - 84 - %SC+ - 001 - - - 000001 - 86 - %PRI - 001 - - - 000002 - 00 - OKAY - 001 - - - 000002 - 02 - PICK - 001 - - - 000002 - 03 - BACK - 001 - - - 000002 - 05 - OKAY - 001 - - - 000002 - 12 - RW - 001 - - - 000002 - 15 - %EX - 001 - - - 000002 - 71 - %SC - 002 - - - 000002 - 80 - P-- - 001 - - - 000002 - 81 - P- - 001 - - - 000002 - 82 - P+ - 001 - - - 000002 - 83 - P++ - 001 - - - 000002 - 84 - %SC+ - 001 - - - 000002 - 86 - %PRI - 001 - - - 000003 - 00 - OKAY - 001 - - - 000003 - 02 - PICK - 001 - - - 000003 - 03 - BACK - 001 - - - 000003 - 05 - OKAY - 001 - - - 000003 - 12 - RW - 001 - - - 000003 - 15 - %EX - 001 - - - 000003 - 71 - %SC - 002 - - - 000003 - 80 - P-- - 001 - - - 000003 - 81 - P- - 001 - - - 000003 - 82 - P+ - 001 - - - 000003 - 83 - P++ - 001 - - - 000003 - 84 - %SC+ - 001 - - - 000003 - 86 - %PRI - 001 - - - 000004 - 00 - OKAY - 001 - - - 000004 - 02 - PICK - 001 - - - 000004 - 03 - BACK - 001 - - - 000004 - 05 - OKAY - 001 - - - 000004 - 12 - RW - 001 - - - 000004 - 15 - %EX - 001 - - - 000004 - 71 - %SC - 002 - - - 000004 - 80 - P-- - 001 - - - 000004 - 81 - P- - 001 - - - 000004 - 82 - P+ - 001 - - - 000004 - 83 - P++ - 001 - - - 000004 - 84 - %SC+ - 001 - - - 000004 - 86 - %PRI - 001 - - - 000005 - 00 - HUGO - 001 - - - 000005 - 02 - PICK - 001 - - - 000005 - 03 - BACK - 001 - - - 000005 - 12 - RW - 001 - - - 000005 - 13 - HUGO - 001 - - - 000005 - 15 - %EX - 001 - - - 000005 - 71 - %SC - 002 - - - 000005 - 80 - P-- - 001 - - - 000005 - 81 - P- - 001 - - - 000005 - 82 - P+ - 001 - - - 000005 - 83 - P++ - 001 - - - 000005 - 84 - %SC+ - 001 - - - 000005 - 86 - %PRI - 001 - - - 000006 - 03 - BACK - 001 - - - 000006 - 12 - ABBR - 001 - - - 000006 - 13 - ASDF - 001 - - - 000006 - 15 - EXIT - 001 - - - - - 9000 - ABBR - - - 9000 - ASDF - - - 9000 - BACK - - - 9000 - EXIT - - - TEST - %EX - - - TEST - %PC - - - TEST - %PRI - - - TEST - %PRN - - - TEST - %SC - - - TEST - %SC+ - - - TEST - %SL - - - TEST - %ST - - - TEST - BACK - - - TEST - HUGO - - - TEST - P+ - - - TEST - P++ - - - TEST - P- - - - TEST - P-- - - - TEST - PICK - - - TEST - PRI - - - TEST - RW - - - - - A - 000001 - D - Line Selection List - - - P - 000001 - D - Line Selection List - - - B - 000001 - 0001 - Line Selection List - - - A - 000002 - D - Line Selection List - - - P - 000002 - D - Line Selection List - - - B - 000002 - 0001 - D - Line Selection List - - - A - 000003 - D - Line Selection List - - - P - 000003 - D - jhg - - - B - 000003 - 0001 - D - jhg - - - A - 000004 - D - Line Selection List - - - P - 000004 - D - okay - - - B - 000004 - 0001 - D - okay - - - A - 000005 - D - Line Selection List - - - P - 000005 - D - Line Selection List - - - B - 000005 - 0001 - D - Line Selection List - - - A - 000006 - D - 9000 - - - P - 000006 - D - 9000 - - - B - 000006 - 0001 - D - 9000 - - - - - - R - abap2xlsx Demo: - 15 - - - S - RBI_1 - ZCL_EXCEL - 17 - - - S - RBI_2 - ZCL_EXCEL_WORKSHEET - 27 - - -
        -
        -
        diff --git a/src/demos/zdemo_excel42.prog.abap b/src/demos/zdemo_excel42.prog.abap deleted file mode 100644 index ebfaada..0000000 --- a/src/demos/zdemo_excel42.prog.abap +++ /dev/null @@ -1,101 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL42 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel42. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_theme TYPE REF TO zcl_excel_theme, - lo_style TYPE REF TO zcl_excel_style, - lv_style_guid TYPE zexcel_cell_style. -DATA: gc_save_file_name TYPE string VALUE '42 Theme Manipulation demo.&'. -INCLUDE zdemo_excel_outputopt_incl. - -INITIALIZATION. - - -START-OF-SELECTION. - - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Create a bold / italic style with usage of major font - lo_style = lo_excel->add_new_style( ). - lo_style->font->bold = abap_true. - lo_style->font->italic = abap_true. - lo_style->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style->font->color-rgb = zcl_excel_style_color=>c_red. - lv_style_guid = lo_style->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Styles' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = 'Bold text' ip_style = lv_style_guid ). - - "create theme - CREATE OBJECT lo_theme. - lo_theme->set_theme_name( iv_name = 'Theme Demo 42 A2X' ). - lo_theme->set_color_scheme_name( iv_name = 'Demo 42 A2X' ). - - "set theme colors - lo_theme->set_color( - EXPORTING - iv_type = zcl_excel_theme_color_scheme=>c_dark1 - iv_srgb = '5F9EA0' -* iv_syscolorname = -* iv_syscolorlast = - ). - lo_theme->set_color( - EXPORTING - iv_type = zcl_excel_theme_color_scheme=>c_dark2 - iv_srgb = 'FFA500' -* iv_syscolorname = -* iv_syscolorlast = -). - lo_theme->set_color( - EXPORTING - iv_type = zcl_excel_theme_color_scheme=>c_light1 - iv_srgb = '778899' -* iv_syscolorname = -* iv_syscolorlast = -). - - lo_theme->set_color( - EXPORTING - iv_type = zcl_excel_theme_color_scheme=>c_light1 - iv_srgb = '9932CC' -* iv_syscolorname = -* iv_syscolorlast = -). - lo_theme->set_font_scheme_name( iv_name = 'Demo 42 A2X' ). - - - "set theme latin fonts - major and minor - lo_theme->set_latin_font( - EXPORTING - iv_type = zcl_excel_theme_font_scheme=>c_major - iv_typeface = 'Britannic Bold' -* iv_panose = -* iv_pitchfamily = -* iv_charset = - ). - lo_theme->set_latin_font( - EXPORTING - iv_type = zcl_excel_theme_font_scheme=>c_minor - iv_typeface = 'Broadway' -* iv_panose = -* iv_pitchfamily = -* iv_charset = - ). - "push theme to file - lo_excel->set_theme( io_theme = lo_theme ). - - "output - lcl_output=>output( cl_excel = lo_excel ). diff --git a/src/demos/zdemo_excel42.prog.xml b/src/demos/zdemo_excel42.prog.xml deleted file mode 100644 index 224a8c9..0000000 --- a/src/demos/zdemo_excel42.prog.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - ZDEMO_EXCEL42 - 1 - * - K - E - X - X - - - - R - abap2xlsx Demo: Theme manipulation demo - 39 - - - - - diff --git a/src/demos/zdemo_excel43.prog.abap b/src/demos/zdemo_excel43.prog.abap deleted file mode 100644 index b39eaf5..0000000 --- a/src/demos/zdemo_excel43.prog.abap +++ /dev/null @@ -1,78 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL43 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel43. - -" -"Locally created Structure, which should be equal to the excels structure -" -TYPES: BEGIN OF lty_excel_s, - dummy TYPE dummy. -TYPES: END OF lty_excel_s. - -DATA lt_tab TYPE TABLE OF lty_excel_s. -DATA: lt_filetable TYPE filetable, - ls_filetable TYPE file_table. -DATA lv_subrc TYPE i. -DATA: lo_excel TYPE REF TO zcl_excel, - lo_reader TYPE REF TO zif_excel_reader, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table. -DATA: lo_error TYPE REF TO cx_root. - -PARAMETERS p_file TYPE string LOWER CASE. -PARAMETERS p_skip_b AS CHECKBOX. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. - " - "Ask User to choose a path - " - cl_gui_frontend_services=>file_open_dialog( EXPORTING window_title = 'Excel selection' - file_filter = '*.xlsx' - multiselection = abap_false - CHANGING file_table = lt_filetable " Tabelle, die selektierte Dateien enthält - rc = lv_subrc - EXCEPTIONS file_open_dialog_failed = 1 - cntl_error = 2 - error_no_gui = 3 - not_supported_by_gui = 4 - OTHERS = 5 ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - ENDIF. - DELETE lt_filetable FROM 2. - READ TABLE lt_filetable INDEX 1 INTO ls_filetable. - IF sy-subrc = 0. - p_file = ls_filetable-filename. - ENDIF. - -START-OF-SELECTION. - - TRY. - - CREATE OBJECT lo_reader TYPE zcl_excel_reader_2007. - lo_excel = lo_reader->load_file( p_file ). - lo_worksheet = lo_excel->get_worksheet_by_index( iv_index = 1 ). - lo_worksheet->get_table( - EXPORTING - iv_skip_bottom_empty_rows = p_skip_b - IMPORTING - et_table = lt_tab ). - - " - "Do the presentation stuff - " - - cl_salv_table=>factory( IMPORTING r_salv_table = lo_salv - CHANGING t_table = lt_tab ). - lo_salv->display( ). - - CATCH cx_root INTO lo_error. - MESSAGE lo_error TYPE 'I' DISPLAY LIKE 'E'. - ENDTRY. diff --git a/src/demos/zdemo_excel43.prog.xml b/src/demos/zdemo_excel43.prog.xml deleted file mode 100644 index 2e95fa3..0000000 --- a/src/demos/zdemo_excel43.prog.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - ZDEMO_EXCEL43 - 1 - E - X - X - - - - R - abap2xlsx Demo: Demo 43 GET_TABLE - 33 - - - S - P_FILE - Excel file - 18 - - - S - P_SKIP_B - Skip bottom empty rows - 30 - - - - - diff --git a/src/demos/zdemo_excel44.prog.abap b/src/demos/zdemo_excel44.prog.abap deleted file mode 100644 index da052a4..0000000 --- a/src/demos/zdemo_excel44.prog.abap +++ /dev/null @@ -1,58 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL44 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel44. - -DATA: lo_excel_no_line_if_empty TYPE REF TO zcl_excel, - lo_excel TYPE REF TO zcl_excel, - lo_worksheet_no_line_if_empty TYPE REF TO zcl_excel_worksheet, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog. - -DATA: gc_save_file_name TYPE string VALUE '44_iTabEmpty.csv'. -INCLUDE zdemo_excel_outputopt_incl. - -SELECTION-SCREEN BEGIN OF BLOCK b44 WITH FRAME TITLE txt_b44. - -* No line if internal table is empty -DATA: p_mtyfil TYPE flag VALUE abap_true. - -SELECTION-SCREEN END OF BLOCK b44. - -INITIALIZATION. - txt_b44 = 'Testing empty file option'(b44). - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel_no_line_if_empty. - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet_no_line_if_empty = lo_excel_no_line_if_empty->get_active_worksheet( ). - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet_no_line_if_empty->set_title( 'Internal table' ). - lo_worksheet->set_title( 'Internal table' ). - - DATA lt_test TYPE TABLE OF sflight. - - lo_worksheet_no_line_if_empty->bind_table( ip_table = lt_test - iv_no_line_if_empty = p_mtyfil ). - - p_mtyfil = abap_false. - lo_worksheet->bind_table( ip_table = lt_test - iv_no_line_if_empty = p_mtyfil ). - -*** Create output - lcl_output=>output( EXPORTING cl_excel = lo_excel_no_line_if_empty - iv_writerclass_name = 'ZCL_EXCEL_WRITER_CSV' ). - - gc_save_file_name = '44_iTabNotEmpty.csv'. - lcl_output=>output( EXPORTING cl_excel = lo_excel - iv_writerclass_name = 'ZCL_EXCEL_WRITER_CSV' ). diff --git a/src/demos/zdemo_excel44.prog.xml b/src/demos/zdemo_excel44.prog.xml deleted file mode 100644 index f58e919..0000000 --- a/src/demos/zdemo_excel44.prog.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - ZDEMO_EXCEL44 - 1 - T - E - X - X - - - - I - B44 - Testing empty file option - 50 - - - R - abap2xlsx Demo: Demo excel 44 - 29 - - - S - P_MTYFIL - No data => No empty line - 32 - - - - - diff --git a/src/demos/zdemo_excel45.prog.abap b/src/demos/zdemo_excel45.prog.abap deleted file mode 100644 index 4f9bb77..0000000 --- a/src/demos/zdemo_excel45.prog.abap +++ /dev/null @@ -1,66 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL45 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* -REPORT zdemo_excel45. - -CONSTANTS: - gc_ws_title_validation TYPE zexcel_sheet_title VALUE 'Validation'. - -DATA: - lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lv_validation_string TYPE string, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_row TYPE zexcel_cell_row. - - -CONSTANTS: - gc_save_file_name TYPE string VALUE '45_ShowDropdown.xlsx'. - -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - -*** Sheet Admin - -* Creates active sheet - CREATE OBJECT lo_excel. - -* Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -* Set sheet name "Validation" - lo_worksheet->set_title( gc_ws_title_validation ). - - -* short validations can be entered as string (<254Char) - lv_validation_string = '"New York, Rio, Tokyo"'. - -* create validation object - lo_data_validation = lo_worksheet->add_new_data_validation( ). - -* create new validation from validation string - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = lv_validation_string. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_row_to = 4. - lo_data_validation->cell_column = 'A'. - lo_data_validation->cell_column_to = 'A'. - lo_data_validation->allowblank = 'X'. - lo_data_validation->showdropdown = 'X'. - -* add some fields with validation - lv_row = 2. - WHILE lv_row <= 4. - lo_worksheet->set_cell( ip_row = lv_row ip_column = 'A' ip_value = 'Select' ). - lv_row = lv_row + 1. - ENDWHILE. - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel45.prog.xml b/src/demos/zdemo_excel45.prog.xml deleted file mode 100644 index 59ff647..0000000 --- a/src/demos/zdemo_excel45.prog.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - ZDEMO_EXCEL45 - 1 - E - X - X - - - - R - abap2xlsx Demo: Show Dropdown - 29 - - - - - diff --git a/src/demos/zdemo_excel46.prog.abap b/src/demos/zdemo_excel46.prog.abap deleted file mode 100644 index 9191d6c..0000000 --- a/src/demos/zdemo_excel46.prog.abap +++ /dev/null @@ -1,71 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL46 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* -REPORT zdemo_excel46. - -CONSTANTS: - gc_ws_title_validation TYPE zexcel_sheet_title VALUE 'Validation'. - -DATA: - lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lv_validation_string TYPE string, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_row TYPE zexcel_cell_row. - - -CONSTANTS: - gc_save_file_name TYPE string VALUE '46_ValidationWarning.xlsx'. - -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - -*** Sheet Validation - -* Creates active sheet - CREATE OBJECT lo_excel. - -* Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -* Set sheet name "Validation" - lo_worksheet->set_title( gc_ws_title_validation ). - - -* short validations can be entered as string (<254Char) - lv_validation_string = '"New York, Rio, Tokyo"'. - -* create validation object - lo_data_validation = lo_worksheet->add_new_data_validation( ). - -* create new validation from validation string - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = lv_validation_string. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_row_to = 4. - lo_data_validation->cell_column = 'A'. - lo_data_validation->cell_column_to = 'A'. - lo_data_validation->allowblank = 'X'. - lo_data_validation->showdropdown = 'X'. - lo_data_validation->prompttitle = 'Value list available'. - lo_data_validation->prompt = 'Please select a value from the value list'. - lo_data_validation->errorstyle = zcl_excel_data_validation=>c_style_warning. - lo_data_validation->errortitle = 'Warning'. - lo_data_validation->error = 'This value does not exist in current value list.'. - -* add some fields with validation - lv_row = 2. - WHILE lv_row <= 4. - lo_worksheet->set_cell( ip_row = lv_row ip_column = 'A' ip_value = 'Select' ). - lv_row = lv_row + 1. - ENDWHILE. - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel46.prog.xml b/src/demos/zdemo_excel46.prog.xml deleted file mode 100644 index 3451d57..0000000 --- a/src/demos/zdemo_excel46.prog.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - ZDEMO_EXCEL46 - 1 - E - X - X - - - - R - abap2xlsx Demo: Validation Style Warning - 40 - - - - - diff --git a/src/demos/zdemo_excel47.prog.abap b/src/demos/zdemo_excel47.prog.abap deleted file mode 100644 index 539890a..0000000 --- a/src/demos/zdemo_excel47.prog.abap +++ /dev/null @@ -1,232 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report zdemo_excel47 -*&---------------------------------------------------------------------* -*& -*& - BIND_TABLE and Calculated Columns -*& -*&---------------------------------------------------------------------* -REPORT zdemo_excel47. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lo_column TYPE REF TO zcl_excel_column. - -CONSTANTS: gc_save_file_name TYPE string VALUE '47_ColumnFormulas.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -CLASS lcl_app DEFINITION. - PUBLIC SECTION. - - METHODS main - RAISING - zcx_excel. - -ENDCLASS. - -CLASS lcl_app IMPLEMENTATION. - - METHOD main. - - TYPES: BEGIN OF ty_tblsheet1_line, - carrid TYPE sflight-carrid, - connid TYPE sflight-connid, - fldate TYPE sflight-fldate, - price TYPE sflight-price, - formula TYPE string, - formula_2 TYPE string, - column_formula TYPE string, - column_formula_2 TYPE sflight-price, - column_formula_3 TYPE sflight-price, - column_formula_4 TYPE sflight-price, - column_formula_5 TYPE string, - column_formula_6 TYPE string, - column_formula_7 TYPE string, - END OF ty_tblsheet1_line, - BEGIN OF ty_tblsheet2_line, - carrid TYPE scarr-carrid, - carrname TYPE scarr-carrname, - END OF ty_tblsheet2_line. - DATA: lv_f1 TYPE string, - ls_tblsheet1 TYPE ty_tblsheet1_line, - lt_tblsheet1 TYPE STANDARD TABLE OF ty_tblsheet1_line, - ls_tblsheet2 TYPE ty_tblsheet2_line, - lt_tblsheet2 TYPE STANDARD TABLE OF ty_tblsheet2_line, - lt_field_catalog TYPE zexcel_t_fieldcatalog, - ls_catalog TYPE zexcel_s_fieldcatalog, - ls_table_settings TYPE zexcel_s_table_settings, - lo_range TYPE REF TO zcl_excel_range. - FIELD-SYMBOLS: TYPE zexcel_s_fieldcatalog. - -*** Initialization - - CREATE OBJECT lo_excel. - - " Sheet1 - lv_f1 = 'TblSheet1[[#This Row],[Airfare]]+100'. " [@Airfare]+100 - ls_tblsheet1-carrid = `AA`. ls_tblsheet1-connid = '0017'. ls_tblsheet1-fldate = '20180116'. ls_tblsheet1-price = '422.94'. ls_tblsheet1-formula = lv_f1. ls_tblsheet1-formula_2 = lv_f1. - APPEND ls_tblsheet1 TO lt_tblsheet1. - ls_tblsheet1-carrid = `AZ`. ls_tblsheet1-connid = '0555'. ls_tblsheet1-fldate = '20180116'. ls_tblsheet1-price = '185.00'. ls_tblsheet1-formula = lv_f1. - APPEND ls_tblsheet1 TO lt_tblsheet1. - ls_tblsheet1-carrid = `LH`. ls_tblsheet1-connid = '0400'. ls_tblsheet1-fldate = '20180119'. ls_tblsheet1-price = '666.00'. ls_tblsheet1-formula = lv_f1. ls_tblsheet1-formula_2 = lv_f1. - APPEND ls_tblsheet1 TO lt_tblsheet1. - ls_tblsheet1-carrid = `AA`. ls_tblsheet1-connid = '0941'. ls_tblsheet1-fldate = '20180117'. ls_tblsheet1-price = '879.82'. ls_tblsheet1-formula = lv_f1. - APPEND ls_tblsheet1 TO lt_tblsheet1. - - " Sheet2 - ls_tblsheet2-carrid = `AA`. ls_tblsheet2-carrname = 'America Airlines'. - APPEND ls_tblsheet2 TO lt_tblsheet2. - ls_tblsheet2-carrid = `AZ`. ls_tblsheet2-carrname = 'Alitalia'. - APPEND ls_tblsheet2 TO lt_tblsheet2. - ls_tblsheet2-carrid = `LH`. ls_tblsheet2-carrname = 'Lufthansa'. - APPEND ls_tblsheet2 TO lt_tblsheet2. - -*** Sheet1 - lo_worksheet = lo_excel->get_active_worksheet( ). - - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_tblsheet1 ). - - LOOP AT lt_field_catalog ASSIGNING . - CASE -fieldname. - WHEN 'CARRID'. - -scrtext_l = 'Company ID'. - WHEN 'AIRFARE'. - -scrtext_l = 'Airfare'. - WHEN 'PRICE'. - -totals_function = zcl_excel_table=>totals_function_average. - WHEN 'FORMULA'. - " Each cell may have a distinct formula, none formula is applied to future new rows - -scrtext_l = 'Formula and aggregate function'. - -formula = abap_true. - -totals_function = zcl_excel_table=>totals_function_sum. - WHEN 'FORMULA_2'. - " each cell may have a distinct formula, a formula is applied to future new rows - -scrtext_l = 'Formula except 1 cell & aggregate fu.'. - -formula = abap_true. - -column_formula = lv_f1. " to apply to future rows - -totals_function = zcl_excel_table=>totals_function_min. - WHEN 'COLUMN_FORMULA'. - " The column formula applies to all rows and to future new rows. Internally, the formula is NOT shared because a column name is used. - -scrtext_l = 'Column formula and aggregate function'. - -column_formula = 'TblSheet1[[#This Row],[Airfare]]+222'. " [@Airfare]+222 - -totals_function = zcl_excel_table=>totals_function_min. - WHEN 'COLUMN_FORMULA_2'. - " The column formula applies to all rows and to future new rows. Internally, the formula is shared. - -scrtext_l = 'C2. Column formula'. - -column_formula = 'D2+100'. - WHEN 'COLUMN_FORMULA_3'. - " The column formula applies to all rows and to future new rows. Internally, the formula is shared. - -scrtext_l = 'C3. Column formula & aggregate function'. - -column_formula = 'D2+100'. - -totals_function = zcl_excel_table=>totals_function_max. - WHEN 'COLUMN_FORMULA_4'. - " The column formula applies to all rows and to future new rows. Internally, the formula is shared. - -scrtext_l = 'C4. Column formula array fu./named range'. - -column_formula = 'A1&";"&_xlfn.IFS(TRUE,NamedRange)'. " =A1&";"&@IFS(TRUE,NamedRange) - WHEN 'COLUMN_FORMULA_5'. - " The column formula applies to all rows and to future new rows. Internally, the formula is NOT shared because it refers to a different sheet. - -scrtext_l = 'C5. Column formula refers to other sheet'. - -column_formula = 'OtherSheet!A2'. - WHEN 'COLUMN_FORMULA_6'. - " The column formula applies to all rows and to future new rows. Internally, the formula is NOT shared. - " The formula seen in Excel: =FILTER(TblSheet2[Company Name],TblSheet2[Airline ID]=[@Airline],"") - -scrtext_l = 'C6. Column formula array fu./other sheet'. - -column_formula = '_xlfn.FILTER(TblSheet2[Company Name],TblSheet2[Company ID]=TblSheet1[[#This Row],[Company ID]],"")'. - WHEN 'COLUMN_FORMULA_7'. - " The column formula applies to all rows and to future new rows. Internally, the formula is NOT shared. - " The formula seen in Excel: =FILTER(Tbl2_Sheet1[Company Name],Tbl2_Sheet1[Airline ID]=[@Airline],"") - -scrtext_l = 'C7. Column formula array fu./same sheet'. - -column_formula = '_xlfn.FILTER(Tbl2_Sheet1[Company Name],Tbl2_Sheet1[Company ID]=TblSheet1[[#This Row],[Company ID]],"")'. - ENDCASE. - ENDLOOP. - - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-table_name = 'TblSheet1'. - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = 1. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( - ip_table = lt_tblsheet1 - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - iv_default_descr = 'L' ). - - " Named range for formula 4 - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'NamedRange'. - lo_range->set_value( ip_sheet_name = lo_worksheet->get_title( ) - ip_start_column = 'B' - ip_start_row = 1 - ip_stop_column = 'B' - ip_stop_row = 1 ). - - - " Second table in same sheet - lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_tblsheet2 ). - - LOOP AT lt_field_catalog ASSIGNING . - CASE -fieldname. - WHEN 'CARRID'. - -scrtext_l = 'Company ID'. - WHEN 'CARRNAME'. - -scrtext_l = 'Company Name'. - ENDCASE. - ENDLOOP. - - CLEAR ls_table_settings. - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-table_name = 'Tbl2_Sheet1'. - ls_table_settings-top_left_column = 'O'. - ls_table_settings-top_left_row = 1. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( - ip_table = lt_tblsheet2 - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - iv_default_descr = 'L' ). - -*** Sheet2 - lo_worksheet = lo_excel->add_new_worksheet( 'Sheet2' ). - - CLEAR ls_table_settings. - ls_table_settings-table_style = zcl_excel_table=>builtinstyle_medium2. - ls_table_settings-table_name = 'TblSheet2'. - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = 1. - ls_table_settings-show_row_stripes = abap_true. - - lo_worksheet->bind_table( - ip_table = lt_tblsheet2 - it_field_catalog = lt_field_catalog - is_table_settings = ls_table_settings - iv_default_descr = 'L' ). - -*** OtherSheet - lo_worksheet = lo_excel->add_new_worksheet( 'OtherSheet' ). - lo_worksheet->set_cell( ip_column = 1 ip_row = 1 ip_value = 'Title' ). - lo_worksheet->set_cell( ip_column = 1 ip_row = 2 ip_value = 'A2' ). - lo_worksheet->set_cell( ip_column = 1 ip_row = 3 ip_value = 'A3' ). - lo_worksheet->set_cell( ip_column = 1 ip_row = 4 ip_value = 'A4' ). - lo_worksheet->set_cell( ip_column = 1 ip_row = 5 ip_value = 'A5' ). - -*** Active sheet = Sheet1 - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - -*** Create output - lcl_output=>output( cl_excel = lo_excel iv_info_message = abap_false ). - - ENDMETHOD. - -ENDCLASS. - -START-OF-SELECTION. - DATA: go_app TYPE REF TO lcl_app, - go_error TYPE REF TO zcx_excel. - TRY. - CREATE OBJECT go_app. - go_app->main( ). - CATCH zcx_excel INTO go_error. - MESSAGE go_error TYPE 'I' DISPLAY LIKE 'E'. - ENDTRY. diff --git a/src/demos/zdemo_excel47.prog.xml b/src/demos/zdemo_excel47.prog.xml deleted file mode 100644 index 3469526..0000000 --- a/src/demos/zdemo_excel47.prog.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - ZDEMO_EXCEL47 - S - D$ - 1 - E - X - D$S - X - - - - R - abap2xlsx Demo: Table Calculated Columns (from Excel 365 or 2019) - 65 - - - - - diff --git a/src/demos/zdemo_excel48.prog.abap b/src/demos/zdemo_excel48.prog.abap deleted file mode 100644 index 17924f2..0000000 --- a/src/demos/zdemo_excel48.prog.abap +++ /dev/null @@ -1,116 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report zdemo_excel48 -*&---------------------------------------------------------------------* -*& -*&---------------------------------------------------------------------* -REPORT zdemo_excel48. - -DATA: - lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_1 TYPE REF TO zcl_excel_style, - lo_style_2 TYPE REF TO zcl_excel_style, - lv_style_1_guid TYPE zexcel_cell_style, - lv_style_2_guid TYPE zexcel_cell_style, - lv_value TYPE string, - ls_rtf TYPE zexcel_s_rtf, - lt_rtf TYPE zexcel_t_rtf. - - -CONSTANTS: - gc_save_file_name TYPE string VALUE '48_MultipleStylesInOneCell.xlsx'. - -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_style_1 = lo_excel->add_new_style( ). - lo_style_1->font->color-rgb = 'FF000000'. - - lv_value = 'normal red underline normal red-underline bold italic bigger Times-New-Roman'. - - " red - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->font->color-rgb = 'FFFF0000'. - ls_rtf-offset = 7. - ls_rtf-length = 3. - ls_rtf-font = lo_style_2->font->get_structure( ). - INSERT ls_rtf INTO TABLE lt_rtf. - - " underline - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->font->underline = abap_true. - lo_style_2->font->underline_mode = lo_style_2->font->c_underline_single. - ls_rtf-offset = 11. - ls_rtf-length = 9. - ls_rtf-font = lo_style_2->font->get_structure( ). - INSERT ls_rtf INTO TABLE lt_rtf. - - " red and underline - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->font->color-rgb = 'FFFF0000'. - lo_style_2->font->underline = abap_true. - lo_style_2->font->underline_mode = lo_style_2->font->c_underline_single. - ls_rtf-offset = 28. - ls_rtf-length = 13. - ls_rtf-font = lo_style_2->font->get_structure( ). - INSERT ls_rtf INTO TABLE lt_rtf. - - " bold - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->font->bold = abap_true. - ls_rtf-offset = 42. - ls_rtf-length = 4. - ls_rtf-font = lo_style_2->font->get_structure( ). - INSERT ls_rtf INTO TABLE lt_rtf. - - " italic - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->font->italic = abap_true. - ls_rtf-offset = 47. - ls_rtf-length = 6. - ls_rtf-font = lo_style_2->font->get_structure( ). - INSERT ls_rtf INTO TABLE lt_rtf. - - " bigger - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->font->size = 28. - ls_rtf-offset = 54. - ls_rtf-length = 6. - ls_rtf-font = lo_style_2->font->get_structure( ). - INSERT ls_rtf INTO TABLE lt_rtf. - - " Times-New-Roman - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_2->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_2->font->family = zcl_excel_style_font=>c_family_roman. - - " Create an underline double style - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->font->underline = abap_true. - lo_style_2->font->underline_mode = zcl_excel_style_font=>c_underline_double. - lo_style_2->font->name = zcl_excel_style_font=>c_name_roman. - lo_style_2->font->scheme = zcl_excel_style_font=>c_scheme_none. - lo_style_2->font->family = zcl_excel_style_font=>c_family_roman. - lv_style_2_guid = lo_style_2->get_guid( ). - ls_rtf-offset = 61. - ls_rtf-length = 15. - ls_rtf-font = lo_style_2->font->get_structure( ). - INSERT ls_rtf INTO TABLE lt_rtf. - - lv_style_1_guid = lo_style_1->get_guid( ). - lo_worksheet->set_cell( - ip_column = 'B' - ip_row = 2 - ip_style = lo_style_1->get_guid( ) - ip_value = lv_value - it_rtf = lt_rtf ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel48.prog.xml b/src/demos/zdemo_excel48.prog.xml deleted file mode 100644 index 6e6c3c2..0000000 --- a/src/demos/zdemo_excel48.prog.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - ZDEMO_EXCEL48 - S - D$ - 1 - X - D$S - X - - - - R - abap2xlsx Demo: multiple styles in one cell - 43 - - - - - diff --git a/src/demos/zdemo_excel49.prog.abap b/src/demos/zdemo_excel49.prog.abap deleted file mode 100644 index 00dfc8c..0000000 --- a/src/demos/zdemo_excel49.prog.abap +++ /dev/null @@ -1,41 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report zdemo_excel49 -*&---------------------------------------------------------------------* -*& -*&---------------------------------------------------------------------* -REPORT zdemo_excel49. -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - ls_table_settings TYPE zexcel_s_table_settings, - ls_t002t TYPE t002t, - lt_t002t TYPE TABLE OF t002t. -CONSTANTS: gc_save_file_name TYPE string VALUE '49_Bind_Table_Conversion_Exit.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - ls_t002t-spras = 'D'. - ls_t002t-sprsl = 'D'. - ls_t002t-sptxt = 'Deutsch'. - APPEND ls_t002t TO lt_t002t. - ls_t002t-spras = 'D'. - ls_t002t-sprsl = 'E'. - ls_t002t-sptxt = 'Englisch'. - APPEND ls_t002t TO lt_t002t. - ls_t002t-spras = 'E'. - ls_t002t-sprsl = 'D'. - ls_t002t-sptxt = 'German'. - APPEND ls_t002t TO lt_t002t. - ls_t002t-spras = 'E'. - ls_t002t-sprsl = 'E'. - ls_t002t-sptxt = 'English'. - APPEND ls_t002t TO lt_t002t. - - CREATE OBJECT lo_excel. - lo_worksheet = lo_excel->get_active_worksheet( ). - ls_table_settings-top_left_column = 'A'. - ls_table_settings-top_left_row = 1. - lo_worksheet->bind_table( - ip_table = lt_t002t - is_table_settings = ls_table_settings - ip_conv_exit_length = abap_true ). - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel49.prog.xml b/src/demos/zdemo_excel49.prog.xml deleted file mode 100644 index 1249024..0000000 --- a/src/demos/zdemo_excel49.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZDEMO_EXCEL49 - S - 1 - X - D$S - X - - - - R - abap2xlsx Demo: Bind Table with field having Conversion Exit - 60 - - - - - diff --git a/src/demos/zdemo_excel5.prog.abap b/src/demos/zdemo_excel5.prog.abap deleted file mode 100644 index cb87e2a..0000000 --- a/src/demos/zdemo_excel5.prog.abap +++ /dev/null @@ -1,79 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL5 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel5. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_cond TYPE REF TO zcl_excel_style_cond. - -DATA: ls_iconset TYPE zexcel_conditional_iconset. - - - -CONSTANTS: gc_save_file_name TYPE string VALUE '05_Conditional.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - - - ls_iconset-iconset = zcl_excel_style_cond=>c_iconset_3trafficlights2. - ls_iconset-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset-cfvo1_value = '0'. - ls_iconset-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset-cfvo2_value = '33'. - ls_iconset-cfvo3_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset-cfvo3_value = '66'. - ls_iconset-showvalue = zcl_excel_style_cond=>c_showvalue_true. - - lo_style_cond->mode_iconset = ls_iconset. - lo_style_cond->set_range( ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset-iconset = zcl_excel_style_cond=>c_iconset_3trafficlights2. - ls_iconset-showvalue = zcl_excel_style_cond=>c_showvalue_false. - lo_style_cond->mode_iconset = ls_iconset. - lo_style_cond->set_range( ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 500 ). - - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel5.prog.xml b/src/demos/zdemo_excel5.prog.xml deleted file mode 100644 index 313bf33..0000000 --- a/src/demos/zdemo_excel5.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZDEMO_EXCEL5 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Conditinal formating - 37 - - - - - diff --git a/src/demos/zdemo_excel6.prog.abap b/src/demos/zdemo_excel6.prog.abap deleted file mode 100644 index 9486b56..0000000 --- a/src/demos/zdemo_excel6.prog.abap +++ /dev/null @@ -1,61 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL6 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel6. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lv_row TYPE i, - lv_formula TYPE string. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '06_Formulas.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -*--------------------------------------------------------------------* -* Get some testdata -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 100 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 1000 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 150 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = -10 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 500 ). - - -*--------------------------------------------------------------------* -* Demonstrate using formulas -*--------------------------------------------------------------------* - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_formula = 'SUM(C4:C8)' ). - - -*--------------------------------------------------------------------* -* Demonstrate standard EXCEL-behaviour when copying a formula to another cell -* by calculating the resulting formula to put into another cell -*--------------------------------------------------------------------* - DO 10 TIMES. - - lv_formula = zcl_excel_common=>shift_formula( iv_reference_formula = 'SUM(C4:C8)' - iv_shift_cols = 0 " Offset in Columns - here we copy in same column --> 0 - iv_shift_rows = sy-index ). " Offset in Row - here we copy downward --> sy-index - lv_row = 9 + sy-index. " Absolute row = sy-index rows below reference cell - lo_worksheet->set_cell( ip_row = lv_row ip_column = 'C' ip_formula = lv_formula ). - - ENDDO. - -*--------------------------------------------------------------------* -*** Create output -*--------------------------------------------------------------------* - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel6.prog.xml b/src/demos/zdemo_excel6.prog.xml deleted file mode 100644 index fcefb97..0000000 --- a/src/demos/zdemo_excel6.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL6 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Formulas - 25 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel7.prog.abap b/src/demos/zdemo_excel7.prog.abap deleted file mode 100644 index 3900a32..0000000 --- a/src/demos/zdemo_excel7.prog.abap +++ /dev/null @@ -1,425 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL7 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel7. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_cond TYPE REF TO zcl_excel_style_cond. - -DATA: ls_iconset3 TYPE zexcel_conditional_iconset, - ls_iconset4 TYPE zexcel_conditional_iconset, - ls_iconset5 TYPE zexcel_conditional_iconset, - ls_databar TYPE zexcel_conditional_databar, - ls_colorscale2 TYPE zexcel_conditional_colorscale, - ls_colorscale3 TYPE zexcel_conditional_colorscale. - -CONSTANTS: gc_save_file_name TYPE string VALUE '07_ConditionalAll.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - ls_iconset3-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset3-cfvo1_value = '0'. - ls_iconset3-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset3-cfvo2_value = '33'. - ls_iconset3-cfvo3_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset3-cfvo3_value = '66'. - ls_iconset3-showvalue = zcl_excel_style_cond=>c_showvalue_true. - - ls_iconset4-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset4-cfvo1_value = '0'. - ls_iconset4-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset4-cfvo2_value = '25'. - ls_iconset4-cfvo3_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset4-cfvo3_value = '50'. - ls_iconset4-cfvo4_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset4-cfvo4_value = '75'. - ls_iconset4-showvalue = zcl_excel_style_cond=>c_showvalue_true. - - ls_iconset5-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset5-cfvo1_value = '0'. - ls_iconset5-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset5-cfvo2_value = '20'. - ls_iconset5-cfvo3_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset5-cfvo3_value = '40'. - ls_iconset5-cfvo4_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset5-cfvo4_value = '60'. - ls_iconset5-cfvo5_type = zcl_excel_style_cond=>c_cfvo_type_percent. - ls_iconset5-cfvo5_value = '80'. - ls_iconset5-showvalue = zcl_excel_style_cond=>c_showvalue_true. - - ls_databar-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_min. - ls_databar-cfvo1_value = '0'. - ls_databar-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_max. - ls_databar-cfvo2_value = '0'. - ls_databar-colorrgb = 'FF638EC6'. - - ls_colorscale2-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_min. - ls_colorscale2-cfvo1_value = '0'. - ls_colorscale2-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_percentile. - ls_colorscale2-cfvo2_value = '50'. - ls_colorscale2-colorrgb1 = 'FFF8696B'. - ls_colorscale2-colorrgb2 = 'FF63BE7B'. - - ls_colorscale3-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_min. - ls_colorscale3-cfvo1_value = '0'. - ls_colorscale3-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_percentile. - ls_colorscale3-cfvo2_value = '50'. - ls_colorscale3-cfvo3_type = zcl_excel_style_cond=>c_cfvo_type_max. - ls_colorscale3-cfvo3_value = '0'. - ls_colorscale3-colorrgb1 = 'FFF8696B'. - ls_colorscale3-colorrgb2 = 'FFFFEB84'. - ls_colorscale3-colorrgb3 = 'FF63BE7B'. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - -* ICONSET - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - - ls_iconset3-iconset = zcl_excel_style_cond=>c_iconset_3arrows. - - lo_style_cond->mode_iconset = ls_iconset3. - lo_style_cond->set_range( ip_start_column = 'B' - ip_start_row = 5 - ip_stop_column = 'B' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'C_ICONSET_3ARROWS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'B' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset3-iconset = zcl_excel_style_cond=>c_iconset_3arrowsgray. - lo_style_cond->mode_iconset = ls_iconset3. - lo_style_cond->set_range( ip_start_column = 'C' - ip_start_row = 5 - ip_stop_column = 'C' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'C_ICONSET_3ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'C' ip_value = 50 ). - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset3-iconset = zcl_excel_style_cond=>c_iconset_3flags. - lo_style_cond->mode_iconset = ls_iconset3. - lo_style_cond->set_range( ip_start_column = 'D' - ip_start_row = 5 - ip_stop_column = 'D' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'C_ICONSET_3FLAGS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'D' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset3-iconset = zcl_excel_style_cond=>c_iconset_3trafficlights. - lo_style_cond->mode_iconset = ls_iconset3. - lo_style_cond->set_range( ip_start_column = 'E' - ip_start_row = 5 - ip_stop_column = 'E' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'C_ICONSET_3TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'E' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset3-iconset = zcl_excel_style_cond=>c_iconset_3trafficlights2. - lo_style_cond->mode_iconset = ls_iconset3. - lo_style_cond->set_range( ip_start_column = 'F' - ip_start_row = 5 - ip_stop_column = 'F' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'F' ip_value = 'C_ICONSET_3TRAFFICLIGHTS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'F' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset3-iconset = zcl_excel_style_cond=>c_iconset_3signs. - lo_style_cond->mode_iconset = ls_iconset3. - lo_style_cond->set_range( ip_start_column = 'G' - ip_start_row = 5 - ip_stop_column = 'G' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'G' ip_value = 'C_ICONSET_3SIGNS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'G' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'G' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'G' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'G' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'G' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset3-iconset = zcl_excel_style_cond=>c_iconset_3symbols. - lo_style_cond->mode_iconset = ls_iconset3. - lo_style_cond->set_range( ip_start_column = 'H' - ip_start_row = 5 - ip_stop_column = 'H' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'H' ip_value = 'C_ICONSET_3SYMBOLS' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'H' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'H' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'H' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'H' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'H' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset3-iconset = zcl_excel_style_cond=>c_iconset_3symbols2. - lo_style_cond->mode_iconset = ls_iconset3. - lo_style_cond->set_range( ip_start_column = 'I' - ip_start_row = 5 - ip_stop_column = 'I' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'I' ip_value = 'C_ICONSET_3SYMBOLS2' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'I' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'I' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'I' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'I' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'I' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset4-iconset = zcl_excel_style_cond=>c_iconset_4arrows. - lo_style_cond->mode_iconset = ls_iconset4. - lo_style_cond->set_range( ip_start_column = 'B' - ip_start_row = 12 - ip_stop_column = 'B' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = 'C_ICONSET_4ARROWS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'B' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset4-iconset = zcl_excel_style_cond=>c_iconset_4arrowsgray. - lo_style_cond->mode_iconset = ls_iconset4. - lo_style_cond->set_range( ip_start_column = 'C' - ip_start_row = 12 - ip_stop_column = 'C' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'C' ip_value = 'C_ICONSET_4ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'C' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset4-iconset = zcl_excel_style_cond=>c_iconset_4redtoblack. - lo_style_cond->mode_iconset = ls_iconset4. - lo_style_cond->set_range( ip_start_column = 'D' - ip_start_row = 12 - ip_stop_column = 'D' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'D' ip_value = 'C_ICONSET_4REDTOBLACK' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'D' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset4-iconset = zcl_excel_style_cond=>c_iconset_4rating. - lo_style_cond->mode_iconset = ls_iconset4. - lo_style_cond->set_range( ip_start_column = 'E' - ip_start_row = 12 - ip_stop_column = 'E' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'E' ip_value = 'C_ICONSET_4RATING' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'E' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'E' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'E' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'E' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'E' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset4-iconset = zcl_excel_style_cond=>c_iconset_4trafficlights. - lo_style_cond->mode_iconset = ls_iconset4. - lo_style_cond->set_range( ip_start_column = 'F' - ip_start_row = 12 - ip_stop_column = 'F' - ip_stop_row = 16 ). - - lo_worksheet->set_cell( ip_row = 11 ip_column = 'F' ip_value = 'C_ICONSET_4TRAFFICLIGHTS' ). - lo_worksheet->set_cell( ip_row = 12 ip_column = 'F' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 13 ip_column = 'F' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 14 ip_column = 'F' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 15 ip_column = 'F' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 16 ip_column = 'F' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset5-iconset = zcl_excel_style_cond=>c_iconset_5arrows. - lo_style_cond->mode_iconset = ls_iconset5. - lo_style_cond->set_range( ip_start_column = 'B' - ip_start_row = 19 - ip_stop_column = 'B' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'B' ip_value = 'C_ICONSET_5ARROWS' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'B' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset5-iconset = zcl_excel_style_cond=>c_iconset_5arrowsgray. - lo_style_cond->mode_iconset = ls_iconset5. - lo_style_cond->set_range( ip_start_column = 'C' - ip_start_row = 19 - ip_stop_column = 'C' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'C' ip_value = 'C_ICONSET_5ARROWSGRAY' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'C' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset5-iconset = zcl_excel_style_cond=>c_iconset_5rating. - lo_style_cond->mode_iconset = ls_iconset5. - lo_style_cond->set_range( ip_start_column = 'D' - ip_start_row = 19 - ip_stop_column = 'D' - ip_stop_row = 23 ). - - lo_worksheet->set_cell( ip_row = 18 ip_column = 'D' ip_value = 'C_ICONSET_5RATING' ). - lo_worksheet->set_cell( ip_row = 19 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 20 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 21 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 22 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 23 ip_column = 'D' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_iconset. - lo_style_cond->priority = 1. - ls_iconset5-iconset = zcl_excel_style_cond=>c_iconset_5quarters. - lo_style_cond->mode_iconset = ls_iconset5. - lo_style_cond->set_range( ip_start_column = 'E' - ip_start_row = 19 - ip_stop_column = 'E' - ip_stop_row = 23 ). - -* DATABAR - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'B' ip_value = 'DATABAR' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'B' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'B' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'B' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'B' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'B' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_databar. - lo_style_cond->priority = 1. - lo_style_cond->mode_databar = ls_databar. - lo_style_cond->set_range( ip_start_column = 'B' - ip_start_row = 26 - ip_stop_column = 'B' - ip_stop_row = 30 ). - -* COLORSCALE - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'C' ip_value = 'COLORSCALE 2 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'C' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'C' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'C' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'C' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'C' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_colorscale. - lo_style_cond->priority = 1. - lo_style_cond->mode_colorscale = ls_colorscale2. - lo_style_cond->set_range( ip_start_column = 'C' - ip_start_row = 26 - ip_stop_column = 'C' - ip_stop_row = 30 ). - - - lo_worksheet->set_cell( ip_row = 25 ip_column = 'D' ip_value = 'COLORSCALE 3 COLORS' ). - lo_worksheet->set_cell( ip_row = 26 ip_column = 'D' ip_value = 10 ). - lo_worksheet->set_cell( ip_row = 27 ip_column = 'D' ip_value = 20 ). - lo_worksheet->set_cell( ip_row = 28 ip_column = 'D' ip_value = 30 ). - lo_worksheet->set_cell( ip_row = 29 ip_column = 'D' ip_value = 40 ). - lo_worksheet->set_cell( ip_row = 30 ip_column = 'D' ip_value = 50 ). - - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_colorscale. - lo_style_cond->priority = 1. - lo_style_cond->mode_colorscale = ls_colorscale3. - lo_style_cond->set_range( ip_start_column = 'D' - ip_start_row = 26 - ip_stop_column = 'D' - ip_stop_row = 30 ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel7.prog.xml b/src/demos/zdemo_excel7.prog.xml deleted file mode 100644 index 1b639d3..0000000 --- a/src/demos/zdemo_excel7.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL7 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: All conditional formating possibilities - 56 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel8.prog.abap b/src/demos/zdemo_excel8.prog.abap deleted file mode 100644 index 3c92f3c..0000000 --- a/src/demos/zdemo_excel8.prog.abap +++ /dev/null @@ -1,71 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL8 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel8. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range. - -DATA: lv_title TYPE zexcel_sheet_title. - -CONSTANTS: gc_save_file_name TYPE string VALUE '08_Range.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Sheet1'. - lo_worksheet->set_title( lv_title ). - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'range'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - " Define another Range with a name longer than 40 characters that - " tests the fix of issue #168 ranges namescan be only up to 20 chars - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'A_range_with_a_name_that_is_longer_than_20_characters'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Range Value 1' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Range Value 2' ). - - " issue #163 - " Define another Range with sheet visibility - lo_range = lo_worksheet->add_new_range( ). - lo_range->name = 'A_range_with_sheet_visibility'. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'E' - ip_start_row = 4 - ip_stop_column = 'E' - ip_stop_row = 5 ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'Range Value 3' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 'Range Value 4' ). - " issue #163 - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel8.prog.xml b/src/demos/zdemo_excel8.prog.xml deleted file mode 100644 index 568f557..0000000 --- a/src/demos/zdemo_excel8.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_EXCEL8 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Define a range - 31 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_excel9.prog.abap b/src/demos/zdemo_excel9.prog.abap deleted file mode 100644 index feb6d79..0000000 --- a/src/demos/zdemo_excel9.prog.abap +++ /dev/null @@ -1,203 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL9 -*& -*&---------------------------------------------------------------------* -*& abap2xlsx Demo: Data validations -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel9. - -CONSTANTS: c_fruits TYPE string VALUE 'Fruits', - c_vegetables TYPE string VALUE 'Vegetables', - c_meat TYPE string VALUE 'Meat', - c_fish TYPE string VALUE 'Fish'. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation. - -DATA: row TYPE zexcel_cell_row. - - -DATA: lv_title TYPE zexcel_sheet_title. - - -CONSTANTS: gc_save_file_name TYPE string VALUE '09_DataValidation.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_sbook TYPE flag. - - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Data Validation'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'B' ip_value = c_meat ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'B' ip_value = 'Pork' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'B' ip_value = 'Beef' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'B' ip_value = 'Chicken' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'B' ip_value = 'Turkey' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_meat. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'B' - ip_start_row = 4 - ip_stop_column = 'B' - ip_stop_row = 7 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'C' ip_value = 'Apple' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'C' ip_value = 'Banana' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'C' ip_value = 'Blueberry' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Ananas' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Grapes' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fruits. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'C' - ip_start_row = 4 - ip_stop_column = 'C' - ip_stop_row = 8 ). - - lo_worksheet->set_cell( ip_row = 2 ip_column = 'D' ip_value = c_vegetables ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Cucumber' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Sweet pepper ' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'D' ip_value = 'Lettuce' ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_vegetables. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'D' - ip_start_row = 4 - ip_stop_column = 'D' - ip_stop_row = 6 ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'Table with Data Validation'. - lo_worksheet->set_title( lv_title ). - - " Maximum Text length - lo_worksheet->set_cell( ip_row = 1 ip_column = 'A' ip_value = 'Validate Maximum Text length of <= 10 in Cell A2:' ). - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = 'abcdefghij' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_textlength. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_lessthanorequal. - lo_data_validation->formula1 = 10. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'A'. - - " Integer Value between 1 and 10 - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Validate Integer Value between 1 and 10 in Cell A5:' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = '5' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_whole. - lo_data_validation->operator = zcl_excel_data_validation=>c_operator_between. - lo_data_validation->formula1 = 1. - lo_data_validation->formula2 = 10. - lo_data_validation->prompttitle = 'Range'. - lo_data_validation->prompt = 'Enter a value between 1 and 10'. - lo_data_validation->errortitle = 'Error'. - lo_data_validation->error = 'You have entered a wrong value. Please use only numbers between 1 and 10.'. - lo_data_validation->cell_row = 5. - lo_data_validation->cell_column = 'A'. - - " Evaluation by Formula from issue #161 - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Validate if B8 contains a "-":' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Text' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'B' ip_value = '-' ). - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_custom. - lo_data_validation->formula1 = '"IF(B8<>"""";INDIRECT(LEFT(B8;SEARCH(""-"";B8;1)));EMPTY)"'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'A'. - - " There was an error when data validation was combined with cell merges this should test that: - lo_worksheet->set_cell( ip_row = 10 ip_column = 'A' ip_value = 'Demo for data validation with a dropdown list' ). - lo_worksheet->set_merge( ip_row = 10 ip_column_start = 'A' ip_column_end = 'F' ). - - " Headlines - lo_worksheet->set_cell( ip_row = 11 ip_column = 'A' ip_value = c_fruits ). - lo_worksheet->set_cell( ip_row = 11 ip_column = 'B' ip_value = c_vegetables ). - - row = 12. - WHILE row < 20. " Starting with 14500 the data validation is dropped 14000 are still ok - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fruits. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'A'. - lo_worksheet->set_cell( ip_row = row ip_column = 'A' ip_value = 'Select a value' ). - " 2nd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_vegetables. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'B'. - lo_worksheet->set_cell( ip_row = row ip_column = 'B' ip_value = 'Select a value' ). - " 3rd - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_meat. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = row ip_column = 'C' ip_value = 'Select a value' ). - " 4th - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = row. - lo_data_validation->cell_column = 'D'. - lo_worksheet->set_cell( ip_row = row ip_column = 'D' ip_value = 'Select a value' ). - " Increment row - row = row + 1. - ENDWHILE. - - IF p_sbook = abap_true. - DATA: bookings TYPE TABLE OF sbook. - - lo_worksheet = lo_excel->add_new_worksheet( ). - lv_title = 'SBOOK'. - lo_worksheet->set_title( lv_title ). - - SELECT * FROM sbook INTO TABLE bookings UP TO 4000 ROWS. - - lo_worksheet->bind_table( - EXPORTING - ip_table = bookings -* it_field_catalog = " Table binding field catalog -* is_table_settings = " Excel table binding settings -* IMPORTING -* es_table_settings = " Excel table binding settings - ). - ENDIF. - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel9.prog.xml b/src/demos/zdemo_excel9.prog.xml deleted file mode 100644 index dbde53e..0000000 --- a/src/demos/zdemo_excel9.prog.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - ZDEMO_EXCEL9 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Data validations - 33 - - - S - P_PATH - . - 24 - D - - - S - P_SBOOK - Export SBOOK to Excel? - 30 - - - - - diff --git a/src/demos/zdemo_excel_checker.prog.abap b/src/demos/zdemo_excel_checker.prog.abap deleted file mode 100644 index ec4d8b6..0000000 --- a/src/demos/zdemo_excel_checker.prog.abap +++ /dev/null @@ -1,1388 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report zdemo_excel_checker -*&---------------------------------------------------------------------* -*& -*&---------------------------------------------------------------------* -REPORT zdemo_excel_checker. - -CLASS lcl_zip_cleanup_for_diff DEFINITION - CREATE PUBLIC . - - PUBLIC SECTION. - - TYPES : BEGIN OF ty_zip_structure, - ref_to_structure TYPE REF TO data, - ref_to_x TYPE REF TO data, - length TYPE i, - view TYPE REF TO cl_abap_view_offlen, - charset_bit TYPE i, - conv_in_utf8 TYPE REF TO cl_abap_conv_in_ce, - conv_in_ibm437 TYPE REF TO cl_abap_conv_in_ce, - conv_out_utf8 TYPE REF TO cl_abap_conv_out_ce, - conv_out_ibm437 TYPE REF TO cl_abap_conv_out_ce, - END OF ty_zip_structure. - - METHODS run - IMPORTING - zip_xstring TYPE xstring - RETURNING - VALUE(result) TYPE xstring - RAISING - zcx_excel. - - PRIVATE SECTION. - - METHODS init_structure - IMPORTING - length TYPE i - charset_bit TYPE i - structure TYPE any - RETURNING - VALUE(result) TYPE ty_zip_structure. - - METHODS write_zip - IMPORTING - offset TYPE i - CHANGING - zip_structure TYPE ty_zip_structure - zip_xstring TYPE xstring. - - METHODS read_zip - IMPORTING - zip_xstring TYPE xstring - offset TYPE i - CHANGING - zip_structure TYPE ty_zip_structure. - -ENDCLASS. - - -CLASS lcl_xlsx_cleanup_for_diff DEFINITION - CREATE PUBLIC . - - PUBLIC SECTION. - - METHODS run - IMPORTING - xstring TYPE xstring - - RETURNING - VALUE(result) TYPE xstring - RAISING - zcx_excel. - -ENDCLASS. - - -CLASS lcl_app DEFINITION. - - PUBLIC SECTION. - - METHODS at_selection_screen. - - METHODS at_selection_screen_on_exit. - - METHODS at_selection_screen_output. - - METHODS set_sscrfields - CHANGING - sscrfields TYPE sscrfields. - - PRIVATE SECTION. - - TYPES : BEGIN OF ty_demo, - program TYPE trdir-name, - objid TYPE wwwdata-objid, - text TYPE wwwdata-text, - filename TYPE string, - END OF ty_demo, - ty_demos TYPE STANDARD TABLE OF ty_demo WITH DEFAULT KEY, - BEGIN OF ty_check_result, - diff TYPE abap_bool, - xlsx_just_now TYPE xstring, - xlsx_reference TYPE xstring, - compare_xlsx_just_now TYPE xstring, - compare_xlsx_reference TYPE xstring, - END OF ty_check_result, - BEGIN OF ty_alv_line, - status_icon TYPE string, - xlsx_diff TYPE string, - write_smw0 TYPE string, - objid TYPE wwwdata-objid, - obj_text TYPE wwwdata-text, - program TYPE trdir-name, - prog_text TYPE trdirt-text, - filename TYPE string, - xlsx_just_now TYPE xstring, - xlsx_reference TYPE xstring, - compare_xlsx_just_now TYPE xstring, - compare_xlsx_reference TYPE xstring, - cell_types TYPE salv_t_int4_column, - END OF ty_alv_line, - ty_alv_table TYPE STANDARD TABLE OF ty_alv_line WITH DEFAULT KEY, - ty_popup_confirm_question TYPE c LENGTH 400. - - METHODS at_selection_screen_output1000. - - METHODS at_selection_screen_output1001 - RAISING - zcx_excel - cx_salv_data_error - cx_salv_not_found - cx_salv_msg. - - METHODS check_regression - IMPORTING - demo TYPE ty_demo - RETURNING - VALUE(result) TYPE ty_check_result - RAISING - zcx_excel. - - METHODS get_list_of_demo_files - RETURNING - VALUE(result) TYPE ty_demos. - - METHODS gui_upload - IMPORTING - file_name TYPE string - RETURNING - VALUE(result) TYPE xstring - RAISING - zcx_excel. - - METHODS load_alv_table - RAISING - zcx_excel. - - METHODS on_link_clicked FOR EVENT link_click OF cl_salv_events_table IMPORTING column row. - - METHODS popup_confirm - IMPORTING - question TYPE ty_popup_confirm_question - RAISING - zcx_excel. - - METHODS read_screen_fields. - - METHODS read_xlsx_from_web_repository - IMPORTING - objid TYPE wwwdata-objid - RETURNING - VALUE(result) TYPE xstring - RAISING - zcx_excel. - - METHODS screen_1001_pbo_first_time - RAISING - cx_salv_data_error - cx_salv_msg - cx_salv_not_found - zcx_excel . - - METHODS write_screen_fields. - - METHODS write_xlsx_to_web_repository - IMPORTING - objid TYPE wwwdata-objid - text TYPE wwwdata-text - xstring TYPE xstring - filename TYPE clike - RAISING - zcx_excel. - - DATA: ref_sscrfields TYPE REF TO sscrfields, - p_path TYPE zexcel_export_dir, - splitter TYPE REF TO cl_gui_splitter_container, - alv_container TYPE REF TO cl_gui_container, - zip_diff_container TYPE REF TO cl_gui_container, - viewer TYPE REF TO object, - salv TYPE REF TO cl_salv_table, - alv_table TYPE ty_alv_table, - lv_filesep TYPE c LENGTH 1. - -ENDCLASS. - - - -CLASS lcl_zip_cleanup_for_diff IMPLEMENTATION. - - - METHOD run. - - TYPES : BEGIN OF ty_local_file_header, - local_file_header_signature TYPE x LENGTH 4, " 04034b50 - version_needed_to_extract TYPE x LENGTH 2, - general_purpose_bit_flag TYPE x LENGTH 2, - compression_method TYPE x LENGTH 2, - last_mod_file_time TYPE int2, - last_mod_file_date TYPE int2, - crc_32 TYPE x LENGTH 4, - compressed_size TYPE i, - uncompressed_size TYPE i, - file_name_length TYPE int2, - extra_field_length TYPE int2, - " file name (variable size) - " extra field (variable size) - END OF ty_local_file_header, - BEGIN OF ty_central_file_header, - central_file_header_signature TYPE x LENGTH 4, " 02014b50 - version_made_by TYPE x LENGTH 2, - version_needed_to_extract TYPE x LENGTH 2, - general_purpose_bit_flag TYPE x LENGTH 2, - compression_method TYPE x LENGTH 2, - last_mod_file_time TYPE int2, - last_mod_file_date TYPE int2, - crc_32 TYPE x LENGTH 4, - compressed_size TYPE i, - uncompressed_size TYPE i, - file_name_length TYPE int2, " field 12 - extra_field_length TYPE int2, " field 13 - file_comment_length TYPE int2, " field 14 - disk_number_start TYPE int2, - internal_file_attributes TYPE x LENGTH 2, - external_file_attributes TYPE x LENGTH 4, - rel_offset_of_local_header TYPE x LENGTH 4, - " file name (variable size defined in 12) - " extra field (variable size defined in 13) - " file comment (variable size defined in 14) - END OF ty_central_file_header, - BEGIN OF ty_end_of_central_dir, - signature TYPE x LENGTH 4, " 0x06054b50 - number_of_this_disk TYPE int2, - disk_num_start_of_central_dir TYPE int2, - n_of_entries_in_central_dir_dk TYPE int2, - n_of_entries_in_central_dir TYPE int2, - size_of_central_dir TYPE i, - offset_start_of_central_dir TYPE i, - file_comment_length TYPE int2, - END OF ty_end_of_central_dir. - - FIELD-SYMBOLS: - TYPE x, - TYPE x, - TYPE x, - TYPE ty_local_file_header, - TYPE ty_central_file_header, - TYPE ty_end_of_central_dir. - CONSTANTS: - local_file_header_signature TYPE x LENGTH 4 VALUE '504B0304', - central_file_header_signature TYPE x LENGTH 4 VALUE '504B0102', - end_of_central_dir_signature TYPE x LENGTH 4 VALUE '504B0506'. - DATA: - dummy_local_file_header TYPE ty_local_file_header, - dummy_central_file_header TYPE ty_central_file_header, - dummy_end_of_central_dir TYPE ty_end_of_central_dir, - local_file_header TYPE ty_zip_structure, - central_file_header TYPE ty_zip_structure, - end_of_central_dir TYPE ty_zip_structure, - offset TYPE i, - max_offset TYPE i. - - - - local_file_header = init_structure( length = 30 charset_bit = 60 structure = dummy_local_file_header ). - ASSIGN local_file_header-ref_to_structure->* TO . - ASSIGN local_file_header-ref_to_x->* TO . - - central_file_header = init_structure( length = 46 charset_bit = 76 structure = dummy_central_file_header ). - ASSIGN central_file_header-ref_to_structure->* TO . - ASSIGN central_file_header-ref_to_x->* TO . - - end_of_central_dir = init_structure( length = 22 charset_bit = 0 structure = dummy_end_of_central_dir ). - ASSIGN end_of_central_dir-ref_to_structure->* TO . - ASSIGN end_of_central_dir-ref_to_x->* TO . - - result = zip_xstring. - - offset = 0. - max_offset = xstrlen( result ) - 4. - WHILE offset <= max_offset. - - CASE result+offset(4). - - WHEN local_file_header_signature. - - read_zip( EXPORTING zip_xstring = result offset = offset CHANGING zip_structure = local_file_header ). - - CLEAR -last_mod_file_date. - CLEAR -last_mod_file_time. - - write_zip( EXPORTING offset = offset CHANGING zip_structure = local_file_header zip_xstring = result ). - - offset = offset + local_file_header-length + -file_name_length + -extra_field_length + -compressed_size. - - WHEN central_file_header_signature. - - read_zip( EXPORTING zip_xstring = result offset = offset CHANGING zip_structure = central_file_header ). - - CLEAR -last_mod_file_date. - CLEAR -last_mod_file_time. - - write_zip( EXPORTING offset = offset CHANGING zip_structure = central_file_header zip_xstring = result ). - - offset = offset + central_file_header-length + -file_name_length + -extra_field_length + -file_comment_length. - - WHEN end_of_central_dir_signature. - - read_zip( EXPORTING zip_xstring = result offset = offset CHANGING zip_structure = end_of_central_dir ). - - offset = offset + end_of_central_dir-length + -file_comment_length. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = 'Invalid ZIP file'. - - ENDCASE. - - ENDWHILE. - - ENDMETHOD. - - - METHOD init_structure. - - DATA: - offset TYPE i, - rtts_struct TYPE REF TO cl_abap_structdescr. - FIELD-SYMBOLS: - TYPE abap_compdescr. - - CREATE DATA result-ref_to_structure LIKE structure. - result-length = length. - result-charset_bit = charset_bit. - CREATE DATA result-ref_to_x TYPE x LENGTH length. - - result-view = cl_abap_view_offlen=>create( ). - offset = 0. - rtts_struct ?= cl_abap_typedescr=>describe_by_data( structure ). - LOOP AT rtts_struct->components ASSIGNING . - result-view->append( off = offset len = -length ). - offset = offset + -length. - ENDLOOP. - - ENDMETHOD. - - - METHOD read_zip. - - DATA: - charset TYPE i. - FIELD-SYMBOLS: - TYPE x, - TYPE any. - - ASSIGN zip_structure-ref_to_x->* TO . - ASSIGN zip_structure-ref_to_structure->* TO . - - = zip_xstring+offset. - - IF zip_structure-charset_bit >= 1. - GET BIT zip_structure-charset_bit OF INTO charset. - ENDIF. - - IF charset = 0. - IF zip_structure-conv_in_ibm437 IS NOT BOUND. - zip_structure-conv_in_ibm437 = cl_abap_conv_in_ce=>create( - encoding = '1107' - endian = 'L' ). - ENDIF. - zip_structure-conv_in_ibm437->convert_struc( - EXPORTING input = - view = zip_structure-view - IMPORTING data = ). - ELSE. - IF zip_structure-conv_in_utf8 IS NOT BOUND. - zip_structure-conv_in_utf8 = cl_abap_conv_in_ce=>create( - encoding = '4110' - endian = 'L' ). - ENDIF. - zip_structure-conv_in_utf8->convert_struc( - EXPORTING input = - view = zip_structure-view - IMPORTING data = ). - ENDIF. - - ENDMETHOD. - - - METHOD write_zip. - - DATA: - charset TYPE i. - FIELD-SYMBOLS: - TYPE x, - TYPE any. - - ASSIGN zip_structure-ref_to_x->* TO . - ASSIGN zip_structure-ref_to_structure->* TO . - - IF zip_structure-charset_bit >= 1. - GET BIT zip_structure-charset_bit OF INTO charset. - ENDIF. - - IF charset = 0. - IF zip_structure-conv_out_ibm437 IS NOT BOUND. - zip_structure-conv_out_ibm437 = cl_abap_conv_out_ce=>create( - encoding = '1107' - endian = 'L' ). - ENDIF. - zip_structure-conv_out_ibm437->convert_struc( - EXPORTING data = - view = zip_structure-view - IMPORTING buffer = ). - ELSE. - IF zip_structure-conv_out_utf8 IS NOT BOUND. - zip_structure-conv_out_utf8 = cl_abap_conv_out_ce=>create( - encoding = '4110' - endian = 'L' ). - ENDIF. - zip_structure-conv_out_utf8->convert_struc( - EXPORTING data = - view = zip_structure-view - IMPORTING buffer = ). - ENDIF. - - REPLACE SECTION OFFSET offset LENGTH zip_structure-length OF zip_xstring WITH IN BYTE MODE. - - ENDMETHOD. - - -ENDCLASS. - - -CLASS lcl_xlsx_cleanup_for_diff IMPLEMENTATION. - - METHOD run. - - TYPES: BEGIN OF ty_docprops_core, - creator TYPE string, - description TYPE string, - last_modified_by TYPE string, - created TYPE string, - modified TYPE string, - END OF ty_docprops_core. - TYPES: BEGIN OF ty_file, - name TYPE string, - content TYPE xstring, - END OF ty_file. - DATA: zip TYPE REF TO cl_abap_zip, - content TYPE xstring, - docprops_core TYPE ty_docprops_core, - ls_file TYPE ty_file, - lt_file TYPE TABLE OF ty_file, - lo_ixml TYPE REF TO if_ixml, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_istream TYPE REF TO if_ixml_istream, - lo_parser TYPE REF TO if_ixml_parser, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_document TYPE REF TO if_ixml_document, - lo_element TYPE REF TO if_ixml_element, - lo_filter TYPE REF TO if_ixml_node_filter, - lo_iterator TYPE REF TO if_ixml_node_iterator, - zip_cleanup_for_diff TYPE REF TO lcl_zip_cleanup_for_diff. - FIELD-SYMBOLS: - TYPE cl_abap_zip=>t_file, - TYPE ty_file. - - CREATE OBJECT zip. - zip->load( - EXPORTING - zip = xstring - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = 'zip load'. - ENDIF. - - zip->get( - EXPORTING - name = 'docProps/core.xml' - IMPORTING - content = content - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3 ). - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = 'docProps/core.xml not found'. - ENDIF. - - CALL TRANSFORMATION zexcel_tr_docprops_core SOURCE XML content RESULT root = docprops_core. - - CLEAR: docprops_core-creator, - docprops_core-description, - docprops_core-created, - docprops_core-modified. - - CALL TRANSFORMATION zexcel_tr_docprops_core SOURCE root = docprops_core RESULT XML content. - - zip->delete( - EXPORTING - name = 'docProps/core.xml' - EXCEPTIONS - zip_index_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = |delete before add of docProps/core.xml|. - ENDIF. - - zip->add( - name = 'docProps/core.xml' - content = content ). - - LOOP AT zip->files ASSIGNING - WHERE name CP 'xl/drawings/drawing*.xml'. - - zip->get( - EXPORTING - name = -name - IMPORTING - content = content - EXCEPTIONS - zip_index_error = 1 - zip_decompression_error = 2 - OTHERS = 3 ). - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = |{ -name } not found|. - ENDIF. - - lo_ixml = cl_ixml=>create( ). - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_istream = lo_streamfactory->create_istream_xstring( content ). - lo_document = lo_ixml->create_document( ). - lo_parser = lo_ixml->create_parser( - document = lo_document - istream = lo_istream - stream_factory = lo_streamfactory ). - lo_parser->parse( ). - - lo_filter = lo_document->create_filter_name_ns( - name = 'cNvPr' - namespace = 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing' ). - lo_iterator = lo_document->create_iterator_filtered( lo_filter ). - DO. - lo_element ?= lo_iterator->get_next( ). - IF lo_element IS NOT BOUND. - EXIT. - ENDIF. - lo_element->set_attribute_ns( name = 'name' value = '' ). - ENDDO. - - CLEAR content. - lo_ostream = lo_streamfactory->create_ostream_xstring( content ). - lo_renderer = lo_ixml->create_renderer( - document = lo_document - ostream = lo_ostream ). - lo_renderer->render( ). - - ls_file-name = -name. - ls_file-content = content. - APPEND ls_file TO lt_file. - - ENDLOOP. - - LOOP AT lt_file ASSIGNING . - zip->delete( name = -name ). - zip->add( name = -name content = -content ). - ENDLOOP. - - result = zip->save( ). - - CREATE OBJECT zip_cleanup_for_diff. - result = zip_cleanup_for_diff->run( result ). - - ENDMETHOD. - - -ENDCLASS. - - -CLASS lcl_app IMPLEMENTATION. - - - METHOD at_selection_screen. - - DATA: error TYPE REF TO cx_root. - - TRY. - - CASE sy-dynnr. - - WHEN 1000. - - CASE ref_sscrfields->ucomm. - - WHEN 'ONLI'. - - read_screen_fields( ). - SUBMIT zdemo_excel WITH p_path = p_path WITH p_checkr = abap_true AND RETURN. - CALL SELECTION-SCREEN 1001. - - ENDCASE. - - WHEN 1001. - - CASE ref_sscrfields->ucomm. - - WHEN 'FC01'. " REFRESH - - SUBMIT (sy-repid) WITH p_path = p_path. - - ENDCASE. - ENDCASE. - - CATCH cx_root INTO error. - MESSAGE error TYPE 'E'. - ENDTRY. - - ENDMETHOD. - - - METHOD at_selection_screen_on_exit. - - CASE sy-dynnr. - - WHEN 1001. - - CALL SELECTION-SCREEN 1000. - - ENDCASE. - - ENDMETHOD. - - - METHOD at_selection_screen_output. - - DATA: error TYPE REF TO cx_root. - - TRY. - - CASE sy-dynnr. - - WHEN 1000. - - at_selection_screen_output1000( ). - - WHEN 1001. - - at_selection_screen_output1001( ). - - ENDCASE. - - CATCH cx_root INTO error. - MESSAGE error TYPE 'I' DISPLAY LIKE 'E'. - ENDTRY. - - ENDMETHOD. - - - METHOD at_selection_screen_output1000. - - DATA: lv_workdir TYPE string. - - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_filesep ). - - IF p_path IS INITIAL. - - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - - ENDIF. - - write_screen_fields( ). - - ENDMETHOD. - - - METHOD at_selection_screen_output1001. - - DATA: excluded_functions TYPE ui_functions. - - LOOP AT SCREEN. - screen-active = '0'. - MODIFY SCREEN. - ENDLOOP. - - ref_sscrfields->functxt_01 = icon_refresh. - - APPEND 'ONLI' TO excluded_functions. - APPEND 'PRIN' TO excluded_functions. - APPEND 'SPOS' TO excluded_functions. - CALL FUNCTION 'RS_SET_SELSCREEN_STATUS' - EXPORTING - p_status = sy-pfkey - TABLES - p_exclude = excluded_functions. - - load_alv_table( ). - - IF alv_container IS NOT BOUND. - - screen_1001_pbo_first_time( ). - - ENDIF. - - ENDMETHOD. - - - METHOD check_regression. - - DATA: xlsx_cleanup_for_diff TYPE REF TO lcl_xlsx_cleanup_for_diff. - - - result-xlsx_just_now = gui_upload( file_name = p_path && lv_filesep && demo-filename ). - - result-xlsx_reference = read_xlsx_from_web_repository( objid = demo-objid ). - - IF result-xlsx_reference IS INITIAL. - - result-diff = abap_true. - - ELSE. - - CREATE OBJECT xlsx_cleanup_for_diff. - result-compare_xlsx_just_now = xlsx_cleanup_for_diff->run( result-xlsx_just_now ). - result-compare_xlsx_reference = xlsx_cleanup_for_diff->run( result-xlsx_reference ). - - result-diff = boolc( result-compare_xlsx_just_now <> result-compare_xlsx_reference ). - - ENDIF. - - ENDMETHOD. - - - METHOD get_list_of_demo_files. - - DATA: line TYPE ty_demo. - - line-program = 'ZDEMO_EXCEL1'. - line-objid = 'ZDEMO_EXCEL1'. - line-filename = '01_HelloWorld.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL2'. - line-objid = 'ZDEMO_EXCEL2'. - line-filename = '02_Styles.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL3'. - line-objid = 'ZDEMO_EXCEL3'. - line-filename = '03_iTab.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL4'. - line-objid = 'ZDEMO_EXCEL4'. - line-filename = '04_Sheets.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL5'. - line-objid = 'ZDEMO_EXCEL5'. - line-filename = '05_Conditional.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL6'. - line-objid = 'ZDEMO_EXCEL6'. - line-filename = '06_Formulas.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL7'. - line-objid = 'ZDEMO_EXCEL7'. - line-filename = '07_ConditionalAll.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL8'. - line-objid = 'ZDEMO_EXCEL8'. - line-filename = '08_Range.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL9'. - line-objid = 'ZDEMO_EXCEL9'. - line-filename = '09_DataValidation.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL10'. - line-objid = 'ZDEMO_EXCEL10'. - line-filename = '10_iTabFieldCatalog.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL12'. - line-objid = 'ZDEMO_EXCEL12'. - line-filename = '12_HideSizeOutlineRowsAndColumns.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL13'. - line-objid = 'ZDEMO_EXCEL13'. - line-filename = '13_MergedCells.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL14'. - line-objid = 'ZDEMO_EXCEL14'. - line-filename = '14_Alignment.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL16'. - line-objid = 'ZDEMO_EXCEL16'. - line-filename = '16_Drawings.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL17'. - line-objid = 'ZDEMO_EXCEL17'. - line-filename = '17_SheetProtection.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL18'. - line-objid = 'ZDEMO_EXCEL18'. - line-filename = '18_BookProtection.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL19'. - line-objid = 'ZDEMO_EXCEL19'. - line-filename = '19_SetActiveSheet.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL21'. - line-objid = 'ZDEMO_EXCEL21'. - line-filename = '21_BackgroundColorPicker.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL22'. - line-objid = 'ZDEMO_EXCEL22'. - line-filename = '22_itab_fieldcatalog.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL23'. - line-objid = 'ZDEMO_EXCEL23'. - line-filename = '23_Sheets_with_and_without_grid_lines.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL24'. - line-objid = 'ZDEMO_EXCEL24'. - line-filename = '24_Sheets_with_different_default_date_formats.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL27'. - line-objid = 'ZDEMO_EXCEL27'. - line-filename = '27_ConditionalFormatting.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL30'. - line-objid = 'ZDEMO_EXCEL30'. - line-filename = '30_CellDataTypes.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL31'. - line-objid = 'ZDEMO_EXCEL31'. - line-filename = '31_AutosizeWithDifferentFontSizes.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL33'. - line-objid = 'ZDEMO_EXCEL33'. - line-filename = '33_autofilter.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL34'. - line-objid = 'ZDEMO_EXCEL34'. - line-filename = '34_Static Styles_Chess.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL35'. - line-objid = 'ZDEMO_EXCEL35'. - line-filename = '35_Static_Styles.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL36'. - line-objid = 'ZDEMO_EXCEL36'. - line-filename = '36_DefaultStyles.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL37'. - line-objid = 'ZDEMO_EXCEL37'. - line-filename = '37- Read template and output.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL38'. - line-objid = 'ZDEMO_EXCEL38'. - line-filename = '38_SAP-Icons.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL39'. - line-objid = 'ZDEMO_EXCEL39'. - line-filename = '39_Charts.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL40'. - line-objid = 'ZDEMO_EXCEL40'. - line-filename = '40_Printsettings.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL41'. - line-objid = 'ZDEMO_EXCEL41'. - line-filename = 'ABAP2XLSX Inheritance.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL49'. - line-objid = 'ZDEMO_EXCEL49'. - line-filename = '49_Bind_Table_Conversion_Exit.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL_COMMENTS'. - line-objid = 'ZDEMO_EXCEL_COMMENTS'. - line-filename = 'Comments.xlsx'. - APPEND line TO result. - line-program = 'ZTEST_EXCEL_IMAGE_HEADER'. - line-objid = 'ZTEST_EXCEL_IMAGE_HEADER'. - line-filename = 'Image_Header_Footer.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_01'. - line-filename = '15_01_HelloWorldFromReader.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_02'. - line-filename = '15_02_StylesFromReader.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_03'. - line-filename = '15_03_iTabFromReader.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_04'. - line-filename = '15_04_SheetsFromReader.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_05'. - line-filename = '15_05_ConditionalFromReader.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_07'. - line-filename = '15_07_ConditionalAllFromReader.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_08'. - line-filename = '15_08_RangeFromReader.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_13'. - line-filename = '15_13_MergedCellsFromReader.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_24'. - line-filename = '15_24_Sheets_with_different_default_date_formatsFromReader.xlsx'. - APPEND line TO result. - line-program = 'ZDEMO_EXCEL15'. - line-objid = 'ZDEMO_EXCEL15_31'. - line-filename = '15_31_AutosizeWithDifferentFontSizesFromReader.xlsx'. - APPEND line TO result. - - ENDMETHOD. - - - METHOD gui_upload. - - DATA: solix_tab TYPE solix_tab, - file_length TYPE i. - - cl_gui_frontend_services=>gui_upload( - EXPORTING - filename = file_name - filetype = 'BIN' - IMPORTING - filelength = file_length - CHANGING - data_tab = solix_tab - EXCEPTIONS - file_open_error = 1 - file_read_error = 2 - no_batch = 3 - gui_refuse_filetransfer = 4 - invalid_type = 5 - no_authority = 6 - unknown_error = 7 - bad_data_format = 8 - header_not_allowed = 9 - separator_not_allowed = 10 - header_too_long = 11 - unknown_dp_error = 12 - access_denied = 13 - dp_out_of_memory = 14 - disk_full = 15 - dp_timeout = 16 - not_supported_by_gui = 17 - error_no_gui = 18 - OTHERS = 19 ). - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = |gui_upload error { file_name }|. - ENDIF. - - result = cl_bcs_convert=>solix_to_xstring( it_solix = solix_tab iv_size = file_length ). - - ENDMETHOD. - - - METHOD load_alv_table. - - DATA: demos TYPE ty_demos, - alv_line TYPE ty_alv_line, - cell_type TYPE salv_s_int4_column, - error TYPE REF TO cx_root, - check_result TYPE ty_check_result. - FIELD-SYMBOLS: - TYPE ty_demo. - - CLEAR alv_table. - - demos = get_list_of_demo_files( ). - LOOP AT demos ASSIGNING . - - TRY. - - CLEAR alv_line. - alv_line-objid = -objid. - alv_line-obj_text = |{ -filename } ({ -program })|. - alv_line-filename = -filename. - alv_line-program = -program. - SELECT SINGLE text FROM trdirt INTO alv_line-prog_text - WHERE sprsl = sy-langu - AND name = alv_line-program. - - check_result = check_regression( ). - - CASE check_result-diff. - WHEN abap_true. - alv_line-status_icon = '@0W\QFiles are different@'. - WHEN abap_false. - alv_line-status_icon = '@0V\QFiles are identical@'. - ENDCASE. - IF check_result-diff = abap_true. - alv_line-xlsx_diff = '@46\QShow differences@'. - alv_line-write_smw0 = '@2L\QSave XLSX to Web Repository@'. - cell_type-columnname = 'XLSX_DIFF'. - cell_type-value = if_salv_c_cell_type=>hotspot. - APPEND cell_type TO alv_line-cell_types. - cell_type-columnname = 'WRITE_SMW0'. - cell_type-value = if_salv_c_cell_type=>hotspot. - APPEND cell_type TO alv_line-cell_types. - ENDIF. - alv_line-xlsx_just_now = check_result-xlsx_just_now. - alv_line-xlsx_reference = check_result-xlsx_reference. - alv_line-compare_xlsx_just_now = check_result-compare_xlsx_just_now. - alv_line-compare_xlsx_reference = check_result-compare_xlsx_reference. - APPEND alv_line TO alv_table. - - CATCH cx_root INTO error. - alv_line-status_icon = |{ icon_cancel }{ error->get_text( ) }|. - ENDTRY. - - ENDLOOP. - - ENDMETHOD. - - - METHOD on_link_clicked. - - DATA: alv_line TYPE ty_alv_line, - error TYPE REF TO cx_root, - zip_old TYPE REF TO cl_abap_zip, - zip_new TYPE REF TO cl_abap_zip, - refresh_stable TYPE lvc_s_stbl, - question TYPE ty_popup_confirm_question. - - TRY. - - READ TABLE alv_table INDEX row INTO alv_line. - ASSERT sy-subrc = 0. - - CASE column. - - WHEN 'XLSX_DIFF'. - - TRY. - IF viewer IS NOT BOUND. - CREATE OBJECT viewer TYPE ('ZCL_ZIP_DIFF_VIEWER2') - EXPORTING - io_container = zip_diff_container. - ENDIF. - - CREATE OBJECT zip_old. - zip_old->load( - EXPORTING - zip = alv_line-compare_xlsx_reference - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = |zip load old { alv_line-obj_text }|. - ENDIF. - - CREATE OBJECT zip_new. - zip_new->load( - EXPORTING - zip = alv_line-compare_xlsx_just_now - EXCEPTIONS - zip_parse_error = 1 - OTHERS = 2 ). - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = |zip load new { alv_line-filename }|. - ENDIF. - - CALL METHOD viewer->('DIFF_AND_VIEW') - EXPORTING - zip_old = zip_old - zip_new = zip_new. - - CATCH cx_root INTO error. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = |Viewer error (https://github.com/sandraros/zip-diff): { error->get_text( ) }|. - ENDTRY. - - WHEN 'WRITE_SMW0'. - - question = |Are you sure you want to overwrite { alv_line-objid } in Web repository?|. - popup_confirm( question ). - - write_xlsx_to_web_repository( - objid = alv_line-objid - text = alv_line-obj_text - xstring = alv_line-xlsx_just_now - filename = alv_line-filename ). - COMMIT WORK. - - alv_line-status_icon = icon_okay. - CLEAR alv_line-xlsx_diff. - CLEAR alv_line-write_smw0. - CLEAR alv_line-cell_types. - MODIFY alv_table INDEX row FROM alv_line. - - refresh_stable-row = abap_true. - refresh_stable-col = abap_true. - salv->refresh( s_stable = refresh_stable ). - - ENDCASE. - - CATCH cx_root INTO error. - MESSAGE error TYPE 'I' DISPLAY LIKE 'E'. - ENDTRY. - - ENDMETHOD. - - - METHOD popup_confirm. - - DATA: l_answer TYPE c LENGTH 1. - - CALL FUNCTION 'POPUP_TO_CONFIRM' - EXPORTING - text_question = question - IMPORTING - answer = l_answer. "1 = button 1, 2 = button 2, A = cancel - CASE l_answer. - WHEN '2' OR 'A'. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = 'Action cancelled by user'. - ENDCASE. - - ENDMETHOD. - - - METHOD read_xlsx_from_web_repository. - - DATA: query_string TYPE w3query, - query_table TYPE TABLE OF w3query, - html_table TYPE TABLE OF w3html, - return_code TYPE w3param-ret_code, - content_type TYPE w3param-cont_type, - content_length TYPE w3param-cont_len, - mime_table TYPE TABLE OF w3mime. - - CLEAR: query_table, query_string. - query_string-name = '_OBJECT_ID'. - query_string-value = objid. - APPEND query_string TO query_table. - - CALL FUNCTION 'WWW_GET_MIME_OBJECT' - TABLES - query_string = query_table - html = html_table - mime = mime_table - CHANGING - return_code = return_code - content_type = content_type - content_length = content_length - EXCEPTIONS - object_not_found = 1 - parameter_not_found = 2 - OTHERS = 3. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = 'WWW_GET_MIME_OBJECT'. - ENDIF. - - result = cl_bcs_convert=>solix_to_xstring( it_solix = mime_table iv_size = content_length ). - - ENDMETHOD. - - - METHOD read_screen_fields. - - DATA: lt_dummy TYPE TABLE OF rsparams, - lt_sel_255 TYPE TABLE OF rsparamsl_255. - FIELD-SYMBOLS: - TYPE rsparamsl_255. - - CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS' - EXPORTING - curr_report = sy-repid - TABLES - selection_table = lt_dummy - selection_table_255 = lt_sel_255 - EXCEPTIONS - not_found = 1 - no_report = 2 - OTHERS = 3. - - READ TABLE lt_sel_255 WITH KEY selname = 'P_PATH' ASSIGNING . - ASSERT sy-subrc = 0. - p_path = -low. - - ENDMETHOD. - - - METHOD screen_1001_pbo_first_time. - - DATA: columns TYPE REF TO cl_salv_columns_table, - events TYPE REF TO cl_salv_events_table. - - CREATE OBJECT splitter - EXPORTING - parent = cl_gui_container=>screen0 - rows = 1 - columns = 2 - EXCEPTIONS - cntl_error = 1 - cntl_system_error = 2 - OTHERS = 3. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = 'create splitter'. - ENDIF. - - alv_container = splitter->get_container( row = 1 column = 1 ). - zip_diff_container = splitter->get_container( row = 1 column = 2 ). - - cl_salv_table=>factory( - EXPORTING - r_container = alv_container - IMPORTING - r_salv_table = salv - CHANGING - t_table = alv_table ). - - columns = salv->get_columns( ). - columns->set_cell_type_column( value = 'CELL_TYPES' ). - columns->get_column( 'STATUS_ICON' )->set_medium_text( 'Diff status' ). - columns->get_column( 'STATUS_ICON' )->set_output_length( 2 ). - columns->get_column( 'XLSX_DIFF' )->set_medium_text( 'View diff' ). - columns->get_column( 'XLSX_DIFF' )->set_output_length( 5 ). - columns->get_column( 'XLSX_DIFF' )->set_alignment( if_salv_c_alignment=>centered ). - columns->get_column( 'WRITE_SMW0' )->set_medium_text( 'Web repository' ). - columns->get_column( 'WRITE_SMW0' )->set_output_length( 5 ). - columns->get_column( 'WRITE_SMW0' )->set_alignment( if_salv_c_alignment=>centered ). - columns->get_column( 'PROGRAM' )->set_output_length( 15 ). - columns->get_column( 'PROG_TEXT' )->set_output_length( 30 ). - columns->get_column( 'OBJID' )->set_output_length( 20 ). - columns->get_column( 'OBJ_TEXT' )->set_output_length( 50 ). - columns->get_column( 'FILENAME' )->set_output_length( 50 ). - columns->get_column( 'XLSX_JUST_NOW' )->set_technical( ). - columns->get_column( 'XLSX_REFERENCE' )->set_technical( ). -columns->get_column( 'COMPARE_XLSX_JUST_NOW' )->set_technical( ). -columns->get_column( 'COMPARE_XLSX_REFERENCE' )->set_technical( ). - - events = salv->get_event( ). - SET HANDLER on_link_clicked FOR events. - - salv->display( ). - - ENDMETHOD. - - - METHOD set_sscrfields. - - GET REFERENCE OF sscrfields INTO ref_sscrfields. - - ENDMETHOD. - - - METHOD write_screen_fields. - - DATA: fieldname TYPE string. - FIELD-SYMBOLS: - TYPE simple. - - fieldname = |({ sy-repid })P_PATH|. - ASSIGN (fieldname) TO . - = p_path. - - ENDMETHOD. - - - METHOD write_xlsx_to_web_repository. - - DATA: key TYPE wwwdatatab, - mime TYPE TABLE OF w3mime, - devclass TYPE devclass, - wwwparam TYPE wwwparams, - table_of_wwwparams TYPE TABLE OF wwwparams. - - SELECT SINGLE devclass FROM tadir - INTO devclass - WHERE pgmid = 'R3TR' - AND object = 'W3MI' - AND obj_name = objid. - - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = |Object must be first created manually|. - ENDIF. - - mime = cl_bcs_convert=>xstring_to_solix( xstring ). - key-relid = 'MI'. - key-objid = objid. - key-chname = sy-uname. - key-text = text. - key-tdate = sy-datum. - key-ttime = sy-uzeit. - - CALL FUNCTION 'WWWDATA_EXPORT' - EXPORTING - key = key - TABLES - mime = mime - EXCEPTIONS - wrong_object_type = 1 - export_error = 2 - OTHERS = 3. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = 'WWWDATA_EXPORT'. - ENDIF. - - wwwparam-relid = 'MI'. - wwwparam-objid = objid. - wwwparam-name = 'mimetype'. - wwwparam-value = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'. - APPEND wwwparam TO table_of_wwwparams. - wwwparam-name = 'filename'. - wwwparam-value = filename. - APPEND wwwparam TO table_of_wwwparams. - wwwparam-name = 'filesize'. - wwwparam-value = |{ xstrlen( xstring ) }|. - APPEND wwwparam TO table_of_wwwparams. - wwwparam-name = 'version'. - wwwparam-value = |00001|. - APPEND wwwparam TO table_of_wwwparams. - wwwparam-name = 'fileextension'. - wwwparam-value = |.xlsx|. - APPEND wwwparam TO table_of_wwwparams. - - CALL FUNCTION 'WWWPARAMS_UPDATE' - TABLES - params = table_of_wwwparams - EXCEPTIONS - update_error = 1 - OTHERS = 2. - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = |WWWPARAMS_UPDATE { objid } { filename }|. - ENDIF. - - ENDMETHOD. - - -ENDCLASS. - - - -TABLES sscrfields. -DATA: app TYPE REF TO lcl_app. - -PARAMETERS p_path TYPE zexcel_export_dir. - -SELECTION-SCREEN BEGIN OF SCREEN 1001. -SELECTION-SCREEN FUNCTION KEY 1. -PARAMETERS dummy. -SELECTION-SCREEN END OF SCREEN 1001. - -INITIALIZATION. - CREATE OBJECT app. - app->set_sscrfields( CHANGING sscrfields = sscrfields ). - -AT SELECTION-SCREEN OUTPUT. - app->at_selection_screen_output( ). - -AT SELECTION-SCREEN. - app->at_selection_screen( ). - -AT SELECTION-SCREEN ON EXIT-COMMAND. - app->at_selection_screen_on_exit( ). diff --git a/src/demos/zdemo_excel_checker.prog.xml b/src/demos/zdemo_excel_checker.prog.xml deleted file mode 100644 index 468a47c..0000000 --- a/src/demos/zdemo_excel_checker.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZDEMO_EXCEL_CHECKER - S - 1 - X - D$S - X - - - - R - abap2xlsx demos: check for regressions - 38 - - - - - diff --git a/src/demos/zdemo_excel_comments.prog.abap b/src/demos/zdemo_excel_comments.prog.abap deleted file mode 100644 index 61de791..0000000 --- a/src/demos/zdemo_excel_comments.prog.abap +++ /dev/null @@ -1,48 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL_COMMENTS -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* -REPORT zdemo_excel_comments. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_comment TYPE REF TO zcl_excel_comment, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - lv_comment TYPE string. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'Comments.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - - -START-OF-SELECTION. - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - - " Comments - lo_comment = lo_excel->add_new_comment( ). - lo_comment->set_text( ip_ref = 'B13' ip_text = 'This is how it begins to be debug time...' ). - lo_worksheet->add_comment( lo_comment ). - lo_comment = lo_excel->add_new_comment( ). - lo_comment->set_text( ip_ref = 'C18' ip_text = 'Another comment' ). - lo_worksheet->add_comment( lo_comment ). - lo_comment = lo_excel->add_new_comment( ). - CONCATENATE 'A comment split' cl_abap_char_utilities=>cr_lf 'on 2 lines?' INTO lv_comment. - lo_comment->set_text( ip_ref = 'F6' ip_text = lv_comment ). - - " Second sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - - lo_comment = lo_excel->add_new_comment( ). - lo_comment->set_text( ip_ref = 'A8' ip_text = 'What about a comment on second sheet?' ). - lo_worksheet->add_comment( lo_comment ). - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_excel_comments.prog.xml b/src/demos/zdemo_excel_comments.prog.xml deleted file mode 100644 index 72569ea..0000000 --- a/src/demos/zdemo_excel_comments.prog.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - ZDEMO_EXCEL_COMMENTS - 1 - T - E - X - X - - - - S - P_PATH - . - 9 - D - - - S - RB_BACK - 17 - - - R - abap2xlsx Demo: Hello World - 28 - - - - - diff --git a/src/demos/zdemo_excel_fill_template.prog.abap b/src/demos/zdemo_excel_fill_template.prog.abap deleted file mode 100644 index e06ced2..0000000 --- a/src/demos/zdemo_excel_fill_template.prog.abap +++ /dev/null @@ -1,353 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report Fill Template -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel_fill_template. - -*================= -* Start of generated code. -* All these types were generated -* by ZEXCEL_TEMPLATE_GET_TYPES based -* on the Excel file ZDEMO_EXCEL_TEMPLATE -* from SMW0. -*================= -TYPES t_number TYPE p LENGTH 16 DECIMALS 4. -TYPES: - BEGIN OF t_table1, - person TYPE string, - salary TYPE t_number, - END OF t_table1, - - tt_table1 TYPE STANDARD TABLE OF t_table1 WITH DEFAULT KEY, - - BEGIN OF t_line1, - carrid TYPE string, - connid TYPE string, - fldate TYPE d, - price TYPE t_number, - END OF t_line1, - - tt_line1 TYPE STANDARD TABLE OF t_line1 WITH DEFAULT KEY, - - BEGIN OF t_table2, - carrid TYPE string, - price TYPE t_number, - line1 TYPE tt_line1, - END OF t_table2, - - tt_table2 TYPE STANDARD TABLE OF t_table2 WITH DEFAULT KEY, - - BEGIN OF t_sheet1, - date TYPE d, - time TYPE t, - user TYPE string, - total TYPE t_number, - price TYPE t_number, - table1 TYPE tt_table1, - table2 TYPE tt_table2, - END OF t_sheet1, - - - BEGIN OF t_table3, - person TYPE string, - salary TYPE t_number, - END OF t_table3, - - tt_table3 TYPE STANDARD TABLE OF t_table3 WITH DEFAULT KEY, - - BEGIN OF t_sheet2, - date TYPE d, - time TYPE t, - user TYPE string, - total TYPE t_number, - table3 TYPE tt_table3, - END OF t_sheet2. - - -DATA: lo_data TYPE REF TO zcl_excel_template_data. -*================= -* End of generated code -*================= - -* define variables -DATA: gs_sheet1 TYPE t_sheet1, - gs_sheet2 TYPE t_sheet2. - -TABLES: sscrfields. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'fill_template.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -PARAMETERS: p_smw0 RADIOBUTTON GROUP rad1 DEFAULT 'X'. -PARAMETERS: p_objid TYPE w3objid OBLIGATORY DEFAULT 'ZDEMO_EXCEL_TEMPLATE'. - -PARAMETERS: p_file RADIOBUTTON GROUP rad1. -PARAMETERS: p_fpath TYPE string OBLIGATORY LOWER CASE DEFAULT 'c:\temp\whatever.xlsx'. - -SELECTION-SCREEN SKIP 1. - -SELECTION-SCREEN PUSHBUTTON /1(45) but_txt USER-COMMAND get_types. - - -INITIALIZATION. - but_txt = '@BY@ Analyze file to propose TYPES'. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fpath. - PERFORM get_file_path CHANGING p_fpath. - -AT SELECTION-SCREEN. - CASE sscrfields-ucomm. - WHEN 'GET_TYPES'. - SUBMIT zexcel_template_get_types - WITH p_smw0 = p_smw0 - WITH p_objid = p_objid - WITH p_file = p_file - WITH p_fpath = p_fpath - AND RETURN. - ENDCASE. - -START-OF-SELECTION. - PERFORM load_data. - PERFORM generate_file. - -FORM load_data. - - FIELD-SYMBOLS: TYPE t_table1, - TYPE t_line1, - TYPE t_table2. - - gs_sheet1-date = sy-datum. - gs_sheet1-time = sy-uzeit. - gs_sheet1-user = sy-uname. - gs_sheet1-total = 5600. - - APPEND INITIAL LINE TO gs_sheet1-table1 ASSIGNING . - -person = 'Lurch Schpellchek'. - -salary = 1200. - - APPEND INITIAL LINE TO gs_sheet1-table1 ASSIGNING . - -person = 'Russell Sprout'. - -salary = 1300. - - APPEND INITIAL LINE TO gs_sheet1-table1 ASSIGNING . - -person = 'Fergus Douchebag'. - -salary = 3000. - - APPEND INITIAL LINE TO gs_sheet1-table1 ASSIGNING . - -person = 'Bartholomew Shoe'. - -salary = 100. - - - gs_sheet1-price = 14003. - - APPEND INITIAL LINE TO gs_sheet1-table2 ASSIGNING . - -carrid = 'AC'. - -price = 1222. - - APPEND INITIAL LINE TO -line1 ASSIGNING . - -carrid = 'AC'. - -connid = '0820'. - -fldate = '20021220'. - -price = 1222. - - - APPEND INITIAL LINE TO gs_sheet1-table2 ASSIGNING . - -carrid = 'AF'. - -price = 2222. - - APPEND INITIAL LINE TO -line1 ASSIGNING . - -carrid = 'AF'. - -connid = '0820'. - -fldate = '20021223'. - -price = 2222. - - - APPEND INITIAL LINE TO gs_sheet1-table2 ASSIGNING . - -carrid = 'LH'. - -price = 9488. - - APPEND INITIAL LINE TO -line1 ASSIGNING . - -carrid = 'LH'. - -connid = '0400'. - -fldate = '19950228'. - -price = 899. - - APPEND INITIAL LINE TO -line1 ASSIGNING . - -carrid = 'LH'. - -connid = '0400'. - -fldate = '19951117'. - -price = 1499. - - APPEND INITIAL LINE TO -line1 ASSIGNING . - -carrid = 'LH'. - -connid = '0400'. - -fldate = '19950606'. - -price = 1090. - - APPEND INITIAL LINE TO -line1 ASSIGNING . - -carrid = 'LH'. - -connid = '0400'. - -fldate = '19950428'. - -price = 6000. - - APPEND INITIAL LINE TO -line1 ASSIGNING . - -carrid = 'LH'. - -connid = '0400'. - -fldate = '20021221'. - -price = 222. - - APPEND INITIAL LINE TO gs_sheet1-table2 ASSIGNING . - -carrid = 'SQ'. - -price = 849. - - APPEND INITIAL LINE TO -line1 ASSIGNING . - -carrid = 'SQ'. - -connid = '0026'. - -fldate = '19950228'. - -price = 849. - - - MOVE-CORRESPONDING gs_sheet1 TO gs_sheet2. - gs_sheet2-table3 = gs_sheet1-table1. - -ENDFORM. - -FORM generate_file. - - DATA: lo_excel TYPE REF TO zcl_excel, - lo_reader TYPE REF TO zif_excel_reader, - lo_root TYPE REF TO cx_root. - - TRY. - -* prepare data - CREATE OBJECT lo_data. - lo_data->add( iv_sheet = 'Sheet1' iv_data = gs_sheet1 ). - lo_data->add( iv_sheet = 'Sheet2' iv_data = gs_sheet2 ). - -* create reader - CREATE OBJECT lo_reader TYPE zcl_excel_reader_2007. - -* load template - IF p_file IS NOT INITIAL. - lo_excel = lo_reader->load_file( p_fpath ). - ELSE. - PERFORM load_smw0 USING lo_reader p_objid CHANGING lo_excel. - ENDIF. - -* merge data with template - lo_excel->fill_template( lo_data ). - - -*** Create output - lcl_output=>output( cl_excel = lo_excel iv_info_message = abap_false ). - - CATCH cx_root INTO lo_root. - MESSAGE lo_root TYPE 'I' DISPLAY LIKE 'E'. - ENDTRY. - -ENDFORM. - -*&---------------------------------------------------------------------* -*& Form Get_file_path -*&---------------------------------------------------------------------* -FORM get_file_path CHANGING cv_path TYPE string. - - DATA: - lv_rc TYPE i, - lv_user_action TYPE i, - lt_file_table TYPE filetable, - ls_file_table LIKE LINE OF lt_file_table. - - CLEAR cv_path. - - cl_gui_frontend_services=>file_open_dialog( - EXPORTING - window_title = 'select template xlsx' - multiselection = '' - default_extension = '*.xlsx' - file_filter = 'Text file (*.xlsx)|*.xlsx|All (*.*)|*.*' - CHANGING - file_table = lt_file_table - rc = lv_rc - user_action = lv_user_action - EXCEPTIONS - OTHERS = 1 - ). - IF sy-subrc = 0. - IF lv_user_action = cl_gui_frontend_services=>action_ok. - IF lt_file_table IS NOT INITIAL. - READ TABLE lt_file_table INTO ls_file_table INDEX 1. - IF sy-subrc = 0. - cv_path = ls_file_table-filename. - ENDIF. - ENDIF. - ENDIF. - ENDIF. -ENDFORM. " Get_file_path - -FORM load_smw0 - USING - io_reader TYPE REF TO zif_excel_reader - iv_w3objid TYPE w3objid - CHANGING - ro_excel TYPE REF TO zcl_excel - RAISING - zcx_excel. - - DATA: lv_excel_data TYPE xstring, - lt_mime TYPE TABLE OF w3mime, - ls_key TYPE wwwdatatab, - lv_errormessage TYPE string, - lv_filesize TYPE i, - lv_filesizec TYPE c LENGTH 10. - -*--------------------------------------------------------------------* -* Read file into binary string -*--------------------------------------------------------------------* - - ls_key-relid = 'MI'. - ls_key-objid = iv_w3objid . - - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_key - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the MIME object'(004). - zcx_excel=>raise_text( lv_errormessage ). - ENDIF. - - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = ls_key-relid - objid = ls_key-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. - - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = lv_excel_data - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. - -*--------------------------------------------------------------------* -* Parse Excel data into ZCL_EXCEL object from binary string -*--------------------------------------------------------------------* - ro_excel = io_reader->load( i_excel2007 = lv_excel_data ). - -ENDFORM. diff --git a/src/demos/zdemo_excel_fill_template.prog.xml b/src/demos/zdemo_excel_fill_template.prog.xml deleted file mode 100644 index e75f886..0000000 --- a/src/demos/zdemo_excel_fill_template.prog.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - ZDEMO_EXCEL_FILL_TEMPLATE - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Fill template - 29 - - - S - P_FILE - Load template from file - 31 - - - S - P_FPATH - Path to template.xlsx - 29 - - - S - P_OBJID - Object ID - 17 - - - S - P_PATH - . - 9 - D - - - S - P_SMW0 - Load template from SMW0 - 31 - - - S - RB_BACK - 17 - - - - - diff --git a/src/demos/zdemo_excel_outputopt_incl.prog.abap b/src/demos/zdemo_excel_outputopt_incl.prog.abap deleted file mode 100644 index 9c7488d..0000000 --- a/src/demos/zdemo_excel_outputopt_incl.prog.abap +++ /dev/null @@ -1,391 +0,0 @@ -*&---------------------------------------------------------------------* -*& Include ZDEMO_EXCEL_OUTPUTOPT_INCL -*&---------------------------------------------------------------------* -CLASS lcl_output DEFINITION CREATE PRIVATE. - PUBLIC SECTION. - CLASS-METHODS: - output IMPORTING cl_excel TYPE REF TO zcl_excel - iv_writerclass_name TYPE clike OPTIONAL - iv_info_message TYPE abap_bool DEFAULT abap_true - RAISING zcx_excel, - f4_path RETURNING VALUE(selected_folder) TYPE string, - parametertexts. - - PRIVATE SECTION. - METHODS: - download_frontend - RAISING - zcx_excel, - download_backend, - display_online, - send_email. - - DATA: xdata TYPE xstring, " Will be used for sending as email - t_rawdata TYPE solix_tab, " Will be used for downloading or open directly - bytecount TYPE i. " Will be used for downloading or open directly -ENDCLASS. "lcl_output DEFINITION - - -SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE txt_bl1. -PARAMETERS: rb_down RADIOBUTTON GROUP rb1 USER-COMMAND space. - -PARAMETERS: rb_back RADIOBUTTON GROUP rb1. - -PARAMETERS: rb_show RADIOBUTTON GROUP rb1 DEFAULT 'X' . - -PARAMETERS: rb_send RADIOBUTTON GROUP rb1. - -PARAMETERS: p_path TYPE string LOWER CASE MODIF ID pat. -PARAMETERS: p_email TYPE string LOWER CASE MODIF ID ema OBLIGATORY DEFAULT 'insert_your_emailadress@here'. -PARAMETERS: p_backfn TYPE text40 NO-DISPLAY. -SELECTION-SCREEN END OF BLOCK bl1. - - -AT SELECTION-SCREEN OUTPUT. - LOOP AT SCREEN. - - IF rb_down IS INITIAL AND screen-group1 = 'PAT'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - IF rb_send IS INITIAL AND screen-group1 = 'EMA'. - screen-input = 0. - screen-invisible = 1. - ENDIF. - - MODIFY SCREEN. - - ENDLOOP. - -INITIALIZATION. - IF sy-batch IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = p_path ). - cl_gui_cfw=>flush( ). - ENDIF. - lcl_output=>parametertexts( ). " If started in language w/o textelements translated set defaults - txt_bl1 = 'Output options'(bl1). - p_backfn = gc_save_file_name. " Use as default if nothing else is supplied by submit - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - p_path = lcl_output=>f4_path( ). - - -*----------------------------------------------------------------------* -* CLASS lcl_output IMPLEMENTATION -*----------------------------------------------------------------------* -CLASS lcl_output IMPLEMENTATION. - METHOD output. - - DATA: cl_output TYPE REF TO lcl_output, - cl_writer TYPE REF TO zif_excel_writer, - cl_error TYPE REF TO zcx_excel. - - TRY. - - IF iv_writerclass_name IS INITIAL. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. - ELSE. - CREATE OBJECT cl_output. - CREATE OBJECT cl_writer TYPE (iv_writerclass_name). - ENDIF. - cl_output->xdata = cl_writer->write_file( cl_excel ). - - cl_output->t_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstring = cl_output->xdata ). - cl_output->bytecount = xstrlen( cl_output->xdata ). - - CASE 'X'. - WHEN rb_down. - IF sy-batch IS INITIAL. - cl_output->download_frontend( ). - ELSE. - MESSAGE e802(zabap2xlsx). - ENDIF. - - WHEN rb_back. - cl_output->download_backend( ). - - WHEN rb_show. - IF sy-batch IS INITIAL. - cl_output->display_online( ). - ELSE. - MESSAGE e803(zabap2xlsx). - ENDIF. - - WHEN rb_send. - cl_output->send_email( ). - - ENDCASE. - - CATCH zcx_excel INTO cl_error. - IF iv_info_message = abap_true. - MESSAGE cl_error TYPE 'I' DISPLAY LIKE 'E'. - ELSE. - RAISE EXCEPTION cl_error. - ENDIF. - ENDTRY. - - ENDMETHOD. "output - - METHOD f4_path. - DATA: new_path TYPE string, - repid TYPE syrepid, - dynnr TYPE sydynnr, - lt_dynpfields TYPE TABLE OF dynpread, - ls_dynpfields LIKE LINE OF lt_dynpfields. - -* Get current value - dynnr = sy-dynnr. - repid = sy-repid. - ls_dynpfields-fieldname = 'P_PATH'. - APPEND ls_dynpfields TO lt_dynpfields. - - CALL FUNCTION 'DYNP_VALUES_READ' - EXPORTING - dyname = repid - dynumb = dynnr - TABLES - dynpfields = lt_dynpfields - EXCEPTIONS - invalid_abapworkarea = 1 - invalid_dynprofield = 2 - invalid_dynproname = 3 - invalid_dynpronummer = 4 - invalid_request = 5 - no_fielddescription = 6 - invalid_parameter = 7 - undefind_error = 8 - double_conversion = 9 - stepl_not_found = 10 - OTHERS = 11. - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. - RETURN. - ENDIF. - - READ TABLE lt_dynpfields INTO ls_dynpfields INDEX 1. - - new_path = ls_dynpfields-fieldvalue. - selected_folder = new_path. - - cl_gui_frontend_services=>directory_browse( - EXPORTING - window_title = 'Select path to download EXCEL-file' - initial_folder = new_path - CHANGING - selected_folder = new_path - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4 - ). - cl_gui_cfw=>flush( ). - CHECK new_path IS NOT INITIAL. - selected_folder = new_path. - - ENDMETHOD. "f4_path - - METHOD parametertexts. -* If started in language w/o textelements translated set defaults -* Furthermore I don't have to change the selectiontexts of all demoreports. - - TYPES: BEGIN OF ty_parameter, - name TYPE string, - text TYPE string, - END OF ty_parameter. - DATA: parameters TYPE TABLE OF ty_parameter, - parameter TYPE ty_parameter, - parameter_text_name TYPE string. - FIELD-SYMBOLS: TYPE ty_parameter, - TYPE c. - - parameter-name = 'RB_DOWN'. parameter-text = 'Save to frontend'. APPEND parameter TO parameters. - parameter-name = 'RB_BACK'. parameter-text = 'Save to backend'. APPEND parameter TO parameters. - parameter-name = 'RB_SHOW'. parameter-text = 'Direct display'. APPEND parameter TO parameters. - parameter-name = 'RB_SEND'. parameter-text = 'Send via email'. APPEND parameter TO parameters. - parameter-name = 'P_PATH'. parameter-text = 'Frontend-path to download to'. APPEND parameter TO parameters. - parameter-name = 'P_EMAIL'. parameter-text = 'Email to send xlsx to'. APPEND parameter TO parameters. - - LOOP AT parameters ASSIGNING . - parameter_text_name = |%_{ -name }_%_APP_%-TEXT|. - ASSIGN (parameter_text_name) TO . - IF sy-subrc = 0. - IF = -name OR - IS INITIAL. - = -text. - ENDIF. - ENDIF. - ENDLOOP. - - ENDMETHOD. "parametertexts - - METHOD: download_frontend. - DATA: filename TYPE string, - message TYPE string. -* I don't like p_path here - but for this include it's ok - filename = p_path. -* Add trailing "\" or "/" - IF filename CA '/'. - REPLACE REGEX '([^/])\s*$' IN filename WITH '$1/' . - ELSE. - REPLACE REGEX '([^\\])\s*$' IN filename WITH '$1\\'. - ENDIF. - - CONCATENATE filename gc_save_file_name INTO filename. -* Get trailing blank - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = bytecount - filename = filename - filetype = 'BIN' - CHANGING data_tab = t_rawdata - EXCEPTIONS OTHERS = 1 ). - IF sy-subrc <> 0. - MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno - WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO message. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = message. - ENDIF. - ENDMETHOD. "download_frontend - - METHOD download_backend. - DATA: bytes_remain TYPE i. - FIELD-SYMBOLS: LIKE LINE OF t_rawdata. - - OPEN DATASET p_backfn FOR OUTPUT IN BINARY MODE. - CHECK sy-subrc = 0. - - bytes_remain = bytecount. - - LOOP AT t_rawdata ASSIGNING . - - AT LAST. - CHECK bytes_remain >= 0. - TRANSFER TO p_backfn LENGTH bytes_remain. - EXIT. - ENDAT. - - TRANSFER TO p_backfn. - SUBTRACT 255 FROM bytes_remain. " Solix has length 255 - - ENDLOOP. - - CLOSE DATASET p_backfn. - - IF sy-repid <> sy-cprog AND sy-cprog IS NOT INITIAL. " no need to display anything if download was selected and report was called for demo purposes - LEAVE PROGRAM. - ELSE. - MESSAGE 'Data transferred to default backend directory' TYPE 'S'. - ENDIF. - ENDMETHOD. "download_backend - - METHOD display_online. - DATA:error TYPE REF TO i_oi_error, - t_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY, - cl_control TYPE REF TO i_oi_container_control, "OIContainerCtrl - cl_document TYPE REF TO i_oi_document_proxy. "Office Dokument - - c_oi_container_control_creator=>get_container_control( IMPORTING control = cl_control - error = error ). - APPEND error TO t_errors. - - cl_control->init_control( EXPORTING inplace_enabled = 'X' - no_flush = 'X' - r3_application_name = 'Demo Document Container' - parent = cl_gui_container=>screen0 - IMPORTING error = error - EXCEPTIONS OTHERS = 2 ). - APPEND error TO t_errors. - - cl_control->get_document_proxy( EXPORTING document_type = 'Excel.Sheet' " EXCEL - no_flush = ' ' - IMPORTING document_proxy = cl_document - error = error ). - APPEND error TO t_errors. -* Errorhandling should be inserted here - - cl_document->open_document_from_table( EXPORTING document_size = bytecount - document_table = t_rawdata - open_inplace = 'X' ). - - WRITE: '.'. " To create an output. That way screen0 will exist - ENDMETHOD. "display_online - - METHOD send_email. -* Needed to send emails - DATA: bcs_exception TYPE REF TO cx_bcs, - errortext TYPE string, - cl_send_request TYPE REF TO cl_bcs, - cl_document TYPE REF TO cl_document_bcs, - cl_recipient TYPE REF TO if_recipient_bcs, - cl_sender TYPE REF TO cl_cam_address_bcs, - t_attachment_header TYPE soli_tab, - wa_attachment_header LIKE LINE OF t_attachment_header, - attachment_subject TYPE sood-objdes, - - sood_bytecount TYPE sood-objlen, - mail_title TYPE so_obj_des, - t_mailtext TYPE soli_tab, - wa_mailtext LIKE LINE OF t_mailtext, - send_to TYPE adr6-smtp_addr, - sent TYPE abap_bool. - - - mail_title = 'Mail title'. - wa_mailtext = 'Mailtext'. - APPEND wa_mailtext TO t_mailtext. - - TRY. -* Create send request - cl_send_request = cl_bcs=>create_persistent( ). -* Create new document with mailtitle and mailtextg - cl_document = cl_document_bcs=>create_document( i_type = 'RAW' "#EC NOTEXT - i_text = t_mailtext - i_subject = mail_title ). -* Add attachment to document -* since the new excelfiles have an 4-character extension .xlsx but the attachment-type only holds 3 charactes .xls, -* we have to specify the real filename via attachment header -* Use attachment_type xls to have SAP display attachment with the excel-icon - attachment_subject = gc_save_file_name. - CONCATENATE '&SO_FILENAME=' attachment_subject INTO wa_attachment_header. - APPEND wa_attachment_header TO t_attachment_header. -* Attachment - sood_bytecount = bytecount. " next method expects sood_bytecount instead of any positive integer *sigh* - cl_document->add_attachment( i_attachment_type = 'XLS' "#EC NOTEXT - i_attachment_subject = attachment_subject - i_attachment_size = sood_bytecount - i_att_content_hex = t_rawdata - i_attachment_header = t_attachment_header ). - -* add document to send request - cl_send_request->set_document( cl_document ). - -* add recipient(s) - here only 1 will be needed - send_to = p_email. - IF send_to IS INITIAL. - send_to = 'no_email@no_email.no_email'. " Place into SOST in any case for demonstration purposes - ENDIF. - cl_recipient = cl_cam_address_bcs=>create_internet_address( send_to ). - cl_send_request->add_recipient( cl_recipient ). - -* Und abschicken - sent = cl_send_request->send( i_with_error_screen = 'X' ). - - COMMIT WORK. - - IF sent = abap_true. - MESSAGE s805(zabap2xlsx). - MESSAGE 'Document ready to be sent - Check SOST or SCOT' TYPE 'I'. - ELSE. - MESSAGE i804(zabap2xlsx) WITH p_email. - ENDIF. - - CATCH cx_bcs INTO bcs_exception. - errortext = bcs_exception->if_message~get_text( ). - MESSAGE errortext TYPE 'I'. - - ENDTRY. - ENDMETHOD. "send_email - - -ENDCLASS. "lcl_output IMPLEMENTATION diff --git a/src/demos/zdemo_excel_outputopt_incl.prog.xml b/src/demos/zdemo_excel_outputopt_incl.prog.xml deleted file mode 100644 index 96fc354..0000000 --- a/src/demos/zdemo_excel_outputopt_incl.prog.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - ZDEMO_EXCEL_OUTPUTOPT_INCL - I - E - X - - - - R - Include ZDEMO_EXCEL_OUTPUTOPT_INCL - 34 - - - - - diff --git a/src/demos/zdemo_excel_wda01.wdya.xml b/src/demos/zdemo_excel_wda01.wdya.xml deleted file mode 100644 index 56d8958..0000000 --- a/src/demos/zdemo_excel_wda01.wdya.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - ZDEMO_EXCEL_WDA01 - ZDEMO_EXCEL_WDA01 - W_MAIN - DEFAULT - ZDEMO_EXCEL_WDA01 - - - - diff --git a/src/demos/zdemo_excel_wda01.wdyn.xml b/src/demos/zdemo_excel_wda01.wdyn.xml deleted file mode 100644 index 6f98b46..0000000 --- a/src/demos/zdemo_excel_wda01.wdyn.xml +++ /dev/null @@ -1,1410 +0,0 @@ - - - - - - - - ZDEMO_EXCEL_WDA01 - A - COMPONENTCONTROLLER - COMPONENTINTERFACE - ZDEMO_EXCEL_WDA01 - - - - ZDEMO_EXCEL_WDA01 - E - abap2xlsx Web Dynpro Demo 1 - - - - - - - ZDEMO_EXCEL_WDA01 - EMPTYVIEW - A - CL_WDY_MD_EMPTY_VIEW - EMPTYVIEW - EMPTYVIEW - - - - ZDEMO_EXCEL_WDA01 - EMPTYVIEW - SHOWEMPTYVIEW - A - CL_WDY_MD_INBOUND_PLUG - SHOWEMPTYVIEW - - - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - A - CL_WDY_MD_VIEW - V_MAIN - ROOTUIELEMENTCONTAINER - E - V_MAIN - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - E - Web Dynpro View - - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - 1 - CL_WDY_MD_BUTTON - BTN_DOWNLOAD - STANDARD - BUTTON - ROOTUIELEMENTCONTAINER - CHILDREN - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD_LD - A - 1 - CL_WDY_MD_FLOW_DATA - BTN_DOWNLOAD_LD - STANDARD - FLOW_DATA - BTN_DOWNLOAD - LAYOUT_DATA - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - CL_WDY_MD_TRANSP_CONTAINER - ROOTUIELEMENTCONTAINER - STANDARD - TRANSPARENT_CONTAINER - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER_LAYOUT - A - 1 - CL_WDY_MD_FLOW_LAYOUT - ROOTUIELEMENTCONTAINER_LAYOUT - STANDARD - FLOW_LAYOUT - ROOTUIELEMENTCONTAINER - LAYOUT - - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - ON_ACTION - A - ON_ACTION - BTN_DOWNLOAD - - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - ACTIVATE_ACCESS_KEY - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - CONTEXT_MENU_BEHAVIOUR - 00 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - DESIGN - 00 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - ENABLED - X - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - HOTKEY - 00 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - IMAGE_FIRST - X - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - IMAGE_IS_DECORATIVE - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - TEXT - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - TEXT_DIRECTION - 02 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - VISIBLE - 02 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD_LD - A - CELL_DESIGN - 04 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD_LD - A - V_GUTTER - 00 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - ARIA_LANDMARK - 10 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - CONTEXT_MENU_BEHAVIOUR - 00 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - ENABLED - X - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - HANDLE_HOTKEYS - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - IS_LAYOUT_CONTAINER - X - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - SCROLLING_MODE - 02 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - SCROLL_LEFT - 0 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - SCROLL_TOP - 0 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER - A - VISIBLE - 02 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ROOTUIELEMENTCONTAINER_LAYOUT - A - WRAPPING - X - - - - - - ZDEMO_EXCEL_WDA01 - W_MAIN - A - CL_WDY_MD_WINDOW - W_MAIN - W_MAIN - V_MAIN_USAGE_0 - - - - ZDEMO_EXCEL_WDA01 - W_MAIN - DEFAULT - A - CL_WDY_MD_INBOUND_PLUG - 1 - DEFAULT - X - - - - - ZDEMO_EXCEL_WDA01 - W_MAIN - V_MAIN_USAGE_0 - A - CL_WDY_MD_VIEW_USAGE - V_MAIN - V_MAIN_USAGE_0 - - - - - - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - A - 02 - CONTEXT - COMPONENTCONTROLLER - ZIWCI_DEMO_EXCEL_WDA01 - - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOAPPLICATIONSTATECHANGE - E - Handling for Suspending and Resuming an Application - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOBEFORENAVIGATION - E - Error Handling Before Navigation Through Application - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOEXIT - E - Controller Clean-Up Method - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOINIT - E - Controller Initialization Method - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOPOSTPROCESSING - E - Prepare Output - - - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOAPPLICATIONSTATECHANGE - STATE_CHANGE - A - 1 - 1 - IF_WD_APPLICATION_STATE_CHANGE - STATE_CHANGE - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOBEFORENAVIGATION - IS_CURRENT_ROOT - A - 1 - WDY_BOOLEAN - IS_CURRENT_ROOT - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOEXIT - REASON - A - 1 - WDR_APPL_EXIT_REASON - REASON - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOPOSTPROCESSING - IS_CURRENT_ROOT - A - 1 - WDY_BOOLEAN - IS_CURRENT_ROOT - - - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - CONTEXT - A - CL_WDY_MD_CONTEXT_VALUE_NODE - 03 - 01 - 01 - X - CONTEXT - X - X - - - - - - ZDEMO_EXCEL_WDA01 - EMPTYVIEW - A - 01 - EMPTYVIEW - - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - A - 01 - CONTEXT - V_MAIN - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - 00O2TRN3HOPNY2XMW9ZPOIO72 - A - COMPONENTCONTROLLER - - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - E - Download Excel file - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - E - Download Excel file - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOAFTERACTION - E - Method for non-action specific operations before navigation - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - E - Method for Validation of User Input - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOEXIT - E - Controller Clean-Up Method - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOINIT - E - Controller Initialization Method - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOMODIFYVIEW - E - Method for Modifying the View Before Rendering - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOONCONTEXTMENU - E - Method for Modifying the Context Menu - - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOMODIFYVIEW - FIRST_TIME - A - 1 - WDY_BOOLEAN - FIRST_TIME - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOMODIFYVIEW - VIEW - A - 2 - 1 - IF_WD_VIEW - VIEW - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOONCONTEXTMENU - CONTEXT_MENU_EVENT - A - 1 - 1 - IF_WD_CONTEXT_MENU_EVENT - CONTEXT_MENU_EVENT - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOONCONTEXTMENU - CONTEXT_MENU_MANAGER - A - 2 - 1 - IF_WD_CONTEXT_MENU_MANAGER - CONTEXT_MENU_MANAGER - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOONCONTEXTMENU - MENU - A - 3 - 3 - 1 - CL_WD_MENU - MENU - - - - - ZDEMO_EXCEL_WDA01 - V_MAIN - CONTEXT - A - CL_WDY_MD_CONTEXT_VALUE_NODE - 03 - 01 - 01 - X - CONTEXT - X - - - - - - ZDEMO_EXCEL_WDA01 - W_MAIN - A - 06 - CONTEXT - W_MAIN - - - - ZDEMO_EXCEL_WDA01 - W_MAIN - 00O2TRN3HOPNY2XMW9ZPOIHVI - A - COMPONENTCONTROLLER - - - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOEXIT - E - Controller Clean-Up Method - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOINIT - E - Controller Initialization Method - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOONCLOSE - E - Handling For Closing of Window - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOONOPEN - E - Handling For Opening of Window - - - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOONOPEN - WINDOW_DESCR - A - 1 - 1 - IF_WD_WINDOW_DESCRIPTION - WINDOW_DESCR - - - - - ZDEMO_EXCEL_WDA01 - W_MAIN - CONTEXT - A - CL_WDY_MD_CONTEXT_VALUE_NODE - 03 - 01 - 01 - X - CONTEXT - X - - - - - - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOAPPLICATIONSTATECHANGE - A - CL_WDY_MD_CONTROLLER_METHOD - 1 - 2 - WDDOAPPLICATIONSTATECHANGE - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOBEFORENAVIGATION - A - CL_WDY_MD_CONTROLLER_METHOD - 1 - 2 - WDDOBEFORENAVIGATION - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOEXIT - A - CL_WDY_MD_CONTROLLER_METHOD - 1 - 2 - WDDOEXIT - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOINIT - A - CL_WDY_MD_CONTROLLER_METHOD - 1 - 2 - WDDOINIT - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOPOSTPROCESSING - A - CL_WDY_MD_CONTROLLER_METHOD - 1 - 2 - WDDOPOSTPROCESSING - - - ZDEMO_EXCEL_WDA01 - V_MAIN - BTN_DOWNLOAD - A - CL_WDY_MD_ACTION - BTN_DOWNLOAD - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - A - CL_WDY_MD_CTLR_EVENT_HANDLER - 2 - V_MAIN - BTN_DOWNLOAD - ONACTIONBTN_DOWNLOAD - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOAFTERACTION - A - CL_WDY_MD_CONTROLLER_METHOD - 2 - WDDOAFTERACTION - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - A - CL_WDY_MD_CONTROLLER_METHOD - 2 - WDDOBEFOREACTION - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOEXIT - A - CL_WDY_MD_CONTROLLER_METHOD - 2 - WDDOEXIT - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOINIT - A - CL_WDY_MD_CONTROLLER_METHOD - 2 - WDDOINIT - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOMODIFYVIEW - A - CL_WDY_MD_CONTROLLER_METHOD - 2 - WDDOMODIFYVIEW - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOONCONTEXTMENU - A - CL_WDY_MD_CONTROLLER_METHOD - 2 - WDDOONCONTEXTMENU - - - ZDEMO_EXCEL_WDA01 - W_MAIN - HANDLEDEFAULT - A - CL_WDY_MD_CTLR_EVENT_HANDLER - 1 - 2 - W_MAIN - DEFAULT - HANDLEDEFAULT - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOEXIT - A - CL_WDY_MD_CONTROLLER_METHOD - 1 - 2 - WDDOEXIT - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOINIT - A - CL_WDY_MD_CONTROLLER_METHOD - 1 - 2 - WDDOINIT - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOONCLOSE - A - CL_WDY_MD_CONTROLLER_METHOD - 1 - 2 - WDDOONCLOSE - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOONOPEN - A - CL_WDY_MD_CONTROLLER_METHOD - 1 - 2 - WDDOONOPEN - - - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOAPPLICATIONSTATECHANGE - 1 - method WDDOAPPLICATIONSTATECHANGE . - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOAPPLICATIONSTATECHANGE - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOBEFORENAVIGATION - 1 - method WDDOBEFORENAVIGATION . - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOBEFORENAVIGATION - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOEXIT - 1 - method WDDOEXIT . - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOEXIT - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOINIT - 1 - method WDDOINIT . - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOINIT - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOPOSTPROCESSING - 1 - method WDDOPOSTPROCESSING . - - - ZDEMO_EXCEL_WDA01 - COMPONENTCONTROLLER - WDDOPOSTPROCESSING - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 1 - METHOD onactionbtn_download . - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 2 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 3 - DATA: lo_excel TYPE REF TO zcl_excel, - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 4 - lo_excel_writer TYPE REF TO zcl_excel_writer_2007, - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 5 - lo_worksheet TYPE REF TO zcl_excel_worksheet. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 6 - DATA: lv_content TYPE xstring. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 7 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 8 - TRY. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 9 - CREATE OBJECT lo_excel. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 10 - lo_worksheet = lo_excel->get_active_worksheet( ). - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 11 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 12 - lo_worksheet->set_cell( ip_column = 'B' - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 13 - ip_row = '2' - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 14 - ip_value = 'Welcome to Web Dynpro and abap2xlsx.' ). - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 15 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 16 - CREATE OBJECT lo_excel_writer. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 17 - lv_content = lo_excel_writer->zif_excel_writer~write_file( lo_excel ). - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 18 - CATCH zcx_excel. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 19 - "Unlikely, ignore to keep demo simple. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 20 - ENDTRY. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 21 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 22 - DATA: lv_filename TYPE string. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 23 - lv_filename = 'wda01.xlsx'. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 24 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 25 - CALL METHOD cl_wd_runtime_services=>attach_file_to_response - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 26 - EXPORTING - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 27 - i_filename = lv_filename - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 28 - i_content = lv_content - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 29 - i_mime_type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 30 - i_in_new_window = abap_false - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 31 - i_inplace = abap_false. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 32 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - ONACTIONBTN_DOWNLOAD - 33 - ENDMETHOD. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOAFTERACTION - 1 - method WDDOAFTERACTION . - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOAFTERACTION - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 1 - method WDDOBEFOREACTION . - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 2 - * data lo_api_controller type ref to if_wd_view_controller. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 3 - * data lo_action type ref to if_wd_action. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 4 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 5 - * lo_api_controller = wd_this->wd_get_api( ). - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 6 - * lo_action = lo_api_controller->get_current_action( ). - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 7 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 8 - * if lo_action is bound. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 9 - * case lo_action->name. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 10 - * when '...'. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 11 - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 12 - * endcase. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 13 - * endif. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOBEFOREACTION - 14 - endmethod. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOEXIT - 1 - method WDDOEXIT . - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOEXIT - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOINIT - 1 - method WDDOINIT . - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOINIT - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOMODIFYVIEW - 1 - method WDDOMODIFYVIEW . - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOMODIFYVIEW - 2 - DATA lo_button TYPE REF TO cl_wd_button. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOMODIFYVIEW - 3 - lo_button ?= view->get_element( id = 'BTN_DOWNLOAD' ). - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOMODIFYVIEW - 4 - lo_button->set_text( 'Download' ). - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOMODIFYVIEW - 5 - endmethod. - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOONCONTEXTMENU - 1 - method WDDOONCONTEXTMENU . - - - ZDEMO_EXCEL_WDA01 - V_MAIN - WDDOONCONTEXTMENU - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - W_MAIN - HANDLEDEFAULT - 1 - method HANDLEDEFAULT . - - - ZDEMO_EXCEL_WDA01 - W_MAIN - HANDLEDEFAULT - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOEXIT - 1 - method WDDOEXIT . - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOEXIT - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOINIT - 1 - method WDDOINIT . - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOINIT - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOONCLOSE - 1 - method WDDOONCLOSE . - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOONCLOSE - 2 - endmethod. - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOONOPEN - 1 - method WDDOONOPEN . - - - ZDEMO_EXCEL_WDA01 - W_MAIN - WDDOONOPEN - 2 - endmethod. - - - - - diff --git a/src/demos/zdemo_teched1.prog.abap b/src/demos/zdemo_teched1.prog.abap deleted file mode 100644 index b89dcdd..0000000 --- a/src/demos/zdemo_teched1.prog.abap +++ /dev/null @@ -1,83 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED1 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched1. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo01' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_teched1.prog.xml b/src/demos/zdemo_teched1.prog.xml deleted file mode 100644 index fd042e2..0000000 --- a/src/demos/zdemo_teched1.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED1 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_teched10.prog.abap b/src/demos/zdemo_teched10.prog.abap deleted file mode 100644 index d928d00..0000000 --- a/src/demos/zdemo_teched10.prog.abap +++ /dev/null @@ -1,49 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched10. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_reader TYPE REF TO zif_excel_reader, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -DATA: lt_files TYPE filetable, - ls_file TYPE file_table, - lv_rc TYPE i, - lv_value TYPE zexcel_cell_value. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'TechEd01.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - -******************************* -* abap2xlsx read XLSX * -******************************* - CREATE OBJECT lo_excel_reader TYPE zcl_excel_reader_2007. - lo_excel = lo_excel_reader->load_file( lv_full_path ). - - lo_excel->set_active_sheet_index( 1 ). - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_worksheet->get_cell( EXPORTING ip_column = 'C' - ip_row = 10 - IMPORTING ep_value = lv_value ). - - WRITE: 'abap2xlsx total score is ', lv_value. - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/zdemo_teched10.prog.xml b/src/demos/zdemo_teched10.prog.xml deleted file mode 100644 index ff8516c..0000000 --- a/src/demos/zdemo_teched10.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED10 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_teched2.prog.abap b/src/demos/zdemo_teched2.prog.abap deleted file mode 100644 index 0ead99e..0000000 --- a/src/demos/zdemo_teched2.prog.abap +++ /dev/null @@ -1,91 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED2 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched2. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lv_style_title_guid TYPE zexcel_cell_style. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_teched2.prog.xml b/src/demos/zdemo_teched2.prog.xml deleted file mode 100644 index c4b1cd5..0000000 --- a/src/demos/zdemo_teched2.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED2 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_teched3.prog.abap b/src/demos/zdemo_teched3.prog.abap deleted file mode 100644 index 77e0dd1..0000000 --- a/src/demos/zdemo_teched3.prog.abap +++ /dev/null @@ -1,107 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched3. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_teched3.prog.xml b/src/demos/zdemo_teched3.prog.xml deleted file mode 100644 index c739eea..0000000 --- a/src/demos/zdemo_teched3.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED3 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_teched4.prog.abap b/src/demos/zdemo_teched4.prog.abap deleted file mode 100644 index 660c9f4..0000000 --- a/src/demos/zdemo_teched4.prog.abap +++ /dev/null @@ -1,129 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched4. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_teched4.prog.xml b/src/demos/zdemo_teched4.prog.xml deleted file mode 100644 index 2577c4b..0000000 --- a/src/demos/zdemo_teched4.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED4 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_teched5.prog.abap b/src/demos/zdemo_teched5.prog.abap deleted file mode 100644 index 989fc7e..0000000 --- a/src/demos/zdemo_teched5.prog.abap +++ /dev/null @@ -1,150 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched5. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_teched5.prog.xml b/src/demos/zdemo_teched5.prog.xml deleted file mode 100644 index 25c6ced..0000000 --- a/src/demos/zdemo_teched5.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED5 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_teched6.prog.abap b/src/demos/zdemo_teched6.prog.abap deleted file mode 100644 index 7e5f21e..0000000 --- a/src/demos/zdemo_teched6.prog.abap +++ /dev/null @@ -1,157 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched6. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column TYPE REF TO zcl_excel_column, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column = lo_worksheet->get_column( ip_column = 'B' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( ip_column = 'C' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_teched6.prog.xml b/src/demos/zdemo_teched6.prog.xml deleted file mode 100644 index c784577..0000000 --- a/src/demos/zdemo_teched6.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED6 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_teched7.prog.abap b/src/demos/zdemo_teched7.prog.abap deleted file mode 100644 index a6961f8..0000000 --- a/src/demos/zdemo_teched7.prog.abap +++ /dev/null @@ -1,160 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched7. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column TYPE REF TO zcl_excel_column, - lv_style_title_guid TYPE zexcel_cell_style, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'WBLOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column = lo_worksheet->get_column( ip_column = 'B' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( ip_column = 'C' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_teched7.prog.xml b/src/demos/zdemo_teched7.prog.xml deleted file mode 100644 index 3589a07..0000000 --- a/src/demos/zdemo_teched7.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED7 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_teched8.prog.abap b/src/demos/zdemo_teched8.prog.abap deleted file mode 100644 index b772272..0000000 --- a/src/demos/zdemo_teched8.prog.abap +++ /dev/null @@ -1,222 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched8. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column TYPE REF TO zcl_excel_column, - lo_style_conditional TYPE REF TO zcl_excel_style_cond, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. - -******************************* -* Selection screen management * -******************************* - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -START-OF-SELECTION. - - IF p_path IS INITIAL. - p_path = lv_workdir. - ENDIF. - cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path. - -******************************* -* abap2xlsx create XLSX * -******************************* - - " Create excel instance - CREATE OBJECT lo_excel. - - " Styles - lo_style_title = lo_excel->add_new_style( ). - lo_style_title->font->bold = abap_true. - lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. - lv_style_title_guid = lo_style_title->get_guid( ). - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Demo TechEd' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - - " add logo from SMWO - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SIWB_KW_LOGO'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - - " Add new sheet - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Values' ). - - " Set values for range - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - - lo_range = lo_excel->add_new_range( ). - lo_range->name = 'Values'. - lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - - lo_excel->set_active_sheet_index( 1 ). - - " add data validation - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 7. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = 'Values'. - lo_data_validation->cell_row = 8. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - - " add autosize (column width) - lo_column = lo_worksheet->get_column( ip_column = 'B' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - lo_column = lo_worksheet->get_column( ip_column = 'C' ). - lo_column->set_auto_size( ip_auto_size = abap_true ). - - " defne conditional styles - lo_style_green = lo_excel->add_new_style( ). - lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_green_guid = lo_style_green->get_guid( ). - - lo_style_yellow = lo_excel->add_new_style( ). - lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. - lv_style_yellow_guid = lo_style_yellow->get_guid( ). - - lo_style_red = lo_excel->add_new_style( ). - lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_red_guid = lo_style_red->get_guid( ). - - " add conditional formatting - lo_style_conditional = lo_worksheet->add_new_style_cond( ). - lo_style_conditional->rule = zcl_excel_style_cond=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_cond=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_green_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 1. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_style_cond( ). - lo_style_conditional->rule = zcl_excel_style_cond=>c_rule_cellis. - ls_cellis-formula = '5'. - ls_cellis-operator = zcl_excel_style_cond=>c_operator_equal. - ls_cellis-cell_style = lv_style_yellow_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 2. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - lo_style_conditional = lo_worksheet->add_new_style_cond( ). - lo_style_conditional->rule = zcl_excel_style_cond=>c_rule_cellis. - ls_cellis-formula = '0'. - ls_cellis-operator = zcl_excel_style_cond=>c_operator_greaterthan. - ls_cellis-cell_style = lv_style_red_guid. - lo_style_conditional->mode_cellis = ls_cellis. - lo_style_conditional->priority = 3. - lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - - " Create xlsx stream - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - - " Convert to binary - lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). - lv_bytecount = xstrlen( lv_file ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). diff --git a/src/demos/zdemo_teched8.prog.xml b/src/demos/zdemo_teched8.prog.xml deleted file mode 100644 index 86ad703..0000000 --- a/src/demos/zdemo_teched8.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED8 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zdemo_teched9.prog.abap b/src/demos/zdemo_teched9.prog.abap deleted file mode 100644 index 094ba62..0000000 --- a/src/demos/zdemo_teched9.prog.abap +++ /dev/null @@ -1,211 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZDEMO_TECHED3 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_teched9. - -******************************* -* Data Object declaration * -******************************* - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet. - -DATA: lo_style_title TYPE REF TO zcl_excel_style, - lo_style_green TYPE REF TO zcl_excel_style, - lo_style_yellow TYPE REF TO zcl_excel_style, - lo_style_red TYPE REF TO zcl_excel_style, - lo_drawing TYPE REF TO zcl_excel_drawing, - lo_range TYPE REF TO zcl_excel_range, - lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column TYPE REF TO zcl_excel_column, - lo_style_conditional TYPE REF TO zcl_excel_style_cond, - lv_style_title_guid TYPE zexcel_cell_style, - lv_style_green_guid TYPE zexcel_cell_style, - lv_style_yellow_guid TYPE zexcel_cell_style, - lv_style_red_guid TYPE zexcel_cell_style, - ls_cellis TYPE zexcel_conditional_cellis, - ls_key TYPE wwwdatatab. - -DATA: lo_send_request TYPE REF TO cl_bcs, - lo_document TYPE REF TO cl_document_bcs, - lo_sender TYPE REF TO cl_sapuser_bcs, - lo_recipient TYPE REF TO cl_sapuser_bcs. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lv_bytecount_c TYPE sood-objlen, - lt_file_tab TYPE solix_tab. - -******************************* -* abap2xlsx create XLSX * -******************************* - -" Create excel instance -CREATE OBJECT lo_excel. - -" Styles -lo_style_title = lo_excel->add_new_style( ). -lo_style_title->font->bold = abap_true. -lo_style_title->font->color-rgb = zcl_excel_style_color=>c_blue. -lv_style_title_guid = lo_style_title->get_guid( ). - -" Get active sheet -lo_worksheet = lo_excel->get_active_worksheet( ). -lo_worksheet->set_title( ip_title = 'Demo TechEd' ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 5 ip_value = 'TechEd demo' ip_style = lv_style_title_guid ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 7 ip_value = 'Is abap2xlsx simple' ). -lo_worksheet->set_cell( ip_column = 'B' ip_row = 8 ip_value = 'Is abap2xlsx CooL' ). - -lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_value = 'Total score' ). -lo_worksheet->set_cell( ip_column = 'C' ip_row = 10 ip_formula = 'SUM(C7:C8)' ). - -" add logo from SMWO -lo_drawing = lo_excel->add_new_drawing( ). -lo_drawing->set_position( ip_from_row = 2 - ip_from_col = 'B' ). - -ls_key-relid = 'MI'. -ls_key-objid = 'SIWB_KW_LOGO'. -lo_drawing->set_media_www( ip_key = ls_key - ip_width = 140 - ip_height = 64 ). - -" assign drawing to the worksheet -lo_worksheet->add_drawing( lo_drawing ). - -" Add new sheet -lo_worksheet = lo_excel->add_new_worksheet( ). -lo_worksheet->set_title( ip_title = 'Values' ). - -" Set values for range -lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 1 ). -lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 2 ). -lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 3 ). -lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 4 ). -lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 5 ). - -lo_range = lo_excel->add_new_range( ). -lo_range->name = 'Values'. -lo_range->set_value( ip_sheet_name = 'Values' - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 8 ). - -lo_excel->set_active_sheet_index( 1 ). - -" add data validation -lo_worksheet = lo_excel->get_active_worksheet( ). - -lo_data_validation = lo_worksheet->add_new_data_validation( ). -lo_data_validation->type = zcl_excel_data_validation=>c_type_list. -lo_data_validation->formula1 = 'Values'. -lo_data_validation->cell_row = 7. -lo_data_validation->cell_column = 'C'. -lo_worksheet->set_cell( ip_row = 7 ip_column = 'C' ip_value = 'Select a value' ). - - -lo_data_validation = lo_worksheet->add_new_data_validation( ). -lo_data_validation->type = zcl_excel_data_validation=>c_type_list. -lo_data_validation->formula1 = 'Values'. -lo_data_validation->cell_row = 8. -lo_data_validation->cell_column = 'C'. -lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). - -" add autosize (column width) -lo_column = lo_worksheet->get_column( ip_column = 'B' ). -lo_column->set_auto_size( ip_auto_size = abap_true ). -lo_column = lo_worksheet->get_column( ip_column = 'C' ). -lo_column->set_auto_size( ip_auto_size = abap_true ). - -" defne conditional styles -lo_style_green = lo_excel->add_new_style( ). -lo_style_green->fill->filltype = zcl_excel_style_fill=>c_fill_solid. -lo_style_green->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. -lv_style_green_guid = lo_style_green->get_guid( ). - -lo_style_yellow = lo_excel->add_new_style( ). -lo_style_yellow->fill->filltype = zcl_excel_style_fill=>c_fill_solid. -lo_style_yellow->fill->bgcolor-rgb = zcl_excel_style_color=>c_yellow. -lv_style_yellow_guid = lo_style_yellow->get_guid( ). - -lo_style_red = lo_excel->add_new_style( ). -lo_style_red->fill->filltype = zcl_excel_style_fill=>c_fill_solid. -lo_style_red->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. -lv_style_red_guid = lo_style_red->get_guid( ). - -" add conditional formatting -lo_style_conditional = lo_worksheet->add_new_style_cond( ). -lo_style_conditional->rule = zcl_excel_style_cond=>c_rule_cellis. -ls_cellis-formula = '5'. -ls_cellis-operator = zcl_excel_style_cond=>c_operator_greaterthan. -ls_cellis-cell_style = lv_style_green_guid. -lo_style_conditional->mode_cellis = ls_cellis. -lo_style_conditional->priority = 1. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - -lo_style_conditional = lo_worksheet->add_new_style_cond( ). -lo_style_conditional->rule = zcl_excel_style_cond=>c_rule_cellis. -ls_cellis-formula = '5'. -ls_cellis-operator = zcl_excel_style_cond=>c_operator_equal. -ls_cellis-cell_style = lv_style_yellow_guid. -lo_style_conditional->mode_cellis = ls_cellis. -lo_style_conditional->priority = 2. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - -lo_style_conditional = lo_worksheet->add_new_style_cond( ). -lo_style_conditional->rule = zcl_excel_style_cond=>c_rule_cellis. -ls_cellis-formula = '0'. -ls_cellis-operator = zcl_excel_style_cond=>c_operator_greaterthan. -ls_cellis-cell_style = lv_style_red_guid. -lo_style_conditional->mode_cellis = ls_cellis. -lo_style_conditional->priority = 3. -lo_style_conditional->set_range( ip_start_column = 'C' - ip_start_row = 10 - ip_stop_column = 'C' - ip_stop_row = 10 ). - - -" Create xlsx stream -CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. -lv_file = lo_excel_writer->write_file( lo_excel ). - -******************************* -* Output * -******************************* - -" Convert to binary -lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -lv_bytecount = xstrlen( lv_file ). -lv_bytecount_c = lv_bytecount. - -" Send via email -lo_document = cl_document_bcs=>create_document( i_type = 'RAW' - i_subject = 'Demo TechEd' ). - -lo_document->add_attachment( i_attachment_type = 'EXT' - i_attachment_subject = 'abap2xlsx.xlsx' - i_attachment_size = lv_bytecount_c - i_att_content_hex = lt_file_tab ). - -lo_sender = cl_sapuser_bcs=>create( sy-uname ). -lo_recipient = cl_sapuser_bcs=>create( sy-uname ). - -lo_send_request = cl_bcs=>create_persistent( ). -lo_send_request->set_document( lo_document ). -lo_send_request->set_sender( lo_sender ). -lo_send_request->add_recipient( lo_recipient ). -lo_send_request->set_send_immediately( abap_true ). -lo_send_request->send( ). diff --git a/src/demos/zdemo_teched9.prog.xml b/src/demos/zdemo_teched9.prog.xml deleted file mode 100644 index 00fd26d..0000000 --- a/src/demos/zdemo_teched9.prog.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - ZDEMO_TECHED9 - 1 - T - E - X - X - - - - R - abap2xlsx Demo: Hello World - 27 - - - S - P_PATH - . - 9 - D - - - - - diff --git a/src/demos/zexcel_s_org_rel.tabl.xml b/src/demos/zexcel_s_org_rel.tabl.xml deleted file mode 100644 index 00f5d68..0000000 --- a/src/demos/zexcel_s_org_rel.tabl.xml +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - ZEXCEL_S_ORG_REL - E - INTTAB - X - Organization & Contact Person download - 1 - - - - ORG_GUID - BAPIGUID - 0 - E - - - CONTPERS_GUID - BAPIGUID - 0 - E - - - ORG_NUMBER - BU_PARTNER - 0 - D - E - - - CONTPERS_NUMBER - BU_PARTNER - 0 - D - E - - - .INCLUDE - 0 - BAPIBUS1006_CENTRAL_ORGAN - S - SAP BP: BAPI Structure for Organization Data - S - - - .INCLUDE - 0 - LANGU - BAPIBUS1006_ADDRESS - S - SAP BP: BAPI Structure for Address Data - S - - - .INCLUDE - 0 - BAPIBUS1006_CENTRAL_PERSON - S - SAP BP: BAPI Structure for Personal Data - S - - - .INCLUDE - 0 - BAPIBUS1006002_CENTRAL - S - SAP BP, CP Rel.: BAPI Structure for Central Data - S - - - - - AUTHORITY - * - REF - CN - X - Y - 1 - - - CORRESPONDLANGUAGE - * - REF - CN - X - Y - C - - - COUNTRY - * - REF - CN - X - Y - 1 - - - DEPARTMENT - * - REF - CN - X - Y - 1 - - - FUNCTION - * - REF - CN - X - Y - 1 - - - INDUSTRYSECTOR - * - REF - CN - X - Y - 1 - - - LEGALFORM - * - KEY - CN - X - Y - 1 - - - MARITALSTATUS - * - CN - X - Y - 1 - - - NAMCOUNTRY - * - REF - CN - X - Y - C - - - NAMEFORMAT - * - REF - CN - X - Y - C - - - POBOX_CTRY - * - REF - CN - X - Y - C - - - PO_BOX_REG - * - CN - X - Y - C - - - PREFIX1 - * - X - Y - - - PREFIX2 - * - X - Y - - - REGIOGROUP - * - REF - CN - X - Y - C - - - REGION - * - REF - CN - X - Y - C - - - STR_ABBR - * - REF - CN - X - Y - C - - - TIME_ZONE - * - REF - CN - X - Y - C - - - TITLE_ACA1 - * - X - Y - - - TITLE_ACA2 - * - X - Y - - - TITLE_SPPL - * - X - Y - - - VIP - * - REF - CN - X - h - Y - 1 - - - - - diff --git a/src/demos/ztest_excel_image_header.prog.abap b/src/demos/ztest_excel_image_header.prog.abap deleted file mode 100644 index 4214c15..0000000 --- a/src/demos/ztest_excel_image_header.prog.abap +++ /dev/null @@ -1,106 +0,0 @@ -*&---------------------------------------------------------------------* -*& Report ZTEST_EXCEL_IMAGE_HEADER -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT ztest_excel_image_header. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_drawing TYPE REF TO zcl_excel_drawing, - ls_key TYPE wwwdatatab, - ls_header TYPE zexcel_s_worksheet_head_foot, - ls_footer TYPE zexcel_s_worksheet_head_foot, - lv_content TYPE xstring. - - -DATA: ls_io TYPE skwf_io. - -CONSTANTS: gc_save_file_name TYPE string VALUE 'Image_Header_Footer.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. - -START-OF-SELECTION. - - " Creates active sheet - CREATE OBJECT lo_excel. - -********************************************************************** -*** Header Center - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ip_type = zcl_excel_drawing=>type_image_header_footer ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). -********************************************************************** - ls_header-center_image = lo_drawing. - - -********************************************************************** -*** Header Left - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ip_type = zcl_excel_drawing=>type_image_header_footer ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - - ls_header-left_image = ls_footer-left_image = lo_drawing. - ls_header-left_value = 'Hallo'. - lo_worksheet = lo_excel->get_active_worksheet( ). - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header - ip_odd_footer = ls_footer ). - -********************************************************************** -*** Normal Image - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ). - lo_drawing->set_position( ip_from_row = 3 - ip_from_col = 'B' ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - " assign drawing to the worksheet - lo_worksheet->add_drawing( lo_drawing ). - -********************************************************************** -********************************************************************** -* New sheet - lo_worksheet = lo_excel->add_new_worksheet( 'Sheet2' ). - - " Add some content otherwise the error "nothing to be printed" is shown - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Hello world' ). - -********************************************************************** -*** Header Left - " create global drawing, set position and media from web repository - lo_drawing = lo_excel->add_new_drawing( ip_type = zcl_excel_drawing=>type_image_header_footer ). - - ls_key-relid = 'MI'. - ls_key-objid = 'SAPLOGO.GIF'. - lo_drawing->set_media_www( ip_key = ls_key - ip_width = 166 - ip_height = 75 ). - - - CLEAR ls_header. - ls_header-left_image = ls_footer-left_image = lo_drawing. - - lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header ). - - -*** Create output - lcl_output=>output( lo_excel ). diff --git a/src/demos/ztest_excel_image_header.prog.xml b/src/demos/ztest_excel_image_header.prog.xml deleted file mode 100644 index c57e5e5..0000000 --- a/src/demos/ztest_excel_image_header.prog.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - ZTEST_EXCEL_IMAGE_HEADER - 1 - D - X - X - - - - R - 34 - - - - - D - - - R - Image Excel header - 18 - - - - - - - diff --git a/src/zexcel_export_dir.dtel.xml b/src/zexcel_export_dir.dtel.xml deleted file mode 100644 index c7e59ed..0000000 --- a/src/zexcel_export_dir.dtel.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - ZEXCEL_EXPORT_DIR - E - TEXT255 - 20 - 10 - 15 - 20 - Export Directory - Export Directory - Exprt D - Exprt D - Export Directory - E - D - - - - From ac8f4a701e40750e14dbe7c14a3624fc1b68e219 Mon Sep 17 00:00:00 2001 From: Abo Date: Sat, 12 Mar 2022 15:53:19 +0100 Subject: [PATCH 07/33] Update abapGit-installation.md (#1001) * Update abapGit-installation.md naming suggestions for demos package and explanation * Update abapGit-installation.md fixed typo * Update abapGit-installation.md * Update abapGit-installation.md recommend that demos be created as local package Co-authored-by: Lars Hvam --- docs/abapGit-installation.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/abapGit-installation.md b/docs/abapGit-installation.md index 1573184..15b7ce7 100644 --- a/docs/abapGit-installation.md +++ b/docs/abapGit-installation.md @@ -4,10 +4,12 @@ ## Procedure -Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xlsx* if you just want to test. If you want to transport abap2xlsx to production then use a non local package. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo* +Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xlsx* if you just want to test. If you want to transport abap2xlsx to production then use a non local package, for example ZABAP2XLSX. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo* ![abapGit New Online Repository](new-online-abap2xlsx.png) To install abap2xlsx click *pull*. -After installing, if you want to install the **demo programs**, repeat the actions above, starting from *New Online* to *pull*, and fill *Git repository URL* with *https://github.com/abap2xlsx/demos*. +After installing, if you want to install the **demo programs**, repeat the actions above, starting from *New Online* to *pull*, and fill *Git repository URL* with *https://github.com/abap2xlsx/demos*. We recommend that you pick a local package name for the demos, for example $abap2xlsxdemos, since you most likely won't need them in a production system. + +Be careful with the package name for demos: it should NOT be the basename of your abap2xlsx installation followed by "_demos"! If you have ZABAP2XLSX as base package, you may use ZABAP2XLSXDEMOS but not ZABAP2XLSX_DEMOS, for example. Quick background for the curious folks: before demos were spun off as a separate repository, they were placed in the "demos" subpackage of abap2xlsx and, yes, abapGit encodes the package / subpackage relationship with an underscore. From efbac83915753c108b6328e6e1e7bc82abcbda5e Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sat, 26 Mar 2022 08:59:21 +0100 Subject: [PATCH 08/33] Note about the demos repository (#1005) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 67d7994..66616e0 100644 --- a/README.md +++ b/README.md @@ -2,5 +2,6 @@ For general information please refer to the blog series [abap2xlsx - Generate your professional Excel spreadsheet from ABAP](http://scn.sap.com/community/abap/blog/2010/07/12/abap2xlsx--generate-your-professional-excel-spreadsheet-from-abap) and the [documentation](https://abap2xlsx.github.io/abap2xlsx/). Please refer to the official wiki for the [abapGit installation guide](https://abap2xlsx.github.io/abap2xlsx/abapGit-installation). +Note that the **Demo programs** are provided in a [separate repository](https://github.com/abap2xlsx/demos), and can be installed after abap2xlsx. For questions, bug reports and more information on contributing to the project, please refer to the [contributing guidelines](./CONTRIBUTING.md). From f9b3a5b5555ad662116179c8fe379c29e29eff41 Mon Sep 17 00:00:00 2001 From: Abo Date: Sat, 26 Mar 2022 09:41:59 +0100 Subject: [PATCH 09/33] remove leftover int8 declaration (#1008) --- src/zcl_excel_worksheet.clas.testclasses.abap | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/zcl_excel_worksheet.clas.testclasses.abap b/src/zcl_excel_worksheet.clas.testclasses.abap index 980caba..a4c17ec 100644 --- a/src/zcl_excel_worksheet.clas.testclasses.abap +++ b/src/zcl_excel_worksheet.clas.testclasses.abap @@ -1578,8 +1578,7 @@ CLASS ltc_set_cell_value_types IMPLEMENTATION. ENDMETHOD. METHOD int8. - DATA: ref_int8 TYPE REF TO data, - int8 TYPE int8 VALUE 33400000000. + DATA: ref_int8 TYPE REF TO data. FIELD-SYMBOLS: TYPE simple, TYPE abap_typekind. From 46e234cd94f15ed4a0a8649f716becfe2cb500d6 Mon Sep 17 00:00:00 2001 From: Abo Date: Wed, 20 Apr 2022 20:32:34 +0200 Subject: [PATCH 10/33] finish moving demo-related files (delete from old) (#1009) --- src/demos/zdemo_excel1.w3mi.data.xlsx | Bin 6388 -> 0 bytes src/demos/zdemo_excel1.w3mi.xml | 28 ----------------- src/demos/zdemo_excel10.w3mi.data.xlsx | Bin 6942 -> 0 bytes src/demos/zdemo_excel10.w3mi.xml | 29 ------------------ src/demos/zdemo_excel12.w3mi.data.xlsx | Bin 6214 -> 0 bytes src/demos/zdemo_excel12.w3mi.xml | 28 ----------------- src/demos/zdemo_excel13.w3mi.data.xlsx | Bin 6225 -> 0 bytes src/demos/zdemo_excel13.w3mi.xml | 28 ----------------- src/demos/zdemo_excel14.w3mi.data.xlsx | Bin 6156 -> 0 bytes src/demos/zdemo_excel14.w3mi.xml | 28 ----------------- src/demos/zdemo_excel15_01.w3mi.data.xlsx | Bin 6325 -> 0 bytes src/demos/zdemo_excel15_01.w3mi.xml | 29 ------------------ src/demos/zdemo_excel15_02.w3mi.data.xlsx | Bin 6541 -> 0 bytes src/demos/zdemo_excel15_02.w3mi.xml | 29 ------------------ src/demos/zdemo_excel15_03.w3mi.data.xlsx | Bin 8523 -> 0 bytes src/demos/zdemo_excel15_03.w3mi.xml | 29 ------------------ src/demos/zdemo_excel15_04.w3mi.data.xlsx | Bin 8987 -> 0 bytes src/demos/zdemo_excel15_04.w3mi.xml | 29 ------------------ src/demos/zdemo_excel15_05.w3mi.data.xlsx | Bin 5803 -> 0 bytes src/demos/zdemo_excel15_05.w3mi.xml | 29 ------------------ src/demos/zdemo_excel15_07.w3mi.data.xlsx | Bin 6732 -> 0 bytes src/demos/zdemo_excel15_07.w3mi.xml | 29 ------------------ src/demos/zdemo_excel15_08.w3mi.data.xlsx | Bin 5837 -> 0 bytes src/demos/zdemo_excel15_08.w3mi.xml | 29 ------------------ src/demos/zdemo_excel15_13.w3mi.data.xlsx | Bin 6158 -> 0 bytes src/demos/zdemo_excel15_13.w3mi.xml | 29 ------------------ src/demos/zdemo_excel15_24.w3mi.data.xlsx | Bin 8984 -> 0 bytes src/demos/zdemo_excel15_24.w3mi.xml | 29 ------------------ src/demos/zdemo_excel15_31.w3mi.data.xlsx | Bin 10065 -> 0 bytes src/demos/zdemo_excel15_31.w3mi.xml | 29 ------------------ src/demos/zdemo_excel16.w3mi.data.xlsx | Bin 10926 -> 0 bytes src/demos/zdemo_excel16.w3mi.xml | 28 ----------------- src/demos/zdemo_excel17.w3mi.data.xlsx | Bin 5971 -> 0 bytes src/demos/zdemo_excel17.w3mi.xml | 28 ----------------- src/demos/zdemo_excel18.w3mi.data.xlsx | Bin 5736 -> 0 bytes src/demos/zdemo_excel18.w3mi.xml | 28 ----------------- src/demos/zdemo_excel19.w3mi.data.xlsx | Bin 7579 -> 0 bytes src/demos/zdemo_excel19.w3mi.xml | 28 ----------------- src/demos/zdemo_excel2.w3mi.data.xlsx | Bin 6843 -> 0 bytes src/demos/zdemo_excel2.w3mi.xml | 28 ----------------- src/demos/zdemo_excel21.w3mi.data.xlsx | Bin 10521 -> 0 bytes src/demos/zdemo_excel21.w3mi.xml | 28 ----------------- src/demos/zdemo_excel22.w3mi.data.xlsx | Bin 7295 -> 0 bytes src/demos/zdemo_excel22.w3mi.xml | 29 ------------------ src/demos/zdemo_excel23.w3mi.data.xlsx | Bin 9289 -> 0 bytes src/demos/zdemo_excel23.w3mi.xml | 28 ----------------- src/demos/zdemo_excel24.w3mi.data.xlsx | Bin 9027 -> 0 bytes src/demos/zdemo_excel24.w3mi.xml | 28 ----------------- src/demos/zdemo_excel27.w3mi.data.xlsx | Bin 6755 -> 0 bytes src/demos/zdemo_excel27.w3mi.xml | 28 ----------------- src/demos/zdemo_excel29_input.w3mi.data.xlsm | Bin 19183 -> 0 bytes src/demos/zdemo_excel29_input.w3mi.xml | 29 ------------------ src/demos/zdemo_excel3.w3mi.data.xlsx | Bin 9159 -> 0 bytes src/demos/zdemo_excel3.w3mi.xml | 29 ------------------ src/demos/zdemo_excel30.w3mi.data.xlsx | Bin 6197 -> 0 bytes src/demos/zdemo_excel30.w3mi.xml | 29 ------------------ src/demos/zdemo_excel31.w3mi.data.xlsx | Bin 10113 -> 0 bytes src/demos/zdemo_excel31.w3mi.xml | 29 ------------------ src/demos/zdemo_excel33.w3mi.data.xlsx | Bin 6248 -> 0 bytes src/demos/zdemo_excel33.w3mi.xml | 29 ------------------ src/demos/zdemo_excel34.w3mi.data.xlsx | Bin 6943 -> 0 bytes src/demos/zdemo_excel34.w3mi.xml | 29 ------------------ src/demos/zdemo_excel35.w3mi.data.xlsx | Bin 6354 -> 0 bytes src/demos/zdemo_excel35.w3mi.xml | 28 ----------------- src/demos/zdemo_excel36.w3mi.data.xlsx | Bin 8367 -> 0 bytes src/demos/zdemo_excel36.w3mi.xml | 28 ----------------- src/demos/zdemo_excel38.w3mi.data.xlsx | Bin 7963 -> 0 bytes src/demos/zdemo_excel38.w3mi.xml | 28 ----------------- src/demos/zdemo_excel39.w3mi.data.xlsx | Bin 18022 -> 0 bytes src/demos/zdemo_excel39.w3mi.xml | 28 ----------------- src/demos/zdemo_excel4.w3mi.data.xlsx | Bin 9152 -> 0 bytes src/demos/zdemo_excel4.w3mi.xml | 28 ----------------- src/demos/zdemo_excel40.w3mi.data.xlsx | Bin 11164 -> 0 bytes src/demos/zdemo_excel40.w3mi.xml | 28 ----------------- src/demos/zdemo_excel49.w3mi.data.xlsx | Bin 6311 -> 0 bytes src/demos/zdemo_excel49.w3mi.xml | 29 ------------------ src/demos/zdemo_excel5.w3mi.data.xlsx | Bin 5867 -> 0 bytes src/demos/zdemo_excel5.w3mi.xml | 28 ----------------- src/demos/zdemo_excel6.w3mi.data.xlsx | Bin 5855 -> 0 bytes src/demos/zdemo_excel6.w3mi.xml | 28 ----------------- src/demos/zdemo_excel7.w3mi.data.xlsx | Bin 6797 -> 0 bytes src/demos/zdemo_excel7.w3mi.xml | 28 ----------------- src/demos/zdemo_excel8.w3mi.data.xlsx | Bin 5932 -> 0 bytes src/demos/zdemo_excel8.w3mi.xml | 28 ----------------- src/demos/zdemo_excel9.w3mi.data.xlsx | Bin 7915 -> 0 bytes src/demos/zdemo_excel9.w3mi.xml | 28 ----------------- src/demos/zdemo_excel_comments.w3mi.data.xlsx | Bin 8911 -> 0 bytes src/demos/zdemo_excel_comments.w3mi.xml | 28 ----------------- src/demos/zdemo_excel_template.w3mi.data.xlsx | Bin 11114 -> 0 bytes src/demos/zdemo_excel_template.w3mi.xml | 29 ------------------ .../ztest_excel_image_header.w3mi.data.xlsx | Bin 15698 -> 0 bytes src/demos/ztest_excel_image_header.w3mi.xml | 28 ----------------- 92 files changed, 1308 deletions(-) delete mode 100644 src/demos/zdemo_excel1.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel1.w3mi.xml delete mode 100644 src/demos/zdemo_excel10.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel10.w3mi.xml delete mode 100644 src/demos/zdemo_excel12.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel12.w3mi.xml delete mode 100644 src/demos/zdemo_excel13.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel13.w3mi.xml delete mode 100644 src/demos/zdemo_excel14.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel14.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_01.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_01.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_02.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_02.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_03.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_03.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_04.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_04.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_05.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_05.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_07.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_07.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_08.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_08.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_13.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_13.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_24.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_24.w3mi.xml delete mode 100644 src/demos/zdemo_excel15_31.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel15_31.w3mi.xml delete mode 100644 src/demos/zdemo_excel16.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel16.w3mi.xml delete mode 100644 src/demos/zdemo_excel17.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel17.w3mi.xml delete mode 100644 src/demos/zdemo_excel18.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel18.w3mi.xml delete mode 100644 src/demos/zdemo_excel19.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel19.w3mi.xml delete mode 100644 src/demos/zdemo_excel2.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel2.w3mi.xml delete mode 100644 src/demos/zdemo_excel21.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel21.w3mi.xml delete mode 100644 src/demos/zdemo_excel22.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel22.w3mi.xml delete mode 100644 src/demos/zdemo_excel23.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel23.w3mi.xml delete mode 100644 src/demos/zdemo_excel24.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel24.w3mi.xml delete mode 100644 src/demos/zdemo_excel27.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel27.w3mi.xml delete mode 100644 src/demos/zdemo_excel29_input.w3mi.data.xlsm delete mode 100644 src/demos/zdemo_excel29_input.w3mi.xml delete mode 100644 src/demos/zdemo_excel3.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel3.w3mi.xml delete mode 100644 src/demos/zdemo_excel30.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel30.w3mi.xml delete mode 100644 src/demos/zdemo_excel31.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel31.w3mi.xml delete mode 100644 src/demos/zdemo_excel33.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel33.w3mi.xml delete mode 100644 src/demos/zdemo_excel34.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel34.w3mi.xml delete mode 100644 src/demos/zdemo_excel35.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel35.w3mi.xml delete mode 100644 src/demos/zdemo_excel36.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel36.w3mi.xml delete mode 100644 src/demos/zdemo_excel38.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel38.w3mi.xml delete mode 100644 src/demos/zdemo_excel39.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel39.w3mi.xml delete mode 100644 src/demos/zdemo_excel4.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel4.w3mi.xml delete mode 100644 src/demos/zdemo_excel40.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel40.w3mi.xml delete mode 100644 src/demos/zdemo_excel49.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel49.w3mi.xml delete mode 100644 src/demos/zdemo_excel5.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel5.w3mi.xml delete mode 100644 src/demos/zdemo_excel6.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel6.w3mi.xml delete mode 100644 src/demos/zdemo_excel7.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel7.w3mi.xml delete mode 100644 src/demos/zdemo_excel8.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel8.w3mi.xml delete mode 100644 src/demos/zdemo_excel9.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel9.w3mi.xml delete mode 100644 src/demos/zdemo_excel_comments.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel_comments.w3mi.xml delete mode 100644 src/demos/zdemo_excel_template.w3mi.data.xlsx delete mode 100644 src/demos/zdemo_excel_template.w3mi.xml delete mode 100644 src/demos/ztest_excel_image_header.w3mi.data.xlsx delete mode 100644 src/demos/ztest_excel_image_header.w3mi.xml diff --git a/src/demos/zdemo_excel1.w3mi.data.xlsx b/src/demos/zdemo_excel1.w3mi.data.xlsx deleted file mode 100644 index b145e755460a9a5992f9a401c190fc5711a78a85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6388 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
        ecs}9XUeL01zr+(IRL;FaNQ|8QwVUiwdg zyH_fHTgSrF(SN&Oao6zf1%%&*>F~vT_d3E|>$`RE-_~ky4E&e%|E`MPHNRWi{cYX` zuVDUrrT4DR-J0ibokRG&pMR);-W9l;xBo3*jrmL9?^*o2#&`40zm1RK>F3*I;(ukI z@0#AtJpML)2EPsRPkG3@3U{-0zZG7>FDAehZhQV8xx2e6cZ25NDj@v3D*u=WxGQ+~ zWd2)l{yzkN_3l?Replt+yLI^Z|In@9k^No4yP@{)ZheNA%m2Y!zqZ%AD*xWCnx}VF z{^qUUTlHPRyL;#FZkdzb75wF`U+B84^6%X`BEPHhw{HE$pu99Pe7W4-Xu$!*!Pjp# I#qEFp3k$z;X#fBK diff --git a/src/demos/zdemo_excel15_31.w3mi.xml b/src/demos/zdemo_excel15_31.w3mi.xml deleted file mode 100644 index c3135a9..0000000 --- a/src/demos/zdemo_excel15_31.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL15_31 - 15_31_AutosizeWithDifferentFontSizesFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_31 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_31 - filename - 15_31_AutosizeWithDifferentFontSizesFromReader.xlsx - - - MI - ZDEMO_EXCEL15_31 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel16.w3mi.data.xlsx b/src/demos/zdemo_excel16.w3mi.data.xlsx deleted file mode 100644 index 8abb024289c54a78bf61f3ae9b0cb71dbce33604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10926 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 diff --git a/src/demos/zdemo_excel16.w3mi.xml b/src/demos/zdemo_excel16.w3mi.xml deleted file mode 100644 index 2d90ce6..0000000 --- a/src/demos/zdemo_excel16.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL16 - 16_Drawings.xlsx (ZDEMO_EXCEL16) - - - MI - ZDEMO_EXCEL16 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL16 - filename - - - MI - ZDEMO_EXCEL16 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel17.w3mi.data.xlsx b/src/demos/zdemo_excel17.w3mi.data.xlsx deleted file mode 100644 index 78ac3e2e3979542de3aa18bcc2264806052f6857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5971 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 WMGTbEKTTR3z!)lV?0>daz<&S$<8%iA diff --git a/src/demos/zdemo_excel17.w3mi.xml b/src/demos/zdemo_excel17.w3mi.xml deleted file mode 100644 index b36fd03..0000000 --- a/src/demos/zdemo_excel17.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL17 - 17_SheetProtection.xlsx (ZDEMO_EXCEL17) - - - MI - ZDEMO_EXCEL17 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL17 - filename - - - MI - ZDEMO_EXCEL17 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel18.w3mi.data.xlsx b/src/demos/zdemo_excel18.w3mi.data.xlsx deleted file mode 100644 index 0cc5574a27d8ec48418570aae30a357db96e5a19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5736 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 diff --git a/src/demos/zdemo_excel18.w3mi.xml b/src/demos/zdemo_excel18.w3mi.xml deleted file mode 100644 index c53eb71..0000000 --- a/src/demos/zdemo_excel18.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL18 - 18_BookProtection.xlsx (ZDEMO_EXCEL18) - - - MI - ZDEMO_EXCEL18 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL18 - filename - - - MI - ZDEMO_EXCEL18 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel19.w3mi.data.xlsx b/src/demos/zdemo_excel19.w3mi.data.xlsx deleted file mode 100644 index 3321fdc569cdd52a41f9a95ca3e6c280e26c3365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7579 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 rz^fdAjPmc7HG=3x{@mQ(mUW$P)D+PXy! - - - - ZDEMO_EXCEL19 - 19_SetActiveSheet.xlsx (ZDEMO_EXCEL19) - - - MI - ZDEMO_EXCEL19 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL19 - filename - - - MI - ZDEMO_EXCEL19 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel2.w3mi.data.xlsx b/src/demos/zdemo_excel2.w3mi.data.xlsx deleted file mode 100644 index 6195be7330408793e6d5c848f2703fc748f0c01a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6843 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 - - - - ZDEMO_EXCEL2 - 02_Styles.xlsx (ZDEMO_EXCEL2) - - - MI - ZDEMO_EXCEL2 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL2 - filename - - - MI - ZDEMO_EXCEL2 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel21.w3mi.data.xlsx b/src/demos/zdemo_excel21.w3mi.data.xlsx deleted file mode 100644 index d1efe5ec7ad44db96def6e25987c18cfe1e9968d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10521 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 diff --git a/src/demos/zdemo_excel21.w3mi.xml b/src/demos/zdemo_excel21.w3mi.xml deleted file mode 100644 index 563ed7e..0000000 --- a/src/demos/zdemo_excel21.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL21 - 21_BackgroundColorPicker.xlsx (ZDEMO_EXCEL21) - - - MI - ZDEMO_EXCEL21 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL21 - filename - - - MI - ZDEMO_EXCEL21 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel22.w3mi.data.xlsx b/src/demos/zdemo_excel22.w3mi.data.xlsx deleted file mode 100644 index 756322271b8a0cbdca8c70789c2f7e1387eab819..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7295 zcmZ`;1zc3yw;rUsqz6gqPNh4g2BfDCrdG7D3_-*Z2Q> zFYmsIvww4D);DLbwa!}K{wVRE8#a?AUVYh$ z^!-~a(C>lzKVp)OnUb*zkA>(1000v{nz&mzdT?^w9m^6_R1vwc;IXh8d7)2FTm*Ce zvW1gl+)DqRYKT4thzNsLE-M%Ye3IY-ef(l-_v_*Ux)ED@KIDu8@uBHM?CCBqo+XD6 z<@LO!(E&5gevdrH4>2fo(zGHRaWhWL2-+OvY+Ey_;|d)6x5e# z3o8}$yp%nIQQt)E^t=X7VJwgK3GtV~lMi)BRhJ`#>_p;xCrA}+YlJ61haN;y&Ahqi z3W;yZ?_J^Pc>;F@9^4g{E*9$UF0LM&X0EPxxtW=u;@ti_H%)-*lgK=BMY6ddzc{I_ z&+eJ%mG-;6yfULDo?~=p82pmKqh6Dx){BjeugHGwtZ7EoI;2nFjlK{xzc%hqKvJwX z)H^Wk^zwIP>k|2i@qnzAzIoZTQz_TJ_vtpl6o#+c?rQ#_Ss7D}S=Va~QfxtEm#O7& z-0{MDDUn7*C;6#bN&Na6SByR`;KT2jN(Bbk+K2n< zo!MBY45YJtT8GZ8JY{T#J*Ik0k<>pG@p#qi-Ad|t5Iz*y=>{=S5%3+j*&!x3vIL6` zhflJQZiG`hh828t3VFB=#dXnrfQPXdq4M?2%fW;BS2PXrrrcs+=Oxh1toMN!u?Nw2 z+|@TJb!MiN-4`7L*YpFiVwSE@={^7_D=b{Mx&6mbwihm|*INegXFg!ZG@aW+GJvtUH z?pD9Uv!vS2^)SrDYU_H+8IOO6^lhLH-dh6xMgBbm@@a9qk|3LtcKKtXd6X#p`s2^n zuQ!DY8LuxchkFd3%VjM$^1Tcm56)&f4zO!e$}=FhStnO&P-&@{MRGfYEquI$1ZCc z>Qx?Dx9?X;{^@A}gk0!dNhpDPnjAj9aOC`56}(;C9n4)^9PYgR-wN?pwKg9@Sk0#< zE^-!J0Am`qDlxcCbkd)x$OEJz#!sF;!|_AZd{xS^M&8D zS(La!yL!5DnRA2C$!gNi5OIu8(Zj@`W0}1;feOvF$vggeo3vI@FJTPiO-1>`)+SW1 z!n~d*dnbQ;(=&i5q`???^U9+7-N4|U0oz(RS^Yk8-}z%-o|;CuDt7&V|ChDYG5_Hz67cbP(dq zdV^^cBTDM{zNO3;J!=b!_23KRXBl*z$ktT{0vr=Ys2W+wsiCh0lVIl@Ut;1U5UHbb zn}y}un;KuE*H{LduQS=P)MOvXffx*`(+(%O!ZFz-wT4v4VkL_!L`so?F-cRY6KQ8J z3yBd6%B5+vl@>rN;YB7|5ss~lSFIxlAa%h4&E32VZ0qRV*wjdbm0|q2<`OXK?oYf0 zNV&9x0{@uz&P7j|lSy%sluUX2_}ToqO2e#aVR3)d;1ju)p*|S5p+mc4ng6;Bqh-xX9A!!Wcn?GT5pJ^BME2@9 z^k@DYunK$8;5ZXwsq6r2&M0UkC)`x1WYn_)MxLQ>K&vTNu7C7?`jK}!<}1a?s_!i8 z9}P(yxaX~2mHNN(kTl=!^$9FkW_1Q2sXg)f;Y#|kRoR~>Cv<1%vThO70?qPzljMt3 zgJ(P5701aU{q-eq#Un$Z+6>509tvC~Mc)(>@^Y>uEs`}S8BgMZoFo1l@liL!(s&o0zdIiZW@RAzC14~QbG*k-d^aj@1SOnkFpCJCt-OB@=8 zFN2SId;4k3JGY4x9(M|y;LvfYEjrogJnd8^mp{OxC6X7wQ;T}C&?9COsPe&ssAs!w z*hz}2c*2&X-x}nMUmqR+svgi1#9gzrj$@1>;q*AYC-uh3-b8VG(Jyhr`$}f43jMrov z*$}QAr6`BNQj-yk2~xuWmTdo&kUBZ&)Gso6p6m8V7Ivv-W*+< z{1nc;=VUKK5ejn3u(9^^bNuXW^KPu!_MA+&y1HAcsz|vko*Gnc=TQ54uUBL4Oq!tv z2C~%*NrPV+4^NWK@>vc>+c_^E8vioPr0E#tO$f33PNw)c5RmycGgfoL!0!oG3ZEcP zweL|zW^SX1_Ks0O!mK@Y&TwV_0lV5ldszN~>ZC>7mncF{&UjBt38`7{*L^y}*<~-C zLE_WTM-2s5q;MouDaS|DVv?P_1bZ%4QRSFs0->!v1iKL zdU!ETJUkoaGh!|^_N~nEYDWvY?UT$h4U}oCS!d|>{Rw;XmO8?e$?7GY)0>dilp-x&Q0q^sMy+s2uegQv%7!x(|Tb^z0a}CyC z$puc;Q()HWZez*egS;^7gUk1QpT5o&HUB6*^Mv8-M)T{W2~Sa&*5y^d6BgKm4S%(W zvJMn|=Q!)vv@+bE;Cmd(%3&fu!FJnY4QXJ3V2?cn(aIjR|9rpB_2e4Y(pW8GZ1q@c z;K#l4{Y6;xCpVlzT*2SCzZ=`%TUxaGz#YH4A{wCbmsYZkR8TLWO_IhZAONxoF5+Rf zSf-;imxa9n`Q@a`;BQR9_M@7hyuVJ)L`^cPX|tAtsu&8_G^Ehc<0;yb_~T%hNMD$~ zMW6NHI>aKiq{qR8kd0?7#q84YG#l5$^ErgIFcRXWm6p_l-ha>|y*`#jtK9N>%WQ)Hn^ z#Q-Ta>bmLm79?lkHu4|3yxy~GFxpE_1Ycpiju|_BX1=ClKK~Ib?*WUQMAZu7@nfBh zZb%K-!_F(~heH@s7w12l3b>0ki#Bd78p=dt(!yjrqN~ zR(0`h8$+lvQ?h>HQ{9S2rcD3XP_g$AfU@-MV!b?is(b;EW%tqfASk=7eq&Vr{I4 z-}V!4lC=VDlY9>eq7;T?p2~H>M!Km<>;NS4nI&+L9LO}t)>yODePtK$MwbVEnE>eD$A3(Dm-O+<>1 z6Q!*(8>~IoY)WQ3UGz(W37P1s6M}yM+B}nTufa(Wb{N_|T*`T|V&S*wu9K7I}3uwZu5Cg7u z;aNoftl+-cTa%e;(k51-_*L|4cCSj#FiD&`O&|&s*ORbSf{Ao9sK<^Bj7$Nh6ltW1 z3Z)&G@hgl5TP*Fcvo^7a5k$SQAK%ZZU6T#YPpEuliF&SN@|t3Xw)YM#g#XlHX6VnDOn-sbC`9g+Oc4EDWM=_QdF2pSU+>UqM4mdkR}Kw z&UTCW&!n?VRkR#{C)-Q-Eqy06z!{l`t(m)(r6$OMB!z2AMX~`U@{uPWdz9R_P63*6ooV#C zfX}&&`na$2o23u}6PVdR#iwn=#F4S$fYUc?XX1X>qOVW*M;b}`W&0!E#lFlr@R3R| zSK-kfedm|o?#G+;h}4f*Sm{IIF(&tkHz*lGjn^0RP3BZr5tAQkCc+59z7W8BTxe;; z-VX(Ytx)$W>i?88Yp)nHO;<@9eXRWBDSJNt3LhP4EW$`X0;2!kkS>MrrjgT6Ro9s1 zZ6TlXMkT>nlgPVyC(Q0X%>u7$qAvQUb~=dES%v5}fliiceUsU)BWtEWrVkfY5u%3| ziF;Pb#HRti=2@)SYk}6g*)faa$d6!qs@oD=Sty&HJ6eQa`9;nT#I1>OH4tJ=l_4 z9DkOx(Ag|c@UEGO?OIign_1785>jEJ{n4CaxOpsBDAs=NGJ7yhUt0Xv$mMrqHEpPX zc-HWt(b-gyvOWy^s||>zrSPn2dGS-lBKEcRv+cRYLQXzS-|=+qS@Z#!vxNaz?yQ$; zv$ixP?_<_=RJaCBz4uc~+8k12)cgW^A7Nc+fKS93hYyu^u#gPmTddXd$;bi_Up6Qyq-B#lU&$I5CYM^dt!j^P+(5s=G~V{T(IbBC z1v$oEIX$N;Y%5?U;) zx#V!Xycd@=Ok>iiI?~M|;B5v;en|EeZJW#@m2y9{>V-4PNXZP03PV>bGoReByff=*-_|=Q~jYih~rYngMYJ-=~;O32tBWu?Wfy%@EkA)vjf{J;y3$hBTly9pQ z_0GH}qf4OkHb_GU+En6xx{a@|R#3L)#6k+&9uyp!0$LhHTmij6pCcJR^%~KLRRf(( z9W_*MwKf-&v|Wf}o%kXAvx0Md;&m*BS8if>`=a|l75umA@~4jfrMX0p2;;PKVWBLS z$cRad^KfMs80mhYaJ7vkas7xt1=7F4fT$rxjbWOru z^PvGz3$|{0?jB!f4XY$DMdEg*`G8T{*M)<({&X!^>BZ+n$tc9f*q~|uD{%TZC@o - - - - ZDEMO_EXCEL22 - 22_itab_fieldcatalog.xlsx (ZDEMO_EXCEL22) - - - MI - ZDEMO_EXCEL22 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL22 - filename - 22_itab_fieldcatalog.xlsx - - - MI - ZDEMO_EXCEL22 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel23.w3mi.data.xlsx b/src/demos/zdemo_excel23.w3mi.data.xlsx deleted file mode 100644 index b40052e55ea5db962c62067f8ba96dd98d1df690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9289 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 diff --git a/src/demos/zdemo_excel23.w3mi.xml b/src/demos/zdemo_excel23.w3mi.xml deleted file mode 100644 index ee1376d..0000000 --- a/src/demos/zdemo_excel23.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL23 - 23_Sheets_with_and_without_grid_lines.xlsx (ZDEMO_EXCEL23) - - - MI - ZDEMO_EXCEL23 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL23 - filename - - - MI - ZDEMO_EXCEL23 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel24.w3mi.data.xlsx b/src/demos/zdemo_excel24.w3mi.data.xlsx deleted file mode 100644 index 7b632a84d5ec03a3ebae80d41dd4690242308f7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9027 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 - - - - ZDEMO_EXCEL24 - 24_Sheets_with_different_default_date_formats.xlsx (ZDEMO_EXCEL24) - - - MI - ZDEMO_EXCEL24 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL24 - filename - - - MI - ZDEMO_EXCEL24 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel27.w3mi.data.xlsx b/src/demos/zdemo_excel27.w3mi.data.xlsx deleted file mode 100644 index aa3953d1b31e518622882373d531789d2e03113c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6755 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 gVHqTR% - - - - ZDEMO_EXCEL27 - 27_ConditionalFormatting.xlsx (ZDEMO_EXCEL27) - - - MI - ZDEMO_EXCEL27 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL27 - filename - - - MI - ZDEMO_EXCEL27 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel29_input.w3mi.data.xlsm b/src/demos/zdemo_excel29_input.w3mi.data.xlsm deleted file mode 100644 index f435f3bb4ffb171b21c95a201ad5a66dc750e341..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19183 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 - - - - ZDEMO_EXCEL29_INPUT - abap2xlsx resources/TestMacro.xlsm - - - MI - ZDEMO_EXCEL29_INPUT - fileextension - .xlsm - - - MI - ZDEMO_EXCEL29_INPUT - filename - TestMacro.xlsm - - - MI - ZDEMO_EXCEL29_INPUT - mimetype - application/vnd.ms-excel.sheet.macroEnabled - - - - - diff --git a/src/demos/zdemo_excel3.w3mi.data.xlsx b/src/demos/zdemo_excel3.w3mi.data.xlsx deleted file mode 100644 index 46eadf322e9a0ec4c6f654a4989eb1a15b013753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9159 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 - - - - ZDEMO_EXCEL3 - 03_iTab.xlsx (ZDEMO_EXCEL3) - - - MI - ZDEMO_EXCEL3 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL3 - filename - 03_iTab.xlsx - - - MI - ZDEMO_EXCEL3 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel30.w3mi.data.xlsx b/src/demos/zdemo_excel30.w3mi.data.xlsx deleted file mode 100644 index 6b72db7382bdb7870f9c3caedabf8a164e8743aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6197 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 - - - - ZDEMO_EXCEL30 - 30_CellDataTypes.xlsx (ZDEMO_EXCEL30) - - - MI - ZDEMO_EXCEL30 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL30 - filename - 30_CellDataTypes.xlsx - - - MI - ZDEMO_EXCEL30 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel31.w3mi.data.xlsx b/src/demos/zdemo_excel31.w3mi.data.xlsx deleted file mode 100644 index f1abee1c9d35a06b83ca9618fd0fd9144bd1c5b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10113 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 diff --git a/src/demos/zdemo_excel31.w3mi.xml b/src/demos/zdemo_excel31.w3mi.xml deleted file mode 100644 index 56cecb6..0000000 --- a/src/demos/zdemo_excel31.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL31 - 31_AutosizeWithDifferentFontSizes.xlsx (ZDEMO_EXCEL31) - - - MI - ZDEMO_EXCEL31 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL31 - filename - 31_AutosizeWithDifferentFontSizes.xlsx - - - MI - ZDEMO_EXCEL31 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel33.w3mi.data.xlsx b/src/demos/zdemo_excel33.w3mi.data.xlsx deleted file mode 100644 index bec0a54a52f985d30e4836c09b0c66d33283dc70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6248 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 diff --git a/src/demos/zdemo_excel33.w3mi.xml b/src/demos/zdemo_excel33.w3mi.xml deleted file mode 100644 index 92bdb7b..0000000 --- a/src/demos/zdemo_excel33.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL33 - 33_autofilter.xlsx (ZDEMO_EXCEL33) - - - MI - ZDEMO_EXCEL33 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL33 - filename - 33_autofilter.xlsx - - - MI - ZDEMO_EXCEL33 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel34.w3mi.data.xlsx b/src/demos/zdemo_excel34.w3mi.data.xlsx deleted file mode 100644 index f58ce2a6c44acd64e53e70000c5f61fc7a45e0b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6943 zcmZ{J1yG#Zvh@%kxH}|M?5 zUBT*Jj%F?(7Ee3die!1EJ`vQgD(rE5E=aB6+ojqZ+gxn@Zqp3&+2JwEgU*S;ASx&L zj1Wo@zg+hu730UpodqSK)zxs1{UtMb1=C=%Pok?@I#Q^sfheTX*1-iwgMIH6B}S;{ zAu<|cCz>`44CQZ6F{kAVP(M9SUFL*fMe>aS!B@X{S`o9RUE*F~aFHrihlFk(7%|5Q z*o#Rsv>ju=n3EBWp1|+Mo|kuc0D6N%^pow-HMnO|sOdVArX((5FZWXs+yszO%&bs2 zbG2tFhb4t&t84w|09gf)VdAl(_-icd8i-A?4)MDcw|KJ3bKaVUMR#M2c+buF2`Lo? z#4rYlO3>;DQi>|E^sX?rF3vW-GvadLeu5LuP#ImI1wr6=A|Yo7U257w*7=cLZo%^A zozA0uZ_{JVu2%e%pi5#!`!)96xsVmUq|EgrW#hMi{8e_Cm51uVY~a7L@Db&G#s-xA zH_re76zB?eHnVkMW%>QANK{mUWk(II!Zw@q)TPERf!Me1qURcPQ)iKlQ^%6PLh5SP zWc1%wi?FGFYBjX_b#qg<9oKXM4W_|KlF}@>r!IzsPUt8Ixvd* zN_?c~y#MQh0oMww>AYIEzEhqy1GBscbFORrRLlZa`Ti~XR#Q00J3ZK;oaC;8Ye+56 zroF`uLE6WC@@-xg5ez4zr1Are>@LB}5ti=}GYQ;tbv|^vsA;Mi<;)qhx?tt=t42(j z>3m9F{MNCv!e+So+esW|JYmi=xGJVioU`lkXHjGe{?GnRMZ}HHr8{&(-b1Otgi>MZ zU;=b@aCBica&-K?8#7f$?Wrg*?^3X?xJ(#FdU_>3h9`^XY1i`jM0-#;68M~#7j`g8M%0GFOQD+q2p0QYdMBd7rG&{-<_1;N{XU(J|hsE=tq~;x8hQ! zFgA`--$KhW&ohcuqaWsMh9TZ=oXq4eKyze)$c42wK6eQATFJ5CqaT%jrzZtAx}drY z+gRhZyJ;)ZVEg5J-u`vqp!mxqVJ27ijneIOIxgL;{#QFR{#W6ODKYq#21(nQEGZ4N%=1D`d+K;Uqf3T^ zsFiL#WNfT4KO`RvqoX&7+p?ZFTljPg1ck3ltQ4qrdBt5hSHKdL1D;C<&K$ zaa36NejitmUH6gx@Z>87?Hlc`BCr#Y{o51XVHZ_qVj1o2^{b>KB)4p;S55QZIM=ka zUvg!?_~j8GSeQ1jN|P*MI4$^IE66L3R(0!D>0Jz3)29gd{!q z`dK7pG6gBKX(n4o%i!jdSI06aMXB}>9`@wPX0d11&UDWt6G!71!h(x!N6rcDG9mPX zsdl2OFTBKV96`jgnZoI4bIBbLv^DD3s%kiCJ~!O?UZ97RtGe?X{Y5xEF^mNva(qt4 z05#=xKR?@y0h47SDSha&O>;z}k@Ru-kM7daJnN|(fBzsb!CCS5Pr1O0BElTOO(wJF zC5(zfnQtb)V~j4Eg!wda_4K@^sy{26sG@ouz43e(JRikU;ue({)d28sJO1?$w&(;K zF4PSx?B(rg@v$BCsHn^*nbt{6EHUK7QZj5ez99c&Q|qJ7y)0dv;)9(nycfsS&GB#m z%)hDThRLh@T^Y)tR1-s2Pg~Z%i-U)QvyHKXgUxTc|0xuGY?z@{#^W#>1?2c8_B<=D zDEi%UG)}Yqjpkw588PtE8_1~Y$?ByH_&Pcc2VTdJB;jwubIVOmY^*Y0i+|)W$gzbD z3=Lw?=LI7XHGaH+MK?G{3Ky!I&isrXB-7cHx*wRoLunT64WS|KC@GjQ2b1}RyKAI+ zq<$xLJhHlsfnDNZWK&ifeDo}CJhb^*cBBFHXM-II1c&IzZ8NEs!n%t~jCBk4&qr8B`y&hV)T7SIGTL?)xT~(C2cK8~kr( z0MT$`vG4#uHre0G1!cz7(#+26?x)`7aPOd4hfuWQJ)gns**^RgrC`>H~$>; zl00GfTc+pG=89~K>y3dz230@2dHpdr%Pa^%B^y31%#SApa>ddb8!rM&9-Y@IAl=*1 z?uXQ98e+UfXT{K%b1bDwqt}rB^9x%93X`b%xFS)UXla#TIXp>h%3RuP`h|BfK5S8? zIEAL%it2hq30OVSwwv~@d-7Nn$Wx?tke`8O9&-?v76r3Dffe6b=8AA|jk%IkDJ~+z zHSMu~GgM&*E=>`Ws7&~>HF#q|(S(U;KCT}do}^m6a=Db5sTxo>1>TlgQL&h%zt{#` zch=Uc7GPQaAj#fns9_L8H>BZwJr!vVMf4{3?uHZUGQNp^H-9amv0&>6$RQFG$*cd z4M!AX>xpLVtuY5uz3{+OXcBt7tP}2fSh(3d;h7}!H`+lvez@(U?Yg^bd6~?AeK0EB z^~US`piDX7@hBHf8t1_o=HxB10%&6Zats#qJ81X3{jv3sl=MqDQ_$1V`B6G*t$~i) zzG0GZ(d?^tl8sLE?x@@sO}*wfh6+1jw%ifqO11|=ABOmS(3<->7>CEkhdVif-txBv zRxJAmPxj1KBnG<;Af!q0-*l$Y3kSL+$ubJ zLSfv$hbQx@pZg4*icNXd&O(c?Ux`@y7?ToDnj2F&ns;SL$RbFw&;@U3uX(~wjI4Cl zl3>JK)gG%QCc(D_&=t(y_-zZ_;JJw1tB*rz4|djI*}c_(++BlDp> zjPh&ZGP{ZeGmC9^_bdTjm3JL1r96{MqY@xU+l9V~t;0&@T@p-MJS-orrSj(iOCgqI zp5U5vCWNSUeVrS)1c^OW=6q^vZrN7^&Yy=!Cbp!tr4X>Ft@+UA)ya_kh_-W**mC8f zZN|#MlgO#T)G=2&Kw!+^M$ddNQoOtpUcFleLwIctKj=lW&xWhhav4Xiwnf2v)< z?=YC6+zK?*L*3i}Ys>rxbEZQ(!`*?wuKIdHHWNO*n!Q|dACIjDl>IM82th$ijpO33 z-Ubt2h?Y1_$6~DP*M1uO($A#mo8m|ewfaFM`zi>K`7Sd~ZB{RU7xg_S&+7)ClZ?!~ zc0tX3P*LKNHF@qt&B!sc@=9-b!Lia8llazX95>bkH&YR@B@e%0t%;lpZ+lhYd5tN3 z?sYMAQHfAX^bdJDjO17zh_M>zdT8}`hYS@<^Oo-W4oz=6ZuOdj2i{xL0abmBNa-2C`9Yq)xGxuo;5{K5@_eh|Z@l`b&%!mv5N;e!D8A!K6FB-%Xa%?I11 zfR6Qvkwl-++w%bN(4KkB;zN_3T~WITK}rYqW4to1D|+Cshf zVzsQVV)oD8x-T$T{v2$I2f2^P%>%WF+}t|E6%pL!2Gi4a&MC;6d4S>k_;*&XhnK4o zg-=1!eZ#f{YkesFn{EMv_YA-VL_4>Y!E}w5kGX_TP3gm$bbxir(!V!Kgzm7JKd}AH` zAMdzYKo+=yn|ah3l2cv8A^^F!+R=0tyg@JYdzW_$a9>1{y(dH=N7E+iDa5?-nPeo8 z&&WNE+({c2Kw^DOy;U#M@tTz_Qr;|Cg_RI>&>##k7=ol{R;Q4>>YC_CBUin~NJGgR zqD#Kg5ojUtii}LI5Wct_Aju!MX3Je7BsT^OYgmHKGc~|`r2v%rAr%Gtssz#g;&rcQ zZb+7Ue%Fpc-}?38%ROab^fGz+7{tOh-nblm1zJArX9Tu1w1xuyOIxoG6==ZLSqoM^kiSQ@%rmUUI-Ijpy)cwZ79VjDk-qx;F(85p2;@@ry1cVMJMDb zOJA`Ex_QU;q-?xv#fYopyZw3MKgaeny>hwwH2m@H-2D%4!A_qPO}B&#jvYy+j}jnJ zo@#tWT3lMOUR-KWX&KzvtRjUc4FbC;y+s6rbVKMOwz?lpkg+Vja4h{XL7o=7{b4?H z=}ZS8^Om+rvMSjQRr$T(<9*zbfug`@qf*1=E6O>ZeA3=!gu+7+?r8X;a}^kWWp|J` zSFYQ$^P@+4O-0m_`%k1JnsqO&3E!w(D{{uH1fumRH5+CgkknUSqRj!e`BqAbKDjO# zeMqw`7m!m;UFSD0$qIVK`Z-EM?S)??5esJM-lAfBC^mBe`rOAy{ubQ03dnOb5Lu?x z^$_P#ncmCb7p`JwSC&0G^+fa2d`v+m%8$4csXBH*(pG6cUOgC1RrHm7LD!I4D|QSY z&={@dC0w_^O_)^kykxfAJ8jZ5$T-7@0GaYY$Fd`2nc3MJoy~a;gddcI=0k z>;A?LfvCgS1JNfm15=X2k5tfK=Gy9x&3CYT$KmvOX2`&SLg%v#$sNR+?SYw9LY`g5 z!@4V7)y_p*J;TclVtXUN>zkN%;vI0LzJh0|bdpQ(4r>#xqQrA)C3?;O4t~fqW#yp0 zGr@wTQTNx0g_~IMH}sQBhi?jxfPc5E9?eUb)X;kO`$Yb>U!d)(i=~mXnW>tqvz5KY zUxzXV^1J9^2CkPyw?8KlL&1{^LOw6Fzl~pNz$@yfBq}CF82P*ErMs&PFM47PKittK zF`eGuq%aGm6JJ{DycikqOhyE_M{<{PhqUlgMoA{H3;cZL#KN$%)RL^Pxj;wy0e?8V zooJbEr^%hMrJ;mdpQ5!W)hbcJET0pJPEmS7S@teD_S`4DOjy>UcXCSdd!#~ECFIs4 zAf10lGvxtvXF_yHD#;#J!W1(~Vwn$^A&!z-Rw^t*bW_?$b;S>W z5Wt*u6^|nUei`N*g?^~x%U(sqCW@~%OPA5-jn273C9t8F3lx_>htpPfgqk9~JV?4{ zw8wuw1N2dJi{b>+IA*?*pVxJIpw<;Nlv2V!D&k^kX6EVw zB^bK=H3?K`uh^IILd#w9@|Wj`vWP0_`9(Jr8doL!DH8?){jxxci6BV*FKeHgxcaJU z6O--*mSWYJsGy;5z8q&>s5FoFXUAL1KIz&HyrU-0?fcE3ViO%c$suOB&sg8wgdA6I zxHI)-F4M`_ityLsZa_OCyH>W#UasBrBW+tDacp%|I+1j!bsd@6ucI5k(kmWhZK59H z4h$*vuuXLKin_P)_PStas`(bc%ZA}dP%PhJW}hZ9$8?Il&pWvAy?sNui$urmgbl$^ zTB@0`Y+ogl4dX^qzdyQEQFlIjE0sN{BIR7056Z!Lx5tIxZU_r;?X{a+bQPQ6d>41k zS9j`yjN~`wD8@qWSIl`AafL8~dg*Gc<-bfwZCGY%=IJrtavVbjiWBACu!v@Dadl9s z_v%54rCW7A>OztQQ}#!?yp$#mu(+izy&yU~!MP1ICHlz!tGCw@QZCIM(*7DkoEJnd z96!ns)uaq`GMGh7CEGd`NyJPJ>NL@m$=Dew6?gRN!{B|JarB`NEZLDr!W8HW#_!yc zM;oy}LC?fNb`oRiKXAK;VWQI;snHIiy$i#U2{A+diY4p(@J-HS0r|}jr1OcY_nz_? zzAnvv(zh-IU3~FIt`qdKk4z$*0wz70KRttn+7gRdJ#V#6QQ;=nY_wx>5wj4+amI}zs(V6POBv|hwptkg6TGiI93ABL6DXMUsvMEu%c*? zmDlzi&!1vWSACTZv=|jz3gJ^6wRO3}gR40p>`ZMp6Qbd8t{qal&2a?iLqZV zR?fvIarV(yE$JX75Z7=HZ@0-IjLQQ-k9n76-YU`+uIeTEbG_6aU>kPD!>@XlJJ##I z8UjrR-Khk?VaS~088-EW)uC3|r(8{bhH@3=s)Mg>Nx$3eQXPj}USlL5ZkpJ?@J@_6r+34df8AVwcZJeyyQI(Om|1%uGWR9Q!C->A)0S?%an`6 zl60;5JpOu680Db7S}T%H02KEGyI51dD5NA=8$ccv1o0)fNp7lqxsc)%;VdJN08v@Y zY#mLj7k4{f|TVH2CRk@F#c~Ix76`P5zk_o`ybcWd4L& zLA~Jr*48{lcq-a|5W2AcdGr4z;ZISXo|!)=VFXW6{_6<>%ELpM{(a$s0+@zw9Nymz H1mOPx%Cj1( diff --git a/src/demos/zdemo_excel34.w3mi.xml b/src/demos/zdemo_excel34.w3mi.xml deleted file mode 100644 index 9231c49..0000000 --- a/src/demos/zdemo_excel34.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL34 - 34_Static Styles_Chess.xlsx (ZDEMO_EXCEL34) - - - MI - ZDEMO_EXCEL34 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL34 - filename - 34_Static Styles_Chess.xlsx - - - MI - ZDEMO_EXCEL34 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel35.w3mi.data.xlsx b/src/demos/zdemo_excel35.w3mi.data.xlsx deleted file mode 100644 index 252a5a43b8eefe0b86494ca886ce601d2c9858d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6354 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 diff --git a/src/demos/zdemo_excel35.w3mi.xml b/src/demos/zdemo_excel35.w3mi.xml deleted file mode 100644 index 63f55ff..0000000 --- a/src/demos/zdemo_excel35.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL35 - 35_Static_Styles.xlsx (ZDEMO_EXCEL35) - - - MI - ZDEMO_EXCEL35 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL35 - filename - - - MI - ZDEMO_EXCEL35 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel36.w3mi.data.xlsx b/src/demos/zdemo_excel36.w3mi.data.xlsx deleted file mode 100644 index 5f98556f843f2f78414dd4fa3d167e8a0ee5b081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8367 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 diff --git a/src/demos/zdemo_excel36.w3mi.xml b/src/demos/zdemo_excel36.w3mi.xml deleted file mode 100644 index 416430d..0000000 --- a/src/demos/zdemo_excel36.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL36 - 36_DefaultStyles.xlsx (ZDEMO_EXCEL36) - - - MI - ZDEMO_EXCEL36 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL36 - filename - - - MI - ZDEMO_EXCEL36 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel38.w3mi.data.xlsx b/src/demos/zdemo_excel38.w3mi.data.xlsx deleted file mode 100644 index a07e3b8e3858e0f0977bd8ebebe6804422bdeeab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7963 zcmZ`;1yq#n)}_HAqyADgNs6jgTsUVS6AG@-UVpy zVyNcf2n6Y~zO=I~OO#XWV#f~ofa?)qUB|4IQ^-uO`wr;=`!{N*z2v8dd$!DcxSH*X zI!Nm2gm2UN`UkI~yYZhglrV)+40Fu0|#W)dnZnWIjElY=q4SZi1vsm7QsDv>0MzeZ=0-l8HH?_sJBogy5EErF2( zzQBDwBTVe-ys|IE$8(oGO*IiVRpYWxk_#iqA}p2!%y1^>;R+~l$Wd5j1MeT_IXFa8 z+9cgVE*0g*cf@`E}`*mHvuPI(l-(8Z<7?5a8g@p-)3+pe=}v_2+k4yn-Sk2S)G* zTp;+R4mIJsar?#{tXzY3>MXJ$>S$8L@v6#|=XwDZBJ3)~jYd{i7Z+8VF?DA{_E-rX z6#a;Oz2)!cND>J0`@*Q6oJ!0d)}~9RDMe79i4PQh?_QWOc(RCSHm%yO=ai?#$Ra1g zlIs#X5;cQUx_61SQ5UN3nHJx%1O{XA0DhhNXwzMH9(2xOW2K}X1?HAE-%7hO){0! zABr?2tvBaSa|BrR=Q61QNb#FU&sSPm>rx({#y;uB zY8g_pVrsW1dzT~Jh%OxA@?w;B@dc03#mqI?^o~#aZVD6Ebxd3D6os!;x5+6p0|>|? zm>kaL0Vaf^fzQtAf}L$XDQ4|;tX6CGp)+3v8IWXe#lA>e+5XJr2lsbmIzGlw2tp&{ z1&s{OpOG3HCqHz7E4LE@%5jtM6Not+ve zrO7LKN=5p^Luhs_y!^e<4x${%NMfOm`r19-d~=vQk!@9&E6fTGl?Y&@6Aa$Y85b!R zHNXTes(f5580)(+Xp`^ zas_xU>b_Cu94sWah2Fy40Ur3gs-JRD0%e*6`h022_FEC$9h_}U92{(Zvi*-bKvg^V zgUJy5S^+uXJA2+m7j(ULSz4!w?ppJZ?2IU6=`{d`TB6!}MnY|EhkcKu@dV*z;i>sL zCw8{y3q@aY7-iW*dir|rGvo!`Bd$&Vfrw@B{a&b0)oA7?tib23bxC{v`P-DhNY8Ov zl9qP`!{&x$-l1;lN$yEoj~x%KPNNX#c$wH=sP;l$7S$fuEWEw+=%#-_S^9WGzl>C(AE zZYQ!^>xM*Lr|Ue1f1g3PNTk7NXcEgN`<=+3%(z$r?SQ|(IezkTkZR~K&x76G7M^o9 z=?9z^&7}O6?PfDZs4$fqV-c35rCK1OB6Gu29fOF1u@};UF*E--#12`oxS;NzV=pF@i;FyeGU~o}(N|_?`2LNUM0wogM(>3MMIAPp`H)_8Xo5<`;^|yw zrix$Hh~cKxqO!#V!;ek4^VW~m%Em2=ONS%66(nkUIxhE{x-`00p4^lH+SY->D9bv> z2LR#6_mhMsa@NMG&I{&At1*{!k23+wWk(qE`a$5_*G2**Bd#CDNiuYFDOIJ)b-ray zKXy+?_m-Kg{=&FXtoOi%V*%)0>hBE_HQD{-5m>mwWDke*g3s;Lk*K&`&Yv?kWN+xQ zeo3XRD%;KXjTcfaw&hq)EE}WvtS9LzDC2pJF)3|%2zOxlmOxAKD@ zdtRWN+`M$%NU_l0)}TIq=}G_VB3xb3tlbqBf2xP>1oCx4kkcyRw%eJD^>4gjGGF6u z%%j`OF1ohs>xM^(0_XdmrQ4o)eBUp5;RiX)#gxXob%y^I0Fc*T>lr^XeCo5`{POb4 z#%)5vm2l?MmyXU5>4=pYdLH{4Fwrb#_KQfq z#Xcd6K!vv;g1+7QVLLIh_Y;;62Fz9LaT=oHyc^)!f;eiIH?Ry)MC@qN`%-T0tPN#$ zm;4eZ-1%w?d)$k!{oV{r2X`>Zt%yJ0Q79OjZMwc;^=m7?Zee}T3!eKdp+DaAL(kOK zVKMVM0X`)bk)O`;#it%iA=X6Rpvp96)QD9*?F*zhiCq9h*Wxw4TqgQbRGKvEEO)S0%DQdI9+$8_htSUE+4YS#?L(2qF+ z`VSMm)?A$COSp2iEDDm@4%CS~L*NT@%P=txbaMTyE%R^9nGfuYc6xf-s;i0EP5E^z zcXP?T+&5~__a==|0|S|Bhs0ex4TdL)=eW%Vqpa*#z8YNVWm0sFaK#5(eIb^i353fG z%ZyQ-(DmcPNap6{tnvDmk(t;0RAW!SFn-ROJa@Qq;E3hLVrOWaFjY-1#zD_fka znTXh&yHCI7a88-0y^8R(`iLISsu-52M6e}RYMwR|IgUG8v^th9X7%*}W7*uarQ4oE zT|mpFZhcTsvNe7F4*ta$;qY9f2iQbxbgRtvdQYut*CUB>npC2rl8b_&4cQvK#hz+@ z4h~)W5ai#GM3QvXq{34sGyXEwUZIR1l{(C5^rp-q8~}WSubEbf%cb6Qu%t`;gvSpz z+VF)igmYKpOquB_snD)w%7v+>*FbdmC_mKv=rXInVs`#r>uKo^*Kw@RHT z>ho(-1$hp}hi6SA%>$pM+Rpj4tPT&vdmV=`u^LKGFhlyx6Pg$kFh}uKC?&sjo@Z^a z^WEGxGk6g`x^}Gg`4mRJn+g!VF+)p;Yv||x@5J_JN{dqZ{Ij;ZCiqO|FD`2tf%cr> z&A{6=Bn#dpZ1lE`Cz#&4_iqYr#dyOg2g-^TiM=c=PPg~G8d|lwgedY(%QwbldWpNJ zGvj*&=`RRkKWKiQ>KhL|qmx>Gl+-N4!2GKHJv@`s8X})(u}?K8PNZ}IMWEUY9JP%^ z77%3o*3DZ+M>*GDeQu@kzqGauoi;TH6NkszW$|qFGL^oGpZlilc=w zQ{;`e)JUD9bT{ZFzs-06Wje?Sy&(dr(fmVh&%JuhB&6)~UmB}{ZK z&x(?SyG&UHxVZRiq0&k2iN}SM&K#Vk5)OQAdu&{}-HS`lIBA2q`H_8CAaN)>+pl?FRqJ(>u9{e~5=6x}FkPGY_IIeaN2 zAj`jz6e-VTO9Zv{9DE`o&cRJGV13#5PCivb@nhNftvL1aMDXL$=B^n*j_sa4KkBHE z@4Qnr)tv{VcxuVyf(6b+m#P((q0C4)Wwb@=d391EmX5_*qgM=9T>b>W zRVk*5ZCxNT9K7M*v)6&#@vcB}o$E)hE$RG`9%f)nmzxTjZ;kq%j40eVV zeMEPP0kQ-FT|iI@ppRcwUsR&9LpnQlUmIY}ha|hTlAW zWWVIVn9R!1*g~8$Q9{SC-F+JZcHa&XZu7O^J(5My9g#As!dTbFM+vBGW@zX}Nm|8{ zf0fToiXb|uNnYAdCa znu7Ps>&R@UwhkF9Z|J#6O7|ljP4kML7*^Rx6+As@eUND}qs>6_ax`EEpQgGAIqX@D z(1M^rPhstF$8qE%m$x~D^|}CVwa;Hc8B44SSZ%9K{!8*x0h@aS&*_;HAK&09mjMo~ zBl0ax{6GhBeM=8o11wte^&TDYH9GfYyjpx+inE-t7p6#)TwDpsle~~ePS2G%ZZ`1? zJ&q%hG~I4atOrjL^zGCH3&xI3J`W@_ZGbecVx^Ry1q+|27xpG8eN)sC*v9EKpsgxF zZ+zjNu=5fTT!AbTRxcl>pTm7iOh0MUs;- z9>Or=m*~+pCK$zn#Ua&<$jy(g zK-+naCJ?2c5jqSO+r~3?M#}7E1&cqh$c+ed^o9OW9-U)5ww%;^!8HAFG(|*AGR@LW zQZqkvhX^C0%y2BDbW}&ptK>9cx0K(m1pA=F1knq**2YTTdMUyj?~B?9YEJfmvGsjn z@HN}t$1=l`Ubzc;6_@Y*b1coAjop9VM7IC@^6OY`CMnp@|Lo7izQX0o_lMcdVBz+& z0+7l+v@20XKzpC~n#?NKQK}yR8gT~2QRc`Te;YGit_%-PQeX6&%WoiGFD2ZAb^+t> z2r=cHk+CQ8)AA&k=+{VC%dFd>bHk_QAL*-Yc+qzd>XzKO#7LoCu{%&;WVM<@gM&<^ ziKYhVm0Kr^n+BZjb|ut0(1A02i?^^>>Hdy^mRoT+a2&UwdA#`v&l?gOweb2lIRQFx zzKK?zAxT=9RVA;E!_d$h}B04z%%ADZZ)M!;T9+Pum^W zG3pD`Wxa5tQj;u9LodV>zrm3&PccSSi5OY4C@v|8^0tlXg@beVA}r`3*chAJ#_#xo zbNhR^)UN$7;#M{7E*}0J_`oLd<4&j!y@zTN)o(reC-A>}^gqM@t4D8%mjghn8t7zo z3of-b9G#=lX*Bl6sgD;`y%KzaALI`SGA}pyQ?hX^57-pmg z!i#lF)aG_*YdEf=m28@PMts|h>vfR-iI<1*i|R3`TkFi0UUqwSOJ*-HH}UgGZqcR4 zBU5#JE{r3LbF*-Td~(|~-0s7*3$j`pUHy}}N$D;gpD+6W9 zcf$OOf+(;cRwp|K%1ViZkjNM(drqOgRwE^=5sf{`D6KN?<7W>Mp;HPoc;&Ew(c1&? z@yV@a%IksNVmZ@*xCg;HR-9TvASE0t9>Mdio!_*Wd;6?l}zapv+1 zsLnLR-WeRpoFq6(nIo|?YLgn>4v152;^K#AV-z1}Z75%bi z7#}x3mpS0X{RnTWxq^I7s?@+1reJ-^oWyPlea~xXUG;Nt4o$muKr<_2HY+=03m^xp zwW9^-%%!SA9^Yui^n4f&0n=y!u8^dinVipYyZxgonK>srsj<>kcG9We)*!@U7>TQ! zCq!OruJ&S})eD2f7^9YjL;Le3-6KBGmT-_MkN9!?r=*sf&uovIPE!MNg941-d>e%L zSO_n8pQ-jF_t8s_xTl(d12Tq^Et(`ayQewj1==gtRZe@ZKnMsMV`GsP!}5Y4^DPKu znh~8yV+i=tiD3<569OUI+HBw&lr=uj?)~aV+jTay3IP*^rXFv3Fff;#2nq?GK~ht} zS>y8?uyk2-h{LD#Vz% zC!0AE1H+HlMT8$dk&cLOfyfs$@X}Vxu_84{naaEeH5jGXP}YDl5*44wxz&nXp6Q@j4 zx-DL4lG9W7&$uYe6|-%56n>B*GcY7=``ebH?B9n2x}IB>w3S3#Z#+*db`pWjZ1dFjz)*uK`z3>w3Y8VV%Z5lsY8JJ1&@ID ztAzdc)fCjpKYspYQ3VSCyF0nF&VgRs-*WUzgkTL}Hw|}&Kj*Hndk0u+*lGBkwItFX z*8e{nhc$;C@!pw#fL6Nyd*BO;13M7C!|6x)g#$Ytg$00Z$?pJOWBda6vq6V7hHX3V zj8~yu=+7SIpC%O66tH}T9e@EbEWj_(gav>Vu{!{G=$7Pf4}M9Sk{mMh68zj& Q;lSBKZ)NJwWeVK?0fKW}e*gdg diff --git a/src/demos/zdemo_excel38.w3mi.xml b/src/demos/zdemo_excel38.w3mi.xml deleted file mode 100644 index 6a7b0e0..0000000 --- a/src/demos/zdemo_excel38.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL38 - 38_SAP-Icons.xlsx (ZDEMO_EXCEL38) - - - MI - ZDEMO_EXCEL38 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL38 - filename - - - MI - ZDEMO_EXCEL38 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel39.w3mi.data.xlsx b/src/demos/zdemo_excel39.w3mi.data.xlsx deleted file mode 100644 index a637b64258be633744b3e15e8c27e9234ad0283d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18022 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 diff --git a/src/demos/zdemo_excel39.w3mi.xml b/src/demos/zdemo_excel39.w3mi.xml deleted file mode 100644 index b3712b4..0000000 --- a/src/demos/zdemo_excel39.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL39 - 39_Charts.xlsx (ZDEMO_EXCEL39) - - - MI - ZDEMO_EXCEL39 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL39 - filename - - - MI - ZDEMO_EXCEL39 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel4.w3mi.data.xlsx b/src/demos/zdemo_excel4.w3mi.data.xlsx deleted file mode 100644 index d06760860bd0b39d43e4f68cbd93bc7e11ceae56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9152 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 t1iV-4K6O1r`FFJ}$seNpO|9Q)P(v9WN|#?pb! - - - - ZDEMO_EXCEL4 - 04_Sheets.xlsx (ZDEMO_EXCEL4) - - - MI - ZDEMO_EXCEL4 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL4 - filename - - - MI - ZDEMO_EXCEL4 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel40.w3mi.data.xlsx b/src/demos/zdemo_excel40.w3mi.data.xlsx deleted file mode 100644 index 71898fb2f1052431fa14cc2150f4828309d815ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11164 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 - - - - ZDEMO_EXCEL40 - 40_Printsettings.xlsx (ZDEMO_EXCEL40) - - - MI - ZDEMO_EXCEL40 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL40 - filename - - - MI - ZDEMO_EXCEL40 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel49.w3mi.data.xlsx b/src/demos/zdemo_excel49.w3mi.data.xlsx deleted file mode 100644 index ff63aeadbdf7392330551982450b2438cc368953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6311 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 Qp~K#IFyZP)@blY$02{jD(EtDd diff --git a/src/demos/zdemo_excel49.w3mi.xml b/src/demos/zdemo_excel49.w3mi.xml deleted file mode 100644 index 217c0b8..0000000 --- a/src/demos/zdemo_excel49.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL49 - 49_Bind_Table_Conversion_Exit.xlsx (ZDEMO_EXCEL49) - - - MI - ZDEMO_EXCEL49 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL49 - filename - 49_Bind_Table_Conversion_Exit.xlsx - - - MI - ZDEMO_EXCEL49 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel5.w3mi.data.xlsx b/src/demos/zdemo_excel5.w3mi.data.xlsx deleted file mode 100644 index 54b00711aa14826f80a7ac61aa50f21e6ae83e45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5867 zcmZ`-1yGc0)Lt$iNVkGWhlGT*AS~UzbSxlCE}*1zBV9{L$9L7~D63co)0Rjs=o!f2Ed=1w$lC?y@AP!0 zs><{;O^+++4D9LJv$K~6{!KKhoR3#>D`k#<@9Hj-&&rz;IFaENh|1A&gnTX7&#fxFrHTaCXs!ra*3`xd;Fmah8os)0tOTB@;5(7Nt?+& z*l~d8&#hb-TswBuUstW`#gB-&BqH9QkX#&y+fv9XoLn>1efG~=;6X zmKuG$x@u9uIIt4PqgB#qW_x~mTKy%i{&>)l0Om>Ghu+&$QHrF3k>~YBFbW*W% z$fs*WF&#_y7anwdnlTlaN4K2TZZm$KtIz&W8Tb(H8b1;$H~kX%Q)v2=CJ zBv^;%=xyf8Z;)?b5KFC>8Vp{Xo_bQApYJPw+N~EXq0iZK9C$0)pNOIO&e&krY=9tO z%QVvSJ2}Rq07aknrL<(3$#9nmW+*wq@=UklQm3vav@`uYmxrp*bhmCXoN)Xgwlll! zOZ;b$37sfQtlgQD&5m2=%d#)P_lrb<^}61)b;x}TqT-gs`AB4c(^3)NR!z& zI_>szguV^LoFo_m=L}l3mK*?n=|QaZVZ$y=tw(@!jl zj8!$7!(sa%L@TKO7ZJ`vgv0Fdk-ZB?^%PN*GUG1L!Z)IU-x3WR`3~m*>-iL`Bc*=a z^U?1RJ)a`(%YMH{j=^sx$JEK&Z9P(R^^@3vG}H6jb);RKQW$e5tOd^YAJnrqC0)kK zR=y<9K8x=uda?*(IXPYKr~NZ4DpiJrqNuERqq0K$@2os^a)$g$%cxoh4_O!(vVJ+` zR@?_RbxmB%^C+xXhWI%9YQvxv8ogFKY>%|GhW35Su8ffmdYiF_=d=zkfa zs8NgqjXB|G$`YE(J7sRQHCDj9Msm&lg1~Fly+{)=fi*;8YZPhIDQbnoUm3C*?aI_Yl-Rc@j);K0_JJZKVA z+qYNO2}U^w6;$2|-xE(T7pFV@a%ePuoqzQJbk1@uNP|(6b$)O>0{)X}LA2cJAFZGa z#WWS_`vS`Ss~dPYIon$}IobbU`=8Fx$wL(S#$pg{IiHTA*imTS71y{;iRJl3SDjVZ z>&zHT`DGkDP!gz=ox;GtY0GnW947HuVrs7bIS;qOr=o8;>`FXg-Mu}8Y`MX=DeE#0 z(FsfsZod?-9?kkd5TwvjpRyT{x5fa8_8MoQYA((nvI5ikymZ$|@ksef^K8fVCM*MmC@<=?nU;Y9@9?QvoRWm1D}rdACGiGdKRnhw$~O>oqk zlxTld*TsMb{uo6G9lo@BO${bBQH!@T> zRVZd$Z6FSiUvJ(YyllS$JIx6awY5g(98dZ~rX{l&_FlW&k5Q;j!Q-qWQuMX+fm(`} zf;DmIx9~Q@n(=1lXu=#Y4b8aci~6R_Hv{}aH4_#3o&1)@%7lT2O z&^FeKw&7hZ4WUBqt-MTptC+30v?#QtA>#O!GFPmv6QX%og)~q>VANytv=`w3E=`t_ zsYsYy?K!okuP4H`8Z?f53Dc^aKSE|@Y57-=fWOGiYg$jR9ex3vw7jj+G;f|?*cmaZ zqyiZmx)L^Z>UJ&)Tq1BqWiflBrN@ zPR&vgM!kIZ_S)me?v7P=i)AhDjB2Dd4C({~V^Rai9}6pye!+msGIqHgu%NNi%aAFu zW<2E!;k1x;#b}%nA0Z0Ir0&DsTs#yZntNP9XH~vprdAjLHEl>-5a^=jsHWlw0B*3WzmfA{LFleP8Y;@$nE$0u7KJMffY9v{F5d;gzE~sJxVV8ll!Mb+c}gMr4`my^T%eJ zE-tzJTPrS_xk`nGksoDD#+wd}pF*AHvo2t0Y4PYHtTyT&x^2X{l7xb*(mAoBmW&Nf zF%o1pv>xU$*$FB#-*NuXOFgtIuP=v1%w#8mKMkVA@umEd1LJ`!McWUQgNJcaf|+8D z4Ky@jdY0R#J8s7-tC82ZWwO6~oAcP@UXu5+>+`uXKDfShek%924y9KZS|J>PkGE|I z_qVgjyRzckb}(D-?rE*5xy$oZ#HeZmPUr2hT8q0mX^s^X#922e?doMZG)al%w;YJE zbzJ;zdTyLW-#NmU7;5{CQjs|bkQI>?r#)fhFN~MUFZ8I^doMF9_q~|zrb%HU(vA*3 zRMo%xP<_7RW&W<(0UfI!>}zd4w+sElt%UN0mF`7sceCenke7V z(9q8C^s%$=RHRQ3;aGb5kToSUlZ+#V-V{)ko9LTY?G{49Pv4vAWIiO_owqTvYQ#0i zGtB_&7T9o8AWq>j5OXasY6MLNp`Q)GEqurC>RNo^F9x0Kzm@IaGG?}Hvn;t6ZZ6Gg zl2ZoZAm8e_2oXK*5hxVrP$DDTll_35TZpMO*BP^@zO&Ax!vLwv*=k&!VpKF^g%j#M z(R5x=W`xGo_wVVZ-kTz{|6ilD^6M#{4LHby(y4b>)i7mF`RLnN;zGhlx&HKf?mqi zaYZFdkeN@ndU$6M=YB72qT}r<-DLGlHi~+bbuiU~UqnyRho*rp~0rP7J!I~Sd4SK7Sf#2`kn6zSyF%K>ek zmFQFFK2ZuNsyv~c$3LE^s%al)isMpATkd9-jLNVXqyO$SOL81mcfxHb=*Dpk2CX@P z_;~SnUiO7$MosBhk@@lkkVBRTbT5n=4lC)Qa+t*fw0_ybbL(fHc_VY-y>8>7!iKXE z#NR#fbuTvjlMz&hm+6NlSr54k^sbd>yjtRLD!3c2@c&G(@BM6aUsPgaP|uIG9i@6) zY|Nb@mfEh)wvN_6^UNI6j^Dw9C#x4B2D~4?7?6I{#-wSlkl)2trQHstz8gUv-nDmm zTyX5`-*fs3Hd~^^xwXin&m%XnzoBjJ{GB1tlS+2tfHf*Or_qE6ayzLR55l-2HXj zA64#R1A(}@piYkZ{8Va#I_=I#9->R~nB8t79wxkaMMb1#nEN9*tSNq4pR~`JnNrFh z@zPJrAI{Nd1sE4h9XbfARc}&v(kuJ2c1#P~)MNW_t7fS*O|Dr@h@ng0FdtO>SK%mu zitCdMXtE!#NC5LUaGGtBkx}f*OeHmwzwBHvh8rmKn_6vW&30sukbIDT}1E&6AAAtLB}W`FO00z3=3Ei4f5zRn}7`YU9k$KFiQ@ z?koO?nBJzDd2Qm^#dfAJU6~^~u`#3Ok-C#MRcD`&ti?^>)uv7S=pE8;Ld?XhgC#%w z0}MHo+|Vm!J|{vJ>W$zMiF}PeAemEm@6PwhB5xNBe2=!JM#YQZR$ERe4kaR_+hqq{ z@kQ1;Y0k3qO~;oOf)!?%iG*5i&${K(=eo9iPC~!8p&>)`le>0FSTP zfDzi?Nhj@1?=sLyFU=2O_ofp_GvC!s_KVns7L@C}t#X!F%$$_3S7B?aUv7(GFC9}v zUN;T-q5W9_*0`Ca&rvtuAN4T)p9=W3%l)o{pPQU&^uOv?_#hzN9ZRs%a2&*>MrMR< zwbG_g4veL4UGTm>zf$?g$9lY2D4zf*Y7cg?W4c$sK)u+F^HI!1B*9H~MRW2{jvvTh zc1Om9(RvIHN>OtxfV>r-L+u-)+tJp$^3ZGAfPF#@WwgIYf3}nVb^%ex{@3q6Ji(g) zHw~=c(P60J^e;Q>X5dY`=XYQNs*Bt-e{M$Kv?YE=v!eXWf1>}_q_`P=bJzYIo`Bjj z|NqVVCeF>x^fyk~t)DnI_tcvJH?`4k06V;&0RL7>H-m3VfZxGwC`IsNUi>2nZie0* zF26(JD2eu8qvj^U&3^wIK?CL9p%DJF``<*lSu?*;v{0t>pD6!XK^n@KD5igyr?`Mo L)W!Mfa0C7aDKk6y diff --git a/src/demos/zdemo_excel5.w3mi.xml b/src/demos/zdemo_excel5.w3mi.xml deleted file mode 100644 index a388f8a..0000000 --- a/src/demos/zdemo_excel5.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL5 - 05_Conditional.xlsx (ZDEMO_EXCEL5) - - - MI - ZDEMO_EXCEL5 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL5 - filename - - - MI - ZDEMO_EXCEL5 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel6.w3mi.data.xlsx b/src/demos/zdemo_excel6.w3mi.data.xlsx deleted file mode 100644 index 6ff9a2f427aa64bca3694d6259c78b7ea459511f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5855 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⪻(6a@XvcLYsyN8_o~gKN+#5$L0vueQmQfnvy7 z7kq9nZxlXpGMp|INXG*T+k;%JX&>cNlPz^)d=fO|k9U(?Rh>AN;sSA%5=$7;Sd76m zQk3lTA@79e5IcszZj{BowCybg^bl7?9_gmW|F(UX=k7N8 zo2T^NPoBHG>0N@m^U!YsYpkCH|DKNSg73Ed-{3aH6!4=*{4)gHh2Cu_zo9V1SoUA- z9-(|UbXMVFtA&lrhS^o0|smP-ul>T9uVgg1HiF5YDzXtpd DCJiy> diff --git a/src/demos/zdemo_excel6.w3mi.xml b/src/demos/zdemo_excel6.w3mi.xml deleted file mode 100644 index dafc22d..0000000 --- a/src/demos/zdemo_excel6.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL6 - 06_Formulas.xlsx (ZDEMO_EXCEL6) - - - MI - ZDEMO_EXCEL6 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL6 - filename - - - MI - ZDEMO_EXCEL6 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel7.w3mi.data.xlsx b/src/demos/zdemo_excel7.w3mi.data.xlsx deleted file mode 100644 index 1c86578c7c82fd8496d1c3989f22b3608cbb1d06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6797 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 diff --git a/src/demos/zdemo_excel7.w3mi.xml b/src/demos/zdemo_excel7.w3mi.xml deleted file mode 100644 index 56060f7..0000000 --- a/src/demos/zdemo_excel7.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL7 - 07_ConditionalAll.xlsx (ZDEMO_EXCEL7) - - - MI - ZDEMO_EXCEL7 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL7 - filename - - - MI - ZDEMO_EXCEL7 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel8.w3mi.data.xlsx b/src/demos/zdemo_excel8.w3mi.data.xlsx deleted file mode 100644 index ddd4fed3c6a3eaa420a05d4b3eb3e7d601e46db8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5932 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 diff --git a/src/demos/zdemo_excel8.w3mi.xml b/src/demos/zdemo_excel8.w3mi.xml deleted file mode 100644 index d9f1415..0000000 --- a/src/demos/zdemo_excel8.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL8 - 08_Range.xlsx (ZDEMO_EXCEL8) - - - MI - ZDEMO_EXCEL8 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL8 - filename - - - MI - ZDEMO_EXCEL8 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel9.w3mi.data.xlsx b/src/demos/zdemo_excel9.w3mi.data.xlsx deleted file mode 100644 index b51b6a03cdc8be33770627e86fc8b63a6c7740fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7915 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 L+L+pt{F43;?%dyZ diff --git a/src/demos/zdemo_excel9.w3mi.xml b/src/demos/zdemo_excel9.w3mi.xml deleted file mode 100644 index eb6616c..0000000 --- a/src/demos/zdemo_excel9.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL9 - 09_DataValidation.xlsx (ZDEMO_EXCEL9) - - - MI - ZDEMO_EXCEL9 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL9 - filename - - - MI - ZDEMO_EXCEL9 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel_comments.w3mi.data.xlsx b/src/demos/zdemo_excel_comments.w3mi.data.xlsx deleted file mode 100644 index 5a09a1addb5198c60009b736b79ac06782a6a86a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8911 zcmb7q1yt1Sw>3z|(A^EvDBa!CA>BPggLF!FcZYyLI8abfh){*LdFs!o4_xh_p`fhcp`frKf7O$4uy?hv zcQw-RbhL0WVD$h22T~N2`q(i-Yp^_{h~630ioR&i2Nq!IzvoRFtS~xhscEQNm(>q+ z635IJ{v-=DrOmy+_ft0A**x;)TqMY;qR4k{HV*EXtVb=XEt#4S?`aMIJ|pV{3K>f` z;h|^^?H=>W=mcY?3!tZ3GU7*vyAp4IMrp-xS?}|^PgSs@URa14367CbFY8wuIy8}p z)3b+)VQzOo!G3Gp>s?hG&N->w43^mQ#dKEV=6cB#$D{H7(oj5;50$r4kMz?K(sqTs z97B#iQQ}r{9(|Vb7uq9Q$jLC4U183Z9YO z*%wOH6o3&kp*MrQ)r1nIy@O}aFq2MPaL6GXVb$Zg^}3B8syMFrb^Xo=mbivhRVPwp z2Vu4Ue0SFOBY%_FFCt&#Cuq3bSHg0RGcK#s{OQQ-F!Oz411CZ!-fbu!H@Lrcg=R&s z69`H2niO6icQ6AZsr==eER?kD4Tw*Ko!TOX<|uWW_~-RR+L?>yv^9==IW~9YuvkwaeK5RPs$OPp~32k zC88wUqM-N-zGF75zE+j@v&-y$^n9r-f*LNy>$;hH0%2MDOKNYip zS$S}cw)HN|z$-J@p^^k##Wkc}XxGsSLXh!xpA0O_C4}Z=l2X2-liR~59cA4P|Cqo% z*Wk^thnlXYS;>-3uWO`ycF~L>J6%M@i`O=GTG9gBcs+^Df-Ay#3R}axiG6xG{v?Wg z!SBi6RHTh!zI+H%WEdzY3lmnSI=SSWIypjSB74Q}Bs};98#1hF^D+8~{4zl^Hil zF|%BJ@`sdjw82BD;cq4B2u5NQFzNj$XhW4W71G&7tR`gMX zvt4b_MHUqii|BDsL9im+@f*{Eln^=2)R20_pga^)ct#$3A#J*R9IhDKsV#}1ZE7?Y zvypajYsbM#tsVxMLk0ml5Rj>uV$Em47)g}DLmSxF)l8nHm(dhNppWc{fVHX6UqXp; zsWzsW-yN<8KWC=T>C-2?X2H}hE+PiLK1^~V_Nhwst3XsT>tv3UDu1%|gSM^i6&y#D zPY?ICT={3BlcepoY382&mU-uNz(!5(9be?fe zz;yz7mHf^=8p_Ktui8-q7V9Lk^5Qk(mdM=R*j2v8KsN*W^L(j3Fl^0s!_Lq0y4mqk zUJ6~rTo;rv?Np^wwwc9E(`$|ORgeUt<7fHJzKT7Nc&OYG)$M`hG_8xDAyR89#kZfn zYiqT<_Uls!k~nme=*NPzHNiI{C(zT(3dgtFLkR^7W?83B#2}! zaPjrHp!;v42iBRs??VXYg=7E`a_%rbFe}_wSeRmEpHmu=Xnl+sFOUCQNHwLDf~@llUs_} zEBCfMn=1rqBcJEkG8(-#H%mIm$3{Smwrf-yNBM z@yXv}UMz>|N1nUgN4ytv1#wmpsV~)wMb+ePxf|nP;871kJ5d*w$wEPJy2flPZ${=! z4g&l_R1>L_@N!!9=HU%UDH2B3ay*7MSL9kXUz=_**f2KdA4{vz={043|HK}S!YrmS{(>-0tfEG+ z5{@J`WiEX-^W5tV9!zPq1f`bzirSa(G9!&h;Cp)T`^jT96`oS{!=h|}Wz1n*dKC1R z3C#Gex2_0>ml!Ka)e@qzT+^=(u7;{WMinXIlGO>Hwg#`PDBocqT8`_-h9#-huKZle z$x-ufm@@h*y`pM0`}F)P)MZzFqpC^g%Idc%y;>p-eO*`d_CBq?b*|egysYTRYqD%Z!i={(L&SVb-tIX^E(~+S3y+XjVg3yEU z>y}lu?uI;fzZ7rSW(@0(1MzH(5{q6WUtF?fn@mXPszXUO2#|L8`Q7d72+E{P@uyYN zTE;a4g5gM@aQS)VvA@CsrKtPe&gh^SDJ5~_=(Eh8zh*X-aD{DK5T3#aha(w5JXk;H z!&v68rm(EsG*&7N02;O=u5yipzroTI%iUjR37{r^g{$~Z`2J^uNcY{s)#eYLNpe4v z9l-J3bsv2<7~D#l%zt_KL8e>C^X%}gvj6?J0)Pzmoip^0Kx9ROje(hCBSGK84v*{I zt-GY88<8AA4@c*FnW*(925$SNNrFX-&t6G(I?;O{ihic$-THUX_FWQ%2`QdYBZ}C1m$r6n|W72j8;#cUOZuSu1!Zmp(`u%(S2Dn*kkG za==N@>G3dp^w!G51J=T<$vnYznal`LU-WgZU=t+w)mVyXY`NuV@tucci z(%A9=<~7KXeF?wjC$SgEN86268cian2Ghh`=%}c~3~uzy_aenBDB(7`Wiy7==kps7 zCwp(WIxW9_UhvYYIF0Q{lh7*^y0oAQfO@1`;BRYPbZ5zY1Tx+m80>CrBw#n=)2rJr zpzwYL>F^FdnIHrOF*lD(xOy2*d?H-pG#`txv0wjgc%z>~**En(F~nw

        wbTDkmZ* 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 - - - - ZDEMO_EXCEL_COMMENTS - Comments.xlsx (ZDEMO_EXCEL_COMMENTS) - - - MI - ZDEMO_EXCEL_COMMENTS - fileextension - .xlsx - - - MI - ZDEMO_EXCEL_COMMENTS - filename - - - MI - ZDEMO_EXCEL_COMMENTS - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel_template.w3mi.data.xlsx b/src/demos/zdemo_excel_template.w3mi.data.xlsx deleted file mode 100644 index d4e57b4d306ba9beadf965052eff06268c966932..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11114 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 - - - - ZDEMO_EXCEL_TEMPLATE - ZDEMO_EXCEL_TEMPLATE - - - MI - ZDEMO_EXCEL_TEMPLATE - fileextension - .xlsx - - - MI - ZDEMO_EXCEL_TEMPLATE - filename - ZABAP2XLSX_EXAMPLE.xlsx - - - MI - ZDEMO_EXCEL_TEMPLATE - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/ztest_excel_image_header.w3mi.data.xlsx b/src/demos/ztest_excel_image_header.w3mi.data.xlsx deleted file mode 100644 index 4fc52b4217d83b9b9e424e2d93160eefdbb99dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15698 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 - - - - ZTEST_EXCEL_IMAGE_HEADER - Image_Header_Footer.xlsx (ZTEST_EXCEL_IMAGE_HEADER) - - - MI - ZTEST_EXCEL_IMAGE_HEADER - fileextension - .xlsx - - - MI - ZTEST_EXCEL_IMAGE_HEADER - filename - - - MI - ZTEST_EXCEL_IMAGE_HEADER - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - From 7b7984373c144517ad97272b9506a99bf0e518f3 Mon Sep 17 00:00:00 2001 From: Gregor Wolf Date: Sat, 23 Apr 2022 13:33:56 +0200 Subject: [PATCH 11/33] Fix #1011 exception ZCX_EXCEL is not caught (#1016) * Fix #1011 exception ZCX_EXCEL is not caught * fix uncaught exception in test class * activate uncaught_exception check Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> --- abaplint.json | 2 +- src/zcl_excel_reader_huge_file.clas.abap | 7 +- ...cel_reader_huge_file.clas.testclasses.abap | 114 ++++++++++++------ 3 files changed, 85 insertions(+), 38 deletions(-) diff --git a/abaplint.json b/abaplint.json index 3d76aa9..5a128c6 100644 --- a/abaplint.json +++ b/abaplint.json @@ -36,7 +36,7 @@ "prefer_raise_exception_new": true, "select_add_order_by": false, "select_performance": false, - "uncaught_exception": false, + "uncaught_exception": true, "unsecure_fae": false, "use_class_based_exceptions": false, "call_transaction_authority_check": true, diff --git a/src/zcl_excel_reader_huge_file.clas.abap b/src/zcl_excel_reader_huge_file.clas.abap index 714402e..3c870a1 100644 --- a/src/zcl_excel_reader_huge_file.clas.abap +++ b/src/zcl_excel_reader_huge_file.clas.abap @@ -54,7 +54,8 @@ CLASS zcl_excel_reader_huge_file DEFINITION RETURNING VALUE(es_cell) TYPE t_cell RAISING - lcx_not_found . + lcx_not_found + zcx_excel. METHODS read_shared_strings IMPORTING !io_reader TYPE REF TO if_sxml_reader @@ -64,7 +65,9 @@ CLASS zcl_excel_reader_huge_file DEFINITION IMPORTING !iv_coord TYPE string RETURNING - VALUE(es_coord) TYPE t_cell_coord . + VALUE(es_coord) TYPE t_cell_coord + RAISING + zcx_excel. METHODS put_cell_to_worksheet IMPORTING !io_worksheet TYPE REF TO zcl_excel_worksheet diff --git a/src/zcl_excel_reader_huge_file.clas.testclasses.abap b/src/zcl_excel_reader_huge_file.clas.testclasses.abap index d06f54a..9382026 100644 --- a/src/zcl_excel_reader_huge_file.clas.testclasses.abap +++ b/src/zcl_excel_reader_huge_file.clas.testclasses.abap @@ -40,18 +40,27 @@ CLASS lcl_test IMPLEMENTATION. * METHOD test_number. - DATA lo_reader TYPE REF TO if_sxml_reader. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string. lo_reader = get_reader( `17` ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `17` ). - assert_datatype_equals( `n` ). + TRY. + out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). + assert_value_equals( `17` ). + assert_datatype_equals( `n` ). + CATCH lcx_not_found INTO lo_ex. + lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger + cl_abap_unit_assert=>fail( lv_text ). + ENDTRY. ENDMETHOD. "test_shared_string * METHOD test_shared_string. - DATA lo_reader TYPE REF TO if_sxml_reader. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string. DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string. ls_shared_string-value = `Test1`. APPEND ls_shared_string TO out->shared_strings. @@ -60,13 +69,17 @@ CLASS lcl_test IMPLEMENTATION. lo_reader = get_reader( `1` ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Test2` ). - assert_datatype_equals( `s` ). + TRY. + out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). + assert_value_equals( `Test2` ). + assert_datatype_equals( `s` ). + CATCH lcx_not_found INTO lo_ex. + lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger + cl_abap_unit_assert=>fail( lv_text ). + ENDTRY. ENDMETHOD. "test_shared_string * METHOD test_shared_string_missing. - DATA: lo_reader TYPE REF TO if_sxml_reader, lo_ex TYPE REF TO lcx_not_found, lv_text TYPE string. @@ -87,43 +100,65 @@ CLASS lcl_test IMPLEMENTATION. ENDMETHOD. * METHOD test_inline_string. - DATA lo_reader TYPE REF TO if_sxml_reader. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string. lo_reader = get_reader( `Alpha` ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `Alpha` ). - assert_datatype_equals( `inlineStr` ). + TRY. + out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). + assert_value_equals( `Alpha` ). + assert_datatype_equals( `inlineStr` ). + CATCH lcx_not_found INTO lo_ex. + lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger + cl_abap_unit_assert=>fail( lv_text ). + ENDTRY. ENDMETHOD. "test_inline_string * METHOD test_boolean. - DATA lo_reader TYPE REF TO if_sxml_reader. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string. lo_reader = get_reader( `1` ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_value_equals( `1` ). - assert_datatype_equals( `b` ). + TRY. + out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). + assert_value_equals( `1` ). + assert_datatype_equals( `b` ). + CATCH lcx_not_found INTO lo_ex. + lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger + cl_abap_unit_assert=>fail( lv_text ). + ENDTRY. ENDMETHOD. "test_boolean * METHOD test_formula. - DATA lo_reader TYPE REF TO if_sxml_reader. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string. lo_reader = get_reader( `A2*A2` ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - assert_formula_equals( `A2*A2` ). - assert_datatype_equals( `n` ). + TRY. + out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). + assert_formula_equals( `A2*A2` ). + assert_datatype_equals( `n` ). + CATCH lcx_not_found INTO lo_ex. + lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger + cl_abap_unit_assert=>fail( lv_text ). + ENDTRY. ENDMETHOD. "test_formula * METHOD test_empty_cells. * There is no need to store an empty cell in the ABAP worksheet structure - - DATA: lo_reader TYPE REF TO if_sxml_reader. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string. DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string. ls_shared_string-value = ``. APPEND ls_shared_string TO out->shared_strings. @@ -135,20 +170,25 @@ CLASS lcl_test IMPLEMENTATION. `1` ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). - assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). + TRY. + out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). + assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ). + assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). + assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). + CATCH lcx_not_found INTO lo_ex. + lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger + cl_abap_unit_assert=>fail( lv_text ). + ENDTRY. ENDMETHOD. * METHOD test_style. - DATA: - lo_reader TYPE REF TO if_sxml_reader, - lo_style TYPE REF TO zcl_excel_style, - lv_guid TYPE zexcel_cell_style. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string, + lo_style TYPE REF TO zcl_excel_style, + lv_guid TYPE zexcel_cell_style. CREATE OBJECT lo_style. APPEND lo_style TO out->styles. lv_guid = lo_style->get_guid( ). @@ -156,9 +196,13 @@ CLASS lcl_test IMPLEMENTATION. lo_reader = get_reader( `18` ). - out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - - assert_style_equals( lv_guid ). + TRY. + out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). + assert_style_equals( lv_guid ). + CATCH lcx_not_found INTO lo_ex. + lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger + cl_abap_unit_assert=>fail( lv_text ). + ENDTRY. ENDMETHOD. "test_style From 177f30326c7cb9fc130a94b60f8bc7f2217274f6 Mon Sep 17 00:00:00 2001 From: Gregor Wolf Date: Wed, 27 Apr 2022 11:56:37 +0200 Subject: [PATCH 12/33] replace pass by value with pass by reference (#1022) --- src/zcl_excel_graph.clas.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zcl_excel_graph.clas.abap b/src/zcl_excel_graph.clas.abap index 39272ea..e5f885f 100644 --- a/src/zcl_excel_graph.clas.abap +++ b/src/zcl_excel_graph.clas.abap @@ -320,7 +320,7 @@ CLASS zcl_excel_graph DEFINITION !ip_value TYPE c . METHODS set_title IMPORTING - VALUE(ip_value) TYPE string . + ip_value TYPE string . PROTECTED SECTION. *"* protected components of class ZCL_EXCEL_GRAPH *"* do not include other source files here!!! From d2a13013295c534a5e8ecd439d18b19833eeeabe Mon Sep 17 00:00:00 2001 From: Tom Schmelzer <30869493+schmelto@users.noreply.github.com> Date: Thu, 28 Apr 2022 11:27:24 +0200 Subject: [PATCH 13/33] docs: add missing full stop (#1023) --- docs/abapGit-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/abapGit-installation.md b/docs/abapGit-installation.md index 15b7ce7..14b3a48 100644 --- a/docs/abapGit-installation.md +++ b/docs/abapGit-installation.md @@ -4,7 +4,7 @@ ## Procedure -Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xlsx* if you just want to test. If you want to transport abap2xlsx to production then use a non local package, for example ZABAP2XLSX. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo* +Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xlsx* if you just want to test. If you want to transport abap2xlsx to production then use a non local package, for example ZABAP2XLSX. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo*. ![abapGit New Online Repository](new-online-abap2xlsx.png) From 387d8b103cf2b25ab6aced6edeea61f583c57479 Mon Sep 17 00:00:00 2001 From: Abo Date: Mon, 9 May 2022 08:55:53 +0200 Subject: [PATCH 14/33] remove unused subpackage definition (#1024) ( hopefully last cleanup for #861 ) --- src/demos/package.devc.xml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 src/demos/package.devc.xml diff --git a/src/demos/package.devc.xml b/src/demos/package.devc.xml deleted file mode 100644 index 41982c3..0000000 --- a/src/demos/package.devc.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - Spreadsheet Demo Reports - - - - From a1053e84e104dd9ab93fb0d30ddb429414567944 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Mon, 16 May 2022 08:35:27 +0200 Subject: [PATCH 15/33] add steampunk linting setup (#925) * add steampunk linting setup * Update abaplint-app.json * update to 2202 api Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> --- abaplint-app.json | 11 +++++++++ abaplint-steampunk.json | 54 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 abaplint-app.json create mode 100644 abaplint-steampunk.json diff --git a/abaplint-app.json b/abaplint-app.json new file mode 100644 index 0000000..4520ac7 --- /dev/null +++ b/abaplint-app.json @@ -0,0 +1,11 @@ +{ + "configurations": { + "default": { + "filename": "./abaplint.json" + }, + + "steampunk": { + "filename": "./abaplint-steampunk.json" + } + } +} diff --git a/abaplint-steampunk.json b/abaplint-steampunk.json new file mode 100644 index 0000000..b64bd6a --- /dev/null +++ b/abaplint-steampunk.json @@ -0,0 +1,54 @@ +{ + "global": { + "files": "/src/**/*.*", + "noIssues": ["/demos/", "/not_cloud/"] + }, + "dependencies": [ + { + "url": "https://github.com/abapedia/steampunk-2202-api", + "files": "/src/**/*.*" + } + ], + "syntax": { + "version": "Cloud", + "errorNamespace": "." + }, + "rules": { + "begin_end_names": { + "severity": "Warning" + }, + "check_ddic": { + "severity": "Warning" + }, + "check_include": { + "severity": "Warning" + }, + "check_syntax": { + "severity": "Warning" + }, + "global_class": { + "severity": "Warning" + }, + "implement_methods": { + "severity": "Warning" + }, + "method_implemented_twice": { + "severity": "Warning" + }, + "parser_error": { + "severity": "Warning" + }, + "parser_missing_space": { + "severity": "Warning" + }, + "superclass_final": { + "severity": "Warning" + }, + "unknown_types": { + "severity": "Warning" + }, + "xml_consistency": { + "severity": "Warning" + } + } +} \ No newline at end of file From b669bdf89358cd42e3229dbcf2f614be7ab8e1f6 Mon Sep 17 00:00:00 2001 From: pksingh78 <102946017+pksingh78@users.noreply.github.com> Date: Thu, 19 May 2022 15:17:35 +0530 Subject: [PATCH 16/33] Replace Pass by value with reference (#1027) #1012 --- src/zcl_excel_reader_2007.clas.abap | 46 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index df7f72b..5c55965 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -282,32 +282,32 @@ CLASS zcl_excel_reader_2007 DEFINITION VALUE(rv_style_guid) TYPE zexcel_cell_style . METHODS load_theme IMPORTING - VALUE(iv_path) TYPE string - !ip_excel TYPE REF TO zcl_excel + iv_path TYPE string + !ip_excel TYPE REF TO zcl_excel RAISING zcx_excel . CONSTANTS: BEGIN OF namespace, - x14ac TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac', - vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader - c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', - xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', - mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', - image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - printer_settings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - theme TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - relationships TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - main TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', + x14ac TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac', + vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader + c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', + a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', + xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', + mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', + r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', + chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', + drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', + hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', + image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', + office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', + printer_settings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', + shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', + styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', + theme TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', + worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', + relationships TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', + core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', + main TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', END OF namespace. PRIVATE SECTION. @@ -4165,7 +4165,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. *--------------------------------------------------------------------* * §3 Cycle through the Relationship Tags and use the ones we need *--------------------------------------------------------------------* - lo_node ?= lo_rels->find_from_name_ns( name = 'Relationship' uri = namespace-relationships ). "#EC NOTEXT + lo_node ?= lo_rels->find_from_name_ns( name = 'Relationship' uri = namespace-relationships ). "#EC NOTEXT WHILE lo_node IS BOUND. fill_struct_from_attributes( EXPORTING From ffbc9153bb10eb98e6d9187ed8351b83be0d6f89 Mon Sep 17 00:00:00 2001 From: pksingh78 <102946017+pksingh78@users.noreply.github.com> Date: Thu, 19 May 2022 16:55:48 +0530 Subject: [PATCH 17/33] ReplacePass by value with reference-1 (#1028) #1012-1 --- src/zcl_excel_theme.clas.abap | 8 ++++---- src/zcl_excel_theme_color_scheme.clas.abap | 8 ++++---- src/zcl_excel_theme_font_scheme.clas.abap | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/zcl_excel_theme.clas.abap b/src/zcl_excel_theme.clas.abap index 278fa03..75c3323 100644 --- a/src/zcl_excel_theme.clas.abap +++ b/src/zcl_excel_theme.clas.abap @@ -30,12 +30,12 @@ CLASS zcl_excel_theme DEFINITION VALUE(iv_syscolorlast) TYPE zcl_excel_theme_color_scheme=>t_srgb OPTIONAL . METHODS set_color_scheme_name IMPORTING - VALUE(iv_name) TYPE string . + iv_name TYPE string . METHODS set_font IMPORTING - VALUE(iv_type) TYPE string - VALUE(iv_script) TYPE string - VALUE(iv_typeface) TYPE string . + iv_type TYPE string + iv_script TYPE string + iv_typeface TYPE string . METHODS set_latin_font IMPORTING VALUE(iv_type) TYPE string diff --git a/src/zcl_excel_theme_color_scheme.clas.abap b/src/zcl_excel_theme_color_scheme.clas.abap index ade6ee9..c5b2222 100644 --- a/src/zcl_excel_theme_color_scheme.clas.abap +++ b/src/zcl_excel_theme_color_scheme.clas.abap @@ -44,10 +44,10 @@ CLASS zcl_excel_theme_color_scheme DEFINITION !io_color_scheme TYPE REF TO if_ixml_element . METHODS set_color IMPORTING - VALUE(iv_type) TYPE string - VALUE(iv_srgb) TYPE t_srgb OPTIONAL - VALUE(iv_syscolorname) TYPE string OPTIONAL - VALUE(iv_syscolorlast) TYPE t_srgb . + iv_type TYPE string + iv_srgb TYPE t_srgb OPTIONAL + iv_syscolorname TYPE string OPTIONAL + iv_syscolorlast TYPE t_srgb . METHODS build_xml IMPORTING !io_document TYPE REF TO if_ixml_document . diff --git a/src/zcl_excel_theme_font_scheme.clas.abap b/src/zcl_excel_theme_font_scheme.clas.abap index 4b939d3..15313d8 100644 --- a/src/zcl_excel_theme_font_scheme.clas.abap +++ b/src/zcl_excel_theme_font_scheme.clas.abap @@ -52,7 +52,7 @@ CLASS zcl_excel_theme_font_scheme DEFINITION !io_font_scheme TYPE REF TO if_ixml_element . METHODS set_name IMPORTING - VALUE(iv_name) TYPE string . + iv_name TYPE string . METHODS build_xml IMPORTING !io_document TYPE REF TO if_ixml_document . From e4141e977baa1a6b2c0f0e18e09c1f8b5b1c7913 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sat, 21 May 2022 12:37:50 +0200 Subject: [PATCH 18/33] Create publishing-a-new-release.md (#966) * Create publishing-a-new-release.md Co-authored-by: Abo --- docs/contributing/publishing-a-new-release.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docs/contributing/publishing-a-new-release.md diff --git a/docs/contributing/publishing-a-new-release.md b/docs/contributing/publishing-a-new-release.md new file mode 100644 index 0000000..0d08ae3 --- /dev/null +++ b/docs/contributing/publishing-a-new-release.md @@ -0,0 +1,37 @@ +# Publishing a new release + +Let's create a release from time to time, every 1 or 2 months for instance, to contain enough changes, but not too much. + +Below are the notes taken while publishing the release `7.15.0`. + +Version numbering is based on [Semantic Versioning 2.0.0](https://semver.org/): +- `7`: a major release. NB: it will probably not change as we don't want to "make incompatible API changes". +- `15`: a minor release +- `0`: patch level (bug fixes) + +Create a branch for this new release and change these files: +- `changelog.txt` + - Type from scratch the list of commits since the last version, and add as prefix for each commit: + - `+`: new feature + - `*`: bug fix + - `!`: feature modification + - `-`: feature removed +- `zcl_excel_version` + - Indicate the new version number (NB: the abap2xlsx APACK class uses this version number) +- Restart abapGit to consider the latest version of the changed APACK class, to make the file `.apack-manifest.xml` contain this latest version + - Push the changes to the repository + +With GitHub Desktop (or any Git console or Git user interface), [add the tag](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/managing-commits/managing-tags) `7.15.0` to this branch. + +Do a pull request. + +Wait for approval/commit(s) merged into the master branch. + +Now [create the release in GitHub](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release): +- Click "Releases" +- Click "Draft a new release" +- Click "Choose a tag" +- Type the title, click "Auto-generate release notes" and click "Prview" to verify +- Click "Publish release" +- It's done, zip and tar.gz files are automatically assigned to the release +- The new release appears in the Code home page From 781edaf1d6965fcb5aba0ac4ffdc485f498a4804 Mon Sep 17 00:00:00 2001 From: Abo Date: Sat, 28 May 2022 12:41:58 +0200 Subject: [PATCH 19/33] Remove apack (#1029) * remove ZCL_EXCEL_APACK * remove changelog.txt * remove .apack-manifest.xml * Update publishing-a-new-release.md --- .apack-manifest.xml | 12 -- changelog.txt | 165 ------------------ docs/contributing/publishing-a-new-release.md | 22 +-- src/zcl_excel_apack.clas.abap | 32 ---- src/zcl_excel_apack.clas.xml | 16 -- 5 files changed, 8 insertions(+), 239 deletions(-) delete mode 100644 .apack-manifest.xml delete mode 100644 changelog.txt delete mode 100644 src/zcl_excel_apack.clas.abap delete mode 100644 src/zcl_excel_apack.clas.xml diff --git a/.apack-manifest.xml b/.apack-manifest.xml deleted file mode 100644 index 440fe83..0000000 --- a/.apack-manifest.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - github.com/abap2xlsx/abap2xlsx - abap2xlsx - 7.15.0 - abapGit - https://github.com/abap2xlsx/abap2xlsx.git - - - diff --git a/changelog.txt b/changelog.txt deleted file mode 100644 index da181f6..0000000 --- a/changelog.txt +++ /dev/null @@ -1,165 +0,0 @@ -abapGit changelog -================= - -Legend ------- -* : fixed -! : changed -+ : added -- : removed - -2022-01-08 v7.15.0 ------------------- -! Refactor ABAP Cloud: change REFRESH to CLEAR -* Prevent row height zero -+ New parameter ip_columnrow in SET_CELL and other methods -! Refactor ABAP Cloud: remove use of DTEL SYLANGU and DTEL GUID_16 -! Refactor ABAP Cloud: remove use of cl_abap_conv_out_ce=>uccpi -! Refactor ABAP Cloud: move converter classes to not_cloud package -+ Check demo regressions -! Refactor ABAP Cloud: change FLOAT to F -! Refactor ABAP Cloud: remove TYPE-POOLS statements -! Refactor ABAP Cloud: change SYTABIX to I -! Lint rule to reject commented code / commented code removed -+ Add column for photographer in zdemo_calendar -! Lint rule to reject code not in keyword_case upper -! Refactor ABAP Cloud: use new collection classes -+ Allow more than 255 sheets per workbook -! Refactor ABAP Cloud: Domain for ZEXCEL_SHEET_TITLE -* Demo WebDynpro: ICF, button text, MIME type -! Refactor ABAP Cloud: ddic, fix UUID and GUID_16 -* Typo in code: hasehd -> hashed -! Refactor ABAP Cloud: MOVE statements -! Refactor ABAP Cloud: remove DTEL INTTYPE -* After BIND_TABLE no columns in object -+ Change_area_style (same as change_cell_style, but for area) -+ Customizable demo 25 + backend in demo 37 -* Reflect new abap2xlsx project URL -* Fix enhancement categories of several structures -* Fix links after org. move -! Refactor method change_cell_style in zcl_excel_worksheet -* Correcting broken links after moving of repo -* Reader fails for workbook with chart -+ Worksheet columns right-to-left -* README.md, update urls -* Huge writer error height/hight and fit to page -! Refactor ABAP Cloud: remove use of DOMA INT2 -! Refactor ABAP Cloud: remove use of DTEL DSTRING -* Huge reader reading cells multiple styles -! Pretty print -* Add exception handling -! Split convert_column2alpha -+ SET_AREA/SET_AREA_FORMULA: set value or formula for whole area instea… … - -2021-11-11 v7.14.0 ------------------- -+ changelog -! Refactor ABAP Cloud: column width based on SAP font -! Refactor ABAP Cloud: DDIC references changed -! Refactor ABAP Cloud: collection classes -! Refactor: split unit tests into one method per case -! pretty print zcl_excel_worksheet -* SET_CELL_FORMULA: set formula even if cell was uninitialized -! Refactor: replace all macros with methods -+ Add ability to generate report from template -* Read range of print titles -+ Multiple Styles in One Cell ("rich text format") -+ Bind ALV with non-displayed SALV data -+ new feature "Ignored Errors" -* Ignore invalid Excel Table names -+ new feature "Calculated Columns" -* better error message for ZDEMO_EXCEL25 - -2021-10-11 v7.13.0 ------------------- -! zcl_excel_common: refactor unit tests -! Refactor: replace zcl_excel_aunit with cl_abap_unit_assert -! Refactor ABAP Cloud: DDIC references changed -* clear Style exporting parameter in GET_CELL -+ Conditional Formatting for Cells that "Begin With" and more -- Delete unused customui objects -* ZDEMO_EXCEL37 incorrect screen field labels -* SHIFT_FORMULA -! Refactor: replace macro with method in zcl_excel_style_number_format -* autofilter messed up if several sheets -* autofilter + filtering value, then read it, the filtering value is lost -* autofilter on row 2 is incorrectly set on row 1 -! Refactor: change EXIT to RETURN, where applicable -! Refactor: zcl_excel_common: refactor STATICS to CLASS-DATA -* Writer: trailing spaces of cell values lost -! Refactor: move zexcel_s_org_rel to demos -! update to latest abapGit format -! abaplint to not change sy fields anymore -! Refactor: Do not change sy fields anymore -! abapGit diff says zdemo_calendar_classes has changed -! update abaplint configuration to latest -! Refactor: Move non-Cloud code to separate package (#795) … -* Reader: empty Excel date -> ABAP 00000000 - -2021-09-11 v7.12.0 ------------------- -! First draft of the contributing guidelines -! Refactor: remove usage of CHAR07 domain - -2021-08-11 v7.11.0 ------------------- -! Pretty print on all source code -! Create coding-guidelines.md -! remove usage of CHAR08 DTEL -! remove usage of CHAR10 domain -! remove usage of OS_BOOLEAN - -2021-07-11 v7.10.0 ------------------- -! remove unused DOMA -! Reader: wrong worksheet dimension -* GET_TABLE: support fields of type date -* Vietnamese, Emoji and other characters not rendered in old SAP versions -* SET_TABLE: support table headers with newline -* SET_CELL: support values with wildcard format like `_x0041_` - -2021-06-11 v7.9.0 ------------------- -! update linter config to latest -+ Remove 15 chars. limit at encrypt password -+ Reader to read range of hyperlinks and new method SET_AREA_HYPERLINK -* Vietnamese, Emoji and other characters not rendered -* Update of ZDEMO_EXCEL31 to use CALCULATE_COLUMN_WIDTHS -! remove CHAR01 - -2021-05-11 v7.8.0 ------------------- -! remove "BOOLEAN" domain -! replace messages with ones from ZABAP2XLSX message class - -2021-04-11 v7.7.0 ------------------- -! remove CHAR_02 domain -! abapGit format update - -2021-03-11 v7.6.0 ------------------- -! AUnit warning zcl excel reader huge file "# au > "#au -! Remove doma ZEXCEL_BOOLE01 - -2021-02-11 v7.5.0 ------------------- -+ Possibility to get the fieldcatalog with mandt -! cleanup types in zif_excel_book_protection - -2021-01-11 v7.4.0 ------------------- -! warning about SAPLink in documentation, and replace obsolete links in zangry_birds and zdemo_excel1 -! remove XFELD usage -! Dynamic prefill of date in zdemo_calendar - -2020-12-11 v7.3.0 ------------------- -* Fix in ZDEMO_EXCEL11: Field-symbol usage -! Update abapGit-installation.md - -2020-11-11 v7.2.0 ------------------- -! Improve Documentaiton -! Fix package errors -+ Feature: Enable custom converters diff --git a/docs/contributing/publishing-a-new-release.md b/docs/contributing/publishing-a-new-release.md index 0d08ae3..269d952 100644 --- a/docs/contributing/publishing-a-new-release.md +++ b/docs/contributing/publishing-a-new-release.md @@ -9,17 +9,7 @@ Version numbering is based on [Semantic Versioning 2.0.0](https://semver.org/): - `15`: a minor release - `0`: patch level (bug fixes) -Create a branch for this new release and change these files: -- `changelog.txt` - - Type from scratch the list of commits since the last version, and add as prefix for each commit: - - `+`: new feature - - `*`: bug fix - - `!`: feature modification - - `-`: feature removed -- `zcl_excel_version` - - Indicate the new version number (NB: the abap2xlsx APACK class uses this version number) -- Restart abapGit to consider the latest version of the changed APACK class, to make the file `.apack-manifest.xml` contain this latest version - - Push the changes to the repository +Create a branch for this new release, change `zcl_excel_version` to indicate the new version number and push the changes to the repository With GitHub Desktop (or any Git console or Git user interface), [add the tag](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/managing-commits/managing-tags) `7.15.0` to this branch. @@ -31,7 +21,11 @@ Now [create the release in GitHub](https://docs.github.com/en/repositories/relea - Click "Releases" - Click "Draft a new release" - Click "Choose a tag" -- Type the title, click "Auto-generate release notes" and click "Prview" to verify -- Click "Publish release" +- Type the title, click "Auto-generate release notes" and click "Preview" to verify; you should have a list with the following items, edit as required: + - `+`: new feature + - `*`: bug fix + - `!`: feature modification + - `-`: feature removed +- Click "Publish release" - It's done, zip and tar.gz files are automatically assigned to the release -- The new release appears in the Code home page +- The new release appears in the Code home page, with the changelog in the release page itself. diff --git a/src/zcl_excel_apack.clas.abap b/src/zcl_excel_apack.clas.abap deleted file mode 100644 index aa47c14..0000000 --- a/src/zcl_excel_apack.clas.abap +++ /dev/null @@ -1,32 +0,0 @@ -CLASS zcl_excel_apack DEFINITION - PUBLIC - FINAL - CREATE PUBLIC . - - PUBLIC SECTION. - - INTERFACES if_apack_manifest. - - METHODS: constructor. - - ALIASES descriptor FOR if_apack_manifest~descriptor. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS zcl_excel_apack IMPLEMENTATION. - - METHOD constructor. - - descriptor-group_id = 'github.com/abap2xlsx/abap2xlsx'. - descriptor-artifact_id = 'abap2xlsx'. - descriptor-version = zcl_excel=>version. - descriptor-repository_type = 'abapGit'. - descriptor-git_url = 'https://github.com/abap2xlsx/abap2xlsx.git'. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/zcl_excel_apack.clas.xml b/src/zcl_excel_apack.clas.xml deleted file mode 100644 index f48bc93..0000000 --- a/src/zcl_excel_apack.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - ZCL_EXCEL_APACK - E - abap2xlsx version and dependencies - 1 - X - X - X - - - - From b04f6d3c17d6f2312776eb92162eeca810e40916 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 16 Jun 2022 11:15:01 +0200 Subject: [PATCH 20/33] replace use of ixml_iid_element (#1036) use of typegroup IXML is not permitted in Steampunk #632 --- src/zcl_excel_drawing.clas.abap | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/src/zcl_excel_drawing.clas.abap b/src/zcl_excel_drawing.clas.abap index ae5131e..2999649 100644 --- a/src/zcl_excel_drawing.clas.abap +++ b/src/zcl_excel_drawing.clas.abap @@ -4,15 +4,6 @@ CLASS zcl_excel_drawing DEFINITION CREATE PUBLIC . PUBLIC SECTION. -*"* public components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! -*"* protected components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! -*"* protected components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! -*"* protected components of class ZCL_EXCEL_DRAWING -*"* do not include other source files here!!! - CONSTANTS c_graph_pie TYPE zexcel_graph_type VALUE 1. "#EC NOTEXT CONSTANTS c_graph_line TYPE zexcel_graph_type VALUE 2. "#EC NOTEXT CONSTANTS c_graph_bars TYPE zexcel_graph_type VALUE 0. "#EC NOTEXT @@ -150,6 +141,8 @@ CLASS zcl_excel_drawing DEFINITION DATA from_loc TYPE zexcel_drawing_location . DATA to_loc TYPE zexcel_drawing_location . DATA size TYPE zexcel_drawing_size . + CONSTANTS c_ixml_iid_element TYPE i VALUE 130. + ENDCLASS. @@ -465,7 +458,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. rval = lo_iterator. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. WHILE lo_node IS BOUND. node3 ?= node2->find_from_name_ns( name = 'idx' uri = namespace-c ). @@ -501,7 +494,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. ip_sername = lv_sername. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. ENDWHILE. "note: numCache avoided @@ -541,7 +534,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. rval = lo_iterator. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. WHILE lo_node IS BOUND. zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). @@ -657,7 +650,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. ENDIF. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. ENDWHILE. @@ -679,7 +672,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. rval = lo_iterator. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. WHILE lo_node IS BOUND. node3 ?= node2->find_from_name_ns( name = 'idx' uri = namespace-c ). @@ -711,7 +704,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. ip_sername = lv_sername. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. ENDWHILE. @@ -761,7 +754,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. rval = lo_iterator. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. WHILE lo_node IS BOUND. node3 ?= node2->find_from_name_ns( name = 'idx' uri = namespace-c ). @@ -801,7 +794,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. ip_sername = lv_sername. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. ENDWHILE. "note: numCache avoided @@ -850,7 +843,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. rval = lo_iterator. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. WHILE lo_node IS BOUND. zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). @@ -962,7 +955,7 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. ENDIF. lo_node = lo_iterator->get_next( ). IF lo_node IS BOUND. - node2 ?= lo_node->query_interface( ixml_iid_element ). + node2 ?= lo_node->query_interface( c_ixml_iid_element ). ENDIF. ENDWHILE. WHEN OTHERS. From d161a757a7a5ecf85b2bcca5cfd69128434776f8 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 16 Jun 2022 11:17:23 +0200 Subject: [PATCH 21/33] replace use of DTEL FIELDNAME (#1035) adds new custom DTEL ZEXCEL_FIELDNAME Co-authored-by: Gregor Wolf --- src/zexcel_fieldname.dtel.xml | 24 ++++++++++++ src/zexcel_s_converter_col.tabl.xml | 2 +- src/zexcel_s_converter_fcat.tabl.xml | 58 +--------------------------- src/zexcel_s_converter_fil.tabl.xml | 2 +- src/zexcel_s_fieldcatalog.tabl.xml | 2 +- 5 files changed, 29 insertions(+), 59 deletions(-) create mode 100644 src/zexcel_fieldname.dtel.xml diff --git a/src/zexcel_fieldname.dtel.xml b/src/zexcel_fieldname.dtel.xml new file mode 100644 index 0000000..7c3536e --- /dev/null +++ b/src/zexcel_fieldname.dtel.xml @@ -0,0 +1,24 @@ + + + + + + ZEXCEL_FIELDNAME + E + 30 + 10 + 20 + 40 + Field Name + Field Name + Field Name + Field Name + Field Name + E + CHAR + 000030 + 000030 + + + + diff --git a/src/zexcel_s_converter_col.tabl.xml b/src/zexcel_s_converter_col.tabl.xml index d107fb4..15120b6 100644 --- a/src/zexcel_s_converter_col.tabl.xml +++ b/src/zexcel_s_converter_col.tabl.xml @@ -18,7 +18,7 @@ COLUMNNAME - FIELDNAME + ZEXCEL_FIELDNAME 0 E diff --git a/src/zexcel_s_converter_fcat.tabl.xml b/src/zexcel_s_converter_fcat.tabl.xml index 68e1aba..b0281b5 100644 --- a/src/zexcel_s_converter_fcat.tabl.xml +++ b/src/zexcel_s_converter_fcat.tabl.xml @@ -20,15 +20,13 @@ FIELDNAME - FIELDNAME - DD03L + ZEXCEL_FIELDNAME 0 - P E COLUMNNAME - FIELDNAME + ZEXCEL_FIELDNAME 0 E @@ -174,54 +172,6 @@ - - FIELDNAME - ZEXCEL_S_CONVERTER_FCAT - TABNAME - DD03L - TABNAME - 0001 - AS4TAB - CHAR - - - FIELDNAME - ZEXCEL_S_CONVERTER_FCAT - FIELDNAME - DD03L - FIELDNAME - 0002 - FDNAME - CHAR - - - FIELDNAME - 'A' - DD03L - AS4LOCAL - 0003 - AS4LOCAL - CHAR - - - FIELDNAME - '0000' - DD03L - AS4VERS - 0004 - AS4VERS - NUMC - - - FIELDNAME - ZEXCEL_S_CONVERTER_FCAT - POSITION - DD03L - POSITION - 0005 - AS4POS - NUMC - TABNAME ZEXCEL_S_CONVERTER_FCAT @@ -252,10 +202,6 @@ - - FIELDNAME - DD03L - TABNAME DD02L diff --git a/src/zexcel_s_converter_fil.tabl.xml b/src/zexcel_s_converter_fil.tabl.xml index c71d789..ae94959 100644 --- a/src/zexcel_s_converter_fil.tabl.xml +++ b/src/zexcel_s_converter_fil.tabl.xml @@ -18,7 +18,7 @@ COLUMNNAME - FIELDNAME + ZEXCEL_FIELDNAME 0 E diff --git a/src/zexcel_s_fieldcatalog.tabl.xml b/src/zexcel_s_fieldcatalog.tabl.xml index 12dcfb6..78dbd1f 100644 --- a/src/zexcel_s_fieldcatalog.tabl.xml +++ b/src/zexcel_s_fieldcatalog.tabl.xml @@ -19,7 +19,7 @@ FIELDNAME - FIELDNAME + ZEXCEL_FIELDNAME 0 E From a0f28d9f54bdff098cce936d4d83d572f7017a28 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 16 Jun 2022 11:18:47 +0200 Subject: [PATCH 22/33] update abaplint configuration (#1033) Co-authored-by: Gregor Wolf --- abaplint-app.json | 4 ++-- abaplint-steampunk.json | 2 +- abaplint.json | 22 +++++++++++++++++++--- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/abaplint-app.json b/abaplint-app.json index 4520ac7..b6a4313 100644 --- a/abaplint-app.json +++ b/abaplint-app.json @@ -3,9 +3,9 @@ "default": { "filename": "./abaplint.json" }, - "steampunk": { - "filename": "./abaplint-steampunk.json" + "filename": "./abaplint-steampunk.json", + "annotations": false } } } diff --git a/abaplint-steampunk.json b/abaplint-steampunk.json index b64bd6a..be127d3 100644 --- a/abaplint-steampunk.json +++ b/abaplint-steampunk.json @@ -5,7 +5,7 @@ }, "dependencies": [ { - "url": "https://github.com/abapedia/steampunk-2202-api", + "url": "https://github.com/abapedia/steampunk-2205-api", "files": "/src/**/*.*" } ], diff --git a/abaplint.json b/abaplint.json index 5a128c6..3b1b9b7 100644 --- a/abaplint.json +++ b/abaplint.json @@ -19,10 +19,27 @@ "globalMacros": [] }, "rules": { + "align_parameters": false, + "cds_legacy_view": true, + "cds_parser_error": true, + "classic_exceptions_overlap": true, + "local_testclass_consistency": true, + "no_aliases": false, + "no_chained_assignment": false, + "unnecessary_pragma": false, + "unnecessary_chaining": false, + "superfluous_value": true, + "static_call_via_instance": false, + "slow_parameter_passing": false, + "prefer_corresponding": true, + "pragma_style": true, + "omit_preceding_zeros": true, + "no_inline_in_optional_branches": false, + "nrob_consistency": true, + "no_external_form_calls": true, "constant_classes": true, "cyclic_oo": false, "many_parentheses": true, - "pragma_placement": true, "unused_ddic": true, "dangerous_statement": true, "db_operation_in_loop": false, @@ -77,6 +94,7 @@ "avoid_use": { "define": true, "describeLines": false, + "testSeams": true, "statics": false, "defaultKey": false, "break": true @@ -87,7 +105,6 @@ "check_comments": false, "check_ddic": true, "check_include": true, - "check_no_handler_pragma": true, "check_syntax": true, "check_text_elements": false, "check_transformation_exists": true, @@ -117,7 +134,6 @@ "ignoreFunctionModuleName": false }, "local_class_naming": false, - "local_testclass_location": true, "main_file_contents": true, "message_exists": false, "msag_consistency": true, From 09c1eb027ba42896b5bc21ef33bf129ff1594a1e Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 16 Jun 2022 11:34:38 +0200 Subject: [PATCH 23/33] replace use of TABFDPOS (#1034) uses LIKE instead Co-authored-by: Gregor Wolf --- src/zcl_excel_common.clas.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zcl_excel_common.clas.abap b/src/zcl_excel_common.clas.abap index 5236b98..ab317bf 100644 --- a/src/zcl_excel_common.clas.abap +++ b/src/zcl_excel_common.clas.abap @@ -701,7 +701,7 @@ CLASS zcl_excel_common IMPLEMENTATION. ls_component TYPE abap_componentdescr, lo_elemdescr TYPE REF TO cl_abap_elemdescr, ls_dfies TYPE dfies, - l_position TYPE tabfdpos. + l_position LIKE ls_dfies-position. "for DDIC structure get the info directly IF io_struct->is_ddic_type( ) = abap_true. From 000b7cf79783314c946d89eb909278c1551b2fcd Mon Sep 17 00:00:00 2001 From: Domi Bigl Date: Sat, 2 Jul 2022 10:39:46 +0200 Subject: [PATCH 24/33] fixe column freeze error (#1042) use lv_freeze_cell_column to column freeze instead of lv_freeze_cell_row --- src/zcl_excel_writer_huge_file.clas.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zcl_excel_writer_huge_file.clas.abap b/src/zcl_excel_writer_huge_file.clas.abap index 8395fa7..c63c76a 100644 --- a/src/zcl_excel_writer_huge_file.clas.abap +++ b/src/zcl_excel_writer_huge_file.clas.abap @@ -415,7 +415,7 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION. IF lv_freeze_cell_column > 1. lv_value = lv_freeze_cell_column - 1. - l_worksheet-xsplit = lv_freeze_cell_row - 1. + l_worksheet-xsplit = lv_freeze_cell_column - 1. ENDIF. lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). From 11b47ec222f54792abb077cd5a56fb0a782edd79 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Wed, 13 Jul 2022 20:28:07 +0200 Subject: [PATCH 25/33] endless loop in bind_table (#1044) Fix #1043 * endless loop in bind_table * Handle more than 100 identical texts * correct typos in comments Co-authored-by: sandraros Co-authored-by: Abo --- src/zcl_excel_worksheet.clas.abap | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index a94d403..db1837e 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -2964,14 +2964,18 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, lv_value_lowercase TYPE string, + lv_scrtext_l_initial TYPE scrtext_l, + lv_long_text TYPE string, + lv_max_length TYPE i, + lv_temp_length TYPE i, lv_syindex TYPE c LENGTH 3, lt_column_name_buffer TYPE SORTED TABLE OF string WITH UNIQUE KEY table_line. FIELD-SYMBOLS: TYPE zexcel_s_fieldcatalog, - TYPE any, - TYPE any, - TYPE any. + TYPE any, + TYPE any, + TYPE any. - " Due restrinction of new table object we cannot have two column with the same name + " Due to restrictions in new table object we cannot have two columns with the same name " Check if a column with the same name exists, if exists add a counter " If no medium description is provided we try to use small or long @@ -3008,6 +3012,8 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. -scrtext_l = 'Column'. " default value as Excel does ENDIF. + lv_scrtext_l_initial = -scrtext_l. + DESCRIBE FIELD -scrtext_l LENGTH lv_max_length IN CHARACTER MODE. DO. lv_value_lowercase = -scrtext_l. TRANSLATE lv_value_lowercase TO LOWER CASE. @@ -3017,7 +3023,14 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. EXIT. ELSE. lv_syindex = sy-index. - CONCATENATE -scrtext_l lv_syindex INTO -scrtext_l. + CONCATENATE lv_scrtext_l_initial lv_syindex INTO lv_long_text. + IF strlen( lv_long_text ) <= lv_max_length. + -scrtext_l = lv_long_text. + ELSE. + lv_temp_length = strlen( lv_scrtext_l_initial ) - 1. + lv_scrtext_l_initial = substring( val = lv_scrtext_l_initial len = lv_temp_length ). + CONCATENATE lv_scrtext_l_initial lv_syindex INTO -scrtext_l. + ENDIF. ENDIF. ENDDO. From 4ab5bbe961ab4f49ca9d777d3b57c418173335f6 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Fri, 15 Jul 2022 09:33:39 +0200 Subject: [PATCH 26/33] ZABAPGIT_STANDALONE instea of ZABAPGIT_FULL (#1047) [abapGit instructions](https://docs.abapgit.org/guide-install.html) say `create a new report named ZABAPGIT_STANDALONE (formerly ZABAPGIT_FULL)` --- docs/abapGit-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/abapGit-installation.md b/docs/abapGit-installation.md index 14b3a48..0f08dd1 100644 --- a/docs/abapGit-installation.md +++ b/docs/abapGit-installation.md @@ -4,7 +4,7 @@ ## Procedure -Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xlsx* if you just want to test. If you want to transport abap2xlsx to production then use a non local package, for example ZABAP2XLSX. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo*. +Execute abapGit using the report **ZABAPGIT_STANDALONE**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xlsx* if you just want to test. If you want to transport abap2xlsx to production then use a non local package, for example ZABAP2XLSX. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo*. ![abapGit New Online Repository](new-online-abap2xlsx.png) From c6e5ad6ee63429c4ee16ba796738c7ee46c9a3d0 Mon Sep 17 00:00:00 2001 From: Abo Date: Sat, 16 Jul 2022 19:38:46 +0200 Subject: [PATCH 27/33] adopt default style when setting format for date / time (#1025) * first draft must check cloning vs uuid assignment, it works but I'm not convinced this is correct * remove unused class attribute * fixed unrelated typo * fixed linter complaints and revised changes * Delete zexcel_t_sheet_style.ttyp.xml * Delete zexcel_s_sheet_style.tabl.xml Co-authored-by: Gregor Wolf --- src/zcl_excel_worksheet.clas.abap | 6 ++++-- src/zcl_excel_worksheet.clas.xml | 12 ------------ src/zexcel_s_sheet_style.tabl.xml | 22 ---------------------- src/zexcel_t_sheet_style.ttyp.xml | 18 ------------------ 4 files changed, 4 insertions(+), 54 deletions(-) delete mode 100644 src/zexcel_s_sheet_style.tabl.xml delete mode 100644 src/zexcel_t_sheet_style.ttyp.xml diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index db1837e..4a871a4 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -92,7 +92,6 @@ CLASS zcl_excel_worksheet DEFINITION DATA sheet_setup TYPE REF TO zcl_excel_sheet_setup . DATA show_gridlines TYPE zexcel_show_gridlines READ-ONLY VALUE abap_true ##NO_TEXT. DATA show_rowcolheaders TYPE zexcel_show_gridlines READ-ONLY VALUE abap_true ##NO_TEXT. - DATA styles TYPE zexcel_t_sheet_style . DATA tabcolor TYPE zexcel_s_tabcolor READ-ONLY . DATA column_formulas TYPE mty_th_column_formula READ-ONLY . CLASS-DATA: @@ -3144,7 +3143,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. rv_guid = ip_style_or_guid. ELSE. - RAISE EXCEPTION TYPE zcx_excel EXPORTING error = 'IP_GUID type must be either REF TO zcl_excel_tyle or zexcel_cell_style'. + RAISE EXCEPTION TYPE zcx_excel EXPORTING error = 'IP_GUID type must be either REF TO zcl_excel_style or zexcel_cell_style'. ENDIF. ENDMETHOD. @@ -3698,6 +3697,9 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. * If not, use default DATA: lo_format_code_datetime TYPE zexcel_number_format. DATA: stylemapping TYPE zexcel_s_stylemapping. + IF -cell_style IS INITIAL. + -cell_style = me->excel->get_default_style( ). + ENDIF. CASE lv_value_type. WHEN cl_abap_typedescr=>typekind_date. TRY. diff --git a/src/zcl_excel_worksheet.clas.xml b/src/zcl_excel_worksheet.clas.xml index f53acab..7b905e8 100644 --- a/src/zcl_excel_worksheet.clas.xml +++ b/src/zcl_excel_worksheet.clas.xml @@ -1101,18 +1101,6 @@ I Show Gridlines - - ZCL_EXCEL_WORKSHEET - STYLES - E - Sheet style table type - - - ZCL_EXCEL_WORKSHEET - STYLES - I - Sheet style table type - ZCL_EXCEL_WORKSHEET STYLES_COND diff --git a/src/zexcel_s_sheet_style.tabl.xml b/src/zexcel_s_sheet_style.tabl.xml deleted file mode 100644 index 9d2dd49..0000000 --- a/src/zexcel_s_sheet_style.tabl.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZEXCEL_S_SHEET_STYLE - E - INTTAB - Sheet style structure - 1 - - - - GUID - ZEXCEL_CELL_STYLE - 0 - E - - - - - diff --git a/src/zexcel_t_sheet_style.ttyp.xml b/src/zexcel_t_sheet_style.ttyp.xml deleted file mode 100644 index 68734a7..0000000 --- a/src/zexcel_t_sheet_style.ttyp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - ZEXCEL_T_SHEET_STYLE - E - ZEXCEL_S_SHEET_STYLE - S - STRU - T - D - N - Sheet style table type - - - - From bca6db91c30129eb83d4ffa5ad22f286925ff1d7 Mon Sep 17 00:00:00 2001 From: Domi Bigl Date: Sun, 7 Aug 2022 15:56:26 +0200 Subject: [PATCH 28/33] enable 255 cell header with table binding (#1051) * add column_name to fcat and link cell to table add column_name char 255 to table fieldcat - this is used as table name and cell value link cell to table and fieldcat * update fieldcat by cell value change * fix linter errors Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * fix linter errors * fix linter errors * undo PP * undo PP * undo PP * fix colname for totals functions Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --- src/zcl_excel_worksheet.clas.abap | 117 +++++++++++++++++++--------- src/zcl_excel_writer_2007.clas.abap | 7 +- src/zexcel_column_name.dtel.xml | 24 ++++++ src/zexcel_s_cell_data.tabl.xml | 23 ++++++ src/zexcel_s_fieldcatalog.tabl.xml | 6 ++ 5 files changed, 138 insertions(+), 39 deletions(-) create mode 100644 src/zexcel_column_name.dtel.xml diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 4a871a4..6dd421a 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -665,6 +665,15 @@ CLASS zcl_excel_worksheet DEFINITION RAISING zcx_excel . PROTECTED SECTION. + METHODS set_table_reference + IMPORTING + !ip_column TYPE zexcel_cell_column + !ip_row TYPE zexcel_cell_row + !ir_table TYPE REF TO zcl_excel_table + !ip_fieldname TYPE zexcel_fieldname + !ip_header TYPE abap_bool + RAISING + zcx_excel . PRIVATE SECTION. *"* private components of class ZCL_EXCEL_WORKSHEET @@ -1047,14 +1056,20 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. IF -style_header IS NOT INITIAL. me->set_cell( ip_column = lv_column_alpha ip_row = lv_row_int - ip_value = -scrtext_l + ip_value = -column_name ip_style = -style_header ). ELSE. me->set_cell( ip_column = lv_column_alpha ip_row = lv_row_int - ip_value = -scrtext_l ). + ip_value = -column_name ). ENDIF. + me->set_table_reference( ip_column = lv_column_int + ip_row = lv_row_int + ir_table = lo_table + ip_fieldname = -fieldname + ip_header = abap_true ). + IF -column_formula IS NOT INITIAL. ls_column_formula-id = lines( column_formulas ) + 1. ls_column_formula-column = lv_column_int. @@ -1165,7 +1180,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. " totals *--------------------------------------------------------------------* IF -totals_function IS NOT INITIAL. - lv_formula = lo_table->get_totals_formula( ip_column = -scrtext_l ip_function = -totals_function ). + lv_formula = lo_table->get_totals_formula( ip_column = -column_name ip_function = -totals_function ). IF -style_total IS NOT INITIAL. me->set_cell( ip_column = lv_column_alpha ip_row = lv_row_int @@ -2963,7 +2978,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, lv_value_lowercase TYPE string, - lv_scrtext_l_initial TYPE scrtext_l, + lv_scrtext_l_initial TYPE zexcel_column_name, lv_long_text TYPE string, lv_max_length TYPE i, lv_temp_length TYPE i, @@ -2982,39 +2997,42 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. LOOP AT lt_field_catalog ASSIGNING WHERE dynpfld EQ abap_true. - CASE iv_default_descr. - WHEN 'M'. - ASSIGN -scrtext_m TO . - ASSIGN -scrtext_s TO . - ASSIGN -scrtext_l TO . - WHEN 'S'. - ASSIGN -scrtext_s TO . - ASSIGN -scrtext_m TO . - ASSIGN -scrtext_l TO . - WHEN 'L'. - ASSIGN -scrtext_l TO . - ASSIGN -scrtext_m TO . - ASSIGN -scrtext_s TO . - WHEN OTHERS. - ASSIGN -scrtext_m TO . - ASSIGN -scrtext_s TO . - ASSIGN -scrtext_l TO . - ENDCASE. + IF -column_name IS INITIAL. - IF IS NOT INITIAL. - -scrtext_l = . - ELSEIF IS NOT INITIAL. - -scrtext_l = . - ELSEIF IS NOT INITIAL. - -scrtext_l = . - ELSE. - -scrtext_l = 'Column'. " default value as Excel does + CASE iv_default_descr. + WHEN 'M'. + ASSIGN -scrtext_m TO . + ASSIGN -scrtext_s TO . + ASSIGN -scrtext_l TO . + WHEN 'S'. + ASSIGN -scrtext_s TO . + ASSIGN -scrtext_m TO . + ASSIGN -scrtext_l TO . + WHEN 'L'. + ASSIGN -scrtext_l TO . + ASSIGN -scrtext_m TO . + ASSIGN -scrtext_s TO . + WHEN OTHERS. + ASSIGN -scrtext_m TO . + ASSIGN -scrtext_s TO . + ASSIGN -scrtext_l TO . + ENDCASE. + + IF IS NOT INITIAL. + -column_name = . + ELSEIF IS NOT INITIAL. + -column_name = . + ELSEIF IS NOT INITIAL. + -column_name = . + ELSE. + -column_name = 'Column'. " default value as Excel does + ENDIF. ENDIF. - lv_scrtext_l_initial = -scrtext_l. - DESCRIBE FIELD -scrtext_l LENGTH lv_max_length IN CHARACTER MODE. + lv_scrtext_l_initial = -column_name. + DESCRIBE FIELD -column_name LENGTH lv_max_length IN CHARACTER MODE. DO. - lv_value_lowercase = -scrtext_l. + lv_value_lowercase = -column_name. TRANSLATE lv_value_lowercase TO LOWER CASE. READ TABLE lt_column_name_buffer TRANSPORTING NO FIELDS WITH KEY table_line = lv_value_lowercase BINARY SEARCH. IF sy-subrc <> 0. @@ -3024,11 +3042,11 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. lv_syindex = sy-index. CONCATENATE lv_scrtext_l_initial lv_syindex INTO lv_long_text. IF strlen( lv_long_text ) <= lv_max_length. - -scrtext_l = lv_long_text. + -column_name = lv_long_text. ELSE. lv_temp_length = strlen( lv_scrtext_l_initial ) - 1. lv_scrtext_l_initial = substring( val = lv_scrtext_l_initial len = lv_temp_length ). - CONCATENATE lv_scrtext_l_initial lv_syindex INTO -scrtext_l. + CONCATENATE lv_scrtext_l_initial lv_syindex INTO -column_name. ENDIF. ENDIF. ENDDO. @@ -3498,7 +3516,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. TYPE simple, TYPE abap_typekind. FIELD-SYMBOLS: TYPE mty_s_column_formula. - + FIELD-SYMBOLS: TYPE zexcel_s_fieldcatalog. IF ip_value IS NOT SUPPLIED AND ip_formula IS NOT SUPPLIED @@ -3641,6 +3659,16 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDCASE. ENDIF. + IF IS ASSIGNED AND -table_header IS NOT INITIAL AND lv_value IS NOT INITIAL. + READ TABLE -table->fieldcat ASSIGNING WITH KEY fieldname = -table_fieldname. + IF sy-subrc = 0. + -column_name = lv_value. + IF -column_name <> lv_value. + zcx_excel=>raise_text( 'Cell is table column header - this value is not allowed' ). + ENDIF. + ENDIF. + ENDIF. + ENDIF. IF ip_hyperlink IS BOUND. @@ -3811,6 +3839,23 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDMETHOD. "SET_CELL_STYLE + METHOD set_table_reference. + + FIELD-SYMBOLS: TYPE zexcel_s_cell_data. + + READ TABLE sheet_content ASSIGNING WITH KEY cell_row = ip_row + cell_column = ip_column. + IF sy-subrc = 0. + -table = ir_table. + -table_fieldname = ip_fieldname. + -table_header = ip_header. + ELSE. + zcx_excel=>raise_text( 'Cell not found' ). + ENDIF. + + ENDMETHOD. + + METHOD set_column_width. DATA: lo_column TYPE REF TO zcl_excel_column. DATA: width TYPE f. diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index a5a1580..46154e7 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -7432,7 +7432,8 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. SHIFT lv_value LEFT DELETING LEADING '0'. lo_element2->set_attribute_ns( name = 'id' value = lv_value ). - lv_value = ls_fieldcat-scrtext_l. + + lv_value = ls_fieldcat-column_name. " The text "_x...._", with "_x" not "_X", with exactly 4 ".", each being 0-9 a-f or A-F (case insensitive), is interpreted " like Unicode character U+.... (e.g. "_x0041_" is rendered like "A") is for characters. @@ -7469,8 +7470,8 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ENDLOOP. - lo_element = lo_document->create_simple_element( name = 'tableStyleInfo' - parent = lo_element_root ). + lo_element = lo_document->create_simple_element( name = 'tableStyleInfo' + parent = lo_element_root ). lo_element->set_attribute_ns( name = 'name' value = io_table->settings-table_style ). diff --git a/src/zexcel_column_name.dtel.xml b/src/zexcel_column_name.dtel.xml new file mode 100644 index 0000000..835a522 --- /dev/null +++ b/src/zexcel_column_name.dtel.xml @@ -0,0 +1,24 @@ + + + + + + ZEXCEL_COLUMN_NAME + E + 15 + 10 + 11 + 16 + Cell Column + Column Name + ColumnName + Column Name + Column Name + E + CHAR + 000255 + 000255 + + + + diff --git a/src/zexcel_s_cell_data.tabl.xml b/src/zexcel_s_cell_data.tabl.xml index 124995e..377f0a9 100644 --- a/src/zexcel_s_cell_data.tabl.xml +++ b/src/zexcel_s_cell_data.tabl.xml @@ -71,6 +71,29 @@ TTYPL L + + TABLE + ZCL_EXCEL_TABLE + 0 + REF + REF RC + R + C + + + TABLE_FIELDNAME + ZEXCEL_FIELDNAME + 0 + E + + + TABLE_HEADER + FLAG + 0 + X + F + E + diff --git a/src/zexcel_s_fieldcatalog.tabl.xml b/src/zexcel_s_fieldcatalog.tabl.xml index 78dbd1f..b7958b7 100644 --- a/src/zexcel_s_fieldcatalog.tabl.xml +++ b/src/zexcel_s_fieldcatalog.tabl.xml @@ -111,6 +111,12 @@ STRG Column Formula + + COLUMN_NAME + ZEXCEL_COLUMN_NAME + 0 + E + From ef47a724e73b0ef0cc58865debd7906d1b598db8 Mon Sep 17 00:00:00 2001 From: Abo Date: Sat, 13 Aug 2022 12:53:35 +0200 Subject: [PATCH 29/33] Release 7.16.0 (#1053) * location and name of version tag * bump version to 7.16.0 --- docs/contributing/publishing-a-new-release.md | 2 +- src/zcl_excel.clas.abap | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/contributing/publishing-a-new-release.md b/docs/contributing/publishing-a-new-release.md index 269d952..bd6f689 100644 --- a/docs/contributing/publishing-a-new-release.md +++ b/docs/contributing/publishing-a-new-release.md @@ -9,7 +9,7 @@ Version numbering is based on [Semantic Versioning 2.0.0](https://semver.org/): - `15`: a minor release - `0`: patch level (bug fixes) -Create a branch for this new release, change `zcl_excel_version` to indicate the new version number and push the changes to the repository +Create a branch for this new release, change `version` in `zcl_excel` to indicate the new version number and push the changes to the repository With GitHub Desktop (or any Git console or Git user interface), [add the tag](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/managing-commits/managing-tags) `7.15.0` to this branch. diff --git a/src/zcl_excel.clas.abap b/src/zcl_excel.clas.abap index dfc9e56..e52a699 100644 --- a/src/zcl_excel.clas.abap +++ b/src/zcl_excel.clas.abap @@ -13,7 +13,7 @@ CLASS zcl_excel DEFINITION DATA legacy_palette TYPE REF TO zcl_excel_legacy_palette READ-ONLY . DATA security TYPE REF TO zcl_excel_security . DATA use_template TYPE abap_bool . - CONSTANTS version TYPE c LENGTH 10 VALUE '7.15.0'. "#EC NOTEXT + CONSTANTS version TYPE c LENGTH 10 VALUE '7.16.0'. "#EC NOTEXT METHODS add_new_autofilter IMPORTING From 9d318a1bc22d88c550c5e4bbcab8b5f6dc71aea2 Mon Sep 17 00:00:00 2001 From: Abo Date: Mon, 15 Aug 2022 11:11:58 +0200 Subject: [PATCH 30/33] Update publishing-a-new-release.md (#1054) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update publishing-a-new-release.md - noted that tags should be created when working from upstream repository (they do not come via PR from outside, only from local branches apparently) - added note regarding previous tag for auto-generation of release notes * Remaining occurrence 15 → 16 Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> --- docs/contributing/publishing-a-new-release.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/contributing/publishing-a-new-release.md b/docs/contributing/publishing-a-new-release.md index bd6f689..ae02acd 100644 --- a/docs/contributing/publishing-a-new-release.md +++ b/docs/contributing/publishing-a-new-release.md @@ -2,16 +2,19 @@ Let's create a release from time to time, every 1 or 2 months for instance, to contain enough changes, but not too much. -Below are the notes taken while publishing the release `7.15.0`. +Below are the notes taken while publishing the release `7.16.0`. Version numbering is based on [Semantic Versioning 2.0.0](https://semver.org/): - `7`: a major release. NB: it will probably not change as we don't want to "make incompatible API changes". -- `15`: a minor release +- `16`: a minor release - `0`: patch level (bug fixes) -Create a branch for this new release, change `version` in `zcl_excel` to indicate the new version number and push the changes to the repository +Working directly on the upstream repository: +- create a branch for this new release; suggested naming for the branch: your own prefix - slash - release - number. For example: abo/release7.16.0 OR sandraros/release7.16.0 +- change `version` in `zcl_excel` to indicate the new version number +- push the changes to this new release branch -With GitHub Desktop (or any Git console or Git user interface), [add the tag](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/managing-commits/managing-tags) `7.15.0` to this branch. +With GitHub Desktop (or any Git console or Git user interface), [add the (lightweight) tag](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/managing-commits/managing-tags) `v7.16.0` to this branch; suggested naming for version-related tags is v + version number. Do a pull request. @@ -21,7 +24,7 @@ Now [create the release in GitHub](https://docs.github.com/en/repositories/relea - Click "Releases" - Click "Draft a new release" - Click "Choose a tag" -- Type the title, click "Auto-generate release notes" and click "Preview" to verify; you should have a list with the following items, edit as required: +- Type the title, select the previous tag, click "Auto-generate release notes" and click "Preview" to verify; you should have a list with the changes from the previous release, edit as required: - `+`: new feature - `*`: bug fix - `!`: feature modification From 4f3d113a433308eaa518c19718e0a3854a56be96 Mon Sep 17 00:00:00 2001 From: Abo Date: Mon, 15 Aug 2022 18:02:03 +0200 Subject: [PATCH 31/33] Update guidelines for demos (#1055) --- docs/contributing/publishing-a-new-release.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/contributing/publishing-a-new-release.md b/docs/contributing/publishing-a-new-release.md index ae02acd..474120f 100644 --- a/docs/contributing/publishing-a-new-release.md +++ b/docs/contributing/publishing-a-new-release.md @@ -24,7 +24,7 @@ Now [create the release in GitHub](https://docs.github.com/en/repositories/relea - Click "Releases" - Click "Draft a new release" - Click "Choose a tag" -- Type the title, select the previous tag, click "Auto-generate release notes" and click "Preview" to verify; you should have a list with the changes from the previous release, edit as required: +- Type the title, select the previous tag, click "Auto-generate release notes" and click "Preview" to verify; you should have a list with the changes from the previous release, edit as required and remember to include the list below as explanation: - `+`: new feature - `*`: bug fix - `!`: feature modification @@ -32,3 +32,6 @@ Now [create the release in GitHub](https://docs.github.com/en/repositories/relea - Click "Publish release" - It's done, zip and tar.gz files are automatically assigned to the release - The new release appears in the Code home page, with the changelog in the release page itself. + +Now create a release for the [demos](https://github.com/abap2xlsx/demos) repository as well: use the same process and tag the latest commit available at the time the main library is released, to ensure users will always have a matching set of demo programs. + From eb7d8da540bbdbf89972d301b5260b5d533523db Mon Sep 17 00:00:00 2001 From: Abo Date: Mon, 22 Aug 2022 10:18:28 +0200 Subject: [PATCH 32/33] Update publishing-a-new-release.md (#1057) ideally we shoudl run ZDEMO_EXCEL_CHECKER during the review process of each PR for both the main library and the demos, but as a safety net also before releasing a new version --- docs/contributing/publishing-a-new-release.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/contributing/publishing-a-new-release.md b/docs/contributing/publishing-a-new-release.md index 474120f..6db8e4d 100644 --- a/docs/contributing/publishing-a-new-release.md +++ b/docs/contributing/publishing-a-new-release.md @@ -1,6 +1,7 @@ # Publishing a new release Let's create a release from time to time, every 1 or 2 months for instance, to contain enough changes, but not too much. +Before beginning, you should ensure that ZDEMO_EXCEL_CHECKER (in the demos repo) shows all green checkmarks. Below are the notes taken while publishing the release `7.16.0`. From 90981b21c5c1bd1f80ca38e55b03a4c99b9aa27a Mon Sep 17 00:00:00 2001 From: Derby <75079431+boy0korea@users.noreply.github.com> Date: Tue, 30 Aug 2022 01:04:16 +0900 Subject: [PATCH 33/33] add METHOD convert_to_table. (#999) * added METHOD convert_to_table. Co-authored-by: Abo Co-authored-by: Lars Hvam Co-authored-by: Domi Bigl --- src/zcl_excel_worksheet.clas.abap | 296 +++++++++++++++++++++++++++++- 1 file changed, 291 insertions(+), 5 deletions(-) diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 6dd421a..77ad294 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -664,6 +664,20 @@ CLASS zcl_excel_worksheet DEFINITION !ip_is_internal TYPE abap_bool RAISING zcx_excel . + "! excel upload, counterpart to BIND_TABLE + "! @parameter it_field_catalog | field catalog, used to derive correct types + "! @parameter iv_begin_row | starting row, by default 2 to skip header + "! @parameter et_data | generic internal table, there may be conversion losses + "! @parameter er_data | ref to internal table of string columns, to get raw data without conversion losses. + METHODS convert_to_table + IMPORTING + !it_field_catalog TYPE zexcel_t_fieldcatalog OPTIONAL + !iv_begin_row TYPE int4 DEFAULT 2 + EXPORTING + !et_data TYPE STANDARD TABLE + !er_data TYPE REF TO data + RAISING + zcx_excel . PROTECTED SECTION. METHODS set_table_reference IMPORTING @@ -2051,6 +2065,281 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDMETHOD. "CONSTRUCTOR + METHOD convert_to_table. + + TYPES: + BEGIN OF ts_field_conv, + fieldname TYPE x031l-fieldname, + convexit TYPE x031l-convexit, + END OF ts_field_conv, + BEGIN OF ts_style_conv, + cell_style TYPE zexcel_s_cell_data-cell_style, + abap_type TYPE abap_typekind, + END OF ts_style_conv. + + DATA: + lv_row_int 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, + ls_field_catalog TYPE zexcel_s_fieldcatalog, + lv_value TYPE string, + lv_maxcol TYPE i, + lv_maxrow TYPE i, + lt_field_conv TYPE TABLE OF ts_field_conv, + lt_comp TYPE abap_component_tab, + ls_comp TYPE abap_componentdescr, + lo_line_type TYPE REF TO cl_abap_structdescr, + lo_tab_type TYPE REF TO cl_abap_tabledescr, + lr_data TYPE REF TO data, + lt_comp_view TYPE abap_component_view_tab, + ls_comp_view TYPE abap_simple_componentdescr, + lt_ddic_object TYPE dd_x031l_table, + lt_ddic_object_comp TYPE dd_x031l_table, + ls_ddic_object TYPE x031l, + lt_style_conv TYPE TABLE OF ts_style_conv, + ls_style_conv TYPE ts_style_conv, + ls_stylemapping TYPE zexcel_s_stylemapping, + lv_format_code TYPE zexcel_number_format, + lv_float TYPE f, + lt_map_excel_row TYPE TABLE OF i, + lv_index TYPE i, + lv_index_col TYPE i. + + FIELD-SYMBOLS: + TYPE STANDARD TABLE, + TYPE data, + TYPE data, + TYPE STANDARD TABLE, + TYPE data, + TYPE data, + TYPE ts_field_conv, + TYPE x031l, + TYPE zexcel_s_cell_data. + + CLEAR: et_data, er_data. + + lv_maxcol = get_highest_column( ). + lv_maxrow = get_highest_row( ). + + + " Field catalog + lt_field_catalog = it_field_catalog. + IF lt_field_catalog IS INITIAL. + IF et_data IS SUPPLIED. + lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = et_data ). + ELSE. + DO lv_maxcol TIMES. + ls_field_catalog-position = sy-index. + ls_field_catalog-fieldname = 'COL_' && sy-index. + ls_field_catalog-dynpfld = abap_true. + APPEND ls_field_catalog TO lt_field_catalog. + ENDDO. + ENDIF. + ENDIF. + + SORT lt_field_catalog BY position. + DELETE lt_field_catalog WHERE dynpfld NE abap_true. + CHECK: lt_field_catalog IS NOT INITIAL. + + + " Create dynamic table string columns + ls_comp-type = cl_abap_elemdescr=>get_string( ). + LOOP AT lt_field_catalog INTO ls_field_catalog. + ls_comp-name = ls_field_catalog-fieldname. + APPEND ls_comp TO lt_comp. + ENDLOOP. + lo_line_type = cl_abap_structdescr=>create( lt_comp ). + lo_tab_type = cl_abap_tabledescr=>create( lo_line_type ). + CREATE DATA er_data TYPE HANDLE lo_tab_type. + ASSIGN er_data->* TO . + + + " Collect field conversion rules + IF et_data IS SUPPLIED. +* lt_ddic_object = get_ddic_object( et_data ). + lo_tab_type ?= cl_abap_tabledescr=>describe_by_data( et_data ). + lo_line_type ?= lo_tab_type->get_table_line_type( ). + lo_line_type->get_ddic_object( + RECEIVING + p_object = lt_ddic_object + EXCEPTIONS + OTHERS = 3 + ). + IF lt_ddic_object IS INITIAL. + lt_comp_view = lo_line_type->get_included_view( ). + LOOP AT lt_comp_view INTO ls_comp_view. + ls_comp_view-type->get_ddic_object( + RECEIVING + p_object = lt_ddic_object_comp + EXCEPTIONS + OTHERS = 3 + ). + IF lt_ddic_object_comp IS NOT INITIAL. + READ TABLE lt_ddic_object_comp INTO ls_ddic_object INDEX 1. + ls_ddic_object-fieldname = ls_comp_view-name. + APPEND ls_ddic_object TO lt_ddic_object. + ENDIF. + ENDLOOP. + ENDIF. + + SORT lt_ddic_object BY fieldname. + LOOP AT lt_field_catalog INTO ls_field_catalog. + APPEND INITIAL LINE TO lt_field_conv ASSIGNING . + MOVE-CORRESPONDING ls_field_catalog TO . + READ TABLE lt_ddic_object ASSIGNING WITH KEY fieldname = -fieldname BINARY SEARCH. + CHECK: sy-subrc EQ 0. + CASE -exid. + WHEN cl_abap_typedescr=>typekind_int + OR cl_abap_typedescr=>typekind_int1 + OR cl_abap_typedescr=>typekind_int8 + OR cl_abap_typedescr=>typekind_int2 + OR cl_abap_typedescr=>typekind_packed + OR cl_abap_typedescr=>typekind_decfloat + OR cl_abap_typedescr=>typekind_decfloat16 + OR cl_abap_typedescr=>typekind_decfloat34 + OR cl_abap_typedescr=>typekind_float. + " Numbers + -convexit = cl_abap_typedescr=>typekind_float. + WHEN OTHERS. + -convexit = -convexit. + ENDCASE. + ENDLOOP. + ENDIF. + + " Date & Time in excel style + LOOP AT me->sheet_content ASSIGNING WHERE cell_style IS NOT INITIAL AND data_type IS INITIAL. + ls_style_conv-cell_style = -cell_style. + APPEND ls_style_conv TO lt_style_conv. + ENDLOOP. + IF lt_style_conv IS NOT INITIAL. + SORT lt_style_conv BY cell_style. + DELETE ADJACENT DUPLICATES FROM lt_style_conv COMPARING cell_style. + + LOOP AT lt_style_conv INTO ls_style_conv. + + ls_stylemapping = me->excel->get_style_to_guid( ls_style_conv-cell_style ). + lv_format_code = ls_stylemapping-complete_style-number_format-format_code. + " https://support.microsoft.com/en-us/office/number-format-codes-5026bbd6-04bc-48cd-bf33-80f18b4eae68 + IF lv_format_code CS ';'. + lv_format_code = lv_format_code(sy-fdpos). + ENDIF. + CHECK: lv_format_code NA '#?'. + + " Remove color pattern + REPLACE ALL OCCURRENCES OF REGEX '\[\L[^]]*\]' IN lv_format_code WITH ''. + + IF lv_format_code CA 'yd' OR lv_format_code EQ zcl_excel_style_number_format=>c_format_date_std. + " DATE = yyyymmdd + ls_style_conv-abap_type = cl_abap_typedescr=>typekind_date. + ELSEIF lv_format_code CA 'hs'. + " TIME = hhmmss + ls_style_conv-abap_type = cl_abap_typedescr=>typekind_time. + ELSE. + DELETE lt_style_conv. + CONTINUE. + ENDIF. + + MODIFY lt_style_conv FROM ls_style_conv TRANSPORTING abap_type. + + ENDLOOP. + ENDIF. + + +*--------------------------------------------------------------------* +* Start of convert content +*--------------------------------------------------------------------* + READ TABLE me->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = iv_begin_row. + IF sy-subrc EQ 0. + lv_index = sy-tabix. + ENDIF. + + LOOP AT me->sheet_content ASSIGNING FROM lv_index. + AT NEW cell_row. + " New line + APPEND INITIAL LINE TO ASSIGNING . + lv_index = sy-tabix. + ENDAT. + + IF -cell_value IS NOT INITIAL. + ASSIGN COMPONENT -cell_column OF STRUCTURE TO . + IF sy-subrc EQ 0. + " value + = -cell_value. + + " field conversion + READ TABLE lt_field_conv ASSIGNING INDEX -cell_column. + IF sy-subrc EQ 0 AND -convexit IS NOT INITIAL. + CASE -convexit. + WHEN cl_abap_typedescr=>typekind_float. + lv_float = zcl_excel_common=>excel_string_to_number( -cell_value ). + = |{ lv_float NUMBER = RAW }|. + WHEN 'ALPHA'. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + input = -cell_value + IMPORTING + output = . + ENDCASE. + ENDIF. + + " style conversion + IF -cell_style IS NOT INITIAL. + READ TABLE lt_style_conv INTO ls_style_conv WITH KEY cell_style = -cell_style BINARY SEARCH. + IF sy-subrc EQ 0. + CASE ls_style_conv-abap_type. + WHEN cl_abap_typedescr=>typekind_date. + = zcl_excel_common=>excel_string_to_date( -cell_value ). + WHEN cl_abap_typedescr=>typekind_time. + = zcl_excel_common=>excel_string_to_time( -cell_value ). + ENDCASE. + ENDIF. + ENDIF. + + " condense + CONDENSE . + ENDIF. + ENDIF. + + AT END OF cell_row. + " Delete empty line + IF IS INITIAL. + DELETE INDEX lv_index. + ELSE. + APPEND -cell_row TO lt_map_excel_row. + ENDIF. + ENDAT. + ENDLOOP. +*--------------------------------------------------------------------* +* End of convert content +*--------------------------------------------------------------------* + + + IF et_data IS SUPPLIED. +* MOVE-CORRESPONDING TO et_data. + LOOP AT ASSIGNING . + APPEND INITIAL LINE TO et_data ASSIGNING . + MOVE-CORRESPONDING TO . + ENDLOOP. + ENDIF. + + " Apply conversion exit. + LOOP AT lt_field_conv ASSIGNING + WHERE convexit = 'ALPHA'. + LOOP AT et_data ASSIGNING . + ASSIGN COMPONENT -fieldname OF STRUCTURE TO . + CHECK: sy-subrc EQ 0 AND IS NOT INITIAL. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + input = + IMPORTING + output = . + ENDLOOP. + ENDLOOP. + + ENDMETHOD. + + METHOD create_data_conv_exit_length. DATA: lo_addit TYPE REF TO cl_abap_elemdescr, ls_dfies TYPE dfies, @@ -2085,11 +2374,8 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. lv_column = zcl_excel_common=>convert_column2int( ip_cell_column ). LOOP AT me->mt_merged_cells TRANSPORTING NO FIELDS - WHERE - ( row_from <= ip_cell_row AND row_to >= ip_cell_row ) - AND - ( col_from <= lv_column AND col_to >= lv_column ). - + WHERE row_from <= ip_cell_row AND row_to >= ip_cell_row + AND col_from <= lv_column AND col_to >= lv_column. DELETE me->mt_merged_cells. EXIT. ENDLOOP.

        nrS6stA{os=Uf=Nl zX4Tcr+Y#*gYaJqz2kk%e0((v6H&JqGX75+e3^AHvRm0Shx%$5J$vP07+1 zm5n541t^|)V%%4mRA4o%Hb|Z%^YKMmF zM;0UjrFh%U5@CR_xR~=*knKKnmjMsvHf2Xp?=F56O!DCeqas)8fd?j%-D=K(LI-@9 zw!96#mrHdn%7AK8z*b8Fziy!wY1S(peFdX0$B^tW)368TL+flv1$uqClKKU z)|akOn&;=J6`sCB-{(DLR)c;BPt}NYIMF9*ktw+aEUTUrln2r3iJ+BJ#p--tq$-sO zdL7X%wX1RO2Pwu)O_PNhEr`Uo?fbWm5bl;Vy%7txr*ml6si`y6yVq~at+sWpP33H$ zawHOX_5@k@60KF0S4~Qw@?H($j>$u)7k;|U4Q79;1SHH|@Vz$cGL&P>5=)2LnO_Ng z?88GgtJ-m}%ps{)@Nk`vT0w|56b`7?S9xpdG;-jOyxF|XQ^et@GCg?My^E>wr#FaTev zxWa-|Yt0O9x@KL9YUk%=Ve}sdI^8oQA%#stO0b zcVcnlx&y6AozvtoAA`L{$Vb;oHY+JNzhoFfCbCOgB8MQ&7@<`cFtm*bjVb zip||lh7~!1(?w-VZ!W9&HB}4>T2pD=EmPkgnq4Z57yX{op!_*HIVa?G`&GR2`>%N3 z3=4&8+_){=OxSpgz|Y-GP~JITED0sF2ifvulTtb$JtzK23{$kb#AOpTK{1j3aq2Qb zMD?`KbxHeZPmZp96Hj_Fws@}+{b(ii1CDuVUkOLQ>GL>wbdk0PMomlU8{ak4VW00_ za&wsLyP}BSQ-i69&1T=_J%mL{zVWjCX-v|ae?#*$GwpiHl=tCbOQe5tdZKX>O`0@J zMIz10DiLZuGU(3d<$JuZd$YM#?)upG;zFe$Ld{2vN6jZo7uPwzabx?(O-YtN^#^Rg`r^pbZ{D>cg{-F^^}=B2N~y@23hiMTudGWOwNY^XS`Z_;as{>( zGcRWhNv%cR2C(ZqebgGpKxJSOC2P#J3l&oeR#}GWlv&x7`)V6 z4HFNY;(GeL)Y*Kd^^r|6&DKf|Z}rp{cYj;cpCLkLM6?Y0DmxCkq65@5umr&k!v`+{ z3KzUuYywV> zioOk77sIR2xiyr@y3V8G24gU1fkIl)_2YWNY+%6$`I!ON--W z2G!nGUTPb2i)&5Kya`H<8rPW5Fy?}dkKbcDO@b(tgautS`NiHokF)0rhiuP)Xy+&L z6lzi|h22;3R2{bqk)PoiRH3RRudfxb(3v1zeiB{4IlS{e`z`8EQ(yl!Y7VH0;YTacK9x8LFJ zK~%%ypwx=0PqB@*SKylvi}}XDx^7_>p}bVOZdN&5Ov-_nP3|ucxR)gzW0s(j3Q39ke1BGg;C8!E{{z?*VJ8bsj2nXDTndzCU{My`^e(D5HXz_ zQOX*qyQHzvR=j=AWSp{|q}qxvlD;h}5MSDfJ>e90OfMFbySMe|ct^(MS`V(0npovG zbT2=0EqZ;|BD`Xb2HI`aU1DtBskYyAC5U&P_*&(jw_EnS0sZyJFYgWI4#{5|4TdlbKM-edfQbK9}F4RBi}{|2zb`wQTon)!C{Z87*exD}}l ze@TS@O2gZsxAnyD&^n}8|2K7U8{zi;`Hj$rGz^glzyA6EY@^#Kw;S;{3I^G2lz(kY Wb!BuU)4yDFT)-%@aPY~0eftkLfG*Vl diff --git a/src/demos/zdemo_excel1.w3mi.xml b/src/demos/zdemo_excel1.w3mi.xml deleted file mode 100644 index 33c60b8..0000000 --- a/src/demos/zdemo_excel1.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL1 - 01_HelloWorld.xlsx (ZDEMO_EXCEL1) - - - MI - ZDEMO_EXCEL1 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL1 - filename - - - MI - ZDEMO_EXCEL1 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel10.w3mi.data.xlsx b/src/demos/zdemo_excel10.w3mi.data.xlsx deleted file mode 100644 index 028cc349c4b46d18e086d939b6faf3bf36579bc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6942 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 diff --git a/src/demos/zdemo_excel10.w3mi.xml b/src/demos/zdemo_excel10.w3mi.xml deleted file mode 100644 index 5fd38b7..0000000 --- a/src/demos/zdemo_excel10.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL10 - 10_iTabFieldCatalog.xlsx (ZDEMO_EXCEL10) - - - MI - ZDEMO_EXCEL10 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL10 - filename - 10_iTabFieldCatalog.xlsx - - - MI - ZDEMO_EXCEL10 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel12.w3mi.data.xlsx b/src/demos/zdemo_excel12.w3mi.data.xlsx deleted file mode 100644 index a2c26fc9f04e3452e7e35dfaf924d5e05a1601f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6214 zcmZ`-1yq!6w;cooX^;>^asUYl=@5qQ?i@gd4r%G`?hue6r9p5ArAv?=dIU+47Ll$y ze&4;npZwpQwchtx@2s`Yde%PAbIv|nO%WB17ytlZ0ZV*Q|u$I>gh^sOCO9%U^R7I6;5Kedv(J(15{HxJ$ z+elw9y)$}FC>_WT>XD*uesi-it0KC%7~#1+4^dRI2%#<$U)0r?!C4H%rjoS{DcbAn z&QO*b1kS+aw1*CK>{wVTgMJW4L5Ak`aRBA)R zR(H&vBnUf7$g;fOCwe$7CmuUO+Cem<=ya{-4GuL*b->f+n@9sbZcQ1JIz~O-PRDQ; z#=?f!VDmurCg}#G#pG+>`cDJ$ir@njLnVo)gtm2XyHb6Ms0H^#>gt~Yb?@dp%<&Un zt|pGis4HQHvq)7NFJ@8E)<|TxhjX^`ycayAs1)lVJKzbEGf=Z43mi^Z%onq2kal<4xOs12#K-02M+>`Or5A{WZSb#32kwLh}( z3Ogfb1|Ht7f4!@cl~qu=aKdVcAfqo0fTVBWjxC#bP?HW|9`!IV zo)Q&aU$-P@6jTf1)F^8)wYfMut6xuOJQ;SxOYx!|K<)3VE}y4JAt~&SqUSx9n%jfD zlFe3&0iH+>mi+AbJZr+cfNC+L*@{V-gEDcs91+adufPhrSTf5UoxH9yM6zLtw41`QMq&ljTFZodvE%U zMziyxO3xZ%Mic^pvIQ?$i4TF+`>Hku(NYUa)N!+Y<;Hw_igERSR1;9-a8+n?4iXB_ z$158mu$VvcQ}gNFA;4OUa+o_gwsU2zpC*V=q~8ab`$aYJSfGHTo3VakI8QSJ0FOky-IUW`*#dS$Xc{0{J^F<0@U8#NlAb=GCA_AwxCd%j_+v)*f&{tU|lwJ*}hYwr5X*~q4RKwDePflS&slOB^h zuLMwDomg;`rBlJU6Vss+%Jrmapcz(MJ0EyNWJJ8hlHtlNVYjawU$<(fHpCG0Mxtp_ zhl@JiBMf(S-yU5+5zboK!QCm+9mmO+OSqdB?5S{Q_DP3EAe@L;Ytby3z}MoL-ueh> zgM5P4gcEL#G`^XvQ_fCDOLdC(Sb>>;FnFWB|G2EKGF#ah)IcDzL7F*}u2M1zpSvlPSz)!ie3O%wOn#p3YTI(0!PUPy%t(QNAJMk&q_@LgyNybRm9p{PlPWo* zb9ZeMZ=7vdPU)?{L(wENQJS;$BSZL2(e-1k3&tBhDzt{&i=QWB;6It>Ln)~LRSGJQ zOj97&m-ZZgR|8Kc7dvw&C%a#4|EDr^a}tErm=B|@6w#2rapYfc!#3(rV051Bfmw#X z&WS^pUBSZ9O4TZ7A=TG++VR?lr-*$Kn?^J`b8^UiF8!9zqQDv6+uw)JTo7`P9QNu6 z70=}7y$I3z@!XGi!E$Yl>Dz&Y8+4FZZ#W}G>zkqxOE9%>gok#zXZlyF7kf6xaj5hB ztemQveK#*lVY_ypi_g7!9+S~keq%3(mg4nxCWzowNDOzFST^Y=2SF$ry6*R=gJWva zV*`}kmI5CKpp_Z!&I(S-SU17Aop-sPJ_a{J`gUmG2fafLOGlcys{ZHTB=E z3dxL{HN*k(_nYe%FS}V_Cj=isM|*Vs$y5MjMm(49;I)U{1gY{gG{Gt=T~D(Jq#=LB z*N}jE7iT-X6=xPf74Cp;V9K#jIxuav9q1pXo=l%Yn%itRbJzG0P13-Z+?V~U3-Zlw zXC_KH^gZa74f}lTlg1e8uhBEZ{rJ=1C+scpi6B&(*n&1;*{;?Pe)nJ&q2_CkZCGIW z`!X7ghVQb!PjNv*0c%Cu zcQ9RcjP7fw@t0`s6z1Ss#_c3z#-J>Z5GJ-&xMA#^5-g-tOM>Kh$33^t`l}qkp*jRcsM!$$EDDH^p4$Md9$GQh^q|M33)iRofwF5)YDFGxx0t)xn(d?z^d)$9AqOj0P5z8~Z zdd?lnW-jT5)-o$PMi7ZkIe@vnbRCPwF_Gex{cPdl^ZuX$K zviGlDP!58yl#Ew;;rn0_znu>+&%do*r=(nn<%+y~;c_Dzv-IvUpX0mH2Xm0m-YIta zv74V1rgRLOo|!6bgxm8)(x}+)h-UQ*`QSG7aI+2!4G*+&2L}ng53EA?hm3YkRwakH z_hMwq2%WWMGK&SerpU93ZnQa#+_c8?~GZ9sg$y)VeueB(9Dt|~_HXBCFvXTB7 zT9VY3#*;#zEuTCCnajt1%8@l$JsAu_psgV8j21PPANhKI3MW({)^4a0Jc^Yb0*pJ+ zS5u4YTj`wXx|gV^Lek)#!xHf}Ujs?Um>GopeUs%KS{!Lh4N?j4R&0cuT zT>5TuVU$bTJ;t3JX7i0)o*@{J8DK~8SL2N9iZy{ z-QfNc)rGEzqJ5RA=ZP(`_uV;?+$}&7^PYYKx+D2j-i{h#GumTDe9IDe;!LRb=GmyGPk4KVz)ZdBjy3v`g^W{&FK{B7wvmBMH1Tlb7rsG#t zPSIG9G-BQCIwEfE_q&URg^$cVkF^YbmSsO5(7HS_nC$Z-oRu9c zJIQv_Z<+F*B?Wh!Sc6XbpzAbmjZ@$X-@-&SdVJ-F)~DlJ&Ta_6pAx@DG{@;!5 zpDis;?UM?!n_ZH8qE;)VWhUUQ3I!FAY27P(_Ua{E??@4*IPbLD!E}IKd0)DiUqzVv zcw}U6bmqjxZ#vpH7=I!=d&G*I0Vw5&raKK%<{KaTjc`&6^;16@EkUCWmO=?Kal>2Sx|zmf#{A~Qr+7GYSTer`8zFZ)AaJDOi+B? zXX-ACiuCpgje`d|84suNEjXli)VzlF2IYOwy}p?%Q%4sl70yy$EX!yzSn4f3TNY#p zfpx}4`Y{lm#%1E;X}${7p&+n12=wmOu0H~%K{+_~51rQ<`nJgalnX*0M4w>4SVaW@ zaQ|l2)y>Nu;`)~;)9j4?%!zYFvWh>eBq3bOFhE6m7t4WphsxWXQKgRt(Ww(|5#WG- zRdg)@5l$HZWjMTwS!3GVlztn~dd)`7h`Ym(hVW%7heD16_V66=& zEp9Fx&WM5VoS12COJYCnKoZC@p3bFV(@`z0y$t%BA!`3T0mSC{7p~|6Xumr=Ou%3+ zitxJ^uFmCFKw1^W(N*@5aqbg#ecc?py zxLTXJKrA%fTx=Yz{>pP)vhuH)D6Hn`V6+0R%0zHE3!3&q11o7x2OTPG?e*j;!F+}L zIQYSFr(kP+XcdL8(ti5fF@oO^j_QX(X(B+Smi zv06OWVZ>#kLvwdm!`~Eqd}r7PheF>QWfF^NKwAAf%AIwYQ~U`<~>DuMykn1^er z8jJg3pG)@Mk6}jVW5DO-n=k(u@Bm`yV-z@$`_)Ti^fy4}KRd zS8E8w%@vsl39$yxS;`Q@7QV<&eKnvD;5& zQ&an#NsTEq68&ECs%zW6(Qasa`^^yh;!|4(F0#;dSH#068022m4>a}k)#j`CFu%IY z-3I|A%zYDgE{ukDwFb?%1n5+p!+Qcr1Tco94{+oO&gKcx`yY?z#|pJ=$LHWAeP$;w zxunE{86-Ub*S}0zHcAIlY658ul9DBM=H8xCw%{DhC?5z~>Z1@VN<{h26v5JZ;Sug5 z0tOl%&xf(qKWt2Q5&FrPkDwV2pp0n;QEgBPCZQ_DWSRJ^#E>K86kINQp41J{qdfev?@ldWoSciKhi!fToleVtZav;k0`oWVz%E2J7cGXLrMhcc!OCe5>sLu?IR*g%oP@m*VgeO|GPn96W(H7UD3%@ai2?WB?BAlWeOAJsITz+N zar_lcr#_0GLgfLSXRpyL83=ZdGyN>3&o<1z^~4nqUy;b z%v*9*uF*m-R`Z(VRgETV(8WhJnZD2CSzgV;A)c}QCMZtsU_x+;ksfi)q~cdo9DlE) zzB2RyEI({NgQxebj!YDeuwNx>RkHT2iMuH5k+JcI{qQ|~Uwex2=WVpY&M9|B-ogOn zL;qj5@$WJD_nrJ}NLG&R#O>n5k=Bh80X-7<8JO*X!B=Yl*8-{#8)90ncF0wN;wjq~ zeQqwUl|FGZoh+5eCIL!2LtJfv4~yw2mwK^2i5Lqexl6CAPaVndfOsm%q>SmUCZJmB zDvrgFx1tE-C?~udYqc+He?uL3h^!wdckcgHssG(zMQ-~azkjh?ZwI*T4gN-lBiq71 zoWk3{+fLeVU=q?>xb3UmM&EXPexsR?R`Gw(|L6bQhTpa^e#4WHBmDnwYTS-h zi{FlLyZ8K#K#jEE{&(m9)roFLxqWATN2x-}i9e(K>kU#>j F{{T&D=)V8} diff --git a/src/demos/zdemo_excel12.w3mi.xml b/src/demos/zdemo_excel12.w3mi.xml deleted file mode 100644 index a33c067..0000000 --- a/src/demos/zdemo_excel12.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL12 - 12_HideSizeOutlineRowsAndColumns.xlsx (ZDEMO_EXCEL12) - - - MI - ZDEMO_EXCEL12 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL12 - filename - - - MI - ZDEMO_EXCEL12 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel13.w3mi.data.xlsx b/src/demos/zdemo_excel13.w3mi.data.xlsx deleted file mode 100644 index 064db297fffa7f1f69e40714fcd8872766231d67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6225 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 H*VF$1Ct}(j diff --git a/src/demos/zdemo_excel13.w3mi.xml b/src/demos/zdemo_excel13.w3mi.xml deleted file mode 100644 index f7f3eb9..0000000 --- a/src/demos/zdemo_excel13.w3mi.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ZDEMO_EXCEL13 - 13_MergedCells.xlsx (ZDEMO_EXCEL13) - - - MI - ZDEMO_EXCEL13 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL13 - filename - - - MI - ZDEMO_EXCEL13 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel14.w3mi.data.xlsx b/src/demos/zdemo_excel14.w3mi.data.xlsx deleted file mode 100644 index fff2f736b1bcea678d51628b9549702d8b696853..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6156 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 xe}t2UVEFas|5NYpvfTY - - - - ZDEMO_EXCEL14 - 14_Alignment.xlsx (ZDEMO_EXCEL14) - - - MI - ZDEMO_EXCEL14 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL14 - filename - - - MI - ZDEMO_EXCEL14 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_01.w3mi.data.xlsx b/src/demos/zdemo_excel15_01.w3mi.data.xlsx deleted file mode 100644 index 45a0fd96132f8d431fce132872c2d9b8c9082872..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6325 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 IlKy)852vgXzW@LL diff --git a/src/demos/zdemo_excel15_01.w3mi.xml b/src/demos/zdemo_excel15_01.w3mi.xml deleted file mode 100644 index d82bcf1..0000000 --- a/src/demos/zdemo_excel15_01.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL15_01 - 15_01_HelloWorldFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_01 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_01 - filename - 15_01_HelloWorldFromReader.xlsx - - - MI - ZDEMO_EXCEL15_01 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_02.w3mi.data.xlsx b/src/demos/zdemo_excel15_02.w3mi.data.xlsx deleted file mode 100644 index 9c8995ef2a777b2784df02b508a536d0d1fee45d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6541 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 VItG&I-|;>!U=q1;iphTe`X9YrSla*q diff --git a/src/demos/zdemo_excel15_02.w3mi.xml b/src/demos/zdemo_excel15_02.w3mi.xml deleted file mode 100644 index 86884df..0000000 --- a/src/demos/zdemo_excel15_02.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL15_02 - 15_02_StylesFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_02 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_02 - filename - 15_02_StylesFromReader.xlsx - - - MI - ZDEMO_EXCEL15_02 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_03.w3mi.data.xlsx b/src/demos/zdemo_excel15_03.w3mi.data.xlsx deleted file mode 100644 index 2e189eb5b69b5b2a5649dc656cb6b22829a3502e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8523 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 RPSVf-7Lf7EFvJW1_#c_x@jU - - - - ZDEMO_EXCEL15_03 - 15_03_iTabFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_03 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_03 - filename - 15_03_iTabFromReader.xlsx - - - MI - ZDEMO_EXCEL15_03 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_04.w3mi.data.xlsx b/src/demos/zdemo_excel15_04.w3mi.data.xlsx deleted file mode 100644 index 314a14f0f4efebc84a92c1c87a953f2912b77f36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8987 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 WUJ4#cm!JD;Y(N5(zc!>lfBhHfFjpD? diff --git a/src/demos/zdemo_excel15_04.w3mi.xml b/src/demos/zdemo_excel15_04.w3mi.xml deleted file mode 100644 index ca84553..0000000 --- a/src/demos/zdemo_excel15_04.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL15_04 - 15_04_SheetsFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_04 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_04 - filename - 15_04_SheetsFromReader.xlsx - - - MI - ZDEMO_EXCEL15_04 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_05.w3mi.data.xlsx b/src/demos/zdemo_excel15_05.w3mi.data.xlsx deleted file mode 100644 index add90d35910c0593f84d4919270423ac74167439..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5803 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 C?Gr5k diff --git a/src/demos/zdemo_excel15_05.w3mi.xml b/src/demos/zdemo_excel15_05.w3mi.xml deleted file mode 100644 index 787d713..0000000 --- a/src/demos/zdemo_excel15_05.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL15_05 - 15_05_ConditionalFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_05 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_05 - filename - 15_05_ConditionalFromReader.xlsx - - - MI - ZDEMO_EXCEL15_05 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_07.w3mi.data.xlsx b/src/demos/zdemo_excel15_07.w3mi.data.xlsx deleted file mode 100644 index 7698e22a4004f2438b16c769337b3f6a1cd087be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6732 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 ZZ;+BKGEC`TUnkJv#$XQ)g!tFL{{S!l - - - - ZDEMO_EXCEL15_07 - 15_07_ConditionalAllFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_07 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_07 - filename - 15_07_ConditionalAllFromReader.xlsx - - - MI - ZDEMO_EXCEL15_07 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_08.w3mi.data.xlsx b/src/demos/zdemo_excel15_08.w3mi.data.xlsx deleted file mode 100644 index aff3d2c6a2387d82c7b3debb4bfcf08da1c1f757..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5837 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 diff --git a/src/demos/zdemo_excel15_08.w3mi.xml b/src/demos/zdemo_excel15_08.w3mi.xml deleted file mode 100644 index 1e5fd1f..0000000 --- a/src/demos/zdemo_excel15_08.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL15_08 - 15_08_RangeFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_08 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_08 - filename - 15_08_RangeFromReader.xlsx - - - MI - ZDEMO_EXCEL15_08 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_13.w3mi.data.xlsx b/src/demos/zdemo_excel15_13.w3mi.data.xlsx deleted file mode 100644 index d0a65157ee7b5b48d5f45e9d1d651f3fe7d2126f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6158 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 diff --git a/src/demos/zdemo_excel15_13.w3mi.xml b/src/demos/zdemo_excel15_13.w3mi.xml deleted file mode 100644 index fc9a4f3..0000000 --- a/src/demos/zdemo_excel15_13.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL15_13 - 15_13_MergedCellsFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_13 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_13 - filename - 15_13_MergedCellsFromReader.xlsx - - - MI - ZDEMO_EXCEL15_13 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_24.w3mi.data.xlsx b/src/demos/zdemo_excel15_24.w3mi.data.xlsx deleted file mode 100644 index cb9c2f0e23403162b70530707d5862ad9c6a64d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8984 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 U5{xcCkJUJUWEg*~D1UzYFNSncF#rGn diff --git a/src/demos/zdemo_excel15_24.w3mi.xml b/src/demos/zdemo_excel15_24.w3mi.xml deleted file mode 100644 index 9c6f35e..0000000 --- a/src/demos/zdemo_excel15_24.w3mi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ZDEMO_EXCEL15_24 - 15_24_Sheets_with_different_default_date_formatsFromReader.xlsx (ZDEMO_EXCEL15) - - - MI - ZDEMO_EXCEL15_24 - fileextension - .xlsx - - - MI - ZDEMO_EXCEL15_24 - filename - 15_24_Sheets_with_different_default_date_formatsFromReader.xlsx - - - MI - ZDEMO_EXCEL15_24 - mimetype - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - - - diff --git a/src/demos/zdemo_excel15_31.w3mi.data.xlsx b/src/demos/zdemo_excel15_31.w3mi.data.xlsx deleted file mode 100644 index 40655cdf5b0358a6c4337bd34d2ac916732ef9a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10065 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

        88@jKqq*r9Fp5sqMMJDQqJ;s>>Nux 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�Zt8Bf$CnZYccb4HJ<{srqolNMQx_&uxJEpt zJ({83#KWuL&w4anU4#1kbl}J9_j-@@xkd5XbLB>)gG-w4?L57=1bQo4Czc&t1Y*6? zS2sEp!iqc=R|~#pDTJgxK&S-7I;grjJ-`zM?B0=vN_8li{sB1i+smUfmOGHF89?HT zr}spqoW)z|?+~-yqu4DYy=g?2kd1uk>a$K%s*zp|TegsBeEjme%lGhrjiYa>z^;Ks z5sSAXv9KO11HEL#)8&LQ{Jk;^KTkF>$N#YwjUhtDUkuSHs`i@T_J4^`_}i*tRb=xt zGfrLVZmFIdEak-91Ks=bqF!8qGmZ}jbDf1aD0l2>+#$(t5nw3j%-}o4RIwUBM@1MS z8g2?Crf%ha9Hh&`B(~phIGJZdQT?;OA?m7`j_6cTh;%rDgns?J_mnPoOWJ2&q4ue@ z`%XnhC)?oBlukZ7UV92Qo6$_CiC>J`%?7YqMcV#Ye|(kt!dOLYZ|=3&5t+?ywt_zQ zXlpKIR?t>`^ff^2$S;Cz`KxCq(f0bea{V*UPY&Gukn<&x9P{2?L$7sDvYwP629C$3 z$DGphA&9%S_Kt`?6ZnXSs`{a!H^zG01&?mPkh<=Hxk?i_{`7g_k^qfcWRw`hE%rwN zZ3{PiqJRv)`58dx>@1*mc#E3WIfn%4mLu&cjZLC#|0bHMVetK(FAiGtx%`7YbB5RA z@tLWiW;?#0b}*70z@Sb@>a-} z2sGsI+b>`_od-XK1|#q(rzfmid`sOij=L*#Vn!IRQ^I2>)cpE|a3{`2ZlAGx2OK=@ z;el4G+s#QC-P^0LpFR(MG~Wc~hQ=Q8^>bugzBjQqJ(l-4V3C(8w`Xh$Bda_s?iIk% zXdf?~nG>k+K0E$$93K_CoS=HP_J4_l+l?bs}OGwJu5A6jf@Vp4AJl zBIz-ia&)s#(y_PXJ->*nOAJ4$2)$1LnY(hb6^jUy8fOfL2xdr{saX%?Km{98zD92h z7oX5~#RIF3ZqPdFV3#nK2H)@G-|wvw3&63VqevrOYZ};He5W-e3{Yn_4b{waEs_Dc z7yK;nQc~iFNzKq@f~cRH{-;f0OX$&RX}+UQPB!1bjX^N-y-|j&189qnw<2nh+I#T} zfmrtHOyy}zSZKb@$E5%K(PxE3LecFG?9_lJ>P~GBJ@0Mh>-{PFb?KjM|1$*k@YUH? zW{Ifm9#lsdCH+MA%)k-C_>zOrHJGHNl}h;f>D| zE_1}~3Ut=9buL%_iTg1)(PF+0xRJgp;&@!=oHDiAB;$TR@TOEJcA@R;!?QatLT8-A z0di|>3UyEhh3rh{{>luMi|>14e6Kb*%C4`AKmD0dXCaCB%1gBPKn`3D;t;1z4_&I81s16E_hvR{(7r;>6~)djg@%DU7a+^DG3{rw)~cB z@qrCsPr0t{bdllL*kXO#h(0_&c9=Imu~* z)=&kO(<GWR&KZ2jGLR|6JPa-Z4#h-xG8&-1AuypjNcVy5EOx(P4h*RfH5K7s|kpyLQ%tAr-g>l_| z7C`m_D)N3N4S)D&4&)p~=2{|hqQwXKWe-wmNO%Ejt_){4?%0g6W})5k6Se|=%TaxR zVf9Jj+hUdqNA_y8I8jH}NPM6ZoLxh(P_yC4np}UA5)CVt8#}4#pAD`kN_LLi*E;uhRAHARfFN7) zl^OP5*QgT#78SoZixE_1E~%*(Mi zO62ROa5Ng8pw#W9LEG>B=dzk6c$Z)8m>0Ryt?4e{Yn8}@=XbykZ`eyE8JyHrZ?>V? zSMqp!E?S*2yO;a$jEmEVVSnD@B)3QA1vi{ci)q#PkA9F3C^j7f|1GN=X_-#H=H0Zn zL{wtB7%|;-4!ZE8O1r62cb$j|fB=}rAtUw$m2j;x{`EfXa^G7Ic6Zk=5$hhL z3^QZ7FLst{qZ-S%Su)CxMZPpqKxe;di`{vK==*r`PaZgVH??@+gwz+xA3Z)lQQl|0 z4*$x{mXCi>h>n%^Ler=Uclgx2q+S($Kc2eyuQkMCgT!M?jW7yPqqr zIk8t3c7Ide&e7hfG?xO;_=an#=}hazocnN(x{Y#M-wllxdD!;ErDpHA^POF(CrJJE zR;T1{>Cavnj_9oNYBR=Uf@#Pvxu^6k3bYc;_U`Gh4tkFt($_5PI`YG1M* zYNoaOKR3ICu6}8!rt{_l zD;OzY2(V{3{K^xACgXpkCCNsC93xLzEPm!n!@B|=4nZq&3t6d?uM;25{q19|X+s-{ zSPi4NAQ|ZPpStas7BS9TxiD`-@Ou*6CTaR{$@$f-!CfMoc_DZX$eB6X7ydO zbJK%dJ?T`2d)*Q!dV$8xToE7Mbl~H4uBNGEm8nRQ?zpQSTt&plc-eVX=G2lulj@ak z{O3Rerl~vls2Woa}ms&iP$I=-jwT7`~$zwXU)Q2U;T5AQs&~kfCT)=p(h(>x4Ktg_C zlC>(3TeW|LRpL+O6Oh_6Th7*PGpOeLDAYNg0}(@&y!sasM%U`ope=Ono$bBrLm6X1zywHbQbEHx$AV#U_t*UIgbZguI;jcM z5!#m(pi-QQ13*)Hgn2GWVJEv{HhFQ=8iD>3Z<6WGPQGxQv8f^dy@DCZ3nOEs1V-KX zhnsuUI^9-<8M24<=&?J@J$My#x86~1(#UtXQTQFp-Npna7f zP23Ys+?b>nXtj2Y$bpJ;lBlOP&tkr3Dyh32+^#bV{0M5-r z8Zkn@k_C+-ZZ{S=aQz6>sHS%Z1mM^8_xe~zVKVhEshxzz_txV5f^Gy!Uma`Pe*H!3 zEpi8Cwkd-O`&rHmSUm8i5_Z+qLt%`2BkV4+lDypP4uC=LzowRGELTl?cTX>Xn)(Ss zu_y@)$4%F(_Vh&lSP?F)j;zTIxznK;o1v0*tG-!Qmy|QSQ9b>(G`;gS$kI1D9I%DG zeJ0vPj$@IC@CGYrz!GHQWcko(VsLvm+g1O=f}l26eur&5l5$R?t5px zU>0jd*WMAkKRPPji(1g8X|mp&P-OmJHyVxtEK`+sb8Ga))wK(39fG1_h>OweYD1-b zf@!7;a?=8B`7h3;3(ps#M9VKI7-e||sl%Azm*RlQzhOpLnNxeE(%fn-?{)xh;0t zQ6~2Ajhm+%XXF6?!|JhnBr*z#^a1ZETa*Nt$WmEXD;LyR?AdM@veMia}e`k58WZ6EI!X zBRz1CTVn9La2M?H61c(H>)Os!tJ4_G3jG;a0x?nGq8z|wJ+?NoEhuwO;t+^~1YwhU$^`f5byI{)z{wqC5Fy!#TuG zDh6no^X2`%lY=5l%C!_z8=wDY+}zAp6#JzPpQG$U>bJq>fpCsslTs`#OV_6_HC@KfxF- zE2%Bzu^0f15P30tmV{g)EzsdMY^1x9Ji=a**kn?kAm*ST?MqAew-+Mz8nkkqGm%FA zsK9SmS_!xjCPWXkV^hmr6R(CVdLWi}71OoQrVYX!iyB_uM8*z7snYD!Vig9m9i^hWY==xNusY*OEU=YQ@bmLHMb$JQ|gGM1Zm zDeq!OvZ>)w;7ktWbPOYZ-lsVs%e2%FfQGjJUhnSM(z*Qmy4&uxs8(-&+vnKAkW?cK z7tyKILnN8MN)MwsypRLWJ`;x9v#Y`o~pCv@teYM>a zx7TUVAkdN9Cie@3z<8CUo3Bne_Eqgmo&68OjamBOB2pBm;H7A`gkFil(x1+eD(nz= z$yJT~O}cj7h7!80sBSkRxT4%iNRrd`OL5JL7e@N z_AGfb&`)sHRf0t8F;HUpzBKZ(y~nlfZG9yuqIB4$OhaK-WZ=!wIW>Bw(Rkmdu_Nsq zVrgw((9g?Sp>Z>}x4*)}&m)ZL$iMMV=dV|od1QruB0v{Xsy&E50d}0QDFnz4i96IA zL3JlW@%)D*8lEK28KVL;O#p{~28JrNcx>Tsr|+X4?Fe-Z@YF>)9aY3hiV}fjAKE*A z5)Z-d%ZJnIoGE+A2OrrRwmp_mc6tUFLE%$Ts zIdytQpHjM*fQc(_Ht=0K4&7j3!&_+$gd^D-f!3!kbA;MuvivPP->mI`*k1W7Qly-7 zBN5(;+Zkp#&$eE$HvedxE>jK@kEO*=NeEBm8h)>t+QsuVW4u5aB#eD0;;=|+Zz_V& zxhL1uZdcd)nqJF`n5#GrL&%%CM&!7a`DJv^wZ3hRUkDSk|1Nf`ULtP3Xjc}Y*B>y= zT11wAZgZYD;`2z8@kYPo$ZaaI}fZ03gCRV>j`8~)J22FlH>xC(R4SHcx!jcDlAkapctN2AEejHa;JTHI^Zf99`vlbd*6gZUs)jwm4N&1+GeS$MeAP(O9A6#9(wZ1`!_oJ1i7KqnsTEDUoI?sGJH0Ncv)iN zO?1Vwt_`MRnRixej*kdJyD;zWDW&gN3!cdTB%S8ogO<{G)i-Z4&1+ga*&7N24lJML z@#d)2#_3;gl9bET5SJ8hTaT6Ibo!73&27Zcl0`(5dP8my&10{)c`t#pfJ4n4%_Y%} z;}_y(=L|@@wiikA~9%#y6R7{=$w@mKAY+H2*^Ovx^^ywbSL$T86OpnT4pT zjX8&EX*l*@#%~BTizU4874cWBWUfdcD4I)_v%dR;5@(zu`58vSwv}71{5zjdik0+Z zZXnR#^z!Q=!j-jVQL@ncBEWIyn()Shvyd>}6YK6h0j?DIvr33mDZxSt)2=&~uXQ=w z{B|NxE^t!U*CraneBp3inm6rMprx!nopQX277Ehj9saoIJZBa4n2;#4R9ku{vX?8IukpHL67oG9^D z3AJ@w*Rhue_*NrM8lub~O%LpWqWky^gu`_Mm`~JPzt8gFx($$U>)*Z!`zIBWw;$!`#X4Dev&Dx(oFwPk*#bO8^HDk~iPlYS zQI~A-@%!WhFHyAn2aXsckU1jOfkDQ)szQSGoQ6y3giD5I&zV<3;x@a?Ig>+M_CwnY z1A=sA=P4CNA|yx$U_>Yf!)jfJlg1gQRbBJ(8@}ta5?k;hm>^0Z{>NMN8@gTWZ4t$< z89XtUIKz@r2+iATmEsIPJN*|Wx*53*t!8fG*aoGM1N0qpOSep2F)jri{vOGeesXzd z#63z`4wcEQY1R^%!FG!)ceqv}vLV3_ZPU2-v0lAM!3TwyQH`5h<)%9wFwfYPlt;Z) zJIO_smGAT)#ybR=G+plaffi_oE14K;REc9iexr0B`SLl+~Gkxr~@Z<7zMmh zqZ3xPD-Bwfgq#W?_)q_5Egrm=^db@HlFvVCAZ zgUDr@%T}<}PGzr&`5wAryE-Md&b}2-0`6%5G8;rs5B@{Eoql|e5Ea+KgQo@XwIEPv zFOOd6qWra~*cnHoD_hofxD$;n>dpSj>0vU~%o}g(*$me9bEk@bdi3Q29aH=!g876LMt(S84Cip37v6a9HAp8fej?SpZ?P6T z&KMmQX^$Rw#1B8w;W^{pb8^w1Ja|4#8YQ?twDy0i;(b%8?)%<0!n78H@yZ0-tf(=F zL!;#*=O?S@So*^mPW6?zv;I@A&*xV0Crf_L3zhTC-$`1_g4Qo8F~1RnUW(ih&y~FY z{*vYL{bv4@u~PW^eSh%}7lAyzp&8Ew;8xMc-D#9AGSh{kq(&ViWL|+vm+3p^>n9lP zav9iMCloiXi-9V5aE^0Ikv}m*Zf!7kGC@$LB`Wz_^xE2ny5+gXXbS=kC1t@k|?Q;=b7I2BkT}`PhrZ58gdh zB^icDCYvkcDQ=_{Rexdd?lT)*GgZfP!zWVIt^qY_YU54ZrxcZT!) zJzMG7F1RzB0}|KNyShdw$Yf&xv5{)*Q0ycllxsr$^TR;#S8r=W9N1>*U-g%6{Z&GhX^Y?1 zJd_e%U7e=cfN-=K!A?p))ny}WA`VRFni;hDK=|V3si&462Q2=Di^+GGgK z8WK(}DeNuX9rIASm|%ezzLf#4OaMhG@+XZxsL$wqaT76yo=LO5?x>?*3%t4Ie@ z6oLZ6uQPuwq!PS@-1yLi{gmw@+M#y20NYWU3;IG|)!Gs)S{0)(o_(H0heT z<<657%Fg2RA+`4<8%s`|bS=#hRoaF{t{K{ui@HB1v6s1eGRzFn^w+)8p8m(Xf(Ir1 zzVHV5X@`{kgi$w_q7|<9Mf)barRF(zcf^Toi~incMknCwt#%Xiirg*HVO>dlXx~yY z)X=q?O-aM|#%mivPbUE>NriBFseYS;42oN%l-yl}*@7C)qhbo+^Rh1pIdu7oXAgNO zlA;mSNb#vPZtR`|B<-pXsz|bb4yD-UvR;=8TSB?|&8xpk1;)^%%>Q}4#RFR?mdhc7 z+g=XE{_M~4i-ue_g^88Z+Z64zm3Ufwx6y~`o(;uLHLBNbWiuFh)kV>05%9xN&_fT( zh+0jt;-G}K(R~!wlgUc0oupk)G@{4EUtoy+c9{UVC_t_;AG`~YAar&JHUI4*s%<@+ zzt>Y_pA(ONhX?)?NWkv+co!pJ>35V(0i`k6+W7xDvZTxtjC3UtS+njo_d(jOY6{m7h{9E{CX2RW?qn#Yk7TbK^>Pb?+#T=XF$VL!<*D16S+j zme~L|W0-~QQA!?-A|>j?zsuvi`EtCfuNro-%~~(fxx1U@uo&uadxra@$V-;17fjdJ z=hN;)wSJFqVvFft>;NAGKT?$5H)AZ3a;GG5(Z7pHT>bg&?#^zob@82Zcxp(viR5C8 zPU@hFN3ryQGacX_u>*mZYnO2hY@dcZNN0nSHG?a(ADEJ`vhAwLWhn^c%hM3HUW z5sQDRVR^zpC=W#2x}Gv+yqtv68GVA=A6gt-C(ko%>Q4WF*Gd^P zUv>}wp?lrN%FWm2=j1^oJLdOZT)|jja{OiO65>jA?EuB0oU)8avF0q{)b)gmWblDC z5SZXehjH?(k&Mt_!e!kH?o+G3p4pn+dl2LP+)dHUZ1bOQtyL~ec7m--KVPjj7&KxJ zIMk`07i(FY1Xc$;I`P#nwAqwkk4$_AE+>GcZPn2if^MhbCd3k{`rV8wvH!P*m{T#u zmiWI;3F!mZR-6rPDHLefk+NV+7wm2$-=kNU`OZ!E=UdXVIHM89hGBzM`tWC7|C#+x zn-%p0>_MNCdyb!`n-0s>Jr56fZ+nI-qqjd;Wj>f8W?m63EBy;8A*S>=Sr}bAmW#hA zkr+?dD3SkG;mZCSspDnL!BJe@okuj3owE&Wi+y#&YUJ{9}>_~ya zk)k-A4=%ad##)R3XKU_Zl!|Of&ED5ED)i8CzJbhvv&R zomNp$m;3$5%VlgHag{%FddKrgTpKhjzeVG`rFt^YrKL;l0Qx208uqvU z%|Gw2hnOGpLx6xt=VCqL&~Y)=hSrnXrOHnr>KKZS5#Wm>Z`VY;5lus4GKI~XujSo9 ztz2f1uGvWjSXa?Jgo4`Q{HybU6Pud~0;6w>kca#SyW3=sVU8du$#1s9s?V60C>3f$ z0xExM0r+INiP8#BNb>uoC7*JZ^4yva{3;ZZ{G9bouMgL197nE8v)QY(;Qav8fO;A3 zU7dX5_eBjtgZ6I);KB0D!ugXj8n~h3zCGyiB{LT`U;XMl_E+$r0Va4$znm9|oNCXc zvTuH`)%e$SKR4R&Dm8w zU1oUh3Su1tq(s1H@+TECi>f1gW^m4{BE??~wzQ?-NexRj_XM00H~{BVe~m|lP@tOo z<(3a-jCQ4i(L2XvMaQ$mLe%JRMZtA)SzH>(8)M7fHzZDdTSv?vNOnTrvJ|{{c=)6c zvLbdm{q?Rn`|7S!tei|@OeIl5KLgs}WGrSU&67f0}cTVC=gK1HPhpwNuf5urp(;~?u8jrI_M zR{%q0>glOijJMZbA;j#{eRN^$bF%}2C?R6Y(~NA{|AL)KH?EMskrG+|NqwcCDLPpG zfhJ1hv+V_jk7w(m!bA?m_%%mXLSE(7z@UY-dR;aAr>^b8-PbA8fW+|E_=g6fihfKY z*cp2>P@i9o?xkI?Bp$sf5}}&h053noI!0wCSL&b@s0*iochsqIv${CVQs61eBgNDl#JQ)hHNeuq#f}^Q&+M(5Ji6 zPUgP&*!wr8cg9Bn+hII+vxaP`iAT2L&ULCxi8=xwy7te6pbrKZz7&Rfk~u8YlB{%9Yp%-(oYBc|(#Jf#Mh2&ZZ{ha!3F-{IbKGi>3u;jWPN;-Qs`Aqtx+uae2U$KQxrJKf+axbsY8 zC|AdIN87RM?>t5LakoV{eWUMT=(C>6B2^WV;w#jY#U)1my;{Eb^u%W<*KW^6iKGQf9)3lYHg3OMO=sn(0Co6R9BL zBq!@7>Mo)VA-c+_U4v~B&Y^bX?}FW|=_2utwR5^;Kb_{6$$3&7q>Km^mZ>_hE`&n` zbnLz&YSD8(jp#w?IUGwwhk#lB>4pQ$ga!^h+(~q%CZEQWY4q3>8IsI}YEG z=M;+~Ubw>D4lRWjEk}Tj}vqGis^y*e?4@QkF~bq>g$~JMA3D+ix0$|CD9}8k?HDd zME=B#7@${MMol&!0!(1P{633+$Xtr*Q&YVBl#<@?>zCy*WUINf)fbq0Hb&$8FyFPaB6Z3VFl+J*C*Stu=s`qxh^#`#=`Tf)Z{+>{ zdV5w+9GN~OCz@>UQ+|-WPd<++c&Re_qDn$lol=R8 zZ8NhjWUl$uLBioIex#C`6Y0j zbm-;mIpCYE`o$qhTMow1Ju#bAFp4#6sM3&*^~WFv^CsGbjO-bIapVK44_`jOrUK`BgRh2Wty=sC+4+6?wBZx}f$1E+U7lB1o2HTl0g2+V! zCjq0E_-1fsyhQ4Mg<~peIFQ3365COZ1^uOSZ^gRA5xZ31=E4Mx-ymdOKuo*-@$>xI zv)w-7#wTemXxf17u|6S{U)eJoP`m)v&ATAQPp%--f|XW(7`KesE;u}DwCu`$?b}#S z+3iaUp^56i$JD+n2-eKPH=L2eOtW$?1ev;)dO+9e*yjiH46?7rA&{Hk&hv0PaDW3; zaAHS(?w$-QC*|9ngpTmeFo84#lMDL8M&+OGqA`&eVMKWQ$eE6|Hmx}ujyzTRoIKX9 zZK>*BPpn&s@RAWuBZtG{caID#xmEYuloQduKcVV%NBLG0{r9tdwWEVx{R9zm?ICmM zLjloS11^faR;_ZeS3*0zbLTcY%jgg*+q&BL;~{rf$Yr(UV-rSLTv5>4Yf;Ous_2FG z4*1ivyw87O5Fu$gDV{G~JR*}{KGkWz5WMgAzW9q-5vR>@pY6O>xFazY=4DwER=uhVJhb&Z)Td{+m-1a{vzvK%x5?8QT>PIOox}v0e(T%T7F?^fQpap zbW!fsItvvVt=2xFy(nU%(IAuc31VEcr=A*V5|Kjzn4B)M^*&f~I^G-W{S3c;I;+>~ zL)=P;Knc6+2kj0a3@uu*1?DwaF~VXSfF6cS@( z>YI5QT);5i7=~;LiRTcQk{`7&)_6gC)(TDqHk@7U8UOuTx*l;v)nBK$ZZCx|l~X&5 zrk`ee!^qU>%JQwhwusIyC5MH6I{di4dkOW}guN6g`ZCoLX~2~qH2ilH*L2#=;j{0* z2X{t?UnJr{<&n4j01$pEE9r4p_TCH2xP{v?tPm^Ze!U!?7ASOj(yJyh_GmM=^9I$F z|G`T)1@(L!C*tf>2nfwkXd>U|%^IvddvsR`P9v%yA)*8-cq_kh<+}w0hE6iQIl8wR za2MGOm8K8hDYG%{hU^4B{CQN2oJ4;G{xi&Z?DytE07maq4E45Akx{>vzJCv1#Mnm-LCqIl8hzLC8Q({OJ?|b8eTaC?mVhDCNAUa0=c{?=(#F1K0cGhsyEI5 zLLHS9Z0w{}&L{X)r-V0WQaY~0xTKQMT7#Gpm^rr7`7KAhqSKom{xNsRCESWhJt1QX zDr#|v>u@HhE4u-=Lb+u`kX;;b{UTgI0eW60n;4fkMG3wT59g+VM| zv4jWUegHCvv^(8C-_c?QGBoQX6s@Xa-d}vmfgX=Ma9s{VU2nB%59&gId zMC(kLR8f>H9*yrNW&T*%3+-|#Sxa~j`~f^%zx4{hmRQC|D8w12vfh3d&UgWb)_l0Z z74I|{Y7>*nKCMifwe7L_T-^SXHe|znukh3znGgZ!7AYOO$FCh$XBAV~DZF zV^tzdgMPSuS77Kif|i(K!t83ktM7P7`jU(yHki9HHK_7^KcXKwx@X1-!)hy{yyO;V za5Wrm#rTn5T7#{gCW{_&EiAtfw=ZBveP!cSzjb-QC@-aCb?Z;rD%0@2xdG)BRre{E?Zlu4LTU_e7i%wzo>SPw}L# zrw)EbxTQ?=M#n!6o){lQ%K6v9+iWcVBPMcilPC8AlTC@kA^vG;ypJyCQ^=1MA=;sM zG11&9zuI?4#A3qZ+p9*LTcR6{X?5PLs~n>YwS_~WDWYG{+z zzfYZzE;Pj9i>C?Lh@Nf+wXBv5<{cahR zo1ro;w#gncW;~sH9}AQUeAOqgvqm_)hRCRH^?#q|fj0=bY zj?201%6zCE~3%xQdUETb{XY=ejiNJld$1&Md+7%#G?z>Cn6-f=!-E`(b!fq zP>NNkGT-4g4ZhBaNc>}hjTNg0ba{cF+b!^;54j_7 zIc;d-Iio0gsrpZ$=->3Z z?pR^0aZy%B={U-QxNS9*%WBzYdS_Gm_E+z8Yt$t)lhHj-RrNae8Vu`1Z6r)jMj8xL z*IRjL63CU&XjIc{4S9>pOct3M!fRI#duul}nb}--t2id=s67{Y8ml>8MOpD8m!EA~ z2bO{tS^03%+u+$i;r8e$G4qTt^Sin>U6lnW3lV@_Tp zq5zf(BcjLkMmNe}RH7kP1Rn8OkGtLGX1J*$V)kn15)+HP{I}Rhb}zv^V>dW=zeert zMz}M%W$yf6BY2mDNp61l-9P^5E7SYwKXE=1L+4N))6PK(-gQ*KQ3hb}OTiUa99n(2 z%8L$T(#pemr$+AhW7E!*>O)&kWt5M?2QnJH8>NnCGhOLri$nyv1B~ifvp$6{oy~xI zOY)RiF@pFE2s?F;wdX$+&COWyOQoleq^TmZA81-?_h{K8OsL@JD9dGY*Zk)C*`Rhv z(v(7g-f*w#<+EXV{;`NtXso=Atgbs%OLb7$c!k8*hBUgrj#uGlN&yOTs#$QPc8&b4 z!mH5Y{kH_pYLKeYAGaz78dl=X{`Q_WrVe0ltXXdMMOIvj%t1dPngkkk8+nOLN7#(J z%|=9+$t^WV+z?*3=Ssnp#6^!!+~R?KYdeJPZFNe%rg(HGQan-?!*?o>+FKw!g@PJA zYj?_%cJWn42wfpAsAtbot)H;9xl!_t`mWThN-dmVkapDWsw4KN?q=dbne5Sct3#3; z>J_TL~r?V_8Wc-$1Tl)UDdR~Nh6rTwn6 zg{YJ^u|+b9c?dFD!6-rYmZ8jNi^ws|Ps-ZFGSDrIv)Md{F#AH_a{J1<)Lkl6p#H4A zOBQEfFuf>I%lt2bc1W?L0;jXT9$&?e3l&kpUy^T&tZy3r9HbiC>E&=Vb7Qi~jn{gZ$pzBV?e^kk|!#G&^Ql)z^wc zZ7$U#$F6B!ZDL=%*~%u$M7eaXO!AD#*Sp6Z_klv6FHgP)(qUQ?uBv-dW!griE9drfXS2F9CcERiSvw}4 zPTc7w9Df4Jx?`h!()FdchPTNm^>p1QDtjdN8AD5o@Gfl~cI}?<4g+EO)=JSOwENt* zPu01NnoG}MspfDgB+T3=(pDAg6C*r+AJB%Seun04uJ|ExTEEg9zR%z6gbXOkq-PNpCk@PI;(-E-r5Hj9wOjdRI@$*I$FnT!G@t zsstVkBJQ(gRj^CO$-g42RB@CMy$~$Sz%?650K^6UoNZM_9wm<&jBi=ZUg!!lSeWo; zQ@$zS87uO#LOl0D*>}J+qGbz37X9V`jTtrVqd4kdb=g(!|4CoeenbXLuy?b?w|8A4 zpJ47?JwcwI^=Ca=0Cj);274uP;>wZTLN2!mg&HNFyW#E+9R^Z8@THeDX=}IxxP-@c z9NObc2+nz$Y$B}|%*rEb-xvC*&YItT621g(Iaq2OqQ*wK_EC824hV$*@hNxMpE*vt zA1QUp29iuP&1ez!+31Ya`>oc=eMdj>q~=?qejP7~KM6GI$3L&I&Ktj;X2)%|fX**Q zES?K6#TvOUku3Dj?uObSmuy-~Z)-9OP_%`6I4z4yCA?bE61Ez~$y>#`T3KlyEHgMz zw6z(t^*?s|wmUBqr4{%5Q7~;aiap93tvI}`MS|gw%XL<4QEuVWlM`aw%M;7w!k}nz z3{gi`TY{W$8U&Qv^iGYW&XGK!9l1Fd{_pwk2(@>S^7HRwYdzM^{Wzmi+#N9Xy?PMn zM}qX9Z!GD6zbil4;TQwH$?<^w$El9QLFoutmnS$6Ob0!+vL#w?WX3@a@@4fc@byB9 z@O>f4k-~ikVkLYZI-`704CmZq+ilg6ifx_s{GOb@KX#~%3_lZ<;$vN%mkjf+oYCaz zs`{l*hMI5(cEa4>WS=LRGVUnNhsx&Jy25|WOO1V*9g`?ZP4^W#%xg6*;tK#~vMil%j*dn0%TIi{Bw5NIa-7-7Ph+ z#p3*GeXHV~G$-R;Nh6k$kp^~0jd>@e`(N!@Cm@@ucwUpz^E#TI9(m)d#P(T9z(&Hpjiw_IL#^R5fEsVOo{C6LWAEL>eXrEh1rAN84_AGg-X7s_5; z4=JDR%W55>LGY(A9A0koo0Au*8q)DMqaMAn@e zm_bWD^%2yu1!m7%&5EO$vb)dt!zh0wuGnZ+W7XRC_R%rsDk;bOEyuhd!Oi0P{qWaH z&2L_+mXYlRe64FUK>;`7z@wpS6bruGRbn%7fOwPe<7dS{XEJw=**=~E?I;;~mrMtn zUcBHHE~k^>kyyzRPt(Q}mLkr2iXzR6R= z_{M~~Bkub7t)SrtHaFNK87s+xn(&ILW?pBC>)4g@AI5kKfu_=grelrwmvly6$L8ms zAs6zqk@f(8v|6JVefRM;H5|)Bdey53{w!o=8so-zlc$_*776WElSntnWvC5S_)djw zC(=E}=UyNPPMkCE>d|c99^q5Uvd*HnNm|h$&P!EXjc_r%|8#FJXFglSmE%{~9eS`W zO>p{K&OZ)ujhcCD$)j@(5J>~-?i$+CZjX5C%ob$jN@RLFR1l_0GG;S&O&_pc6l5wC zZ&Rqr)m8f(bZkjW1WXvzfxf~Y9hG>RAa`7~%RObAwzzIJNi@e0lV1Q;F&ne`&j8EA zS01JD`*X=(im`z04i+{^XVTldjAua2wd-pO=VbH!`78Y6RR3b&YB!EZoB1+v6>v*& z*~e7|czG1w3&`ZtlN{cV8qeeP9Gv2>kE|Yez@2E18=WtCX!DaS<@MZ$%6zJ+WyFwM zgPGv6w#-zcjjTE$edLF%Uy(kC6`^asqg#J)d?I}|cQ=``4!6G_8y<>D(iuuI^u=7Z>mya(S)g&b zB1%0V$3a&*Nw8t~XDvduLEppx$i1i&Rh@LPLinmKS`iIl3HRJUvB{iRAtS%@&Bxt* z)A&{nZGUbt%L3T?80{v!vyUUUjVta&cQ_${XH1@f_oLaIrxH2$1p1M)t!BXr|J<0x ziDa{*(2-qk?l<25`;acUoc4QSeXFvF?Qp4vsa<39AV>|a4IW>%npFr9$KR-B@QGjl> z5dv^E)7?0V#aXFt7qrbwU(F_xv4t-P7=4^+QsxX==$DO3)jP`*AAzWRj#PB-i1St7 zSyu?A)og{{|Hi2E1o$f-U_O6@^I{)jUGgEI#`vBsa(So; z0I{{EHl4M#^T=*{#b2w8t8wY={vRaXmj4kj`iOd*tv>%ZZ;OUAMI?xBO1KPHW~rpF z(exx=e|vwY%TB$Ub!<6uQqImwN&R|>M~KBHK<7sCyQktq&dPA!zOlJ7D1Nv`(OtD( zCtYgdMebUM*XS2Kz5151*ob{=Cjk%MY3XoXQ);#n*C(TB-4?*eQ=b)aD+|?-JrHMDoyZWym{OtIT2I5Cp3UQ0v zzmU{wLDRr|Qa}rkoAeze3G){pK??8uN=&+ZFUx0JQXVTW$xcU{?euIu+iG$l1`!DU z7%O$S<#c8DzkZY@S66y|Fki#@))y{nR!aNY9AdovMT5}g@jFhxx~}Q+SzmzqQk^h| z-jdPV4!u!~tqf9qQOjwx!MaWh%_%=_=_$)iMn>0)bxVDP#*aN_Ev1!$dY{&10i%oK ze}NQDMczZlF0h9={8V0wc;TqZFY?B#{$IkS@zcMcczB&0`3uFm?ON$K7(WFpe!Aw! zCci2q3#u68o6kfjHmwEp4JsKq@=Fs)KVbInJI%)u>DPl8o8ra=7e7!>Nc?ZSi+{hh z>g^M4uQQ+KcZeX_%`1DS$`dx5-|cDk?&v3VDZJxK5%fDmx+b1v^Ytq-?cVb>xq7I6 zMn}yo%%e|jsnchzb!I!hV6zMMmGV2@C(PpzZKx_X4^?pfOg=72h|9--7U*Mm2fYc1;Z~L2ZtriCl#AgGv07NzB zL`Je{^{-?oKFBy#hkQ-iG#k>XlTbCt$on@E`6li2Tj(F5i$1m;ujcLVY%DrB(DQ-$ zZUL8JRH}vYf8Nz>TS11Q@RFW&14QNMCfAp2efmX$9oo8|WCd-dwP53Tj38Z5mz z=SM7#aH(xAO?*D#d3-G|uOHS;dvMOMDfS$-#9RrM9vm88Lb@v6zCJAWQsgH&N6tRe zbjYuBm;n76YObgr_q+agD&zlHZGE=?Az}Q8rU`{&@E4D1+qJxZ+oT|DGMPEilu3|~ zJ|y~`(>6%cRt*>-gq@6pvc<*!M~=nxLKYdXA2w-KX@O6!U-bXmCRc37T_&C~Ea`NS zNrZnvnDIzGyNBV|51v{^=4@c9FNwe2AyD91lh#y)u3bJ**>rmlcH1eb;a7FG5_n3U zvRGHv@3ZP<5LGtqwzrxsG1(bB4Ms%c>xreR!3Dh1pxu*a={Z!DRc@#)skhqcT(7`o zdCB{1e?rvTm(;tN@cnmF`kxl~KWoCkdmsP7giyvcH~uds^R^FV-(Y$a?wx0xPLNHB zbi}YA;tfouWX@-|UFRyu;9)0d@ArlG z=8QAgo-%#drDw?N^!Wv2ZaTp(8+H$P+5hkXWZKs_huTWwo>P?PYai z+Y&kIOLMOVge7xl?q2iDt&Jl*YrL+8<6=B2HD7P-tN=4^0sf|!a1$NitJ__5T^8#_ zwO-C3ccklW%NJXLy|4e2xp50F;^=RgYvmZIV0u1a`Ms@^iWQn6=>-1{(mMC?FAtkl z$@1GO;fzH@fgwT)$lY0sv0Y5OYtlO`iIJh7qgzRHbSodwt{G`M6WE*Qdo$wJ+}|(F zdR7N$KVhzClg+>G-%=$MRP)B~7SYO?xKocPX@G{Wl>gg@iYpR2{vD9S&nKe(eeQy_ zW+_1=m>fp0?C?>PexY2cXunLtpvr@OzPi=&M?8N;W+LKVColb4)8Rkq#GHfbA8I_$ z0v3j53;ze_KOB+j)N}k=upX*ryqMjKgV~}Pcnk-9qOh1lB5Ob!y(~TD9#}J$FlYm` zR69SPrm*aX*-UDA41*XkJ)>%PADZevoA&npXlGSYZl_+K#^8a0)FA=1Rl8<9}yNh2pm>zPkVo116|Jhd_BlFD9%(n*!DMI-{{vpP{#a`iQWSZZ06k&RPd zD9_E86(&D{y>c#+{_6CWk@qI>lwM;00rHcUR^+Xf>gQuaToN8JSMM~Scd!0QhtMxO zlt=u;WrQcML>Unw=w8uGgfV6EscykCOY)MF;3PHn#jQviKlHuAya4u8PmKM)Zc`0=6V`-dKW>EHR!m&Vk7<3%o- zZSHroW2M(8=Mfza|0i+D->|0Q=F@w|pD)Gy*9rgT+`&h4AcGsw9f|L{%&<6Afba1& zJ>Q}wugf`FNGZCL60=uSOU2OS({hoIQHQyJ)saO;Iz-AWk$@dY!e~17w0k0wWOb7r9 zZf92nN~AsJ_5;ZAH*{v5o)`eA1kd?hn~VnN{2BP&2t&=lsCs=4)g`($Tknvy<>yuE zqP17%d5Tax9HasQN9{d2$HTDZ`vr16U1;O%+|;B)^7PLLI+?4!5mBlYUnaV;UQn@S zKEIB=Gft+Efbqe&JM_E2APT2ACLAIG#5cr4+#7l&%kkg3>#o1tVP#Om+WaG+AJ|>s&_mDB^B9n=rqMEHw!zv^pXbLb7*OdkWY^AaIK4MtqG!8W&Rk1 zp^Ik88_1wu4i#owPyECEdjJ|)%B}5UkEqqd?+L33nztqAA;hC5E3v_{HMIMwButPP zN9Vinnk3GBwrExM+V2tNa_fxC-e9J*p=zGNF^BZ&{HJ&r5BC-S{nPFh-~|%*QGznk zwbn&jB8^5ZNT$*W-9a)g2%Rp(aDmjdtb64%O|XUoT^XbHpjiXrg=KZg&h<-&dWvghlbC|$=YkpijQiXgul5^%KVqg z`22O(?>=52xE39$PFGTUKh=6MBzHm$=~!nnWv4FU+$$dJwo!Xy`ZkCir!zvTM*vpM z=34ne#KfXVX;~;_v8hg1kw>Tm&@&aOGs9viVAKvyt4x@>C+yYnC zY7!S_(X8I|>&|tdm)^9tc`#}z>TKn@r#3#nan$u=h=Af-7KenT&do{q! zQMb;)1ozJMO@6GvrstbMM(ef2hNr(YPq>`R(SS9|ExSeHPr=r9pcq?5J-n|U(0RPT z>%571PMx#5B}i`0n<3bEI7UGHU+xHEN*=`y_iu%NC!ATb!GY;kLa-O){iI0*p-2`r z6VUM)dSJaC10e#B;%gg(xMq;@axuKPcp8@qFATs9YFyh5Q+D*E|K1LtqYjrN7_4M7 z09smlaWy@~Z|VFF3IFzC{?)chhp{t&-~M0|8FK)N^8%&$egsm^`YCfe-nKNsrgd+# zj;`{eI8IqZX>%(D&hpzZPON9Czc8xRw2>q3;zY`#?bfSCz$)r0e>dL?vMWiN8&&Hd z!H?sXqwhz}VJ0IY$P5}+B@pmI8O+;7f$W1)F6No^6LE++kpo00=8afWjFiI1#A0D!l^+a0Z_eiO_w_xON04bv92-*2X9X^ zyjxT+?sE0Kn%i@t=yD>$pSvbx>TNm4@^?2cUHYTyp}##CRUq}h1Q8%;wH5}Cbc=XOJ~I9u2oW_4d%l? z_oU-}ljJqy64GR&DeQDA9WjliM+qI#@EYS5h#N^J1F2IBq+*(do|t)qf_H4Xl9yw? zI*hsIi+-2}ezx2EaCfnQ#otrKxg1Es+4b@P3>~|Tj3+zp^F5vEmA{(>uHi|@5s?h> z4{JUUCgWoG%kX)y6F){Gi@0r(~0)iM_EU;t4a8wuV22>0uzH)ku*O{O%U<(s1GEG{n%6oj*cHwc{Zy8*2oG-6nbQVgs6-3u&Sa!63_B;APX-b~UeZ=Bnp zzudr*y0wB0f3*MHzsGb25)hj8~&E7o-wxQA2TsCopT8uW$3Cag;_2dnh6rDZ^k3t+gb>A z?xLD~wkhdG#u4+|B(;=mdAq1ESMxOyVLv*xs*G-!Fo2h@Y5J)H*@U(DLJDoorLTA< zcV-Y7KU!V}sZ9OoO9V(veC{Uu8F%JLoeJb95FVYHf+7&xHn3qbXiQaMzn!A-bqw8+ z?{my~;e&id3*F)38lFC|CTvH6^T0%5BZraJYVOxAAa@U(0>Q}aZQ&Rrw@7B;#tbgz z8aKU8Ew8X{b~zGlJ&0*prt7ZS_K7LP{PIw~g<9>%ytq*>3qxQ7EzR~PHzRbrVcr^p z31$pJPVW$jn?pEyB}GO*=}I6Ts@B93zx3i$t*Uv1$bF zeom>no5AFDGUriz7CWP#5uv=GHhE;}4 zUA|vsR`e#!Sk$Eu9qD~dJP4)OipO7e8C8R@9k@LCX7AZ8Pg}C-LC~=izJ0p}+V%hz z%<#LuOx`}#19-6;;@ytkZmfY-x*y1r;O65 zL{cW#WcPRKE&!-@F3{2u4Und*L2_f%Yx~;_8_StOMVCNgC=>gfgR@du%}28^gp0ET zZFq_&j4=oe=2!)9-HMMcwE$+Uf*#-Tk$<=>dEfS-i6X=~a1{0J#B43e3SM}jCCQNLz z1>CnhNy=%>PaLqe#zOTo5`|4qNHC}z6OiwC+#=*IA z9kYe^C3kjN(VKruS%lSFe1+DFm& z`603b6%X@|DXKz-7<{hHL3>|a1YqOix+lz`iG!{0f>v+qo=boPEXE~FYPWlhYDebP z^H`uvvggheBrwV;{6w_VQqG>Bt3zkIRXVbw>bkj(L~XY|I-pUN-2pFV2zFFVE9P3p zjdzBp;ShsGO*8Z58LO=!@8%l~*w}9=pGKP@FP+5})dX{Lq`~d%+54pQMtWd;%8JzK zQLWG^{|!H{sZ+zp+g6vK@i4mODfIKe{gA*vTtalK#Y6QyUJPz0W-v%Pll zRzRRUi65^}+DG4`oG-;`sjk1F7d_ox$)qIh1Cv`GSy{P%jZIr%T5p|Jh<;r`3*VrV z7E8GJZaMKGDav&NryZ9Bzr`7^uXW17z8Aq*hv=3wNOA_Pje2#yS24w-7! z(hvqIhFLc&{a1UIc5=}p`WmuXt0>s#Y4wkXlu=X6R{WecO@N#v&Jf(Ufl|(Q4MXgK z$Hy-ovxJh@*W%Y*#JavkOV_Ck$mr0HFGX+GA&t!0=8!FLlV0KzKu<-vi2b?j+i#DZ zb+qtDh?P6{E|d0&I31Qa^tl*esLeyHy#5mc-%cm!Y8h2pUDd!#R`_;*Iu5<%HZx>> ztL0hX9VS_4k+5Ci7xXg6K3i~!uqNFhIh^e2_zj;PIE3!RvBDqw5^E^eYgni9#M`LW zKm3#@4V9@MQ&|>4=b%~9hDIC8t{yX7Dcv$PNk#k;0=0f!-D{gzADIpvazivBP`b=s z!gub|B`|wwtG1_;js>5F3zQWy{Q;JE2*fFW#wV5AW`mD^mxfw-#(eK`emc@h)}#H~ zV0Qpnjudc$vM(N}!Wqa@%{3|MdGEhXvXP6Tk}>fo&y~_dR|dB!?)?}V4Njp1E+C{zFRjen z3y8R~0xD?NqA#w$!bduEC0)50i)*AhL@3?D$Zl|fs_+>5-MO~VHdz)fP}O*}1b+0y z+^U2ISh~U6rsf1(eQtNK0fbYx2B^9Df>&z*>iT*LmoJ~}G_?LeMs{1#<8FeE%jf}~ zKX}~X-xzZ1DUWV<<<=+?%}uXoaZ(m}^8^O1`{OUP(K5gzR15Y)Y`~2rZ*||^JxV|T z)kaN9z)-*tmN1%izP&Q~>GBS$u5XovbpYGJc&g7p-z84-NNS)3BYVz4SY6_3s1z?m z!Z}Iq>*OBdXUNyg%~nmPGk$hs_!t4>9e$ELOf7hS0k{Lja=g8D)<2%3SDFWxy1oy- zRoL^HJOFT)NJrC3f9qz{vJguu`(FHY{&x0#tKJ>UUb>MqbAM?b8++^+8`C*rIqgc_ z5JfAL(aa*8)nq!y)1U6Ed<6E1i)b;6`129q1&2=HEaCFAL18DM^=Jtlpryu>L*`J) z#YddRq}xvC;oFUSMb~rJzwT~%zuU2)ipr{z>72;=XfPEuhKa)c8YlJeE@hD`EkNS6 zLv^WKhJTX{E4ANL-S@6_i4QY@!=>`@bzkRFUFSNeNj3J&_L%=)#V-2fQ^{0Ozsg6F ziVYlG8`HQAbo11q7u-brvO{prmL!0cY5?Et1R&H_KVxS%foI?2^OJ#hcM{?@ZIV)6 zl9ty+4dvKn6j)&Re=XvOXKDr3aVJAFVv#`YLy!0`fyE>>tuy*n3u)Ps3B7x#CsrTZ zDZYV&R>`CPfYxVpg$*;IC0s_scli3~pUEGn3#e4HhQF5HqGPopvjdYI|IZFSQ3W(R zc85=Q9;e~1YTb-?**~j(x}COu^IFL?35Q&axW?N>y%KpS=G|3Z2x~FR-~R-c_+vCW z*);!-Z^ZYWI(EeqUQ~PKph}&84a~u?Fu1s_POF(}=%Vwn@^!KjL z0K;1{u66JMkdV%KYI;Ea?GVp{5^ThIq8L1U?HhWWAJ1Q|_UA=YoX$b2 z=7wn?m!L#!Cn!)e+}X&v2=#`JQ^? zV*Z;84RdspU)g60FJ^y_cdswkX~u7_(w_i83kKiNXyWF8Nx4e*^S61$ioS5^bD9{DYFjkz9EnRuaYl`H zbh}5yaV6C>?;tl~Tc%`-m)o46ZaG0j& zIt~!$Iuw6PTZ8EmKaz4-AY^71=Z)jfV=TOWQ|E2sb`pWFQyTrVF|=n16tBr=T^9x2 z-oVN&MacRQ{wFc!m&dW#4bw<((ShNNw+MyjfPFQ$b*7{B?IHOxqMm{cAm)q{3M&oj z)LcN8MtC@wU37+#33;H{S3tLGEMBSRXl&Jvc}v4Wg3mYbF+f@s)2W_y?C68;l)sA_ zQbp~g55B@jEl(+pWvgDs(mJO1{=iLwbOfDAq}VWX>OHGb$f2=iq6!*+Npw7>6ZeQh zNoaK}T_(6LAvu*gPFWOEsl8#apQy(MTDz1sl7= znbc0Hba)A73s#YLn7EI$jSO>MX-*m)dhjtqn_m7rKdGPy3|EOZ&d|I&v#A5m(l*Dj zz7BkUn(6Ad41Kl^nUH1CXHS&$m_U1yc|I*>W0PA{w~4JRD#rVG&Lb8Ta{#IvRv1SF ziAW&)ID6)88=wuUp~;BvRVN`!m&)tX+S1<6Q7ib)pK~lfQuAFsZ$XQewFG4=5o5go7eBSExwJS41%KCw8?+18O1n`Pv%)5+6K`_~I24Q0 zN+sP;76}Hdvw7|FDQk8N!HiIk9(B(sx~jUHvkZoSL*RcfTbr!vv4*ghMK0mt)Hy5j z(9{&_Kmvq$kHw-^@)wK{Tlyc)c-{r#+?N(;S0zNSHVXt9y4-(q-z;}>sF^6%RNEFJ zUquv22;`)*^QTfz*PWZxE+qGU&5kh%au%5&>6O}7ho>I|zl=;aAR6R@Wv)Sa016x6a6V-FLa#-*a2I2 zg~~rM7|CgpD~Rm{i+%4HB>ael@$rpxh&`a}Z4&F=d4fH_#t!b1J;{1A%;dhr`JL2g z-9_mXNN}-((Eh63x2(O87|{esL#wHb;c;qankUk@v1E*_Cz zriZKCq_Klk8qZEjw`6U`PTF5~?x?p6Y7SV_(Zx8>*--Zh3Gc;C>)=Gg+*C&ldn;=+ z$w@@x=BlxovP(GyVqNwru`6(Av0_Vs&w5yVt>+W0`Nmdy7=t(l_Vv*k)p2mB=gtA@$&KUq@N>8;^y1YGQ)yl)v!^kq?!bz5`XIgrME!Y7~BV7k%h z&5ywoEB=gbF-TSM11UT9&(O4&oMY@oig812Na>kcMEqUN1LH^_`pT==g`0F`rG%*v zyXw-5Dn^Eh2el8H;P^vT45g2v>ML(DMM-Rt`r3-R$)JIK>e?iB3ttAQ(LO=WLoW2L z-LA8G1MwZ!C`B>>BmPo_7glz>ZMK;;+A}wQ^|+U-_N{JXAs?LKB&x zPa(DitcXnI+M|)N&kOuIT_XoFu?N?%u~#)z#m@45kDQD>LG~!-zr~$~ql%u5>`@m& zf~VC$Ap<^|a}vESklslN_+2Qu*tc=Tgf zqaItic9$jxIYnj_f8fv zo;^Q$!z#1z?&5<`?UfTxJ`Zqq+eH}RT4%VZr`Kuty?q@260qOt5l*wGu9wAjc%9a< z9kvY;toS%Cn`lPvHcz&^JL8IMs>7XOuk2l?TS~EO)bPbr%i7L{cHbM(uctK*GUF zFK|c9WMQ3aBZC24P-RZO61rVqPd|SiX&H7ZBC9-9PgTgP zu>v-)Q*Zap5U(t!{H|DPx99>g7OX}0&V><{yvixgC(M$LA?`wN;Ka4c4zJAND!qdk z7+e-zobeo@y>7e8(xi|hT`HUp4W5N0*Q9i$+6LSqc*0DkT1q z#Mc{7zf*})2$4IQ zVv7j|SwE%|C@>zK2dv-n`Pti$88NQ#$H+%fqQLKRW_D3vcq5zks#Q-Hg+k{ktBk88 zA-21)E;LN)bZCVVmBQEVXo0Tzpd7WOTXL9jOY+%gd*Vv%3i)w z@Iy3xj>92j$HW(J!VA0Jnm4Ic7rzEBNDrQ4b^hhX7^8rD^+Y#hqfj?bf9hai!Z&K# z6|A~sKq8oY$AUd3Uk}%Gh0l5PYni(XhL5CnVSW|3TBk@#_obL8pF~>PGEg?GqfvU7QH(2=19^woO(vA=N^_0h~p;V{O#X4Qx_ z@d~%-c*6*d6Y$K%1X8xLp{GIx?zRbVW-qX|eVK6waB!)8-FgjVWB`)F7vbu3U#zUYr^7R2ev9sG!{3F=2NZIi|LZ*um#3e{5v{Fff*vU^pzS+{#;og(%oFggV%Y$1yBD0s>0 zvX{xLzsFMpRb}-d~;)>J(nh zQTl8aj!Mpb(rS|xnG>kvFumD5K{|$oJ>WI+z>eViS`2& zwVC>Z{<^xXGXmbST`3^0cpKgur>Zr)N_)ExKX?R+g(kr8?i=qjU)OvM8HIiUEpIMM zYlTifps|`@!A&(RQ-CRyuC?h!XLH@jUSSk#_zkbMps|^tVpk))(~>-`{3lU6Ma=vx z^}YG;?MtU&YwcJK$Tt3ArtxixMgr;Nzy=o0#?LI&$5D)l}o&pz38-649u5!(OJZ1I{W2b(%ijfoMkBT!5#E%jMf(%}Lx-XP%YY zbe%dCxrh~T?jr=JH!*8E?|JC;ieSa?-cE}cbZf2;g7%yT{xV!&;m?YZo)dmQ&z zI&f*R!5!H6{SA2S>!Q9X0apfY&e-qK>u)Fi+m-dzp-T6)C|jseNZPA7j(tXAm`aTfmF z|3iCY`*VxQ(`lOJ5!>`*KM|{KfD`Z=)bJ&vYLgFP@7g6;rb&*UvM4cYAJlNT{=#uJ z!8TiJ>ZcGZCaX);Wbd?m1HI@3_kvwS5FIeX9pgkgHS|trM$NuCtxP3=qwcp^btPQY z939jj7rI%c3A5puIE9t;``5TY^f`?|x<4{WaC~_>RYnFn3rU zGssY#3ne;2KeTDl40#CKB+qe_?0rLb_o(H}h5D%x#3q+3YV^woZf7RB)1kCftvrqr z74M#@yW%oNoq=Mj-3-(*`2vbrS1Dyq5?%M1?FVGET8Xi@72^@CwV@^eyd~RL`(_ed zqLk)@ZMJ$UQ?muuXynWwbWZq46%|v$FjiRI&6%u7`ArGYOtI+%IL#=vo~M4E(%+R0 zW(IxrB}AV}(DN--I~2o0z?A;QPb%?$s-{_Nq_$}980#cUwxR5R%vcI&S=RC;0j2)) zQz_F%9kF@aea@)St=||( z+0IQXV+eN#jclWR_KkjRfTu^K6^_DY3B>V6F>an|PF9-rRN6GS+9-Q+Rgn2iP|!*e zb8V2r=6|c|gVd&5tavo;>4mDSHIvm6^cvZ)rDQB8>Mj*A$ zWbuHJ@?b|XGlAkdaL(dEyE97|mY}MsPe@IAlik>71z7UPA+20jw&#{v!FzCNo5#a- z?t+24>Xgo4MMV|1>cYLQct*Klu>JdqV)BU81{l~Q9%+-4VB+Ap zS$y>AN*o%teBKblO_Xi*_rGD%0-;CxHFU;~p5~CHs6$?(83^jqD3%CB_FjjJ6#hV^ zQ383j@p%Qh7xvPYa>`Yenr5NYRHo#qPxTJhl3O;baiWWHiHICW4ir|Ag zkcWA@{)G(62IIIUySH8@4F-sNt~G~j+)gb9x#7j$Z~M-x<)S-dC$4#M6PyDI!9ELj zsz<{mr7bt~d1)>-vH2eGAcfU&RlMSgM{SRRE#-|^pQpHzr-jT%B==CIw#$wqsJTE} zV^-2v%$e$=+@kSoG5#|n2x>X^_coU*TW9Xmv6af08<7lV`<3|75{Vsn7;y$}CXS}P zUqN+`LPC_YrzGmRH4ikCoIy4utW%?x3`V=bv4~ParlG!E2boIT8V7^ETo(>Zs5;D! zV`wvwv(yyN6QFM&>nu@Cd%(r2N@<+y{o@2>zNMK@{B?r!<#TimGCwwFaLe6b;Ctj@ zYzAz;=D{6?k(2}%`TVwynZz~1qkzw?r*KuA-VA{y_!YP**to~lxW%(?PBQdZW3nL7 z=P5cZxg6hqeR{U!q)HsR#~|*bsd^!q3^MW&6tEXmEG81b1kxao6B(jYDvEAHH+uJ8RAz zSu^*}UtP6ot*%|WcJ0^p`+J%L5mqws;$G57X5S5vokUk(!zbkaDV^^+e^04J*#G#s zfjqIEAC+go6E%)cSU+baB-p%hErD9QF;B5xNumC9-91Q`>sL>Ok8wGl#bW$bs7IZZ zpt2fZ5c~HePu=09wWZ!k*lw;1E`e)jM36wON8DYVhjb!6;T^#b23}Vmgtd{EmR%Mf zDA8nlUB0;6P+!AdLnJ8|gSPQ6;^|F(*VSB#m?);_gL-#aymsNr2(P+TGyzfR1~h(= zvGc(8H~zqiEbTL$IiYE-{$e#r5AQthr~p%qHiWBupnCOO#sz5a=~|;@9^-e(WV5l^ z7$ezdWPHR^J;JnO>A%PxnmctrGlDgorizU{Uc~7sh0E~t^Qq(t`v#+OT|LsFa0CT6 zkd@a?*Ajx^C{N^8K+Na~s|$U_ukg&}fL0|~>b;J|-Q_)T9^W6r&QX`e@PI%rxVM|_X`2$n z?*lc7!t4R-oLSRim)o-s4yWG)RSdeAG7uV6-#RwYv&=Q^jEOM=m60D8IAW%wE#{Mz z&k@LX5C*c{>^aXRf2b9LH3?25W3(i^;{zTk)X+XLF6%@YWCh_@p2m1ir}U81$;P&41h$Yeib-~Q6-xsCpA|JO4PKlilHJbRj#Tw=-`{#l3C2lIx!<+WIn6^0uk$0AeE|PkgCHHHP!sgSe0dPUpo>S z00>5#9xZ1p<+bUSKNj;&Re4Y~lf3~2(KDulpF_vswm7u}#_#K!WBy#x%(-ForzRoX zEnqSyXd5y=&t%}%U9qvo)zX9I`8#y!%2gW;c6P1J3zu??L3o|m64 ztNiwRyogP4E!ZJiRwyu?w+@M3c7|$z9UJq88f3>VEv`8fe(W1qz#+sKhRIw31GS?9 zdM=2z^69<-?;gk(eudOUJ>xErm?wh1?vPBSa1(f7&|D|!8k(GQGyq@l2Huq4l(Br( zqS<6y?SEb&y7}#d>m)FWArVnu;<7~JNL*YyO7Sl14W;86?516H4_l5*1fw>`5pacO z-=X z!B_ZW&L>EcVmjm&(zVK2c~9RLSPm!J8xVT@+)ZC~PMil;9p<+*=WCk8o^Dqel-1<# ze284w_pFT+C;XXvNKmV;olu0n`aXY;5lG8o7I--+XeEoGDZK-QfAtz&-woX-phTIw z-;@z8@TT=*4408*#F@QbsCQSJM;3FDd8m+CmU?WCIbfvphQAz!^a^HnnP;N8@X|FX z;L`v6Q~r*@{0W>7tmhYguqK)fl_)uaTLv2Baz+oxV7(l$<4FBZ*0=3c%2 zdWn4?FNB!`tM~O(dYV#T&CyM!nBhVI zUCZc%5^BE4?`<`@>4mZiFm<_gI;{O%FvM+sO>U%mBWim4*|rD3BEPye;+BePpGkFU z|BAaRlT>r2;gbHi@4utk-r{Q&GbyRG&X5)nL zN~;~7)#pp~zyGR#ztvGe0)zSb%xlZ=Ia-lu^OXw;Oo>ZQpt#@eN5jz4zm3sgreNFA z{&=jF(kdS$Qm?=HBIR1JAcdD!App@0pVK>i+hdb$PAa_bBn^9&On=>W4zb3_aA#+H zJniv%pX8gF^_>5?y52G+(~@$jV8iMMp0vL!ZPoYTr+-G2aE!nq9Q=P9(;_|VeM`a* z-P5v)&!3k|(ZfWOl$IPfe%MSmv&wG=vTqs*W5`fQDM{&&sS|NuQC|(*%-EZY9xYtM zvQYJBe;#W$zacb#Qz;hNrV^XM6`_uBu942eId=L(nb0himN{1 zzhQ1^-gf@zpz!!0s)~5pG9$Wdk@z;j82`n``bCbcKnc7^Z*Fr_x=@~pMaP-t*k7pH zXSS0s1-9fhjg-f{(*SF8(5l$z6zERt1Zho|E^Omv*jDVPrf;N*e3uR7#Ux;z~1VJM!YN5z>1)YAB$+4wGjl2O6>|9rPF-;Yg_i@zgHyfG>g#h zTIXWgH8OO+3OxG8pcaqx%?{xQJ)>K5f%}YA2kr0Q^OuV-f%_+sy+Yu#CIf@70?;gE zV7Ec+g{q0smVr+n3U+CTr$5hU{aWEkfw~H4H>?f}zSrolCSM;2wH;9s{86ULD`EBX zipP;H-&5Bquz^}iT2UH$*WpJ_nmeAHN1mZh$nirpr zWXGqW;j}U}KI6|{-7ktp8G%LLU~tsguy$!W0@<{+Eu-bV2XWBePeU@eqN$R(7x}-IMkGzwCQa$!@aF%ie*+8 zgfad=bWs+4-I$}9TE=JfU5lN16M)B`>@(X=`E#in`q|ow3Es|;ga?y?>|>Hsfl6O< z?dZ;DXt#UArKTy!BbjHFU*N3O^dJ$ztBAe-R?T~y@l13IL}YTCt%+hqIjGc#H@ z-nQf*@~i`UQ!rMup>0{v7wXiwd$~Avo6Q{I&L?G=={DK3*?`c2Xq#;f%N7M;^ZUagLLM>ICq~6aQ11E|B^TidW;J=c?{vR zP8({agT$e*ky$3yW$3pB-%#QnS&QNH|?a2p`t*WG6&`4vn#oIWMv zwb&4$ObO7W5ozE^yi=RM{pk}!E$~Mz*Nt@9@j(Kzrh~n<^v+)HJb4@-q^BHS10iUo z1w~xWO|_8B%eP`Sw=G)De_g|;v={d}J|S31D|OTDhQI}zU&VU59|%SYaER~=d-7Je zQ+vst1X|bW0SBJGjj0~>$~@Dk_AZ!N+kA!gUvqj6TiFuU_eljx)NbYURoC^_z+C9y zbsE9ov$;wYT}3kao$hCj`KfL{E2+2%1`1S86I77nT#pzDa<%>dS4iWcbC8BSykLmY3)(o3<;epDIFB`Z z;&AV0%grUBTTv7JJevdD5j;7)3|wWiU!l>_8y|$K%-_hlkzY^9y%R2JWEA$e5_xh@ zWz5fv%%0Rgfzz{x-A{3OoLJGjNiuGD#77u<9g*DNyvFPJb9SWatCG)?j%$uSvUmOy z#XjC_Hf<@jX*GWg)-04xg(RZd@3vli?R~t@UJdMDi3Po1Z*!*J(T_^3c8DJU_F8Mf zWVdmgJKBjyNR$AM-kAL^jm6Z>GBi7V$FQV*Kx^?I{BKfGA4)&#JUrqyI0zsZG zP0MkwFNLZ_PM0O$)mAWzJ9gsVg7!aRW!1od{)yyFvF-MqLffG;_%BXbG<~^fzazvV zbAvct^cf6@AOfYeH3&qwjf`+R`Yt`s$^{>?ED$y z!+JGO9=G5v&l>*t2tM^m`ihms($AY2jL+VcjCfhDEj#NkY@-yOH%SeZe4bf{AhV(h zH`FrRQ<@SD>r|W=VNmc+I$yA5lZ3g`avkxs>znHSb0E;kwZ)8!n7eB|`u75- zzoOF3R@HvN43h8?=~z0uWDBbJ0GU?-NtY#Q+&S0Fj!uy0? zR+~)Jzyee7ntnHB5#l-Xi&;8C8F}ZthAM4FB8r6GAeVq~inX%p?7s5XinS#~ivI3q zU%q&jkk)W)3e+mHk6|`cwuMc3uQ;V(7*Ql4&=^|+AL-#wd>d>vG~dDG5)PpNoWY6*{$)0=1c-SwL66gXe;k3VHRD^ z?qP2Ev+1|=zwS;jxpYA!I4k98_t%$jeb%Pn@6G{EKA}$=6^-Y#>!mVS4mAw`i=q@0rFiY(CK!)L9Iz?qtMi8p5SGhVZr9}Kr zQPH(ul26~~RZ4@ntT_6CR+NrZVzV?lNf;+vlz9A$^(}c^q45tl_;Mz{DK4Hoxr~}> zUW{ip`DMfVR|Bey)(s;60AoAczog^;OAsaH6yAdiP+pI-fYJ{~OjKAc^w$Fw$x zjk(TQc8gXRs_bO9)m*XE*F-ZfA-lYTMAYyTQ;(N!MKMmrbMt{+a$S=8Age>BziDjiqiDlkeTQC|9 z*dpn1EWqw?@{OTzZCCV(tx&Hr66QA4q#inN-!YX&nPf9rMb6P~w1=rt!87pDkDHgi zZ_0_$^Z9BBWkptvuE$PZ!i-KcQXu&Qc6iYOb>aAuNbRkLpP903pJAO;uXru)-JLRG zU(zNG(YUAX*k0G>rtHv(suUzN;xNN!?0AMtu17jrC$kg>*WhD49WJiHSVhJ_Uu|e9 z2CmRV9p+@z=`TcdHg8&e`rZ7~)##-R*-q|4e`A@Hq;9 zN)7uX?Y9%Bg)o1u#pT|{0Q{4PpZH_nZf6DdmbM8Bi47yhe%Tn1g2rx1Llu?1l6kxK zQn*$-r5LClO+?R)FQ0R^34-wg@`_q(edPFw^iXe}w^Ad%IA(LIvIK+^$oX=`Tc>iC z;A6dR?Am#j{o-3Pni>8A->_hjI%;x@ub^JrS0!2zZgb9h!LO*l0>v@^tlo$7T4ITO z1<&{?XEbruMHb=@-|U85z>t#j@RTL|3eJ}Na>M4;-lN0v$3LXm zzx+as{l&uq`^5|P9DzwX%P23;TcCe5VBCR@5wGKk=CeTTjZJ+^*c&s*%m7rFWAfD8 zbTjg`H2j7iogEQ0e$+*hfHUcQPtZ3n1-th#`q5*L@HmHScbgys;3$|=1_OTii?@XD zX;zgmz>5<#Y>cS;#!$u0MVtz=U6FFl*lYq+Z^U$^41U&$~sGRS1{y2KYVo_mR8MVOi73sraSYD6mDy<8mCu z3Cf+60^zaSP}5(1`mjdCrLePetlCv!SPutj*e@S=gp+nS#M($c;(DY-< z2M`BB=HsfpT4bIL^Zwqzm3jnWfDUXD%|7^Wsz4eMbc~tmV3vxUr=UjJfjRo zZxXWfJ8HGQ_4f(K>!N7)fnGKW9xLx&*>nC3V!sXd=z?L{*ZJr?&n*$9J zV^zc{aT^W!8Z1J-6zlY?Fpi2)`Ec-J)eK{sO8r%{Wk?ZcoXW>ze#P+UKeC}3$T6c0 z?+Q8)!@uz(OsRWfbvFb*EH=aT?tEfQN_#-1Q%>UqLi^3F6*~0xH4BNo6kX=$tre}@ z%`{^ce%j?xRz?XRy%paNIDw!XK~H}P*IltMFs+FMdfCeNB7OUN+K>fQTMRw zVc+K5W0pQ!Av%AxHJGrc;Na3${F%(xSo$*v#)f9(H}gDcUOPR`_&%GAXrd%HVctw~ zGUnCuPmJ;IQp*3{W#_=K8~$uc6`xo3czetQ zl|G$L7Yzc3Cs{7gt0mIU76S+D*TGcwr@L3Mmz#W%r^T2h8+_~whs^|af>>Ag`X_7g zrz5-fw1-n{{27rV*m1jiLPZuRh2Asu*=RB$qXspBKSygR%nI(iY@5p2G49L52V~R_ z%4ZID!BaI=^H)&gg4Iw~Zu*$z?|Qm`E}4IZxk)eQm)+m+x@lRJQ?Z*DEofS8`8NV` zis^M-X!z8bLR6<-<#c!*ZSwkdB1tI`eS5(40tus5$|q$k&CE8nh=+IbPvU_l%(ZuGu_N-{ab&wdpr6erNHl@FCg6PioQ`}6lb%4Wu+vs4? z7I{AP#T8G?`<~Axd&POS{_wcyq3vm$uSBqA|2V(dHNa=}_gWD1rFR#zHpb=f(|W_q zT9Ebiz(!YEa-xIvHUebGNr%xkF&9FNS!I8{AKLoQ2wHa?C)uNMu{o^Yv-g#G`&m0; zAnI`iyN=&~xFb<#d#x+tX;r5`!)|I&9o=kqEPi+Jd~D!Yd`uu&+C;u-txh&0fm6}D zh354w>%4o{v4(uE_;1>&^5&I#lO5@#d2+*yc~e|w@EmU$JM>qTQ zy3*sUovGrOIo_V_-LLC3&X_W5wwQIuGXpBVeKF`Ss(iu!%c?1K!}dSkzgZ9KuxXdL@UQuEmG#>VsIZgLxO&%cdY{E7 zgZy!1j@VaB$Yhia&h-yJab9P21{cSt%o1PqAA6c20d8B z!-?X&*uM7phbcdQS!y~3Z@LnUqb^;PiU9Q0Er!dGY(3O}Ggi^n?WhMew3bdJYhuT) zMPfrhyx;Y~$vaJULSiqJTW4c#M}sJ%OcHNiiYb-E^@kEZ{ z)V=pP_7O7&QIs0%SVy|AUlzXg+bBTrZHuD4AgNaP#Z3wrvu5!3M<4`or4ZhEU8dUoDRYV%^FG+>#d_X0C5S|uZ5D1JK+pLtJSQIC3(()p7#(## zAk6al7(}lHo26b{ePtNvh+A7~UTZaqGWJ?a|tIqnNYI&xVxOF)wre<|X`A zkKaQ02>d0uLx0vX+xhAcdMfFj)H?~MTX!xw<>+K4Uo?Jl9oqv}oBww17Dinb;^xod zd>zk=hj_K4k# zY!iQLsOu-0Lc1Ww*OM2jfVGXoWs`{!iUJx&>>>=l$v0iUckEk0*-fHdfjQkrDB846 z#P_C|@aE55)wv4Rp{ejR1?!Ik+vI2L+^8Zw=}FW%v~rdy&A#>A^+o=@!o0-X?XqV@ z019i~jh?qioSgWZ|0O>-7Lj0O+7I!%aOEdvVu8&)FF4kxPS|<=5^>$SYS&r7-DdD> zO^WT{HMx+I5y!BPqW|)rUJCq`YvBdKzu#M(Jwr6vJAa^ zzsxjOBg_7V{)E_-;c{cXh`39oqc7r{z5bYITn?LvjgIfy{T0{6)a#EuVg|CqxK`y- z_+xz3=F5ilRs<&eVRS`tJ-@7D@BR3Rj1he89^D;po=YYP0itd3p7NHiRnSwLJng*<^Q zBp$uDd9}JcJz)G4`QzC-CQu1T2a*bMu*oyy`$}e+P9~oa+d3t$Npd*ld@b=TwG>^a z2WUW(H^)s_&8*Y9t=HdC^Mi`fLW-d}HNP{GH0YrUl=8Kvs){Luvmnj<9ZHjXsnEXG zsQ0L=kNZ7BzTVGgrv^Tc##g5Xq|YM=snUcJ9CGLdkL6K_uj)>g#<17FyQtPm{*vh* zI{0x||A;!YF^ zNXOOVpwDS4lA8at<(-s~Ha;-ZWD9@Ewos{VsgZfd(m`~|v+ZhN%M}21X7iazxk(na zD`@K*j(RakKmSR8%oqZd0bLH;R!!BJ_I2{el3PlMI@U6Pg!JrM&Fn0fB;gqbU--%wQ{uK zrTuroTK#T+=(|neIkFPy)sCiHbG=j6!YJnF?y35i<#z{;b!i44A(S7XcOhCiV|eZ@ z+dfYlDnc6Q@nIO+l)YX{ZgFw{l8vgtFh4c^ySVe!0CWQ%J-d}rjI3$L`4|%R7`545LC+=PqqkBA& zLcDezn}QE<@is*8=ZEE7m^loEckk*=zw34=ZpgY5ZQM@d-+iEGcd!!o_?`&JNNm1QPl!%Lc=+%#>{F~3qd-8UTeW<#Q(idrW z1K`VrFYxC@wX}tMm-tFc1^hvr)1q2f*qAXVli#*qe-Rey{}?7IX8ug&{P=7T`}4|a zy42;4&u>qAl`OeqL;E^(XFkA$xEdvSQ@~n-ZOSug+6pwj>m^T5-)4@{sdt`DKJLVD zL)qU;uII?W*ZHJS?5&e?39>1bKHXQ-dw*{qPR~?r%9;~s-AR(-08*nr%|!emEjU@a zH~E)7Q)7)%4*lSff|#v9&Ocwb2X{7ZTjDzdeobO`%CC@rfX9bDS8vO-rpiyBrI*t(U6oLk(9m{FzTjoMWtfXKq=>zYoZdK+J;p^6_rha%ULID#}_6ZN@> z7C%?r49cLp?zmK8lnS8#! zr7BJMQ%@y_f2fXstHhao=TLpzc)EFmecpVxtoQs%!~(DS(uVR{vEM%+964j{o>38;p3^poyU)i7cZNB)^L&n@>`U5 z*p=m+JbBx9310JD@2|}#)-KS`>QEk#t%;ufKw1;n@|I#b`ABrKzKa{x?V z9zXK%;81?cKTV4m6%stP&iCGyH z{FlPzP#*mn(DfXZ@%DVPAm7XMj=e!E>l?1aR8CXhOOED_G?xBb9%7|?Q09z1iblWE zGl^skf#}jx&WgTyQ!popSUTt%2=t`EWL9tlXJJw+yqL#WQf2kS4`AK6VFxnX`{I~K|>t^*g5mzRDX{d@cocD4-KCq>8w z_3RN;B5C#ifRY528fY=?y1CYfWA8iomx_tddM*5_xF<~c(hG=p(4Jfb_G`VJ7w z7b)ZX0yZ2%xxS;V z2e2oyP9oUi{ihgJ)XfsFo9@XK@#?h= z?jm~m*tPVQDx+jz1{YUjlc#E8hK`=omPE)`VC^N4jn_D$FZS9p`F-OomR&-82p|Qb zykI$S>_r>8oF+^ki{xO81aXFrBsCU%>Vsf3(zctfBkW>|omarwh1=sdHig@NE_uh* z2Qh(`YYe!)Q~XKOp7d51z=#jQal2N7vYc}L#e@V6N7}{;b6$t3qD$(M5Y7~G=nSNZ zR?0mtaJvkNHu05?S`Yv@rwE+k?-^^PghsCG6$oU+n**I`i&j~u_!ic>JnEia)e`ol zF7Rfr(}UCf`}5yJQ@a_7xj0~>WZ?h9tU|M2%Ku>s3UmgAoeq1w@D8VYw2m>1un@Kk znDL!`)IrBg(9T>D>1=d^O3^EQ>|XBR^lfKDJ|_#8&QQHi2tTpMd5z#$`qc+>iDLBv zaV$saPhXUx6wnC++nB~5tE)})RBL+s%zFMB4zd+^q>lt=eycy`^{yJuBmblI^KFsY z%0ptndTe+>2gXirBRM()mn$*%PUHQXe^~6`J4!{HdKodRCNvey#h?CJR(3`ocSxuV z$|h(RlwP;68$xLabI2c;wn6dKnL--Y{r`_4h+_1l5&>m?ZN0 zulYBQ)|nhZt+;U9`avl8%lX8fGKdp^I?0v^;>49PaF)iiAnraL<0iviM$p3>2iT{) zZltAd&HSZay+m2aZGDo;>+>q=KBL!4|0K@TF8eRdh2RBOpmXe`S@wf>_zj$6mFc5t zEXdE5Q&KanKV)m5fi9UsoV;RO;MXI{GulLp{k}n;U<2LPeQQ74`fuJ@K(~QsXb7|D zevTBx0%vvX&-lvgh0}NYe4#DA+K14$bK%OI{ac0lK$ z1;6+xS=;w4#^yA_AxmwdAA~WMjjsVS3vzirIkPdM+IK{lA*}PCbO-8)QVOKH)_8W$ zNQL14iRs?8LlnSiAw$Q=<*7@Z{>iXp)R=eU-Q{oseTSg;^ULx0+a_X47-VtsV{3}* z!~MF+;-RFXW@tn@$rOieeTt`Xzf^ke5~8P0ls z+hyBApO7max}9G&BhaEtxy=?QNtgY`-j%yGXy?< z82f$P*uG-Z>adhOeY32v+j-roaXTe%e-DO(&LBX%pshsEC57P^IpCvYiE+&kWeyQ< zZx;D2Cr61e^VtlQVx^!$2(PoBBXfC0pt1ku``cS!`Xfo!)JN}Me!=X?Wx4a~=WBj~ zQ)$o`<7{I=9o@IwWSV1IHS0QRsm3cEbq+p{L0&K9Y%BnlskP=MCwxptdfwU%&uB@F zv6KQJKfP}NKy;FKDT88-FGrdEmUpdM;2mmLj;ef&?UC0Tzz`cK_h4O(|MJ4}`$pR% z#_;9rSt~vbcph0c<~&2_!S&6H9MtvrVQ$W~`5q&B|ADtsJ)t0_VU|VF$LX}m*gT{a zA5rN6QtFQ57+Rh$vZmzd+I^WzQ5Ei07>z;S<@+5_Cyx&F4!j(|zb27wvt8;k5ao;0 zQ4GwZaQb6){sD^UILf^BxnM_edSm2G`Jww9m$1|G;{d75tRXdtfGCb0%qbp@YF3(| z!B2Dl6o$+5I?3^Kldb)bH1FM%H46EM${$!HV>v*fU#f#b`F;}4(bW3tXM3SKcv12A z;_BS;n=WB62hqh59i$Ee)}PNC1lvUR@rsz|Q`Ql_=M!z+uw>_zJZN(k3}gk}sxI}_ zGgB6I9udocXtd>~+}9fRpuv5$BtqdN%nsf$BpwArh!Esett(!*{p-TRp;!_(!sl88 z^DMkw~0uW;5>NYVFe$ zUK`McYe?EulFiL0+xzF-POPTE*47x+J{)n$18u@V=}hiJHSU#OAvLTPNeSBY&1L44 zzuC*iv8L5DTJH7Q(^Pq3?Yt-bggJ&fc((t9j~6LB-6YOqP`?}$z2W9$q+lW6ciFj ze+<15ouVhH5<3lM+uyb0?rvmP_M&o`4?@K}-F5rY)n1;}OSz@ILY{DGy2~FisG~v8 znK(9)GiLi4bIePspkQ)x`mU|mR)Jz$Kd(O7R9c6?7Fm!X(P=3-apqHnq!A`{ya!l3 zN?6oOk-3i#QKc#f)Q~P{Me8vRzuCsLwN|?5UghD2S$|1k_@`R}WO(d-2@adnVd7Md zjw@6Qct5qL!yP!XGX>9fzN^y6o`FQV2>0>`BTpm9<#a*Coi_ApTJ~ z-}o&oUGrjlaWr(qp0#K(s>H=fqg6phb{an0{QK5dR@dmIR@jO6rL7>1fYqBYavpN_ zFjaz~qdWD$aAVbgV~T>0Vgb^YQ_vPQhV*1TRjQUvo}2INNmWG@2d9|;U;;(g$aED70smKqxO9)`ol7dLfR`K+GX z{c`A0)y0Qvq6CiQAZ6y{kB;Txx4Dz)`XQD)3s;rp6xP|9b@@lU=SiHDj0kwb4gqY1 z`}qYMk(*rLdPwX|0MrGT{rS|}n$L^56*E#scoXvT=8G2rW|cS4`sIzZna<7WNf~dR zc_?iDb+nn%aB8aDT#-+{Zk@^P_p8xD{c*UeJXc4b{B56Qc8q@tX{{O@@`p=i9# z30!NGUfT-VwcJ9J*WT}>6twRC$3VPS3l8GKvBst(B&0t=ZbKE{O`3o!Dy5|!b6lw~7#f9AOCR)K>W3Aawtmo0`>$&D1r%4B+C+T6*00L#p?S`a z(^`+c1HzrR;!o4xp2ksE4dM>+OaiaoVaa(!uk}g-^|(}0MC?8gQJCa}Q@6x)WH|0T zZbbT+Khhg4?|AID1n)e6O9=eUrde!3B)+p!GfL`OKUdW%AR&bI8ZG2R^{aS)Vjw#9 z$}~c&D7BRT`?>sNh9MyLt$N{<+N1D`rxVh3vROI5$v&zg>^P~+E!fR%pS-On+LI9U zCW8Fp6`rv2h*PYqbnkv(V!U=bNi7Y}{qZW6m9ip16wx^_6IsUx;V$i$V6Pi#6B7_K z`$=W#;$YaygERO!I%Oxz6iX+6lF5hosvXf|6hJKT^f*vO9fjDZm{LNh~-p+b8vT2cHY9tB48UMu!-^t>}b5po0`S^%(C*+F{ zn6K)^H-rOT@1+&x*?inz!Zroet+UYQ!T%6gz%5gJ-YVF`Imp|VnjQK%xrSDF6f--B0Yf~$m4A?p*wdo~+f!V7p zsL39-AJ%`t;QUGwClq^^@5DcVB|!vEv<}l!QTYQDOG(7N?X~?#8+;{Kt^1nr{FkQe zMUQ_v;wLXomy*x7710f~m+zjwk!rZf84FeLr(j8z zP!ElLqqny1Iet>PlN|p>w-kVzUj5b^l9W`TYv1)J}ZCkIk)A)Iwu^sIynPZ`dLQ_7u>!+t=CsEZ?t6r`h3(5i%lSE5q)iGHU~6wM=$-$voS8PUWrXeAZC zEA1tGF)QsPEBj<|KU=*@r=-Mko4Z|89gf#=7`5ueb0-+E$anVCc}du=xy+0h)zgj3 z75b-=^K;vsYHyHo-upIk4u6a#>gDk5NhZ$=%wrx$8d+-^p)E*u>UfhRXD>(jJZbFU zRPx}?1ZP={Io7ODxF^Ga6YL%?vtJSX9z+G-Qx<(=FvH< zCIs}?N@m$DQSZsqIr0UKyZIuKQ%_n^_79ckl5NHjagL5wM> z#NS14AdC8zN!=m_P3e+0w#Gjv#03)b@~&RATr|kMT7th;&^xhc<(J8E)&4Y=e4%yU z%@4lJF!8&RqWpozq*VaezhR*yGS{}t)|{2p7Tq?iu+F6~w_7u&GOUd9;*eAm+wUasVspPS63#-*JjWphQcQmk1GgYNJqsA3^(U#BPy3GqFjz3DO zgEUFcmO%XBp_}}<@XXXQKqAhEzPFx|aYIUo35*s^WL5iMlb?g2lPu+1q^1L|qg0M^ z3RIxE7>F8k(+o|gp2!VI<&ym>A1PrTHBLcb-Nv&?HrNxs{j%jF75~bQkT;q0-t)?^pHpzF(EUk9gK77Nw+A&7WrXZ5BR**x<-HTG zX-@7U2jsw|goVyLxlOoo(E4wt^Gi9;(v?K4$;p<}UmJ+WYx~&nZlviM-5$L`3`y=w*Py@QSe65_@p)YQpNszE=4OmSlZ73 zpOp`s$Cmx$B!U}xWw-E#p*Qi4!6bSGBReR5u|mz86kFd?CwAo~3cS27z{t&G{y=@v z`v`EMG5qs_&|+G#l8a>yN!JuMuV4#35Tjnbw^Rx!?_fc7oxnl48{S(EQbWDQs1&bbR0vSU$##CKW9Noji_NG{ zO}-a`qozd76$~W>kjtZXzx{fI`XhwhOo{*JKsxkLH59O?E8mq5x^6A0&gR1Y?-$R}vtR!axPrmLAY+05 zx9>7%*Hr!m1y=bA$wx|%j7|rl0{GM`d4*l{c+dw_-5;&soAaabS4$=~m(q_=P$cOhYguk2^MVb|!2>$~;Wps=o(tP4J zbGnI-k3$o;Ws(OSz@O9F_)&}MN+Jt#v;jk&#>^x~jsizCi}Y11)YB@CD_jfgPCX*$ zK!?H219$;cZbj9XDXGiygB27O_D%DHwnK#S*zhk>KZNdJca^eG*cKA`l4*p`Kq zuy(R*KL7#)xjR>Hu~5Z zntlJ5he5WaBJC%y+-(tnNM*y2_k=g$Go;4R_!>msdD6gvqR#iSm0Uy>-!?uPWLhsh zgj;jCF>+_KrewCbJW7Vg@zg7Do1#ow&yOXx7X2;Bi@3L2@{P=i43Jxi1&>3`U)mnr z@;hsNgNz(8*wkfo8+4yJvb(%&M*HFH=F&kMLg@cb#{D;wNjv{3{D2|0th40$*EK~e zHPW_t2)Sq03c2JowD*e$15814{=L#NTUQ(F37{dh1C zMEAR5k@j&YA!k+iXqnMv=|U^r|L4PQAR5`)t?$+8CLdDkFYz$0u|Mq0)#6d)WyI-N z0Da0EZify-m+oL{eqcoz9e)uY*O3KJRa4C;CE_fuUra7PuyWgKiUOEV3He7z+J>qhDy$U4wUq&SU zgCaVB{6|R+46Uqn>VGYQ)F~n~eeC&;^$hKm{P0Bv@+rO)!?r*qBV7KZ7pQ%H2q*m2 zpQ}#(x+8}*nhg_l-v5C`^rtcD+vj`xP9lW$DAqWN0KWZBqxY7`-o1}n^K_wK>yoy* z3-Jm&CA3~YGxGQ zJkvarxppP#ebl}4ib0$>^>hOp*Hx1l7pLC*F(iGZu`~YuD|q*{P)Ox^9`EOUc^gn0 zj>~$q4eud~ODO1nIzs+Wfd$Lq`_Hx>7#fu(?8<-NQp*bKpzWvNpL=3Wp)uc8;+!Ke zV(Eg^WK>j4d$Js%mArWQb!rt{w%FgcsM~FyY;jHlzWdz+{1yS&Qyykk|F@xQGyiGI z<5kii0@tQmGyr|JLn14wy6uVEcRIbVI5sG>+AHTcw1P#h@h*PhWZ8V`|RKoT=$P-S>T}`@Vix#f!3?pPG8)Y+-kE!By7|(U?Uqewx^YN#!H`^Fi+a z<1Ax=yFUM?pC}%D3zPrtr+OXtGB_w93;}S`DQRESJm@zZhIZ(JVEZudV{^x`Q{oI> zar8HG&k281cTV26mIsROl1z)A_f5|_YS&XreFU7bnoIWYOgM$wS_bowm;FMH%E%$?37|$UVsBNz9ML>;PED zJP(_=4_6JF{hKi;5#TFO&1vFLb+4{}T5+xSJhN{9-cIP!_Uy8K64S z&Q4EQNRXGpXLHYM^UnKqMAjJ8ZCH{I4+aseOx>S}$z(62uNpog6ZFCr>Rvn??kN2I zGT^z+GQJ2r7Ikl?Rl|ufK#uFupx?C;{CuF3|dVJASAOt{*k% zJc1uplG81Y)m$2yD+ab2HO19@Qo9&8Yp0v*p7k_VN$F1P!RI>SAk)>d7d@2KD&|Rq zJ-c?!Ze>zg9nUk9_0|~&R=ep{%7u;t{<)%UzWXIa1g_oHZsD&;uyFloDn=#55Vw{|~hV0E{p%&hUJ_$D@EnRy1vW4c^ z{EXK1pHezMDW~>}Tw&bqQZhL9tetck1__Dh=NiP@S2hsz?n7Ix-&^zYqd5Qz62^+7 zNu>WqM%KNKekp!`LsT&-F;nwd1eD_LyhapX*y3#YUa{DFx7Qcn=)g5dIdl8xq|KSF zk^gND19FtdP8ss-;5Hd7uX*k~*Vmwgcr?`uaW1J(9Xx?LI;vPq`%-b!{A;m^y6wUn z){oZdxoN6SDn~%1%KgFf=O9$*Dk@RV&LekW(mkh1EZ}o{x1yjcH;{8UB6;K2jjaJZeEkLjJxJ@r5whKSONjBMZl*TYt8Ps;b zfFI;!fmYY^n_PGd05<}974XX^blY#E4xmtzBkU|ggdCYylxo6QE zn!d5TVB;e3bDBd`i4B)QKBM5`qPaSh?cLP%14ZAm2&jC7ONW1h$u9Z;AL^(>%YT7E zau(6UFfsA=I(AyX3 z=ON|K`=D9<`8G1_fzRX8^~-=aURze|Yxwllv87^6N!-EHPJ(P46)OFD!_tD`d$D_m z9EL6y`4!=|p+tj?~{WO)*8tEczk<5UFHi^4zZv(y^!6}Sd$PCi@ zR8egiYxcLQrbxWI%jDI0{mCyEY8`v#cUgS&9ROJfG9kfSg8h!skV*SZSj3RiM%&=# z1zXk|F#}e(7NwqM6MqW-^jllJ72P?RDVb+;Iwy!YH=1@r^`BWW1f0eF~-XqoL@DnI;$$ul2-G+54K4p+2Bdk1zT6_1x z92ShNwFtMCFjmwL>cq_E_<#|0Gz&)K_v&PXgCbkXwylp`mo6ZQO{C4fbSMdi3%bn1 zvl>3qlfgLhLHX^YT2g>Hn?b-@hE)TF;|HuSmcj^exkyD1M>_|IfIh|Qn^4U_iRz%P ziLFm@zk@6Ag0qpHZ$Gs@Tte>Z*JmRMlH$H##ya+xzdQgk4*aEh} z$`FD~M0=7Lko8-^;0~Tm@9mG=+Feok~)u_9^{hw@9&D7M_|_J(qZZH`RgowKoR)b7G`5h zinXO)Av}-COrBO}JD3~I$4NL@32fX+-<#>wa|4%ZG}!pWoe*m3nD?L8%-VZV;)XrFN`*XB2L+SyBgpvZwc^}djgH~Y)A zX+JS)<%KS@zU}2=;@LLn)J=S}{h^e(+MM_hH#3`;;Zo|)X!;+91ws?T7r)Rhz|SjG zjir6x_$*1%qZ;h}NWaXk{W6#~Q!(+%(MM(&2jgL#U!0@PD75ZlCW)EE=d=#;t=xru zen{mx-5$~6{f_y>*J<~@@atz~=kndaBhigpnE;s{(9A}jSH4&wn%wHlhVn(@4QE!9 zUA}Sy5`sypv#zK}J7)BJR!zHIdcUqc{VIQOqAer3nxox$_w7|7D)2F8ahfX;Nc=7xt~moJMKX6rL-2h^Xns&=*T4mzhvrf#{oq!qe3n#C z6XBIciM-0spa)B~wbSmq!m$RvPE$1)b)qiH1!Z#Tbr|r?Hg@oPDt1oWG-k%qlYh4c z!eYwjs(zv=P&_(@HznG5(!>!=ohU(r$U=e%nNIAlcWajQht;gy%$)??(7(EkUT7qi4C%kq@RDQ)8n*vGd_*r~GTVtJM(BlO;Ep|Aai)F*6~NpI8wW z=$_n}DWv*D z(IznyuIT#6vxQ#w(Z664mJ_Vi6iPeO`T2_9MALwW*1`$1VKy$bbAe{m;#*7jngP-~ z-LH}|+FoclCHp9Y*uc?b`Rdm39&w~^`6|ezsBUkvUVYT|kq*XQtFgTsB5!XVmQYN! zz<7y1Nxe<_-SxGyg{bo6;0Nzf(Ay;&uTt?yL~-wB9YFkSAU(X>k^hT1JA?p#BnBx< z&5MiQMd%Rnyk^SqLZGm+S}$A>9m7xwprLJ}a1xvR<|?{#`>ErGj{Aj^YHz{dI}797 zB*Xl>lgz ztk&^4Tu>ya9^FGcfl5M!pAU_&t;5k&$B8drlSn2mO9t=)$A7bWR3lhjQ6#vlvs}}VWP$8j~2+ET}W^bgUlUUEoTJet7MMfA9ZpT zR$UG_T=>`?PSls;-?Eh*PcxTggVzPe<~y^ehq>7#sKmfw855+50wajahad z8}n=UOlIi?AQ#Vq?|I+D22Jwe1Qojo9rA=j9=4t8&}+ zE3rP1aWej5u&NF|zQXCY3m5zbzS?vMnLJ8j{o)aY`_VFr<N5by^24fMdDm3Z!x;E>eWt2JCFTWLWOn$RL+OX`Nu5|!-~ZTs9v zAU}Q?fKJfm0;^de>5zE)9aT;2d4O3mrsd$n0S3ougqICBkvOC|qgx4e40^JOz~{2n zbepOm{R3{OIPt!U{sxE{SSm3Io_&CirJ?QB)$7(a47IF1ZKc5l-4rdPY>(1pR4L=94^rtr{4G1Quaxb1F#l4&>u2L?{(;S`9P9nqEo8sMuH(!AD)TP7+RN z9{nUz^tX(?3%#7Ao!<@Ka@lL38gsK%5AITYecDm0!bC$+oOf4{(V z3XF@D2b%Nk{X8zCI#2KH551K$%4#kow`=& zl)88*_q);$%moZdYSp3Dmk~!?bdrdZoc}-ctvz-kj?;` z^WPnt={fHvo|=7cDmrn?9R9iww}F#YZvSA^s>tWFnEfiT32NRI9$VGM>isNvnXg@7 zsfq%bE`*By=jUge<#XJ3X5KWm=VUoX$ClD~a|1qLcdCgw(ZS-#5tLwn)g4d5?-_p4 z8)e1zAu=J_ro0D2?jQxpvzl#5&*_bWV7FW1fAY~91Ay@C-+c6+vZ4Rd?*zOTy=K5> z{FTp;h~^2ERf_vG%wkIJU0dw~|VWMGSNQ zCq@g(S85Ssc4vol2)AAj09X^v9Pn;_qn0WIQY z9GSHJoziH1aov(t|FO~eeR!97v9+(%ndmd)E_?K$Wms;z?Q(6LQ>`+qx?Xc1GT<+E zFV&$n#*{FB(HIUg#^*GXDOriSmD0n>k$wK>VmIGfryDDVR&zk6*1tYIe_Uzr5}l~_ z%Rlp}Ft1zhd0ZT!d^+~I&8yW~wt}QsgEp+dG>eUm3$~3-4;1I^;+yAQ{-hV$psE-5 zK?hj7fP1xk^!5^a&+&!^O7~kBTXc}x`Ei5mS%JoKTxHP0zRbqSlE?T)_e>XiKjK*r zjp`9^^fJ%PtQ9*SrQEKn@)3$v?7|Uh9H8bcS>>!GS*M8dA$C`*e2!Jh$aI;Vh%^P1 zkvzy>dkLyd)7gHbSb8;w(X2FtsFYCLgz$SH>=YbkEp2?T^0`nK@U{H8fkk(1a|tHo z){mkDHC}zvwVRRA^=i&AO>hOBJp(aj-7z~34c}l6pd#V8@^+dHKeUy`->14y;fJn2 zZicF8bKS)|42E8|epKdKINXi_bdj<{lkOdQz`l6t6c1KIvik2G(0cF4Ext?$kTiv7 zKE_jk?o7w{E%^XDl(>Tk+ngD>eMfER1 zAhD$yN2+)g^pM6D(D9(~3Hr6Y$@erxE#q9qBhABW&)2~vgF7U?$@~Ks`904_wmW0J zmVK?T&g3=XNer>S{}zW$%u2hBZLgxFXb20S&_BC7dN8k#09U}miKva#a4 zVE|Wlgj#s0< zBWF)$xrJo|Zz(lAPYz1+CqlLBXaChs*URl~8VpF?(4i?7HRQ_zImhsf*UNfO=TnO2 zN*=ukPvth{g&|)Ch4!yqnNxlKAFfWq-V-JUH{Ye1!F?U?t(r(Hsk5!rd_Vv(#M=(r zN~3+hzY-8*wsaqB_%dd;cqcg#N=TSrZN~L`Xkaprm12))wE|v4d#4VER{o^s#l*!e zyY`e+YV9{&J)ik<8J?`)gbCzt%@pc!%-2bAEXs9wP^J$CKXXzwb5NkKogkWPopJPH zP6)$tT#p679JiCbDr%qdfRn^-_A>aAcOYt@BMy`^MlqX$3|%7 zQ#JdFuZDfDGibO^!tVU6W(vDdPj4XBxHYUbn0OhtP-BZC5G^~YmX(23%A|4)Ry83n zN@4+QzKCkiTwUR`N-&K_rP>Y@rqQV`C-MhL-Q+thBT1~+lWOgw#uW9vJpH^m#RU8Y zmU&8b1{=|2u~x`VVg@u+e98ENUIiYV$$HG`Rm1IJT~Y*_#1zQNGhzB&1w%MwS3cU3>H>oNbxX1Wt@3Q#FAAg<^jb_sqO1O zPEKVf3x zE8H!a-k|1_Y?X`&iqm)Yn>V@SvHsgWmz)TXIfMEKeUHJT{4%aZ@$QC=q*u!1l2HRD zE;$L0b0XaNe(w^ncX8_9$Z*ZCpGv|<3Z9dpU>Ds>dP+z^NNS9^a@rB1 zNi=ppR=>g$1xoA~ab1FK@jx}`ZL#>qr?_Sf>sf1ASy~YMbDsPD)-4V^_aCD7A!7A+ znx{vBouoekEmriuna3BVr|$eFB*c{m@vzYq*)>DxM-k|%z*?_?==B@GDx~~e{8eMW z((qceLf-(Pw#XHGkEZog@g$u&_oU>2j(PWJ<=0zt?Y7mtM&O_4lL{JlRze_np*pDJ zh~sTP2-n7|s*< zFWIU)JfGn24(GnUH z5Fgc#`QDjmVA-|=8nm9WJW%_n6yVuejBJGLD6rWCOs;wHHqcT2u|ir*MhHZdxSu_f zH}KH5yV=tmUNC#tuc}k;Gh_g$1!Qe`&wy4)7?*XIFLL}Bf}8M#&$&1#f7W158Vu~E zXt&<=tA%rTDt(OZ4Sd1W9t8%rrG9nRsx%t}sOF7Dt5^?0SMFE5F!~Zj~qJSi`1h!?J93 z?1NHXPvNb4MKnQwB;Y_R7#nY?d^SybU@3?1esLRhh%IS!O;U^$78u&6h$cW8=<~&* z2G7s_akXA<&f-!pNxrkJfmf`C^gAaa%{gS8q6u$&S*|3r$!l=_pwkH{kAN`>e#O5i)E=qs8A=`N41 z%jf0EAt}4$K5Bl$37g=f76TISw~d`;2h*Dx99pE>y|XwGqzPsRtG$o53>8P+0G_iQ z4u2j9eOVRAY4vl*Wh;Iy?9+{tdD}MEQ7EjZduxIl?eB5UL-NINT_X!!5{+{0x9H4L zY5B!(zm6H_dJeAq?qb4K`*!W?%&jgR=*<0riD5gpP1K3|0YGJ`w!Ij9mz8m;MtV+q z>!!@hM&Nt@(Rj4KeCj%3RG2wA_VmG;E$ssd?p)se+!;qM($m%+Bb?qg=vz%p!Ls7e zbUy8fiLkgLs~{zkYDsA0ai_&s))CyW z-mfZ21ud2wb+LZf_q7<@NS~=~xO+}xRU(q{ft_Y`4FYyoE^$S_5l!*9i`Yb78k)F6 z0QfHQApbO%ZhEU$K&Kvv<3%*<9Pd9P5_^;AOzP)$s!lgUOa@8?s)GsnpHKj&9yj1G zGewK@l7i7zYVogaU;B-$(wyYP;X1zDS;R8BV0VwBA5KFZkJ~8Gh408@%>z4TbhCOh zFY(`3NSa1(kE8@Xzx=Z^{0VRdO%eNVNP4$lxhX_~Hu7w~nIo>Lm?Pj)1*$5|<=3R8 zj`XEEDJDnHE0>Zaw8A@9SO9<_uSMw~f)3)1Ab8#84IwW7xtyfM85>-%d+Yxedm6?;4e(ForG$IY>Wt?Ht3W zJMSu=c~yIv9}>5YsXW1*e}09oz-@c!OU<3nW3+suL{QPAn~&eB9ceT=vF65~K6Q$ymsiA#~nfZxHuvM93h zSAS%!+W1D_cdDv`5o=g}E{!Fu@Xmu!z3(F~V#x*+aqraq22kNDYUjhCxkl> z%C6M0fa;vo0Tl1eUPh(aU02?n5&zKBXZTsPl{?>%1`Uw*Z(UP>^eI^|dKR2^Eh&hM zHT$-e0Cj?rbH?LlUgkLXoS)fv7HK?#>_5b| z5$p22W!fKNc}2C-KJD7Wjb4{l;P<{dbD)kcZ@hILpWVw9Wxo7VN(JL~!eZ+8@0jZH zJ2|q;jMzp&mXwS@w_wx$9#8W_zOhYgmB6Q#eMxGUOU<2;0%R&vkg6)BZN*5yT|@9l z;kb>^4HJprizVOAIlK9GXKU+_F>q}agz`bEg?E_~ z!&x_h72j~8L&@1NBG`O)Wv;Q(Aq?x;T4x?b%rI|`lM3Zywaoz_*+ay;JpSqd+Fli# z6nquVm-vQTPQD{>65bZvd_Qkn-Cg6#LCn~{3RH>#2_?D>Lgn2!r13*Rfg%7ErZEb- zeE3u0M46kw=!%Fl0mK^iWgKjKjnei+)?+aJZsTvAp%?yvBOGjn>&pr#gDqg7!x4RH zuIt~6kK8|g;GM>CHb4A{_8{h_OIXCv-;S(>T#%`Ii+ClUA;I`rZ@9cnGnueWvn7Ez zFpYI4hHzqdATv$sKk;oGM+fXMEHH8}-GKu9C>iA`UU&WE%&(DOoYN4dR-q-~7H#yyd1De=fOe(_`|i zH>*Uoh)oh^D&t&#=^rr}uBoGK6+W~!z&1lg9gsK>%6*1!^bkm3*cP%CR-@AV6OJxH zAeic>QTNAAn1(tsti3VP=8UIPOkxD{`OM?kC>liFJ`-_ zpTz@PKLmj*{QN?Di+!-jOg_Dz%%%VhuFFPAg!@@O;ZNqWzZ3S?$_ay+@0Oyg$) z8-c+m@}gvuKn-@R6pU}W6?RoFIzGCKFvoRhJTrdqx0bqTmDh`Nw*>Yf@+Ya<;btc@ zx9{auxC>lJ4fxxhiY6d9SHC2Th7--#Q(Z#O zS)a*?HADG$%69omB{Zn_)(Bim@olbbQ4fh4X!mq`ntoZp=U`~Nx&V;B#(_BKdRPX< zf$`-Hah=pC1r=T@XQjah8L1~VF<;9Uiv9UF(%iz|=?qBrCA_|26)53O0=Rcx;VAN& zCH#a)>#vtDUH*^zy<9zz8TluyUgMFoj?)WRj?x-Job&Sd0<0&bKyY;hqFJ)J8nmS zdSKjf7$3&Ar%KV2N`4p?Igj<(%s`A|IADIR_ z_&-s18gq41)Pg)Pul%OUA8W=&m2!h2Yqgug^;XAk z41wZsUQxOoobj2!7532}r4n;|=>{`||Cq0SZZdq3aQHXqu5>nl-{A$*j~I8u71Pje znMHXFhB8s~bE%(X+><)LMA5Yf`@xYJ#1kLg-;I?Y?yV0MNDkA*6GRlIwvFc3y+1_4 z&`QxC?i~^@w1CJ~5emYbH$O<9U>}06eKIF4*mrj9eIiGzIT@>S3E-*&CjDrn58LMP2hIV*a8XeqC~ZXNlO@sez2 zUe_w@AoJ8(yU?EcSU%?8jGRUr;G{P+JAaG{reI9%zQ1muT^IpVW&_`m#Fpv@7jwkB zT))wuFv%y&3@X%@b6mVj@V&ID)sJkgvC3RI)FMBQ*<1pt1{Y8cC@ z__n2_v+AeBL>{ciXv%bssC#JCC2E&3cs}m)K(bJ!ExKdJj*doS%+Hy`30McJHf#3P z`5B#13dvScpxMuct520TaNN+FE) zoZmTBSW_Q;2`?;9;x>b>-0N4O`_8@VivQBI=g*h_b-UU>f16#A6YTV}shX?>`^tL# zB3%keN#9zT4>I=X)GCYHa2f2LETxi(Uzji7zD8%hsEfK~QF~GT;;&xQ(ty+Tey^`C z7g2#zsV-wqk?1}ig2i-?W zxI+WCm-X5*s(b<59N(+o%?_L9auu)y)KA^aopt{%h}W7NWOev&rvz!$ND%L&?ba|N z5SP(KC#)uPY$qLbf=txr4dy@QsH3pBGq<^!Y53^Wl)2`p*xrMx?SJMh;)D*Lb_W88tI{Jfil2c+o=$hK`!k>+6+gku&zwFxs_q=*Lvf0E7}Yup)} zec|8?=eyVTZME?5ak5*lQ2G2_y>Stq)p!ovq^mBc>G7;BH!K+R^zyx~bEP7KecLZP z`YWvmv`7q2)clNb!z(Ld8fI6p8yRnEU{gQG*IIXV3BhUlPc{WBd=UZdB{+<2XbMeWFH@8HkaQ5-Uia$n(AKUZ%#nZZ}J%_B^?rv7nASNY2ao zsOfGoY`ByPi|{Y4Zr(&o-w^-fM9sl>jP=XAE+XBE4D{%gg>`bw=zFmy&*F9{8*Mr6 zF1?a5#HzYy(R~i@iV9kZq#{fSHhzLhG7!_x&*9ajaYbnuz!6reF)4n=87(juRYf9_ zwVP1zyuHJ>&USMD^60MDY#gA)JcWP2&DYZ<@0SWYD)sp~TO)P;Wt5z%ZNWS2)2yd5 z%L~MuE&}|r#Y*3DhJKZ}&8j7fMt(az+x3;5x_rFbIK#$2+-<5p&}tkv=>29Q>>Rv7 zuN`$&9g(efQ(omWO$~nF=ZiX;cUFh`{#!ncux6R_OLKV!q;acn*#BXrRZ&}QGAKl| zq=QwEk|3Xxou*&CP0L0@d->cPOT?z2ZtA4ld_H6~+@Q>2+oO^zm?=^A@1kV1VZj~z zabM4%H3cs6?Yi)?T6H!-1VC-Xg5r7~S^e0-CRhuMJr@}aP+N|Xg*U(L{4G!5TQ1u^ zu)c13%de6QJ3caSFPji+Y*PjI_K!FQmYVuZ=k?#THPhL^HYf+Zwf{GgI5&^#8?_|2 zyYQ#b+C31e5UNyVNUW$==o(heOexG z?3hiZ*Osx%AGHjj-mMb@h~uvA>e_ENIlbWgj={!k($E#0tQy$Xg1UTY?2G== zkpOvvotLZy|Lp!}v8IaiJKWa!D(ngut?_ ze^}cR5nvAK`ST_kTyLi*Fb6lXuA=qEop{CQrT)*Po8yG+V5)kp<8V}6_y=2x&HUPM zI~~P3_=0n>n`kDRKn3om+xwnIQ+l_ds@fSZ`3Xm9Mkjk4N~DE(;%JVMD=7RZ&7;g* z8X!)F+AZJrNEW@LOe0)#DZLVokrOhb`@3r4iQoHJcj{|5Lj5%9tfJeGaz|6QlwwR_&Je7hb3t(n5eU(pG=WP#J^p~&7tnpkXM^X*!#5JVg z2FJrhuM-*uDBkmBv0IqQ_L!yl95w8TbVJXr*FHOANrHH)+Klz(L!to))3#OGh9<9w z#ipZs!{TOXMjWfW1W0ZcWn|KCa>c*>Y{t&dT(*|T(q9cxL*s-$YZ1;+!{^@!uF#)d zeDHx2q=~_fJKr?ThAv^rgy^BmgNA?Us_lGmRQ2`G`tp;Y+ z2Oe0RHy-5OZ`^?;+nLp9tc<6lTvsYnZalYK^yRC=vv}W%U za}DT-Kg^%(@bT{@MilAdMudGyNb@*7b#3c~vfmY&iu~LA?Nn5#ixVk)#}Oy?d4dfO z5-X46>f!D_er&@Pl>_;`HnQ%A|IqP3bIj=vA6&C+{rHjo1$3nu9FF6Yag&~_wJtS0 z@^BJZSuXKsuWe}1p2TM<7xds!_Ggul+9Rp6$04RIQrSc7@7O83y+|u8#@Y@i%OjAB zj{Y(LDz0nkV|~sWH$(Oa6UQBL`-%UC z5EDy7R~)6&+T`btfR_Cz?_{?wqp-vsbplw`}*dU-u>T?nC4)#y@! zge+$lTrG$BCe7=d5cGxB+y6qSQas7BAhNT4Bi<+L&8Sh>2hoMA(VIaix?d}PIAi}o zwBlgxdwcggWH0d0K3y3WxGyzeP@RtjgH~FW$VLZ}_4AKAoYZ7mgfisX%kp+)Yp{V> zH77+hrH2Fdl&m}~cP?jYb&C+glG9F&PWRfkBFU4&r#Ft7;zE4=gzM1ISM8USdEUx} zs$<&{nLYt_ioTP0o@m49Wmi{IQ{f{@Dm%=yNGG>7f{tr69g5^zGM{wMn68lBv)n!gKON8WUTF)WVg}l*fU8B$ z9JGKym&oQZ6YKy=Cz9oX&_0XT#DqQT`mDGASfL&ocUTk$*%@ zQl&wmX@I#~0rKyDL*O4%{72SL|IqBuGtq+4oiVPM>4V9ggY&Rc2M@Q3tUt;e z*EyTBr+sv9(OGeVI0pD&X9kk|gVUjRVwI4OP;wE`I{av_GlE``3095c7NFoYGR3>G zOY?Nb&3pSF4@SN{o#MOYW?9jLrj8q@YY9?d=4lRRhVj=<@d($L+FEa)W~%ji&v-Jt zmfadyXQyt(>r%EESbj*qWznV@h7**|E>aJ3DCU&&QU+)Iwv2otEme+?~YE zu+qp^dH(!BGIK0ZvXxGMz$G4SqNqOYDR%T&R8!a3-}!yhq4T2v{U`I>J)Et_^Q}nY zEk5fbb)DpHl2{|k^}PA7?M|<1CKJ;^b_hB-TYs-sqxz4e_(3z%+hfGxI#;*HTCtJf z`(wQNQrIyNYYS`0ODH4tD-=eM72FIX*2ZT03K`naZU;zG`rnhe@mbLioHXEcXB-|J8}QSEkZ91pZOCOex91#}Tctsa|;>@KjaMw2OgA>p*? zSe?lf3paBX(ULf#UK2aDpJlv3L%l`aKHAarB{KfnvH0~GWVx3&H!Qk(K84SHvMu*J zm{nxL%{q8HF|;X|W8i1ytJ(@j=BRlc+!JlgqFF}+)tF>HD*?S^e()m~eivuoh8W_| zX?pvPFU`$HmNk`v*x(8GmC33zZWUvBokk?+9JzG9Q0>46;Hu(6qF@AasxWU$*k8i# zP6Q;coLXstNeLoqjkE&E%|APJ^}Aeuf8Z_ zZ0`(W>Z(NtTk+g@rBJTxtbpuVz0BGv0fsbZT6hU?RGE_(R%}LYR6umCp6GH^ssw14 zE7|IVJX6RWT5VNepRLFVIzXhazfys|>43OP!A#(KBlG2^(OQ{JD865#UBs74RhF_0 z)^KkRZl1}7n*@}XgdoJ+-3b1eJ}u#R*XN#ThuFKL+5q31=!TsD^#*o_K#(@S3(_UBEZj-19?AiLyP=XF1cEb+)}f z3^GD*;c8sq6^+y%Cok_rx3PyhHF8MyK6>-eCjs*IKIiVXP?#H1W>Q{s_ZZ}rZAu^dvzxaEDX?zu7|G_0pL5&Z35EI zCEXRwXQcta(0W>;`JlQNI~t4Tg&}7Wx;OaNgEUv_y9IjfPB?n zCjL_1tk-l`fD#E-X2r)J44VoM9h0*9ttUQ%d ztx$_Z`AxBis!DS3hJP}$`Z;mw1LJzasQnxmHJPeDlZk}f7$+6n>KacwOSl3x>mF{t z3h-rgpMYV`5kHLB*P(-VB*o+W*rd<-1zd@_61Xu5 z6wth&Xi6k3Pdj1g{*0p2s{F!?;|NWBd5^A7$^Ig*)kXRc^CrWO?wwVGho@E34|m5k z;H-w9r6lm$j%@97nvwTh2>s9$v1*H6B- zUS&vO#*_*)kY*W~|*0`ffP?OhAMJm!3);W?r;AD;^E_TLj#Ww&U6$?_^_1#_quc>`*YoW={ z7SVS(P6pH7xJyrn789l!HCBh)ej(IWO6awKOJ)ImO~X(I^=b> z3Ky+V?fo&3cRJ}oPEzlyc>1=Vog54d2VXZ|dIT=>K}&WXy|@OULO;W`RK zbiD^#@OWjwk-->1b2IaJb)x!UaJAPJ^>{_B*?ARXmQFi-H!z*1HEKNJa=eH4cA#ui zm+2?q?T0ZrYkS&+WA=#;@=D}y^vssidN|jeXFR6*c<8+Ep5&F2W*IcH!@WwyQaY(^ zDlut32hjQ~c*_|+9Tnjsm!K5=0;NOmeCm=KJ*hw_JEhQuTTXkYC3ULu05|IL%`U+} z<5cClyZ3-G-9tf#z}U$$=HnLO%OXbHgZ2&LwQ5t+=b$W317MV&e$;hin7wWnZB6<=;d{w3S9o^RbBLi5hL|z* zM|55%moHzVbQf)<5`I%@42ve@2_yFIGms9sj1pc2_OIp6pNn-adSsLJ!5c@< zhqxuZlk}4-v^x*DQ6~hAGA;KI8qLJbCFbs%9a_w*(i(tKMj?FFQBE?AZ48#Zj zr`%e*Gx1zVjstrwVt&U;q5@uAE)mpozwx`)pAT-MbsPc$u032KRf7IWA2o;Z@66r# zgjY^uQ{Fgiymkbhji#WyRzoVn8_f&Hq2|`o=!u3K`@1ljK;8Eu1jIBTTwF{usN&L& zg?8cf$Pb2SO|46IQ+Rx-^s#;}TGFana1Y*0Zw7vkP6i9qW#XN_%|Dt_sxAF=_f_pQ_`#c;Z z)Uw;t(etrVeuV%${f%SDp9i>k4kVvn}!e~4o_*h6_p!waWJ>CD|`Y+;AP zp0ut#v&=%ovCavCilxfP*YvjGzFmj>I4NoHJ$D7G@7Mefo zwCCj%v&W<42tC~Z75h}potAgJ=0``WGBcd(+P6_c<3Dd5WLZnTJ8=wlc*1TW^rI69 zv?|pSUs^l(Kx@W|6Bw@(0&F<3`}%5j-#nr#G!L=bOxj3(e&nt-3<| zG-V&ixyKpJ-8@>3w*i@C&4%-;j?wsCV%nGJ?T-zcEMxe7dLk5;tkf_Z@FCe}&A9=` zJwEWwE;jA9${Hs`t4AN=IvpK)A+Cu?9cTKuNtVHH$quGgP2thcJc?UQI>l&OW1 z1tCuxxiZ{JLBmww3{02E*3BvChzh>`rJ_j{grSb`;CRX` z>FZ741s!cRa~e~!&By%PQd!uftB!R;bWb5gg5rXd6@PYDW<41BR*Hdu{>o?-qJM0hqpHSrjWCsvWV@C|_(h$$tI z8%5Ie+(fY(spu_z>NCgwcR@oSQ;szqW~_yU*H;WPHlg9orucUKrqs8^+^;0;l<%5( znSntJK;xi!W!|744p9~F3HmF>^UKX=xDKYGT*1MVqBWf3n}B(OXEN>eQ`}DDE{YNT z(KHjlA0}$esq`XWi;}`Igdjbf3_;js^cAGyeyg`72=k>B<6RAh zPv6SV&mb&4ZT(s^VZpgK`y@B0EFyz znE9__eVkuwcT}{@rgF`jDciK5=jY8^HP>+)GWglpCUX~nOh7y_^aeB9>GcQ=9+?Nz zw}%;o?em1>VOUGWwiL86qsb7mrsAfFn~>N9y(bWYTM4FN;4Gc3o-$vzv7H(*y_j1ynn(-j>))kO!&auO;+E1=t-2_T zNnh*oov=a^^ov9HkPc*De`awh5z@`Q>Ds;&G7XlKP97#6=eoB0l+1eWyXmPxL7>co zZS;YcB8wyyB0Jif@G6`-Yo?8GJ3S6v@+=@Cao(w|$!$(?mtSvzl;e?qW#_Y51`_}( zG3pC`8Ul>88_#trU)NaoF>hUGhQM#`9#*~4n=^tl`n?7GzN-BBOUW&{YTBWB7*Zrz zMYK{LooX5kyBP5Yle#N<*Ib2s4&ETAPxInkcJkQj-?zu`wz)4uOC<^mCWwn~4nw;y z`$_?;R`qK+VG}3cR&C;rK(=;+pX+ShheuwAPt?hTYx;<@5m+#{sUKszB`k6g6dx_D zCWI>`_@f+{5g!KXsWSTp=v9-2>76~Plma)Itof%{r;=07PP=%|EJ4Z`lr#3z``fPK ztIH;1ZcwagpUrx`@Q=^LS2OXe+m!JnD0iX$Q2iAu%&>qR2CQGKTzNGPd^+3a9NZ+m zdrn^+a1ss2Sv>#Bs32L1LX$MU$6IX5P!>z?WgQXq>gD_tcOtnQ~;BSm?zgn3(P$ ztphjCrYlJwIL#`-iu@*;(o3HF(bf_z>x!>7Uhl~Lop*@#`%dG^^b`wC{7+Jr{4Gie z5d`1+R|3DRtRF;seoj9tf-Fe9Ltk{xoXq; z*?U2m4zSIF(KUS-aO%hS_tnu4oXw`xN0)u^bN zPhK4u(8cstczU5Rs3~0FN9tmYAGnf)hf?oyIMpgUdQLD~c4+Xgkmp&N2BLt9JJ8&S zNkr{>!rOY5zRzHINx#v;aQp?*0=x6tp?Gf|b4p!(L*tWKk(cZjnHM7$ zFADi{PVpue1ToyIKRHB#XP&3&JeCu@Lmg_3m+LTVlC%%|C=F3WPbkX`#x5&@^u@sv zrkR`9&9oj#ZZr|_Avo?VYYD6-@?h6Yy5I^4-_9?S9&ZEyyV4vE9g~UtoWyl}D`X~M z)6U^e?BsGkV@|s`uHaEOqx-doP01bD_1K>jLEtUWcp-vc#uFp8uDaj_+wKYLiUa9VQSKPJB=ezS6grXVOp2-EgG3%nS4X!9^0TN)!ob zTIbN7nncyt&Z!V=r!OUiMPQ z4E>76DTYuOhDnE}S8#H{_3i2PRx%^l<8h_C`%NDa)5wPn7Q$!;w#laoNkeL@v>ayF zaSi%y8hi`p5#=_u2O2-!%xgciOEA%z(Jj)*5sO{+628exT5Y$$7`JX)89tayz=k&r ze?(yn?LB=z0q5C|)s&Lg0t?~|cd(cjL<4%$>FUSN*O}oH9O~8-9%VxN)WllvCHNkl z&GGj($R17P$4NR6t_rAPkl5aTK|~d|%zoKByV_d3Q+uac-?si<90U8RJYRFx^8!od z{5SmloM2bf+2}C`)&(P%t-|?pAS%@UbF2*nSd`hVez)M_3)2b?EN2-cu?tgBy+mT+ zntrvWJ>YO`yto}9I&D`2mcSd=n|W zH5g9sYqoC&0ppqPzs!1_Ta?ej+ljRjJ-=$A6VCKMsjU-mE69)eSuo;4u#H+x z|0sEe^w7ZvtDCs&JgyZs2BWs}=8OHOXCtrH`;G+-ANR*aF&S}XZfstTA#FNkIfWEZ*xUk`dlaue}j}EG1_)dgD>EELq0~Q$WF6DAMPETfI zSzFeE4uu%r#J%Nz<0FYdJ$Qk5@!^KaZOgL5GZdxciNm902eDdhXuMO$x}B)bmzAD8 z`c0lQj((;{!+zvwjOV+`Pyyn8&&OK(&a%0JsZ;pEA^VyW`{$19jV!T7txO{;j}g++ z?_{jyM_(q>Ig8MILfwk6%QjSmrx#1Rjs2mNj*KPifg!MBq;GFOHk-3ls86%JX!MUqev$i9N8ev)5bXZfHm zL#yVjWFVKXQL#O5*!Y7?jEZK~Yc?`^W-gyIdkFI>Jv0HkE!|6xdNC3IKKZF{G=cE# zi3)bLdckWOv&m-luM}`!;$x^Q*@o&pm2HGA(67XdV8HdFjGH))qn-OXveDN^i0kvb zE@1lOr=R0jS|DeeQIR!VNFU`&GC`^2Z?=XX+u&%n;QRCOJlRh7h$_C~%H3llXuV*V z$meaPn*AbZmqB4T0_$+sksScl=R!dOL}Lt|wd|8AM?{P=%gDu3A1)sPjFOX`P6S>A zTf>f-ww5}Qf8E4)KbF!Ug=pgzczfA0CQC?NaAw*&*_Z74qc!ssoVj@IA{&xiA7$Az zqH#P@bgvJdEuC-|-F`30g;;-1&uR^14cKg_jxl0d1#GuhvtH%dmC{4Aue&x|S^0Lh zR&rExnvsf}I2xQ!?h~=4%3^bDkbMu#{9lRK1Ig;_3*X6+GKNgIJy+ykJI1Ci~|sN_i-5ef!zKV2^05|*-(lFN(Mi(U^bqZoj^UxJE6dGp>94M zuI~TQ(|X7t5R^1fha0BVV37Q(!^Hz2$_7zBnhQp&L`ya*Ry9rbds%7D5I$=$!BH6H zD*v*i-xN~8y@fNirja*s?O+)HItZVRbHtkLy-IvVKlB#cIXr@AI?W~*X)m5qn-FE| z^HS#dZzhTI%SME-*(EkjelZyv4eq5y2X;pWOUJ%8u-MtCX)AP?u~n$m0zGoGKdz=@ zD0R%p>kVNa7v#eIi6@q}9o{e$vFn7<`@~S0-!p<))z}{lK$PYnh2%x-`IohlYM}n1 z$7HmrC&*69tHo&Drm$wmt$5D5NKU={iffhd-KNQ;YVYZ7L&r5{Ma?JdUm>daTfz8$ zKAVA4cWbe2GY`B%nHa(nBh@lfHQO%Y>0}|I^YBF`40ETsi8gC!H5Sk{MKK)2O43=j zs}W*feVrAMUS)tJ!1|+y(LW@Y;5^7)y~Prgh!rjL{#eh`1#wR78X(S_IZ&<4)f)Ls zQN;5K`Sl`-nD4XUXiV{$S5z{q;jFShEA8=eVfe*lvxYaO>~OJ;I1czM?pD-?j@(?= zs5>IV#WBv|hx=sCcWk9@+TEJzlih+q$t?cx=a0XkFtayji{!ob^3jO^d)KB@P?gpd z(N0+h5W2;-#?Bx_-Sk4jr&M0nH8tAdZIuR1wa!`144C%Fr?!$+msU><|J2L0Bv+g@ zoKv?FuyX#g&27;PcT#bnw*}vBk*7%fjc&tTlJ|&+>gj3MrV?3$JY= zi+QF*MicU#ADP;}w=A-jxUG@ORVQkdQ8P~~t116xl_Sj`AG(y=&y_wio~4m4rz@7e ze*`ckBPQ-ZIp9o>6sw4tWF1xqI&XiF>PcsAeFPjr1Zrcv>rVDqE<|G!Yk<7utb-vo~-?lEtN5h>F&rc|o%N$LWP%f+~}uuSl^#)rP+lNe(KbB+(H9FLDU z2GwP&6?C2q)eSQ`mif^pG1o9}ag|MAOLA<*kSxd0IiZIZAnOQy zP%HLiU33fBj1ReJN~j4Lvk8SwE?-=TtOZv9bT^x z#-l9>adb&>Kx4j?U`?xGt#^UnPExMaBUcL5{7@ZZ?+IYS~#8LCPY{+7N0wn4STk~5qOkFa`L2WJTU9EB|djh{scjF zgDjd8@3Fzz$(~MJa87u8TlY!&_mzSI2{kuEqbT0$ z%rizK#^9!&N#qa*T=s_eY1%UxjXiX+u7!SwEi|6C9-YR<^Q6Q`9l zSr$}JJiffBQhVTbhhx@_LhfOkz(ISop<(^_E3tFHDRSFQ<$Ed%%8X6N^*H~b-h1Tbt*^3 z`V%3rWz$a_fc#MqK9V>IYMJ75;7XluG1Px{l}>SfsfuscORD}P1D*hRIQQcZJwL(A zTp_JkBT}H4-8c1Eqc;;@8F8JNT2rdvlu0;n32A$1{P7UlEx%qewUS1GAuR~ZA0 z4$o?YM?bt{FeaEN8SmfzAv1G3Gb15B_i;$?xIsB+ig2A_?<}gipl@~3WZ&-m*oVnS^)4ANehz*JL*jg$S-hI--#v1By*s=zmus?l|Gba+T ze%>lM5E*=j*{t{7bBNtx?#S?iQc_e;se+RV&EUIL^&CFhDC5k-JWwsy1V6;%N4aAM z;p2CPTvN)}1vqbuE9={a!XB%fBw|%e^0^7I-`$2)hhlQ+&f!{O_!@xLi$b;R#JnW< zPe0Gtj-MVMueu{!+P>zM*>xUgW<)xAHREPbb`c~9_V9K6@M3XREhUI-)1go*$Q@D}*~L>o)AkGQVUnigtocDaW*|6W4j zPlzzI_q11^&Yn>XEaBObbrrXDi}f;T>-yD?5sI5(fO@{6uz-@2z1@kf^Rho1y-^Wr35C2Xnl>HEE)q_ZkY7v)NN-8w#wVP8QnKWh9m zuh{wA*Yx%@G*oNKVRpTm3?yEG*85Z0B?EV2V$Y^_aCk4Nd?0+moTGTREiC&>HCrEf z#bw9X8YKeMbsnZlco{6`xUQRA+3k{ZfHUu{tm6WP(bz=m9uF9I5(eeq2RthIc{t#n zBf#OFg1(xR-0>-eylIth<0;?cGizYCopY&oNa(nr`9J7pe|d3zug?h!?J@f)=3(?Q zAO|&KtL}3mRqfZ}Z!vR#^3S{kNJZO29S*AsuBDz;_{N34wW0{8Fkz9#W~BG^?t<4n zrqbg1N0pHFp1JCedk&+<2SMZ&ReGVpC*#G9EpSmp+paU>#}d9 zrZNmFB= z8gY zf3tPq1n{c#@iu*@!?#(|)u+V8tTQsn(Pnu?9SFd2_Ibyo#`VgCD^)5A;m6V94yzOO zF~GCCVe{&1hXn77$vO|_PwDDMs^^2kPz4gv@oV1urS04Ry94(-ZsMIHFs*N3S^-jC zS=R@KG(H14b{h3gr)B+lM>~+PM(c*2|9)vRp1|GPFXKYm8_I`~bLS4%Uy}N@?r$4R z)~LIPsI@1HcnLo*4rn%FK7R!$=$6&;!r*z{e0ADgE`3!&lr+D(u#f*{@u&4c!ujtT zQE`a_L(&!DdTrGk41T(yj#=m3pO&eg0{JET^7c~WLqC4ew<;GNc|q-0VM@5BXeP@W z%7n5_oV@$lrv_wBCF)=yFH9a^`?Hw;%HH`kr?y`uNZ)Sk^5ks+woM>EfYT-ZmX18H zxE+-ilt(hy=xurT^g@@ad1*7huF<8~%_GJ&aFyf$WzFsM_5vo!sJ-?lbdUa}hV$y^ zU+p=3|LX@Hi{HZqC9Yj_J-{_@fmcTM+(++x*YaZ=a6+AYho&M+*W5?MQJqI5ktd+B zEqNxVa>^H!NfhvW+ihL1@#16r;QZJ8;F-R<%5O zHcEBSlqYpT-l2AwV?9{aRF~f;zi71XgTzZSYcrvxQOGq>rB64q9e(+Ob*;7*KM3ndK0f4Hp4XU90;L??0%;YS6{zYx&NmHYce~389S`f zV|r552MmWT@bcK8A@A`ek%iH^y~39odiF6PbEO||Ih%bqgdTa{1|)CyY_p|^?Nm`^ zp3ZX{uDxGd^<9yAhptzVbtYBe7i{@L;13ikuVD81x&soz;dMX|8cdIe_W$??xK)g9 ziGDc{@nQ$>2TaSv{Z(LEJtsqchB(|KFOTg&Yl|NPMh*o57zm&vSmDADGK7qbVG;C3tuwG_cX@vt7Yh7MeIGw&xA z&-!M*ansCxl!;}MUyQEZ8+LAQ&}(Sp&tYB$ae_17?s~e>tm}ade0uG76RBl24>y8(!+Qo9 zW~{zeP4K#yY=F9JZ}lVKZ|?ekF{D4KsB&R>fN+nTRD74l%>#1778hk~$nbL47lJ;s zby*nSCYX5%`^E&64P%xB_n97HH3pDOM1<$1sc1gW05!yrNSCaTXI^C*AWqtQCQjUM zmLC63+Dc6ux(8kw*kR+~8u%fQ7fjJA-XXpot;5$WPSTqWlaklFHSuT0z>=xn;_Fuh z5v)mSe#Y-4Ow1m7VO%BUQeQ}~z^@zMW1&`#tKXP-rQ32sS$FlF74XKeLf5V7R*!;H zs@h9+r_Wvbtd}^tsvRT8+Mi(d=*oG;mT%!(a&*EVx&&imEOz>2}0kKv1EM%q^?E-tk!PhVU*>vvcbKRRlqnW;11l3ff3a zraum-c=@bc&+Yx3RaVTL!&9w0te|eWPbWjbi=(~OftyZaf z&>!ECe%xNr0(`xG%OJ5x3-<%&`r{Gh9^tE`FHD*5=IVqjjCy@?YmqtK zd)yY%{<%{6+!<4tEpFioADH&sMW* zMrJ+s8J$J99kjvvPBguW>PbC^O3~RRd{L`8bh7XN@+H%ZYpnYRE97w=qV#YR>2oY< zQ0MHue~zhrHol$p3hJEUKB=SzePC=4UJ!hiDZ8}nY*T}R>uoPcRyMFBZqHd8QSa&@ z^j!DyF_%-J5Wx8Mj|Ae1>U}>Co^%#q;)Q> zQn6Kwm+-9Q>+BA+Mr*Nd@s^4i?p@5~BSi$vE$XFb673_#eCD(2B(GS2MFQ*BuObLC zHJfSe?HjYM-g_F?Eg{k79e9a@92=Ku9}M@rXn{2J@_NbWCqliwu)qte-a{fjItGpPzs&;x?g&|rn)xwoL><@0&l zZT8w%r!+NQx^u(PY1*!jd`~4@HDzU%h3o`vzX$9}0lwZy_^s@}j}i5}pl@omAUxzg z0{_K8WwPSsif!ex6;2GUeh?N-pSp4mv7V>HDHecBhS|i3;yW|%v|d*m!8%T#lC;+H zYM)a!rU~7JR6Yi(?D3HKxI3=xnQ;=}Lw`&_A2y*&UNTFydk@x5ak+C`1AX{;8_xJ- zQBQVZYdutskVQ$?=|IIDJf*5oN&;@3-ShZj-@7_!jkacRbld)j!KlCdA4T^5PAt&# zg8$y+0PAEcl@EXw&atdX;0C0hFH16kJDl5bHIXofACU{Dw+O`s1j7e|TcQ5s=sUXE z0s@NQe67yy#P-Pv&vk(`x~@B1*}NDuAXxtoeeoYDtbq!laCREh;^5%wdXc~5vr)=A zc^i^&w;sL#BVj>LK=Wwvd zd7(Egs+W{7@iL+aPd8n{Pmr$|; z1(My=v|P~MY?|LYdx%iyIAmrobk-Gbz9eu=d3)k@wMG}Y{l)Cu%&{@Go-cpJq@H(q z=#p&RKqWM7%M_`5v9F{(pbe@AQ|jnnxVU;dCD(fZJpI)V82(#b(nm*>_kdA;dOM%< z09Yr2&x*44pg$e#_oktMg^rwWLW`0^9bp6Z}4yFA4sSLFvBb?-59YsVp?HYQ!< zr{~itBdN5!7jbBAERr5$t)kHh2#c z=at*w?=9|1=U6(VaS_t@x6!LURTiKsW2rn642moxdi9775mq?U1}|(T$0PBr$?L~x z^oWjw$@;vfrL3+pm|OufP>IrnYDbyb-*j#No0B}PO4vZVZA>~Km{v+oHx&8VJ&x_T zQCenw`3#>qUvq0892)oslGD%~7;QJGzUTOwj%;?B424$&t(6?mAQaJ= zY@q%Hpx{0gDL~THop;XoyG2Q2mPzccLw&ZVH4fLIN6G`L+&ZhSQUApYj{~^-Cq~6TP}=)2bQy4u2Ab%_1cWt+ za!e?pYqdW^oNs!yHLPwmLU~}FcpdoItl5ZKfuEA3nvGl9ADZiJ^?)neW5pQ^^br1) zUCoYGS);$G)c%tbfVC4pw*}QeGJ{Lk;Oza&%JS_& zS-P)26=rT!=4U(1Zy0r4n4xX=E3Uq?fqkKwAaig>>syQGHi61I8g8;4F{lGvi(a{* zOPkIgE>*jp2qT3>Wgps|>R;UeR$ugbq#>=j-9qy~G^J_(^~&%1ElV`f^D7}v>65QE z_fI$hJ{5lMXIIWBNW*$MkAQBsx$*;Y?=a)BN4@%A%@1^oGmvF>?`LLOLD`<;PD@MN z2bTZyy`}%ssMWZ+aR%$d4;l8DS}-58fIyMH2e`s{dDv<|UQzA-6*XP=%GRzIw4ma$ z^{2q<0wY;XT!~~;<+va z?IVSYGmSz3+;>H0by1bII5Uv5oEWuRJh1M(DkK>#g_%~{_m)rX&nC?8NbfBf7U1b; zll1@-G-I~ShU_hP?)W&V38lxh7wPL&0_+RCOLEFy{tCx%UgKb0P^gg{9%j%V5z{&2= zO3i$uCT6-SX$=U(XLMX~lOEfVXVqb0*R!i!??w^bx*}ApMV>*2*DN>V?U+4Ck|nWU zyMhK*JB8|CLmTf%TF3T*t+Qk6%|&?0yh&9;@IlX3Xz2y7$3V_+@s<0&(%yi!MdMNS zjLn7HzsoNO5d0=z?EZ;g?9Bsu(0G6V77^+PTsXSfraXvg#8MWi^b<84lGt_Ps`u*W zd1aRWD-ZDCKyKV`e^ub9l1n-SA4V^eg>WIl$z%G3n_0n+OrheZ=LFwj@BFq!W$^Am`$d=*uYdlog)#C^T8MJi>8LNin^Nt( zZ{<{5m>Ur7wXHW(%;cV#14(vct~UlMm%e50`LWAvPv^ROyT1_9VT|SblfCw&v%4)I z==K{$7BSRm!PBnA{j2o%fFf565%NpK~*k&qc#l$2Z~orjm>M*HXZ z>Hn)xwNH27hfk+0eD%Z*A$oOm{W%p{C&E{YcN;iO*Wg*!n^k zD4Xwo-RDIXVpr>@VmCpn@nOa6G5m}zNEQ;gwhi63Kp>5|uoaD$F=}U-V^_zQT)^(i@Y4d(Nu_tfMP5Mx6nippH zLwa2sMom|lj=x^mec#((eLj1~Hn@aEtMvWLvc9+zm-g${?s0tM85OD-R`S!ydRL(^ z@2Qz-j~IZ&+qvEwg1IKbC!V{v7{yLUQvANPotci1D?pNvtI3#8MTk!;E`b z_!&+51>x>DUbR6YjxP=&S`LBzXLv$RVE1KL&+yVi+ROFkKd`g5)nCE)6S3#C6%T-9 zC-S`gMUuF!>n0QoEy^E7^deUhsXmY)s#GRP|BU^=8u1qm`5&1TJ6yb+^?NQg^^>}RPwDx>IF9rhgu?1Wv7hj&QeE+qn}QH5_b20~ zI|h=HK$#wg`Qj2>+4d;nD>bw%eV4|ZzV!~~I)jkC>;Q9f{q^d89E|OfB8Fo0@T4#g z=JOMeR4z7&pLMfQySjJfBs)!!_Buzt&(7$9<8+l4=kmvQVMn-385R?tlCO zp#N)+#|wfj{P6H#O6MLZ2-Dr>PtNf5MyNtlkZE4URb@xdd@qcb!`~zm;_H0kG0aF* zht-^liaTdB!AIMg{m;$@STJBWcr$oZ>eviN5ZPr_kxoa<$lN(J{(^GGqNrdX4@#M} z_eXXqEj_W`{SYw~W9;_SI(`zsU~o43x;>-j^y`dU<*AR;vMZcrX>)}lZ<1YKrZvOl zmYM2yA@1>wYF8%(?2{|0-F)Lu%ALG^1=Sz>Jx2Tw8!kI85cB_~IsWe^q|pohwKL$9 z#jBb<08<9!e(>Yl5gb~Ucc^!>z zAROvpp=UF@!zTA%G1>~v1j#`+nG?DssDmSq=9(H}A!hunXK5CgZa$$lW~?%)Z|mSY zs|}G`&}GFF8g#2s9(g^}`F`UEe-^HQCUxbY^5k6U_yu}hKf;X6j$?Fed`Gozu4Ubf zYx}|s^w0=;VP(M=r8TI3G0b|-J1uG2FvuBscEULz?#M$6NrUoL{`I1AHn|&1gx<^h8co-x zcXmG^B=n!TPXBuBe_Xo{pRCYIBuKhSFr~*<(+_@Ornv(m8c=;}T~^;V6$S)t(Gu(w zyEyyzC6RnyHe{t67Z<>vfRH9plabD3!E@;j1S%6syu3M(tNQ7 zWk)TKt+66B-cto45Je4??ep79$`NL0jp?Rme!3>>P(ijW6VUc;ROUtR_|)9;uYVP& zTq8c$wLc&OC9hP#-ji3(AIK}7BHozE1$OJu5|vSbOW|4A2-ia}^4}b5NPeZHFeW%$ z*dN9=ue7j7L};NxCMhsv(DOqC3Svm)1O!YTCutT$F{UHsmz9#D3~WZ+eh{c}lx$k8 zg!MLC8@4^Pe880k+OI6wcC-3+Ho2V@yGvf*H-adC>EMMeA&B0(%skA_&L|XaCR>)O zsMKL+xxD3c_skh<$=>j)3VF^goVsHSitJuVaqS?%y7)c^0f@JFSzX@(f88s;!M^-9 zsJRk)SeztVn7vSnw&eF{%&g8>n{gF((s5gM^%+pVz`Qxqg>v8iHk&`#R{qU8c4hp< zJ;PGNV=Q@qq;QT$P4Ia@8k4JYg!(Z|I(m83Fk)F6S(-GIw^Fgif)u4&8i>o&89sU( z-E4_Yr~n^g5e22KG|K-2A@2_-1*+zO(xwtS>m57b*cqs-OX^v680AySJ0FV!C)6Co z$0zlV4pDh`cHbJz*e~F>mJ|(`6GRugfS6k|c+Zrk)=hV|L?Mo-mZjhFvnvF``}$in zjnMAwPjB$NNAEd$Ul(=H#^#+Zih}Bvz$Y=2*Pk(auJ)ijGuMPD%OL@@zb6g;(HxO# ze)IOED#nu!pp*d_X%U5>;jXHsO$rVdHq_grG&4ksux%zf&x)Cc36W2JQ&Ka#SR|jD zTBt-sO@4x0Q2nPt`J-9<_DoAwmo#1XT(*o4e7N5wd|CV;uFeHz=k<)UqC#0_Y{pMP zMebFt*u1=@C2m*+Dje~4t{T7>6|ZOf-*0U3D}=8Z$W-a3A77w@f>OJKjlrmz#(6&kC=lpZqtEmpa6y05OmxH~Hy{hpOH2@f-e@%aRU z0Ejn?+Yvy+dQB>ydj2t=cQB6e|8ngrH*(+I4-SjL+7V;*@L29CR)_&DRAG#kB_w)i zfk5sFE}zc?kQHk!^$Kc#eehc~Gxu-&{*0p}f}U6t6Y3Rn@R`AdkcwtLeAV63lB^CED^Q&&lwqX1FDqO$$}! zeMps`tHs}UlRn={^xw7<8Ni<9bebLLD<9Tu7O$&y@yNR0L-b7*ij2FXTl>nqI_Wv@ z`Zy!Q$2b`%9J$RPOCH2OG_|98b8VcI847z=m8=@MwWw+b@Mj(Rt?I zAaPZ}^jjq5({>AjmW~2D-ySHGQf?P=vPhG zXeqYed|d}z@j3o3iT{sv&!R-(u66BBb9!QCF<*={?+$w7G zT6*3j13OORae0$Cd7K$-oVlH6s8qv~>m214Rp!iXs%|?mc!lK)bG_rPB+y#?vggTf z#Y|!X@pzZQtj_iM-mIkFS}1%r3O|jbR1_HQF7E4>0S-(g+fexSjmP<({bBv`UrpWT zw__PqdD!sa14@lhYJxm2g6F>Dd`wrr*$=uov#D~LvYLh4VjQpuw6-oxSEa%ha}QHo zM)&78jb)gyS!hhtW6&Bz_kekf{37TD=mxI@7LIGP`{*EE+9 zsOyK0HDYn7S*^q`)7C9V1V+<>-uiO8#6U4r;Ma@qQRFJ4V%}W~8`aERWl*+s^@7%e zFTdTyNEO@{-1)xo*VnQe0M4vA*y+x0p;cfB!DMM3iR$a+5h#a&e6QJcXTB=7X)F)# z=|4kwjpuT|!kqF1K8!rz1dY2zV0_-dz@t%qZ*C<15wp)fHN~N2B-`9qV|?dO_kY4F z^%%Hss|SmI41V#u8IJ?%^GFeW_kZiUX$Kkw2QlMqmAn9L|gy=_UO$(e`?g z{HCv6XK^19C^L|`4tTPW_)Jwlh@7U+x+vX=E9qtD!1z;_8HVBjW9&&?w<9!O!s2q5 zn&ct+XEUF6TZbJ^hz*dJ%X3?jic7NB^N*lxqVC&~4fD2*pku=>oeABuZ5gQ8o5Xo_VVg_3O$Yv8UD>a`{xLq4|_LOug?90fcuUl zE|LEGlQ0&mm2Q>818uMMP;PnBrOVtG@CARAn@RH<0T z7Q8KzA7Ha{{cdZr)7rx$yI|~V3TdOr@zS7D)v{L=_2)C?Pj!V)SKO3IA-Ql)I#^v- zKiq8hJbavQn!(Y_hc>UG zhS91+m8mC+l~x~V^~S#?ry`r0ZPQ}A487xOtqWwbJawX_JBscV-Px?W!Cs2iS5W$z z!TxSIk`hz?Q)vc)CKmZsoDWOf1Yom9I@Ll{)iLzv>DrX3ZbSy2`R20$BJ&Ll)2u3s zjr4SA5BhNj7JaaC-5z?n=n(HawCQk(v_Wi{^5xjQgUe8W0r4!q>{w9)hJAyih*30i za$C3qCz#K1-N>#q{6y1kp4;`#sx4Wz^|IiIxE5l8ryYm^0W@^>1Hp_#Uk#*#L$_yH zG!zdr=CePjfxExE#e7#!QMH&pxnd|bj-o2GiW0YHela-v^R-Trf~MD?1u}+vaFohGbyrSg!Tb{)jjj zLL;UjW)_47ac|&07{7BOHyX6L<}{?2sk=H~YXx?0+VunUwOk!@?^8JNd$yQ$Z-2K_ zGxmCOIKhw3n>hmd%F6s|rmL>(^(&rw5qVExVP$4D^F}2!BrQPf61lgZZr6Tf51>j| zjq5h)qIV5o;6nCx4(I!vCpt(;J)f&FAQmkkTkPxZV+>;8wsJ>>=si_cbB1r!L%@-A zQGfiw1CRGH1_&3*=RaWR zsO>&jTX?O>H!Ln8Jbxj_zqLxw0?d1+e27W~K3c01IlXT1BnhA~$23Jp6%qytI?XfYDxHnctZa z^sO!&h`!sJaDClT`<2O|y@~&pqSnxyVQf+(0I6)M$2F&nIKjXZvyY!vFcDsvR z%yspMT2#kAImD)4Ao38frV4|t0CaUZhS4*8HYih&ezWJbBD1=!P)H-kXgLHo4=2e# zo9{PBH=nz2VN(b35SAf%O(cDLQ-=)Mxw*i1YSbqhu_HuZI+5&v)vkN*FZSUWSEEU5 z(XnFCJX&|Ipxqp3Z(}+w3}C9}FZ*fd2%3ar^l=f{ea9jBM)^!N80;B2S) zDZLIXu@G!DuKA&3$OC@2k#%GqXffWfMGbueY3^eK{ZJ^HlB~(^Z>0`YimQCG-~q3F zECmVHEM}d_odo93u)B5kjOV*WzXrQn9JGxo4UQ<(Y&ykd#1mY$x;H5|b}hM<`i^kc zyF;osR6kirZATXXb?nGSE>wg#6D^NwPLK!J{Z?%UQLyLs@@Cqdhv}6I`AxDa7pAR* zqiz@Vk>EvOuXSR1$VG8}+^rvh?;Voi@@^(HYNEaf&zfZ{nFa(z3HBpiz!DwGcqjEqM`$ zIiyD9h(hFw6W+bn5pt_{QDq;M9X6ykb*2PuY8OZ9jV>aaxt#rV-Lb)kS##0)ZuHPu zBH1LM;#-+9*&w^Fx-R$W%LW9X(13?~|EZcRXb@Pt~T)-MhW0umVz@VEHD zlC3^ev6=b_8Cjd`8(G>mp~tk9shFsuHs&$qR&iYiDtb^Y&yl%+NU>tcF|4JgPZ%Ui z0{b`%Z2}7&u&2gWYi)gXT(|Z+Tr=kQgH#6-bxub{6w6K!={GPfZv$XmA7}scM)o01=`lZ3O0Y3P@^*@scQP^IV&&tt<1i$8t~QlyCQnw}SB)a)uMPLp7))UibpqUW}+>Ut12wi;1Ln)7-S7BY3Z)=SIJ@>BNI7hEt9s@4Sy` zBC~j_DH(Or^Tyvg-uKE5qekb^d!6230w?DxJ+Pw|$TZ(*w7D>BER9{p+CV(v<@X@4*oz#lrYyL5(1?7*@a zi91}+ppWeqDk0)1gG#DqsccsntTOj*_Qc#)5mAos1@2rIn%>jLhcH>S5!Tf|=0)-= zLG|2t&cJ29g>X|R&rfIJPSAe6W+~Os{vvF_eKEcIc2oT^)K`2S{6*5sauAVS^3O9|LpY{=FQPH|*xEt%iM`mh$J^PZ<*oMkqXWQ9mmK z&z8>)%_nsUX!ZpKfgZRes}=!UuRrHX%!Od{I#zzFU*S(jCtsCay38kgbhRHOrxp)|5!WgxVYA94aacz-~@uZI|K>t5F`Y5m%%j&794_mfZ(o! zlb}HdcXzkJ^$whJZhPC)+tc>H`2oY;vu1s=zxA%?#f);r9rX^&HaW5qLOaB3!9{-8 z-_^~LApU~gb^lF`6O-2GW18W!Hyvi-^D4&-l&)WbqlNco2?ADZ7quGdj5nc7~@i?x(*p$s-Eq)<~1E38kF)OeNv1u^*CvZ2j6TvCk>vgr?P8929;L ze^wZlssRfmcXJb3Q7_D&37247=UPOpB(_K!H@WyC8|{$7IQo*xOF7o_6MaReWP=!q zNvK}lGT`(GmJ<^rDL>Y-sipLixh(RkFf8!?KT&v9goKp;@(y3R(5l>jC0_n^No#I=WSr;6M3&)RSL(pX2_$f)*gs^(f0X6CQ4n%>*IXuq-2 zI?mRl*e){TLRq$YrrTI$e-dlyKuIENb6&K31{BW3L&q0b{*dUjiXVB+_eRh?hi*oU zX6o)_8@ETTPyuPBV_sMbI)}{+tPsZK#%O^}ra;=9ZH#YJUfLY(+ID{w^CI<09ZbdJ zwr{HGgpVCbbaA~s%DZig>sD8cg5((viWxqM3`t5QiCf+T_HIa}jG5iR!eFNOow~f& zRW+OB@N0T2eSPp8+w9I>Pt(mD#e5I8ghI`jhY7Szd^X0{{=Z+kx}z{9dlC5Y)ye1Z3k zo!;Hs-jF;|mATLvOxnCA*q5c-O^hQVV1819WmlVHNXo#T!?!pl!Dq*;M#~a!FWu4p zos>f(>O=dQA-e%Usf_~gwO}H-*w|7oc*0Qb2s0_aBB(6ytMdIXawbMpj}laS+F6Uf z$Oe^BZ@%jspbb;3qWpOBB|BZ~QgTtz6@fZQXxalo;j)7AwZF-a8e#e86N$>D^CG=r z0~zuo1%#X94P-@wsxr-ldqAP-^QK`!`4X+-$W&S21YRimD8x3o(J4B${q%eu^GKQD zqjy2XzDvg-#!Tzy;#_&cx^w`Z0{*(})*!jL`$)ShPStqs?jRJ<^KG+5aqW74y~zr8 zF%6S2iUI8T!0I-N;`|yK%rR7!K=(Koe#Xd3EW+_k(AQ((6VqXXu^Mjq{u8`Tif+Qx zT{qvGn|GlE^EMY-VKYm(X_=UJZNvlg8H|IGHQKhJAyGlqvgACXl|7|q3#OT4cqs)I zunQ8*g<8%u*~&PtS_-YYf_u9W?^+p}qRAI1;AhrAqQ-4~@KbA=*zHywi2cZrS4Sy7 zt(Ge=CRGh>^`tbq7QD_`YluwPWCg0J4(a+?-4ZpDdC$xMa@0xEWEHrA%)z~4-Mxs7 zJT>%j=^~M!f*M46B@kB#)|@B72uNjf~O{Mvi)!)RYv`!;&oXId%oTHb!0P52OgM2@PQQLj<|!W zx+_#!4)Ip|S*PMAjTbgfoW>%djq0TSTy=2NNWV&H| zg}pw64NmAq<{|1&Q;Xp&cYwmac~Qc%@Pn)1`^bq{-wwfT+vMw8!4hBHB`aK_PLYSd)7V_ce=i$n)0%Yz#33{G#(qc-eYQL}=6({euh60W_D*XXi=DYt%|n=jR5M;zu^v zXJ)Qv8ZO@nPFp&_-Cs&|iZ9DF?2OOv$;Qt#``*0xU1^kgQ@$Ar0S6xJ_$hn)GLlR^ zx5rMmUyPv8E{(RzXw!^o6qQi<*cSJV#BLSlz=!*gN3vc=HtO9lqw$&|I&bQv%$jTi za+ZTcP^vEY$1T;WX4;0Y+$O(gI`EkA2I6De#pcD?N{SBx(qs~Id1a$a%vE)0p%hHI zcn#rSehHD=V5W&ubk)w%3P~MeybNOY0|djPKv|0KzTI>%C!9iweuc-cR3eN+L?XR< zG_fXE6+c!ciGD{0rlRh%GyKXTX6lMbfsK?zgw3csxI?FJ!+lLO{lrmO37Az!=&NDf z!o{ia-qN3a3~0^aUW4mVvg^OaVW13L;}1Pi2R3EjtOIxGKKESv*Fh-(Ww-M+^^_2e zH{Cv1y<1V%Te#)b(?jo3Vuo9(@^IIU$Wa=>EE?LGw&)3-MBXBQZ5kXvdkAA zb}MIXM|5(<92OI*;`!avZ7PI5UImofexeErPxn&be-0Y(np*_wTtH16cW;=7Kd(BP z^#b}8vkekzC#wS)?l|^7AJr+UD&H`AC6q8>I^U$=6eIjw_RN1}=uG>Y5DM-!#!sTh zg>TN95OPo{3Q??_yavM>pjF2xp%#84&A9LKuHNF1O4ogk_9|sLAaj!*$6M4^_qmL< z-=8ZCmG5prYCz73`%6#{LKRCBS1uj0*1=OeN=@46-57LUOFI{@mgSV%*+~=u19kMV z1j1Gh$38UbwcW8+G)>r-5rR+kL@s$n&O6@ zL(mX$)l+i}#)X%5{-4*kl`c?b9tsaAc2U=9LB!LoIxX!?oRt~2=TbjxP{Fl>rQe$EA0wHdX#uwKd2#_DbSdI$j#kfC5vK9@NeOS5E;%X zKhD{$4Y~fW`n-MWXRX8Bx~YX-I2;WdRau1w?wWE)Y1y2vMOh19aj&9*-^qoq3D`Q) zZ^H_)XnhI|>Zrz9&lprysVuIxePiowY^Mv>BQ1e-O>mr_+|_12*wuMOoV-%TVi8it zRDn@Y*r9J#@UFp{mfmr0A26$Qadr+37HG1A2=i-~-fe(J*n$zLhr{_f?R;qAQ% z_EWUcg|gzu?`7!s@hXJE63&FJs7Z~KjxI$ybuPzmUBHlu1>W!;VI&2Bnc^n* zV4MTeUVeW>G91;lugy#T>qv%&kyY@zd;UI8pCTv1WdBZxgXnc=e;c>Kdj<^m7#>CV z&o^(-Mzh_w>>(H)DLuoAz|#K1S1HG|KAfanzaSb2>Bawa;2KR&LezI>BlGQK#<{i- zHCfS7X{td`5x?BTWRvh@GId!CdeRkdbahjs{iiA|eup`Tuhot+ufNsC78y%Oq6Ny^ z8ga9S>n>hhpO=?^5oMWf22wJ ztzhP{w0EDAa6uD>zoW0lejlVoZlSKegRs+5xGz)@$Xb3|RavCczg6VHf(}~;k7I)c zNx3{=N?mp!gLLhm%0P{#XCXPaUpe27rx|UkuwZQRmTUf1XZtC%nx-^C9W6|#(wQw1$i zi(36cklHV$3JrV7QRCcg*^x3CQT)vj$HdCciD9`9hm%5Yq=#Ni>H7h$m3{6AcrUJN zov5g{;0Keol}Cvv8#vlri@$(Bpsm-E_5A5|YuZHHf??-cxro3t4r68wv9$hKy`WC^vQ8curf_`9+ltDr5n+iwB zjF|dtc4wWI{Q5M+mA%h2M0M#R#h?2a^B5;_hHgh^lSj`nNqf7vn>yNCnEGw)Ho-=U z+rIF_o9a78(}C4QUrX!y#>Pa->-SK;$fFtAj;d!4VvOYngUWPnvdK>iu7-Pe9k{pF zZV5E4371`cN3Glnr%CqRkj;F@K%vh0t-I@Sw;`8%@9qw>wh#g4;3{CexpwTWNBsfi z6#VKlZ$QIU<^1j|$c+$f6S?=nWu!LoT7+nr0k$u_Qf!)vynLphy06^R;0mUX)z4nA zSD2VOnI7M6rZs-7UQ%@r^xO+-Qm7ikG0oE%4{wH=h5ViG$n0soA8y!=`gGsjj26%N zKK8v{=Y^m{3F+};LQNHq?q(y2EVlL)pQ5U=TcHn8u+~*^Ho^u@8zUgWr|UNg;aB1- zjjPh9RN_n+$hsG6?M_I(@{NDO!TKp#UQ)&_Y!^J)=}r9#pXSLyQUpTjPah(t4gH|N z%IDa=E+-2F`$RQ|_&6S1J{%D*gSU**vE#Nyo(t&Ka!j2Z>@90D-V&}x8OfF%9VDw* zHBUN-$Ow`lemnY_{62kjVXi7+-Y^}DiE)<`M~ZOGl`jfmdb_N+uOZbZyAjX>U|zg5 zu_{)R#mClWI}nqaV{x@`#;Z=N4)z`TShYjAx*I-4Ww7W@X@IEyf}zr0`s?JFZFKrK z?K_N-b%Uf}XXsA@hlkX(oN)e$1sYog&B12YlcEeF=dbA*5ooIGwurwRd5-80l^ag@ z-VS$g;?Rzy_yk^-#J1MlB80m4+mUW`miH`cukPCkb@IQ$Lg!ypZwn8O9d@%Ra~=_8 zbPd>SC1`w}uGSiSm*0BSE3;l#`(~@(6-FJ|tZR6lTw&olwDUPvM@zi^7w_~GZJ@C5ZFXzKRMq~sJ;XAFN@vNyJ_ z%I#0c15o%EIR-Mjz@3q@z!eXaFrTn@$`Q7&_R=$%WcTX?@!2FU75)Ne=K%sqK}p$M ztlT!n`)LFqs{>ErD8HO8&(=x>a~RnG6Bh5gN>9>d`m%k*_*RxX%`Cokg{9Ew2BU+u z0HKm$W3ze*ikm(_5@G$Q*$%un-fy?fV6?E%qkY+e zq%CiPiUK%_CZh>mZ*z6S_5sx0rpws;+FT{bNBpZnTIDMGS zdwAhfW^mnN!^y!0dOrz86)r`m1x|9TmVUI5uM=~!;+~`0Z8w}QrKj1=FN%2cWjXaD z*&Q4K>fKXLh8>6v!+uCg+qRC~cHpq(b*jF+@!BM#O-EX9xNk?>h9=%Hd&&S5;V>5e z8#zzEWLA!Bzz6V`ep6ps@o}#-tr;@Whz@(~ z;jY?YoM^|H_Pro>{V}m?ijgN~bA8<}*zA2W*W7%2c$Q|medIY`N`v8U8|CBBkr1Ymluup7>o=)BYHXXWF=qdsF*a-)+GzmSj&S zo}Gc!Ot~Fv-@=dOS|I~w;&FCsC;pBdX-z_Itjpp|cee<^KAW@)JUh+tCe2sY{wa4O zz?&kmnW@`YV$MVI%l#f0UEZ7Eqg>`+!^TQtND7tK=KZhg)?p?(l zcdd`a+lpN@*f_zvTVH|JD}xR3*QeZRnZ~t9nc<7;JII3q7DvNW)9qGYtds6ZVnm6!0{VaB#gWAUF+eB;qmG(iCYk12qJ8$#h>%&&M7r!u&H|w*sp90A+ z*gI0>#y))NT}1Bxbk_#^Vf0wTbI&p^wrYl2sg8EWHF;HzEga!ZDy0j~!VMqv+i~gw zMOl+^W?Olo<|pFNC{CNw-+ej3xM#XgZ%6RU6b(E);@Q=?(5h;QDK_p$?6&I2yFA;<1O0HyZj``VrTtZ6{)1K=h)+VMH(n7x~E zgW3~gpCX{PzDID771wWP7Tw@io?39i?3`F0^O3btAC?5SYmwJ4LPjnL&C$3~N*iEh zA-PTDkk+gHU^dsc;Rr^c!yhv~(77zZ?bI%~L+ZCVi-}F*VQwwi`;jCTJMAo8QlXI! zycWf8x+S*&orDLKq3{}>U-zP8t6tL&O#A6{H7#QPHHBB(L2PwEiBNJ- z@ta~|iE9(J8&f;`-8L#axBYDKK$WN%uy+@&hFN?=9J`L5#;VS!!-g^ec$|~ch@Lh$ z+Pbs*L9zg)b^FC@>~RV!fe_KnA%?w;amh!h@DK{5l+|SEWFOHf$?K=^<*Vf{TxzM> zTrkwi-aJjB$+z!*6&@kpgRw$w-#t!`5PExq09#Q1I@~zhq-itNtnZ6I+j|P1+mTAy zsc*7;o*DRfi)XQ3nao3Y#nLOqLviavX%5N$tedlV{hL~cQ@)Lpa6d~^ z47nmpb&ZbuB}@7;b4N<7%aP&xEUe_nJl3AUrIwUf-dIz@hLudS@MnwCTQL>O=Yv1j zr?MBFc&fvXO%mT8FIiaW%n!PIN^@SRf=(()&8rj`LX%(0=^`Qaz{$*x`;g6+MV8JM zpCKE*bjpc~EM^swzS}h~{Q1^4CCa9yGx zwRk2|lxP#)YYArrPlSV7XKa0kD9Pdoz@1O4f9EN^b0`oU5;e_(6W(LhnJcp206YBr zqAkqYu-!t&@hs3PIy#13pzO1aDL=M6M|g8^R?v-Y ze+~F1rey!1?)WNu_6$S%UAk&dC4mXHcU6LUdU558Mzhd4RnGYgR*_83?9Fw}OwO3> zG@I-yTJ+Glc*v{m49?-Qw>E@5^YT4yuiXGWC$TYZ$k92RGqN)v_SVk1MtPVcPdx

      *POmp1#EO6gD$)2|?#tBHH|BMEio%A9>n=4PhI z>bzx1LY*Dxn5xsE9=v53DG~0VufbVJkXAOAF++05#KXHy*i=irFzZnZG0cQ`5G~A> zABnHm&Q_4^+tNDS2@o_tgk?6TosCX1Gp6rO$Vj`J4ZS5v%1-6~Sfx~>*oNzXg9VcW zrY9iQqR)}Cn)q0GKSiQ?KGSJ!`tiR})#k3vC2-%iJ-c@rQ6^db^qw2Y!8vE7%JEuV zla=#fwf`6TTTmzjpi^R*5F)gykGp6#Zf@M1Q{fs@wPgiNIWo6X1zWyAw7t1CSC?goA;JtX|Q`YF90^npYg^tW9H!tRG zR!28>gmcV&Z`||KlpWWaWuy067`M@6w{}>$u#9!RX|__%Z3-8MmF6VcYCD77R8Hnt zkh;d_JPIb#fH<7h+78aub}R?d!J4QS0ih`C_;xv zXj;b~kY<(`Jm<>E1ZmXJyg7drK_wq|&whU)8J54W%s=X`oBu{q;Q;=t2>PT3YUc1q5tQz) z3h3L%-TV_$Bl}0?buZ!nrTCfnXXj3z_s5yZN%(OGFY}mxQkRwaANAL#d>xk6Kk+R4 zLOKA@e|?g?{&{nMkHnD^X#Xfi+HN9+XnCYGO+#KRO69#eoE2jNB=+Ff8K{2u!Olkx z{f9?Ik3$Ww`=rjs*W7A!Qad0GfKYUgJe36eX|>>|hSf61$(_%PC1o?}onPM7XI!HV za+#6yNmL*gvKZjqHn=ME@VZIC@azoGfjy`3gkU^HmKps2f?_zHpqL6@XK-QfhQskW zvuh>?TYjElS(=P?4Sj!4zQ!DbUD>Z9Qr^(sDR*}jeR}2b6ANtnoO+Tej$7lq!DO2r%^q%!+lbroP_3`;>N!6b9&QB7#sE&gx29MR< zi&Uh}ndF-)D7RTu4Mu8Bc)FS;Swh)$wv52o)&%6@I~IHGp;GZGK{LAknhdikSXOm5 zyahH;{~52RJpNOjm3G!{$w;YotyQM<@rq_sD?N^thX0I0EwzA^paqXrH}a}+h}S1d zgJCH*SNSSD8r^fj|jn(@tV9wd{F;Y8I9!uul4QJz^;7u^+jF-mCNc&d9qiAT6} zd%fv?SSN5&LS;Lo29(|a2sI;<*7CpOG}Wp1y*s!FiMT6W&NC@gnkBUU$k~O(=`WSL zyl%i+$6Z)Utwn>uN#u@Ex8>1sK!L^Ss+e4B%fXVzof~9|#c95pSK?@)$ZAoc&uu$$ z`x8`P%xfA8k+*vx`M{3Z$+Va1OrOgq0bEEPfz*l56e=Q!?Oen1)UfyDb2d(KVRBJj zI~fxEiK6t*Qf8%tcs|POtH1lOMd*#jVkb-ql;NO%iB;BQY73SpP&SG^3YkiZoF<~tS@L-VsDk$ObUj$+0wc!+?A z&i)y;M!?|aS-NFIk+N;k?4V2R5X35nl|J~j(7lRf|4 zdOb$uy;rpvM0iw8wi@9w$!*lpeX*&+^^Ngpa?$lfBULmcr?Y!Qyk({_!2Y0Y)B+0V zqH^>f>KvUpjjG{)G2A!metKE1ysJCcuH{hHdRQkt9jMK>@H@mgMrY|l!-7Z>Nn;H~ zTMd<}NI66NnA;48c>2?R_e~rEpkWlVR2zoZ8w+HeeD*Oc^23*=PInU`+^XBNTUwPv zF3i0g_fBgzLDKv^3<*L^BJhFjR*)K8a?dBHJmU3^=sOiX&2x2YWpuS%s6>#ntI_Wl z-hq&sE?Ae&%n9`OA_NAj(X%4;QQkU0WX!929@wB}zpX4irL%)I z@ooY(&hVaGmGGB8BGUXf5MD{udY-N5l0G;DztFs(WL8{3s)VU}gv*Rh7gtZ|X-&G;OuP&qSk7>$(lw^T}>c2mxo26bGeMt6QZG6uNBD-eg;1YQ+Y}a`sZ*afJ zzXPneiQ#Dp!jA{P7#5VYEs=s_+47qodABs*O-o`51v0+;{q?b74CeT zv@1`Gg7t+|oKYgtQopRH@v&P!8Fq+;0J=`m<5Bh-1h=4+vDa^6D1sL}MD zO78Soc07AJ++`DY$Xnvg{EzkVzT!*CH_c%?G~B+El2b3Qv>0n{H_r6JDXy{vPknB} z{st5!VE^GZEbbmb?2WsnS_7?BII6XvSeZ(lV@QWsyGeK~qz0IKffR48!tthtd>8B~ zgI|wGI>L+97BM;tn(>z_?XVV+;*}^#{Ge6#u^VmgC_)Y(&?KO;oyYyuc-CR&)D*Lj9`BfLvd5GdsZ-z*q{tnWKb4uaiCPNYqMSoSQqZF>$jc-uo$r*x40?loLxVtcH z-$5r{=F1bi_{8YRh?P@F-rSm+i=^!Yx%{E|;Bnd8BbvzEA~=fnboKL%SiMH=4*hMU zIv);uHOr}O&V2)`AWCIKR%O(3$DaWs3AuVOzRD(tn6W%Kd{Jzoqo4Ss#_?*7un#Nl z;dNPGRy#2wgqNDsY(t@WniX7!(}q}el9Ic2ti?`vz!p-yimC)=g{+ocve9oc>;AWC zXU?kljj5h(dR9Rx1n^Yc=~E1NM;X0S>f1LmcUm6?7#tcab>|gC(<+=8!t1Vk_oj0v zNO`MO^3{Xga`htK=3pIpTn#Nr8cMA067S2AcDf+Xb8dDblK2&|3 zV-i2dxD-SuMwr1$!f!)Ew7S-4iZU)lD9W4+ZW9QP^=HBiT>Je5?Cj5eOC)#I(#;NgZ?odFkit0;ki6{`Emg=#lH6+W) zS_pG2#^JThF;)uX<1f%@$7qUsCG3cKEF({0lnBBm8)?h!1v7q7<%x_^2X&W(VQ)do zE}dC*%WM1bZ|^;GRZhn2>PAKGgIR(SAgb_+C~; zY;~5iPBi#y3IjSG8wioNi3&55#d8J@_tTys{PM`->ai8&{L#S0Xo(MbBBu3+)e7d9 zB%`vi=5GA4J(q7uzP*t0p7+9BObF|w+L(29JG;^Z!c@r*;*oBe3WE=f^!PuHo52B;(n$P;MvGDUP(I_B}+99ysGwMW=h@ceFvk8#LTPzp&< zJUe2-i}0Kq{L`m#2fFr&z^|m582Fu^BidymW0~0YW4BK_ zCeI_j>;bX<`(}ukD&~0eQvPx>i7&uq1S&L~`T7?J#a9yw1U6?#2y8-pTRFeMueg%y z{n+L}PuEAOq_bA_xwb$;1Da<&8}=m=GQqJLpB+|DqBq>;PLJGOBE?5p-p0AePqZV( zz=zMi>gH4bX_LNRaFEw7TT;~pZ$1ke(`W6fQJqz?swtYYqRthpst1znHY$5L-!D38 z2k&K`kz>D8*Q-mY(dVriy}U1ty3?w=LXId0%N-Z%*hAi1m*8K`b$4Ua*2+4MI@`|ebN76l(5@>*l@V1wUFcG*Q?oFgA>r?{AMC&Weghe_DbIXlo9Jlj+& z`e8x@<*phmGoU6y#EV^2^UxdGzG)rM^pEJE2^uZ4I0~V3lxeIagvR`7ck!QgK}4Z) z^bT}Wf6E2ROwK%YH;RS2^sq#d)Mz;0x*G3?tz*>@OhvYrUo&FXp0d)EG_ zP|8H=2D%%3hXuz8&kO+t&Mj~9Amo>bLc5d4J)99(;v8MgKXXY71pgM$xm5(I6i}1vUYbC$7h?vKrLq@ zBzxq$SJ90yaU6;Sj$;~P)=_<@)^7JQSPgqq_e<$i*LOqi@#Ue(1cFmAzgBUhdD7zH zv>2U?Rp9H=!}6fqwoAG7_ul>5S@U3|TC|N`R$d6X9=HC&=T3D-VNFPhQt4W0BYRx_ z_hv`Q-6*j7-u{xT}p*a)>4LTK{3S{&iv)8G9TksE9u);)UNhv6mAp?W=F z@6m}^j&6G~~Pj~!q6h|(!u z_n`0_is($WJ=6BG`Zl1iF93(qq>AuL#Cu-&d=|K7KF@FA%F3oE&ynk^bHPG3v%=AJ z>~ZU)`pWg=$ru7E(TU@$=c05j=6!ZOch>rP1EuQ;Z}uDf!F=_)XVmCMbD_S%``+k z5*Kg{tk2;T_GM6MYBA)u?amDy{2m#oYMZ0J{gP=%NUa`-{;m;P1$^Pu>0cEckXFx zAvN%;k6(ZN{#}hI^X7Nk35uW~e7S;LL~lzH;o$E;3^h;b5g>4|vsQXnosxFl@)t9R zK}_h#f<)h3Zw8)7K(FDMWP2iBVUXmec$Wt=PdfXm#i+QtWk_fNM_|mMK~-q)w=AG6 z^RP@I5-I58u|Cg2Q2}2cZBCV`e9tuTS&zJ>m}TUIV|4Sg8%@4U9;1Zgc|&n-dYaTy zR-S|WXe{HaRS_k-j^qweB@~)~JtQhnR~sNz^^`cKf+-&}q82D{R2|4_?^vIrg|{3M z3P2^!(OH!ib(iUGgZn+-j4eUJ=sBZhHOf3OwxHBAM|R;OM7^J%%8-| zAI3I1IC6i6FDsR13 zi8TyH)D>##XcD6L6*}KPl`_!35V=4pZ5L{L!VcjXEEytfrequF*PA`vw~CfpS$DJS z$~X2p)19(0p8_u&qD;Bsf9ROlteYZ>0W-}6&}vi~q+J!R#>58Dn* zEm_J<%h$BC2H^T#Wpl!2JX2Rkv4D)**q+O^iv6+$rO@)jY|v^odXr@fop$KF(+>h+ zqp*cjgK`MJ?@Xgx?5u&OX6}4-qNe}q>j@meeFm#i0?8&|mT2UfP<9@TdkvR3X@r;Hjzm8V`ukUQcnz8(>z!$6JT6Xdp>DhUy z$6rKGNmJ}Bi!E>5Qxf%7oj%T5$e3H4L*;W1Ik^!U zAs5{5kp!v&?c|+e_&JJHm5ZP_8WY+#Yow|0@gf+GOFLI~)&9?hkZ)65mIPzd1{?;+ z_a-U|bV1ETq~-b2%|xQbT9Xc{ujNS zVW0aGKAYpwXdl}>)s6ZaF&*)L!f0`Y60;>hFb zmdqz-Uav83T4Xd+t|hKoQCL#zI)D=qyRltv=d_SM#zh++Pd9TlJK!wUv5+yRkU)Fo zz7|;|b=5K8#A#K%)HroMVOgCqafRA{o~1-OMb#Ld`@u(KSXR|1tXa zh`Al}4^p~zIh5CVj}%6KBe1acgnAc?{SWf}gnGaF>yY?=Vu@)Lo_z67>A4JKH1dVHtYi*XC zT{f@ewXW?aP%WXmk$n;+8Z%&XEK)mN4J$&?&m|`tojBYLEM%0<@X$T~Soo`T*#%wo z43dEQ%s9iV^21H|+W#eW&J8_|F8BX}>HT>Gt45FInuEx8?m&W7j{HY^0{I{Fsl&*2 z(7z;6g~wS&{w0Mz%^cx>7`A_L-lu@&Ph``7u>6dF$;eMf00e_i#{lQFoF`jOQx2S# z{FXZ5yfH!^cv3n=%F}jaM&e$Udy;Yrd$H!Jo0!nA*vnhYr0I-j&I~2h+2>V`K^2@U zgbUsi-D+N1s*ZDaW}~0disuovIR~kut25-NlB-iaQH)j8rwOkPDw;ql;`!C^D{-Un~@hLh&EO{?bm5w2n=%@ZuIkXl`8U2h}R znkI~z&x&t&E%DrXU|pBQki-kaP{-#h)t0vA8uLreM#ZZkg zqv^hBY4z0D$Des7MwV~K*H?kERT2ut{ZGE3Z?L?c=^gxgzD(a_Is3`QZL3gFFIxBo zt|JY%X%x21bM+V^&KQ-b@v_v=_kzo~Q6#@sM|-ln?)~n=?tf=o_uEWp#oWYUn#LNv zzIoTP=9PwH{ACYfTGeo0;5ljGyzR(%H)#_pP~jUS%U3D~w>*-s?IuibricS0n?)@Q zHV@o>Z_P0Mn{t!aI%mtd!Totg^Vzh>0^ccs<3}flKCaW<_`J0`#OOT(~YZWDDnd^~IJA`qo~vtaBijH|Ff2@(gVb?w}x zPfVP5Se>DeA)=`ye3Q>r^9g1m{V*)k&J&hpX6K|e(A>Ealq_FG{QS7 zrgbL7kg+l#(8$0%!deM)d$>U&x3zO+56H{RN>n`M>=;p7k2~H3dabvt0qb9cI4^~% z5QloXI|u@gHMS&~B7|*sv11meRQ2B)RPS|HM7nSjt)WS>FRUlNCri#gAP7bcc`t8m zK|iFR4Ui$f=89Jn(dW@AbpBf46jf>?GV!Ae|AhpO)(~JPQK>Luzw3~8+Hnv{iw7ro zrl%$2E@=6ap;Q_g!NzfAnO6=023gg)#fNRDIHZ}Lf1UU3xRLBs!^G<9mv6j{UOuvO zRjMytMwdPZ8s6r)*`w{)$lI32;&SE<4%%lW4SNtn_ZUe^h2o8UO}|voGkSWs)`pz) zjz=z+uk9q9cwv{b6i7Ff-C4*di{Z}Av&j-Z^f7*JIJhED2_Ib3Rp{sGi7!ggm1XJ` zWEw!&=WDgV^CC|VwNb*n0(G-M-BA5$jIr%7iQvGB-Os-gxrLV%fQ4Nb!yu`+P zVfvNnSuoy4%Sk$y?if?a1NtpNZm=PJy{O!TT~lj%bMIxu#$X{GsK|ge6ok5mySOXl z^?cxSfh|r#sS7P2_AFSl=3A^lkqZg^iy^g0C&PRrlD#JP{+_l)g?LwXOvdqm&etsW z8J86wkEUfcU4Dh%lw5+lHOsuuhSsr|Rrz>6S$<+Xs3dExYXURvos>Q;ac{ zP3S(bJqOZCb#*R#mgL^!!W`}7`GFg!BImXohgxj;{lboP#F8CfNq&mtr1*K25t|o~6DF1e~CPOTgcBr&Qyz-u5ic)G{H z&@eBW=hRT)KouM!$u!4mAfX2URad_Tsy}yWpZz8~HLEEgJ}hx!CTEbd+=%njSyhY$ zabCz?B@i072&dq_Nu#sIj(nb-7Oxd#WKRejCyOws-UnLHV3#`ZTRT=zB^T@}H&SmY zPsvbD<0EFU_LSk0*-u)rl6cD~i8`rr=*v$~g*7O#<$O&>o7(?cEl8Slu%W{+qf@Ml#Jk!;#BR&GY5oyiwy?R7y!-COAQ@@Htsyt z-Ge*|QY^0oAD_Yg>UKF~zOov_hZ&JdCL!4qsv}y%o;9q8Qp)Ltjc!BEqb5129(1<5 z1b}wLE}c2d1urg)#!`?hB{XCgk5QKwTkEJGBuhwFWVgb1PQvFycXHcE!zJ8+)Hy2iF4*MAtqw z==fs#YhGDj03^)|$*DB>C-5EfUCxBW(UEwv{fLM-rs$) z0P}m?yqL~Cy?l$86bxg1C%Yz7HC=-X0ZB!vo_VO}Tdj&?sA(1cZ{!iO2o~)TX%H z_c6uCf=|an&vx|+YXAKxsNxMLkUtfW92KlosL+nO&ew=~fiPDLI2xHtbY$k}Y<@0i9tXwnPFD%`P3`B0RR%;z2%E+4q z6&E&$%j8?3)fUyC>dIKM1Eqe?KD=-zo86(Z_ngpNmnq3z%c=koaDWdE7tjgVm;&tU zTjv&jixYRCPq4Mg!@09s%uLR&xP&Z3j~1YC&_>)60}pXMIoiSX%i8qvp=8`6E%VRP z2;?$6w|Rra4jcP0)O>jzEKA!hJy7)7IcEN1T?rj+uMw=N`YeR zfmF5ulXG42Bu*M)+!Z!Wp7zS4VrMDa(8DO@DDIWR zF}`ix*J&_(Hd>ndRFNCzNs(R!YgZfEd5m5DDY1J~pPRAN9w*X7DPV$2pti`xv5xWH z5j1|um^IUTu(5t^^-KCn?U#C0hx3%Us}u3E6H4iRQ0Wacd~NonYf!}y+)=?nbZ{!` zs3)SuN_P`t>KIz%?MujfRKeSm;Rz%NzO8x}(PvEw#1P+M>|hs$9C!D*l-vqEOm%tOx#JrJK(SMt7u#mhHbDN; zG8e|R$I|c$+CiESPh{z(GG%uJ+AgO7A~_$XAzT>)+;ln~`%?^nP_+e9374WPf7>Lh zt?PXUemf&cBH-7^pQ=2YR!&o_w^_uYS}J5;l%4M+A8w;Q)w{UE*&HyYse{b`)&rO7 zMqpWkH6yRYf61Cu)8qipd4CPW>SZFR~K8I#p+}N7oIg zeic8Gf#0sLcnb=Z#^42L%SY|jIxi+eHDzkz`BS&tFDVWRMr@1T@_-#U6k!d|NWgB* ziAV14=_l}lv|`$@n6@H|Ov!ovyot6GcutK}#%hyAW95x)+D?`0ZF4MUd?RHX2Ng$e z#+(Y!4HWa?ja3O?s=#V&#kdO6`*k9b+EA@{9~#F5uFtA)Q-()2yrt2puct)yQhD$; z{E~4%F6RUo4q_<^q4kB*6rt&=IDR%(zTh-}d<>01Yt8E5d6n~u-Zk6=-8G$=%lT@| zwOWaJFO;1_=_WF3886`E)NEulyOWmY-3dClR?U3b`=x){_qmJB1Nyu7bcvRRuZu0D zXssoG^}D&p3S{F5)VuHd-&}Hck6QT@7mvX-YPy4VLWbh1ujrc3jA=j4daMbKNZUb0 zSVpCLx2e#HAONc&7S>eBxB(kO-flA_-i4vI6QawicEd4Oh0r!EK~uyQBSTz@g_vSQ zu;b@mGwt1WHD}GL;N~wD!Pqte1f&6w;1@D*XUOoU@)=i2HDZBr2HoPLnHuz0WA72? zR077DsLnED)Wc{@>6t<*hBX|M1Jvk6wDW*&I6!e!Sx;YF6;p5-jhUKuxAqZ^ragWL z{xQEh{s(CE=xw(of4nj@{ID(|tfRuuz{w(K_6yR_P1P<92cZAd%y%dWDrqzJpQjCNE)ksoIGQB>W6ku@RIFBF}6^u5WuF znB-Ab7D|?E5`}ZkO!=ftxwP>&hhKjaOYgjMPNMq}lqnyfETSKZ1RX2`z=>+ZvM*20NEUYTuFvz0nJ z&?NyWPuVI@GM!i6x~hXwFo%0dW3l!!preT^ItKYOr6VK#Fnw(RJ3z$0r@h0gbfOO? zsa4vZ!dZo*covWuAG{wvt^A{fD|Mtbhq$RlyIpEI7Rbt9Wuk3{ ztLUf&e#bC^JJM?M?hlZTpxzkoj)aWl+}t8Af6*B7xo)T{w-J z$R2XU=QH)xQd4{8S^SW)jOf|74TRsS?yL#e748HN-Yu@UO@`jiezWUdMLwjF*AVWR z>XBC`sVUpYO!Bu}5Z2)#ld{ zmq~5dPAI5}8it%B&PCnQT8QefzQ~N2<%%RLtO?b(1_fWKh^b)J{7|D+pPVdh@vo5p zqtr8@nWRhhVq(v+COY!Iu1FJg>1W?#%}6iPPIrj}^+L6hxCK&5i{EeMykUm zr`pd((2iMlnkUFmY?^=rp6Wvw)RPQ+Nz47sew{M#Y zL9Z?WUL1`doC`y2hX?Mx>l-|tZk}sxWlf$pHHZd`&vmUo`sL|Htd;pZx&kV7M#2+O z{aP(P`myrJpRmVu4g0z>UK^9)t<%oN%^Z_WTj0crpXnVRykqKZL>~Se6$l>F&wO^{ zye-ObZe&>Y37D06GZ6K?wNMHVk0*|>zY%d)A&n}uuL<`Y+#eUy=2<1vHjBr>6I0pM zX`qdK3oz>M{djb2s=MAmtbW*EqXWpDMu?jDv$$j{KplG)~m2h>H#N9;_R z9ktu%9s^~+2)j$#A!Ob<1thA~T13{S$1S#e&Z%Vx6RF1d!7uV|Z&_3DhIsJ;P3qis z(#y)m-m8$WN{4@wcv$952u^@kq)qBL@qV(7IBEUhF<$4!>smeW5R(>=zU$oSqR%ATER!ttGn!O$dwMzjAA(Lca(wq?N|Wq+!s3YzD?B{HTB8Zp>hjwRS|iL!OYoM zMZ86%(GoDe+R&bMj-JjuB%+YoTu{4uGi>npSnzPPum-Mmm~ZG57;8FB1(>&9tW2qD zshu$ho{YJEU216EsS|E}5*nAj2H4BFp47}Vfu>RT^&5!y$-ukQh-RosI~#fO^t6p~ z$KBC?baW%zyQbiC<=6dI*}H`zXgjTc2R%~qBcJ2IBsC9x6g6~uxXS6F3z4#R_BAl` zb%*o)CaQxvI{B+N)ej6il5+t^0I=~8J3VB8v5tn)EaW$2Ua4O)vIs2BtfE2pEp}`V z5!+Q!e##v!%%dMo43d<%^B&%~&1;VtM~Sf&YPec`@=8vnvWJF6T-X6AkWS_rPJL6( z4E3`lXi6;3$85b7)ZnOF7g(tq$(xJb02&786I68vP<-4!ul3m-vgU`T*qTM*kx2nvTPdxz%}xitd3aE0 znxy0yon7Xk`|S#CB4XVF&%+JBuqDHu2DWQ?lM-|IE&WRKY*K4^dORXZ&ib56bLjXT ze+Bz8@!>SFf+zAOQIV?k|qEZ%Dg;kDW1MklhFu1xY+z{xmVf(IC7+Ql7W*XZvp{XGmt7`hz?g( zw>TOn4>jlD;EF9hVM`_nk@{M8Frl*jX-E3sNzi6{#_ShHHBu$-7yk_QR>~lLfnJX!S znpD0(n+o?VO_(MREDID_fbaj149p4=6C-}f=r+fqhs^bUF#p1{zxJ~Suj0otyd#M2 zu^WeQ4RbGZba_rOb21)&Lf(G#k<7J7AK%$-{~2sLe~56BXPTml_?}kJ zhqlWRbvwy`_ISu0=fE2Uh9YUotvDLcuTqzd*dxcf&B7VBB}q#6o5#)W{JB7tX*;ei z=f&-uR)R@ci#Cek_fdx>$d}^YKlf(CC;lTsie81t-vu1!g=0v05nysIdRkSvXDz1RL zjMxj4nPJ79f`uC3e2DUjnFQ|ra4?C+y1s7UPiM}ez4Yr*y$a|%!XDtZY&4&E_tb7^ zF?aYuMlUPDD}wK?w-;o=T(P2cZJc3ygIs6v>ge}nlCIX2VUS$qpEdR1eY(R#VGA40 zy|`j6amz!Ej6e`pQK-|q0hbN~=^|@_8_yUZTFG%QI_oMs&*Ca;y05hlr0)7$Nrp7* zh_Ph(JM+T2raa#@NJ22)QZ`JxZvKgIX9)DIG?E_aYxukB+eMv)#wW%jhs0h=ER37% z_DhW%!*SWKK{WGp=7Y47*I(4M6uuXRP*frx^8rBtLJdJ))>g)}YQ>jzjEz&-XcM>= zeb#_(g>iM{pb!s*op2Ai83lmu;{i+VP9r~o{O1X@ufa1XKsQPLKed0Al zlR3Y{BqNNvCsdKwJ{Oi7N=J0rz$M~KDtxyvr`4O(H=_+>&h6I6rIe2#@BN<-sR;6d zkMXSWL|%H(C;xM0+nk(kCUY~|KwEUEYW)Al1(Psq{9jmtrNmJ#)c*i&Y%f>>Oui3Z zs|0nVTHCQgLSmYvnTbC?E&CEl>SVQmqSoJ8n`A2Lr=~>L#3hY0U{DM-)4G}D=9w^w z$zh6(8B@2uF>O|+Y$Quy=;*<;mnu_UlX)|8?Iv-~p@3yQEzyV;$mI09n*@o5gl0?i zrWpUb!}_fhI&aD2G-Ffu8>eaAKoy=s&J|ygP$i{z*-Jlab*T?RuFkSl-<_f~0J6Y= zN5u{0Oj+cLw9X>s`xD`7x*G-?)*I}`6VgT-PYgl+uV55urz*IJ3*(6@+%fPVG~-7D zQ%i#$Z+4$tTL@ifE!}9dB~p9zvBI#uX^T9HMhrr*-sY<+=Smw6rHU4+tec+Oh2|*6 z^<;{IU|MQ-f2P^i9AORwhX%y`xdDLOa&SK+>i2=McquhUp1y{{CLmm<(IiT^GkaL9 zyOx|3b*H_1uJuj3yiO|vZ87Em5$IR!q2?}=-C{G`g9vk>YOLB{c;gF8x`5U1POJ6Y z8;kw$O3$tG@SXB#^xr+`H1Hz^wr0W*M4(QT@NA1@RKUxBnK`12q@Gi+wmgbHe(kCV zzx9t^TP_+A#>gE5x$xgq3J9_`nAN#K-{+|whVjyzzkgZYl5bIe1pf;lzvF#g-VY#j z1JdOM4AXF8>3p}7;9$nrR0XVUicbMsk9^*-luPu{3R#{paq3P%40BrjbHrQ=2Zk^L z7H{6BN9o-Vp1h_$qB*^R7i=zhC<3iW8oG4*5f1(E576ya5o2sqh`a@AzS?r7OyG-U zC@2XMPO{hmBR1YQ9JmAnd+KM-+jsU9B4aK>Vb z53JuIm+z-2;)!0?X1Eo1!1Z*Of1WIFa^^0RP#MnGUsD}?Xas;$p09%%y~%k8-duxE z7lIp}uqei~NOw-sj6FiPiXQceTY<4;v_O!0io z*khlCyX}U;1NL7V)3(5DF~wJCjBeE`q z{P4m~s7n*Wti_KvjoQ)Und23WX|u&c!#4u)kY?Tts(P&;{dF^Xst4Wui@a;Wd*O$Y zKPUBv4S9R>Y7AE^dF1CdHoS-*VgaiU(0ip}X^XP{)De-&>h`UqsR=!0j^Ld!_WaKI zW-~VNz6hTVD6a=d^84~(S-SiWw>BE-AN2zRhJ4ZB)n^8hm>$6L@C zn15AfaA{Y6XW$AmJQ|oZXV;Az4u%9q2J8#|C@GsRM~*NUT}6HNA#o9>Q-HS4@Q10V zVo&*;@6uO!UHC-1M)|IlGoJESHGZLOp3hZrMa-sZAd_zJt)gbp2Lu!PP*X!1`Ajpz@fBLsn(Q7j=%J5jmYg1Ad$XXWeUnnDBPSs$|Uj277vNf8%?6o24 z1^tBzN(JB_)YX#Is^^rFZ=C!D{=j4z_kfRIX*n-!?T|SNLYf7`3fcs};65Rz4@w1= z+jBZ^4qxcvrV=c#su<2c@Cc)k{dsHYaE!-$YXWNbynJ+luwxzFvQn#MP8?vfSYIbHA^+VxH8+VC|B>KVFV&d;;I-5T#mGuu6MMe#VN zCI}g3=u@>~HL$(l$9#6DzzgB$a(B6W%{rjUR*7|`<_N2TM4RnlY2)~Sy}L8dT=5o{ zY2cS;mkBK>uWZqverUg((7v?Gy`|u#LlZVpIexN(sv?O@#x<-~UYbz8GOH`i8luA| zd7}M+ZQGMwJ7}!42r-|*2~Qf8=-@Zz`1r~ry?+Mdn`}g@*xg4=X4I*QrytDsWTn?# z!$=%_$93^)G%6uFRxVMrTyl@=+fhS;x>ql>nra?jbegF@>^Y)SNs<5YBedADtcCrv|cQg-M z5Gvx7@(%Yz>?7o@~>{SA{;2o^Zt90O53njGsN>)uf`z)m4a`aCfvl zg=(W`WrOMu1aohw4dci zq`Xu8Rd*z{M&qnV9n!|6#+sueTwI}M zq|#xpPHvdh;jg_v{sImLQ0iHBUNSU@44u!o-k_urO*xl8+^K_$C^nKpQq+O4<^VUT zX8F?2hRX%L6cu)U{(utb81+QB?w=YhvmAFqjZ!A_zs679%5@|N0(dzteqJg(D;+ik z%aAmm%~(RIva-Xf0qr&J?HP-JB|(sac^*ej&Sc@!u%Xw>75`?icrpCn^Gnm7UAH;^ zjO~Mgs-Oq>qYS8W0Y>(L!bJqCiLl?FpV_85(aM%%6w*nBe232awFkBPIgQh%@Vcu? zNN;_QjtAWZ0ZdjldTvSO(=MZ#Ut$LdZP_Y{k zBAMCFH#eLGIeSvrH?(;y(kr8tm=`L~sh-SRAc1w|aXRyrQ!X#x&Jhm`Xz|Dfs})=w zkSZ1bcFSZC9F*W44J#WyD8wEjGXRtb-njnKeF{$F#~zPnlRGLh*r;qsH2I`e5WS}o zS*d_^O0ir713&W%S@=q5dan}EA+*1~E*DcKF^jL~W>#d> zMnAoVw>fqeT3^Gud~ddKhZx>==42hNvOayv3kfNIfI;e(lvq8kUW;U#3KlUrRmqTgUn%oK!R8B#$ zh4ySCEP~e%PbWERFxW)S$y#NdZAghmS-yJZyqktCtbl%v_?R7NxfJe~{{w3DBUxIj zHGPJ9ijI#KvX%#tc zKaR+bI9xfZxHr zWGT+d%-ej-`YvW^s6%Q#+bSvas2a+328+^Rj-JmTGZ58W6;fm;~YwI zO##$_sOM_`_jQ$qSJFo3SwC`oT9~8v=vuKuO{jyP5!)_5FV5Z7fc;H`T{BOD#y#r~ z0CdkVt%Qm75cxLA4Q#ibp3B4kk=uE(c|q0s|HFpxVvF_ydME-&ByX5$<D0yEKZm1B|amXWYf2)pLAWpw}pjjnqRmmXe-2?@Vcu8t}^rgk=p_m3LNzeq+6KKuBiOVVfrFvYpW$0W|kjckW9 zSdI$euw4}PC3c*JWuNjT;1e(I#Hje z^Y9;FG{N(-o;@#X{c|4Sa~a#;WEOvsl!X05F)Gg9JM{Z+UXvHP+5atJvFzW37IYc^ zDKGsGUtKKxHzn!IlKw?p@(;}b z0UbuKpv**7{LbF1#r|?%LToG<35_=a#jtwZ^up#TBKrgH+^=Myc257pL+IqLE9Fd% zY7x}|+h&X&?y0c!PJW;rJ}WH$|*bDoPN z*u~$a5w}uE$Gin_pxP$?Fx6}yd;N2lA|)-&l%36RG)v}Tlj0kbt>-{V)+dLR3(@+J!}4yWZ-%KO_~ z^&K;boLnj`z!jK{ri=7eO?EcdI!^QFSgT_QBl6v*7NRLC>5=nhnf2kKt#Hcbm|G>b z@Q=+j`OGN?|1E=w#}*P{?+_UtyAIPChQ}MqI0)e@S;;Rt(Q7}VP?!bbP>Mer7JXV6 zd%rNM^rI={snoZx0O0iHj(8B|fCo2$7FEQ&RgI~7tZcKf_Z7YqmDPigN-sJ|G&!;+ ziRn)_TDx{sr268pig3XDMsL*C^bw}ZkC$xJR#zxj8*se}<*p zt0t*?Vsbw6N^cW!pqR|?1+SW8b+W1|#+6zXzf0uIbr*uNUTcoRI}6Us+Bo}x6FSV) z@#tOStFH6uCB58_K0X=HN=mCkwG}}c>TY0Gewy>w)Az8n-QUQQJLZw1zS$ruiT*h~ zkch#k5>Ny4?^uiBhKe-@#c|L$RMp_3jG68J>HjlM?tq+fG+{`rSv{A#^Bn5g42E)#`PMSEXG6tmZyPR1}u$HhK}?PT#s26A>~w3g+t-E z`Oy8&*;B8&Vcb3o3y+o3a6&8(dVc?&-F(N@D|=Y@%Y1TD6J`^;Ulrk4OP*or;lQt$ z^+v(@KpXZy4`M}ReYVD-s}0mc)v;Ykk?b%lCHe!H1YgNeI_%C<@ROSFsDJRh5mU)MnM=e z*57Qam~8Qp(nNX>4zE}-pfHo-ZHMej)`Osmh1*viu9G96@l@NEwqFGuxOZWnolp?W zN9LuAv_>AZ8<2@jr)h$w-3@E$&5y|I>DC!NP`*M6F$e-Ms6|xM1DmTqxJMmKUSA#x zqSk~%&}rMKj)Z;1WIGn!d|jN<$D0<{9Us1J*5-XdrO##Ax6C#>GP|L9@19aHt1+C~ zT>SQOciD!@rBq*_+)P>JjASD#*Oc1XWNlbdmAJdkOfka#!^{63->zFCzJL3Fc2uXi znvCNFi!aK$rDZ<2HPuKX?M?|bG|{ggnC=h2c;?WPiYbbBM{&+6t!H%~I^lHLsxzsH; z2Q7{C5LCgFTpcr~8xD8SJURt8S}b)ZQSY4I5G}688F4oq{?0xhyWpMFK{g`}%Gu&j zXja!tf5Ue}Ypxhc`~KGP+M#5TS}t+Oh z&la2a-L+qW;T9d;V#kq7!7ZLlZcM$PmUj7Y@2Lwv#b@TFW9k!Wm{K+G!K)Sn8j{#M zz9TKBrn-|$Rj+owN91mELup2B?q;jsKte&h(WH5$%VVeqkNlb{W?(gSp<~8?W_p8W z2G*Q)%U5CotrH%*MdOmLrioI55?^sIPp0E)7V%$273>=C*Ys4y#+e%U3Exkj3e*hZ zcJG~wMbq)0 z6(dP1MwFd()U=0n@HVcaPh>x|rB>vGo4~|7NPWaTtNOiG_zH%e>;|!PWlWA{z{6ll zU}?J$i|ZQwRJY~lpz7+}cFabZl>7ELmeHpuBYizO&Caxx|QKUuA{7<#4_8h>mI>>n(kj>kr||@xrj_(QQGA@BPje zt0||o)iXX)_A3s4T-3fnbX03;2_ju$U?!+1+ z7=Td>l4O2(7Z0G+hw&{5FY9b}x)RG{k0QLR$-kf;aCslh`mvF%uztL5mcXN zd5C3jM=^UF!cFMa)P3g78(rG(iPw|D&exfwc;;oJIeGOxvy_V1Q}qMpN$Q5{EFErL zmJ%Ij9nGMtE+_LCK_29tDnG*29Ne6&vqHFrlZai7_a!8 z3Z^jPdGX^U?lJo)1^eB4!G9j-T>i|zxxmuLL6jIL0S+NeutQwFK;*5?LI@vfX*5q) z#}vrBq#8N_uq}0qO}V9F1gX{*0@8Dx#NuDB(Y5 z4n+ET>&CJ{sgbR!8*tI;wu*Fm$09OyLBbwnZSyTKXFkE{kxz2(+Tzn0XY~Ps6BGE# zZfc2BQ};AX^D)nkJb}?7hvpnwR2G9asHDYy|KJv5H8XSJNHb`7_zgN007M0TQuZpP z4o2azryVY~FbeYQN}27^`Pv^7Ht@4bRQ|2T4x%S3We-!edvu94&Y^}US#{;cw(4P# z0cSq%Zd-p4B6GZ)Pc7a+U-ef5aZ+R2Z0XSOE>3J|9UNsorNnZ7M4lnlNtZUiXRlsH zv<810Y=H2POkWw(X23)-V{fS^mVY+*|EuXhThNSsIyC=wSH+MeHr5~n0xaL|r(bS? z!p(=;AGDVb?x>2rK`uQ#r`dW9;(R$IxVuK8Aek&*?qB9^2`qLnilVMz0^xz42XC{q z`^Kn8Ar*1xByz1lj=8R%-EmXs7HP^O|2J>X>0hBV+^sdEseiR2N@i&D-V4fKe;${a z)k^=EHC!dh^fgU9SMrZjyFUpkzoHZE9sW+sUdbJgXSUULy^1s=f|$R)0l`Ux#V14i zy4XWtfNnJ9pP8dhk4_jW#qig&+Zm9ixN5azvlbsJ{GtA zH2gKFr4Z$N6(|-<%T73~)Ib<&vR_t93c?x$w|3F3=Tm1fQ*>H+Hdkvkb9|{qy0FZ2 zybgyF?5;TOSstPpn?cM)9JbZh&lnd;(k-o>WmFptO<*5ri}FcF-3}VAmeTDb&C()fQZLCLYE^2 zoalQGI8J8rfvNk8k$W$HJV{-hhU-T|qjejelJX|P*2BV&5W^O(3$pMVMOfD4^5qD| z0dfd`xHz7U=y^P&A&S9>9=%>)qDjXYvSPMdlilKloGReatxF&9{zp`B%{JK5u(}}V z(>P`YWqyZjSotU!v;tT?BH*rE$Xk@pN3Jxaj1YB7Vvu6mtr^1$R<8-=d`AWnHLJ|* z(Mz(tn5eBa{WSA`7$q#p>$g0?f+>!+s99@rkE3beR_lBB3TyKt?xy!(6R-tsTr)+6 zP6%~l;HMfYC#$juV6n0}Adont!zpY!S0{f0vjm!B#`OIwnkY`@tW@yc*-gx9=d(sB?&t~(G*)Av>wH5YX7F^9z7j(C9 zTbMyFAZKOf)fT`7llmF;8T_Ccl_bj-P7P&1@Nna@0#@c3mldEVYFG_$<8IA92iVvl z_bgIENC6?--70ya&g4uEM&~JjsRs?6+6oa{JaIG&eXVtRim9(JY3BgIj@rA)m;*16 zs^ppSjsoi#$2jzq1H<;THWdKK2tNCZmzmAMhw)$Lw8j6iRk#(nZ3`ADp?z1%=Z~Eh zmyK*ji%;#WPWx7``mI0$AckeTZ+~udOX?Y~y}ggGAB=z?DIvkbeCk%Aqy2Q*+KBzi z55PGq+bt0M8%mt%;eui( zcE>l3*Wj?Ma~q-8@yyfFMy{@ItZp@(<(bX;`={v3UFj$(I_Vw@sm3iuk;aDHW0{ec z$$$l~+C56#RzpIlqF$r+a&0-~rfFb&nOd$X8miW4pHENYL)=j#&q#!RR|p_X4Kj8N z^k#PY>CTBVa6_A-G$Z=`|8InQ_;`02V2XX|` zG`W(sED7tpZ$h@vfx{rfI6~U~PRWZ&H)sEpM%jty^h_*-**(>83?D)IPX{jfUOo~(Icb2Eu`ucZ`i)#*wlmD|R5hpk@R zD!k5U{&!cQRxA6u{Cwfw#n9TQi-(;@n+&8SsvF1RJjv06*o6_bF6H`xn1IN$>$G@I zLYiw>+vL_3gDhuQeMOM+G;eM_-oBF6a#|Y`#2rinAzYTI>yoKEoF`=tQFwhcoW-#f zpKBU2QG@y19B;_tq%N>T$U0}4BHDF4fX&x$PKFtK=rU?m_e?o(BskXrMWtvs2ttE-_p z+i-^pnaW$(KZaL0lh?2t%`O}RTffHp9vABjJZ?oIy$Q~M0eqBaNRG`Xv82Je=-Ax4 z9r&$KaifM^d(|l&q7ha{W$P|FA6Iwqft}pSIwS?XmTon-)AHAIJ~z3Q#5^C`bAHdW z=^UD^;;NI_vnlJd6?@9FL1pl>`Mc+AWy)tuvuC3e@#k{9PRrN-&>N5Bq*B!X$ASA_ zFxMmab@}v1t{w7(28r<>;E;mmIq7_LIXRpb5Q9l9c5&#)Bck?gy3enqK?K8=RN*)Y z!99@=fw3a7pEv8!gly5n??19g?w%drE%=_CT&9Pf_iFSXuYEDQ7`w?u6k}EToGNGjM6=mR&3DtUt1n} zbFNN0G$vPRY7xzHrbhL#kTU@-`iIN?xJrwS(i9T0gfmIntT_`nx+qY@arkn~MCDXI`(5fvU&$?wQ|iVP_;6FQM3mS+2q-(|*2TaEK5 zJMZeDFCy+E@9pOD2-a&}#`-e$7g7wmh5vNCUxLcg|L>^dU(v=FVI!l6g};KkFgosv zDNg?$EgSF+Shjz|UDCGO72F<^>ZbG=m$AeAIQRKO0X)VOj@x$SIojP zbEe(?4^Gh$pZ6d~80}d|8L#;?LxI$Q&vHQOF$HAtejyXQ-@6SUYmBrMb!+`JSiRa) zZJC(?HFkHUb}Dbo%IS4i_0_8|?`3QzcJ$hx^)YqgnUUNDSFQpPzNJA=}evzc+bU+FA3+DoEKj-FHQ}g z6G+dA+!r_P&u;XezhE=6qqBF-%dAp3&GSj85#%D|@(VTjBC^bP(DkyxB>HWKwC1oU zVyotLPOKW~B4~(}MG&@5UDx~Iju%-X5Z#hboLtd)>in)RvqeGPXDz>R9V>prms@lrfE_)ox$LGO>$SuKvN^Tz-0L z(zww=$a{X^VTAM!+$9VCG&PR*x|21#s_s#|iS(2;_g8%MLSCAhvey}$#>pIR$5H8A zEOTWrMM-modvoKt zlFp2pR)2S~&IfX*alUFGN_q-=Wo28fX)x&CZ#8@RiqHK4rKf=MaSe3>V*HvA>jfnC z3U=&R%~Bhf||&$S}FZXr=rjJIdtm zfb}4h_k}$_j9HlV{2nz2yCrnkc7K%ULY{bpK!Legwf#+t_3^CX0(vtM(i0h5UJ5n$orp@G3lEONAZQ?`^eqeBq{frjvDpyLAqPD$(+z|;H~rw&UZ+Nl zGbxdXZs%^mJ~~F}F+V}m>h;|i`T1Ch$u(k07u6zU8@XH}q^2zxGN={Dr<*N#E2@6k z`7{|*P=4RQQ4y;lN+%-{F3yZy&MAJHKlEp3{9OYnDfkB+1TqV`>9 zQO0Ly^9Co`Jma8IaInHyy&u()8O!?(ZO9XM#Fs64oeC zdF*ZAy5`9}QQRGKsovGtJe!==#~!^9F(Zc(j2Z}KqcOs3|f%e_pL;KVSmW>WFf;sk~$&dScmnjgv`0^T;ieZ!> zg)b;6s*U0^D{_k~-iM&U3#m27F-EH@s1J{_Gt5*)J15R!!R|b+6&HhbnR9$qQ}wOs4vCEAap>xF z$=zib4(n89IgdpY>-PiI?lE}{`_6}~4a2!_4U@Z39lMie!%FFpn z^=I7B2et0ppN~Sr=_hIEqMh7$iW%_+CZe}HCah=5ySsmaE%>ISO}i&oCGJMPW8+8u z#;L5cQwvwzS+!Z8VEAQZacU~QSnT*PhOl%ny+0o7V0+x^9vUQgY0ge1=?TAdF|%*= zBc5a3b&9f7d*I1xc5wNsd=)LY+=J+=OhcTNHhwlM*f4jqr4clclJqEID%3r+qU$#K zm2l9@i=*txtB)fQ#EJ}e;5wOxw6PGh9&$Pe@JYOWFm91tZsfSE+-z0K6qWd;S>%?z zbi?e*8EBcb;aPDoa__8r+YkkbDwHeK)Y6);d2Fs&hSM&nrL6v?XahEbo(fmz!tezJ z0rr}aPYW!x0K1btv5smy>igRsh+zPRld~6KD9rP7sp09rr}>a@r z{8LyPAC|aWi?W5BkOAs=Rx?t0Cydtu^Tihzfcjlg26S!?yPD*F*fqs1#p3819JV6ax1`je+TAs7a zv307u3}1h@-m#P_nz?hC15#nM55k_XU4V{Qt2Zr=sgaeB0V7> zM$_|32J|uV4B)P*(ID9*)_f9MUX{uOzK11ChV@)KvGDb|(8>9aVeAsK+$PS*0z}8F z=0xa&_p~#Gs;h?HhGjs%GcfjmZ-$t7bet(?&@MQE3tWlClAEXy|GJPpneImp(rTF6 zu&Snk1N3;@d@lIhs?Q6dAe@}_@(Ub|HI3_rLGxZ*n2iQWF3N9Xyn#1vTqVYIR7xqL zcbsDvf}dwUNrsahGJWVbK$}G~WxvV*(g!mbgUS=h*k5~FTM{IV*Y~PQoftiL#RvyT zLO_PgoS)M(Ha>GXpHLHn6=f8~i=8WhO&m5rj8yq<+Mpb3V$vYVgl@mQ>T23Ruh4L% z+z>B}s)e?wskp31pXRwT`Z#;hZF+RQik8}ms``HUS3t$FYQyuV`A=SKjqjGc@vf8Y z#FC9K(dNKxbi|7)MDf9d6?$Lj|nYpk$;VGF!xGvc`L?bj-#AC~@L%=i(f{6ym* z^Y(umEhklHd(OJMcO#~4GY!zlI(%#Rm(ErWT_yR>z6^g$K)bhUB^nH>WvRr8Z5Led zqKH|DyG68aFy}i9k{3BG;V4k3fKv0%;VSY)84`nrDRep(+X0bu{9mqoG8|Y)yz0rF zL=i+I;p=yVzJ`2CUdDW*StYW-r&2!Oza+H;p(l-IGrG>jqHC@hQ3gfZDXa%K?(sPJ zRk33xVd`1xelM;#x4A3+UUYg*Ek948+ebZ@xfaS7XZfF*8v_Ydoj8tu@#e?0(`s~h?mgq$F zEnIIZ>We|uNLQ+u!;r<8tLW4){Xyeb(13NsQ^ct*TaJc<+D)DQo}M5Nww^aSJ|o6K zd8fs`p4g_KFcS&&u~hkICCWP`Dp4hxphW#|Ta2LXS+WPX)N*Gk%%hj!&Uw&T1cjZXYd&oqhW0 zH_JEAix@h*kXI77$Ane>(~A3|pDBE=b>j^8U3uE5x_&{uBLBkdToRnZVFrcUe* zq~EDJF(S+?k~9T!q@*+-(3AmEwk*;#aOr56Oyv>F06ev!u~0pf+37oh%EB$Zv}*Oi z0}9O06P(tp)g*9#)3Cfraa}@GF&|51FJ6W|u|k!sPz%2hIO_3D)!DX2Yv9m0wFZ*3 z3s(sT%?+}jx#Gd>Z}=#D@>OQaVs}}Z(24#_)mm-GNr{D0bur}zu2Ns7=XXd}D)bU;9}nHE zbmk0Ivt*JijILN!b&}lp>;ZF z7Btrb%(o=OW29s1fLGH!3DcamSf;elXDnUlb8f2k^H3yvuXDqmgQE}qW6z_rBqd~d zS{AtdMTw!^;-an7ZAwFxGN)(b&ghXl6Qk;a>8iJs*^BeKIsUk2n+d>(z_xu+iib{BGquy9Of2G62`$` z)P$+?@r2TGusPR*7*T?&QzwscR|$Xi_*J^?{f$RJ&p}cgRrs9k|PqgZKBOdeEh0X?PqbPFSC=G1keTmy7iTAycPLk z;n)Gg%Z5K)Kr5B?e?n7E_;3Fgni7}7pTiA+f!!@sr~*W*Z+BUVHUEQC!^oe^UD&oR zPIxql{gtFgq1VFs>B~jLCsK{VRbjnpnTp5UQ(-oVLZ}#i(9M}w)|}O_b#h=X>%+(1 zOY!8~tXvY2|A(!w4r^oE-fl~Q7AO>o6mN?bE$*RMaVNpu-QC&(#ogUCL4rFi5ZocS zySwWL=bU@)eSXjP$C}Ar+h($oN#>n*zpIe{^!6(U?u1O+4lK84`E((OqV{uranAhm zH-D=DML@d0uT6K_9Fo8^tB#BC760V=bu~5Iim5Tj&hgnsFg)cG9>NSm`AzfR8Matx z&0X1pn{zj&3hvK&UA^-;;w!@8Z&*E1^gRku`PR@xmZ*!{Z(Cnn!nssPMlT#FU(Q> z71q@6AHp&A$teR4dBIn1ctA5M3E{Aq{hH<4M1vI}oFF2Tq9uxXVDtP1cmL{!92PMm4`V7L=_0hlcf~^l*(sQuc^GvyO zsBe)*AMM;+S}JguRY$`0KvJWQA!-2DBCAMPyKNA}^B@J_obR6EmkQ^lg-x=bRQ5Ea zmBboXaVpz>Xrr-;^>ExXBJ4}rbAcP}xa~a*Sqw_#Mrr2`M!v+7pewe(?UB2sBV&SL zA!=$K<w&rQEO^p#wl(Ms(8)xiIT};LO6)*08g76>F+t{Z}=p%3J+%pMR&!4iO zM_T=z1^o%^B=~P|izWUEaOU3urXBrnkiY%IWPI~vkK_GE_Lbt%U;k*_PxX)Gsz-m- zQ;N2c|7N&mGa6`J4~GlEyGZK28lVXK!IqP+A< z7%uUY&x`20#U(_nXcWF;qaX*}@_rBhoqhEl@Lk!f;xlV^o~4>(1vHUs%77!ed&1ht z*bbMKUSCjnuu7z@1Wx0q!9PluRp)A{Sh{1_yf8E;!FN5Bjg68AEMDd^V^1b*$OBd+ zkB8|3gK3XfMUNbez2r#-Vx%H!&QfZiE){n39n1ZFu7trHWE+-r^F3VF`bT*ijiK$y z<7;~`$jPs9;hB*TX|o6sQj<^=!Qe_kwGhCpCTvMhhPc?LE$_`V#XEMhTC3$oA*5-V z_1MFpI_;!153kwePQ?djzs_-(I&F?*g)CA(NDBi0UtlQQ2q&S06v;lLHR}iJW z&;n0wVXYfZnikbTQ@YFU^yot#-n115ri$7`~c6nx}7<6-l@dP*9rrETRU-Z{TQ7pKyB#t&ptya!* zD4t5II%`OBX!b(+@YR%25NC~3SS8(K=ybLQ>pO_fXHFQ-@xwHbl1X><0goASZY`EMYY;F9FZ626Y|ct6{QjBM9;QpR!O+R)=kCnHPJFgBB1D- zDFd57xnCTy-h1Jc3Mg$CT$3n?+G9|{kulIk`8Chv>r_tAnZF0qz_Ojk1mieG;!Ku3 zgl6Mu?>i%~xXkcrL?svrojBrTHUwGG}u(5UEVzeX;jR)3EO9NgBKkIJae z(C2O~4c?%oSDGa`Khsq!2=hgr@^&W|^;Ror*2zKO6GDon&+*&FwuS$+ldX=xr7_y# zJvSY%l=IA{9p?Ymw;+K#a=Q4YL=B2NA_|*IR9<$~@p4m*nOG!o)Vq>E#ZjgoIIvXu zG9{>1@E*h4+Lk_sUJ4Z+{;EjFab3!r;&`I%mZYfR?TZIql(;lX0XTSoIqy`?)_oFL z(XF5r&J{#Yuk>ddBBOx_uHY`X-6kRhZe^k<8v~bVRFL7_Xtr>!0PEx0sEj8c?|aC= zHsp_v<2{Fx_=Svt5)JjL^Xxuy=Lp*X{h=L=OMN>We?T5J+oQYd1`Wd+rDdb=JUiy> z58p$6u(bN>YkrH&GhdFd-^8LbB%cyi&fo4{V$OEFXTd#vCYswa9yVnDTOqa@mWl`+ zoM`WQeN+Q#=ygKYSkT$U+7k?LCIup@py|SPOZ;p3+9|J<%N!ZhN~}`%30B@G^nO3-6#BB*0bDR#gZ@C-6e@sq4SizX4J*ges}rI{1Ep+t#j~o$PyaT7hlQA z&IzX3i|UCm7zsG}vcWGhVflun!vKY>_V?iH9Gj4X>twIKtdXWu1Z^st_mXh(vGmcfhb`!sC zNAoKZDNML5TofVqL-0s`2_NTILY?l9=ls^0&1oS^gDo@#l@CnY+pkJf2bwd%of3g$ zwXM$e-*Q>~X)Sbj%WP&Ct1pOVW;(5VrX7y@^0nuY@m|b4&*Bz+K>qD66cmbom8X?T zvg9@=kID7x{y24zyh-ML4**WH1J4Q)D8}u-tpkmKE%_lJ4rb{}iH@`SP)p+0<;Qx* zl+0b_;&QDwMeoPV%2?I$#N60OTFusMO^blcB@^^GZ+fP=*eQ8cX%zsniATL?CHiYN zmNyw%>=<>c*7Zlnug_A8JTn^qZZ1n41Ko_xR?E>!KBx#0cU!Y)bL;QSqi@>J%0JNC zYL*(=arjk!00%>qL(L*3;IEQQW0G@}_h=zXgt6@7B?cO$*3e=l*y3BhUuI6GkMpm~ zbwIrw<>?h_7^1#qkAjsaL{(~Fo2=R`9R?oQp6z!p_b8kH1ghk_M}L#w&e(O0Rd^li zjdr9EgNgAYP0R$>z4m%mvCbjLZ~zLLb8RSa+Gm8E@%lS~-Z9}T-w>|4e%VQuYqF9a zfp-bu2Tya+v`hz2DifAUkXPAz>sD=WX;@b^@C+eGa1K86r;%|uW06wAjZ(MLiz+eU zw=WzTs?hMs!GH_tASa2gDSKXd0?Lhca@o`Gt2(P|X;^Uw?;A>%Z!M$)3-#JJLa$jk zMS)IuAHs{K=e{#DI5H=T;6$q`^~QH!r&i$jutY( z<{c>6Ux72NpNv}gLVhP*dq2Co^ILX9Uzci^==QS5JH0hApK@&vsV|}ehxW`EG$d&j z4?0m11~SN60;gokK|QtAz31XiRe%}GFUESo8sG|Ip(7=#K`qO2&%fHDiuvSx;rSNacJ zB{b^uJC0M=Y5Yvpk>NhF5eskzy)>#|b`W3az#I8ebDhCL_QcqhGAD@>C)sR8qn-Jq z^mKZD`YC#KSHw>hY{rbeANVL`!A zb&l8ypWvKtCrnwabibgqgG3i@{a7Ovf>(aA_U>(hTbE{E?0>&y?egE&!cbiZ?aJt{ zZUbWhWY?U*?xi0+Dh-vf>&$FU5f|hiEYdp2qW)BVnQf-jJn+M9vy8sQ2>T^yEz0@& zM#GTy@|;UyV@-7{9t>%RyVwPgqNvc zuj3rqbQl+Kd4uZ)%Df96_Dp7t`o2~)-4h=KyZe6E+k?z*RUoRhxF%MNLgRNQk`V&ETnbAn76VJ>~mUv7afr=dSp=5hd2u)bG_m9Hxy7`V4U;vLTak`BMvCGiISyN zxgYsBwcWO9<2TQ2V4&Kn7`Q!xVv(|vB9An=FnNpeY3ua~mHrpKZZ%^@!U1 zzW9hR6~Uc%-HYVupmqvvoZ{Zz2Ql;=RETQ(F>%w1%@~$oxa-(P`KfhpOE&jAeQkTk z=ehQD63m|_I2eV<`E>6MPCwz^^f5knw$fxxkTS-GPOek=MSG}0gQED$25ia@%oFvy z#VhA}CG#@;in#GLI8}N z|8vUfC`!D(IBi)RR~(J3%3XTIU7;iFYuMUft4Cpp8^-ki(pS@_R$0*yncuX{VNg(~CtFf8Lv~RXjqyngk8MfRo+(P!KeFb1jab(lGQ5%$ z4qlQ}C04GDy-{SeA zk5x{)6n}eyU)SPqTx&t43RJ`pD;ZD5Xgi<(_#D@$Hr(lp`YRm-U7XdKX!zdmuoUoV z{Fqb--uB>0tAH(J%7OD{q&JBIUA8vH0yuC$N0aU_nG%*({ z*QY9C@TV!}^%F<_bEp}e%kUrojgl81u4w~+4_ATB6}HS5XG+K$_rxAY@OnPhWAa}b z2pgAKo7|;zE~t1+Bz%!!Q;)ppi#MQf%+Hf4uyJrwIa$x*aD+w@!3;6dxI5cBCOV^+Gat7JX7-V0 zPV!NnjJq6P5{-ZBk0SaaEd}E0ihI0K0jeol!k|4-#-CD-oa!#0&W&2P*Akd9sOBRkflj8mI7t)z!J2B~Ap)c`5o}<0B6d}<^uoSi=F5e#APLtJ?z?)y z=qiQWM$5CzL{VpQ7b29gg^HGg63{t=`ocY%MLK9oWi!iQPXan}@g;`+Y~W2$gjwu7 z80+wr=V@{{;0`4(%jpT{XPP7jFyYbcRCZSC?9qujDbFGiPs?Lq^T8Q#r~cFgX$kfhMqU<)cTKG?jBXug)|W+u+gQ{sHedlZ}{qTk!l8E_ZBXX5k(@y0VuN$u{zB0ZN= zdNPe4_(AhF{o1 zvg>whyIk|t@I*VVu{x^=Mw?qU%_y%Eb5!?DRrfBcJ$rD4Kl+sOId+koq?z*vPh}*V zSJH&ZNH=NzD2c<(UzwuR&wrr)yLO|(vtde_ z@YV7&K-1}%ze*t%N`cwlWXG?xkfwsT-M3c=)Of*iMR{fte#cI(b<>hT??!11u>4*; zKv|DF!*sk!O6xwfYawAaVbWW_6%kO|ZNZJ&1PXcBDb^@!#V0O+CzLWxo6*{`!Wu1> zdrcyGp;SV1vqbe_aYNile9W>QV+vU~BMF*s&U2bCA~uA^ynB(-9pTN?g2! z;GO=P)THw{`IdXzov-=#JFiLWZRJV}v+V3yEhlGi2YaJB(h&CB>1_uw=IGf+I2n)b zuW3qVk9qmCtlV)qp4Z@Q)gZV?IFDG1E`g%1&axbJJl%iJ=-<4tQd!U{UqGMe$0}a) zxL(;fHJgWX$AQ}CEVk?Q%~S1^&3S0R2s5BM#ZZk@XOR9b57~?%JG|LZ&1j`%5PWb@ z;L7!jyL8gfmHd_~R{g|C5Fj38B1a@n5Uso#;lM0j z#vaZrQ6NAssA!!$JSH2K%6_)8KbWqK6iU{>Ke%>|X+>AVFsouky4Ydoj=>Q(!&3{L zO|sFiOZ^?X=Jfi}f%oVzdUR+$I@tXPdy5e`;*y{24M&_hp%onm>Z84TG=#^Y6dxNq zJR0kxQ9gF^{6*MniS{_ktH;WZkMpQMBx74$%ql$AV?CN)?OgpG($lZ=0BbnE&i`Wb zZ(jTtoA1EN9uoXfpY^>OMS=bfN~qwCB|YX>y3zZ(a+oqy+?`c^#-56+?@L8uc*EDv zY=h1W$6e6O;_j(f^??TCDBqx{JDL(uGx4n?o-v_#ZB?n-G|j>AT7$-{U|0Slna zE|5r7)0jEV4Q=gH60#>mnqd>E4)(bJ^gk%L<3H&16B7QkU>|qnzcLGIe@QJAujUz9 zxf323ecn6sIzDA~ZMNPn$=zT}&(r0s-p5sJT8dF+uxOCFI9WYyV&T&tOtru^jk5=X z4DJT=6&cIr=fRB;T8yMd&<4B5JKO&128)Wb#(i$q86Sm2?CfjyxUYhN6y3_1A?<@K zSVB^NWrEWz44|~wHjI|O+q;H8WrCw2JoohKc~WQii;#@@KgtYGPg>3&Pl0dbpQkjE z99?_A{+517etg~k1l&IX?L%+uDjrWQ@v;5(qnSM#+T$49|6u-4gs30VW-!u4x;+3{re_?a^8(%${R&e6|8U`9+@mphth~lPm72qtasu z|EXivV@Xoht0H)Lh!g0BqMta3cm?6F(E zQhoBB(C`I)X1R$WXF^HHo$mGNU1u>}{+(xNb!>YPa74dJb_gVFTh^dIxttkxo(P%m zQgv8cGZ%0%N6mfaiO1vZ@ymd?=>Xyrq&XY>a?Zy@ZI0db3CSlrc$hgFc!<^MEyYh> zCrM11;C%)e-?ekNZw_d5Vx?VxY_Kv+9_O200!Ri|So3c`eJ(r<-XOrNc!7TnD=3LG z4&XmX{IQXKEIm!G*vzFNy+A~>kR!vqmb`9uomc1)&D|YkP2`N@xk7j79(WuIG3e%) zmsn?Ie8(kyWfa)_c{|K}E6<#(8jpkit#q5C6;<&FhXg~$X-zw4TaNYomG8MN!QDX0 zX+PhztozWCS!f0fD^5go)ij>nw%L!{%TiP$og&TXZaLl4?{@k5VI#^_D3R#SDJ5GH zswyl3I_)5&S)ZF$=7R6tLQtv;9?9Oi(BbDdF*%q>F5no_`XxK#@X@1p^HqzogUkWd z?pYy0wM0IP38CM|^5(?=-7}u;q0a-1y3+n?Wt&*W{37WL+YD~A8K;8TmkerucSQN`i9zUsRCwAA=?!_s31i70~8R+xLM|GYuZ5974djO=MkHPaoB0vK#=;S^l1|= z=s1nzIdOCFb5Sdf^g7xBFZwi_?$vh5>kjX3lyzQ9#`(*+v5t6_m^ha=&Q;)~Yk ziHyCK3uN9&B;z#x1(_5}tt2DRo9kB~T#uf>sbz1>OJdl;Htr{TF5h2Ch@g2vmh)3? z1E4R^ujul^v_41*EY6kO69 z(=exZgTIkb!p}a&ACdh^TdS)fSF>17yuj9P)mUpHHg?20N|ap?Q99yyd+!x%0jEf- z>LxRWGFibF=L)QaG>oA%yc2Z8@1fgIf4`9~7ifed{$1+ST*XjjE3|Y%op%32W`&h} zi*;0-W#t+Az6~m6?iOh{6OxnJ7yaaCt`WR)X^;i3<8LDp;JK;^Bi%)`=3R+t*^Lsi zL^CDC)`c21OCJJ_C{iLCQPxb9*8w0O`Ki~mzx?&fFZMq>?j{j9IUQf#=CyNl&6Oh_ zB~BaiUq{;_kWF-PXE9ZhHzimXVqCocy`X2F3-@HP!!V6g?$P z)!8S@k6!@vp1fr!RSBnbpeW5FFZ~exI#n`xEqj^DmuU`}W`@P#aJE^8;B`r6mtyud zeS0YY+cNyj1I_hJpgJE#r1J+3aTRPc^0;Sm4bElYOt}&wQscJlSAt2(*e!ep7tEMP z4m__gQ)4f}OtU*#DcS0tT4~Yx+Oa5PctR--a{*?zWa7=7in~GjKMJs!8JnGSpTp!F zb!re)4!P!o5646dCF#UVUXH5K&;%=M8+c8u4(gS==H3kMcWWpCKlt^WDg!^nD?53y z$y82Yt*SQq4;*gr9p%p+y!2$qNX+Bc%w9l|P|P$_K+U!uMS>TGZtO3*x?j%Y?l<|J zJJaVJbhRs!BqbCw|c!?a7pD2UmMk^GkjKhv*e+^YZE3fFobfND55wLwkLPe(^7pEz3$mc=i73C65B&Dn2{QJ zNf|amKm?J{ zat^5YunvD+PO!GoJ5tu!23E#GCbV-5aEep{gas(eY$Pc9GRgQwdv-G=k7`u#Stj<& zhZafX$Q?~Ld<1vYD{Z;VrD^msQY|Pd8EPHn$0;%I@zx=xQLuUA^H#V5V`nw96#zfD zs-@l>zl$w*3TXCoYh=FhvpPsz~Y&Tnbm?G&X|MJ(mU>uLC@+y zmN9-*eJ`bR*YM>6r3VjQFr?c1BAff?pjlw>#ACJBI!KdEF=Y&x>jyJNI>B(W5V( zFCD#cO=nmx9Sesu%SU9^;J7ZiGHLCgBM@Cy0dJ6Ef-)uZOz`DVqUE|kq7^<9#b6l| zf%e$C6P}&Xx&r7M-&H$_%jyR&@oT!7?Qr9E7KZAY*kT`D>-+Zf0_?_c!Aw1DCy-XvE}mg#x2u%7D`UL zbSp1S*$uNLD(WwL7~82VdtvXt8=+MPd7)$n@#SpM<7JA9 zONcsZbHi3e9T$M6{6%s=KXbh9h4e$~V9J>M0ljMJ(uzxY3UB9vZTLsl6#K0Mrz#j^ zcr_SX*RqB2IQu$KCCG@q&$!Rug^#j?#g_P-VK`q(Vw841bUAgB(ld&{t`Xd6t^~+# z@R>ko9;+TB20D#?EV*{d@S`tex978?V6p>9#4nat=tZ}>Iij_Y99&Tz)bX%4V;W^U zDD@8TOQW3hluWYlUpjoV!(e`}_B~PHrnzf~uHM*xvGuh4=w-J`3h%#q@RjCl4VHug zE~}M%YjPQ1BNfZ2M{?LQKz4c@uOnWR3&UT~Nyfe(>-H<7=V1FF`U_TMCc7_rIxCc( zv-xq;{`9k(cuOLMh zhJ*|QRdC}Z(}7AEc^1y{J0_l?^$4b<@>WBNL~{2;aWrnHYAjS4T%6oL9MG%j1TZw> z7u|lP-DEUy>fJR*ne$9KK`nj8^9KV&#}O=J6eCNo=H(WG04;Ijoo7V{c4$p?wWyL; zWNx0dYZm(9eL56=TL#&x}Y{p_@fcp!*E1%7N6b{pb7j zpgFZ=R&F`D&zBKd>I2Mn(Ljb-)HjQyi82quLk<&e2@Qj-v<*2 zM4rDjpYrx#Gz(-8H}PN#RF}spm$0TE(PX`3gxn@B92pyN0v_;N}#hnHyE5qr3vyK~MZR^NKDxdN+D2F9q7 zS&NlvRB`N!Ne_1p@WnA{&&ub#j`HBzAQO6@t)N;a^Lm7J6V^%|Aow9R&V-ai(PuCI zbF`SFx+ShT+zj^Z2Eh>1a39?CQ*+Xer=7bif+T~pA?q1y>2+s&$?n3|*W_1Oi0J#>f0|!emm3tnE}5v4z_;T= z+@lTenItfyT7mjoa!qGaVKOt~@uu5Jt88>n50*9j^|GSlDNY!1DczdPUopou z#zV=q?ccrc&By6DHbpE}?O684K`D=O@WLawqNzM03Cz{MT+y9}zL)Y@1k0uMDSz~t z(#N5KV96nGFHC?)N&`^>go%F%MDzhHNL$OAyZCsiUD4Qn2BmL}ItoK8NOSqcX4d9#X zNHe}v2ea|*Us?tGWurH{|HaRp8cf^dh@7qSGDRj*I@>g~^)=N~@;L~TP>UT$o(?2(Or3PFdzIemx7 zW9J)o?^sr=H3r)o2%=rg;`ZNY+<=|skS6)u{ZY|iyhA_7UYSwnd}y5%U?|tEChtP% zEO=9g9#d=6VMFqPl#9-@>ZowWZl1=r$so0+2$@$(N0*5mF=4Qw0K*@H3%P6RHB*vn zwTi9abH%te?6{b`0^?91vI54dEgQ5C@j2z?u%O@XS(hwWjKss+SS!?0XB~B0XwS=+*s83Cn^7AG@OFJ(fNaFsw?>KV=NZ5{NAJ zHp4)$+x|n_*5xL4v3{+GC*I2nSP_P=3mSo_IkcnNH8(N#Im+-~JsGpoqkGIMQ}JlSQjpc8MEMtpM%8dc+#_hef^BW2P>3yBDGiC>cm~YElTI# z5v&-=TXlTUUKO6zDBZX;SS=+5f8;2vF|;zuRa?Lg6|>sO=G4zn2VeMh)arJJ+6&QZ zY&+fvExXZ6!?m=+sG`BWgtu4MH!gNQousz;l60eFxJyO89ifMr`%cOSujyCEC28MtG^@RP`nEqGyykSF{r7g=Ds`6}O+@z@z)IulEe8|U$BxP& zdF9;VpVhdDhNBr#CRq#~eA)xmZ^_GlXa|gXTiLmF=3G3ftrq(S>=p*4x7$`EpE(1m z%M}&gl0j$VIdo4|Fm%0Eh9S*` zZT`&-Cw`(3KWQe&a&+y5{i8GRf4JfQ%L_OA|8T%|`bWM% z?{WXsPx5h(_gGGPG=e8U_X)^-oD21FkN8;jc&vAPG?KY-J4KcnAMXRBqMjXt+f!z* zv=oz)LPKc68%<}6{{DufHSD_glTMLy;i;pp#`T?AlcsA^)YnGzgH_wIgEB{HAluSq zLA7F+_gCA~F!ltTnfoHx_>r1-<|Ijs1cmil&0lnEads3#YOgr5VHh@IRhY|2RFsmh zNRye7yf;^KRRNUWXN3O-kZi{@S3bk@6wXU6YKyr4V&sfZ{Pp+WF`h7T3s$j^xM1pi z3H6Mj5eeE)$!;^3t$=W3IV?4SOZ|}ehm^jd0V(56QJy~uq}ZRzt!ZSie|Z&kx_7+$ zOq`UKI=!d*FiCP{dY@&e61Ri+LyJl^PE$scF@)KA*+t+C!s&t^NK6U}>TjWG9{QJM z{};Rd@tx~=w6rHodHC<>oen(`l} zcj(sNY;Vbbu=pqDc*+0Z@lWA@(xUzTIR2xlr$2sr{*PKme>UOj`s1g~{vXJG%3-Fv zzp;+^)|sPNvp79uG#cu{91*8-0+G<{L%y1K&%7g}FC2%)iPbaXC~v$v;~X6fEmN2KgL%%OGFujAc{WvrX0>yel{_W&P&urV=dYBl~aEvc7x0 zbv!v?)N3xC+ugpIxu{g#q+cjL@_eGXBi($@JM;bT-G^mwAfZ6z1%>R@D>wiG);Pkw ztlm*_0+&TJ<@|p8JKoVUR_}KQBs3GPnVd92wySgfbG|z{ITKdvHyu~YRKa+BQ%;AA zlr4M#QG+NEk)9Ds{P0$0-J2;D_TF5D%&?PmwBXHto)yWGv>Em?xWt-Arpi2w=@o9zAQ7aFBp=DiW7wWUC;0ZSsh^>{Tn zQTCcens#4n?=hN}UGEnunjx_DNHrhr!fuPyqg_)v&Qu)t|LHyL{{yyGsNthpP%2^^ z=Gcu_UdXX@muW6+5|ak=p-Q`-^}q0}NChhuYc!hyd)QKwDh!zmjMG?)mAzu#fUd1O zbqGmBCfNz)Nqzx)7VjNBKtH6XF&Xiw@$9vYULMSB4^&a~b)hHQ|W1j7JYv|ngBP^Q!*wZ#4YRZls)0yh*`L36$knZLnEu@=L=_HN84?g{HMnICOPL7-`z+K`(C_LmqanG29jiZ6Q^s- z+i@9X*5YoT;y6_Y04D|6|4D(ZaT6Snq!#IfUWL5?5igokCjG z-WU_Wiv03rha~(<3W%?Bg8j=-stJg*O~b&KH@LxNCZxZ|i7$r_QlDong$<-6x$X!h zSsH!EJ&ou69ujHB%6axrFH&npU3C` z8kpa!kp5o2SWa}G#jI@B13tr3RO^=HS(>(5xkg%;i}%Fn%yc=Ga8r-ck_IC$G;UOt z5sgv$TTK3xrAwhDJ%<6_T%!k9rcm7i%rnmg9SV@$3*C>i)VL;_sI#}Rj2s9L7b%VG zcn8&E@#iRe%1@t9%+&JlBy%y_F>lQLP7EB3GTBr2xc?q6LjkHC)XdBYPSDY0Z#Sk1 zld&0(vRk(gpdx79VT`$upN<~kot!eUB|Vwe->8ADgqlCSd4Wu=&d z;`FCKx%GYmotRt;1gH7Bf^@R@)3Z3K7y*&u~fE-?YY-;0B^Oc#r{kB zVe~W8zFhua6>erO5UK8}U{1xU1w0cFiLzPs)VB`!$AS4$PcKVMkiBv08?WfDwQRH8aQU#N-}FS>W-yi!r0Ihd_mxQsRK9sl z^DCAiak=qn+;l1!peyKP$3YkrQ>^4rrCV__M5S3){4@K{?yGX<%vW5{VMR5XK2V8M z1DVZOG($}B?aI|-mE8gv@Y|Ie{c*SJC+-p#z(TwjRHQ}KxI{=zN8M1U$M_F9h$h%t z`i~h~jtA~0q=a13TFik>|C-cCwHP*gBDV>dg~rl5{yKSnr40YYjHQuzDn(bIQf$6A zfRu`Jk*)5*ve8Pv6&THyrfMlX4nUVD;f-W#vJcEfuQMmq)d7jOT)5cQdCT% z#Pp#*&Qu3T71JgRilwwyq)B>R$xXX#0c+&EPL#ZCpoGz=I);az$3eosbvEk7Lh5%Q zE}mlj%1Et&qK|j;(j?em1GuJfu0{5|@L}YHzN^+Sj^tK-t_lTsUl+n%4zTETX&WX! zgZzBzEIJi5aXBg2VNe8oeq>CQ9$R^*om1Knb3;& z{(n!}Q{Iy?&n&{X=C4=9mS1Cw=-LVR9u8`Ef1?5pj9S=aIZvcgvDGHgJPDGLUcYa6 z5?+bLhgAjZCy()PJk;kX=QF4AO^fo(=pE?riMEroGjyo>t-RfxEd6s(8*59cQeG4b zF{RjnI$iLZEOD&E!h=tNoTnzT2)v+qvjy~Jy}=8kzzGerS_WNf9x&rA`!;RK_Az5O znQN!EeFD-M6&;L?HMjHF|GA{YQnv+%gdA7n!`rsn9&x}Lf;G&}Fg23N( zoK?#b@5j-LU%w34Rf&6B&6Ekld(JN7ef9bJrDsCH;BfwCsnIPuER@x@l9K@73`b~$7u zt}(3%Q%{wbjxB&(rZFOD^(nW zQ{We@nn=AouJXjR<(AiT;c)6OWgL<{(P9#CLoH3d(=pi-0Qpjn4SIW)6{gea3V*_$G&NN>mX@ zk4hzs5c-SWs6*sQH_-2v^vap2Er-}H*=^2Vl2v?OV^b#mspb-JLmFy`Hw?MF(%iYa z-A!{*@ftz-2G*nv1>2?*qi5yjXICiLnW5(6W_`iot6Z9sG1M|BEcs0fLF?h6K8W7? zu{TTG6@Orcw%?uYS1*=sjMuz_T?i;~#ob?gc;TuU*;CgyjHIHp=;O2`Nh%GbT&hLQ zJ`~FV=BIU)e|F=;b|pOACeFFWg0XHGbcNn zTMO~CT^9Z7J0gaDz^N-p!&?M`j98uhq07*VhG3jdO$x~OpajNXof>+~Z_K=+HBNjz zuIM@@?#iA}QOLgL*l63^i4tsZvly`ScJvf0pqU44R2NoZgj#+l<`e_{#%N-fjuQ`L z9)h@Z6t+>;kC>-%GDk};F3V`fJMx@XX4a z(@W}{&?LhLc{-y|ae7+LAXgl7;!Mo&SpJ};O&Sqf<2IMc{kV(AR- zX{~*k)SC=*@G1wF>40`El`M+PrXUXYmSqaew(cFMvQ|-zth8sp1npN+P>$vSE#ge% z&Aq)1`Do+diYOd?Ej@(`sRR$HBocyHTsb?M3Ei7a|6}hE1ur3Iam%BHgPhp?4+G5P z^=p9lpQMF)#=J;3D#o0|_YT&EKDAgM1bFT)*P~b+Z1Rye9ZWep?$~JQjhKLJ^+ry8 zhGu}E7TgdLR){rHxrCO;eonxaVgfX2iM%W&w!c^lB2$Hz?o@c8@r{uXB$=L z2;6RB%T0`7$Q>&dP`NJU$ouIpn6K|m8oQNPl6B0Ldh0yu%zTLom8R&#$!@qR@cA`Df z6all7t5|ZHi`K!v8W%6K8k+bywqFXpo)IM7Vll?lY$}7L zVt%0xIll~^k-m03j8z*L-BtvH-kjI?;8=)^S1(m5nQyDt9;#7P<}{0<7U38Y)?rvn z;8uWnF?9&E&%E;21@(X3U43{-P81Go2SO}2hny)}G0BH61QY2qe! zw`B8;4jfr!9O`$G#1Yf3HYO237N@pK9Ig8_M9Vs@o?~P1Tc^PnWGjCqJdN|eu&4OX zZ`w#2elaDQknUwEh&21uC?28V>V+C{>u(&K_0-aljTy2%v;5Z-(NL0CEa2_~QS*p* zjCNU9cfx_tPvPO^V>=xf5uVL47`2Pvt7bV|+IY^Hx3$zWG3$@WWG0vCobUJ!@M89I zVmBm8^qBp(PQTuLVRI_~iCnesU6wkrBStN=ep2<8W{O8{$5VGhagBt>8$=s`{z;OK zy%@6QQG8T15Qt|$ucnIF#hJYRC6%OrG*6Z;Hbp?z%+bWfDm1iXH_mU0UQ@5GfaO-_ zaRB3uaH9$MvH58Y7dg_~V*M>eRANb{T>Xz9ZNp%cxW)5$P5|JhiUOiMcU*Q#*_^lF zHAJP(j*g2M^>v^<-Jk>AD$)=%2PMmq&eJSY|Fa!8E*92?iiO_r_R|6Sg;4+sV|NroS;Hr zU%bj=A8(=+38!wRh`Z9}!fhIf{!8?sh^$ab>R+rZZ0fJfmzQE8zJMQKBiwrONI!B0 z=(6?~_TN7>jhL z?4OwIs>Lda6!T8nuKzvY-*e>XrLQUA<--ezDKFjOU$f>E0qv!RkE5jjx%7sLTNEmpUD)awMM%TCeq;~)+wk_k*pG;pEv@2i~QF_+bUYN!N%hB z&KdfFq6iL>bPjYmZ#tl}LyrxH{#GQXES>~=AOJ}~w!hMdmV{qV6@c}1^*&mD3CoqD zb5bAalRan~@JHbxr8yjflB;x;)M0I^EC+=7?M6>Sr3{9k5fA?VdlUg7`hlOgam!`R zIu)qm*ynTJJa@c*%2E2_x|>}r=)cb}{z+mfT%`0_(_sq88aqvaX@TWv`rFFnmC7yk zR*>@2^ZNbz!BNreUuo|7#c$qYi0It1co6WS;ceLM_oW`S|Nb5QtkO%Q!*ZjL(Bqc1 z!&2GHg7iLsLQiU_4X^Jg_AG*agrJPXys6(=u<>xpbG+zhG8`V%$hQm6-b$)ev z^z|-JrlEJSLU}4-XLGyk!g0!Zv63H`^eRuGsjG#Pp4b0-Qn5<4GVT5#{9PqTrTZvV zVCNcvb)+u6tF2Up_dy8KM4<|$OHJoQf9$kOwxA@}#uvx1&qT?x-WRss&qMEg*`7UT z+fB3IB2T>A_W#Iw>$s@8_Ip@GP(eUiTBKtLDd`3QX&Ab@yHk-asiC{up&RM$X6Wwj zd>Q4w@8|t}|Jc{roWt33&bdAld+l|tWn|oNIIc=C797`<_Oux9pf@zkp7*IVZhy3o&34yIta7Xd>eCXQx5+i6s>H4yx;M<87 z@j)e|ea}(hr|G8{iMvBxs6{0;W<85R!}?Jj1H;DTn=<{^%B}BDm4c=|jX$7ERQtve zPi#PD%aY-Dq9Mgfg^E&Ry1W44{E%H1LAH z@$$e+&J6zNz27T7y8bb#gnPv)DgQ@uykcfx?>R;U2ijVo*eAtsXLX7)pe$rhmCIzJ zlQ=k3Aj8pKtkLqJt`xcaB1xll+c-KI0cOIj3AJRGz}HA_cSega0NAY&tu4ICU;)!{ z8kZd3;@*Ekh3&0>Y|>F3sG@(;GvFI@DmK-RBqwam>$#@E6lcF)7&3jYypiiO&qlY9 zR=06WTiR4|)?*@@9A2HLp!`cC>t@U~M6A$u0j4y)_UfL^t_TE7D}L>32FU@=ERVTF zD^pjggOy5dcimn)Yg|n`N4k~J@^IuduzQ{l7&a+x^hMC3mi#C*Z3)*<;Njnw-O2o% zlQTix6v6g#XMBIx%<~n)7-)Bz&3rg>+F7xHTNBpvJfyTjOqEHwU{7;0SEcEXEq(gi znheVS{9(*MqrTrhH`ds>Yzi1KuhU`7P^`+G>hgU*fp9(#1G(|;I5y@^^p^0~&ZP~|;FE8fF}((7|7SkZGw zGT)jz^F9D+#Z_JU8)pnaCLCvi3@xJ|)LKIxvpAJA(k)TDUCqO&EN*Lgf<5Bw1JC1s-ne=t zc>+**G_Nab`rLr{MVIB{xO<4*rocLLrzuY#T-4pwu5b$+iCdEN(T`_cG#O*sl^r~* zUk%NB4aspB5ym&$!q+kc=td61A5d+`BoW<0HZ~H_z^rjjzPTOJDQn0%$YdV64CDi% zOZFcJ-~qSuaG{i~GJ$u?xr7^>J?WQi@aO0h+TvKl0({#|DEnWqIF~4^qim z-X1GrY+sII*=9E^H*Kt4^6duObIj1udP!UsnkXdX@6jtvN^w-;4sUzQv~ta#CtiSu^GYrg~ydN*U_IW z#oNoP_->hx)G8w0V+|^-D`w~fT`~3?Nt;=gmDes2dlI+3+Q0Dx-3{U+)-LiR9e)sN zFrpT^GlS&jrhroXBKc@_p`z!=5vm_85W4{=RTt2nA2b}0R0+s zG}C3|ziV!!L}XSZGE1|fl7=%|I*s!}8T7j(A4?0|!to_4=Gx5j3*jtEB6APKCRIJ& z=^cp1XAe}b`N?dDaq`d?w)dy3o#__UJKbn1IIMChoToEaPd_cKFh4f3x&Leey)Aww zNV0aBe|@6;Llu;M{(P{DV>$LoY@8A0zK?eY1zK0Yf)=n@ob$KD^mY{Z~kzm5OWIS)epkxu`N&a!r! z=v+c#1tZ?MTJS^Ghu81=aZR!f_nlQ#reA}urAGblO%YX*a9P}fygSSgQP@}|$l(Qe zMz0uG0+?v~rv`SHbX+aSJ%IDZ7@##5zSJ908FV_^Nra4+1U8MKZ6HU<$BLC+1AF_T zW#l=y$1A#iY%X?xWs)qO3Q^Rb3_(qY|5j@BKdrzeK-&nSP4AOzyZ+-jvbBHpvqT=Z z3{SdQF#n^QmHhZO{@)D#|9uPB5i6IvKzPRDw(2U#me#~*U5;38DdlHWkL`MKpCH_Eyiz+c zIY%pU)?R#?yi=Pd2`)c#dm&l@xVYjPt;jm=dPv#RuV81dV6KZ^+Y`BDn@r(2(8fbN z5M!OAqM;6+ZO13KMlHH~I8fjqRM;fd#4hV)Jic)SDDd+53$LwswjDRH%uQD9ACwDi zlJXoZ*WG!{M@dY;27Bj<$A8Wmy$(L8{d{k%AdI=-y0Uo@R>4-Dt6)x+qnz-@)YeL- zU}p8Pn^?hCohxU)yy|aqf&|4PvwXSh&;R?~X$~a;+C})K1FoOD&*BJ0!P|ehntw*g zD;|{rEPW{&l2re?6wqm*FaFc5fH08r4DA~B4)l?5q-0ZWaQB!j!Zf0iWHi*_H^j!# z;k<8m*Gd!~CC-17*Por)zY52En1d=pR3Wj-dN%9DIY!SYdw{A8ro@oqN7Y<~f;G$m z9yGGyNWii>_zJ zBa1J>Vt(H1!BlJVUn6jbCJ*bFQ0#<@{noWN=5@yziHmX?X{6?M&Jsh;()8X+tASgI zC~7v^G87lfhwE^|CrJIK9B5mz^-N>=rAB(l3dWx9LL~Q6d&n%Aka0)8|8$ej9;uBB z_m6aEE4)KYrG&QRDM7(zHfEi^i{|Fuy&K%>YVT}>wUkd9$mluN#a39+=SCfJhF=iG`Zoa#8T{=JSzxcfdzh=nj-A0~O z_vsg9mj(vF6fxmBq?%i#1kPrm^XRQ}FhUqu^qi(2Q^D^ZcPgJZ-=|1>ddzFeRYOHX zmgk(~bEw`lQYf)0_mT?6)OP49MJghUTaAOvH6u)I-n&k6>@n>f95Gk%0wJN81OR1T z6yf4$OBAJ;UxvZdQ}A8X;+hQNoTI@QDHy9}CSN$Pcnu>xN`Ju%dyaMh_LKlxkdGL~ z4m1azM1~Pg44Wj~(PD&%O*Z?r>}r{W44w8_niuCp!L7Dq547PE(GRPPN%FJz%rl&) z{Tvnnhp*3&H7zEOTV^{Uhpw<}=P(zsJEsla{FKy#Io~2ZC$x1EKeY`yz%64l=g_1g zLAn{l5E2;-zl9jyGzKGASN0len`x+6T{Ggx7X!BF;a%gkm?ZTIGk1lFm;~i{e$Bk! z=ve8%r6$1@=r)R{@NuoE3;kR&88`lwQzGiRT%<|GnK-ANP0T}ex%76IIm#J6&o3Z? zm4G7cjA(U@p~cm8%_}AOWpcVCDd>hbTo+FJjDB8B1=S`iuns9J2#Nhr`BmFsx4M#7 z%;?<8H;TM!clE}QjQD7~M)rK4Lubu7)37a57Vxu3MMqJ^9W_8l^F-+F?lr5i-RuCO zl~yPxtsj%cPD~eL@BuFETb-m(voOdV zBPg!8oNft(Z)U17Sw*9ONwZti5v6gV3N4lRlaLd24Qhffg=!YF=X)YcBr+QMo80d;3!6lB9!Mcq%~yGk6c-QV|}Onre(glXP%WWLu#VQ5#p~6VuP40Ro;| zzJb-2xY#8Gye`e3oqo11``6D)2Mwz_Q4I@^d>zfkaq2!4$mkL^1qy($4wLq~FUnei z@Jz$t8T-cV%;E=j*ieI#Qb2Li-MhR4Um6Tv@4DsR?%p;_&A}&Vp0vT!SAu7In{*vb z*;bC{_}85`cz6~m5$M*R&6$jJ+KGCfZqg3OO%O(Txe!jT-|0jD6YpDMy!xn71>6ihf6FrpPBWEAj9C z5i=SU4~oYNfr5%(*+JfF+H@B`PN@p)@WlB#`E^k7dWrE7u%EMoWEPx~;@ArBgI9m9?UjZAU{w)(qwx2LD7!)fL5f??BT(!QUw>*~A9= z10_}~rL>#>SN$3cM17r3e@mS5UM)Vpql zW8f2nitn3UXU4%Aj@Q*}Za#Q&xN*C2y4@2}pK4NOIKy*@>r%E4lnjT|Sz?Z7Vm2!W zv^dmdG!ZcnhOMXv)_ino(sYOjay2*d6z^ZX%vS0#5h6sR{lZvM`t_JD_L8zg|C{7@IlZMz z;PNf-yM=0ujpG(w(Z??GkZu6R%S|x);|pL=H4y~0eInohIueW&SM0JN3Jyb{THoB-N-z1c(lfIpwg$kRWBF(a zQ^o?U;kU|7>*z__zuUWW zh-*w~u6({mu6ykO(K>+$)g{1`eo~ zK+%M85|{kwr#;5kFCU-v;1HX1~GMiD15E$L4StDIoJJk9OvvDl@x#zwNvUsq{ z>$UF@O!282DwICLBc=St+WON`ymRF?N4R`M2))lLJ^>0eRIK~>UhVLj0M9uKOMyX+ zbKm(H?gKcemTG!VcU~w=h>eX@j(;;?QGXYC@-xky;_j~bbYMPWqRIntCuiJ@rd*oQ zfmA8a@I8NmjjcBgi3;gp{(DaTS1apUUrT;RMGr8CDSUcW&_>l#4PTMpAtux+QHuJ- z)sI_v`1!&!PNA^?nVqz|=wKO`%i!>OUtq_Py^=>mVDv~PJEOHmK|U`yz9O&FMxG!0 zX25tlcfgX4f6~RcU0--H4Io}LO|Uaj(4(?-6OGW`BeieTDPaNbMTBxRJOuIPg^r| zkhbQ>K|WbqVNMt3qr4hb!PucZ`T1+4;f=JWp7pc}(De9CCron%urzJ~pFg=4^~E$pHA z&F0c_9(RohQsr$i86?vb<|XJVHC40XijNn-*57K-S1MLEy^#h$ve`SdpkEe9xG8d| zT`AwqNib2i>TY^p2U7MvJo?y#-7~dH>}O;uKiEQYv-k<&0_!+aukM!IVJnlt3*-ifSSklb*#)NA86dS|kc*^Hko9xS6FM z&GpIHt5-7w`Y>w+^j;DlOe;f$DD(>=N6gq~ksWL+x9x*)x9;Q_YP0Nu z0ND7Kzqe@iBhm8`=T(Ci42}!3>RO)EvWd{mI8XZzn>%9~BGY(U zr(}MaiyfBO5;inz+Bu_j=3(csz~^yiZLD#A*ax}a-s-#A_I41)?pQAbR1fY=A-I^` zo}*RrBvg$}RTR&*k4p50D*vfue!dsuPigWWHM#-1-19_@j*NXrB%Cv=Vg;KOKvMJp zfHlpO`=s$*hL8T*Y}L=}w`Y9f*Brx$^PR0sF$n>|0r>%QSUyIvj+`Dew(eYrihM!N zq-%wwEwJIe3M=P=)I>mreF?Xj6Cd?CT=9nLxy>2VtVL`$KM(jgb0M?^Kx#@u8xMC;#XJk#W39FJgcvm87psb{ zad&1^g$>_S=Tnm=wYkx%fOL1n*vIrc^=x$@WQqpSkhRFT*6S%f`Nda3OGHI%FR^w>}z+sDWD;<0i5HJSTk&i6zq{(nvRptuxNfnx`X zN#)?KPC#)hC|31&{Exo&K^}w^n(PsqGE>)or3U9*rbXZTw>)#3tv)6qV_+G1Z(eiy zyuhPcpWoxMb0p5<{6RuXo`vSvN%nWhgl(?ihi) z#`*j08i2Zm3-*x9n>6S5!taD-TqGk%Y6xJp%c6e>@C1K#t#KmwBm52Vq+;2G0%=81 z@J#aYp+r3Kqn}`y{+z$c=>G_U&p1~Fjx3O`#8e&aWSUfC5Qns@u}E~X%$k`fNhY88 zm~TwqCr6?Zv$XY|nILl;i(lphK?< znn>aQkywB6L;xRrOdYi*!u^%OkEwh zIJgZtS3U=a$op?%_ih4f)Cw0bDH#I{45mTA;bS*9P20feLm~Wb1H>}<7W-9ajjJL0 zUXUTdrUB&z8G8+JvB980`WzamKwD9!mG}?H;~N&m0s>zpSdD>U5nu(8ttM?TmsM&`=8v&OWLiXPJB;8CJU77IfM8tmSYsIHOfYDPL#O?0ew*hd+Ven}-z- zQ?bR$@tNwD8AT#>dxd-o<=RF5BBF|F+dM>9WPT)5+#4Q z%8|aBC~)gxUB}WT!m%1fzTy%*>FSF+Nl~cLvtHCD$b4 zae8*E>T@d?nxU-nCB%Thsr@H-+fLHZj!&^=#roD0qXfA@EG#>v`7~F@O4^)pYT@Q6 z|Fox>(UKVEbFOUtMW{&^DtQ+w!FiRu5Cok~8=O<2Z5$8&Bz;FcHJ_e?&7a$Zcu#Qn zTa0V>A zeANI+uQNFe9Ul6B4PzsgI*@cU@cM?7(TDA5a>I99l?$35pV8f&Wr;|DC1LtpzC&;$ zl1uDd3O3D`DcMlszK8Xvc?{ThlvtCy)!)7CPpc%56A)BzMO;s*(rOKhgs$em09e$b zPyb`;T<`gf@WsT& zkC!&cZ6Mrg(gEO0`x05?wx7$N?YDOL&N-Efd~B*{st`=ATTe>gTgLaah};9(2sppU z%VeaGIAEKiLMXHV*8P6O*f|GIcxhissxF1i%f>SK>9t>er%TY91LVUPXVvD3V8vzvK^NQ z#D$xjEgfz<+C@`hhVOt@c;pkGeS8W|Pp&WQo`+^zYwUP1E^s%zO04`ABkkIhc7T4Y zX0ZFEbaYZPwPiL+oV!m)PD@3`& zXU4r`V0(?aE$Pk9RiO@7ih`0yUXsGul!4f46NH*?2Xbm&ypBkmqdWTH?eH3YZoc`6rf zl=U#VcuX2;GkD9J(2ypXJKAs2d`boPDTTCul61ilA2y)@;r=$EQHISMSE^MG8dt(J zDD2R|Cg%zv?NR!A9@Fl^U7!>~TJRwnN8G#V*S07Bx`wenuWnogPLO`$DHBM)0IX#3 ztN^TskqOk@G5`Q|m1FT`bg!Vaoaeh%-=iD<`$}f{Z5FM5D zN3B-p$YgHG260VuZ}7~rl%)|xIinvPny(EVNyCY)3mlOHwr(H_h^H6?`@yLR`Rua| zO)@xQ0@LM_Lu$u{PxM7J70@F~_#M7;gHIZPqQ~xgjb%(z!C0+O4(3kvcWwSc`n=bC zdwAI+*hkZDl%UXEK6U2nDXRr4Tm(jy%D^m3^j?+zu2<9t)J@ccaWbr+=!Yh}q`9>)6r{{oCK^xr5dkh>Mg9TIJb^xp7@+^axSI+Nm%B z+;oNYB}2ML7@u>MFtbDS`V(F96;~~owiW542l~1`M%>i2dE+?ZR9i-WE7uW~^nr6~K9|pZ zZ?+c1Zu@b~$97(EF}L$mb7WyWBWKH~Tv~bONNOj4V8_5`h!iJ?hznEp*{PBnERqXN zfXZ;0+8RVRywZ3`mq;iQNE6WcDYKIw-U~WNYUfBZ;yS&FL3&W~P>f~a#=CH8H~DoqB%6W?)0ywy2Q*yE=g*quh;yo#3NrB=U?#(mAd z{p@bc;~xnn$!A(7YIWk z%3QI`O~t7g`AVB_bR8Y19<*rqJrGd{Zcl51({!qb&} zAD!`U1hnO^Gg%V+H@NM=q((y0w1r?QAZE}qov+3Nl+t~Frb%$&xZ3y z%Hp#yI&tj4$XNyoC9UkH%(xJ9im1h;>I~HIf}UzxX~QBx>K#>cqxB(dh8iU7YdZb< z1?+`s$jA+WM(esUa~y(sd9dai;5N4JQ1;Bs2jo29RvDGA|4>JLP3$NFy?(SUKqtDm znH?O+P{LnS3znU>iYt6sI-KUGY}d^CQYzdYwY+xIlh{_CkU{rDlK}O`HGAJfBNQp& zrnXiosO1I6pXP1Y06)gvNE*)kBPr&`A|_qaYV4CRL1t6<`KNcMk-m z`ai}|3WJKYEg4IFj^f2`*L(#JJ&ML0!du;kpVZMEO*{z?vW4V*eI?Xdbr(VNzjDkV zZ#eLI_-+_bQO(W3a;%4tYE;`Ib!u&A17$7(w&jnCv*~+?t5cKfa~fc+MbTTDZUP* z{pwY@-vq%q!lgj(rND%IA7GG>Mc>@zhw?!SxiF)X|1<>V+*g7&++u(JUPgvl$1Xv$oz0yimW!M@50|l)a&Gg7 zx#R6V+d(_|t0Hf#$<~Afj0YYvZkCfo?KI{JX3CyUn8V8^R z7fUQ?)U#k>F?+KzyuLkzWzMU9?}w`7MB)Myz+(YurOIMyw{l?~>3q{D2$J ziueEjYjGAl9xr&DQWrdFazZQVp}L%JpGu*jrPKc}O9b_a>4EfAF>n4<1#kL4rPCOX z+up2M?q|^a4yFD^U;U5k;^BY__nqD=3`>f;jqHy*n)J+aUb(^-6+Q~j)e&fZ37+Hv zY`#gM3N=pa)k2cEc1vt?WjXLa+GN@_;dd61BoO9Huky-C&>i7i-T&UHj5zSa)PB$R zUTB(4bhMlqsiiu}mzXE`t6_x`ibqq|g7Vhf#*Z*-! zgR+aDnWvrm!0PvyU?{sv_%X@pf58=~V;T@DfAE-S#-|$ixyNyEq3v-W?&H1hKx^VR z|GK6@b!z9H&@U(rs1B+}`?wAIR3!z4Nc1Yaw*IXeFH<*#7~{T9Zxv6uMgeA_28yk{ z3`~`!W~+okBoMWpAaNq|4BwzH)wzU2Qk#aSw$}{q+tU@1?=@{0ny2~)x^NBuU?hee z3`}nodF0ProF&9CRT(z0GUj|xKf2HY@`W>GY_0CUjs&c)X93z}^3B{d!6uTI>5W~b z*^@ifp=y(JY$K<>zs+@KD`742tP0-D$}UxsT8aBWvVQ|GEO1{`$yaYdgE2JZL4yMH zALU+Jpe>PIRW~Hs&kmUwNs-zIor~t+tB}W;#(_iwhvzqOiXwd2kW|q8_!8^{am<*k z_Lon7%9q>ssdu85!_#)Z*v#$4=VUqVHFRSW5h_1AC z9o8Gb{8pKpdJDPuu~FeIdIWHh)cvk{&xF*NabcTC3$Gz7M(YFyFt38>U^K>N%oqd; z=f$bEQx?fAWhpGq4I&e`nkDu#rDt~s$yjf`C(Me5S2GkTuXeb#U66iHD3>L%*p2Hm zb|A8eUnCQ-$PYB$3N+Zt))rAe5dtv`+-54fh;+ZCxSRX=-dFUXzW2?YHIBz%;^_bv zr_}zA7IWvpaE;*-^^}Hk$HgCDgj*xKD$PEUd29bc)8|$XchMN*7y;^*M#)2_P|HJ}{&Vs9d%QjO%57(TqIC(qX9x;`XZNXcdI5}j zZ?IAv?Y>v`+qNX6O=M>|cl4x%{T6$b^OnK;!TkR-{zf!>y(5aFndM&k*~dd_X~%D;40F$nV;ZFq@P3uqo+d5Pbg92mQ`7EX zD~>!=mE$orVjT!(C@x$8UFE=DQHdQQcVZO%w-{h?a=o>g;9I#&|o!ht9 zG-7OBLYyO)V+{+12YZ2BCH0%SQg6lmI}poR9@bKc;qY#S4N&6s0eu|aR3(`33wx+T zc_Wo!3gs-^EEdk4+pypVOEV%62PXpFSNW8j0+^DB6pZ-`kym)M!>{B)WP|&i-*8Y3 zwVzKm#rvNPYk3wbq7O0VPST6F~%Puh17b5%&YZhF; z&$El$2X`O$wFzH@lksNd&O$Kxb{ z4_&&UEZLDzV@HhB4k+2sc3KV=F)odk@` zX=W-sk;AT%Jj@Gtj8u{=-tfREKXKwOXs8+7EI=^?`Ap=BEI?uHD#GQ93Ab0v#7ajP zg`XKEb#f%lswCvdli5lc<7#vlYA!CX&$HkC)ViVlu{#ciMR>(|u!!bxgksu8U}&IH zX8O5}BYDTkA1hZo`q!`SaPLsl1M4++&hMXzzE?zCEGTdVb+U)CH+A2Hv}TU6uPILR z%-wN#?-@E3nQ@FqOYTgqcOk7IYe5*taojtH*|~MS9m+R4!e!ziCpYC~iJGSUGdBfu%Q!8m@6AwBqVM7657k=Xk=ZUZ_B3Y76*YE$IH=C?8#c0X zsjkGX&T==Y(jKVdK}dF1se(8z)6an!hUNyvrA?g~?hy<-kV$9g{9D{O)kh%d8Z zq_c%!8*3eG)I8~e?f`Se3ZErvg?=ISeeJ$^aZh|>=ek^@e$GE*Q|UBm4w>V2C+b8+E%$nD0W?;f05~AJ; z=m8$wcd3=?k9w!46|Tm37_WR(UeaIJYSe%|a$4&~*X19RbHUmLi+zwE;=dW{)PiyJ z{Q!kPy(YXridvXVY9Xetev-w3gN@Z?&LBjGXa%49q66TGw#@FXKt{LT9f~@C+`nFN zh{sjE9U#t%L)}ZIm@F4@rAyt~_D%YpvHltYn7F?oZj)Fi?gY4;=P+IucG3066c8jZ zLAsU0#mFL)o1dGNkA%&O+@eRoj{{5CY|joS%@-$$4pEQ$r4<}YFXM znN`}u*sO>LT{j*hm>gap9r-$_?)|rfb-%(*~1MTf;^5 zcjX%^@OxL)-}kD%cEb^}_)!OgFd2JMG39|+iXW_h5F21?@i5q6_l$BM-&+~dZ1HY+ z2#A#ArWH=4e(Dmrm#DilU4{ID=(@_qikGtqhpFvARfGl^*g=SU7$8FYaz{jeF`305%^ zK|R6?-c=AC&GR*Bc#^nAMq_f=DjXeSbKdYN8KPWI-%@W>!n$PS`M_W|cBausqqQ!E z=Oh-S-TR>d1q|(K$rWwyVAS%a?TP7b>{GU#Gifmm%HRGl#pd{3H|@_2s2PzNkXqbQ6yh+ z)$|lTFw2%A?CG_XDgmr#2hh%l~yUEGZ4CrF(o*+Kv@x}4C*y+^&DAI6s#xQ*E z?*mlwwkW0EnIm(_@?~Ui4^LI|5lywEu6Gn1KI6KW-Pj^N<9|q!FhTo`OJp{2er$YH zirsZMxW7B~%u7M&Swj<8h0mGYH=urQV3ft_CL?NYz`YMoGOp9$OBX7_j_nMBi)kT> zEQZhg8Z603)*uCO8~%$vhPG#{z@6Ho>0V~pH~`GC#JZLOvrm|t;!*ekm63A$arm@# zoryAE7%ZMd*22cr`!GO>p;bep(#dDNx<)sc0J{Kpwn2=bxnsP`-8CEpWliUHoib=e zU-3v=7mo^n(_yG3P~X3#P|2W+#1QH75;JAmg6)1S@B8%R?n4G!Y(m6@t7pC`jYF^P z;st=U`?D^YEcmpjvU7=eLBVac4qgQa*6WKTV$|Brz5!tAy0R5fh*d7w+3{mICQ) zU3q;@$?vX%#SDwtPii~#i|i~NEkbgY{aq=P{lpqc(@xwU9^%|TlpUPnut*gwYrOxp zu@QaVqt-e!Gp34*_i>V{378d&A{?yR7JHwXlkcF}Ti-L8Dz2d)TmbB4F6pyyk}P4W zo7Ntn5I$v1OL3W0{>8d-={TJMI+kF%Bk+BtvCwgUVOswwzPb#xs=@|#MZsFq{bz1w z>BXG3rhL_dhEH+-hzSiw^ABCWF)Ecr6}p&;QpkAFQP06ZNm?Iu6NjbT{`i&SM!Mp- z;eid3tAakLJlr*F+EMazblJ9R;p&A6n}Ul;{c&`kDZR$t{y_VJ`Tjyu5T^P}5(48N z9tn&el1OyS|DfJ=<}dj0Qq=MZuHR8BfKdyKn>DpAerU@`H%tGPj7Ja~k(U@Bi;mV! z$)Fp>+A2GZ7@!4<2Akt8TRI3U7x}3(-kvx0c0GTw<5<4%<5%(5)^CtmjhEq3kxYe$Hw@C zOX!UANz@DpY3%g%G~>PPYw4JMy=$xTRRN_#qWBa3nXt3nwDLetPrDpZi<(lRjuc$L z&2e|Ta=X0U7>nGs_eOaAW- zsBA1|1tAN9Z}UF-=*5dhNO2{(cgOMJv!>^;SF9PhEOzy54FPeuk2U!RoW_3-H~|+D zj~ydJm<1WVubBvegi(r1=SoRYYUK4m`lCibFy)1ev7I|XOd7m>u2%7<+^HZ4+vx`c zu1o;8ZA^}zyG8<4^)~)kn-wf>wFjadtRn5QF4>*_f}!gzg>73t{vHtJ<5q#!Vv31M|s?{mUSP6@uWlWRXJ>EKDS2szW#DxCptvQ|W-sSaI zp;#lMR>v9=)o&WO)(zxMdkReitrFDQx77OyQX=1P2*0d~#V!9b4QA)sepOVf##6nE z45t`VwR*j7=xHT>t?6$p19_b*aW-Vbk?DDaSVG7RG%+$EU%%WFCW~S>_q$+Pz)6Wz zYLSS})Ns{sa$%(~XZu}Yg}`JvS#vc$6!yM8pk(=nD!LG?EQG%rrP-X+1@cY37PA54 zJFb91uoO<*=Y{0vy*wAR*|w`nv4%a`Dt1cb;(?}z&rLNZqW!f$&VLnkm*#(wn25%q zvb=gFv}DeRjomr!6nw0u=Uu@(UvlD9QMzTG*wm9EUUdA~vlyo?9#gerkb?X|$5lOZ z6p`?Xnh1rS=eBIqbANNl=b4x^9MQJ3D$%wfL`CSX{0tiim-W49Ful3~Yu3iv^o>PL zbpzUC&y~7*ZTVc-s<(Yl8X9<^K?NGh7C}LfENJk7hMLEqD))Fm0^{*Cxyoe7A5Dc} zumNq+KX1dj|I6@6lBER{i{*W<{671Cq%Kiq?istc?AH5q8k2>hRoDbqdE-17199f` z8cSY;a|w($6e~(x+-TGd-+34js7!vR|2iOw*O?^)@Q=5qKlL86i3!?Rx?uOMslUz9 z@%}?_fqh~%{V$8@iJ4^n<^M97{;i|~{jH$;=SN4eG%2kCx?& zrwTtPafa$oy_RWBUL0h2pbjJYiW|GBK17ooV-M3FHK;~QSyH)fOFkx%#*l8!1~gaF zvsKGjL`f$P8d2+7Z#SD8uyl3UWr`_v)yEofIH$<`AL3A_>D?dV5Xf$oTUa)d_oFeH z<+r!(QZ^Kz>h#oM6e$%Qe@e4$1;&Ky&Z7c}kUQ-69Ov#VYYvi+_r?Es{lWi(e6l^E zpUF=yME@Y4(2~UdIoUtx)e9tL5+eA2KUZ~GCEoDMy!Vny0N(l6b^B0fO2xd+M1T1_ zq9)Dwy8kXY6bRB%KG1_XN@i5Ms|Y-x z)`Y*ck_keO7cBV%*9Je)l)gW1qaHK%xF3*#y9yfli^_q95N(2<6fJ``;c9%I)GXDX z+@mD^QM`nrn~z)P$Kz_Xf9;i!<~&vnH0F@%_Opv}_PnjhW&PG+%qXu%!lWD5I(3u+iGb=52t4Rv5c`yH7m zj_2)}<>bwM$&mOycG=yVtLr2XrRKYimF;0ooh!+@yF3fXf??2*c;iBG-JQmKqWc7F zu<#hE_*{>1Lx-#SY^rMXu($_P$G9cWM7Hs8{>;}pNcXZqUxI;@cfs}{rqg%IO;Md z*^4KURQvM{)v2Q6Jx_79jgy$-&#Deg@2wkFQh;|ENt@#))BXf5ItTb~V9Ai3etW8U;&kI{Fq5lm-# z)_<>&v2`#W?~ySd$e#d+h96**v^nd^Dg7<>fbV41I{F@B(TP{pjig|8XL{@K!E%$g z-tCJk<)i|E&|DE0f8WGImv%CQP;Dx8jPn zOWLMay~O$eNkF#0BGDGp3f;5bTbqj1&-2M_8lS@%eMG+66xk+zDE{e+f4d-uyhCJT zNi8$EoY_~I|IKga^3I>Q^{3AWQ~8$T)HJz)HsSb7!aOuco!>-lwk2A5ENX><*S2Kr z3Ei(v!XYPaUDt%_j8fwY;t&C5XT1xgq@}KR;RdEDh|weQW~^B9RZJ0^gu0$yd$t0t zwbJU(dZjDP&sDJU83TNOtH>bk2-pWTP=i5=`muU=KR^_5f zDp}sG@Q~MC<~Gy&pvFbTNZ6}Gog~z|-ApMRvSnFVV(rFnuxrSNr8zAu6V3PH@jUol z-3b~8nTZ-Kj$j`yT1NR~nShf;>_Sf1e1h9Hw>8-yBzU6Xc3+eH>A;m-gkbAEdwH}i z7`R{4^$PP0!*W3d5aof{#k`zctW#jEJ0_ZFc3b`JIkq5mPRH_TnFRQ9)X&_S#(SNA=7tU}|l~Iyx@)Z`s7x3Ip|- z@O!BWJK^KxzYe)7$&{MPl{k3qU(+ZI%O;#*R!)b7T1}$g*JEhTzxJa?D)zzJ>i*

    _>;{4dgI{PGs|IX^@&tgGN!&5V7H2KmDbkd$dzCX|4yU@!t+h+(i@Dgu zV&*HTTJE%${&cFw+=Dyodf1kA6L|JF_{li%lu(Cb>f4#xFWA?FW0$K!FUahO;@E#h z>Ozi`YE#4=)U8+1)!5emAWYz5Gio=qwy+I}xDb}y2#4}B?mC}nrwYqe6up@05EVYY z8EO#h)R@5hBHdoYj-3H-FKA+ofvd`XUbzRQ%+P=F!A2|0EIy^c7wjG;J^UM?E5v7k z4L!@A7%s5|fp)$wQm_i>V=EqSmnP*u))!TRI>3A}1K4cN%Yp)3{UlzHk88S4EWh>L zAdLhmj_v=lXCQHYgm{D>1vxd_vpRwm2BCw`d*iK}i*hSD6NePHj;{2onoAE3w3}G2 zSjNlo78bw>SR63CaJhLH>?+~OAA`WFPl*gyO~o$o7Zx={*I^}jKSyL<(A`Y>%QX;y zKlW8Hu5#eFkD90Vimlu_52vh>I*UgwvDZ08V%$ITk_5`OK;bv}b+{enha~?H4fh^B ztkYwexYSiTX0aTpbs@dsFSh}gA0E`Ui)3Evesvzmv5SfG8dZ%MmvKh&ad)OVo=^_X z4P}i!48#ogbBO8ckzK2Ub0T%>9sh-s3K%;S)c9Ix z7+c#b+$RdXw84|(g0cA!(bvvPKAle0a4iPgW~oYMI|J&VUfxWVSnZs-&Y+7WJlCs& zYwAvKUDJ!H3GHgQ?c}tQVmAYtxC<7fsh|gjIG~{*6=N5}k3hv?1cu){6X}Msuz;qo zrDh=_!WIWFlBdgtJ;nC4yO+;_T zxmCLK+!L8KT-tXz&(0@av*34*WExnfjd-yX_ns%6$6wWK44E}KB!x6IbayVJhRqHQ zX6==JCc4V)USR<_SU1J&hWt<+apklomEfafv+xLwEfZpijZ+ys+5;OWS~OIWf~!?2 z46Y3YgTUhE=qrphplKsf4@CbgcY9Ssp{7ma-MIL|c2(vlbu zkY=lQ2b2?JaBh%O)jUUPjw)svEOr*qX3dRvDT9}P&YgB6`0`LyLXUFalxanBoLO?F zCM4Sb<(S-q^t#3I(PJv@*kzS_z@$wjDE=0|c}+irx?oX>TD~x+9mcFhnWn3pwr2`V zyQf=SrSbYtqUV<0YH=#){)#(OuSp;Xp|NJDBB)xOqk{j6I^8aHObV zDQ{Aqw6L*XqdB;9QQjJU`cBkCVwr|=Uqu-&uF~Op$dHE1mFj$rw+fv+C;R0ES`i%` zwYaCw!>fVh{Ie7SLD^UfXqkB)Qccz5Garj>(e9I1$#09j`kg#Vo0F%d8{RM{o0DPn zF$4B*&swyES*;gO{{U6C#I0FQ|Gg>TYLNKIgYkmo(-}#aXA-$;8r9jJVnkLRStSY_x_5lvxu!FHCUuIO({Sq&duD4mdG}~SK6nG9} zpQ{>fl$D(XLEZTDjNrV4g;iZ0N31h`1Q)23?b@AEZHB&B zXwI(tqq6MAuCM%&{n@(5YccTdKHIxQtaJ1l z%p1S4UB9|28yNFq{i*48-np2s$pF+9MS0=0(3LXO@rw0vlQu?DsdcJigN&KAi0b-- zg)ihkMo9W`V;xH(+|@BE0OR$Rs`Ms+b>t9r|8A}YvS+S_rb?QkD_o6^+p75%G&HjU z^}hV1kcc+1$GaCvguADwCpS`zWWX^vrzgh7<)NaAz;w$-w_>}!J0*O~sG2+YX~CA= zJZs;Gz2z;LVA zi4jGPtbni0q3z||J!Mn&2BQbudw=MRoWT&@xT}@zh4LntZyZcy?%#5Y(Qa3NL2*c5 z7QcgjvXGPFeUi8jY4wY^A773}HC*H`!HPw&+?$ww3Q{4)U`uxvkCxFVXHxqOag0WJ zZewsoqt8_Mo4lKZLSPD6rc_GfvwGBpkt8b4L6CFa0%E6X5r}vwHB*LV5^kfE5mjqjDe?9R&0R~*;A1nffKyW*bJrKjId{-j_oTZZ%?}pR zb>9u}jvcXGNCo0X#m^9F2z%$K<}4NWOy`>O!TI&D2~sNiBfZh|N96KSMYuhBF7=hm z%Z9!zMt&+GH)Tlx{@w!x=S2EJ_MH8ssV}j5ZAPhqcqPZo@JKz^M!_&l%GeFmq&L}B z8O9v_&E9^-pP5|7q${Q={%O)xP|&FG-b~^+I@4HMOnI?W1fkKodv?h>0)N<=$!?o z19Qtoz!SHA$#T$xU6#e@QD|NHBG!7hjSGs_pQm>)Zq?6mWaYP9Cx)XJRi;dAd+eL81IG z@2*Z1T_g$UauD7UJs4Eh)}LVM6$twAA8k^n_WB&z<|x73*tUuw)%fit^T)m z{eM)e-)Kz#2YM3xU%9)?n`j4qi{F=+Y`!!v+5`C>(3pS}nSmDE|39YizG)8ayt?TB zpHp~q{!QT>{hPwO{TF9?OX2+wvQ)GXq`J|3fe&_jeS+V8dJom(*YQ8k@Nya^RSq1# z_U&x2#ub5$+=8|Wi56~-!~4w4Uv$v22NLriYQzyS#zftIbMfLABTRsv8$JmOf3Q{% z?@y!0j?=%{++=SsPufgRp(0YU?AN1P8t{xY>v9KXrqr7ujAD8ozJXAF=+Nh&n$|#AZV!1xqF+xo7g(4 zaF$`3o(T>!xl<%bM_1(l1N#CoJ-&A~K=gH3sxMh77dfG42Ea)6GEk`pRM<_Fd6$4Q z3vW~JL=G-PqM%8imJ~5M@^@C|B5Lvt_cnG057l|_u8xSF3`VjP6l-OO-S&^!p;BF# zu-hn4GBRc2*}3X*nPLg`e+rLwhO+`DMI z$z~UFuG!mlrQ5JB)~J-tuDMkuCR|2i=`?kR9c~Z1yLO3_RCJ>frV{6pY7m5v!Onk@ zo?k12-zu7}sgB$Ozt36ao?|+xx_Prdz0-DEc~FUN*pzKpLl4+lZ7nea`(oxHlC&F0 zApF=EInREszCs%WB`T)6IIU0pEG^+E!f}0o#n0+?X~J5EsmEYW3PTzK z8z(Ey9PeYU7M7L;HDxur;u#R%F`8&dRET~tgxwy_J2zn}^_$#oq-L$;y0P9?xRAL% z$Q}lT8Xi*p=3%V3TP$2NaxuVY$YX`dJ80cM%((K}sX7fHpZwhflX|MDamG&I53{<| zv-p$GK7^`hh1x7+)P?azyf5_2MgJ%6FF7z?K$L;d!PeU4EPDVT{m~G(SnbGN2(5MX zhFU=e*gxJJ{O1PM6xd*lBXc{89!q}p-Z?hx-rqFvGY)egIT*ANW=9Q>GsbuQi z7(71%Tqr8k_T9d>o02)zVI`pUSHanzC9|KD^0TX}+LB~yw!p75p31EcS|#pnX*R+d z(@sQ^i;c>bY~MYOXbvYg|2dWV$W-!LeNM1w|ga6Kw}7N#22^gVp4il_l-1tn$ctFNr6R>&*F zW3P}wFW`vs_w>g54PG;dK{GH>$GGIc9@~pO&T0TQY*M5 z>nrcZGat9C!8a(r`U66)M+4X!mJ}Bq?5nz_^%csmA_!ffId+L}1Z;F#h(I0p!>EuU ztXO~SV{2C7s=WF=)9!xFedu<{UPj}LpTBhx#E$(C($}L$V~=985gDx|dychg9X2|g zr+(eFWB+A@HWe}@GTPZ8bk2Ac2k7P~W`P~Rb({=Y(i_#JY{+_PHaGdJ#x1ud7#YF& zX|ua*%94@f_{@1WACZ`Q4Pp)nFM5Z&c4r0&sE;SM9@AXLBi77S#QA-A5B95V%A7gt zVLDj*fv7rXNtuuJusBZ-8kE8sWgQIUG<{R5l#= zG4^?(R4T5Kw#S#sSp?{G>}S`AJ2R8bNd8Vru%c%`+fp8DNbLo7knm>N&7NqzuTLq( z{ELl`JleK;5T0YI?PAF)AywcYs|SaBqu%NkYI?Xsz{MlYCeHdMrX%OMB?RLmqp_wt zoY5=^nVcj7v650Ove-x1fv#bD)mtizSk@Pu&lme&)3QFY+&R;<8}@32>#fEY!cgeT zDRS=af53D6#twC`0h`90fXe#mrrP5;Fi+~bYBfHH-Yhvv&a|5=5;D_q%lQK`n^9J` z@kIT3`VKH$ZzN5nP=Ty+#Ku8y7^iH>xx#S2KJBpouy(#8xl)fZdb^2>AclXW=mLqQ zaP=?W~?({8@l_0(PD7HA6ODqo4<7ECLifz!QiVRTt*1SenFt*ZBZJm2Bm=n?y{ zSAs6|(G|%Vd;HgM*s=|MwHOPO2W66loRvRzbbSt_BT)nl@>iW#Fn_vw0hy7G?_yWQtz$++Mga5O+`h2X~1{ugrKFVx#VNhzOS zKm7tdDk;Y&BH6#fe~(Zq06%*Jc-0yp7SwSKn9W|u2*_dL_T8{oy)vAA@na#G^e)|&M`pU~~L`EMa~;>cZU z87Jz^h3#@bFH+>)Ov;BuXlkk zw5B!buE}%9{X-|C6!i&w$r+d<#6=4e9H8$hB8^^ChZxLCXf%+lyQREZqFugyLa`er zK$#*#HjX?GkyJB6Ij*acCDh8MVmD2+PwyUf=h+|Ueb8o2+zk3GC+rNr5~VovZ&?QjY}~mCt-IIMxY}Dt5@|?+!+JkWttTN6;5O}32D{5v zd@D$!DT!CGZb<(Ak-V_dbzIk7K|riZCxawJU1R+*xcuD(DBP$|q(~bB7-=hw^!kN? zCoS&zxR`oB=_FEJSf^1fTfFb-4~LefR~hDbEQ>D`qV|ulh@c7Do3O|*Om;`%d5rXg z66p^{0AQ5K)Mio}6pdidx19_rRs*iJdUmHViP z=*?pxOaZ6rrJ!?v4OPpGt?nkiE^lTvoV}il1-g_@%@~tTTs$n{rY8}ejmbq?`YCd- zOL2!;m-YNG8YA5r&5Qn_dL-XGApx_5+4ql^vHzK6~Q*mS$6V4_GP`Z5SmK{ zZVawkEKI1$qJ+!2V`#&?QKcuzQX2x*k-wQNt%J3@QoQNJ$4h7YH0d0wOEv7LTA@-a zqDY_xdyq#S>pWSJOm&3&=Z_pd=YpU)#($(mn(_HDOT(hxq(u~MtI%wNXDV+BvcX$J z@YAiA#3v%ro81h|U7>7d4LjH2P8h&z)rVxmj*AN^L-fOe+LMlpFHDbvIPos_otze3 zB`by<2%6Sz2mJ-*WP$!J)(JSt87>Du<2yNdUbpQHytR;Hf*Wl+tUyQ$aa)Qmb3luL z!5?t!>4K;ga_?bZa<@oNt&3Iilx0$Kn5DwKxqh9*f)seWHdFyC-*)p_@O4gc)|+^U z?AvU`H{B55Z9vdM+}k1d?SMX1j8Yq(v;e#K4>`_zt<1Wxn*Vw8HMlj*h8UzvOTjuvpPoRN~^xa&C!zC>NWiQoR-3bP5WbG|mM03fgIY zMN5J1l5AA#+cz5?v0L%AnFehA7uw(y=B!a8v(B+^WYNbDPn3zU1Et{r<7#K^t?O)T z8<)wyWvXoduX|kfaX2vU>!x=8)fH#aYo75MJ^DAF;^yx@*SrwhhT?VT`?pNBVFC^u z`Z^^1n*%~M^H)m*`*m3Tx7rqa_wP3Sbsw(!@8_(Sk=q5nqutv+PV_e z$PnOz-T$X_kix&xB2#a>>}^29>n=M<^{DwGz5XBay$@fu$d{h~n-Qjwgyhry^PPve z$`#>oZmzYj{RC0F2-)Wk47Pm1?zSy?2)1UQ#9Z=%J0DUJ!8jHp16^YY_+*HzbhtEO zncrs4_;dx}B?o7RmbAgH`?)+C>c$FT8w)=tud+#l+7@eN)MgV6J1kn3ofHz2Q|$ID zu@zQ!r}O@$1dOtX_@^Y>ww}kr(9V0&`QJ)voY%4Kzk(qEL_oX02Cofo7ZNP7_u5|1 zTd!lfSKnJjw#(}o`t_Xfx(@E^Ilv-9Rrp_8L%6>xz6)=@SNj6v|0ynlJ^m&xa!tfs zX~%BSkPPpJ%Y{u7|4SAe>&Y@-f4>(vH=43_{zW~lKXH>y{1SOUczZoKR=DTOQ(9nN zhx7xy9Xb?E_fpeKE~oC%QRDQEI?Xj!fa(F~j1wnk)c)g=Y7LV<^Yz`(v}(4(wleW_ zsf6W9dyn~3bEU(EqoW*n7qG=5a~QAqrY>^*;30kTSSl)YH<_S*966G1n)m@yo1@U; zr5J6b+Q0Ok=_wHqmv%lu-Mmn`BT?L;);b@oRxt^}nXXv2J@c|BBHVgdcD#SqWqJUF z_8W{3n-LEhoD|B;i7zA$#mpV5Gm<6$FxO@3LwMFa@0n|S)0Tl^im^)k^S`KaO-&X8 z+Vg1K_QOXn33A2vtVEK=6ZN`hz4CQ+Ospwru)L2Z3+T+RxV+5aAIf#uR&4)_ z&2O<63--Z|4V2{)qQwQTPWWE`NtNj*po)MS&|-BFjm$+pv|911Zki&-qpdU(=*(GC ziN9x%?xr61zt~pXI>&D5F)*2j${tT}!U{TDqHJt|} zt$ETiRB0kgDXR%s$?YtaxZFK01FEtXpWbCxIL+=6TdUI(DMuOf*p}!b)2U9?hxnI^LO-#%ih})RNLH0cdnTTtc;|I zQ9pX~CHE?OpJ5-H+e!D3CiCwRcy(lv3M1Px$9L`^L-v2-9mRyE+(CQXe{C26Q< zbTZj`Du-*)7*IrWcNs-V7(1iRSway?Iu|%)j5{-Cmz*BRI@(iXFcww{1xDsffjn^X zAf+Dh4n9p6-_+gv`JIV^pt#f}ly*oKpGdi=lr!ORGg}~Wd!vJjMm}5)JvYKohfAMe zdEEKMw+O88sZoISrB#}jt&i)2j1;?$ry#;vT(VeP5GxgjT4(?`n>JPG@VutvOz;VI z1azG7O0AKtA^e;?lRRMRu?Cm|rU1o_v3k0%eVQ4|ZpC?nNJafPtQXU*${m_%v;8o~ zQ+h-j>oh{giTBOlN8IBpXxz*Op1b0no}NOs6)N)F_z-Zl(Y~L3SCcgbBaC`C-v)`T zZU6<)XC!x>XgnKf*tk9|*AiTpIDSeSGF*>^u5FCG7u$`e=N^L}{aEVIi%2tpPBR`S z<5B^+D_uorps^V!bPbCaY;q~tcrc97LRg9ILw^F}amboIvg!}rXEIdQB&LEt!mc0Z zO>*A}I2eOg=(&EHY|zW~S001f7mdLPVh)?1r!y2wn&g}M-WR<&#iA&4D(JTLzaT)x|*WQ&pgon?DK65nyi6_bziirU$Hu#<95W6ZW>@A zu|M++3$-+UzrEb)Rw+6EYj|>XsrYr>9J>rv&Y|-m=N0TEUI{U6h*OdK23ADg%Hso9 zT6q6@jy_@T!0hx)MTB4u;0}>Fxk{kL*FD0}+|UqTHEUoPbP{;OdMLw!usSNUtADN^ z5KI(G&Z+uj@F+iE)m3&_6PY8tzxHgJu$S-nsLjF^&WQxth$M%!q>$g-5A4?Xfk57s z=c%>=aA*fmmpranx5VRAyq;pYtS#8v1XDJ`HHY1qhnz$gv3PB|^4=UcR#PC;*@ zbCpfB4!9q|G>@z){~TA|d>WTw;J|9waLY!;cX9oK zPS1okPj^`|KG<&ym>aCW@gW@C=}~i=Z`4VasPGh?zpfWC<^Sb&HmdF<B?$CU4<&KI+6Hu0 zV2!i_Mb-O6Y~3}cHgBYyMmHw}Lksns-VbaHmu&Sz84B$-X3NCR&{Njb)V9$N->Gp0 zmBecPDFIU6*x`8JJmo0)){}PQySvS<)8g5r< zIkvW)!}wQ1?YtG&58wE~HIecl6RN{3(6B zI!JwCfDF+Gq*&JM%mp%c|7`oB`Gs>Af`^8sUyn4UIGHr^Q+NrC<0X6275Y2jQpB1Q zz_gwKK|oCfLkagl{)CY%)W9z+RMS5+^<5WueK1ljS;^B<<@_5({brUw6prAnEqsf& zAKxU0KUT=w_ecDfp#}W9JLK2Cm4XR?`0|4(K!6b`o;T+Y%jo#`^4_kD$fVgHCGz!w z*av$l#4$x}tqjNLL4Y}shLPlMd%V#A zXJ0=MqiJ{W;=+^XuMrKzm3vY#ln);fPnQiG30XjBSj~019IJLiRVmkanKx$HCA+k1 z-4pQF4X&P+xPGB(R8Tx#TWMn}b%|yu=PO`ZPI3H!pIh3|;>~o`h+O9ljS^E$Of6q3 zFi249+I|tDkW+vLB%T=%(o=7$33m*ox%eFZvFBR5o`5(QP_1H}&_XQ!?dsRyR;sI~ z196ITfviI(8Ci01at&LrY+sRzgl)OeFm@$RTL%LsC01Xj>N8a*lBijSLd|Nf$$&t~ zj~8oW!@2K9{Bj*>3>e7Eg3c0UD#KA>(%OEqd4JaAn(y+qFdxNp#9y**fowTWBF7&rx<79&r#+(_GG>ccD%01WZ zbNesA7|WoOOSi_+3dHrzpER6pva4vJFgCiFn%snRZ3{@LTMGZY%l^sqin>yjz!lk~ z2qLHF8U?NnS>uN2d5x4-N0KGaOIpt}d91=Yzh3_hLHahlGn-WvE)_|7N}Q?oMXq8; z_?BQ^Rjz`Nv@LW(A_haxy*$`HLHrs2m(YV~7`k-%POpUz>2f!JC~;K?VR6fioZA4) z>q3-6U)rl(>Cc@Rtods1vb`__DYZ|2Mt_jSwX1)zl-uKJ(xshbFEP4X%XBFn@WU_1 zSPCGjm*h4YAVD>MjZYAuT+WZcul`}HwmX|IeGe0p!?)QncA~`4v>FbBIhw_r)J7i^ zH?zU({f;(736?{*Qew?%ghHXV{PH}iX( zc($3x|GEm?b+o{BjQ(}(dBZM}hhbSO-4_KUw-m?U=e5ZZs?=NFphlN`SC8EQfe9J` zSDs6BvZuAz=Z9MO5*Q96WN7vSYH2$fMhB&Qwf-vd|2fshI(asT58yg6Q#huM#x<3pZlm5u>*XH)!l@X?fBmEYr*oncByYeZp$9q90d?eP3@Z6uRqWl?C$4BXGWo zu6|HC|3e&@{|$fgyVWKZWku2?0DTb0S%`NgRKLg#?BrH9~eb!tWT-%$3|3qz)FL!2(0`-^Z$JEs{H z4GpD_AwXveYK>`mE>3{pNr_l=Wd$HT^f2ZW%>dT4lL~-fxK%veiCPDfv2VQD(Z&hD z8k?7O=QSmF&H;K**Zi#E6~;r|nk0HjEh=+z#Zr**LZK9U0y`nqZWi;zL4kU$7I0vi zS-p~$pEmN`!dm)R$X3L-a17@{P?J(Nb0HU!zV<7#8fd)<>5guRR5Dc|D`OCcI?yXa z!wS@=8Qcsc^xj_E>{MMyf~Cq?(|jiCEI7uR#4Ei|Ms{O@*d>6c$dA91xXBo%xyo&D zleOl4iS6jPvH!Y&FA!VX-96?0^StKS6v2s`7eQjWBYVr`c>Qv8v}unE(1akdIYta9 z@-;;`V>)IQE!jU&##<>#k*V!)Cw>3;g$4v@Fcm7VQorHj7A3B7){Wch|E4x%QoJ3< zM4Ubl3XV;MA8v&|=9Wv?CQeWt4rS8;?c9Xxr`XL8U3cG|o}XXb#n# z475tQ}IGhc8f*MdmMnE~E9Kidsg!$t@453-PfZhsu za42A*$XV<#0F1e7PE<#xcl_jU5qeYGvdRQnPQX5~1n$4#D-WFd;+6*>`8Rwe4vcAi z@ROO)qBJoXu@-mRpz{dTmVUjaZ!x6K{LPO3wkXM)J>@l&UDrZzk&Eut?*C?g{}wv( z8hS+gYBGO|f_pO!yqc;3Nq;MA)U9a5fB(;$r`D}uM+76J{bxvUG@XRj=s&<;;I0$=`bQvj2;?O#GKoKlF9D>$fQT zSGn~Kc+pvM-$HY%Kic;@E?$~6N0YL9uy2@#1FOGYG3<4g|Nlw*e_ir=xz`1o_Wc$$ zUfm!m__Uu+-O?l0ZHSl2_O3BU0UHuCy@yTUqm#|M1dx^agf)n1xvr_x^89 zjagjECoh&|4UW67wzU58#)wf=6ha@Oebkk{3Nvkc<$&_4t0ukg-->E#5H|YoT3z2k zCr=AR98(i_{Dd7k;ihkx`aJge<8Pr%OXm_(AteveAFbYL3D}XeGBfdlT0(cpOu5E! zb~ud)>n!f&HQ5JUHu|E5KdJ4Pm5gqi+{?iV*XZEl1nj^CR9ix8RXS#*T8P(9@T*0& zcTsrp!?xi1bqYAL?rt!&b4b_XheiBbNB^}0{~Fhz_1f8avlzT~Y+r+!-eTllJH(0D zfyrI3ONhT&wO_4}w(Nn)y>*<&Y|NBYl$y}=AFw~v{iZeA{m5bWm8e92W<)FC$^WbN z-o{!R?6j8WC-ei_=aSaW@iuGebXD!eYKJ+wg0$u-_XP&0LO8*U8>|JpkRL1V4hT2H zddBH&>QYs*CR`o&`Boa7?b<7vz;l~piD6qg3*Dq`=eQ)xRjB1-j~D0ilNbHleolfy z#ojYcDt_0RjiK|bytqSS#k_Iz2lrf9%{zU@rG2p4vD>t-QRpZU?4X)bqB)TE$b!tf z)RoF7(BnxdIae7}rEDjc3}HIKVj9adU|~|JXO3lPKHiN`pC9TGK8G~zXJS51e7Kp0 zR-+@OYi=@WpmXcVQ1t6wLkX6OUZUfGTyj^|PZm@5o)tA{E#vU!Pxg^CG3OASsYsl% zescKDflbr|jRlselrZpY7pEg@`em!ykjk7MnZ=tU29+@pr1 zcQ4ap?yGoEoQ~rdCnx+wRz1!i@mD!reMUq&fv!#DH%s~7L-ys6WCFGn>qLej8YRA? z)~ype-u`JeVV&K1-gdY^H49_rEHtSA-dRF`vPx$r@;|6ua2>yUU&1$a4_9LS)YMUp zzHx%?7`g>l(v&CE!#3yf1~Nh>ng0s(|8J_Pd4oANkKH{XL}Yx`uh)0lF5mA@!l+B~n^F@|n;I6s#AiD~OC$VuReVt+GV5*3LFNc6ouVH&l;sn2&*67Gu!^d@PDgrS@jj@|ZPs zJx8jG&E14#i%JWMd_+z6S(siX2o#H@+sGO0vr}XH)2fro)hJaeEou z@-B-DYiF@teDV46?gqEq+s(Qc(g?Bce&4%)%ExSp9S$+Mu|O17dPyNqeHH&RE|d}; z2m0QWM4;)SH?)GxZG0H;qF@s=h}QOTUC=+;NvH;yQ-t;1HppHjE>8%0VE*{)EM(lWx{yPoCzA~LYdl+8@5*&+`Y z+(n&H$W~S5PqX6E54f2_WDi~A?K}4D2AVjno_P4Wlbpg=Mq*@tR%;ats0$xw19;6O zozHbrl55g`qvoA#G><;4($~EW1fFbtWJaWq$5TdSEFKO|PAz5c$I_pfW1Bi=h4 zj7bDweW9Q9u4SgiS=7EW#CA}Zrc3IP#z67& z_Ng+tHPLZ&-L&NWPxIN_hVF*U+%j$teAZ5UP_uE4c(m-#%pK+!?Mi$^C2?)H%$ z8Q=9HZm3avSMJ)+g1+osri(9MI*alKP31sHJP%LvOqpadcf%aK#napwsFyL}A*a=w z3Z}A473>uixO*=tBMCO8vZbZe!GLM#FP<6I;-V zE&M1DzepoF$@0^LOza$4&$+aGredHQFuA$O^Ry6973C&+I8mFQnFY)C(c|PMOT|lN z>X;$4NO4XSpMfyJmSWr&-x-H>QK7nD(y68P=JI=ow%g*&!DOuWXIuLB<#eSlao*F* z=-;N{D!p#%w+Ad=Xhh8H3)9epf?Pq1`mR0(Is2AuKgivDbN68k>E-41@lc5UJ;}F< zq7Fu>q#EjAHeva2nEG!|`-OiB1yr}gwU9qa z$bUzPi)ruN>59{W| z1-oy1N#;Ctl2Un)c;!5!q00`h7v9Lu&Q9;L&E7(9N*BWqy2X`?c4f=9Wox}lu(?E5 zD1baK@JymtTbRtKb+i`_-nC9XX4Czu-k=?_7pk{#e;Kt;Y7Hjd@Vl`{R89XQ5Cd{p z-DYW@S&dYr9rv^yDNd@JJ`;=|2>y=a5$ZpTxIGo4K{Z)r)j~rU<`s5?xo+!oPLNNK zuNSS1+{7kp@r!<$Uk`QMh;Aa1H?4gvL6iE(yN68_ovPM)%vcw%^z=vAD9dhL)*XxD z9&_YwSC%g0Jp%-;;!fQnYBCN(<`u88Fn-3QwP29*_kk&n$f@k)ThveCD3Hz$5U63+>gwQSjX#0#?HZHOX}-IfV1_(xC6>f;G?QxMv|+vu)UI)N2ea%El4LsxY~6U@ z6vu3xEad2%95seH#7ulu%Mi$dCfjl)BxF~9^I)Zb|3}4y^JmLmuJH3G#-Q}~_UefQ zF7R<6Yv(eHs!td0eVBupVdE4rNf;S~PxW*(=9;;ARf66?BP5jCN;bz!eR#$;(Hz8a zI!>$OTmca^a6-KrRe=6t&qzmUz{&@ry^dRkQZD1g5dHxs&1AhaCN9M>j=p{EUDgD# z>2_K82{YkE%)I0gY zK>brmrwC;>yzE_jmgIDBUUHDbYlHxdY^D;kR&sc z0U*V|Seg6!)m0Q7YTa>ZC~tQ^lQwr{7#DZ-N0EKDLd7$C0Xp9&rmLczb_Xi;$AI(f z+Z6*>yo!KWyBX!`GjffBCjGnNv^4DJq`R}r7v7Rl`keby-D7j#HM(ZHuqNv>4@8@s zhtqiK#3CR{DZwDbTME_ClryN?| znZmB8qj-lLHx$`OAG456M3>SXoftgS(@(>G?QPGK7tJH6AD5TZXgaf&;Fh9-d4kj2 z7Q&{ZJN=;=!jxb{q&U_A$h%S=cyIrwB`b1Zib_u+h1nM`U`3PUYM$ngzRRz^4)E^_ zdRYlMR;yt8NV<46va%6c&q1nmV_W%>#ilvsL%;JuTa=Qc!$I4MU>nIXU^@GSn&mdD z;Wlfc6LrGdpQJ&WtwGvB@*OFIIr{|{B6~7Pg&Jx;tj~pf+uSI88DfbNjjgrVIhs;k-v%nIYUrnV;+j46Ma#9r4v&*{5zLXA zJ+fm8qYb_mMLvg$O>=GTdYiz!5>OO-(hkOJU& zpO|fAilmGhG{$t-=p(>fYThqq|ia6S+Lj`cLml z+X~xW_!3Y+VOfgW!F_^!Tl--#bGi!O$cDOaHNQ~S=JIP7>ssbg)E5?cCD3n+Txr<0 zHm(jP>||s?KCkrFVm|}oy933N8b}qrWu$!=>W?<&iHBs1YSp`vM~D`TBHbNsx?XG` zGgpd-yE_2rwFc7iN|^}QM6Np@{VQeJ)efuEyF=FRIT7^0I!DW>O~9F!iK}@L zJzLu;ts#45YO3*Z(?FT`$pEckn@(`-Vl6cOIlC zq)D+-GlYhO!NZiK{6xBwKYV@(( z2go|PnAfV@bdvnD)mhf{a4 zXuRl#m1#*_W2BgTY|}g0xdC*7htweS9>MU#dfGkRrG@#y9#EdURzH<)Gf(z`5JQ7q z3%@$_yu$Zo>$!+}ot1nCf6>BQ*M=%=Lk5-#F%u_aV={mfG{T?Do6TZJW&4u2Z{RW% zF7We!zbZfeu!xRt{OHRC;qrkhS`}XA;6eF=9YPCg3PIM(^pJzj$7y)ibu5jZ*zA<( zr(VuE-^Z9hi^i7cG^HNcr8@i6PBXdryy$HjYi>sT>?r)@;~)b8)bgKK#=haB4cc}@ zcO$XX>6(HZlh-OFK_@7?{j{TFi7hsLx{pG*ui zO8uRx2i0I{UX}6phtLGg(&s3yMbFRmR-bic-z7<-YqW7SdJ@Wp4?D=pKED`+WoHPh zE-WY#DJ$yr{U+F5-I;E{FW6O(g4m>Gx`S`kuvpTOU}whhh#GhIT*4XMAq8xg0_sou|H6tN6vlx6}IHmBy{!141f99 zi6Zwa>?sfFbQ!@W+1Ww-&Hkh6u}}T%dx`FmxgH7XuNzh{1aQP(7Qd&ZU&Z}{;V-;J z@_qS)D(w)s=5}B>%K@0#;Z3#aFLea1;}ZDf@e7VaYk#h#ZFFje^#U3Y-MG}@D>Q_O z$_?&2)5NU^%>}8(GNbo%iV%wqSQr98YC(S@0}_a1&sOZWEbF%_ql=^D_czpOL2M#5 zCQd`ENHjjW-*=?b>5}g1gqqOr{&-FC4U)UT8uX0q7G53TfXW>G01rGzG5dElK}EGH zm&7h14Swuca|B!X<368M*;yEHU4A+6${iRJR{T!a@*qs@-k5~@ZT8y55E zdyMK+-h}=5%U$^O{rFMDx)x5)qwlYl2^5trol()}h#Y=DNY5KhLDlcjFEMb3G<{nG z*-kJ-vs$nVnR3;ZMK?+&t;aF3V<0anHxo0p!J#tu!QI!fSM>A@BHTkQc^eu|{FCB$ zyR~q$cLyQKouyCT1DnthGHTz$@^l+J%-wQ6DUIIw^fVeC23%FKef*2Ii%} z+m`I+Sox-#*8ppZ&f?P7iPtuP3vWM=zE?xEc?AA1E+#f;ejW_JneP7J+3rxJEQ)8- zYD%GB4iMTr*>krOjxWsLhy}emKdp#H-++j1hZ&@DQ(2w~?i^zn01GeVGAQO6QE)C(HyNeb#_TBn$hPVcKsHY?f5K8>j`Snmm(G_{}!hGzd>r>ir|V1UR{%aIhp?d6=>yLig?4Xr^n#H z>aP)AuioOnC3{q_p4^4f#dWEFbY_VT>O(6$Ex!CyiT74K_ltS6=DMlULhMcC^#$=C zd5{lKl)Xic|ItdaNTp=_{7L)WvDzDAJT{&p$UrUhLD$QRzxBtq*FqQiwUe2SD8*OC zXBDig6Kdk0unRMkwA;u8-w$$evqg|l*;))zgiR+dpW06V2mbD8s8^wB9rL4I=xbxeWjRtkHRb>7O0lK)nflE{QD*zj5`iz z!~O?*v*t}w|bpBb5nLJ$t~fc?J&u-1PEip1NMr%4Tqdj`#*BzoQcAul1QmER}Pe(HRZ=W`vfWo z-J0%?nS{D`cIp>yJrh}i>&${uRU;Gh1vfP5cZ*S~EZgi8$pBEHq0kNj_Q1)>+Et3j z@uD*KQQD+M{Z1K^NXLFyG*8^{(@Sk=xd+8%RBedzHm1`N6W;iy=%O7~4ugOhcQGWt(ICbbjVq@*bt4G=o>MFF#*`G$D(1mCpMC+p& z`u<);b@RU@`6ezCHJPV#@oxL!Wpu{oW3rKEQ}rULdaXZHP!rL-|A1PRf@C$dzDooz@@Va2(Bro2@g}o}ESXDBB3ESd)y&{2g4~euFO>cW?w- z;igynZ4F+E1vQNmjf%@7kfH}M(981`K8jopDIB_LeE7vn0A!%aSohzD%D5G~X?=+9g|rv2yHpr__itlOV`3lZ4lcsLvBGP3|Me zFc-xOEoD=gM_XVajOQ`dwC8c|8-&*Pfvf9x(DpTo=ReCPXPcpoB$5bB^}C5gjJF8* z>pPl69;K}<6Lc>MjcyRw?Y4|yEk=8v(W43s5ZUbPpGfuV?Gc@qS^;hY-7jNhZ#cD? zG3o%-$tKjB}q_S0y9q87Q%yD&jQ)Pr{@>7GdAPh9+@oXHuC~R)7?YMC7Q~bHKU}9+6Ri!jVHblZdBTH&nBsx zyn|=RYi_zJb9=6V93?)uLJp&tJqy4&BM?x!M+_qlBeyXi9q`6CtP z6_4!3Hj2~p4(d_L3P*&&Xaid4V^|-0z6;S=DUCTRsb;69K6;kOU|Mb9Pe2G#HdE*? zBFsK^9rgO5yXNSra-FUdwbQ%dUAM!c&VeNTYGYEs4Lv+LJLN!tirf3+)b+Lhd5l$A zKRDubx>!A`pf65AVZlkLS&#--BI0WbnCzg`KDo4qE7HM>i^X6=A`Z<%UCDFu%_atl zt(7OF;ElD8OhXP*z<^LnJ}pU_Q1XPGm0|}? z$-8jK;tv)(C73Yo72h&dqbbI)E6^2NKWP==`~4|G0j)YGwusvSa^u<)=atB4%t89P zIV@MJ5)Uu6Z8Lmo={*t2p;HXb38qvAIfMwMXla3pp?Q7ZKxzCT0vF%eK~^;Qp{XK( zfl3vIonS)N=%ViNb4&&&I10w8@uJ&-AraT)VL{-~Rx`I>=+wJw*35EOX7faJ1UG#K z&{($KfQl)m1rH#7Oap^LgYZsWDOUfufJomXk7Xm`8;IdodD7JpReeTHV?lA8rnl~y zAjfxw`gwvabvB)g#`MwjNL!Ro`Z>*M1wu@<-~a`rvhw<0QvD033Gw>OD0c<8cteGi zQHcUcN8~gc^?tKx;RVd#;hr+%h?eayyN84&J@i;j?dr=}mCEsaB%KXfJ?EPRhtE~3 z##7HJ6h|$s2|B-3Y8@>q-gS`|Z`kK>YFIC#del*XdT~T9MQu(~0lo|aJ?I}6Z0M2IEa%Fh)%MyxL1-ZzNO|YkjI2U)) zi}y2ZRVBd!07d=cjyc@~*mfOc?)LulB<_x}by<=SvYS=f5XN1T-aT6(b zkX(H8dhxquIO7`o>cZ}eDD04*^OwGtmO!TWL*$DOokET;2HDEqDW>g(Dn@zS&kiOxj|gr&Ep(Gt<@gKGQ)1B5tZVrJurzExtB~!wIp%#VWb12oghzz-|w% zWo9(k>9huq$JHU%iwdBwA2Fd_s#m$9v1nTZTU<*5D!)Oq;h2(l zN?(Bp0}#F?cB!mz%F;&OclFE7HzSV5&Mu8_XCFh6}@KG+K^`t7|vd!1BU+hvKJdEq3qPb!rfJCDU*ChaA8Xt&4NeL^>~8D z0A(#rrncFwTClas7GCzqVr;k${qeM>L3+%QhzHEPdoC*^HVyF>df_B*aaJ|fqtsPU zPT`=ZkG4KW7pG#%6naJCqHL^7S&}kV+)=Msw?@YN<>TpZyAxc2W8bNp^Q+ zffnZW-b)oKFe@`Jr|JBy*urq^ui>^1Bgj89jEI#g2_%tb^2&gP+HGoB(4+lU`@Vu| zf^r7>FRFWr^R?m>v%{_s8AWlx@kfSJDO%Qm$2?SlSpBZ?OyD3--@U$aBFTeuU&*72 zMql+xTtd^wOBgo?B`$6ypm}&@{~1gWsE1fbU(g*XH27H5-iEfY^yvTM>>cAXd75zH z&BoqrY}0rd+th2)pf=FG};7w z5-%({97Mymt>2M;aH!zohl~Jfu-JO~rst=L_&6y&;85N=#m;CCbgs|Ej$Tm~Ve|Pc ze$Eti!4r{7p6=T`qCc3a!c1*6QCy>G1Ep!|X`J;Ft!T5SS}1ikWxr~a_s=zA>i?X` zi;J6v$Jp%c3|4}TWa=JPEHPzLVXbPJSMSU7oClQdfC?@Gu8dtfYv*jaAxG6asR{$&I011a5k% z&8gFYZj+FpFC^MbpA$Jb`GKU3V>3Vut5P<$mf{c(sdv3;yeA}RIZ<3m+fXg+y|Pn% zF_$_*z0nG1VsRK^*Vdz;FBB0xzR>J6I5{HdrJ_Vgi%ol=6%CuHz&)$^T1k{^j(*u$ z0QSZyOwM-GAmuyeXtzQE$xSXu#YviQOi*fN`_=6w;{<8;yjP{{Ek4kUU|@e19dm-B ziqW&?BpE3Qp!4ttT=(DK$mLMHZuuoaS+t!*Sbgv2)33~kQ_LB!Am;)2h_$L4-#@4= zSGJSujCdu!bEY?~V$^P}0>@V$_;xUH=6td@R+w4~HJno6S<8%g(Z7xC%~?N->t6AA zRl76)yLte)ZgXFGI%A^75Z2=6SOur_5ORVW$VBmuV~mQhmntmJF@8E$|GvlVU|YC$ z2Wv3fFWM7TswiBA8EElQ+mYJ|wC2UJ!cu{vH>7lg!}0Q$;^z2#IYef|U<*P>aPgbD zZq)oE>LFGL1Nq7*e!5)9GFi9;N;4stT=3?vx5n3G4~eaOcPZpwtqAd zVxtIHbc}|aOb4%PUa$yQgY>GgtH!btFVP<~10 z;dA-|;4y*$zu+O+r7$bOV0|4a(BMAH|mgPl2$h-XkCXix}C-9yBJNPHGfuN3l z+Sl{Hb7SnR)|S=4>-FsR+~Yz6{Lp8K=aU;aipKF_bK%u)G)5@|2RiDzFu3106Yn{m zK~MO4S(aZRIGj-jcrf6+0N6m*`H$VdOINIRI_1ADcTa%w6_t|Xd%q}l@l1hOKE&P# zKf`|uJQJn_HlQSUMdp{57L&1?4(jm9Vf&t61S%&FkEEXa7&U|vt}>`$HIZYz(czG-ONMVv4;Hm&rh9L2K=@^XH4 z*oaa$vk|+2wJLR7~lC;r5Yapwq~^MkPc#x$~}(XJ(<3sv3NSa zwNIgbt?H!FsN|bCYi(fobeZD93aexo@L7?Z2!DN;T)&v=%IHkks%W^NX>~HcH8}%` zBQ7JRhMHXs(m+t!P5zuO0SXDxJ7-@Pt%Z3Q4>SvpfDruyK^@5JIs)Kj&-;Pha*XC1 zsL%0RJC?~eF$6+K6k*W2%@5O}Z>m29qGob547SL74$M%q=GqRe= z*R(BR-nTpsr3T%YVs?(BLNjwfd7`i9Zn3d@Z8aj$@tQ>Jy0W$wY3?@}xKkh2VvrVjIH1!?U0Xkn zc*U!pAxmKb=TlRPdx!kKtUnEm2F)BTRD0-BURQE zZ31-9``f4n$yHCmyORKGsHwJa{JROd1Dz@zIYNwU=T^szaz>VN>4LFqX0^>+2kNWH zpj`#2X?B210SDJ864EcXm~urAdv?Pv zMmN!^iqhwMdW!~K@k5QVW!3{YFs5Z*cuJY7@bYGkYBVG&yO=C8kOr{UoAiq_+ytC? zvP(-njJde-Ee%+_MD#YPzI#;r99yN?uyydu2EMJmu6CA5lxB>h^bX1GR3!=i>@q86 zZ#Ry7VdR6&;}{}KXUpDrS+|^0R}jOS3hB_ytn6gJkc~zGfJ?`YDuydtkWmgIy`x*C z;P^%423}r_zDgzM0%<0R1#9l`z9nIyn#fLnX+Oel{+|?wZK3PKFu{e@z7Oxq1&{mY z@P=+7qDIt;@eLFe3#sSIZR~0+8m-64ol*%myH1?<^v41ZEJqfyLl{swVzzblQ>URB zzS&Knu+g-(k)W=kFhrnXYEV-ry{Y<8c+Aiacm0dJGn=t|r7UN;CLOn=^$wS-`2mbW zYvu*OqE3wp4`>2Es_-8(0`oNWrJQwnqQtK3gYJK9s3qf9UJTrWY#g5LT&Zr1YCbvkkDpBJ64%@2fxfvdH zYQ3=LLGy-2RM}Cbn;eNAdCLah$3aMw4ws~>?NA8{(sr6}kaaI0xjtUZuv#HaTen&@ z6^ju_ce_`%9O_WjTU}3gsqcv@ zuOXI}1_hRSiDp;G^(K8EHPIFJAdbj(hA#m%_}Q>T&~RkO&3eF%n*4TlF3fKt;}$lu zIH%ph>FrcSFR-vT7x@!!>zqC`?C$mqyhIrNFxwZ9lQO$sGNy7i&o@r+Nlf{>;3{_? zqHOtISB$c*NuKy4Piy1d(sIzH#px^SG0%k*g+H9!5_;*Q8 zH&)}b(4U0!cHS=EGi~)0JSN*#;%1$+NmlHNMp7j7GJ|h^wf!m)Y9wVTVI7~f8rqQR z@ldq3MLre+P4xA5P`_tH8D$4Eys=ZhrPvqwX4rc7z9<&$WTULxoJ_Et&pCe(XnKiO z6B>$x#$`=CVxY%lHBC(|IXYTGxf=rr&j}5(qp%Djs&0`c z$~CTYTbbgq>Bfb{`u7S_IQU#2PGa?Taj8vaEMy=fGZ|UfIwVfpV;9>p-$-idy+FTP zSV$2rt}fn8h2AxT2(%Lrq_QDx>wG#orByZyfo!T_g5C#It60}# zS3M@T)u0=aIcJ28eX6-E8Y!6Tw%Hq|11ixso!GJV2170SCyn-WB=fkjZ({%&`EH>) zW%rr+mn66%SEx72#f+<(jYQ@$q_niScA_;-cDwxAcB(>k!q?C8{MZvExiLy;$y??j zSRD-#dS`>`BKD)cn5``^xsT1A6qMHhql)4q_I^sv9YoFFoRSU)F!uV}!LemwZq-9L zJVe16<+=iSy<2pvtG?N@C&{-bBVpR)MfuKbOJHV6FlHHO$bjWWLcYZ_MJ-w#Y*I&o zq6>pVwsR~EzhPoqRkw8=7AF(x?|Ebv3sR0#uC0EASno;4Q_d|Ai7_pW;vvVR&Z6c1 zhBpCiY+PpRN+jPU=iC(?Mdar->LVGLph|T2s*W)Y^@uD=n8@K0DYY@PY%(=VOhqKJ zG>t_}kM%e*pF7&^OE0%*KzehmOdZd+DAR7sl-ih*G=QJ#5!4i z(RP?S2Ci~gQmPjt*bM9|`;eEU38PSpb?IG|jyWOFP~jkFhp?PKlt`>uLV>Gvi%o)Z zXN(z4Yd&7r06##$zs=e8!B6tzAeq!jYBY^JCB$=Z|K67s;vWgBBC&C zJg!9BV*p~cTgZC07eHZfJf=`93%)g(2q_?7+N2t^&}uCXK?pK%vMFDwFx})Bq9Q}l zHmT36&_2okT3x)5K`A&xJcq7uMW!}wci5pMtpOEcT`ooOV>+El5eQdn)paLa@;EVv zBCLaH8m{Q1Cr-a+;QpevFDs2XRH0jaV25H^raO8zV;I8ea*j0tiuI93dBb~8?Fc*) z1BrdQ*CsL%{{mq{m9d$Z(mOjTbCc$Z3KJDHd46pTvEcfn6|_4&P|OevDlabcH9I!I z>DE?epN{2G6t12Or0$0Uzk88>#R|4`E{}y5=Ml@~Zrt zw}RHV)|T`wuhqHe0NP7OOfgCE>bZ55iLge&qS(G5vpYwRHL<7&(qYBU=Uu>VSJzbz zvrk*v{AKwvXn@TM2A0TH1X9?AH&y`bi3mV1TnzEJ3c~5IqBu3by9Hsym_$$;hvl_! z=P!=l1wlvOp!kl@_g_M@4*|}m+9?WvLfVLYwiQV_r%=|*R=3`lSEFK{GeB3=eTMd;Uf*5PQ4e5%2_M59ZvL1szwmCod`ZF#>l zT+*Z{{cuR$y9Txvw4}1uBTEnecyHb~Dg_;8-)i0uRz#Pp_;FTdxv@UiJJpa0z=g}M zc!`{g(<-b@2zZ>I=1R7Vk0;{9ZBi1OD1%I;v}efD)J;?u(9IWyiH^K}dUUyumdYOz zDc)MjljN|LrWm?iXCJQ@FGYAyQ2pvv{kK*yJbA^%8S^cu^-H0ZgQax!-XD9}D%O9(MHth0}58jr)CcTdZXS!i1=} zKsI2+Oq*INe3pG+^9ieYBH4blx5Xn;OPL8!pp$<;t#-41PA(l5rH}=;#VzM#>G(so zypgP7X}BwF`jE{#n*gJZApi_34c8_NYWJlW*+C#=6n=XWKQl)-IC6)O>iELFpQZkD z^*0M93Jsyyw?pYzLvf<=G18V_&c72`Hf^TEp>q*bzIk*h;n)mQHpS7hZzHW z?XMMVT{O=$vWnd8xg;&&s^>gaoPT?((2^FO(L2bqIY0cFXqW`#yPJa>@d4PjPPon` z-0<|~jqkSBz-p-(@@7ncqKREABXVXgc`H8%qWH{v44Ia2(e-qMGK7X%OF0BRYLZOf zIL#*S6$h7B-B%}Vq<7oi!jzuik1xhBo6{N1$0e?LsFcw;nI ztzlM3PCXj@0yvbYU4`49G-4L|JHu*JqcJjG)^7u`z5vYtrWd@o7tvLH1095o3wWwc zF7{>HD^|Tc0V!1LM+^m{=*JJo%rZClyzY5`s-yMMUnV!_q8-+r^c4xe4&IBa{gT`c zr$09O-OC!Oa^>iz>GogGxtcb*mxGxWk1P<|)_I9Wj~iX$9*OlA9zz&7_|d+--BSQsHj>h$6BD^R`->FOO1LB$>8B z3Jun$JU~K(c}C)AJ7fcjf7zbe0T0f5BYnmfibUs@?iGE5oD-S+p=SC$C{;vH8!!zf zwawlI))z@Kupu{`ONpv3Ri~N`-kE}>PbOGBe*Y@)ldfvp>on2ZO8?xk4moV+IMT*W zDvf4?9gst?&%PZR7;CF`KU=zUIB6-%Lf$XY>jZ39XZD$ZFz#&p`e^+*;cUM#-i0_* zLtntZcw=vQ`SE%^5L5P zXAhQFf&1;cI&lhC5TR}>cGE}SZFdW9OpbXhsk#4bC`nmeac&2q*jVSaJ`Xr<5)veY z>r(J_Eye@HBDr;0=zQc`6T&mth4qC-bE85%T=~eLb$i_GLT|vuE-ZX(ECa9|x`%KjwRveQ9|E909N)?tt_30WXUe69v6@o zq1>wuxsbnim1MN@K+tS-{O}ZqaOuL6+8G}nw?h4ZgI+#02T^unnnQ z>9oVoAR~@_j-&L9ScDNGjm4#xSnssP`gjMjXt^f3fkg;(T>?U1N5y^?yKf&8i&xlT z-G{^pqI3t%!dGpOtBgfg4cUhq^|Qd25eM!Ic8Vt(PKSxw5opxUunU@A5A+muw-eNQ zA5MPU`+6eNe$|M@m_=aZ0ctpH7PtPz?|$? zt7vVu#40bi!}Hq`dAr>Xl3y1pIBA3tmUjN;e@@+En$V)|56Lo&ZNY?*$C$QH;T}3} z<{?BOW4gDzGDIWp$BF3*iiv~lnSNmOlfBh|OYU_FS9uG2L|NZh563(|GEe5Q+VHBW zJ6&QiE%7`2_F?UI)As`lVKv}AskhS`$*xv7;85YFOd58v1G+9&E_%4knP&w!#uESG zNV4u6c3)=I-a`ZzF?coOVM07VnUO6x}v6E55Ms>o~v*AUC~c^_Y$4gh`kMuY;k z;TBD{W{P-fg}ahl99`7yc(Rqr@hg1j6WOS9McbJGUjeIv7=6$bz|#iZ6Nb|2+W;2& zjN@k*n)iCYrTiH`4BUBSR>{OB1ZcJp5uG^w1J^qZ^qm39fb9!Mh=08n$mSz`{maq# zK4`jN7(?Qi+70a8?PVXkCqhWMc@oJcWcR|i-A$d7ia_=8BGgTZS>yZMGa)axw1!ke z!9xH<#L;cN!$Da|6mdgkOCWIy0WPD2Mn9UUu^(cnur;BcETif_H!?X`g;2UO9(#A;m@GnSHi>>`z`8U^BOkO*t7Q=uX7!S56#4f1UmFHutDz=&zn)A?7lu_at$n1_T=Gcw4? zyYbTiKcYnD5BlYbR=68EiWBtNSdIPj7fw<6xqrdiNzD_OCW#VczX6v_z3ad1>m9Vc zPS;#{w!v5FYyP(7NVk0F+dX#q`bj5redQv z;1xYSb^xL3cK#Y*y=rt0olD+;-p`2?JrKc1Q-0a%Ut``XZFe`j$=M|BAtRcLFs8@4~SL}&kc2x*m zDmc96ZFOBW(~>HM(nx@|M{@y; zphs6@NC)f_`Cd4pSMT zQ79!INp^DpGkv?Vla(*bE0o+!#*Rr&&vil4eAPbMOiV%Mv$zLk7eGBTtG15Ovo5Gv z6*Gp$PV~34{TMtMtF6b9n7UzKnT%yvsTo~=)YaP%`V*Bb0R5+d?HFT0L3a`QI;#j` z%CkSPjr2YB;Wzb%s_KE=`%?A(L@|m4cT;wM^!S#CI+NTcOT3CGD z-OFoBXi3R=$mFE-7}w$eBE~H$_W$kmOtVUMHiFAipWn;Sd5W`I!e<=>Pe!tbI$oLT zwEtrbPfLFE3Qa&0O&WNl_JBwb-&3W@_=Rl7P3LYx_)B`{CFoUsb_KB z`gBI}^ODQd^b7~ajJm}G)fyZ$MOrX@bA7f`{_*^^z;o$gPofv+XWbj3-F6=_MVXhD z@-)xKYW17cXl8HE%cH-PigG&S$**xhec&3v=I@zO^gbD|R9!)UQ?(iQm84!Ukf)o- zA5_g%A0FG4X^=EiGohhH`(XIqMW&UZ&x}Z8-U>69;nv#w52K}xz$>O*FX;dlj$L|6 zTa~*z4xFc_@!S!>gg=nAFU>SZG)I73*W!OOu6{4oawU6n5jcj`+y0YO{|zXwtv)39 zKVZ1+%Xf9qKswH@$CpF-?eZlMb%9tCTsS4S(|+Ghfb*k%@&6`)(R#o4FhVvvk1;gA zqDWv2IqPzc_qe$@o0upNz%G(<=JsPoMW#1 z6T*={k2H*&Z<`o1xI+?BNSTpx9AkPgUP&50EO2NH<1pm3FgHfJO4S+xDL#j$N8!dn z)i`TWZuSs-1N(RHNEl>9B(!yMGOcYu=Vosq3)u=j9yxHSKZCypy;j7rZ1$#!8HpTA zU;18Z8vcNNVa4ZRLAie!!VaqsX%!6b8YeG6BMLm1bDVDvOg`xtxu6ctOAFjIt<4tN zV;~XP1{&T=LA%d{=)ZQLf*0Y$m~m2^^}Ba*GAhyC;Ey6bd75zYHzDdwlz2a%`5rq6 zPw`aV(3PCZSzdAhZD7p2d7Sz?S+jpB*&qrLv!;AkT9hHJzHXx^wOPhZYQK3to)oGI zCc!-xUl)XtKfot4dh5$Z1|mZx%BByG3dvH_7Rgf(h{$X~l+hq%`R^!}-aB~wuRn?@ zu7r*zE`-ZX5Q9H}?mnxA^R_e$#A#hs8JIuFO)+4bWEA};_o$<)b#lGcYyr(r4^02A zGvc*hkb3GyNu;KRPM+S6VzG3P0R-hvYu5rYL>Wg|6<7=s$$P=V)L5Z`_7VTpx zCkQP$R$LHhr-9yN{zMCtn*y7A7;uZZf>}D`i;#SLPMa2u1YcWtoV=bEK<8@uYE>t(wYB9~+ zuGz#?i1e1G6HF;xcqMV?fRJ+cdwR?5vOeJBMD~fym5B5X4)uIFe$z10e|0;liQ({_ z0pFje^Xz*={K4(Y{w&tJ*l6u(v8Gq zoE^Oy9q=n8c*o+BoN&s8D=s^5t7!?9|M)yBQ=xx0?pE#Rg8gaSGO03UA3_0Q?o@w0 z@e>>t11OMi|o!?}dtdke+Se74wf0Ut=!^n`n0=a%-G$>Zf zG%dS7OKk)x6g)!SVQ7`D^w!wzd0m!7cDU8ohacaE{`AP?{w(My)zWZ$zCiEm^0(Fr zC&((r%Vk|FSRms_>+BQ^*!qaO-{p);Wru3MzBwz!T2RaNKAB5J=*TxR!k?C81zY$` zCkv#{VOklp8tVSlMq2n~nR$mbt6G1aQS2d45`zDJMipw&E14@FN`Yh<@LhB64~8s0~$t7ave;M<3+vr0GVZK1*C)POj#>0fK9H zK6cqG;*o$TmPmBIl*1hS9dRVx#-$-)I!(@&i}ev>4x5eN7C4tr`<{gwVfR9)u25z! zYaAPCL#S3Djb9)=xJEpMfw4g%vWS#BNtm7Gf!lLdd4)FfJrfXZ3Nwk~dYCEJR@zx? z6`_KRFWY+wXE_BCPG^E%V2gQuYe^bTH)t0+e6Bf@Wi?G}Kf|in!ICE%!7_h5PcU*Ouy0Z!}iS3`8Js;N9y-ex6 zLeG8J?pXM2d0HxQEnoMYs~6K#M~8sd*Z8ZBu_LRrP+#M?^o<8?+iRW#9QYh^6#*nZ z%Q}LVaCJ|zIqx#*9f&&Pb4>CtI*ZAvsopF53WtIHG=y&NXY4&1zCwSeV%T@u zul72DtX$Q&cK!q+A~A~4qyEfmK3T2ZQc-qRs`V3sO-nd;OSiI4A{#I>-aMT8Xc<`eCPP!(>v#1-ZD_r(RhA%Es4BvSohL}gn4+3@(SVvHGy4((aw8`&xHo{z9u z{Yc(G%}_@QzHKNVOA#kzkkZzlmhvzVu8}kd1@Spi{=V119mLF)Y19}&U!%J1mx)R_ zRuG|E5o)Yy5LA;s&qUg~k^H5{B}<7`YMll8>hsi=OABt~j&RLRaD7>Ot*&LFnXlAT zi-Z74dZ>3`Eaf<1WjH925hD2A6w`QGOLKIWOG$6#mL7mB(m{g~CYjlYNcB(SjtX1t z3FqaOYsr^S83{?-;Llas@a!W68YmSl75SMUOvroU)uo-OS8AKgCOI2$>4-ct47MrM zsvh~JVtPQQGZ1HjPdZw{z*LC|bENMPZ75c1d+yf*n~l}V&NxS7@~&j+jE>W7c_3$` zE}QhW4GYHvaos>P+SH|=2v%zCy>LBO6dI@{J%dTAsISu9F2Qs1JRs`Ba{DGbsE%D7 zuqWcx_aN&%yl_GN>)g8$k&zJ|-u=%IO4hZC&R-!zdOA9z(s}Dki&r{2vq;WfA(u(z zJp?dH?f&K708+SwGV1(?)~jOquHcV*V>?{Ttt(Z;qj0*EU3a&)B567t0EUjRuM5XZ zPSyoSXz_B%u1B`={kVdADazmx5h%I3og+Ct9W@!?wUReT8whd^#qbKa!{)414(OZE zV3>w4B-TVOAoxf7chF5hn(i%4oz^4O0jqT0STm^*8z$PNse$IDseY#qRs|6dercwO?2)Tg0Dq&mf9YpM5 z@U}ZXD8Tg|Ja=Tc8;t#*tk1pTJ22f>9dsmVw&x-Un1fHJ`+|b9RYC|%P9s1Q*@3rU zSLmRT&P7aBm{T!4-Fqvsyd0+h7uE`6gs;AhLI@285^xvDb$nNoRK%zV6cwB%$vl%= zNI}9Q)fKXIj-v1rO%DXBaE(nn`$9sj33< zMn&L%g(Q1S;U_Ix*Qx@l%yIPUo_Y7jKxo*9tZ5p`%6f&|L72OsRtA27v@HckRf)}i zg=8fu(vVPT>5P(@dIz?FD5(r0TFl6EG@umaanPEQvI&xtZm*%bMHu9dE@b(#d=6>k zqa;&3YTKNny>~=SVa+Jb$=G$0Qd07Rn{(?V$quz4l-eO;x=Ig5I z5Jp5`fU8GT9khN_l4edIZvmIGr_9eF|U{(nQ>NIKo!bPgk zpgtqmh~EV+sMdKjnq!9L9IXyVuT$o{TlJ_!uSY8kPwchl!iGjR=V%u@giP=>JnTSj zibi&pJaby1Xnzjb%%lijtxku#RJCC~Ue(}M?IaElW2q0t75OQ1BuQPu>2?+AVhZyI zs=tr2vQyw8|3I;86UGM}*KSct6&iC>)Oz&vUr_yY@8{Z0{inp`1Kb~q?0NpGxQ(zW zYPgn^P^uQ%>-0=QfolkTe;UKUXKYWs?39ayh4HGU2cAY0?a35{_vpfZrgYh;^ z*jgOr&>o%{g7(Kp5xSAoOTNtDT~9@X+vY5b)p8YX@=~VM0+s3T#1E>Nh|{9lwGX9d zf&V3=`wvk6|69fPZz{V#gme#Is%pz2i-Lb};{E~Z5B@q;hHh(S&u94uhClBwP(SpS zHvVhABJ-Z&*IbCdka6d#%zFu^0c#-tkmcq71(myZ_zTou_%ERTXtk&9hGO)UMq`CW zHq?^_>pw(!e@Fx#zLseHnu+-}v*By0eK(`^j;3<=%d*v;bLc;neSi=bp&b7y>1xz$ z`01BJ^X-x-+%<^4c;418DW1s_SgETXKiN-Xvt=ZHc%zTjM`7dGp z(h+@0#t}$!_*b8E2HF<=A6)&>ufD;TPWH^?;mT?WnJI z;+F*eh4BAVA4r*nzIQPDwcMB79z75<-|jnlo>{JdtaPArCrZm6i-=*2w@6kbAs)Mz zTbUNjM5(WOO9tEP<9RCwJ9JEKRzIx>wq&+o?doebBF))Q`9_Iea*pJU?=lO`g~py{_kZXtf_6Y_r(>jB`qZn#sHQ z?Cjup%HpMdo=LLEh#tSJ7YFDiIi|SqLYjSC+12uRd{0*l(7d^2>PWrZcTmyO=voSH z(J$8GEWJ!x?1zmkrIYo%46oeeUNBtLtu&?Qm{@^QNlg!JFBw0gF}(%M0 z4SxiQFA`p8*N6Aw*;Gk&EL|>pl>S(-4eD?)Y$tylK^&N}Xehb29L(@N(Ddh>H*w#R zJZpC>thbYPNGb2AwPFvKrB(KDv;eUxU#^#IF>%7mwN$2-Y8hVr>K${9BrRx!COzb( zA~?vAHnK}Luh^`VTYgJ+LWFoqw~ac>jqg zov9@d=T(qm+$_1@{6N?!>D?gn0h}r7nUh${#`&0mKV%=OG-C%|6MiE`n%s`Ke-E+Q zaQMNjnj`pm4^iQ@^sNR_y)nq8Kb1=!iNam@@Gh9@NcKl1n`1vRcgdUZ2V)Yp z%Z#@AHA54IM@x>h!`7_@|8E#W(vDYV=pTfVaD*>UZP|KlQUpY8%1f&y1e5CbM^e`N zIBHK0CZP=cb_xI`nEJ%6B#lv}%0X8iM;Gw+gV!BWa%;~%R(vnCHJ$T8#XRBOw>bUS zYRL_h+)VJdxEn(DbwB%v$lfETi{=W0t>)KE0sm+Edm{;7;F_@5OcCGt4Hj<>0bc3#F>l--;;l43FuE7W*kCie;O zL^7I7bUt?P#SmGQki!_d`5`yw&EMI4{2QOjy%Rbiji8hH7~N#j2Dhmu)t6B=sgiWu zmit?Gju7ZC!slj?7zfN?>(TBsI}-O)_-${sr3-#uPME-zob%tza+pnFqf+7Jl^d0u?v$gJxZb-U=R6_ClHdAce^z7$PiW^fai?(lE`nXWM-z@FHZ7QPzlht zxi*m#RqppXv{0e7bq!T|FwUeJ)d4lj7Aa#FdaseO%a6!b{1!2QmRZQp98aQrW7WCN z*bU;%&z)bFuEv(^x)yTZ*gRS6Um?CrZc}hqPUzpsER0R^@KGm~7YY(?OVB=7Z@v~2 zo5A`Ka56K9__~8jlT!XhkGDF9lIFswL`z+fs-e-0QeGR|De7Dd) zaoZl^sug7SE&kc|9r|wcP_ymb%JZR>FX4&)vL=ksZr4lC3p1+Gt5>}*`0W5J=4a}L z2*zsicB8&Mywl!Evma}~5gZ4sv7%bQ@t}-Ho*`=Uy~P5b##u21I|QhF#ce z)@(gpNginWANhut22kj0tKQ-!O89eS&0wVlDa*9H>~iT(dpMTk>N58=e6hE@93Jb! z8$mx++r-oJhAfG0FWc!ecm-*v`S%Y;BWWxqd>r$ofb|Czf5c}}htp^@_!KFR-9m&g zI#7>dIC;Wq=H5iTOuzqO%>;EF)BQ;NFWkak)=YxGteJ@AFYxM0d0Pw?3XIV-TS+6_ za|I=_==?M`(pAAwj%n)ovea(t#7D7rWdFuA>veW~2n25HY8m#VJAW(({9`1i97);1`aZ5@Yp(ZMC+mXa$9Rc&Yn|`pPsXAU`u7JC zA@pA`Muk0-BXlD_dw*7DmxHW46iIlztq7UK_2sI>7s1eELYSyA)+zEmBULo!`Kf@o zO?_wui-XQga7pI|&h)@^aK7Lcd;ns18Y{X-enuR`q3M&)F)e+pJe|p4y*F4hi#-7m zQm11nS`Q*8wpqV1Qj%M4s=rP)KR{OV8s4LsyTVi+AzkMBH(aKeRa3McnZ#T(gsS&S zS?|qiV|fWxaa#sv>bKPk;HN0GrSExkj%}FzEHE;td~0BmtPo;B&v^sOO>{U~QA5a4 zNxr^xRgLWE!+zZKE+3~y^HV9leDY_ay=b&%{8UB|Op3ox?>=g$P%+?@fubP4XQ%EL;&e*t6Zo|o_%``t zp0~ye0xucyksIZH(gSvwe*@zN@AUBWsXUyWy=kY-m<@}HqLfmfrqy^gcFYW`d2Fw$ z45iTcK7VKr1z*x(P?j|yfo1kHsf7?IWk$TgI?WEWr_a_e%8#oip5(QvY)@NNW`viZzt|My!mK_g3bZABlBW z?twS&-;cWGT=59Q6PWBe$kY{M`7wK=>!*R4m9#!&%qVqK)g^pKM#3Qdz4FFF7?jgP zIZxgBR3zB!Liy0j)I&ve_bV|Im6R1vcq9&@2&q#Ll@)C~JuJX&Ys*+BIdEg)4z&T& zXxDm|=~NW-8Oy<_GRhh(dS@Q!qlf+8w{v!DdJN(bU7E{Kc9lGLR;q(i3nf})hqIV|qSig7bjrYJ@+4;_Rb=*H}M7Uj!V)akIG8 z2yU`#QMfKMi&Bakkz6zKnj+rV)~}r6T`o;hoC(;hc%lUJgw^%+EWoTTN@?rw{xHK{ zTzxX10pLQf;#ns*4godkfp~85yAj&iuK-c2rfPIwLT zV!!dn3?jLC$Y;IXbLccw5amqyvCQ321_#&kKAP3-THvwD;K+!?-EGux6u$v zYc2E8%+<4=vBlZ}Zz`p%xe@#G-}km;j!Xz1$F1S!HivWZ9ELavMyA-J6XUrBQsvVl zeDZm6TH5toU5{optP2#Hvs~SH+DWxS^ri9;pTcbT8vf2alru#%FroEIw?K~LQ@=BD zm`6Nq?c&XnnYNjiiNXvpLh@7*!hY=P_5odPd+e1bI5jq!L8p0bDFj=tJur!d&#+~T znVl(^x9a8>Rr7U7czZSK0KKdl!WUXiigu;L{SUkJQxQi)zz zap+p;waagoCXh|NTjrwu96w6hV4C4#Dp{?UZF0T<#d>y{Y=y4GiZf1GdH-=;4bxf* zUkPn4`WpYs%ju_svP+%ZCM)c(RbXi|se|G!G#soB9B=qoYmeOFL9RM+}Bwu{&<=Ck|?IBhVVn z2QQFySG!y2W3tO~bY_u&^Q4#E>}8=PUjx9B=RMcUY7z#0zhWtJt?rAME6v+WvWm%?g9KgI%!T@k*rvVRW$zlm`(E*3{#*}7jp&)t#;#|WyEG;PH-Dh<0i%9%uu=Rk zU$sQ9^pp9|AV?}_zg_|2B!)Q0l>o;?q6(yFCR~xi>QrHI9B;pn0*xCm^~;pQZE$BK z%K@WSZnahhGn3l9>*u{ChqSr(x96umXn5}LK@A^{ES>2*GGN06K@`BCyRjAEu6wg< zA1LN%V`-J-+MUU_tMS;Xz0gn9M3^$LL4jPgB7rOy_*UCVviSJ>UP2C8;R-7&8(0ft zt-4qkY%*rjo}+`muQm7iq57T4beBghS~13k77-2iP9avRf(QdL?YBtTui|~&ZLeJ- zUy2}$Aon(n=zpbaQ41dkr>7D>-RF&rcJot!jP_(_%CX~@_8LbT*z7&Fl0{AGyI3&6 z8cr-C*73kWa_V(7^LUP9=z2hJQ34O61QdtMf-=I{3T_no@jAHEKUS3bTqt<9>Snvm z17lM)T_G~tHV)@v$@<8G9r*aLpk=G7n*_+_mr0YBkw}QhhnK=c(4y2tzmOmnmzmlS z(tv90dGC}RxhNY}6nL~k2mEx8k&>UWLp)w292twJ7&k42p1^PwDm%c<{SbeCZNH9f zFQ034g()4JKd+w>96l0#Fs;GwyZbq2?D&%{`<125%@Y$UA(^~=6W>AJ93$QzT&YpW z=3S2gJ63bQ+}~A7wrIuS(N44SyYrO1i#W2wO{d0t=EY0%Z2L@EoR9{5#R$-P>2VV7 zH!bl(?TNu8h%$FsnM(y$Dje4&>v&Gk!`Es1rB{Us1vGBH)b}jco-lU}05i&icAZI= zMer64YMy6OB!ZQdZTQ8(+3oXJ6)Vrzl^-Rxmya>^QukR=V*tYL6PA%xf5)-FJ`pw9$WgCLE11R;*C=Uv3 z@>Uh?0?$XduEuDbV<`{Kr?Y&%V{U;zPhDrtT)I4k0XRTv3`^G=dWDxNUbB%0W@Rx` z4VrskPgvD%UBu987ftBf49a07Hy;WslaqGBp{-Jw*$&n#7TFPH+})=*oE>PJ+TQGK z`n5Vdu+=rMx9FWXwp**O{9~PYB0;e`civ93W#QFmvCfHQTup^G+Go{iFT@6B89Ydi zCAl|>Ij&ViHGVTQwNdu3=D3EQPhB5Af76?h8Vob!1)|a*x7%@C)NAg8y`(LuoSfd z6HFRkO%f;%d|E0d58oN6PwW%&R2pkvT$1%=1=AU)tz@kjK8}+y228L%01mheg1b*89H%6=Gi#JpQs@oPKF_*E{x+I$AAG z0v;$$PZS66*SXfvHrY=fhRd(pZ@p~Xfd6dnqnHP_{eSX6EZffrp!jvZaha<>|EP_| zp;Zkbp%7#Lm0b^p7$wnOb?xtg1)CW4OXeDumgm!MCOaKQ?jZFTNbVt)1x5~zl~yrN zngNsgK1EP(54va09Vr5SiDc$dB*8#wwrfDdkhmj!O|;{hEkLtVc|r+W;V4RKTxX5y zPaJXz+LpZ#eNQn5eeXe#dC1~_1D8fEJeJU3;_xMn_P%SDMT)EwS zqWR)wW^XuoYwfsIL2FX^v-`qbTSn_gN8qI0ZF{X#dfxK7s{N^T8VmRVx#Wwl{_baI zs?}Q|Z=gDzVW!jGsfR_;Z=JZh##gNYT`ly_xyPl)I+vrU%!liDPtMB`xT;m zo5uu+yLG!$k7|{*dTR!<`I_0H#IhkhyION>cWpw#LdD99%!G5%dV|ckGvD*`tMgbr zeD!)=&=z+~6++u0L5GqVu5{UC^OCH!o@YPNC$20D;i;2j{qt0p$oQM_>DjyS=@sT? zcEu6qL8)2hL9@-h3uVI1xf7{r=Cj0ls~g9%7%McXm{~OPZWFUjifQK7e${oVgj2`z z6)--#$Z-jEqqMjM^34$d^7lrgYG^54^HxNeM&b>-B9x-d0*STBObb%t%|WM&tT*xr zQO)VoVNQwS<(Q|dMrYp}v*}LX8}dgHPYbmh7hf%Q@52Ex^~+9;?rUbyu3d--uP&Rr zG>GPCXlydbu=#xSmIB;$h@G-#^7bd0eW9Dn?zf>8Uz7gZE&IDsME{ZqS}j1pIa)EB zb7VG9G57Ccb=IC)FdeTw;GG1fqoOzFrF4d$L|mQO1=v+n4A2rUkd6((DocV)-HZyl zZcbAxmB)ublm&hki2U<8v`ZbJ9hW;83qK-Dgpk2gVrT}k(MHE^qXq4OF*TfELSpV3 zLT1pyDPiWpD7kXi!p-*+RisVIhd0t9O8l>vkV=KjoGIirwswq-XI1>}6M{vT3&UqP zJ6?a~o4Pi!(J+kpkg1d&^w5-W1o0Z&%u~MD0=%tt+QqS3!Y+p-;zF+|YC*LosfuIH zCXtW$;!ht7zzG3H>NMPbLlXjkwkawwNsg~9I5x}fblRg`YAcE{oSP3Wbz{bxu`b$F zgr&O)tYDm(bkzyI+2TxgcL4XgMu}MXameG4;h$gEm(Avjb#NQeH>LekKxewh6>@oy zTBfLtwwxj#kEx;^dmfBa+t59!E`?c0z23OfE_X-p>2kz)zfp?m+Co%a-6i?Q(&7?p*=O}Tb^LaK|q$_DpM{5vBN%m+t`tYD6 zop#&qdKbB*ICk5t7gH)TdZ6j>qBgo~jUbB!+{vig7}lp|{Ta%!gUOb^JyHw%vmY52)@w5|MN?ft^OqaiNHc4=oAd*38N z4G}+bpVSYDLheQv339k#5Ru8T8X^{PR+BQl-(`rD3{|&gY&0y^XC|K(9N(`S+1*tj zP2`?d_YiroySM)RJb&-CptkTLQ?)l<|3eS9$c~0!;jpZkvYMgivOzzDQ`ygg;hj=PF-N8tF&Y^_VI`ki-OxxX*-EkV0Yw8C_M-K} zg<{erN2b5i#FM?b#6$VYCcYC^2F-ACq#$?aFmmniw${p@^htzs8(X9Bs#&8S8a1YA?i`PYWs!|hkX?3y8b1lb5 zB-Lf$)u$IZf_p>e`a8?`22GFAU9PeIhK=?44+}1B!8(8cnXHjmWBDO{)&E_G=;}5B(tqNYr5>fr7OP-Avtm*nV0eLS&|7#8K1d`f z-$L>T$jnKtXmh*;Le?^^42=w( z3>N`_*>T)Ipucyt26iGdV~o}?Kf%z(O29#g{($L_Df zX#ie=b;2BzrVqbP?cx^uzZQLBdSv?G1TW<7e0&OK>cJ`;#ep6FbTE9v+8%ilbbf{X zxI6#8$y`ML)BW(*B^PA(I^qe`u`f?-wQ>JuMS$|}XaWf>Z_k5KK zpP=H!kBgeT4qiA0bT9C)O+XxCsOv2JMpXqn$E>IrdmUnqwnMYna=q*N@STG?>6bjB z;M2=ZuF|(N2DwCP>_<~PMepOkgW8Uj;AKc zw#}#497HeK`OUoVr`FijWK%$EoI5Egrsroj%Gi90oU(aN)PpKJn1&??(ccOgzfk!R zNws_4T(vZ!wZysdXXhH2Z*oSn+PMlo=kmllRarb!R(p!$EYt8zj)hI^%JrvMS>_chJ6iEmy+(Gj7yA-$f`FYdvN9~%=?Cj$YnJKT3)X3mtRjaH!R6qCfF_?*0tY+8 zF|>IZ;O3IX0cuIsO^xa}W_ip+7+mvm9!1G_1%8!`)KO*m<$WjxZ`1U66#3IpRIq+%Rgw9GlxEybs6^2ei8SlwoSIzD|E1VR{cp z-cRPYd)yDxVHJ778o(|DG-iJ6x>Z6hx;ZUg-tEBSD(rSy-f6LPjG)BI+twn>F=^Ab`B*HhRvYA%cDBpZl+;BYMM&16jM zr~rh0B)>ShwygG|@-?zbfF0y;56Khr(k>srk2&CKG!G(q$2}?(XH}Iyfn^Pu1{W3pw0JUAfREJG@RIX7107pQ$zoXGl2f^hu$I{b)&UtslTc;nD zr7#U-_iXKcLWUl6ss?&&UKhhD9->B19pG4V?8L<7R2Q8vDg0U<=xt>VW|Lh`Q=Arc zlC3-=hugig2jnJu7P&4n;Hg$8BJ))2AA4pWYwe26utxV^}IR(|+tS&Yfi_aUkqoJo@up}JttCIcT zsu{ZtZCzGwy8Ja18OYjf*6jt@F0TreI;*{i@M4UWDoz2R@KSC2R=j0dz_h;`od?~& zqZ_gG7+C_VW9$HO>4w$}#=wtcT94#DvK)Lw2@STL1Q8aN_~R$63k7|HtMz4SP&mEl zsw@||!48@)*)(5Rjk^p1fNrsJ^s#;dshGJ#qfkj;luzpBPw)h{`6bB7upMgz`&wkX znsspokU=Z}p1`{l&t{b1NS*Nw*{DlQm>gwYutPgGH%8aY_l786qU?4^Fj-OMNo|)T zv?AOWtfp_aLp|dCmI1;D>DTCL<^$c-W z8xP6Xge(@0T6jSG_7@8a=McE*}93TfuxkQxPhi1~j zPeI45Sn1{}{R3sF86n}&;?kge6tzc3nv_ZMu!CC&3gy0^Gg6Ajq-J;VH{9%rg92yO zV?wb(Rz|eHS0)3a+zwXuF*i8l+}V?Y`nMX2c3!*2hR&vv^^&o!-zOkml;HP34aW`< zm9v6?AN`uz_C5lC0AyBnsG1Pyp?E{&qlu}SDnw196omh>SR80zBR|sYUlc=bQL;5i z5Tim1L1$f+AB3?(zrk*Rm@Md(0bSk^rAHtgg^2UdH<0_OvRg7>Asn#x+29s8Q&(ng zvu^{{vi2HMTQ|7PVaIs1ib+SHL_ESwcHBI3clz^oEIuy4qLg={#2GkyAX}Q8J-?IM zaq|q*z@zq%#!da68xm7=phCaWm7e!|q>TsVgoJ13r~6N+33?^h4xts97MnSeyQY&x z-5WNvNX^Qf41ZV28M%CsM?3XOch@Ol7x8BgzPWcaT$c;`N(S;tSL_Q>9@Yh-tpa(rG>GHtg^USMJg3kPG&@WY`hnKif{^#&#JFrzOx5 z?&?nozF1S)%% zjuxwDF}D zWf2sx+;8g474AXH!oN}W@ieU!R%jIqkym}X3gG5|;N|#~Z>}1Cql6MzGY|~1)|#-t zw?5ex@WR)|>r?a{t{W=F0Ln0^uQv4TxoQbZtd0hww`aR`%t_SlI(sW8$PUMiNN~?E z=AR4JSO_Z=Q*^LM*<4R68X`7cS=(5mwHU068!*mz_ms5o_?APUC z&zbG3c3{H>PQFK@w6zcRMh9v2)f2{}3KND;*%@wCc20YqYZ8{j`Yn zSVe85VP}|Z?AUia&icq+MO?>eWcw2M79PvNe~1wfzhwWPup;O5->~B8*U>Exea}&Z zdFb57GHR9eYZCp}B*rf({F+$uC1hVR@+G4G#2neaWaUrn^2<>D(ck1u|F8b{uQ^;_ z^WDCVSnD{)>>L{8|DA9We~Q!k5Il@ug*cAtIf@oiwCrLv}ha!tW7xZ zS-O1<(^!vMjj$ZDP-EU}$Vazzn}=?0|59gssipoQiT)EV|FY(ogKo>d0NsrFwE)bQ z8uUy3CnT@MyoYoeux9wx1^pWRXJjS1ZR(eifv;1df3trD|KX69X5M4^ht>mPJxZ+t z-L~}~N{^SX5d$7Z>j`UUkLeC-wq|QiA14nWUt0`Jqk32L{GZ@y$2?`d1^;%hMCHv7 zH@Or#!rY{&xQRUa28u9M^yZlCIP`kj0Oyk*AbdD3zqxp^%VB3rJr9K&2*hrv!HO3$ zqU$tGCNthACb7yb@n!Ui7Fnjl4fB6`Ijg6cy4jI$s2AP*ZkiWcOX!iHwo!vK%G62m~01KfmxgpeUWA{q zvGkdQ30Qg(QaJSDGTGZ7N>!?}&=O=UMss^Xus{^1Tjt_sjg}JJp;wU=sOx`O6L^1J zI$Xw>Aw6*#*!EU#$kGgZOd93^?y1rMA zAj&LsTAZ3I%iK)vKQn&qdUDV-CvhPfZ9m(vD8qa%v_?(pP-{*aW0_VTW+I8Jt6H22 z~_&@*T&p_>eZRW^SSbr9Pyd%iyH&X`5^7(>-&11Ekrm_?(;(4+>wF8oUXY1PEC~k z)(>)3=Xb-bi(xV2XlYDN5bxvvcof1l!?+&Qr{eAvFRoL3!}q+X?O8Op)y6QhWqw>s zC`E?OwJ8WxRV`|Bip<6r_w<`&d&gBuBMtN?yr%g6gLIrx8QUFt6- zRxxYQlkvJBd7Fx1Pk9WpPd}A(Ju1L4Q>MUgrEbOtf)s}_R7h3lEQBUe`L3X4%Ve!n zhm?ZJgB362B0mcViYdo&cQ#96d20ZQjRW`fadfI!Q zIKl`8NXIJ#qxYfk2lNi*L=czeqg;I!>$M+b^r7-jxJE|Om0DM(p3vb#VWQisEHHP@ z{3yb1JMFgY(QhZj>O7;863S!*2DcXT@SAVL^~0&0BNbD#l|{A67Jw_o!Vv4M`FF0V z{IEB#7ksf^+J9%lTDOBPn%9=KnMUWE0$QL8K{`7HIaP6RY6|4=WtCD#J0zawu76v6 zT$`^Nr&q)fia)z$v^nbQEH%Jh5=^C13GtQ^UFmUbqkQy?Zo%hx*tZ}Jx!Gv~Rwfjh zYOFf}8;wH7Y&zICLB1O9==*IpH2BOr`M8p;Z=Px0NRIWA;CW|oc-9kIof%9IbKycf z$xZwra6SCwF$=T+ExWUi0r--1`b%)P{yj|4g+-5ck}Z}K*qIaQ*dB+rg;r1uJOL2< zFvA!>M43%<)9@n#Ex+p|mzGRo$9B@Y-ZG@pnxAeT`6GAf9-&2@l2=_?>T5gB62o2u z9VTS(EblcV^GK4V#IR+w)nwXQew|6uunN6WUbC}Ka-cVhai?W+6t}4-E0tS3ZFKBG z$2RjPASD`=H5ranNX@l~KRd}V(4o&6=oCww>~F-Juy*6VKDVbrkIAq2bh+0c2HpP z8g@g)GjgP+j%)XLUJ%+(oF;TszzMuDc=&bG0Tf$H*J}?y%M!R)?@%(~*@z<}ib7>U z39&bg>ZCl}LFRfZ`8KCvpEL=6lp|mSiW!tlV|9ql;UN>gJN(Wic7{0u9&dm+pA{U1 zGu7Jl{NZ|lP+uu+Tjb-SnzR@(+Aj5-o+<@v_S>SCXeEbt|B0Ednly zO2w?M4MDA^%DQGEM%|*v_CLFhf4oa+e` zhHRWZ{yK2#`*@J)<$%1o~m*s`N)PudBTH7iPu2<;fN_KxYE*(qWWzsQ|iE(CO!|Ng>P;?J6{bowKq z9Qh8URJ-K_LMx`?5`w|-(u9$=7~Wk zBec-;H`z#9<5|uEpP&q1X35&5k3xnvlPYj?KGPZFQ$OWyhoXhrk{mt%YY&UcyL4HO zt}n@0MW{kXmu|m}du)!yOPx$jz%d4tYm7BUC+ym4pNgB1ZYc$xv%ku|r~#P;hSxd^ z!KID6dKwL9%q4`N1?nXfb# zcmjUwQda62-ZF2W0TSTx;wPAke~+#3yM$vjl*$abha)YF_$VG{QqbuwVC^({Yg=K& zOhlM;j*;;@=KE(9@dp9C1%j5fE1H!+kXP5q*y1De06SUuzfF};vvXzUSByQMVFCvo@P;JpR#?tjz(`j8du7hF2>& zKh~Q2ajU$W*LMg&p-6El5v^Z4YjCspynM}4b=^90N87Z3*l{N^nNQQXl2@qo($!3U z9ZhX(>Dm}<=dv)3buCGD%REw9vR|$K7(Cgz6lD3q^upIYV+N;vr2mPoi(^cvDfhIA zd%a7Eg;W|Epy|798DTNqP7sc-bU4yaM>iKU)EfQLaAlA=;9(KdIG#8@c%NUZSfNlF zk2IpiLPg>{=pt(x&%`5CIKNcFpei}0K*F%r0(Ij)TE4*XXtKPnv6*zn(y~BQnsCz- z^XZUwSO;vT94|g_@w;ra;?SXsu=cY9rgNnAGO=jg=dR6X{0()#WC>`)g$?}$p%r^q z?n*q)h1iydTQmaYo@?I?;&am5sbQ=l9h(|GHQ%+D(!%?(K7m~Xy?tg>aAC1QtvrsX z^w3jh_*2{QY0&0_3f`$P<9t3fHWXd+xLJ(?0Rlc=%-LJi%c$~MV40B|$CZI_*7mgV zaq~xeC&4v~<=AZ|_7#_&Opycjz7PrL_j^bZZa?{ox5jgKv9`}LVgc2wbu1g`!zc&R z&Di#-!WzIAQowajr&G-8FjjlFeWc(OqB|*&a33NIHLhQ*-0hptV~`(z@-P5%yX27Y z{~vPG^graL_=AD`#6|LP4J#n6`N5?Ec@n}i#b-Z*!3mY`z)N0Y- z7`$3CoHF-88hpr-{Q7u%8wwB9#sh@E0_6=%1d5^a(qngU5RBVYis#P$08vFbuK?V;W@A0;u-u{-c_D_M z!bWl^BQpMcS{|D7zzMNPxlfjud%*`E<;QlPQNvc$LuJuj&;#w99Mk%@kayp#yIXiV#1Agu(j#6lZ7YQO2f1mM)x_u;&b()H1%-a2IguhhopRJJDdOW5Z5BA+#Y$q=f$ z0Q*YG**zxQ=yVkt(JF zDw$YmvM9fQ1eA*zg-#obHrK^K^!L=b>*xq9BNUpe-Wy}b@V>R5N7)LfDmK^YGJsgH zx$@TL3~n=-F&fhmr<)t-{Z3;X^21_;GctFjroJfv&cTB~f6fEFr{FMb#MiI)*v z$%&+ui%MU>n2?L#z}Hd&O-<@m z7sgpv$4NnSY1ARo4tV>T=X7iN`Dth8{h847?ajd5 zCU_Ti$u7w(aLhn)&lwP-^OgTFQ;LF-&VPr87-C0`-r5rLfY&CG9Bc5pCP%H;y7R85 zP~`-oC40ewa$T{$aq4cgY}M;eK*i`6F4=!jNK6VX9e;x4&_FGQlT+uA=k$^Id{&66 z0b2mC`V19Z8|}Vt{$2nM)@JC?(R1&d*EgJ?$Vj8tSt0=QDX+qeym41tyJXdQpZ8naUdS7^v@@)}pgj|nWZT=ev`CqQo28aKL zEA^oW-Ije8x;gzMU`^7V&vNifjsK<2{#*F`r@|WM>-3*oNA<7KS?IQ@#{p{>UxxnV zH}W&@DSmZD*Q3<3|5jN4$yod|zua<&auK@O;L9BPSNBg1_SZ`2Ul&pFWiIh=Feu^Z zPl{rcnpeA})t_zF+F2aG{GYhhDZvk59TZJ;a_Suh%QzH)t4&iCMII*&Kj3J?U8z6& zYz#&;6UB^Vx>1=j#yZQ9?8y5x9-L!L&M;F$@-pAH0i}Xq(U+YlFLJo+5d-x)|Cnu% zGH#i0c-vf5ajL&C9#S(=V3N?dQkt14GML*`z49UV4A59*y}AH>uGUtuN`iXyu zb#GJuP2c>V7}dGN*QS)9+qz9dH*=l_tYv)N+~Jp+{!3l_rT*F=$Fi>-o`G(z|4R(} zubnOayNy`?Y@_ej?&N&!&X)nQudXoj9@89j^ZGv}>3>o?zy1{DU#6S?)~-9|{w1Y# z{nDC!O^E+nuW_bpQ;h-LHSaaP-9?kOY<-JowN(F(hcOQ83v5Cumi+7as*gr%eIjCdjL5 z;xy@bX!ST$fILuPvUoa=1m|I)Y)iGf#yEzgP%Oedi@X2J1p}B)m*kL>JB!)bD^rz) z*?LJn8NFO*omP?0LunC(axqKlM1;RVe0I7-1xB~Q}Um7?N@vG zPy3W0RnQLJVAi?EeOQs{Ho+k#yf&I^Tm>?-A$}afK#q(lMX`FV4y^&+V4S=eBZEG( zPJ~sI>eulmzAvr#h}WUsiD+M`C8#W<(XvAZYvgHfU)rla7u%tXx2Lmn;l77ml^^~3 zj`RlEZy4)#YNhRs8(WN>3vJyseN}?j&J4dBWb&@tpCg-BHg_=(bbPG<6;Q^`krl`I z>r=`sk~bQ!a)!+q5VrA{BOO4sd}`nYgjzne&03VC6)9EEARNEoWkSq4rI9svAT)Er zH{DLQIHK;y9_8HBkPJ{uk={YdD2C$TYPZQTU*M!ZvmRM0l>DL!DD)HtM2r1>uTjN~ zXUnkM(^z#?lwEAXCCXAU>tG)4*5fpL5c*AHN}1Mi=~{xqIo|}`gbzmYKjJb9u9N!a z)A^6NP57~=geF55ZQ`&>n>2S_dPQFZl1gDzVUCbIb%H!wl2#E{V5eh4iF<`%Lv7|^ z!Ve=8G#5tm2*5qECaatiF2B7&cYDdgMt0+^n6*g-+r|USs{2!Z!W+&Hs)HoWpJ6d5 zK28NzD^EvJA;);60VS6{cBN3pIh-Tq=2g==nW&-+&a?bhKzG7Widg||MhmWQ>Ke0R zv?5StZg1&FTpedLqSr*!sv72{^ zQ5bVQo+rlXoetzwY-`J~%}-P)bC%G?vrX5YA9YUOIs=m4_29!ES{LM4{!yrj@!J61{3>aRj$(c zC~Y)iI^L6x>%fD#9&6M&RFCh0F$}{NcC%|UtK2UX(^z)|b{n+;U37m!ST=?@+7ey= zsa#eiMpm=-+fM1u1jy6t#`#boA%rnASV?p3MsmYT;7#e^aPJVOq^pHDz!{{$S;@V+ zX4iYEIixsDAjP>=J>()RL4pV~)T*2VM+Zz25Vki12U8FqHPk9oTBxoez(edO^XeO% zSREPLL`ELjXZiMPn!;g35>oA%n5^49oXy3k6?y`znv;C4LMY2+gDd5O$f*QMD9lt- z?DIqLqF-A6mP)x#VR<-b0D_XK#YnV1tfK=#wL4u$<;+4&7^0Q}AwJ?lMadho@{(G) z;%ahD&UFg8CUgRD_2Jcmj%vhZMgn5c_e!eHM11WUi z@nc%F4m5hK2tNn7^Tb)H?6cn>x{MT`n79tubtigbnil}w-5IpB zoXq9BRSk&-TfdvAsK0#Aq`Nm3wm^#tZ6!+2X6W*ex=`EOYQ((FV+c0h4&Esd^DvzP z?f|`mX~Wd}U}{n>$n=v#E|++7BBU)l%3P9I=|FJezK#9P&|t;NADHZui21a?e_9;E9Lc+U&@#*AY00n z+8=$xzS!oCfPl9lpD5uTW>QKcJsVgWYbwl>2q$X$6c)#X3RENIXGD;ibyhTKm2rzEtEv78hMQ6u(5bK^M>j64_qt|e; z|85%WdAUnFU^YYz8KG5C)}`E192#QkbZa~tCig63!6JDaHj@LL$wXmgh*|u=S@K&n z%f8)ts^-w`_cIobD$*_IFOKm6EbaJ=>6dhm0}0Ynx8F@~oAI8$akXBQp=XD-_e1xQ zZh|lRO(TX>h5GfrU{!#ZlhLw5Crni%V0r|_PvzB&?GzS4#B4PiHsmerz&5krjVx50 zUY9!m639Bj0)4> zZ_brSjn;V3Q;b$`&Dp=M&YV5N5Px-ImSYvhXf?2}`5-E8(?fmPF=5CWF<#27jityA z_}Uy@WmPm)t#JatUIkdz=#Iw1!MJ+a@y!GM3XOFNHkj_#EQ<4|TEg&ZOtTJVsvEuHv;Wr6(P6&{!ztQc zSt$wDYnuH=KF6H5_6pCs!kF9)5qAYd9q`WB9rFqjf4q04g=~X7KT!+h^W}Cc3{=AO z4gG}+_sTbj=Z@bm9@X`)GSa?G2W7emDb{_pMB(We{x%N3pX|V77Z3^jm$DSZeSFm8 zv-8bIMmldTgE(C6322w8$scylU{hwa47QGCqDtAWT44HCf7#CziO3;Tgkf*J({#!# zScocCz$&!}wLGWqn2L-XghkwvMO2kFcBB;*u{{`ST&qUt8;+sg=2=(P%=!!^8)$wL zqpn@G#JZvpOM!Jzlgq;>IWe`q*910_nuxVQ8piQFLE*J*3&TIYlEru#Iv# zK0Tmasjg9Rp$AiFQMSpHh??SAYt&VY(77n&3}Z%iG_?kz*oo4;C-<$5RRm?{!iO!x|MnBWLDEXH`~A}Ft#IdqnT#(oRoT1@ zxrDJ*+ULUQ#8H{)q=l1dri1BBwE0Ix#*;tcXZSK)ZN;fmLY>;mX2nGS@}WlKq9s@2 zs6Uy}l~3G<=;qC>t!O--V4+xx!S!OK)=!T%f?y)Yv8O>H_liVh6OX_fvpCIJvWq4t z%=bne59oFI{ocZ`R1zEL%jFVT&4k)PPF5TDA$}=t3QwGSuE*mZyx?V`J1L_0Z9fk+ zCSem#_fA%c&=XyqkwU~v?^YXz#W%hD<=MB5B`muZ@a>mCxte8Se;uy|I?u6QLe&oq zI;5Ai9B!lzylMNLAc7Pl3cHZpze!?o>WHy=|NSvSJ!ATVz^4k{=M5N1gCWb4k4J0) z5Fe{osQ^jL)F2nHNg?A6^b?}Qbq|ik?!d+QdxpPQ^0LGZQ^hV(Uj^pn+lq6oW^1aI zk72$O*V?XOW% zc49ovuqw5mY*eVyAx{X}$rFg4$yO%q0!;0=><$`nM~Mo#tVR8PxCp<6Pk49&@a`J* zJfEjTp;|iPgKfu-e>!U)Y2bp`*h;!%RFlJ&O3Zn%O16}R2+6_Q){?U;)%W{ADKjVk zn`ST09qFO8h_F!JE|@OZ-eIV}lSZO^X~?Mp`Fsh$bycuG@$!{rEF_;O?f!SXL#00B z62od)zn{k{-gi|c?jiFGiZC96{6l#RIqLBl^Aw6c16dM6T6CqZ7z@es?&i$F(&C#> z!6Eoc@iyrSMv7^pFN&E-DpyF-5qx!C>tDFAl+=Wvag(HLh}{5H*qyB8=?D;)4KWPWGRsI8F^9p290(yrS2hF z!C^^E@q{;CO=UOB#fqe4_tzD13h8;OjGcy8!N@(}(YHlXz~k;`GMD;XCEE8le6~s z-M7e_#|LbroRt~TF4T9z9pQ#!4COY==c9dAmG@hWSF2`DSAi7|fn~)>Y8l-2zdD_U z$WA3H=LH_pF}Jwlm{rF+Q2l!9&L4YmMxIXQpn8!qHYcW4$0#rKE9DBB_s3xthVBk3 zMI>zb#wBcg@z*e$dg0*&g#y=mjShE1Ln99ppPo+}ulorjxU+X5CL{ca%a-l~Sw61( zC%7}6P0dAjwmmV3hz*Z6*v1HLB7=!VY?Y1{NLEZZo;aj5e9%oT$!*jYHu31E))cQA z6|MF3AKnD$XRpt>n<)Px04ltwnKkv_B9EU1be`9lWK~43qK{MVKm02Me64J=9t3k#jfA{Q{A|$Gu;{{ zfpiNJV+a^9yfsy>wEq7Or2GjWMcDtV#`WJJDz%fpffUHUft2!@zeTnAe=z}5PyR-$ z;Qt$<+W#^u{$;N8Z=%n?BUbfatB5l1C45cz`8D{@VqZmcUWAFcCc5Xs>^ zWDZAMUZVBrylS0)iOv)d@W>Tlku=^_Zj7y=cr3`4n3<9Mj^3JnuqCkfVO_X>_Mvbc zY}sn>yQcb2BH5op*VbJ0Jx4L-q4NOCs8#TFoJPGC9!sIG0WilP%`X3Bp22(#ZvHwx z9RIh9w&LjjuA!P_uAI@tD?2^)26%tj|;2xp&5 z7s|WR#Y>kFuxXuK@_)C`TaPRZTykdkc-d9LL>)amRlQ(O$7KB3N$XnTQIR3i?)5&F zm~b{itCf6FrmDcnna*uV(b*ZeX!qP)d-z`Grr3Inw9O)drs$LgRcn9z*|~`ER>(`; zY%s<)Ikb9NuMUvQaz6j~iBbEw@|4@r`JS%muX%IN)^WKxSz0sR^7|V9B*uv6yzbyy zHWBAVD?a+f&FcI6$NSj|$DiLm;J}#SlC1x})v0d{hnKm#0R;~ZM8TD5K~y6wE}6lL zQeQO*PaCL7_dLTkV@{>=j^np5Cdc|Mv<2Xdh2>kgg?t#X%kmMj%dpCZJ{iwV_b|4` zdiXLHhKYwaUv>5{j4okS&-pGpKR(bgB*{Kp#wd1l`mY)Rn;->joaW;v3u5R7hw&p56EDN)+wB4`&^A$BO_t)0n?lPj(%x8P}yy0>Mh?V*s38;lO(JqQ&BFd zL?;*S&eK$L68gw4;)P(PU%Bo&0`+PF%qw5)ISUJ1xC~wHafC9ojw3t;G24ex;tWIe z;uXzY(<-FY*K?H?f4TnN*jxOedk+RR5R+Bse4GB4`@z`JpZ zW`MfS2no|0G0mr0Qb_Yz@FZ2JkgkA5m0DjOI?KPc%i(uTWD_~`ECq;)K;?G- z-YS`W!x|Lb4bk;VDIko(mbS2Baxl?^g!Yb(Mfq+>pgXXg{KWBZ3&2h(YfF(nDH*)Z z^=BmAe!DGgio4Ze^4DvM5uCw2&^{sL>fRFO9vi6s(8L#S6h3&5E18EW_>Aq>cG)To zTFq-GSmG+cP zK8CDzrq*#MNI`IOugPLhj+$#`l}*%{Ymn*LL@q^rXpWI%7j}n9X{>SoCR*Dfg>7R? z=y+PRvU%6B&8Ho2FKn!lUy8M^z$fCmGABNgOUCaE675^$-VP)8poH5v9d@c_WE(PI z393G7h7*N;A4EaoQALGs8XlMswg{= z$hWuvwTg&Z{Ipnn|7mzcZ2zok0or?66)r7QCArUXy}5O5dZ$}LgO~HX4WWc% zdqJX%Jh%ve1WZ4hjbSrjoAxuP2TmLZNoDk6pNpQ!utUAY^(Q)a`&;5@!3JHN{)3Rz z(G9n;hNq_ON zl~Z72WBY~jot0qkYBh>xXhC*rN^WY)3EDY5t@|TnMP~?EZu{ZNMzbz@aimL8SjHhG zM9Ydz!vfY*nK0$=FN3&OG$dh@2L2{eV4YtkmPgwK)N6;w+LF-P`JW~!Sf6$Qs6^FN|3 zX8&M^*rjjMDdyFi32I(IkK8Y6q8-#*Z2Sks*oFquJPpC|WOeAA3A9u2Alzwn{6Y&+ z>!?ABdC1}qMB3F24Mf^r^q;`0NE=4oB`^r^Au|%MpsQj7t4- zh|2$@(PyLYG5v9nzSfdxi;??4RortG`y8ukFAISF0t1p$v%r!87M51e7v*I7w0}M8Tq#uzVEpG<$H<_` z0$b+tI#=rHa~6V)>9luoo}|pTPx`@?m?BYPgW^wotSf}_n%V;gP?yN(yidiPTT9{- zU2CMO(Iyl#>LNH{hWBshh=kWd$~q>rN(*B#Kw8e-8_4PH2WzV%`8i0TA1b7lHnN3 zC3MWGrG`Kgm}QiL(%Q10146Y`yXrHflvEXaxI2kfGDp)DTtlLYZUu}sYQfTO z$$?ynll3p2&|5srzjsJtX#;I8gB8X2hX~{$31<*B#@RF`rN54`J8tFw0G>gvG)i|LmPYz5d-?hoytsLe~Xf+uk`(i@|V$oTlhIMTF(oBe%dCVdq{W5n)jF zMrdN?k8NIupq*Cbh3bM%1_PDd$2kyFJv(H+$0?&HBuSAP)=!S&YzB6hKd3$AqQ0T~ z$jd>`2pMCP%?7upUa=^^6?u`)*gvKi(QyG<5A6xe+@YrL;O{Y<9)6fk?lN0BI{0Bd zjC`ucn>4bJSLUv&AWoe;+!wmedFc#sgFahrkS1@!8jtEfkkxmj!9WH2lBr-0nJbZI zoeA6a)N-#c!l@{iyA_D^CKYq|*3wmqs-2HTUtSr@5we$|au9BCZ@WSu9O)fWyXK1D z(G>t=@fA>sG%o9rIWRT_va_*fi;T}@9NG(grC^#J&uoMy8^;NKqo-PGw{5xliCUs& zC3heU0H}S^5a(-4b9~`TBx+O^pDgkYrKuk2bEwVvDbK-RSto;V|HCQ=avn`fF~xz2 z3oeNVf6>odUifis>0BLRQ!(FNq1}xttym$1c#vSQ$E>(Q#^K~3m2&Y--Xop->5QY-+=6g^6`hy5o z9;CZn&K$c_@n2Pg^!7ZG$$C)}6?o^iDo0tA z+EIA2hAK8A0J|^CjpqHs-?(~F%#MB;R5<$u--tUz&DnJ;ry7$YvQR4h3a_7^&z+QY z)0IkvsjU3{o;x$p8r+u^3|4HGG6u0}@w#u| zJ!BVm*VWF(T5{bv+Udyaa7cEcY$wwdf@S1o@bIhZ;nj2$fNlbNM#E=No$=o$;$j#S`k-2>wk0GSxV8H)EK0yBJ~@L zO;wD!?KTi!H!0UMNIfl-fC1wj4K{=_sK#&wh2e3|0QwKwvEyaIfOva2(o`KzsGg&J zWU4!iSbHLLaF~GGu)n=LbG5vr%GuHES3EBgHy!{~I==AD?48vRDFH6(j_E;kYC|DW za0YRctj#x9{+%I;J$S2H7hW6%Op(m>@B2O{W@l8jM4sFwWx0qFi3oQs2tiVoW8dd^ za#F$fGntn>?H6g&n%YP_vN$Nb?`><(B)NJnk!GFNQF^mluPQ?qVtK~?%+1iJ1o(W6-e5KFHbmA{TE0dy@QOp- zv#d#`@so>s!!CNa{gLYdcWAXo4V|~_5KFFyN$~0R1ntE1Z6sE3U9_-RrIE$pzyjy= zmO4;XSv&0V*ne^HV{5n%MF$kG=>!zwP}H}xrDX-_0r2Ts+xwh5IA}0;5}2d3Z$SyW z>;pu`pe9c9>(fwk5pZMk@%h5)yZm7bhLZqjsYDhZ#rg7bag6hq-;|<3%%gLg4`09S%WVR>z^rGWP%`3C+`JTP6mLU3X#&OCr@lUOjQ6#R! zJ3ZkwqT07zR-nvLGpT~6e2Pq%nhOokHPN;@u%uphk3cRyc01m8LAdyV>%hSo;Bvyh zWd7iO^m)^3;38sSXTDEn+?ROVs$utb3ef~kZKOQ@tDpW=4cM2)#S?9xx0D5c8*Q*i z!fQY_b=RyniXH?%ANsvW=Ts(VOWS#BspgZFcUf}Cf;tX?O}RmW9=9PNvrwBZ*Bm3xn8 z#hgH&PTZV(l4NkRD}wXY2ljMU~NgD;z2vJs!^U_Doy@hSHDIkF;Ms4(+* z`D;i{l~rMUXzvuw-RO(4D(Tuv+k;)GDzjv}^XG_`(nhFsllzQ@mwUNxi)dJI&rU=T z94_1PZr%m;MMsoyVABtjQNFcuUA&MY4zlEeam7I^M+42Bv)?Wb(}A}; z#gNi>N7Vg^!dv%D*LX>3aEX1kMBp*^^oLUYKb(VKp@Jw06r2IuQ<)X0Ur;Ai#y~G@ZC3m3Kc(7#JxgsvlCYR4x#6 z*lyuVoWrOEMlT1Q3z7gRMVn}p4NHkpXG)ORs?L}~!}(vl*mX}Xd}-apYpkAe@*;}X z8pd@grYKDm$_e#P;e~G2m-KG}hR{1!>Fu`4ZUXU04umE6+Ck+g=(O3!A4`IhVV;;o zh3(LnC0E~Maz6B?QH^!~=bqOG?>GhN^X|7KjRO2rV8d^u>6}{f$nh9G+F(>Y^+oB< z9#dn=Tv<%`0U!A-qpRMLiUho zW%>Q#08c=$zmuiT*>m)Z+TiessjPC*atpbpUe8|jq9)&wQuVhEP0TS3Fh{l)-)wp4 zM|3|O0Sfy{e9U^_vZw-Brd1(*`HY*QN<$6vlI(>KXE)#f5HEewNUKbOTUnY`S}S%c zKf?TJ(33n@O1R8atjuBRs309x)qaKaiixyEMe;_Ors!TFKbwj*(@`(c^+ztAAyL~- zX&Ii_{d_fV6`r)jW=mdLgWP_}6jh#Ux=Y#mg}D?S>T$(hPW{N2RjtjeA`o{~m&kmn z8|I(0UnP=VKh(FJ94}0%9mU0}`nCuxLlmL%%^sv8Ts|N9uLGKRktr=`cMHE;&I~Vf zSTo{zVXmxR-QZ`R!G*W#4#~A*Q);mV%|ct-Uxn4;OHwdZ)HusaWK|mpuPhCzhdd-Y zC*=)gaV*z2U!8_fIDBG3VF4@xuh14V>*@9_$d>5oZ}xa^2yW`ytkr5(x+RXSl8ft7 zZQPDu$RqYkn#IxgVH#V|SpaHsOUjm3Jz-mpRF+hAEbG0t9B(^$*H@O4tv9kyi{j6F2+^>ve*DmCKkg`2r7-@wf8-s^CsV0Hc%2m1eB9v&F1C1*mJQSuE%0MHxJ^YQ}K z-L3sK!1dt&l!v!TeEq1VLxhPU*ruMs(na-|IjbB!-e%{?11sWwYxWIi%Q$q=qb{ug zGEOt>$rv;g1=KAZq{oYrZWL5_K9!vZSUNQl)MZ-sTV!C{Hi6(8P+zC&f6=XP^rmn6 zOI*v5YD%xBTx{DR`+uQZsVCqX9A1YNmOQpFJa3TZ2Q-iab|3#T_cG0E1p4bH5X+H^ zt*`q^v24~BVcRaghP3SaFKNDpjlC|Dy)I{4_8+}nD-YY21N0Z1`#%CxCAohITbW+X zcK-l$-$++y{|ZdKeVJ7F7q4sjRv2zmwCprv(Q}mCdV&4+XoMTXSBU@bKX4USk(w!1 zU}pe!nS0>UXZUPM<4@g9j1rmS%!$O`Y>~Hwj{;X?&xsILiEfR#LzO(6$Vb3=66oZG z%XXxT`c7j5@h2(E<}691NMqJ$@l_xO5`jy3HRdD7roD~FAVWlIDpNIot7+wjv^D0Z z>IrH47Rwsd^6YP)4}BX!wGd|DYSp+J^PSA^D@e@_C|0t~HK=dh+vw=~N{;iQVzcPk zjQnd?o9i62ZXtI@+M~w*+9khDOG;n6k+)Svx!2C{`wHp01or8*`HBm_im*#@A~(}O zF7CoN+(w^lzNDX5yboCL@xaY&d+WJsQ7Cz`kOfwR(LA1x>4K$cGrfg@giPSAd z_fmZgUvQ16P~Oe^eTtvarL?7*>w`$wiFu07)ykYoHqWGXTr2#oq;;QxXW6SW5FuvQwgh4JSb~U z?%W~vDm{X-Vu@(e44t_3s)}^w*b@uq4o8g4 zujS3f$f{7V`%?SnSP|;AvUG_kU#C_yJB(JO+l;8mr2q}qE@{CYUsM_y&0_s_2w9xH6YuFDr5L(%kaa8mx zIxccPX!N+mrIWOjjGOI#k*J*VNMC-Lm+zMXyo)G`)JoVej?x4O#p@L?4l9#grj8a0 zdxSeM;U}uL0q7&#gL#pKe<+iDL8JC7qcj7uzQ3?F@YK;SImxU&uh^ z3R_J$e$3;RLARTUkByT$>7ah_AKk9QyHA-gQa|cw6>MrYfTj!?cQn!U9~xG`9qV`2 zg-y+?G)V~vWC5hYY3d;ljSwmKakXHqkrb+wP8NJ<+@{;#0Fs?XMgT)@cigc2=nz0m zUN;_FE;b*I5EiFYQz)a9=xRCTx$gTJZUu}{XGNt2HHC#45I}T?53C;=`CPuNbS2TK zjv?WZ@-i)${b57^^;lCQx06+|ZDS%XFhtN7^t!=Cq4JX4v!J{l4jMl9$|(E+INd83 z0QrVEQqh1#zdk~QCX1&fs~{i(7eD%(Iw4U-q46q^lK@T0r8T!j3){O1{BcENFx*=N`N%UXQ> zPt}UU*@$T$Tn#omoGeR*-#6&4XQ4VhVoI2+~a4VPnDajU%NsK4C6cmub6+n zFw*HIC6HLK?i3fVH9)$S2HAQ$sh?Y=sxY-)dq=1hZ=jqse3%-Vf6DWSQ#aA#pCH>r z)NY-WiMP`aY{sFZ+!@X#F@&oSH(kPsieODg3%rR(z2;7f0^a<-(YWY$Ykm28#k@v4 zEOh=&aP`CJDbAV9?ZR3#Up0TQ20m^8?G^3n{>>?f4V zq@LtuMV?T4baShBWSMAzX)_-dT|ic!{TS@}gW{k41E6D~o1$vbBrj?a_FejMmZsjH z+baFQ#j@H@v&tk*k2pYTrbpPb6ytN=vObDO{%u0g*7yDIz$Od|g?YCqM4E|-aJ773 z>*TI#A2+w*bShDdKK5_{kE>xfwKbhDF+N8iHmNB(!@e{;Lw95TNT}XUKk+;yLpVMc z!#bL|Kj!RD4uq%Amgo%OnK*`l4pKpw)p*N+6(N1);T$~6dN&}2?Ntbm` zIN!%XlikY9)_`mk6jnYt9nW)W=6#~=tWu%QC_=`$g6><^k;vijIQl;2gWp*-Pi_3} zD14Y+2c7(N-c@x+rR<*=O9zQ*>c8j{zc$Z__ABb@i%VjGC&h2zKoU`bSjctJhk_NK zV%mJxYr9cnCDB9UDaoxrI|tQ>WnFH|2bLuRMv5#XxTsvBCy}NE@)N%-C`4OLbm==b`S8f0;&e-p_^t?Tiqlc}nIsA@iJPwC zGAg-pDK%DV^zr1A(ZhljtA!8W*JLrx-W@Q;k!z1g`eY+3LU`#nHj<86JH|Qi478ma zR{f6DUw&_6CjanR>_E8HH|rp|g`L5jI&yRevVpUgQaCe@ekb~{V0xivn=um@zk+Tk z99L~<`V&*5Ce=6j00w)MNi&3L=%&{gopgb2s@`76q)qYl7hU9VIkVa}EaM+=Rc|VD zte(xz+8IqOIjcz@3pY^D2C|D4jZ)}7H-?7aJLrU!sDK0`qH#FNU2lA4F$C6yn6~z@ zp16HPZ15M7M912Uxt8@D<80&`8+Uie<&Rmyd)xu3n6bVrKc6a7slSw1XgL14lOE9? zHQIJR@@7KJ%7z=k^em9CVQ%6DKlATb;{(^%XT7G8`;sa#<&U5Blv-`C@HZ)6o*pSg zug$&G?F`F1n~q!<_Gb_6@)oFRtZGqgvR%K}8D2JheqftoGKv;CqDa%ZlRnxR&ZOL1+6Oxs$YRo z>|mir;G-ipS)43%S7RPMvtO9$j-j7LN`|)e`xj!R!fB&j9Cm&UIQFJ) zWNHw*%55ku<{;R!(6Wd7q#F`7gF3o;b8t_j+WT6e@qAC*Y_JHIxa>x~>=rBAMM|9B z_7m4)J?)0xf_0k}R4HiJA#L332yNy{Q?Z~%E}*6e*X%;9hP1O-S}5I)vm|@lah3JC zVNTL>aOd%F424M2XWo*b`F0{Bd3l z_sFyLDZg|j6ZUr~M-!CnC_-E9W&D%*qL_mliuo3Ql6bHVa)K#{Wm7l=>o3V z#`bFCohhG&Wl@5hXUbcr_#>6_PkYgSuV^g)zzm&7o%&fP&!%j`?Ev~+x)6vli=?H3 zpMqL_X1O*CB2O55Uj4N&Yhd*Yepz;Y^?(M$%6memB`?ggnclNKs(7>d;@1K2Xd`Y` zH~IuAO+MLn1aHVc*S^+G6tx0-r*p7G&q@)wOaWkL2naQpY_<~VjYi|D8l74#@Oe?X zgq8IQU_~Yk!Y4inR|P(+j$=(u9HF$aQ{K3#d0I8Zz~+&=dJ=g!7!F}7qDncG4u&3D z78bmW;&F4|U9l%za0akctx#g8Uf(1#ec^>4g$R`&ZjZJOnOz1TLo*qSv45UsYa6GU zvdS@!&pR!qzGg?~rrWSQjlDq1Nh3xq7ow)c$2=`OwG%=sGga{YYxpspo&^ zX5{qea|oggH^i2BO(NUijvaGpn>5Vk zav$b_wi(%6xg4{v0*p%erdOP+gv#MsvwnATJi{$_d-AkoU~iXp(8%EG5?a>#^dHNa z%rI`}qSFYrC2Sc>80eg1SCT{x8coPOmbthm^ma*8`;@*NKP?aQU<4^s{f;8cDKoI@ zLPx_ya z^JH|L!LQzR!vCp3vcF-aB4wLPe|#gN2w!yIrHD&Yg=D^#;HWFpE<1xP3Bh?uv4@_rqV&4cfbwos7LQ^pX@$LU z#E))F@lYA*ueAxGJ&8!wTd5*0x}1#NZk{T<2vmA&$Z;q~;{?*S9)`hb6M&SS=ExU9 z4eZmPG(DS)km#{NQ}f|SK?7MSEm$;iI8v2Y%=9l!#6f5A@ zHVjIux_drO-NSRF9sE!~Wi1GOaY?%Ff`Dk>q|ZkF7r&9dZ0#IR=Z}i3lnpK_6csCR zJI`sai83Gb@6cS?5P$dkhA!W2oa0(C_&Ik{CDUG6Aq@$LO$n7w_c@Uj^1H%bv1`S8 zf-m!^x4z;Pr@Db+OvCcW%#U6{TJnT;3W>9RiivUGw^~3D3?Z7xF&B}U&&t~mxYLlv zC)t|yR?n~pef!(0##uQYB(7V(KSGgUGfDB1X2*;ZEccvVUkQGF-EsZ_Z!O#OMn({; zs*x=?1V4KZ>jr2}9U7I}Z5g8U(_XdggZ{X@;V*0l@|w*>i0luJDrNK(MH{7bMGCSr zMFU*??=(Zhe~xw~*cQ8Y%2?^Mm1^JoFjU}#%HNr|1m0Yv6xlyvtF|GS=3Vx)C0Hsq1~7{ew%CuArkymtA(){(%UOKLIlDS!sdPqP5Y*TKDjH9( zdoINE!7PFD;=el`Zv+6Y`ME1onpk;?hgwXavR4AgDi_d%N~!x!-)+g)HXM9^NxL`B zuNDOHxg$d=`v)5qy&i!AlWU)9@q5|I!aIMMAAcH2DcM?zzIyafF}4&e@@4wbGT_!r z&_Fjry&WvW^pc^} zN`sAwj^xakHfWNF!S*C&JG!1MFyF*gYj@_`N&(j`Vg6`)n2Dv>lHrw_xqni!4;ZUM z;#(D&RU>>V_}P20*mG*h-m_@ZDr}AU$YT($&4SS+Ycy(+azr9XP03Df{aXFCt1W6E zw{gpR?G`7OV(TqTUpM4_+jYh4wHsw*A+gL)N=B-4dh2|*Y#w0VQns2J3W78LRZ`%X zHNp7O`Q03g0~0omwJ@?B)!fNbo` zpf?~}B}miarSLK1U)k7y7!7d$ha95SvY&eL|BrH3C7|h&P~k?8`hUaa{y!0i{!cAI z#6MJ^Z~O>nEmfB3Z#q~nJatNMU+ciVI6LM1r%ow+`H=CmfXusA%Qpe6iGmTc50Fg8lB4Z|Hb)6kQ~{t5wfBmeptpuC z4fXa%#JTNFXje7K<;J^fLwX|h>0~ZG^adZ|CI%@vXYbz*4|QhU<#Kp4Xp*|D%)j z#vx1k+Irs*{jYv1uWRp@zpRmW+06ml{ z8Nu}|Vzf+iD}hC;+B}BL+#C-Q+RTqBN+`xMEz_+Iyv~2bd3E;e?S< zh4@O*DsID==k*toVaO61gP0pz$srE9e7fY?`R0Ey6%Oq2YEJ%_snBA`V)3W_!(_ha z$9#l}gF<>h46~@w5~d13FBh;SCbn_!M}Z78hrk3~I~KSsobM{RKMxi{?A~bU-zV_ZlnXI_k6Y680tdiw@b6FYOi6xe6?1JXN*UKe%A|?{yy10=ZO&{^IwgW{DErHOzl8~YZY9D zo7rByd?ES4>DQBycGFGR zYaH7~1Q+@$_H3s8ar}0tZ%w@LC88?_ldauSqv+g$n{EkfZ2BvG=4P#%7gR+=r_=3P zaOyRuv!}TZW+ffQL66|WV6G;JyHiOKzrkAtRB_6T5-K*uPi;6RFskCbX@wr$d8>0V zz(Ihmqsg|SqUQ>*au}wVNlI}cRlhK0#G1SCaRzrLh)l&ey>?Ft+-KXG%{foDjuR*h zpZmgodhQupDqa+MrDoer*zn=(+eq55BaxZREb}6x<&+7lGEVFon;2iyb_Q*lfQ={V zd4DAf)}_LkAJvGoiLgT9RvFuv2G2?M3Hiu|OzD@9c+5k^ z4I@s0YBm*Js6jDzAN4o5mCGyWi)_d9b>Ox>?&5V4`VV;zDJr$mkBhnp9*>sdmYd#2 z0KRk0v*vc`+)DS74fdmP4lqX*&EeCPU|CguMn_$%r(!M}oImjP!vAPOF1w4b9sJQH zurrdYN-QsU=j7py;PdPgXABu$Z#DV-?ANEuIYLi~n1hM_y4*~$fkN~Qa%aT_L}t8oBi~-ZN{9{1a4@bwsA>xmWnb)FZH#2JSJb^gGMkw#xjLhVML= z3-}avc4hMBe#zA<+y}LR{kmk#TKUoZ%-vm<3W6yhEbYBch zmEyY0KpYRaZ#trmd{g4UW@+t0C3pH1A8l{DZON&;{rJQH{=RtM%fRD*AK;3Ra<+!SUTH!`MxwT%J>9oCiRsOu~3eSyBl5Su>UL zL5*hJM8Uk#Te$&^Lrt}u3Bw_{{>$e@5c%U1+s||jNZyj)<~N|c_sKwt>R2h2WfAk{ zI47me4i@Czo8>8RRx+eH@D|ocSkfY?f(Yh@)UYKN9WIyxm0?~l zabZ<#9c3q29j<`++K}r^)nWjUK%XZ%-vXQxCo}@MKr`>Rzi?bK6nKgzXRE~g{t(4^ z?4La_E=d9?y6<;Z3qQQ}kXCx66?XKvkTD=Ok8+d>$Wn5gc|sfEO&PhsaW$+_oDqJ? zPh^7bWKMwkAz$%{xu-V4N+X_TrmFXS*tyP?7dlk;i${OM5}vzdR~wtWuo`AmH9-sf z6P^Pb^wxvn{Wj)Cp;&Af2a#XjPYp8vRy3He`8v75NUrwd@u68wyu?}AR&3avE zSg1vDEDVlAZu$}WmE9(ft!vtt8RQ6H82Edi@)gn!Tcwn3?bR14Uzew zJ)9ymL?L&VVW*H$!4P6x9X>K+)MWV4Tf|O&4XU3mcZ(0m(86u^(t2m! zV{=T#cxt=M+{cFID^o~OK54oSgwSx97Nzrkn)*Vh&->phU?gC;G5dcQK2GI+(CDz&f z15Ax|-UVw?s@U{G0Pc+-JwWtG1Q*<;*w+NXVj%mNyOT!G3NDq?xd-hZq%1Eo30KDx&0txI zc0_4otY0a$L2B&YDP%w{woHs&%U+r4{xT1gx=ouvk~o@jMnIeq7U+S^K>&rTlz}K{ zc5mVYV;hRnuu5eFMq(GgD`1r-McX#`8w~NM#TTnCS6%-qQguerKg>_nRwP6QK9#8CcgwHipqm!zxo(2s2^#*6mGGg4pcpA z5(@{b{Jum$7>GtV>gvjl+jW~kk9~?Oy}PZ*0@G_nDzjgP|JbFKIN8S*LYee518EQ4 zDn=-W>)>07jstE8w?r!}MHV0Pd}hqMI~gckTt%9GPlY79xc>ZPe#6T}%5^|*5<)}7 zHZD21homhDCmo{>Al5oeBe;?4np<=@(PQkXK1ir+${L;vGQ>7NTKrYNO+tglZg zSMTCp9s_R!OWZH;Or`k70_?k^bu|+%ALfSp*H_0XmhdKQ$v$-zK{G>{B){&16{frk zk!xuwGE=y)t94L0*&oGpDkyEBvQzYuWEw4Adx+lT?}cUTr{s1qSd3&ZgSvcbj$G!n z<<)r$qlT!oF%cD^zb9taPxN$>rYVY--Wr`(MDKDQ7S*=M%-gf4GBAnyvZ2yhLBk%> zgj-r!+N;;}9`0;kz%zTjAJs_RsJOB;;mbYR3xeU~O->H(ew#MyiqV7BwZAiX-64Tf z1MbETvS7MQ8Q2jTnI&anPd%Db&*Scai4`iY^sk%fhZ%O(Jk$Rq9&nrHO|U+oAtv`%Q`F4#0EwMfS6$yhdr}2fsGfa{qbb_= zjzEPgrwM9{d+i+IpD!!cKN6M`bkjAwpLhVCui?^IaM9S5eDNRcs}nC0Q%I9?qAp33 z%TxF?N5`!ydYJZE*y9rEhX5NwS>Yf4Wto#J*FSdJb{=s&P*u22Zf^8t&jdRZz2XF= zW$&*&9R$ywQ(n~0(ggT$ec0Ouv3A8nixXg zA=Fa!5Bt;7`=hA2s^XTC15Mb|d-JIQL=71%Vok0(C z$a}`9SkA|gI2)?ib@8^`J>V)X7v=iCJmd{Argk~~74sU&;%~8ljg%|j?^8t~KVXGj zpDjmcbnEJ4xoF^CKV#YFAcmUUhUu%5wd9{4eZQeA6Wc@jqr)5+r3*B5X0 z4rPC}1(s5BkwvFf>&>2o?A<9XdHy(=o||0Pp@xsiL~Zm+-Bw+aTNjNk4z@(dI-lv< zaoESQ^jQ|MJh)cV|8yv{TbF7rr$4&vYw2@h^|D%P*;auK1~boFacnq(U*s&W)Li08 z_aPcv3|OMo0$$^+=E61|yDf?9W)FpIIkZ`#7rC3FmS|qB*Fmq#$c{t}sa4nmM?|mI zg;y7|3haTBfmeUXSHu2WjN$7}VXv;FuLj_&f#Efl`PI0H`Dze)H9WMxx)Z!kAP;Mk z7XL*ws$H2pGV$LtJ_{urgbs@TL2n#79d-!Xgz5{hbdq?%RM#|lWR# zP6VG%R6K@%gt*++lKrt{5v?j#$OiLVZ-azj{0T%S(u*5|92?>t{`&R#A=_UnXW z!UkMr0o5Q?vj81=A>XrDEqo9C9t+@KNt(A(Ouc{TDJK3)Pf_wZorG%$v*)+u zUyfYNwd_CQ`@i%QyZ_KrtSmD-@ITC0?lXt=HhMJv|Bw+Y!?xx4r^fV+T_fNxhEnYf zKUwyd1QzgWa(ngW`%6Ze{ExcMn>vo-Uv(UtH+3A!e<>+@=_&L7q}q0mfMV|*rCP=QyrYU z*0!2_Y>OclN5*Ug4GBlQprVD4Tz$JtegFD-Bo=}ts-WbrmdS6Ug||-itz#y(%jQwzt*2H$TR=SckU`*nK2fPtL!jIl^K2-60k#csoiI-a!KD@{LT=bd7U@xxBxH@uO$C?$&H%>Iw7$DjOE9(7Yay=Z(ol1v z7P1W}YMOO}w*WjPUg2(Oj3Oec8PhY3tLnK`U#q!2(}$VIYB>oVVJd3H3v2i}xK*25 z6-cyLK{)nOqrYQBl5lP&n7ECHnLexj&bYSNaOpYhwE23k^cIaPpROa8N6PnP(^+yV zdQ(u^wj<=gn6Azr=`<_xq6fC(N^_$8S=92J)NkF;jk{qUu(T=prANYuyJ1hn(w0nc zz1ML&3j5)GTfB&+K(5GAy@0*N4EZl z*k>jbf1R0|6EQKhnYzncr|rFag@88N^4gnh?v?VM)wEAU+!>>_Us|#iVvC^7P)nIs zXkC}hN0Oc{6#A{u-bocj^7PwOi-vqa_U1dX*}TRuZKc5@G*zY}_P7hol{0trN{XjA6iC{TMs0LIr%uZ}!Y zhzRdh#@g9n)J)ZB8zVYu)%2qd3mISU21yO?e`Yw+lZ>JMsH`!;Hm8GwJ2lH8AR{}4 zp|9zYsg?3VbKBgm0GWMZ1J}I2JQP!&=fd<^XKTY4pW84D!ObBY^OEk^lu?Ya36;8( zMq2M?gxruT!zxNf$K4QFRAwZ&NDVS#Z7M=wnkP;v{!#Rf!&aP@M4XFBk-OBbUxjny zSDH0GL|G$3rREOXf`ve%Z%Npl+Z>Lq%VxSz7T3>R_R8?``=h2Pp7o_H_Lab2rso_% zTqH-5VPY(aS9&LIkSh;!ZLrh}-BZ92qS}2dR$1p{KHT9}!9`=W^_^Ph}qiSBIiO5GA+bM`*h>Q_45w2KDcx<_zPQU z;7*|`r^==Ja3);}#xLdks6u-buLAP()8I~!*murwKdfuMU0^+ZoqEj)r@@ z_iy#H=QsCwPnqVhubI8g_7tirk&>Q$L}k&z;<(E(I8=9T`iBH{;qqwO!|0PEJr=B8 ziSJR(DO>lIc=b~Zr-K1SEmQGm`xfkz>BilJM`C!}NO7G@aph@%#ZQ^{8|7bKz7zU~ zZu@ys*$}vqMwjk3`WI1GGqFj|<;+VL3ccba%*%)C5V?^T0<1HD{Q-p0iV(9SuAfVn$l>L}x zx3_Bc6Gr8gYlUhLYdvomOm*852_0tva*sPk`gm^bt%STsdK`qL!^CWPk}KZ+#Fr4Xu&pDbVxJ^C-F=j zDu}?B8m7Rdq~kPK^bdjYq&_$5EkH{EsctU6ZmLVle$e#i)7T#^wc;&Z{bg0EM38I7 zGplwLg&5kJ_6pwcR3a!|Z?qS-h|>besG%-_OIhk+MdStRE;ws*S`jz2yp$CTe23ZX zp!t4_rphU~SjUJj;4L#vEGp8P?$(aLq_vl=HKe zsG8DDG35b-@p8HC_)yB6O;YVXTo({l6SD%Ntd=E`x5_Weh&8RP2m|}sePhU)+io(d zf55%N#xbE4OHqb0{WxF3iHli$yqH3lNmGSbJ4V7?DZ`~!rSjt*0XgUg_187Z>fY};OukO9};kBVa=aiAO42kSnZL_CaOvS2?UHf{v z5j$KFlzZ4G_0=Rq3;B7&KG&w6vOkK4H5W$)a&z8&-K{ax-(gus+Tcx4z*9_;(5T5MVitPL)z4%Hb5z>$ zYGT^P0z)1PL&MGph6gu$EBFs2TidTjL!Ftf?#B zD*DzqE@8WX1{ycJrE>u$aohUm$u&Mo^ z3#xF)j#%^1Tk6Y`>o+fqk(&k}qUo-o3 zU6Ed6=f;s6ysUD9v9eI8Pj8~({u`?La_5$aH#piyEPoTM^0@XyCU9aUlGTPR^Rh<( zhnp*)Mw=50In!)4x7#Lhl^BY~psT)4iTOw)%0}=Y-c(t1nZPT4f(DNA#BZ!F7oj)T z+uX=xK;oDgfvnzo7#g9YmN)pbmjGz-1z&Y7olBu2jGZ@mkZfaoWPM(XJzV2|ux@*N zF8qzuM)TaU6M^zndrBUZt7q1&lU6ZI2P?KtO{!-@_R+$njy9bQ4|`khxzGnsrMHuV zg4|V);<0CK)NginjQTz+C-r+0q0Op!yf1!o_~G-J>T}0? zbPQ+hsT}fX#mN*{MbZl~agl z647vXo0j6>2MturoGf+(Dc8|ih11`TRHq-$?vqM+5Fu2xJc0qRw|J15{A>YYe2s(} z4`2DeaXT5+Hhv$_M4hEns#MZg*FlDnDp$#OKIV&%{nhZh|Bi$Xt5CI=I8(q`@f&9` zRr)#*i!y+lh)`d4U#|4m7!Zw8$ZkBZh&CaP3qdInWd9EZBsOY_0!}jeXi3-rYwWJ%n|NO9 zIF*45ykp_5<2Me-B%GeDhzaxD77A6Etwdtv+@a&0V$C}gUSvc%3kvZJ0!f5Wq`3i2 zQHr7s4e}y|=tIzDS_hftXJLWSY&wJLbDIcP+H)D`rhr(5XPgvV;TWA0bT%cONBEL4 z-+gkfa|cuvyVhNaYm_?bwnYcML7u!%&@;@ZK&gy>S!EFs4?zyokOcEWK?We)UBfC z3QRXpqrONwRLd!6n@4%ey3iY-75doA+66Pht)cjw!i$bZS`yU!wKufXpHB2ld zmb7nO(;Mgn{jH-OkqBDM+s^AgdIPOoi@tV_Z=e;9w*U`yyt;qsqG&jT^Yi^5cBMd{ zAFyR%ap)Cc0zop}TGgtK5tWUUpJ50`deeI!+TPRAVdQrFuVBaeZ5>H)R#<)F^$>m8 z_LVD6mT?K|{y^1ZjR!=P8w>lwPp{xA8X^j|*6 zw3xOjeppW-eh6lASnMXG0gZ+L1M{koVfi1K<)9kwh()vt`}&Tt)HhJ>*Al^w|B;vtUw)%k(s{>i zp?XDhOp0Fm`N%BDTH%Y&yOE`F#;0vhslJE`lp)t-v2`vdfp(5|56yb^!ORLmC~Ahw zFJ(s6y_#rf+by;!?Ltw;aRx5jaONqoj_Zs4Eya$S3dgx6jt)*GVgc^@3;zPC9Dr^9 zjYcW?H&4?4pi-FM#!~-qC52l?E++hilBm7$BIRRm0{)RC228@)ioYRL#^G#3_8=Ps z|3RQ=yspE%Nhbdzn|$?uQ7LK>|3anEHYDaQ+Dt9mWA2_${0o&*qaK`nB%oEAKs}=3 z=}D?_1dig1FKk7^?3e#gfpp+nc!GT9fN6q1vNP|Te$;YQY^)Y)>Y?T3IV0UHc2an3 zcO}Mr_(=Co?R_Q%pa3Zok!@s z^xTg_5w|55I76wp6$nk;dO7%ORUyq0It)#j3yzx?7;V2SOps27UXmCP`Ydp+`QRHF_vHR>+_V2bXoM_Zz_(qLy^nUnZma0e$Jf{!qKx zfb}MPlXtW>?`bExZs1baPCj$51#~ygkO^+@Cp>>ta@dWw$ka)e9=$;Ks7^OVy&3T~c?wzN# zeJ)qWaBds?DYGBy%fG!7LuCz#n((2;6Da-mW4QyNwAEVqC{=pP(_wv6MUz)pHR7}tx11f>kI%b^)a)1B`G+OsW3C%Utb zHEiwZh>Ao#tdddso=Vhw>d<?G6@WEkryDrjk$bz~@1Bqg*!P#mR zXSdXtE(v4fxTn)ugike(EA~7}tp}N<+vY^#<2s>Pc^J3DsY#Yn->vw|=MPXV2m^KJqChsQRz?Y_2SaeZCw(D6_y- zGzAL~mKD<9KqTw*#kpsPWe+8CZg81s%z)S;>dP&FNHTb25nQHpXsg%zuuqL>o18Ej z1A_r))JhM)bC+s;bU!gc|HFK7q>^|-!!e2QBtpBMLjPi8^#jx23=!&WRVrpi6py^b$gGwfR~9CE=Ql zuXSCGNh=ynG{G412!VIo81=M{3?!ar!-yFOcnOJ@EFK3)zG5X-)hlY3DV}i6^(!*; zW}rp9h#OvCC~wbWF*{XQ;B8%x)Q(gbyf{Fs^5LsO*EymxJB6heR`r-g5toJK0D76; zG5Mp~Df-};WOu;n!21g!J4)o%ti`yMo~sXKh0PFVKU@&f^bGJ907O8$zubMB53rI2 zcLoJyuW4qG=f!7?tP?t*4dWhnK1KIz4Tk@|gJn5^Ji9w3rQRP*gRp36TrfIB*flGR zda{QY3zyy|$?|J-K4O&r6p|BcqQpxa>$#p)eHu$Gbw|Ecn6;9gfP{mPCU(jCWuKAh zl9+y7Bw4EIaC-)@#x7nq$8tfV9zohsw^G$cjGAkGavo9Asru6&^FaOFcjYjwW(7>-3wv)HM=(Mm zq_8htSf^Ek5U#Bn4r`Xy$R11G30;KWmzi+slC#h5<-eD>#4JI?^~(e4Gj7tCW_7W1 z3-P0mcc@K-yGo6aYx-8Q;C*$Ylj^09=rB8n@W3pcDxaGuq8K|+@Eu>0yLH@r2~%9` zVJvW7mf>vyLg{@=gpO%GuJssWE3B#aG&_-*R(mih$TjHBQ1x7%i03{P!5-wS3P%k< z!UnDHVHuFsu#u4=rcm94a~9>;p|)XtxzW>bTZdA2_ z0i2m;MJ}NOKo7?ClHpw=(D^wSOWY2XVz78Z4kC}>4;JSlEf$)bRtoQrY4&*{pR{XW zjMHOP@;$I%v10m>KS`k&2_qQgS~Z zzTkO-sWgw(q;&lUe4GY4VwU{0Cd#XR_HJloKd_BDE;xGmlcGq-CMgY^=|Uuy@lCIo z7Ym^UkT_?#g#u};9r^SJCEjnc)g-9ZV5{wJHpj!cgKlz(jSKQ{4|mUA2JmpA-c6yP zhv^h_Act%CW$|xXAVW~T{ zGO#bo0}Nj!3W}<-k$3_(PRfRviHUE4JcZH&ghYIz_W2*L+XuOyDa+v&g(o6dYYF-) zrmKI%uC<1tqO(B*8!N$vTrs_m%VBm#T=aTPGHK^sOVe-sq!z?oJJ$s_OR=G+d)IPKc zy`VuXg}lY{N#sVJN+Vsf!>+3$Eq$MiAnbk#@XkaW*H5Wjx!xJ$A}B|yF$qx zq@BPBizV_fq4j*-yCmbqxHR*)75T~Bc(H@X8jR2wD$o?{V>(@kdm$pydH{)GvpDJd%WfVX? z!EmtjK^S$tEsK`mO0Jl}Ci<2)ddRdet7dh}&O&DjF=vV`G^jQuLR0*C9+fLyR7=yw zHTt01pQ9Y`gMLm{rrKz%R_@}!wG#idIgN3_OHuf!D!M!32kps+PW0it3On6QTjD1Zr?MON z8-J+)EIJ%LRkl14FOA05ScCY`IM2aiEg4@P+ek5)`@HGH7cYqwH*Cs#!X-{m z=@g@x*L#`H+@_Fk)dE^cTbf#OMy-`5v4l!XZ;4O37?CT3%8(l>bU@g(3f@OfxE#gU z8k2TJ2bCtXK*f63<4+Nf5whvpf*7;Ljx$g1D9tpK`yQY@t-jWRnHOA&$~HFq!tQ8D zR=6<2Wyw6XDo9!=^soP)&GyWDabQ_6;# zT0LC4oYHv_tQ0LpyzX3;l?iMX6Ryw3*`!#7R^W_>$m)h{)U3O^?0->?wKoxO{;hkv zK~~#z#?E*gAfI37w{zyq*HRq6FN>}ihY)N-M=s z#mRPzZJYk;$u+FJzG6TFQ((={()DDaLsH~KMdFeixAg27C0y178B-DKk11}OZW5{H zsS@?tcyFlm&RV}D78|g&!F+1{QqnB0yZ8Dk`@t2PA`lk}1p;?UnK<)$h}7v`=z|}s ze_{^3efD=8G$m0b`~8E4cmZey5o%!b&GiF0{REcvcgO z#H2J1HUhpn07XNF80Na;kF?5(C9#{PhE$QJ;3gf-9ejIjr6t?HC2aKD5J6WnT9W}p z!7*rpVgb4&5D4b?t#HT`7dis6;2qD;DOzK{^X*yDBX(zf`{QFYD~#jfKJo0DWMB=X zDa{UvEg$Cv^28MGFY)ZrffYNrR4dw%yF*~aya*u~+wM`QF;AIbJ0or3@FPgsEk241aI?r`?BAee@#=z*Y>kfVr7%dB$h)e1bLlXOA^r^FJ|D3!u zuflehfsl_B7kLo0r!u13V+^|xd+(#NykVWHLfz{a^SS3Tj7R3IU%^OyN7YD?GybZC zfUatlD+41yWGjGh#cC|=P-4xa$Y_pJ@#3$LO|!yY_}5N5LZZFyas(E-X3y3yKCe3m z%KT&u{}wUh9;R^dx|6L{XhehSY>JDR%E*oG)w6o>qoTqd3q@{;Y>DA!DLrzoLS1En z0{4h_P{M^d#m39%kk?ib8JQYMVR6J*e({WGr9wy%ce*nH&R4dG``C#EKeuV9s0dT# zm)zoWBL1^q3F@_;aYU$wP2XIF%Tgz~z=}~k?3<8*2N=9q*s;KmG{t%ZZ^Oot_O2IJ3`vI@75j{ZfKIhg}HWa%UD34DU z?iwZBw~sw1_8zIRY4J@s?ksNKR>&9)_eZus3&`}{O#yC~^KD@~_BA~E61_|NkC_nn zBQmAH6%ZwDrQPv6r_AOFQ}~f@`gs=kVZPrtij)j7m@gh3!xfq8>SJ0YlePgY9LmU3 zYR#lf9dJx618|V_OtyVcRH2Yf%gg9wQ&Uq?WJb4Ji#L0Fn36o%8}wu034O(LSADEc zw{fFw&3{vvo;ajXhPx}Q!=G#-kfowGYsX7OtLL3hUD6sqvP>_D{af5d>{gAk-bVj= z{r`&FIJ}A5pdRH9-z^#@L+*cRXqkGA!8W$ct#6rp9W9zL|IJNmH7)`$|0g%;g7hYI zGutzOKhYx;B!kkHDpn|M@yUc&-{evG@x|-suh5SwgShB14~deaY$vu`8tFflhsh#zq7u-WirG6t9N7eYTkY| z8NEjQV%faT`KxF{`f7R&R^0!~`Y!xm(O|CE%Y6Bpu6#>(F7Np-(Z8<#{7dt`{2Czp z7ufTrz1;X3t6Ueh)M-_xu{_=?D6u@~oU=H2B=i@4^zRzK|G;}@EP6_Gz<0=R*+~e| zRAb5i-1^jL#i1d1QGPClQS#_AtD+Sl3g}=)zt0NlApZXPc@@TUcr(ZQh2lNxN#}=# zNw1K|1GD>eJh*$NAQN^pAx!%m(!!PP1SWgIy9H%k_t;dF+_<7%Hw48&(O|QYZ zW$qBMoTJHZJLP1_(9mLtKEeWgb&o4BT~|!sk`2jJC<%3$MxieUw}bnbCXERWkk8>% zftg_T&%iG}vTac;s2#GdjlWj*S1i#itW7d#GvDvup}bxL59hcq8P6cB zC>^S{=%vRVb?I`SR&%F?TZFUJ4lGqj)|xP;XIsqCU@z()DU&T$rx{3^l?X~M&XEc( z9>!rwG|8JRgt=0FU%2ewu}R;`$x(EnfRetq0_(y`5tdW`sXjs+Yg8*&oiYY{e}c*2 zdJaMPFhoEmOf}Rj)EiB1I93b8SR%? z_$MRrbQ9S?l?%oO_XU8Dy1w#A<9`Ic2Lnmz*!QVX^zk*X2*L2@8jC(j6Bb?Q897S9`PNQlULasnFG!apQ-UI4tEOPg{54|4%Q&QP?@I|S&8ms|Mua% z8e@<$OIu?HX5So1b*qrOi<`@tN*Gxp%9fI3vzHkEXAfHS#S` zi8lH(Wvyp!q3pOa;_e5Z!PF4}XT^sotjiy>>_TVk229q_YIZRm;rCLP=A#?bq0Cym zoy`TyPqNB@%E%d>5!cYIb=%1yw-kwah~@)#Kf_K%H}^wcUzF({o0a{Ud3i)(2++DC z{~=2lq1kC~40FR24t?TxOI^T$cRwHva>XWoN}H+%>_Wi>H(l@fqAK9aT>-_x#Ki@d zVlzS|h*_!zXT02<581NV&5=gYr5;^pY4Wix(&@T?XY@EKDN&O;F|#TZRmoZW+7IE3 zd;>@^&lXTyIb36*t}?lOm7lWoAU>+rsi&nlOFDS5kyr7h?5L^w@N>x5hBIK+F02d} zajB$IrRv(PwJlAVzoktbnN1H}uKtco8SpthXs2`OLNd(@y0w{h?@&tK`|7<4l6Nx_ zF5hfaXm8ahH=CJyFW~@e|MY5R!7r>{4x`}@SF^MAf8Slap8#z<1JPmF9Q2g zP;7p86KwOvDLr6{!UP#}KvXn$1~0|TF3{hj(DC_8g5e*1OiJ#e!SLig4Fzq(s6@TV zE62QI=Vn0gjyNjsA)RfpXmxZbc3li&n$5-ycXix)`o>`)lXMfLL7`4)#r>7rPo&lX zCoEYIzP8#E|zQDl-BBu##lA8|FKE%GGtPt!1JQVP48<3 zsJ9cr?M)iXom(|kynEen#aV^s!VO%isGrq7QR~);Q8@;=3IBEa27$ zy(aQ1+_;sGs8@aS+6>T&;`+=`6m2{m{#-B&ut}!zIHm`Mg9;(Xx}k<(Znb?c7yWlO zePxt;?lPWXR+Y|Elh<65CVQ_Y^+5JEB~+`vhSaS@X%452c?8s)G-V5o^h)%IW5sQy zoVD53VHdNUtzNc>;@FfsM|zK;rv&Ad=%>6_rAudJ!}p-U4W=(etZnDdWc(8eCnH(a zHlUM;jpkDV>#(E^l;xRnRd?RUy5Ca9;S4OLe=D~1m9o)n{s&mdWuY!}`FmO{u5q`r zXtz)TD_B6EUo=akQ2)@z#;>D>3`w7Xel_PiB$4&^0g6|ztb@{~UD`d0{gd6Y-8`-v z?g*pMBh1B$D4uQHkz0?^C8raYn`Ia2zAvzn*6;|z#u?$WtUZ_qY3Gd*RJ3hRK1Vz? zs>};DN(K7`s&2!ivcXWU@n^n1dro@m4-Q>}vONT}159WBZLPl?MyU(jdRB~B4M*7A z@GI2y23F0)mJa5<dVjOIK#@ZaUTP+lM(w5$h*NE*LD53ySh2nplw3maMnfibtLR@Tzm%29BTE4MCj4;#{bhrVEFNj}mVaF0 zI^cC8`xp)>vcGK3(&$?#Dbt)E>!dry<4~1vaR4-457T_)M#^44re}q%>{Z9tIK zRY;=igu+sB8eJSjq%M5Qi;9pPKiQWCi)P3HKa?=0HkuZIxo4a5?^!omr#87!W7#bq|KYJ?KUjRunB=rp>TcU?hQ;9q5zY0K=t~g4+T$zxsi=Tc=Z&Fjai58_6XwbwO zNz}|%oQq;O^(Y4E(ZsoUp6K;M#}+3+?l=@*AJt5$Xnj>)j&SAaHiKlShr5jq5#~55 zS9B(65z?q3-|=-+3hX>O2c`2`o9=Y+yhk)!PA|}`n#%*DNZt;!DoQBW*aZYG5J9qv zKTa1L-URpf3_bSsz6Z3@FJiJ(^(11}rBKFdOp)cv8sz67xTM(yyQNj7J2*1SYCQQ= zFK95u1j#-3CG7Ouz@ak{0%}sWJfN`o53N$ISG{IS?N|!zjJ;t$s>7urJJu^WW*Mms=r6qhAIgOQoEb^)BTqwG~d- zsN5hQhmqKpeq=+Rn=#t4Y(C&EezJvX$`y;h^u${6+>@sODX{qlsovW?nsF@OhiK%c zUZ?@QoL@*zpRxA0Qn@$K5o`(L6fL+6J!6zqD+XvkFYJPw8}iM*DMR7q2q{X7UYNO> z)|MF=T)-~5)IGv?()n_T4~-jOPw-$dpYL94PQ5p~yY+;&gefikaWGYh-`>PZ4A7Dv zPTRWCb0fz1_{&RNg!!Qyrxmk?mZJQ+N{H%qX*E8#Nm^VuJdh8mf*1pm#6bLOg)_2G zO*1;Bl#dI4|1nTql@^d2gD`c7?9H{N@NjNYgoxNs*H=73e*{j#7)SBmYp?qi!Ya>{eZ=xQf1L z1SGucE&qfbpBQyUubI5H=w$@Ox{(O)HhTBOHOj+wqtec4NY}x~YD8VV5crYRF2#*X zx7C$P<#hPUg&z3m+2cwNgny%4qF{cYGK4=^4;(+|9icS$AV8rsxD(S6G!b*1 zSFSn3@`((}4p595q(G#{IpN?nxr8hlFgQ_ZlH@S^e3!jMF*YQfYy zv1f&$bcR6KJ>&d|E(`D8>1+JH8c)}GMbZ+CM74;Lt-M9#*9?84b0mEvcEl#_3k>d- zR%oBa;la*2=D6_SlI%)O117eRGQ&rhk?V= ztuBrO1xOT&*`=`{=GWh9FR259cJ%(+j;`bQ0HipyQjXrN>yjFdocRQcjkL(Iie7tAeM)SJ%|x`WVu;~= zN_`h8u4dn?3`?~(6PD;%s9?yS%jmwPm7)a%@@_k;fMKUsHY?fp12~T_Jk&kC0i5y*V%2$a_n_iMGkF0gV6YxzjA8ygpYE(x6dr+O#M-du4DHHp1uw7`Sb;(6c z>1x$HZd$tC)MifQu6Z0DQl`P!WR}n@Gn;YYQ%51+%+nO55CXE3lWDuuJfEKWcDDf$ zt>?8w>KrJg<%E3)=Mx|nbskq~Q+V(T_Iv@py2eo(nk>ABOW z^)~ByJr)WretA+$jF+{@OT_eU_j$tEkJso+iXd#8>_^3%6-WQYtQR@bOUH6?7>BT> z6+{+lONrOGBPN@vbw|FX>iQN!OVy?Dz+|*K{x^G4y@}1kuU9)<(5s2^&4m2wdJTBB zbCA8dVs%S|EMmSzi@ik?yqfl3O==|=|M2K*eC}=c{x2}+h8@~h2B-I6eN)gr>N}lk zk5&Gp;!m}Z>Ti{do>VI@aDhQl-(k3Iq%R)xV=h{a?zW1_V7>T#zRi7p(-!n~)hr88 z`C44l>8akgTz4bNi8ZYiz>Oqm0@%4|$S_HIQb|HJh>?h)IuQ`}LKp2-C~8@Hmb>Gv zdrSRH!8I%&_%G%CRr!091Z19pYXJSt6ERQzP5r#FE6M&P*nfkzy#drz|B~zf8~B#? zmwO4Y_cu?J^|$!ze|eW`fNH1+4r=upuMwjT|6f;`y%9pmzh3KgM~>GQhWmN}c!$5# zQQohSTW&_n+;14T$F^n7x8%Zy=vtG7#Q&u4#>@fJAG5x@8^tK#WwF@kC;(Mc2D%Mk zO6VaVOvdRfMRKDZWD7a@@dzRS0Rt51`a)Yql#C~p7ho~@frUP@m4NSP8~er zvLmulV_-q5bK4eLuhq3AwiJIIpuJfF8=~qlUnke$uLHl~ux@JY*JY>I!HCi80Pi)j z$>4Rs@@9D(z`Qy$zb!Gm4)PMQgOaRu?0urwI; ze$XP9pV46i{0yF-u&cf4y6fR>pta$#t$+GPEJAyhcJ$Uj#XEb4Xz}5yHSGiCt=t@x znTJaEeJDUH+KGPDTOKLfYPHuvbL`P@s?+indD z{G)yaiknE7P2W!F$)}h`;;h)f##o8zAv)^)?u6d?6uRWXFJX$|6FOhxk^$mkkK7hymnQ!7sIvE5 z$mCs(^CvQbD$Bp_9RX|}Qr4*>%sd)aEZEd`5oh%Q>^9G>yhhZExO5#yX6jU&jy}T5 zxm97620m^|eg`uTR@=`_Cesm@khgV0Pu+Czkf)7Ic*iwjtASUTt)1w%kl-q`^o=8h znj19`UL8-zbpkTy3<5NB-80)G)Ef@Ztl7w!>_2$SR?u~=MYr~Gy75D_g|dG&T&>Pe z7)Hwlm)*r^``v3n>qAz={W8GC_%OTfxFVru`g)O0pOV-8}^R-K)^2prbdl0$y9h{>Ha)JCd#qR1)m3}#m8ETD4sgT9Xk!*KjzB5s#QAKS}OZZkV z{i;_g@$b!Ql6*V%{i$Puc3}71;lP^2>7NKd zTmYT?3V^}@Zk3j$N;X+&`C(gW*4^LHu1D2q$@Nf{nH%IBEl$ujNF*L%rXHH=L=tya z6dTcQMwJjIAVj242MAr(Z!@)F^pxmZS1Y@7Hh00eXY}aZbIo*szdO$DW^5BAx{tYQ z$#FW@54f(UMPWGMT+9i*fV&X8tKZOG(Jx-9loWn+>rqWTJuwcRiJO9iBTP>@^uM4y ztN&Fl`0#zlLZbJ}1ck0U{5%YNVULolq7wy2vngVumcPi9#Yh8f!L(agczCY_D&In4Uwcv~$R+A_pR@nqRv8q--|;>wl; z6MSf9Uvf($pVE+@$}cAr*DxD#max#G<7mg?T9i|a#y7#8=*X`{MBwL*)`ab_Jm z_N4RQ42HBu1{;}$DK#&3sn?&^ zAbeHPjbEI!8<@Iia7#Wa8c<#Q*Ca2| ztjU~q*>|u-B(0abbrKhmCgg>CS3~U8$#?Iy;uS2S;9mWi(f*m1F+ip+fRU@zoxdE` z^$Pc_C$@}ZQcePcPP^Wfw4Q=qb}x|nCX&VeXPXoQ1l8VXnpcH(H?`)Gof2SZKm=7& z!kN>})V$uThg}T{Kj6yEp(vN{X|LLII#raIS0bpJ%uZ?xT(J$nI|Y$OO$zi9%92Y$ zh?5TIWaqmLoYBPZ|J0w@VW*iTLojmUkrfuhl#r}%6>*tJ{uEcdXvomQh_OW| zgbwqUo(!WBPtGr8ADGFM66zrjqfRBRL8W;h2wVc5@fxfAeA$M^9SMIAhk@X%l^z;# zZ^NX#@YzZdw11+T9J4(zCg;_h`c)_ibAEm_PrCHV4&;sv#oCATX?3=6Q>pvKR;DoJ znG`EKMa8Au#O?`k!}X6j3<}N1u&7I|qNJMwKCh7u=jeX1HFwRmfn%+36%vA0dmvYxIZU^DsT@u1x*t^kgHOHyA zaFDFY!31;7aliAFjNFuPZvh)4Ay7BenMbG>VfTfb9)2uxlZdlzxl>UAr>^kj`S3XF zxpyWQ>Bl=lu038jv-0NXATfz7P{sL0$ZCXX*lO$3!8Y7w{%YZZ&^HoAvS%C49}&I> z7XuGv%ys*mcOg*d`L0~fZHfq`Z3vS|w&C@RS*M@cyjjiL8kEH0HTx(WwpO`puYe4t zt6@>M*JLjANGU}@v_=eRTjusW>%rJ;w)i%)SLTo74|}5IPm3;6|c21C`-8ViUwwbwyRimS}~?&pGKz-*+i)a z{Lj--9fh}yGai-@>Oj)PvT}q&5*@M!j(MAyll-aL=`1Dp(7l#JC!VBZj9`QGU&ESn zfEG64LmiHeh2Us2Uhv9kQ-)w0`&P=7(d5ilbnUx3g=yYWd5c5^}dU#qQ=`|4;5%vAPmHcxroIj3k0;zCY4Gzj*q~;DX=hg#N z7dW=Pz)eKp3i_j$Kg`_0S1)K->*RIxHDbt%<=y!Cnhms^2>tadCxZ523Z#e;a1Lnb zW$W5^KbI{Vmo1y5?zpxhqsFFdL3LQ0f>&;iO|wdNVkI+noOjUywNnldMs<7kwd<}r z4Y*|#`a1D1GW!JPLg_SmQr~0>20WnDfQL6Axre)FOdr0UU8HCiIBi$wI(x*6cuEF^Mkea28Lcgc){PoMM z)fb$bS^e0U#}t`c*?>RF4jOpRG$yUDNl#Qc`97SUpb-Z`48M z(^lF1{K%_vy!5itV#afWTqR#w@frF91zsAv1a8iGqdG{&FH~p2jxF>5LE5;9b!u>9W6Gxjy^p6;k&MQAtNn3HXb+!?X?MyMf_0ea)x6R4x- zcmYGhpu0KCD1sJtnKqfd{x~D`S!Ki0YLuH2NH()|sPC8o+v(iwD@sOI*8pemIvW+9 z(u7f_VBsa@GSFH`WR1VM1#Ks*9=|2+lkd=QT;j=uXRH+-69R#f45gt}w*H?IF*md% zHc?^IDoZ2TB6XqhpM-hOUi?2ESop4&5*0BO0eww;r2yzWg&jM{cz5zgk!|+s!Y;D( z>w*Wu2R8lJoi6&cZE@g6RonV2g6BEx+3>5wZxPTMyl)jD|zUY&QRXhX7Zs-o@yX)7AJo=0zMl zYm7zF0K<*T6|80p0oY0b=W2{C)m?FMBQs{hO!M6fQITVjgNa~8EzS-_V6<$>ik}Ya z0!(s)+QIUqqRSHLs^Zm&wiLCM*D%c&7N5mliLku0_} zP&UGvs6J>Zyrix>c$KuEPN;rMfAl%yq5a_q;nm7gzxH$;c{PJkXYV!c@hEF`L~1eJ zwtM}>lCX|$Nx+hJmDJV^o+WBg?sb#VHBws+-{k%y$k){yYvcy%S3{Hks{!}T^=aBtNYhikN2-ekJm8QS5Jr6MTWQbx}RFR#HQn?S0|iTr@Gh0kym4Kr^F`Ut-UUy zbxCYqzg^?=Ydd9J_WW0VNK5Rn?&#nDP7D7JoyCG%t~lBE7SxkI{gby9w=XZh6EL9Z zl~3vumd5ODM_uA6PwxK^h`z}zQvQpwdo)=G>m#`DLK-qk z51L$PM?%D}VgAtYR*9 z?(5C57GJyOTT_H)5r6IK`2EyKme{}4iPhtNU!qtuq zf5Fb95Qjdv9p=$8zqJ@anwA`{$@WE7RpKwoA;&!V8lhf7+@tXD$?Wz*7W9Pyj=#s` z=&g?@;agV+c=*zt>?i6Jx5k0?VDCr8kjtfAhRd1^(ONIhYgr}3wFCuQ@%!MG2H$I^ zhJ$&eLAF$f?TO5m7eZuPq$UUYJ2zSNVWBuF! zVzY&@kgUZ^*WQmYUa4WnhsreD5?k@X@-S`ArBO1JS#z}hHJWMO1L%Ah%1^OY`$A#o zBWJGn+sb!&j?>@4DaH9#lCf5%!V>3U8>QJ+DZ)$CGOdMTuhTjJ(}8GCKK5;dVjm&Z)Zj7dN=^!F#XZx~&b%O^)Zt(B>l*71p6WOH#%BU61nO%tl! zW4m|yq4-ZL+F~Q?m~O@=>&80Ac!t%sleJqF0Y!I2rim>thV;8q@V}*oGTNj!jD2fO zyONgqqb?H+Q}B(TR(9r<16B&#P{K)lsuWTO%Do=aumFyQ6xWp z`iWkEWF<}V!99EzXUA;%PrjUi2WKgRqDApDclgPKT`I3J;A6Vy`%zLGROU0r4lZW8 zm7Rpt*vkEc{eGmL}7w9cjxLw=e920hc$<;TdG_Z+C8?O+Ls&BBf zXK`>2+JRyo=qtlY_OkE;4wn_;i}}{iS}hXJra;B2T>rc26l46(XkPsxYv4_SUNLu$ zHF+-~WkdZ8BUBNO_5_K!?#me9s~%IdO_$0wpcJhD!i6T-ab}+>E1Dr;qP4GXIL6mE zmr>L^@^T3`A@vks}sNw!b9=t9_~vCvK(Q@J6$Kc>RrPgQ*256|bOkCHbH zhnuEPLNnF65ntH7n`v-|IJ5>eLf=`%^&Ef$ofR;3mZntow%SS2g%K3*SeHJRB+J7C zN}QMQ+U%fYJgLwv9D0L`P+xpwZxDYur@b@{M%DUp^K-K#)+1HYVp6M}uSiuMiDE*X zrxJ&quh;h|qs|uM8_!!6bY`^imvoZ#QEo2$G+ZbdM$pV;)9Y+>fEj_JPxBwY=@W6% z?CKJ`PIK1SNkp)Hd_CtbaHTebRN5Q)`L>M{eAgIebJclijUNr$m51dzys&Q!>w)Zk?x9e;W z4gbI!bH7MsFdF?us&SucI-NtKVjn0Kg4dtPQ{ap9v?=WB*VMLpKUB%;5LSoVnCaHM zwWd;x0->E=sSIGU%Iab1>-3(3-x{m158iwk=5|AxA5dnb#&J3#Fd&dHgiX zG#$FWVSYci<~K?5KocDD&UjNXRjhu9)BlKjVbnn4S4^D*Zsl z#eAWrZ@4(`#8Etxlz0@xB_Rdr)iRBe!nLT$%P(0fHA^q=rlR#e+N_?`^kz>FbH89o zEid3E!rhukxpEFb<{1GVtOFdAI!)yUBW`q@B&A~PDSt&LD9&B%dKeu#DO*rosI3_% z!yj#o+Bx%Yo0K*{<6pmT;9Br4`E%txYmCr8-^0*r&7$+zJr7kUv7AM8Q#uX04kfoE z_Pbi+Rc%Dr`*fodBYQi{os>o2R0lbHEHQA%t?y`=P2be^I+GeW#O_~D*m7z1W#hmi z1l%QF)ehh|k!;OMjhIJwPdi=CKclsoZibQ9sibMUDc>Ro{x4Zf*kr)Vlmf<5R+*MW z2nAOi^_EnKxFB*(c_@Z#F{$bzV$n$%u9KFJeSv0GH%J&BW&bbI{xU3%rE438lRzLr zgF6HW!AWq3;O@>Kfx%&L*Wm8%!F6!g;O-3W?(X`*-ut@teZSB1y?@>xtGmlqSNGH$ z)vM}U=jw3hmskFTD8@)tI&4rGW)}iE+*V!ufq`FC8dS8c>gJRwN6VqCGKG$gQA(nW zERti@6-dRVj4WJTsLCBu1nJ!4%TH4;<{4UEPE^3CJxwe2WjM~KIKJ(|G*E-JLOefX z84XXuWs;GnFz_BLGrzQWJc=7ho_JJZ-^JZfc&oPNxXG8WViah|6kPI$53u%YjLpSL zcMc=HpF?0T!9BW?@o1NYkWc@CZsll{>@=`$eB~jGlw1p6RYyyDHs+^JG8!P5Dhs!2 z%m4)(10Bi1Tm^SJ2f=vwQ2KFl2N#3+ov=t3i5|KVp}P226#`3$KWqz@#jvZT9*;Zb zF5NFL$We)jd*{!hGDxI?A&QG(REYqczB2yM5 zk;JY1KFLIvr6xe8@lxMTjnp)vXQ`M>tB8t`h7>5-f5gdvW$0tL#RY{|z4FZ7?c|&A zo!N|8QdD^kE|wQQh?u!ib2WK7-6Utn8K6bX+fS8A&9&UyXkyn_E`TPZ6w`*uu0Brk z9LfFouyLgm1+k$vpEs#8LmU{HGB0xkfB%>%SB@Ch)lj$W7Kn1WJ67hrhJkx@J!r42 z99x3YQ_5w|(a9N8tle5K?F0qBBy8c03acV>i+e-KxPMK zz#24l=zVSLtFE7qZDf-%=sY4b?NdY*I)cW>D3tveSqeTp5Xy)s{rniKj|O`9nQB0l zNP00;7-M}a-<4#UBTv>y5!*B}>kHr0GB{^wY{BjZa;Z$)@TGe;RXe8ikJO0hO%Sn- zyWtfc_Y8pzq*X6!-@E!wev-CFYHc%0aoqYOc;wu^2ygdHH~v{mZaK(z=hjp!(Fji@ zQMYe+K*5k-2M?_T&N~L**Evc2imc15maPz8OP@Vv?ZH4jGA##qR)0e?%Nkk zRX4jmdZw;NrQ~>;pzMRtw@;iiDRv2Fu^M9*%j__nZ+E-Mb@3{9HoM`Ybns+(R23Ch zFD3du<=mcFk5teU^nOs_q2=^n^zEzMYE@LL-g)6=z6KL3=4>BmiS`h9^Xr)lx{HvjSPH!}UrPk!j0enu7?BiH%6 z{_Aj*mgzLFo!vpkiZW3tw0HW=jeJ*44QaU)t~#`Se=?r}ReTO^Rc8r@ax;2dl{^uH zRrfY}lFE>|N$_t6zczhAqICEGYul7oQQ(oq)$5~M1OkPMR}A;^i_j!J_~_Ax1*qco zHw0(6v=r{7l~R@Iph$?ikCVvE5^MMUd7s?E`ddby(Dvh{9ShXXgEO?N3}AbY@X_Vd zZPzGDuz?)S4Sh931y{Ez&8=K*Bh85mgHq~{K=^IpJ3RFAKTw@T)N{{*7sl?Fy#R(4 zdIbJtYXYi|M&VV*0?;itu8~dL~W4uZxI0W!$&}J7-rU3 zg0(RjMv$-mZF_rA1*Poosz0Ke#az5mocA4KrlRVkw?dBjD*Ie;^6`j7)<^LWAsx*Eh)qnRhA!aqO5 zOd=`ahw?qW_1D`xmVIY>Jk>$a(3HgZu$des+T$i~Kpu(73Qt-OD-=Cz{iwWA+A!PQ z$~ji+_z)WNL_Y!&{7hM-2!^8Hso7dar{<$^&vtQhf_6{+O3r41~g_J60QI zY#(lW(n@q=kR#!*!s_sEN9bMu1#a5EJ?BYgbtb~Rn|{+CZea@d4;)I@7csAR&YUehKC zIB!!?eBMSHtmT|OYX6W#5H1_#WlHc+B6mrLxXuz6TVztq!Chvnpf6fqEg`6(gC_aO z>DH%u-0_hcc6E)@gh_|aT&IEy3zKry#)>M$qBe&%OSN&jAJyHQnzYnB0i%b8wbtcK zBegC?kC=2gh|`4TzW*QB6Qo{>0{{1V0`p5Ng@4u)GXGvrcnvj1`ZtRc-k#qA%-{6I zuZtd26Mwr!{l`lR@^>JzhQF67z~H}wk?FrA760~k8@hyGCZAHU&KR{KS6WH+I#X#lq+^>;f@7=J2+?i%$M=$6rP^m zopIN`G4<&llsuVmNK7J7{inoxPc_GxptBs#NDtsj%eMOfwy7L$J%?CVjeM%v-r7Ip@Gkw+}3+R zYZs=zc@)vwCHHT-rT{xY#J?*+)?TpKi@a7&GLHbHzDVdxBaD|uR4)SekL%Q{3suNV zKIzN(bH5xPb94FgQ`p65j=fcAXBsr<(;ku6MJV@;DeBnAQ;!H;&v zMs7;-ApeHW@kmM6a#Um9=}SQ_kN|k{)`{_`1d?15wAG^k4y)c)LF}YeG~`eo<5VMB z<`$s_*aL?w4D@+aDrbw0Tjge+o)G43E{iI?%@_8-&DH~!DHKCem15>wVAsPNOE}lN=|zIAUkMq&uIBI z0L@9b4mf*z>*FfRQzWD5LiABg^c{|#YXG~;k2O(4)70v3+aw6<_3$XPIKtleg$ll5 z`I49r%cb_y2uW8JV>H$=neIZhQpmyAVGkynOrp3Dha3ar`0Bc9=h>1e>W(=jO3VS} z%Wul#mV2>T6-q_5#R3zB=H17L{U%K&M{o@fBaZf=ANB2Y;y(ss+FKFWe27zd*O+iM zP=V0kYJmN9wyG@DT))Ju@|git*;*EA|8i|}!T_=}d>2_6%e8HCqHO#jME7RSh zHWOsv>*dnlt~#)eT70)b_#zUDqr%Dp`3QQ&ESh5?4Y_!HDGo>dbUKQ60Z*8dBAA$i zR4wm&veLm6ib%RGo(L;HW7g(IZ2f4gJZZ+-Pd%ki7X_ppndMd7GZ|I%L!P8umwxB6 zc8;|q+> zv#RV|BI05`Jru{)BC^zeqf(#WYSNw2rkthO8h-+Agx$9BsjJlSqdLb)~bJfH*S8KerfG*B}ho%GpYT`g+||pG-zsOl-ok>xc?5#S*_19s4?; zFc-k)?Q}H%KKT6<=cr%BAg_>C5fE~aDO=!#zCHIYQ%6R)aTUcf4&`O+xEc(E{g`Yt zvow%p>KUAxSF=66d4n+$-`_rCvoVt|ONZkySxCda9;VgvUK!Vo$Z+I0tjT-5e(Y}i zqV+OZy|H9BNav&6{ZC`l+f$aXyCOQ&-}05N=|dcc<3w778(JdQEa`JucH4V~u2k7q za^d>Q^S;_;c_GU>Lx6XRyDrTZuqse^nEa6hM*>lPJtI1{wLfuH2E~_wLZ_3_OAchM z`PE5l=a;|ZuJxR196UoZN@z*V<6x(ccT`Jin~U~Z5kvT`lE@1~DdpbRoe5U6zb`~= z+i=lN%dhz=tn{fSt=nrJEo&~|9#Y#Rd#EQ2iOjoc^m`(pJ5)eykm?-5bG3k4KYL@G z1l_dvZD`U(%qKKcaD|pFNEJM%(L0h`8SE-W?EWcke37r#dy?YZU|y#tq5=PWS;^T}WJJ?3c!BWF~FdkA2$_b=s+)*KI$GSV&9SZJCkA27+${&G>q@4`Lk#ri`ALhlQ-&mW?1nphLyyL!F zut9z#V}Jih@Q6`gXJH^EheW(tH4MoGfBQ`uvzPnYq#0zB*=F<>0mOcJ5&1C_=q%Lf=247SR~v z%kJ9GKGm;rGQ3K95!BmoNU-(CR>k~#`c#+dQt!t7e-sX=jUpUo4fZVZWS?6Zd~C?K z3sD~#J)`XBtOKTL_ZcEv@wC;4Rw&%X)fsBWXciYxjQ*%C1qm%{CO*1rT>`HD0AMY2 zD3>#0k#lO6GhSHVA%7(2N+dX!WY&w z_ERWs)tzZGYYmPK;R}JPTC$D44Xpvw_?gpz>Y*`j4&_iDqJ+0(w7lKYC*@Q^Ogsn_n0ck)x)wLa*aqq}a^wWk9$^{{;_ z?mKSP>U|ysbH)gi6^LtZ|~JbH47D8J_oLYytP|_O=6+jS3z>-CIgrD;(}ykD;o+svyPv ziRi=QA9A`?3yiRhU<&<3r$CTCp6&5tyNfQKf^BKpkF^^5%k>OH>@f;vg3%D z$2A>}TqWL)qo@c|cdbb7Aq(=UUMq~xj{^!72LkgaE5&YFd|k`>-TV$1k8(Fjf)nNG z0RlY0K6*I(@;J-xHJK0U=kA$Y>;{PSBO}yC-3ByGnew^hRd4II=_@4%D!z7Xl8qP9 z#S`>_^k6wC+2P=CaV5eoR@-&=7=V;truh4(w{gsV zGm|%c$BBrthsT_qD)`lvcstx;PtLuDH0&k8RFCXs3=BNbrZickYDdMtJy_cwK40HD zy&oD4@okaaI|$JuD)K&s#H9+C97L9WR*81|(?s3djo(cwGQ7UH&Wpg*)!61_826EG z$`?-ywDwqLXW7wOrgXwY5cWaWzEJj4Iyci*E#)I3ru-tTx0MOBiz#sfUF?!O!26bFi{IkuO{I*p{$dmJbli zTTX2fxJ&MO_@U|-N>mFig+#~VZLPiy>sz%x-+sYPF(|okMxK{zIM3JlP`@|5wqb`J zE?bygE?X+5F3(}izMfry!siy4@bC=NdTrs;XOovRUMv}I=c^%wR;B1|1B2&Ed51Cx z7RbXC=Bde->T9GNB;+sgyZ`Bme>svvlvgT$%y~frhJE}CyC6Hkh?Da_12swEeOPS{!ni~b-8!_Yww;|Tiv=UVDBCr1q@HJ-?=yM-!2uixn$bOTCdOJLSq*m z5G|lWAf1X#m0_@|A~J9`Gc5%i)dm^V8&i9?o_)&+(!f)!C%R45Y)lF7wo0#(|xdE>yqGcTH`|(b~0dH{1P3lptUyqN#9J@)UQa09zvk}VOs1va@N}}zDi!OGjUL3LS{h6-6}O%OD<@wF zN&b!?;<9R9GUZ%r+sb8*Vp()&SLPq*;4w(`iePA$x-8gjY!mGfYX#aP|X@Y zc|4>Hl^R`z!u*S1nC)_Cajz@>3&CKIYe-6MPo%NsTNfW}s8&PQz%7XjK-N|&z^g-9 z5HwGo0_X}^qD{_AzakhO`D#6{=XvWu>K2wA_lK1GAj5^HE06wEXVZgm{>N~0qLr`K z`>!|xq<=sL1Z`3q_8(Xy=U-t7@h=%}p2@u+xR;FgFB$2pU#(q`UlJc*65Mrx3k|QJ zg%=&1e#yOHMAk?Eyg3Og+KWKF=zFcS{Zb+HA3(%^ArI&;0{tS`FCz0&LFilC;p=#M zt5X|GBKq&7`Tqnj-1urMP+}BBkm^@sT6!}p8(UQjE=NMbwszEcgj}ej^viNc$DMRk^sNgKsfATOkX^q7PXZ+ z)LQfo_tL%?@QAj51qPo7za(D__{*1M;NMit!FKnt zfSb*lBD}fU`~m<@xGmr>`@Y0Zz+B`-iNOC}c({Mj-Ms(57an5&4M4vCkC%(#OOe9A z3lCFMe}_6B`6tx5*#9-udH6q}&aIZ!YMK8El{EFrr4nzR{`yr?vX-D~_&;JK(bgIZ zu0|(oT@qjAnv0+rmZfxC8P4H^L=+1$Q2m^~M3j1nHd*^ZI8c(x^@ET&d{U&hW211H z{j)dp4(u&#A-Ca=feIJ4`_yzzOo(E2U_grs^T4kCJWu~JW%ABg&>V}KP4Mw?qWL`0 zv8{mLSQ#h5Mb_sJ9I%Lu`_NY{`VMJ1^W7VX&9UkY4f3|Zbn-Ixg-S!7!MM1FjuVuFi%cD^k!jqjM218Kl!ebSvUpTg6=*W7`KxIDHR*`c4fHn_w zRRt0kQL2y{(G;G)II^r2oX@3D>SI}w-(o67WtW=YA_P_HUun#n)!C1nju#5)Vb_f~ zk24&~GQ7>Pkm|zTI&?49pWHmm_HP_~Nc|~bpG;mG?2r{2Fm1(cwl1=aXEsK2R33N+ z6UH%To+-jj29gSs(&!q`Jtc8@hUkqN+W+#`AH~{WQ_p~mTheC4@^^FOGT!~zwk5`0 z?wKw!lQvNzq-%XY&@ty#c{b`bQQfMIRBerN&aL+bs}g;wWvNzmy}(8CYRsVElWp#mY-#Lnbo+-aZnV zD%^-}pRikvKi;Ze?&^7Ei*alj+mSJj0B}c_BdqX;_|&*KmDS`c?FJ@Hei0JM@d)33 zVm@Ad=IU>W(I%te3|F4W@jF!{ups*R<on^P<&|uE^B1Xd>~VnNqgW?^@elv#?|IQ+p@U%3e8_MIN{NQ39MBffk1=2V`6! z)BWUsb{Q~IQ^3n&(gQX5ncThmqa_Qsa#xA(nmi3RT@{*cKCZ=Y$C*~8^}ytGUBP>J zelJgAD1b+I#W(jkniU<~8j8>$JTioq z(x5DmaGow)xYz7Y>ow}XU!v$gU&jQ-rcS%(2&K#Vi0Q^jtQI~X>Q;V>bfP=$WaJQ0 zP1qjJaMFG-e&gm5Y`e|QJLpOjIQ@3vTzu|X@F9H14Y!59*3&LHrqdR?auxSb&|rZS zx5bVgvr_N*g5oHMb}r6!ssYD43MH+7=Pzmo=+XvSLHvI)3a0ZfpBI_ul=3c1Ggie(n!< zGfnmR6?&*j!6o@Z4l~lbsQ2lPn-0@P%SfDB9n0E%N?0hS6Hr5+D2IbTlCTPLxy;z) zas}fjuA5IKhK2c z)q)=9nKQ(`lv|;{uA!th5OIvoH>byv-i5j69t?m#uqg0!8vg;4LoZP=h(T2SCo)Zw z)>4_oB6Zfhrc$45T~iV9yEPrQMAoo#D2u$^y-~F#O{s1Tx!37ff1zoEKxou0N1k(o z)@0XUad35rQ(UPtrq3=wtHU`vdabzN>+0VAzqd zX61Bs!tCx|!V64Yx`eCXfX%cS&Jw$qJ|!!^(C@MACB3Rd1pJq~g#+DCT|4s=M8Y0s~2 zdu06df<>s(BAL3No(PUL1c0jI{yYO!BKr|WNa2=C>2wqyGpY!Og0T&m+^(dUVh?)L zo;fOHE2Iiz$YayC0-#JK(FgKJHppl&y6lz?P39`4Qg^Ben~HlJfPTUlBd}6h*T!1> zeaJa?bEJgdxKMH|1RBGI1iQK7%F@4R;xkj+gq9=d7FH7b1d%gSguEnrgp~k+R1 zN)%VmKgz$=4F$8fe^xdsT|x+KJESWdbr$cZ3a4VCErG+ptr|{J$`46?=D-v7WwEjq z=N0_MF-=!1RwNsZwOb&IR(PS9|53@AYSM>_8^eUZTHP1Zd8Bol|M>m<-2vS`_tSAX z(q#BDYlc<*qENF#T9jX3){;bU(MtuekwG*0`c`Wuc-#fc_G9QY!p*SUCW~>i;TZ{c zvmt+M+7e@ixXf{)?EC%Zzlb@bFf>xB|NC*3R)6>x%K@QpV-*${j*VL*TYj7cmQpJF zQ^6ia<_|y-G|6YF3D{lI%lf02o<#!4Cx1tnk1^zYTwGs#Tf-U-cB=~82{SjszdRgsF|&G>+1q{6nQWB# zR^}l-Qm*3J${Q-|%|eZ;M7lBUOKs!)XJ04gGy$g9B221T87JvraO`^K8^?TyAzJ8XX5+NEnlf zY$gX$kxNlUT~{Lip=o}&On82U5rZKOnz4l;{A^VQ@qC3D7sh^LGPfZX$Cl-95p9$V zLiTKny8bOT{>|g9L&POS8XN5GpAOkg%jSh^DM~FsJ$6a3kckhW^VZmhJ~;GJKB5a; zMQO-gc|MgE?fQ39?b8odlUXLZYDG%D&iaa*sp3?U&WDvkv4w^3{owH{6WNksm~ilH zy~Idz^YGCaXH}YxhZxpmTlsYMRJdtFrT~XM zkuX#O<0>^`;Af|>&e4&MoaGQ!waF^(NlvPM@ptiTH77mg8;l8~lc$A9$)G`?Z zdo(f`21^Ha_I7Zf-7(z}G>iRQSvq+3mv((}6nWxd{On5B==}v}FDfP#@;QBnMXmBo z$~X774(a4~0zavNNPWefHYsh@Qa33l2VXjkDQ6^Nv)$G1kRC_FaBb#>-mgzAl9597 zzf`92bNf2OY5MaMS(dtG1WqN6%nr?KW{)ZmSIh~+#h&#m>{M_JDC8%yx}?(Pj*eVJ zhK)K8M;Wbw7XM%LfrIz~^~H-#i$ZYRXe33TY+1@uE?>H$N-p0dr^@MBYxJZ?44!zQ ztu$~re?83xMT`R3|5Vklke@etm^J!SfP!f>26!YmZ*gY6)F5kAwuvmqo5M zsOP&}I8_>dPSYAiRRN{v_9&H-5|$#dFAIuB4l|=+X_Y+^;!Z@#r}&HARyQn@5|>(< z3Vd~NVNGQrjlXhHkjL4IqCR_-y3#{5bRN|}2BdH;{R^9t8j_Tv65cEA$Q!7L)jy2? z-HxuZFy{n8@nNTl^l8oqD_4uj*8i4g%gN6d{iS$GB_0T%d8a5w0V2u{pWI$swmU37 zykxW2?dBT@FiPZpWNbWj=bJ^cQ~v(&aA>P&%@!yyzUbV9~;27@j8 zxZqrPL}Qs*$A0AzbLU}V+mHxPN>}6)HxXl>NO{g|VRMU<>6r>YD}<{Mn)GAm!nFjY zklFxdXI`I~k7FOG(9WMpCClI~M#YCR&|81IJ1lW`+x28t0#PRsunk zH(B!w0RV`yccF8&k{zC6wI)ER^oLS1O)|AeMi~D*Uxq?VceeCNsSzvxV|AA7%fR-0 z`O}d2if{JI8Qrq)lRaJRB~lym8U|BbAml*B$QXx9|M`7?As0>}lA(eA`rnJnl9i6d z_q8s39k81elX6Cv6!^Z~=p5s;81b8=CGqpyq8a}DdewpGRIx9&-P|sYznLg9EJ=Ax zdHM73i1(Zz+FH1TVbz1u`0FYD&tWf@pEbHC#|9TlVJjWf-_pj-OtfBOHQ2dxG9C^nd<8!}tk&mBabt_+4l-MhO#_;fF*t zzSY`MR83pMEuxW7r|~-!H%plcW5{I4*RN4bPKT^eTxhPzl%~~NU)fAaXEaY<^D7TxR#$>nRG)q5*I@O|&d(n;C=&S3ZY_bqKvDxTTP&r?>V)<(~X zWq_JeHz=6q=(&8ATT^3lNAns|I~DQ=53?EIV(U{Cg)iJ)q~v!< zUqQ#1Ys%dJ-R!Q_eEFc?_>ig3D;N}m+&fVin@k{~<@s%YQ8cVmA0G{;<6Y!|8;)li z9=aL+pZLYR&=`wetPS>b6!00rZ4lR{VzqywjvvmSkhhF(OzUYa$|_1KO0{y6nJkHu zIfTsuEuIfJ;&cVlQZdYA+CoEL-DC(F;#m4&?;V%2EZ|9*c981*HabL>dU_4>tA$zR z@&NXykgV;NbNYxU*&v(s;x#x%D>0G1rF!8Fr7uth`0qtM0E%|pMYHb_kD|&>v5~h+ zT%^%#ZDmJjzwLrYg2>ko-?!}XFjP&gj6{yza^omXB{_99&B1_yK3|#m!exb|j@^AQ zt4`j59g%V!Ln|DGbM{tG`8D7=c4d7CX1bN3UD`Ka!rD3PM=t0 z2Xe(A7eA0B+UMLQ%&Ohnf;{|?Dy2EA0rNg_0=2a6Mxjo#-y9@HDA_eVNIAEYa3ALo z#BCh0b`tvaWPNA6Vkmqyko0*)Ej$S4n^L=}v@QpFG=-v2^(NS)3TyN>`ts+3A__M; z6+t4Rkf~0^LqSo<)yoMf!zAr{Z;@qd!8B&)EY;nloJ(NTe8xK4w(b%q2pVywmJJRv zIz`p1?c32e?-a)G@xIkAd*V+cXW3q#<2`zoEKoQSLL!_|xu%5g>vua_MxiJ%ygY&w z%&$Em6CfaQ!*D`3@Ii}bzA2Ok4pF`9AanF{p#hdJj2v?#1yexbtWXA@BCRrdQkyjM z#)Z*J(GTN0lzM~~S{{z|V8FN>s>la8kaPjXEiOzp*2Rer{il`|ZgdoRBlwO8;>WkD$p} z$s2_hg+H_>MjfGW2_~scZgyiqu##)hf?(}DCy32XEJWA#7*OZ zy_(p1Jvy`D8_;wLwMYr$xj%+pO8t0#El{D|aLWmfqwwc5M)Mm82NgEr7nJJU{&e^x zfw@M=N&HCBou088fJbh*uOLg{&Vwy?Mw=(la${5w9LAtZx=4$0dwgK^5S?7xahbMV zZZLhX-@NQTp6I;->2Ufbg<-0rb`dE3WTxrwc}LC(Hnt$H&h5=1ZJ0uHf(YfQ z?wjXRmP@KsjhJYXhy8Tgt_nPcR%>xzlAebG>}fu@$=Ihb7i?CkoMM;d8xGj7MkUyY zoDz`OTm%(nHw$1Bs#t)PPMRUHh8U*Tk)!I_O+%x^W)%B=ImC9W%CRubLJ_UlUG|^d za#U50W4hdjC42_&IlQk?h85emh>!#}lzo>#ZHy8kwSp!vfY=l}% zU4=+?{}A#8kj7!J|E8GJ6`?T@9F1ZX*bO|L{B(S)|DL-%z}G@Cs!F8i>|OxG7+odM zXiZ(|EwbEj!@X)lgJdgzR$SceKtoSRqD7 zuQhRh59SfZEDv{lVsA~06t!ZH4?j5;+Y0W>6kyp7oDGEZ@X#=AshAZ%V0M)3EoAQzu7MeH|i5R(80Egw2?(6(HDh9SNP0( zy;ajdQ=qjuO|4R>!hKTK)*fw!8?a4xY1P&H{_}Qxr%|y@y+e1(Sc5dq zB9g-berG_OV~5h^1F2oN0Yg=8kqtC4n(mzF^~<468DfT>O-X^_59&4^)#AxyxW)kBG6KLomFyivI=R0*kol2&GL#< zJ&p3p`(GeMyWHN$S|MRShC33hi(T8ZmIhoE+mDF#W4U3sd&V{juLn|!Y#;xPs9IdD zdf~^d&l$J8Ur&D)UjBKk`zvP^cWrQ70;nn^K|fK)hpSAGl$_=G_9Jgi-E*19_idH)PYF%5tVjvfjs9L!dbxvfB3uDO^J%B#ESKB zV4pe7WDIX(-r>|g_sU;Qf!@LHX*9xRf=iw<=b1UE#yM7X2YVRkaq{Ut0Ie@Y^YZ(s#m^7%uXO{CWl!( zx4mRfEZDkIPb`~sfR>#4eOf_N#+h`H^ME1nr`oVB<$!sK*DLPV16C4%*nIx=0C+uY zzaEH~Yxx(3nO+Xk`(1~xD3!NbWiikO|8ia|*`WqxQXmlFQ4{In2BKy;c1bWJkp5;w zVt^tU>XcZ&Z~cY-)#p?6YIta0Ykzce@VS01^?}e~cJH|y2LDXx_$PbyvF{~oT2+HI zX(5F>wYD6OOapN)872F*LcFhz!sNzNiz%99iE-eot@GCYvjLCIS7x|Z^sAknz<*J? zzUIA$8mt@kxp>x`ke4D`0dx45>>~4CP|4q1Z$p2>Z~x=Fi}p8m_cgrgtM9JNiyn=? zDdh-XN|FEG6a(e|O*(gE_jeH0($^rWe|sVq&nugch0nK`?<}dmMkFYn??06O+kct! zU?i4>t#q)`5Md$p7P0kW zc>n@)#mC?C?2Dgk85{V_^K88rr2mO}diio@e@Vx^$kEF+?TZY(v(G=lSjiSYvr4e`4&~u(Y>gpW|3gS%hNACOI*_*Al>usaiFn?EDZ4cKebKp86qEb&zK3e+eXBTfJ#g@edgI(hJ=c{FJAB~y zNq*mD?xC?ksx=)fj(qFhdh}%Dl$xNC21q5X2`}PEAHybsPXPIqn$m4$9$bikk?1lap zfxqq4wBGjj`gd*j%s* zPduXX-LYsnq72Zi5i8RE%TkdXdqj&2*@CtgSNkbnyPNB_Knjs4QXK5X#6enE_JNq| z3_Ica1Im@#hFb{!ea85eo=1oWGSo>q>o^CFh`i&=~9y{wQtyY5pF+{xHftMIlJL zy#_9GZya&P9lC{R1)GkT5E9^LBc9|>j|2&=;_?{tc@o5dsznTnx~K`FV#WpF7gFzy z0q&sKv#e*M-p5kfxi{Byjy)l%Bd$JM!AZ>4H250kqOzNXUz8KXQ6MuEGCF^gb3*da zTBkH#GpRyH1!T%f(E{vFOJPH-Zb6D@M&E^7=G97s)UHdqAk4#cOB($9lqMCa12r-{ zksI-Kb!Q1V;pBexHVXN_5(qb!RY)@nm>9o{Doh5yvs+537ua zQ&?B2j0$t*)d)V=Jk)^ew$r9Q**73rbpx_nP>4i&5;Nl|j(xOxV`-@}{HKH(_0&@V zF-&d8%74~`YLw78s>`M`lwe&3s;6?oan^KGMw-V!)8Og>AwVRk3%~Fu5n(wecD+OX z*T|aSs-O#5{0D_71CfCejeDu#dHL?hi>F8BVRKeskm1mcZLBRsE6GpTTtcU+WwA+?jM|{1pQhGdt%FL zdMV5n4R|NNq}5GL?J&n0Ub<+mTLR*Wgcb;;Hr0`ruFvk=hM6hx{W(O?qq9S~CA`Ds za8m^Q@%Y#U@2W4NYqsNJ@>~mWc7?LWA1SuxG$;K?jSszOS2#>XU*3Wtb7J0!hzcT$ z!p3&Or7)+29Ldt}wI_KcnwpPcm++hIb?3tRVBQb z@5W=2-6uQmc4q7AaQyU$?$@g+bY*w7S`3F^2*yk4kSnI1oK}=XY{x*C+*iPHn_=!< zNZ2PVe9FGcF{fZY4Bl@~w)T)4%jv?|8YDR~z2lCVe6MrK5CeFypURztu*RHSbWvalr)7hyY-rkyEALBBQ9F5;UpwO zVGM4I-$Na$LoOtAKDAH>Z=X-DtkN(y!uYorIFIBCq~ShrNoWc}JwAsxGIcP5jW2r@ zyhSP}g))23|LA%1uqEUeOs^!=fm*WLNN`pr|X50adQ%-(QN=8xI-)b--y= z-60|LyLGJ*_Kh_52FdX#S#S>{kHz;p$8iQSQm9c+zQP!_ETOd7fLca;^6YzLKai91 zY-?00^}|3GrNvOvQKY5d-LWFNW@Y8oH!j3A-L&*oZnbF)M);~;h3GH%-a?7_nwyX=F`|X4Snf$+-eUc6~q4 zn!Z!HSF}B3|Dn8=?DpUC?4mZ$UME=;GhUa&tDB7OigXM>p+Dc%y!0CA(jwM{}V#R@)7aDzTjw37cH5y6`^IQ6j1Q%X>Zm4}DFK?)=YtS4}=Z zT=_|Wc=FOX{r8rjM3A$TKLc(@5}{qaG5xc!-EX13aickU%-}P6zn%*+pfS#V35@A& zL%VuQ$#2>L)$V|3LK1!C@~Gw6+Zl^7%6@*_cU${ru=&^LA5SqQEY99MrwM8!vH;6f zF$mqXv2oOha)C4s{`HGWZ4YK%cYm&K8@y^LfEgm?ofO(hzAN_}~$O_9p1#5^fLySRw_aMAyur?bC?#202xjhJLqQ z_g9-P^{Lv1mBB3J>}(>c#M!>n7G{?Uhpzjn5uMArq*knk(PC|@qHz>rp^=?Cjg;iI zr-xG#>;=7&3rFO8xq7EbhHQ-?K)EB{CMhU(S1Z5g3lt@7L#h)P4uuabFyX;XfZ-lD z!|}+rh>1FRU6WEJ8G5m>D}@+ZJBY`t{;e7A%5V>%9m!pt&jInKi4)Oacvhd%{`9Ph z@f8B7$9wPN%WHpE;ZeJT=u~{wWXX2WGfK4PCm0&P*GqKKSQmAc>PD_S&}k*i*NOIh zX93wy2Q|g1?RPXdzF(^*Kgz51A+N5K6kmde&$dVFI_d!;{9s z64OI&XGOgB#J}d!zj!ABkivTqmFmz-VUjz&_sdlWwhozQA8bAyD(ty`pB|QF)vc1Z z#^(P0!~QH_sHv-Q_PlDLbN)3Z@!LWII{y0qE(0lueESGxh5x5CKJAY5$T(lnxQ4++ zeLhx&)o`BaTz`Y=dw}oFa~9)wb@W?W=-KOg+k>0Mm5%G-stx1yi^cIG{^6LE+>`SIFYl}tl0l;`+ZEch) z{mvkEH}fg$FDs4ZMP7XyVPCATs~0Ow=~ey-8OJ@2Xf5#?9_~fBM-i<#v+y>iGVwO- z#a~RZ7xODw>gD`mf&rpm%rKM}MKCYI@glF+F8?@9I{c5=ak?+**RqJ0`m`@+!oN*9 zK>XkFZ>=z5kk?%bv%7{iQVYSd2#gN0dW5RG2Kbkm;_z;2jb<-75Di z=^XH{8qAFU$w4pSrmGt=;=#dw>=LIv?A(6hfCk+rJR{woiLDsy%suG!6O3`SPIc7M zEVDlL`;Oxxl0v+aOMCFWou>BiL@~v_S)87e;pH(ypWcE=Y0a~u`{*ksH|ND57i8U- zf*{s+HMkAXx;o5HA|3*Y3g+1e_iAka6Xo#g#ddFesrpL&USr-1l6bM*U!8WR5bL@B z#~K0SVgx|s#p*Bozgzt+=DoDze}izZ{{i7j|1S{k>+%EMi$3$08UlYi0>84KVf?)s z@ydMGIR0N8@oPZDshcIWS{d`uxOpPP`&?Z522# zCkYNDlSUKmg)!e1`TlsHTVO%aJ)`gC0V8m*@%HS4Qx%Uyp338}nvR$#JZeqghdD;n zqFDRugX>fqdo{j!+tj!W319xc66KEt6T2~C687Mw@?}-~OQj1nUgn|hDd{RlFsk1} zXgLsK%ADu>FzqLG0g1CRsu_f8S(Xk^8~Iy_?-z_>eM z)l5fiqPSX7aj_SH<8+6ue?O{M!&T2DpkjZ(SQO*78Z_(b`B2n*xrTXxdc|>nsq?rp zjT7A{YPDeHQuFx zBJ(#4xL4rq*F#zBcjC{nh~2Wa_sv)ex$|Nwje`$qzm`$Cv`k;}04We8lC#tS%;@@i^i>4CiO0VdzM}$}J$ow3z7`3o8^tq3>4J%^VQ`r?gG6U+b zPA}#j8#l}&s*_&fcs=nIF_VE=63Erwv}D`#L6Bl) zf(DGR?mFDAs^8NlZ=Nn`hbH9mAmHN4r6A3Vu5er0FFjNx5XVJZ_0SdW__b-PYOg3^ z>Q>0D*xbf)9bmr@M#;gXm#HVQ^;O z3-T$YD1k@v=RTk0F@Ge_Aq`p#o2emKdZ)QFmQXe6cl?(~os-W}UZ{BxwqHvAlOd%= zL}_THoux-drnIIu`vxj#BNHWLnLa9rr>1^AYcdup6ZNa;+`@*fBRLRN1G!YJJ>5j! z*7pF>Qm{1j@|;EfH<~b?K5D+<>B3qyxeM(@2Yg>#4@NF1>1ffxI>B9E%M`P&L6`K@ z`^6ypg9om~RngW$Y4Sw^g5F^W`TOOGC6@70^!%H{9M) zx>JfPUrQmqSJ&CM-q3bh?X6NbHS7!OLi@|F>Ak}PJ4p9m5={t8trYa?BW04i*zFqu zPDDxsom@Eybr=c(M%N*1fHXoFh-MaaOMDA<)zkj6D5k7zK|b5h##ysDv1^{b*u1!n z|M7@>1PXcSPw5HnQd{^5hNBDS!@W!uZU=tJDh$i_juFaYosaMVpZ{EctnqQI@}o^7 zSeN^-eFAlbR0eyQwhG}}Fnv#Yz~0U%@!%Q+yg$LzBHoh_lsZmx_Vow4INAdkDqyvl zYJRsJcDPLTi9D9fFrMwMYD{x!L)Xem;q5ZEF)ElXu3Q&`FlU_oMF;__aNEr5^2hbe zK$S>O4=Z%SC~R=r8z;R`Wn8NR-y1g{6s!!4TC>JaU^L5x*w8uU5M`c+F#1TrZkM`W z=_kEC#~W>AceKA`n&`GtOLvJKPZ+L7TDal^#>AU0B31U5gT6*NRS-Uo_uH~$W}Z^a z$Lf;-sMQ~tv^v@Ow|Lw3evI+9uk)U`g>92BFs!Gzj*ErF&IcWQ>bC#R!Rt$cKg4LG zTw!%dd^H;fu6WyrJi+!XU1tD3u?d{}2G?Ul8lfCcRTD*#RGDL-p)ysR;dt*f$I-3K zZ`acx@ujI<#d_&?TqQ7K57pY&THi`aW6eFXW~xid5X%ult5xeevQP=QptDNP1z%d- z{|Es>pmb5<>srMC$*W=Gs>fZ+%+?uU_cS1omrLL*P20YFQ9Nyxa|bCvojo|x0$_BB z3HX|F-^1pTPH!z56^=5OPLt5gW!vR6$2#EHnE*pTyuVas`f-%^N>qtWTA6Sv$bjLV zgfu%=bNTKkml`-KfH~4YcdE0dxd;u#W$RYf&KOlCP#I+!R?YD0uCL_x*EQiHJuo@H zdNV~+O;Xi_iCToQ=#?q;7?lNOG*Pla^;dPfZ=-n8EwY8M`nc*HoeYF{(NmV`e=JU$ zCJl}1?7o86TUKUsy*t5-#sszD=R*m^W5*4PSq_0OPXrFXhie7n*b&_eb-N|ZUM*d9 zkIw2uRfZqPMhg}(*i%sF2iA?5h#pvK*No2)Z}yOKnsp<&qf?>zFMU@ za^k17YQMg5?RVu#7|@TaExZ+LCTC^J`o%LPN+pj4rkB`i<;8!!0OImBw^?yuR}4{j zaUBk|J6JKCzV`iTDn022LY0ZYPDxN*C%94sdWq_w=GlKetl{+dATF&O(o5up57?E_sl4)>WG14 zhXcyE5}6M-JF4;qh)2rd4;V`4kRwsZc^p_N+Qq{-{ix+CX1;$I@VI>MBC1>E>{Y5g z%9{S^o}knQxrEK0qNW!!=6v%uvgAFkO%6%T1r3N+SK`jiaW+5as*pv!9eueqocShc z`?uPoDgfEg9cft~I{~n8XD-?!MWc&wb}@oD>M{Gg7eT#c65;_8QSz(Cgi_^nsL;_GsJsACu@s*9v>^A>iVQ4O#@8bK578dc9h z7`!p9mu+8no~7meeLKPmZ6Igr%~M-7UshE$^ahmzySWptkM$7#2$zJ2ctsHW^5isC zAD7b;nOcusb8#s|;I^dMK)6T%H48)O)Zw#C!_u#ZG-77S3eLxFG|z`KzM71HOt$nN z@;M71*}w*%w6a<7+M!t$pic%Yo)*4fUnes$byp_?PD;J@Ye@^@rm`+BKQuWIsneH% zA;>iMYSapSeBF(NMM`%RF8$Z8*t36)?QBIyrL@N=SfmUZSF~!gn)@P7qN6&k_>}Pj z!p2Ii3xvhM8~C}tK_xRbpmnKp_Sr3<@Z}4bopZ3nK@H&mHGh`$qix_ZOZ7tvrrl1A)~E!>4>kYce6el$@iy)7r4@(pyBqV&B`Wp;)HGgve+5v; zcIe6(aUB)v~{e6Z|P}02b2tfrJbL~@NtH6bWD+p zqR^oNhwyMSp7^LYez4<9LkhyynFFq^D(G&+$VGklkS|3qsGWKop28 zaw0LU*IrZb?Qi?W>QmH{8@K1o`2V_ zcF#=h*+*o+m&+C4qOQ(=2MxyesICvx2))3SPj+JO(B29dm?x=E3%LXJ+V>>aLOzT< zY@J`}UBILUr)4sHm(bJ;rtV!!X6|bO=fl8oEbI87|!G z$ynuv68oPWVm1vQeL+6kan~xVj?#t#%6O8jfmcz^F7!L3OXoPr$a4KN3q-@@& z%uh{;&xE?qj3!aWh5_4;g!vt(7SScHdU%j5cD3)#&U%?)2M>&9zQ!pu8rs0Gt8NS> zQTF^vjH&o}n^eiEvMHO=mBUFF+2syW&K8+uz(gUfl8(divz0Oy1F4W{(`-5Wh_$Ln zGty}nq;XVU3v&1FuEO;}9flH26kb-$PrT9gRJ9*@iTIQy9u#psmLwkV!_r;*rxLu5 z`|8vMA86=4yJN=RP~Ox_J0GEBvw^lsN?N3cwOXq06gvJage5n%|cNn(fl8F zPFZFCZqp;87^m|$YM}lSAKE~ ztOxg3wICPX+)c+P_G4T37$=pZ&=S9-}6wxfh6O|ozX z%|Y;ri9|kMmV7UO^=T%7hqF=gi`!CAc4f@-hurcjyTrk^?oO&M_wOOnq@S+**xNTr zB=oH>?9gJ>Yc4Tp<9R-DM9TwPBrFNbAK6_eVjr7c@!k={%0Q1Y7%GOdS=ZaN2fBf0OGUlTkT< zOtLs!v+=Llz)e{!+~t4JtzPO{zSbkHJSd-vNWG@%9gH74|B}7_d;09-+x?XgTy$=b zxWBSZ>7ud@!+ndKftzFytIkE>n-0v07Nl{gws+isz1n3u`AJUIWHR2_kw`%t^y)P1xd zq}Lb8lO=_+Jb%F?w~53Sqdn z_TlnXJIBB9PWeIYpkzjlm~}`v3T<<Bc~jkWh1A-$^T_wjG(qkSz}&BjGiU%(LxPVL17dyG*;Ikch15b;kpF!`4dlR%X|- z0ObME3dfspZ-t+k^qoIt)}Ioo#rX)UwcF`>r~ zm7^>9A`nc4M%6<`_i{vY=TroA3TJzxT;m~j2oDS$I>`LKchFUreM5LY>Ot$@QT<)!W*YR3n) zKde9hBn~yWx5HqbhZ*eWR4@V*#WO^nf*rqR!W^wTxiWsTiG~${8?K}e-PY>L_QAXr^;B@f~w+s7_0lZt|VQ z;{DP5Y+98>!1y82c;3Q=j|o@=q(?}0a_1H)N~*16pO+5WqBXTIyUS%={EE?rXR`Fg z!ZL(Yv(}-%eaEr2`T4-r(dzW+0hQPNiJ_^ka~0NBV`~=WJOQK89ohewXY6vDR3cQW z&9M&4zpntNp%%%et*!@0CQ46h9PD1D>AY4+WA}DR_Phq&B6tp<2a{Awb^yj~vg$wB z6-FC-0;w%My~29lY7W?FBmS3=G2PrA)z9lY!gMJ0w@kc1)U2Ct4OE9Hqf;d4f-IrD zc*oB$ot+T@fgde2j2v4b8kt1Q>)*-dy@yKwd;NRvrRWu3_Zpm4^8dd69rsVzjLE;l zX1uPJ2mZa_U1a+g>*c)cOT*H?0e0ellV<#fLj&-V4E-B#x4-*0>!s;p1Yq>PjF(d{ zHzR8RZ(w>ffS!eF9bRAVvb*E;`~Omj@}wRxAwcQ8A*4%j{GgrxhS+jIovl7lLZI>o z?(YrMat%k=wCHV}cS>?tayM#UI(f6$rW^y$De1Qi`Cq17;RrG@MI(<{$H*MN-THRB zy;F&Jk*~shsCkdA_d?hXOg(4< z(Rw};Z=*(xwHK6X9x;#m4@>3sKN!0I@M6BwPTIc$! zhl(i(0UEe5aW-d4-8pynuE*vq#Qi8`S+emn7TDt(`Ljs+RmJe`WDgsXX*5l7tKitK z)$JLzGGCmZ9EyIy#1rG|65H8$HAB?Dw%$S_Uacov7*m1#m*rnda58WKaX4g3Ki@^M z!A2r{*jp9u+hkxBiyRnSG#vDApn~Vo)8Uh?&|luE#-2wHBzk-F^p;LkO*9d`?G}f4 zBmVQKPoxV;9~6q7nC=a2AMTUE7qXNuf*s+r21D*P8tpCbEYGAY(F`lqGIj3ve|$QF zT(`v-+gl844>F|nnt3IGLgeW-+Ebtl2Vl!Xd^LL1`q5JLD7`^rtJioJx9Es;x3vNf zgcotirW$F+A}I0vUHO1e?rt(^I%)>XzGJV?C9WQ!Lsqk5UAawzGcnUM_^GLiW?S(% z$+yfbB8GYB$r_rvX4aV{3?0FdE^m&@V^DfqN!!)f7Ke2Qy#{Rb;Yz z)RXhJp=IAP4D0cd``zPVD-q8V*RK&?=r)GjpD6EBbIrbL6f<=C&C?*N(Z{F_at#X} zfI4z9IN#aRp%Z=t6Wgm+@>7rBxOe|+J%4kbSw)2GZ;E|lPA z3`}*nqSZj%0{b68Y;%k$zrq-fzMP%3&hHCU#h$?hgIx?(Wpm#{&|#1OB^Ol3m=sVADa%l`dyW3Aq zk5uXRAmxzu+0eo*2R+SiQONYACgb&1T5oeE4^?I+S!fJn>y90+hpJv~D{0;yZwaUK zyGIqocHjsU+nopG_h(6xWecBm$RY50~ z{q#l}Y;c*Ra9n}jc=PYB@BJRsPKU{n84nI0_BpuieouW5In%BzT;Nn>duE0L9uo(i zYge{YUTcn+pDi2AZC<;fee;uh8W^Y19ICJ`O(EKB6~LBrDu8d^OFnrdFbf1{J(3CaZG)<@uD5QtJ=8NsP3EKD2HH>Yre=Qjf*;RaxrBH= zBK9wzxx=(TzL2BI^M~9S%B1?l;S$FFybz;}`2coYScX*CG#aKN?pBP`hqbC)?PXnq3cYXy=A&Pu;$bfp`y9 z;{7jC=Tx5hXv_RJ0ffqmfybY-Q%uV*{L&o>TaU7eo)(l+G|%ATAC`5(wY#PUQzLkL zVb73nMW4Q;uc$s=qus(^HT%mf+H|e@9^5#??7WY2-~nr%_51dAWTr=51rwxUXD65T zhG3bVrxo0@j{*_y_M6kB5|hMM-H0ztgq;oT*8`i0tXfupMvTlZ=`cV{Zb}-=z_7gi z&im}q$Gb@+kR`T{Fdh~g&wZ>>RJ@yqt+=6|VTGyU?2b~U9lr+aK}q!X zeR#t~YH0pF{TzEh<|CBjS;}C_Ok(~yLx`7tC*6g6f$ScAhU=T8V7waJMAdrFQ#*)SVaIY|G7pgs;qV)CC)Y|c|gb7#<-rHeHWcorDJ2O-`d7{oXou4 zC}6=y#5GN~-k3^rO&G~qCOUOyf`&D`CzRZ=J#>4ld=$0@L!1<|(2Ad(`q8=eH?$nT z>)Z+Plm!+=&CLwy=FFgi+v1H`rh$dfG39 zCALI3?a%qB@v2Fl?%W%K)fTHj7U|W?p~9XS3ge;hE#eAgaETHa-JB8V zq+q;EpoA@q&8b%G0HmpwZ=T~mk1Y(HS7P;Zu|P`0bG_2vq*5o$%4#{7NVP?P9! zd{AgD=F8xsZU=L*E_4GJ7tES4R;Re~mevf=@hsF9J`WWwIJ)HcJ zWH_Vh3H0YKa|uw47e47HX-Cpl?y@U?p>|K0RBNM@xf;TqQjzJ>nxWI4 z4{#;27cz<{)%2)kcP4D!+)QYy>Vq6nGLC*%nYXraeHjBn^>f_Y2Fn_UT2|+OEiwE# zUPnFuuK}}c5;x)Jd2%(bK-8W`XuU%LBW}YK_rc`7ff=kQoo()+-kgAoQCfNUsQ+#O z_3T&G8{}d=-K<9#(o#LA>c%_lfp#mc>^FZ@dQMkibWeW1dw2A!4aSuVZf4El4gBvv zGyOem?z!!C*HRyJ*w`9-+!rCq$XmypcxA=Ayb6&YuD1E@Kd0f z&IY!&!*>$Q-$ufZ*rrG7%K$f-gr%o=}G-SN`mf36Dje-q^e)J*BF zqf(cOxO9RGa!JmF*i?;8>}eD?3Vy;~@97%HhEc`UEyyRTaG(P)^)`79H3{&2drYqB z=OO|&@IR8(1gv7lsTPS8Bf!%dYUF?nhRUxCVcT4|)%i{49bkC|M@?7FZLQNX9{vn2 z?|yJryyI4`w&TX+yK1v1%XB8*lm2RBmZQGJ6xNgmg!)f=&wFkF&t%Op63K<;hiP_g zqAk^N@h4%;=_^&}*`A551k+zVe&VK1gG_hrz>>Fwc$DBx`iUL*a72WY8JC=DE(2V* z)pF050_y)1AfBkAstf>g$FKgO~14NK-PdK-p;L(5Qv z{Lf&sI3VDn6LG3sK3TehCmb=>|L$FC&lic8K27Z@BE`FLNred+slC~cb`;vCS20dj zi(Z_@&pO;zz0xWo8nuzUyZhdA=AQoB0g5@gvR>PllC3a&4Zmnv=hOC*<&nh1byKm! zH)pF}kGaF|KV29@I1Xlye&D1730HO> zJZVX~<2O;4Z%ODJMpWo$z}9qS1K~c3pV~jLalP?=FL*Po^O3AYF%bv~N$(594Iq9L zgb{J23>Gz=l9+4}6l+asqvJ(E<$Jf3ECHX_lz26fTyVX$)=p_*@OWXc)m&d^*_Yh3 zlf}x8zLXpcAKygj!k!l^J!rg?Tzl?!Cg?0+Y}s|`2PXXh7Z+^rH5*IEl`)HiPllh) z;%@mtE9MV0fiht-Lz0o*(6rGrME5{02!v1#RB<#5fLnnXs8vP%Cim2G&C%AqO&sxc zL(}EV9!g|adm*Ul(}?)bkjb0`(iw?gxQr%JOa?9e>Ov=2z%6$4pBDQyO^?gG>B^)H zd&xIxIuAe2Se+N_7rK~d8op$UvtSR%;U8U(8uX*h8JGny2IXId%qlxzml^;q=X5a#@OmK`uRO1;F_9+A6PGe)?G75Z78PRrL-yTwZuBLd??oaJP%X+ zjw|f}i(mR3w;w{g5p-~IpB*tg6Z)Dn<-%z1iX~C~XmJs0)DZv6&YbbB{jEi# zCXLxT9%dWkgCNSy`_@(DxU|sv8r$AS$PqFy_>i zU1Eky8avNfV3Lq`Ndb8-44^&B91hUZgU2OIxG-G`JEl0Cno+}MUF$jgQ@1$AKccYe zWJ+(IRx7ZsTvnczx0dR3|BBLqDx}2M+xeH>hj{?h{=?B_w*Waq0hwKA`+4W{Y(^|1 z)D3xkU8-0fW2&@_Q#TJkQEuLm*Rv1G=Q0Ig)$$LYmv6}~$3RITHu%OXqL)Wt4nz}nLv$cb7e zDebiwzXQiD(=02ycQE#xf7|L_;ro!jN{BCr9L`gQ&sKC_Yw3L#|7o4w?=9CaAHz>& zZ?HyC<36oM=I#b%A?@lEKb7&NMmbf}^Ud)yTLj490H0be4F~susTH>n6iO8mm2KM9 znBT>&D3gQ~U&Eg|$Yb3ARw?BpLgvUC)=cHvYZ}nW3xon&yD)yk%`-CdUr7&vBU@Ibnjk03K?DRqowV^$zzbvZk` zv67j=V#v^7_tr+XRQbnty6&%RYlDHIQkupJW|`7q#&Xo%FY{|{Fk-wGD&BBv%iyFb zbr@REuf305a_ps-?@%vL@AAaBHVoWny+4}d(oY$y__|{@;@?i$QonWk4M9>zuJ67e z$ldvU;Z{OmxZMC-40ldPdw%u4`NCl)zzHCQ<@&(cbt7FhNA(qF_##@Pnnmg$xveeF zeBWBBaG5Y0*bd1BO^(RAe?E6mZ!b*43zJGsSN-c zTn(-KxlV0Zh~2A&MHv-87d^e?>FFzg)b$$Cy(=*PKy`E6-#;6*` z3^mKf(!;;;N24g-pQguItRxJ$bv5*JIX3UPBzx)1r(o|HEqZfCDyrzO76;bFwS@yt zpF3~lju$|SJUu(6tbT8L8Y$00@$P@U-iL8A)8gz7zfscK4xh2s!mp&2T7edKNH_=c z{0B=|NBQNWK0`mWFhZ~O0ZSjms<?2wE%DO=}s{cB(s>ty-`vT<&m!*(`3PnrWv{vov?n8+72$F)6>LCY42uXL~q6OM3yhAZQR=t57`Lg)!K{tmtt@Qh>q059$3AFJ+n*gX* zwU*rn<))sAGjQ6=@V0d?s$`wI11~MjAl)I3H%U3D+<-y%&DtLIRM)$bnTe&h)` ziG!nqL!t7h$~e&diNDUp zqEvET^L{@P*ccaxesu7aJ0Hc5OdAJg`s|ZQi~m<;y){S<^JIk|F2U)rm&1?9EuG_# zF!p50ls7#Vh@5H`MDOja2f7pV8wWBkkFqtZ8EI~95}o%ihsTVaD2>V6f{zpXtF&m> zx@?DoacFMGzDp{$Zf;E$D=*LtM<)vn4E3pj>*~2>%*_Gj(!+b5LkpZD=35)p3n?j( zK)h!fmn7}rv?*&FE_0e`lm%7H{rbI5mhJ?@ky|cfPHL%{3^Ck7pF73Xj>Q88P9~x3 z4K@N5gj<(cXFbD#MxxP<<%Ty|5)T@|q{2kMiUzr8u399z>G~UuV&hp9cbD^{&LnU0 z0@l~xH3%#mIq2qo?6Q3y{V*IsxfPkBkl@nHPP$xR)k&Y8dZgj}9j-cus`%(cwibm< z1@`{!=CM^Xmp`n1=6P?{9&Y8I$CxebwyX({WxwohY&Z0!?^*tgaeeBT2&SQ1;}hM} zuwO&leq#YNSp|Sl-TyG*&`aN1@ouUB(_(U} zN%VZ&^+p!wPz*5Vh!sUB#$tKEZxcx^C^AD*5Ay48woU_{tHrC54W-NTL%(33;?S)| zRN|**5ULR^x$V7+SYZdTz;8#aj6%Vu#^or+tB`>JNdd@A^+^rxJZn;R`5Sr$7J~Tq zcF1ubEsDzBvW{@0IT1InlqPw;Uf&k!nO*l(l+8aSEHqMh_(yEB#dNnXk@e92MvAtd zr&YLDm2r%&j5Jlg*E_Y@ZQEgIN&b2meroXs`Jk&Pbt-`_7>P@yru#w$8@dmWLO*}W zQ@U7(*Q|QBY$Ag_Q!XX+sfM?Iut2)7`_=I)r-noCZ!VMoYJtpo`&QWRiKxk=?oV^~!}if&f7iF#@S068 z_uTt#--U&uyO(jzN&C1zS{QcGS~FhTgmw)Ptxr*yXDvy0(OwBRiygkR!n=&?M!ZHk z@-Vf3M<{p#!#IipWB%2MY;uG=t|e@oZ<7u`T1$XRK5D*IdZyYiOm9?se{KK=TJ~^sGkse`4SdM; z6{v+xhMKV`Bq+WSysHWu118O}^II+HxBl z8mi{m{2Jnyko>6uz>H%vQFTeldivQ^eIYoBWoyg1-pVz6v)jt{{GuYOM8sTl-Dj_O zVcOxH2{u`XOtR}uPqjWWOM*_?dLiNV$^~2vZVI0UB(E~BF$mJ#tQ6esXt>MmbHexomjgnw1~T7T@s17)SaEHTnI$YxH~}J@^=e zx_VpKu?f5C{#YU8T?t!;KGToD6k4vlEi>dX&fmuob2$%WpF~`_)ErxaHm*n5u z!V*;Md~%JuC%enpQ|qJ*Rl_Fr7h;w^w~`82LR0{jLKOpvpTb5->cq*=n(;EbDUfCU zx+x6@7ypo43H@C1`<#MVy7yy^JjR2%)Th)_-Yxo%`BlRLQ`jC?xlN-8wP6cXX$T*$ z(uh^is&TPB&A4*MTX@Up{V=ygLhR*$pf$oZVf?0UeC%5}m(Zcv=i^KicD9;qWwL=~ zYQvM>VQX!nrR=Cp`R^y+2)cEDLgcP@;2jNgiKiw|L#>KvTcV3_^kw}5vP?rkmLdC? zxGqxZxB8(VTqjK;U4rC_4~y^{99Pi#*W!fNcWPX}*czr(KU{n@n8r@m=(%|mn^JYm zF^tPFrO}}hol(L7;sj(-hl1n~d6d<|n|D=a`+H3fDBVi4uU*Emt)}$NpyYs3>#oTW z%m)0i-GhEDXdNyCnq zuKeN@d*Tj;D*8E)oe<-A4HfiLNViKWjyH8Sx@}}|=gY{QtYC1+aMzV>rG`{t)^@~! zb}BRs8_Wi|O9WeJ+n_xww~!IwPQEbPP{S)>zHQwRFRdrj(wiQBe|BG6pk` z*ktfwWWO!mx0oL4k=lf2AUia%xG}8+rRUY15W3#8JnQ-2SQ4=`tZ-0cX}qUS(knA+ zVV!Irnb9Pj#K>$;-JYJA@^;OMBcS7ceC`1>S6J!os+kail_fmMBtOZ0JpH)R(;DAL zq}onSbMnY~pyOSNQM`&#YD$-^TK1>mIDl-UtgEJ`;pIll9w=&v%Wn zI+C4in6t?uHKRE{-&&YSu{Yo>JKb<5PF{td97V#_Jb;7C5j#mAuJwQz;;DC_rF zU5z@*jM)|=k#1G>p22n-2R1UZ+{HC%k#_ifZuimXxKt=;bc*`M*CC=Lc&Uaw3}{Rv z0&2>V-?0D;|iWZuq0R@^ZQC;kr<5lhaQn0kt2yiPLZa21&{u*Pc8ocUCE1vuXFoy1?$mKk&%8 zfhL~sv^!7Ta0gBrl_UTPKoY{NDSvezpOSKkH0rFWdh7hfz?TQI=K_?_Z`DG~_@`$O zRBRNf(39ed2Hiion;jKT`WRBbK|| zI2KP~S7%`mUrtYn{}>4$n-Iz&Aq1Q-R<{)e3w6;tjQO3ohy1|LU=pr2W=^#HI;A}A zbJVk;F1=y=B|YHgkZXM<&YK&8Zx+OidN7OUE?$>jGsiKQpgp9S-vpo@Pz^YZ*VA4L zJ_D`|o1p`EYm6i(=bSdRcacy;*g_w>>m%pngg2oY40~-uxnpqA+$GQ4zYoN>r(4O~ zZ>%=(T>_^Qh@z`?N6OK9PMN0cRQe_p0(u%uil3Ka37omERAbY5lTK%fg@6Kw()g=P zUu`<94HuNPeR0l%@2R%>p-W>xN84F7GkbmKVomm;FVF1xZH+ChyP^9zw_6ZNxf>|d zH!D&tU>STX!@8B1f~`-7c_S?sW#N9X#O4qgtHpkd;u{v*SXZ3Ty4y3S`!u(vOPg+g zf=U%YTGh>~C)KLg)X!Ys>vv6Jpd~s#F6WAiR zf3OXX_p9zx(sUOCreY{}nJ?Y@A;zF{%uvK?PAi{r?4i{Qglr8L?~{SH;m`#kb?bTT zZl6N>MBdE4Z)zBCEx)+%F7KLGMN=|{PA1GCH7TSrXP#_a<4li zOWo6onoJlu$|#_>YmH)xV_d((WBNKx6z^%kWiT<5x;^uHV}{?)7`thUr8-9{h1<7e zfHr3v`cO~Pk?>u6hsvbSVY0Yc%)N#F*M%9TX1QHJ0mnznLz|qzwzM@3%Hg)42@#y) z!jU6GzG+pB?%6e`LZ@r8^k5K$F5AF4@NZ)&Eud!F;a{?#b7KWGnD(2CWXGeAQxM2{ ziASMKY;}-ZO|#|kHSgtQBEnl#BmQ4yBv)=mwX=Pu0lfa-1rvTrnL7Gn(|yuYfAe(9 zn7Bd9him7X1t~4YMn0Pfcoq|R`nWQ%e7M2-bOfb*bNv<-U*g@drJu#kv07E)LM>Y% z6jeJ4;ly-)QNE?$Tbk3sf=fh#=)rHDrykgv4e|kue@H*-&>8G#Re2E%Z?Pxu`Z{jg zb?fr+(YTx16r(!b0BPD==nu+O^g~F?L9+DSkRd_p^nDgPyR4efpb+Lqn&n*E?zFa;o;18P zPNy3kGyn3=NjRL~RV;>6^N?@i&B`q+jgsKfItEdORsvy&HnD59@PoEccbaAHA-5k% zDt-UCe)mSm#6s)3%Sz2r;s@l`kWIyeOr?U5p`TRhO5Jr}WbU&W+U;`cE8>0)Yiu!n zv!oKwgmMCBd6@NuDgQ|>Ox1P&ENenWdQ28BhqE1j`glmq@Qi#_VF}&2(pOWcT8%$Tf!7F~l8{gNXTlR5|yRnT(h5;%_SRWvtN zUuG%cadk6l=X$Q{>FEbgqfHzAWyJ2fNjs+@qFkjK4CZ%@ zb)`9f84iWD9)nxDQOl3Om{#TY4U**z7q~RrNF|#1zn3+!!Y^kIc}n%V>$=l_%})q% zhtmTs_)%JFz#g@5@avJldSsy=jeuZk&v>|QHY!mSnj?~M9&8te?!9rG^*d}7`&--Y zccu@PiUwu|Kh5GUZO~qZ(*Z@rccqQ`VIrtwxKf2a1snjC3;OK!S{+>UNK}$5=5Z|y zK~o zxr{6_HvSJ>yDcoN@(%Yup_oO~+BdsJowvw|<#f@d`tCumFU`%i`$pXfrIEEn zZBbYMVnrPdtAztv$5C_)cjJ~6*mnRq_0@|f7?O(@w z8ZE*T749dwIDpG}B}^EPtLR9O(?dYGW2Fqa?*1xwK7RjN zWiS8}Z&~bIi?xQLFX}yX5INJLuOf_j(yT}KPemop-&iRkK6rj1MBDXX111jeLbqys z@C;Q=uhQe4Ng+^EG5(8*5YeQKXU3P{v-OCw@<_!f(C*PEQzpdiwwCbGb2&AG zoVv!l)!HkHKb+;{ymw!6I8!E&zEB-@7f#NiNx511ATYePQ5XB|STqh%MurhZNNA`W zWE>~?bdCYYvvdR(!p#Xp11eVAcDJ1Wk1W$A1LWs{(9;UVZUZ60JjqdK}=xCd&o}s%Ex7b>!G|zh&kUZS2>PeBXv_6DhJsPdixw4{pEQP%}Jd)cj-fK(?zvP<+mI zdBF5|^%Hd7`-@d0+fm4p27BYwwe}_#OZ`B?a$VMF7Iim;H5B*4S&EwWolTBv_>kue zI39>5gbJMC8;M=-uRntZrnV1St@6eX1H%ay8SLMXT>a_kUqu?l$#VPNkj}tE#ok%R z#?l950DgRVqoRfg+aWGagBA;on&JARwK28b5S|Lh@9&oWN#F%iTsT4lv0Lf82gc8_!A+A~TU!)YbkZ;LpO)LPm+;)BA_e73 zw>25Q+IR1zN}<2>X1m`~xEvIVvpv3@1oG>CoZQ{XgsnCggD5JEP6_f#~f zs?j!+2)?a7w9oXf@_SK1??-Q12R}S$SF5ORmV4N?JC63%dJNHxwi@~U zTjV;Ve(9bAxJOtVZt=5N+|BTyM!xgBo|4xN^fJJX+s2cg!`5FHVcz$X-4@;dk3AOd zFkHT>t0)DeKHiloe>tRIIN{{12s7(6-5+Km9q6XaSb|W6W+^!3vmgFE%CYAZ;vF1q zWxd5S9hBtNG1ItQ(0tsX!$pAES@lBxNb-w}#8Y+O>eqY11a_JPlf!SYgbO-)QEvN^ z32)<;5!Wp{2eWFt5Q7(BmK*}KLh!7h4;0#Zm)|zsTIg`CH~@;p-Vh&r?gDwYR&=_x zhcTBEnP4){DG{Tp8?`eR#rDn|X!_C^idV-?Fk+Sl~zT2TMB>dFHYR z#+mOQ>0JygfwxD`t$fcS#2bF!(D*0B@HHK?3TEcMxbvrIIfDtdT2HE_@Ky;Zp$CIg z17fOL%0)M4sJ*pEFQ~N5l@Kat7L&eJeo(fgrTrL z#&+*GJ$#cW`3oV)F0l9Prt1rErth+nL3KDmLWK8t++~8+9=*J>%)PCo5(2f&fi;;u zX=q1y^zpal*0zzwJNh(>0fjcEBH|4m8}%0g_=2bAFc;asIYDNp?B$?kTTnf%`z7tK zhY0!{H8Jr*8qr!nvs{?l)TaxN9e55XLu}fjC;-&!-$j&B_ zZ(T_B`!s=kmG;h6<^#^M-FtUt6{;Dv(M!i-A4T%XRD65%(n@q*@+*n&Jg{C4C17_U zkRM;4=f;bt&bZp1^3NfVPH=#S02tBiXujvYs6yo+VrKpKZ*6-G6^+et{QHnrQ62TL zgnF%V4dT{U7|M5NaFn2^?l1;(D|jJANkfhc)i^+k!oQR-u-U0zI4e`>gokG<~6c>Dzh!?IcaGF@8q?^ z)pzX$N0jF|KRk6MCU7N_L60F`{1mVlRc;v9##JWb?d9=wH@nLws(p8l+%@Mxmspt6 zc-g0iYzk0+Z=iFdSK>cbey#3BpHptxT!;q}s?Vo+Z$N(=m3)fseH!qQrMWWaPT$dh zro7sf(CxHh+{iQ!f3>>m>?=nPd#F+B zerviVWme1z%{mPJZU2XPW1@Y^)nAur=i7GJnjI*vpT5B@xV*SD2t7!Rf5Dwq56AYX z@4Z9W6!?q<7p@fa&h5ysgbKQIWu7A<6#9%LoPhnv9J!T1z5Dx@$f`6scwbv}w~tJX zlA3c%%p?rgP4O;#L#t91u!nXOLUVnVN*IflI=l1S@x`@9W}O!dUg+5rW^%Rey76sn5@YeE;+u5<0?+II`epHM%aDB zGwoyEtgZ4p^~(_w1#;+(O&PVfYOzMyN0Ili>WxBuRP{#FTMRQCxgDfH*DueK-(j*=nVl z+O>4{@BCR$t0j1w}j_Q)lPw;7irZ%5Pi zr?gj)VS)zOV5J=;5(klqv3pIoBTr_sfB?d7HKpT=ih%%vajnZuM3V0h#p)?~4FfFW zG|peINIt(`R@F<`l?!6sb2U#|-87Xr!Hfg12R9B|pg$3!`>N1z&^o_RMA6#6Z9$OZ zWY13_g2y7vXfB7le**B}s!VkG?k$jJw3Uk1@0J(8{E6(2pSmwD`BiltmE&wS;g#{<{ur6CY+qvh+RC0Zh{G5PFEzAitS)`gpPaYb2BhSq)7u8D z^dYanwQ{CcHA!QcgD15ay~QU=1Yf=Ta?Zbl_V~`dbN{CT_;Qu`HBbGe>p!(#l75?k z4r8=lnhvl8fBlO{8Pp-G`QHf8Vm&6!f6V3sc?A>?r~=n(`*3mG(vDqHuo`$F+%Rd@ zniL8TYx9NuM#^#U;jI%~bBAG|Z9jfxEm-cyQNZ?j4JNgS49>S(6f827^ykhyIHhSsdjq51BAQ&LGLP>Au7N(JWaE~r_ZSdAu7g^8{4S}yR9LL3xi96DDHM2tLPWe zgR|OnCJkzTsgbu{zY_f67M=a`+M1B;kNF&t#_(<(1!!qTny^#%nmlb_@H*dyt1?#H z#x!ix_27&0K-u})tZw}7;6Y>6k%}E&Q*n%C@55mEzh#FPZ8Eg^St_rZsr9Hcui|3{ zNw3cnm*-sW7e(xd&(6ZWg{uEFjhF!QM?RzekadLo;jVw~EqQTy`TNuK5c5y-GT(RP z0RIxQ8YTg@1hewoiKQFL>W9MvQO3WINb#)Fm%ZJ0yI%dglyv=yeKouP>dnLvB))el zb9q?tLh1h!a`}4mx2FE{+b0Z>)Bf`R=VPySsEy_kFaKM!>8V^fjNvo1n?^J&hdt<; zFu9Z5Jqp;_i5mQ&yHUYjgAcRd^5Vk;kKz*B8kUsqC9s&B7M!{g5UWR&8?8YSiVs&Zi`1Vf`^Y zrI(>!VxX%5h%S2jL$d1SZ>IMEE zCKN+zntK0VAL-eJgsI@{y=6Kz5izxQj4UQxzqu3N(8F^jy4#9#R;LJszi+;Wd5MY8 zsg>CvNc#A9bZG8kN=hX%r#rGR-{V#xzwx5(Mn*&Wu!h4|(hkf0fzh|d1>?kW)I1yP ztwB&Bf@3fux1rFFi#}GMi;mgX2t-(Fp#l!pBON?AY;b<_a4C`H_&(5}StMzL%oO^q zwW@KhFN#cu!kl#9bHpjWWLDaY2c2(=Ud(1|!NSqjBA)ls#fl5Cpi54YH=L8cz#Pe| z5khClb-D0o7=501L64~v|^t|-o5tT z=ft0xj2|V|e5p8WP!oidAPeO)GF$~x4KPV_B7qTl? z4Npa=UaJ(9iQf zuYU(6_8r`i7l5sDr}+Uk!8l+y6E`oqx|l-@ERoJfL%qVA;!bbUWee4n-dyAs!@OUw zJ^{J+<3(msvbiM>_c zXw{VQp@Smc!3_7HrM+M6YI_bcayL;-2(-YeDBkN_rG-6?d6x0~PjrhGDxxHLQ4}<@ zxVGWOTakYYr58RLSLtNS+soCB=lgI=L%zznFx4{{Gn`-i=N86-XlWeQ z|Al&Lr$YXTGUyDW%*G4JSPH!06R4XYik|~E$}dD1Wpx3682zAVxY)cyeIimQc?zYh zG!}HRAhUEeE;p#U@@_85EBl1z-e(?lTddNoZo3^Tsb&fK!Il5WT7(?1+*GP7xY zcG+RJYW$KXnoE8cKhv~NyiO1;L_fUe@cwGX>qrN0w8#r9`QfgQ-c_Kl+J~X1rOGn; zD0sZ(PG}eAwU97-;G}esQoUzW$$OqLJ(Jr^ayL^#r)YIb8T~*6mX)HR2aykayLuvf zU^OQFQEyhmf|P^aR2K+S511o+OWQW|+tOwt7fr$D;uPeIZ^7Eh2My7gqI7!^1o?K- z3xywp?U2ECz9BQVrqa#Dk=|VFcsBvoF&7S-cuI}tNHbB-5*PUGR{U#|rf%C~+f&&? ztQv^?6%4>|hcSGBnzySUDC4xuMrC5({3W=aE1}{L4v=FXx5iujeBoGW;d}T4aswa+ ziL`tYC5*VK$850lja!G2AA@Q4;Q+^AR8T{${bPhC9N$`(tQ$oXQ%~CRANCWeX{oY^ z6d_6&AIbSF&95SRd4a_B@sgN`O+wOAev$R;aQ9)flJLfii6w|T(I&83Rk5c?JRNiNr+*=DV%}U=TK42~AQN2(* z%mk_#tvzHIw~A{_)tU+skNaZpSV#v*N`(acL*~%|H2xu}>^JWj9X5~cc_kdHi_ybK z%S_(P%SquvHzlH=k54u@Xz+u zgSzIXLW;i*m!>Xlyd1RG3K|m~(|gC~=K=uktMxmM=~13;uP@vZ+_sQVuDL$vlknzG z0c9-NmD9_;52FQ&vgkVIPOd7`m;3yjBRG$G_wP-QdV8w`>s#8i2Ss?pM-F^Sz%8df zB`=5Szk+2_eSv>!%yKPl2xe_e4!K3Ttnb1f;9A?8F(@9@h#&VGs-IIa)LPlURGH;6 zJU;4HXQLzQ*{e*u)^FBLrbcb{mLV^N!ff&C|J63FU4sX{{qJO-M^K^bv)f-b4LJ+z z%7C(D>7i2PRW4%iS-v-~Uv5GChz$?7(GKVKnZhq*z5C;SIi$OAl2v}=e(ICGP47$V z`EO~-;BhCPVQOWIcurQttez36rOU=a32HpzRa90ySCWcu*Um9Cy1=wkUU21lJY}4t z>%pUbsJp;LT4BPshq&3XoSqx`0c&o^wBhDa=Ok%)}Q?}z6aJ2GKCJnqkVwqQY_jrrJ^ zYq3CNIJvVbbKlU(l9(KvgV<5$W}C?8N6nL?sn*^qxM*pXa;!$@ZnQ(8kAIMwZq(-V zBZL|$x1Cz^0<)6frg*i&YeXG6sPsKiVGqiDR>z>~3 zsuPL}qUxD!F?MOsX%o&KCUNp@y9PG&)lBb9m8dN&U8z7wi--HQifbB=3wZ0*A#v5b zmUxohQ*=Tbg71r?3TvfF=LeJNbZ{n1c(DpF@bvRBfKDH#{7NGyLPPfXvb7UH-r`ai zT4Fw_dsOP+)XC~|u}$OjgWM+TknJ*w49Ow1jrasO!?VPANfA_ZenXsdDVQD%DG@R_+^KE!J zuP|}qujfuYeb7`{nG^~4mU|tgQ8!*)IDq-CG?KnixOc7grSJj_C&ZH=1d z6p(OlmzKBc4C|y;!_t0b8KfW1nx0^`lU70#&dibp!R}mx>8HZr;Ks{DK=so7%H@AE zNx?sNM_xJm(aG|j5_Jx{AMrE>FvEHq8$rYE#f(*Z;Mvd z<cX; z45M@3_PVa764<-@4B7e0@M{ENS*z1Nnd+KIVhd<*yr{a7;ZWV!;Zd>LjZj4>XiGlK zWFnrNhi^89tipo~-@)lCa)eCn@w>o*`x_~d{G`sFFxKCgpZ0ajLSw6_FvaLL`T(}F zLCUagF`kW8qqq0%Ng_$bZus=KzsiLeK>2W)bY?A%Tpa@a6^)K_X=$24!_dsRA#z@N zdR`;0h=uCBS#^d>)M&{~cKima%NSXV!H1l4yMZaz`w2aa#Wg%WGU0cC1o zNJFFoJGN*Z`=Do1BuY6PL3^yrS4qArE#|Jbr z6glxx3d6kdlzmS^Q9F68+R=Ko9hY21I@wJHWn?NGQMF%Jx8^+mHqDoPd}Qd+&$K1p z+P|@GIzi`^1Te2_su#7kIH=h|(R+MKeeSvBDnNCmpy&+Sov0ayMs9fVA`Tl*k37|elRm2e)y`- zbm;0|$2;#}`QVw>)GfeWg7kj#*tN73yS@^9(EyOBc7sf0(CW z0ro#f_U^3BPV6od{ahYXbTynh0g)q}yH%#5wGyGRrdUcfDYANof6-{WPH1j^=8fp2 zy=3%%;aWX-O>oz175uRpdZ`n%O2^E3n745^(*ceKtNBFSMQO3&_tsRd=rEJ5 zqVxY)C0m{G>7wb{#5pA@ zOr`($V4BD?>6F$}Q)EssHS#CKM-!9>m~F7@ksTycsZI}IEG=%6jkx@&NWZ?9`=wL& z6NVU!X=nXYBvE<8mr8xRzS+Q<6fPcnMPWkvEz_zH6Sf4H^HyV_it6shwpU)ou;^Y0dL{2q(G67tT@S~608o36x(_T z?xjHh;@V)nq3}1AOaAwZ%q#EjmD6?7Ex=xLkd1raB?x?mCHSTB3UEuO05Aq`Buf+u zR055e6>q#U?A$e;R?&E}6UIb%A7kMKEf554)J`k)%QH-&}#-|e>b@Q);z>W=GoHfoCf5 z`WfP;lQ$!N{W6KpuAv9ei<(?mXAdh_OR+) zAHJUKz=~&-oo#_?Ei`?JCkr8ptIZ*u9eI?B=BM*8TJx{eT#|{=G!MyS@EKiud+8ys zXA6Th2E_vNyNS9a;IBEuWS-^=q~W7!TEk zaukl;xe|6Kw}f&q>?8mG2bavuB&tq&jkL8ZpS6>{61(mlIrV_C*qzdWZ`~) zPtnY0S_1y3h+0Xe5^eTE*hOh$=3(0{=8)`M@Ne*XTN zRg}OO>Z0WpUn6Cz2!2uMrzp4WfC+~nAUdEKg_xtq(69MnVNyKOvV^dAFyF&xrxXAKQBXFs zumYHF#W;U>8}-ihG7T z5{9cemXs$6l<%@&_Is=Nf4Zgc$lQHxh{ilHH@)Y}pVU%2O!5~?O#dW)3m+>=sUEZ! zPGU{1KQ8%`LV`t7m?y9DD0)*s;13BCq?vEoGcIe+d}Hvl*`B^(7dkAt?V|wN0C(b4 zl@*M2;S*)=8o7H#%l#6@`5lYVpQc-r9XnUCF|rVCs&V2x5gpv|z6@Ji7*+=rifbA< zUB)T9XlXBn17JDGsIRSGZIo_M*a+_qj_nNHz@AMqJ@X8$b#wk)Z&P9%2UuUus2yjFEKc0k zjc9W1nR|2{KxG@PKY+WpL-USe(XaNzpa)hEJfS|ddW&v zWB6E$-BGW&=BGb_)Ak!s$L&_cMLx^AB4^r$*UOL}9y&F zG4xNn_n1(E8}~-)gVj(7@|;Y}A1W&woL%0@xqOXbPNKawi~jVgCpW`R)@Ti!{o1cU zt-{)gOtPh3cWwgX!B0mjr^g?xZ1Dd!(9HDM9^2FuwWHjf(40V+=fM9OMGNJf*1Y}u z0PU=`d56Za z9%+4}RlNu(ny+#^`$QK zEvu|VA`q?DeWrzgb_cYl$fPM1FKyNwQ!(qrn4iPlWo_b;SIIj1+tzpFo2el@fBX-g z1k&^auIzU~qG<3#!|XR@5=>=Z7LAUM8SprcE-}ItZghJ4S@Yh`YQo0O#SjJOoLC~(yc54E<8;E_JR5E=PjH*vuEmm zm#JxQt0N`1B5@@lLh#t!&(q!&SfjDE2{745v<_qCu%)V}$J!?LM#Y-B>)#`mEDx@< zkpBzdymm1#`|Nn45G%V-oX&0uM$8eKtj;U)8CNhuutwZb;ELf9#XDJ{Wux~8HI zapZ~X5RRCx^zGx%FDUT82@xy&5%UeVE6zi1V$1h9~${xNBc9aFjDHa5i})0<(a$ z_hB+QYOPTc=ncFh8T9xdx`1v^)-3I~Xmxbwv0YJ7V5$?{!o>gWj;I!K=CSp>dAJGo z(C|v;53|{SP9E2Eh1SB>5E>o2wmGHPpEJIzE`O^!(`2W&$S{}3&EXsj-%GWlS9ID` zu8VNBuQGMoMUGS(7%v_eksxxp$J%$YofyF1>BPDVTC=)KDbPn?yh-owpI5B2CW%NN zEoFHm{3deBbqEuoBqvYav?oWdd~NVV*~_K;zVi=n3k}Rk@$Zq;S6bEcgAP9}xkVd~ zv0VrE%qJVqiZ6wRL8w7!Y`CL?Lwlv-OOY$8_7QvOZu(}DVDgQ>k}zC{jHm^5=AV*_ zhV_}QWAMgBN)k$Ir>%(Ncjz}fr6J~_HKaj<%}J>mU+Qt;*}(ltw5sbQzTR{uYb8$; z?~>j7_T6Cwn;^{x)JwWKI*vBsjRk#Q$IITFWS;L|Tz&8kW1vElny_$}FdUs{TZgLrlg&(CKyxD(L>u!14g)l~M?(XhVZhd@XA zUSdc4v z+jLP}IHojY338y-m=V>AwrVcjSS4mbx~Tq&wx z^b*|ft$4~KmPL7}CDA4jT%Pd6vKNmnj89PifK0fpKS`JRrRQPB3jrvJce;Aj$h?7T zxhLA$*{~{ZF*G{6E=TW`h2M21loex0+bi5jMDKVBmZMJc{eev`=FVfb;a`4V@xwfJ zE-v1;6+5fW?Iyp)64E#sE~Cf1`Pkk@G%0Yb4$K7BM?G};8IB&i*hJcTcUMY-$z(Zx zy}djB#69(spLe^FV#cfsXxlGhxQ?>bs*6OXnI*9~u}6nbHd)z>95_3U)tl&5`g?I# zNnRp`=jX5E4t@(!%SdjSqRx=tzdC3Wpq#9Q{#pn-WDJ4W@B$@ zLY?}c+Na)1)Fr?H7IKKaje1w*eBF}e9=KG_ZPlV!ldhMe5?R^NW-?B3ts=#9xiHw**E~+v4=(jM=Zz!EkiV4tco&T5|Xw)L;MPr`x!yB(q)x z@yyAsT<0H;+>&)rtG+A#m3K-T?Q9R*j{y>gHjfd(pIobKghSQCJ$z5w>%qae`OA$|C7nw7}>!%yreYK*2P$p8@63&&MY=Gf!k+IrE z%|;z?y&73dQyul*>0R(aN3zYV-*RXrq!WY&NE}4v@S3cEtV0Gs9NzK&S1JsAM<nUmS#_xu7N4`?g;pJTFCc`3cB5 zn2{nEtS-EgiM|N<&v8y!cI|rn{|x#vE{nl_dsh=GqW%RG4#sInQs4yIB6V?=pIdYN zJ;+f9o;k`_+R_kf@Oy|#B(oDMQ(ZjA}JKyL->9}Zk^K-Cb z4|NpYr#h@EXHOY>QAK_wocm!=nb&{Es4a0$Yt95dSpeyRB%=o;5aQw?D6HH7Px{gR zsGjsd(!m@&R##?18F7M8A2BYbu3a&Luc+rr>j4OQ#Q{8{)f9CN4Xko0cc(@~D75{SsEPx(ad_OC!xb7Z)W1a#2Inv@66OP0ZJl zm?z>Tpsltoo1DNU<_GC`!}J<&wOFGbz5S_l2!DHp|m;4`)n|gsI>Ti#b zk1_wyJRrB4vpYyK2OoAPKlHDT*8^ylUT>jMX%g`b<`L)XsE;l4Jza>}kYT?9=F)f5PO9qh@msHCRw|DU>p7~N~4tvgbwi_qB71zYE@1s<+1K&JH zd#0o&{W^NfMt+klZ>~G^xvJNOdLR|z9rwkai;^DTI6S=4pVd$pZbor8{P>oF74qKntu4$O%VHDrC9e(IJ;;mATSE(-T!JOWezmi&CJqar&|@ z3``NQTMGjKJXg?VnN??+MB>$=!5JU(dRG3-ofbgOhn+oLx>WgFwT5^;^#Iu7=KFCD zT_UO$KI4+^gLKU};Ft8`2Uzn#*gy~eEu<&1RnpkHS_5BV52?H{-IZzwZ@V&#YLdy zV~CfLXg1}fibkJHI_>mb$xa6OZ zH0!$Iu0A}QddHR7xtU&$!sF>!a(b34cWF(My$7(^jsEXRd-kW_DE6j_JgB;<&4dy` zbR64Dnb8|w^)&2h7vIDVRsgBjSaAo{hLaC~Ro>m+3fztOwyEJp{agCrq*NDdXm@Nb zy0y_Ll+UL=xr1R9cf+s@0}x_Xx?wgW4>Aje1XQcrJC4hPSkVE<=C&JjkxhN_4ZXte zyX5t(@c{Ppvo#I))~V||+YR<9nGTyx>Y0TIIw__S-0wF7hfBz21rd#sX@?Z?MCPmt zw9W25o}~a z9V>UvEpJ2QQQU?6(E52X;7MSHX-qQ?>iKzs=y67~=1xaK54Q-mC2Yc7XI-NQ)KbLM zu;dpFr~X57m{&SK&K=f9&fH)?I*45A>-pjIL5XhGJ!(H^?}PD?ED)|tQ~KcWORf1c zt!h+%ZI{sHDT%G`&Zu?CLv>>j2fyIuP@DDBskzTHh-UQ2r9@|1n9{=uBEq-5I_yHa zzd$azj@sHm{?vW*?d}~wv#IL>!z;wV4nlES`SPPQ21U#FJ2fbV^CsyOPB+OQ$f-Za zN^j*HVJ7lu`I~RVAI_l$TOe!iTxD*C4~r~f?sExDZT0k@`gWBnn#9Z z=6S=heUbTU9u8=!q%%r-Nqe1clLdw`ij?7tvy6bJ+wcSL`*(V`KcC;Jh8-%N*%`f~ z$PgY|drwsIqZ5D6%?$fZZx=E>Swa_C>3ba{%~Qi?T;__7_Gax5Wc&}ZHOo;NTke&T zmkNt!eEvZ$EVCX#y!hS&3lJtnJ=@KFAJxL~rWdtT{iLZ3!GhhCEZvA4&FC+VhZC+# zXd(quXigz4EQ{g)?3baxWzP9~>k`s96v>s5p zDgd##HI9yOw<_B{tvjrBtEoCgU<_rW*;wpHOEr)H4|ZN`PvGgVWC+;yHvMf~tx?|Yw*-Ul~V*7@&j z#=@{k!ka>e&?l+~do`CoIWxlSViShFbCd&~4X!7248&4TUY+c)-lSb*f?nOny5DV{ z;bp7|2)+K$DS1Z6(xkSy$JIC3ymp;hteDn-HhnupsPioJ^lu(>38;0QJE5T1bcqS$ zld>j$WNSl3?|N*=5)!=Eggsp$&qR59K3nHRBZyoE$i_Wz#c|RcN?kQaM#Tq|HAL~a z6x-u9+61dt?I&%$iGI^ez9#t*MB6Zo0a#?iB?gn*#ht4M>o|iNBI{im`rVkiY!}l! z!gQL`9%46;loXy%dHJsyYX<#X$9HyD7`}v*JZ#`ZK-nfNb}S)7MXMHiuZ;5LL(y8- zWt$PEmX4GCwh^OP7=8=`l16sDntvuP2o6jkJ ziH(cDAkVVp4Ge?J6nua|IQvWVe-H>DDeM(a|MLWL9*mm&erMN(Pk4sZw2{-r9u8q) za4n++TjVO8o=Z-ns+Y_?~&w_>EvAXcTC8l>f95u+RY|QNrd6>>;dO5W!I^-o| zo0|VVM0#@@$j2UlXwv`>=h|+Bib?VIH}+=R+rSU&NP{XR+ivFJyHqn=XYIYIZ_3>@ z#p~{fMc_qf%oX+?_5HUMQIYSqWI1c`9%Xv4AE_>l_me9vbK~tRzen*oB8CdKIyFdb zI^hgJ+y>l#4cK)EWg=G+mf06{4STKa?3KtaeXWXF`kH*`2LV>I+T-0iC`1Ty6kset zDFAYA#DGX8*<`=cNacPSe0uKc32#=pE@mU2n|1Lw!^>SwA9vkIWfjkJhIj97W^^Ox zdx>l}Q-fwD_uj7Xhe$Bt2NRe)*V+|COnC%<5vTg5c$K|?E5Tz2E)@pZb zN^Vi58Dq{=LSHVib|oZd-ScIR+OjSH9#HU#8mX6>a+xe!US*9kCHGgAhC&Xe;+8Hc zRWb-iZIt;e9we<(Ku|!uU<3DZQ>@WdE$Z0HG^v>PBWImYG;3}0YiW1#{!5sCK@XcJl=F0GHUqFV&ta)Rd z5x)4wT(_;0Q?7BeZC3vFE1In|C_yEX1<_DI(nm{2!M@m!m6Rpwc+GsF%Mt>&cb(S_ zhGri;^yoYWI$GTii(Md>1pRjXN2$`jrS;3rZweBc3HwNiFVy4e8RF;^7PIPwFL?J# zS;4;yAbhp~D>r?AvznkiD_MXp{SV-Pl?&*4tlt8c9j>n4AN)Skx-!*AHIG%8Q>sB* zpd<8^OoN7V@wqjq@6KDi)W}K8ur%V3aBH8^SQNjOCA^^NM6a<7WUhOxHb3`hn%CNr zl)F z>@IZ=-vg?B9Joju_yzuwmw!phe@I+F>=6xM9L`l936x>2w?TKZokrkltU%h}&I9tl z*02ID>@aQbJYt%w=sfuM)-v+N8zqU-o8N*(U(RlBLwdpA++OghWJ7ZFzF*sF7(PP7 zRm==a<(X@b+?d6B%cS%Dgl9E#D)APjb&Y0i%2MXe>2CZ7?6Nz{vTBIu0C~IGp)KeB z2lby9(2pee&4MRCKL=nO0r+{pkHylueV^4*?ob%egprTdOGG)KADK3`)oo_&OeuK3 zmEt@ige+v4o?*0^E|q3EaCPLqYv7-xwPR&jHWm0%F_>mYVDlUgLrkhQ)w}#5TW<60tcE36zjTU|~FP^S)5)TZABcidSy(VQ%OrP2F;;p}u5k?iOADTCzo^$l>A9pIszDVMSuUi~51(HpM%<%$C z1TJ=6-ch7X;2_to%zTeI>6a3}tRx>i2Lv*&u`^KnJ0YlljbEdRo!|RCAq84%d)J~K ziR*U1x8K7&?80orR0%ySaJI2NcP#KHX9c7dsc9vh1m{U66gLgrXlZ@oBG$S2oMA^=h1KJ^l~%RgwIei|Zj46AWvrcKnz zOz?gnNO2zE{mARvx|5GXqL5-M4UMhBa398Umv?>)&MU;tk(tMY*TJnj)SNZ$`<19t z*EObIQ;hzYGb#YkgxRqC94$}`??<}W&+NLp!p6A!LwaHIQ~Lv#!uiEdN-awa=V`{Z zobHBD{J~CxVc1s-e7pUghN}u5?`2TL;Nj*(jQxHW;%-DhvK_Qu=%%Rw-B=gt@FrD6 zBTyYK$tZFVJ2Mb5M9(lfOxWT?M&+&U2vB#VL-M7n0-4P713OOh4?60_Tuz>PM2%k=9p#x>4pdt&f9?s4*XscxO?&^FJs{D0F`g4Guf2f1qPv>q#jg&3^vf72v~Ip2MdzO-Boj%ebV zW53-#ptpPCLZRV9GaUN9ONe%DoWvFCJ%Up=s^0w0bZE2nz1YvRQW09-@KJcTV@w3Q zK3}X&fl3hzJFM03s6y>DPn}c3`Qatexj#oyxTaOarzD&PM}DMw!6U-5=?^H1G-C(Y z?Rw~mG>s_`^gvGn|T%CJl&*5JpPnR zqy2N5&Y!utdC{B`V9G2+kDJJdQ}L!W|ISBM0_!g2sleL7VAydG`g;PGrJ8MG3w`S{ zh37skvNh_vm3HLrNIO0#V7f#?4>6)KLWaMPYdO{-3_`_8%bVtL+IDQLzFF2j#T^2HBw*OMNLcEuSL)Tv30KOmybHNrGqx?`}!Dfrg^6 z%NsR_W)b+Xw!X&T6>C|F5=#6`^5L2Zj5*Iqtk1F1Qu;^*FV}&QV^?|S`kBP?5ocvB z{(-nduSzuQ6-(+$3jvy!`a-_WUN^D%EC{Yf)Rji(~rAEC)e*bED zoW1%+q)djzNzKJCslz|%OTIyf+qne+v8h?vy8ylFA}Wt#|fdx3=Pu zXp67lGT$J-G zZ88_PzsWKm=}+ImHNM%UF_5|xCYJ9Vz!GCfRMWw1GHLpgf2$b8CXmr)B?2uvd}JMp zbm~8aJgktt;$1l5JCDm_8oqhBUKp!ckFz(dC>7s4qp~gze^!s; z?@XCJo1HB#XxYzz|D9F!2ixNkzQg()eRxtZ({r7RdfK&)5}RLCeaY%ilb+@BIQ(0r z?G&2=6E#XyEBToeicZ6CilnAftQ)(qOhVnmZDafYbFk_vz?Ndud~xT?I1f zSp5AA>;5V%js;j~w0?zOUa2Ee-*~&AZ!c&2{TLo@!Ot1MOKIBNMEb#g5RINuF6wOa zl29Rj`_ECL$>00IUQM*pcvbdJmf=+ldOz{D5oK87HKjbAh?@@h1?yVY$Ht{Zft)Ac zw;=*4piNz=TW>XAN-zNrCecNR?UNqaX*M~jeqHyMvmAKA@zS?5&^d+rpNp(pFptXEi;=2em?GS$RWtV(e@uQj8t@w8X)pE7!n{J*PxW1HmORp!`(G}(tuNj zXHU~DdqO8z2fyog)#als!er|vhKCHjil`Luic~LjV=7W+dY8{p9UW$#EXkCs7R}PC zXjpzG`YZU3jcMG9lE;HRS|DxZYoU88_$sTY)Kguxx^JMnOyR6fa(*tM6ipxfUa@5^ zA@q|x<$g599>u-jgUqT00eRbpSK>m?CtmRfyo2ZVUBA|EZPT^PGfBl^*qR@I%V2u= zv5snP&7@Z*9)8C`9>9WzRdBMlT1dEdNrul}x}2XO`T${IVjt4b5AG{ubSqYO!`(WG ztMDmx$A*7X_y4Bifg3D-^kL=N6QGm6S_RQr(j+k3Y90 z*NQpb7B_M4BoLN#kUrrkv6dXKWpGYikUg8KrxQ$gXux)8qLNIH!@9hi-YUxR4h%xV zw@s|l^%gwXGC&f$yIM~&OERzdNa`PYRQKD7O?A8Ek%OOj6>sBQr{mpzWnA7|dV>g4Nm2LIMg?UolaoyGxOsQpvdFmuVK^oOizp57^z*!N)gG9gO$ zcMTV%@0r%#>y0bJ&2|wFUQk@iep*wA6%l8AN|S7AG{GubXfl`Ji75GcbfcD5_ifMV z=!KQM`9CLKhN(gmWdDb6s=facxDAn2d`3z4I18JTrxU^b-CaXO^s%{)4J6QClfLgH zAkEt7@}T#RG$KTwGc-Z01CrJVngxEYx>}Kux+B(Ycv~e7pcX|2C^-8C{CH!7(q@SX zWbg39shCJj-LU{m_g(~x>li*@82#ha|3l!0=S%KY3svY4I*p-^YJa3W^UhFD8rIN{ zaehL-;}yEw$`PwVIwF^QHY%>jWNm#_P+UQ`H4=hDAUMI@-5r8!kl^kPL4&)y4=@a_ z!3pj#xC9uS;0{3s_se&`hyOnOeX4rbIbC~q?R8$dcJ*FMQ<;zM*5xaisQc~L`-0QU zpHsoHqBRBoxZ+ZIzQpjL$cj>IhHh$@Jm|)cGgXoPiZ-QR2JB>eL$rdl9V4!DhI8B6 zHseUsrY?Y(@K9_#ob*UuleCvqb3KF_ke#Cr(nB^iACebxbO)O}oj`jY*a@0j6AS(W zZ4wNe!*d)(UU6>G#Ww_bK7SO)*oSF*@w|G>S_*Kyh~UhDYL+W5`5DOAi0)av{5`7p zpiwKIMC(3ik*K$!xn;0lv+&HLS+y=-p)>F6_s0ssJfdfH{PI4`d$>*gb$$FNUrGCk zJ1t6Pd_{GS;GH#9|4}GEQz44B#VucTf-3DH#}Fd!V(!4HEPj*b+{W(Xoa8B9;R%Z@ zsn%uUQH0-qvuxS0u6a$ULEEx-f>_%-&x=mg>c}w{-w8S)EwJ!=p6;vd?g6d^j6A6` z;KgYd|6Z~GHHGFasVTqgS9yt$D%*7KkmN~-6WWC*kB_G0yZL`bSD+vRa5bqLm<^RLBi;Yphwh57&8E^XCNmfT*B3tujnr=AG~vd6)Cm z`0}N{PNU>?SwEq^W7Gbe^0-S*g)csxX7G&Q5LEnE11iv6}Qq};#|qJ zez1y<@2$+MRMoVw4aY53{W!t++lX#3^a-CobK&>mf=B?NemF0ax(_IHrn|}uPo+Xt zw*+!hu)y~(PoWr)h=CErmhhT}^P%u&*5cS=vhP6h$~veQ=}(Dl_y~rrDl#enEN~lh>&ytz38h;WtPGD27g9*_KkGkNg51 zEM!2yU`u23j2EJgxxS8KwJCOblNap9r}M04S%O~7>W+VY62lLy_)S)RiH9_hk06Z# z4^AoPhB@=5NLo6D$Zp;m^*x+jfcnOk_}o)j0Y^9nj9l2D2MwQ`Dm(w6f3w~0K_VIz z?$JS13`a(lk>okJ*BeTgPN8}4Bos+VqJ4vK@U4-{z!ozzd&uGQ&qP30hI za&kx}Hp=Hj5-s@X7~di1%xI1Htt_AYVOad&)%k2N&7N@C8Dh5nTLzxc`nc-b)qU~u zO=4}5COxCrDKgROnbn+W`%4H1344fMJWV~Tg}N6>)!+MPZK+xcpvki44Rk-L+y@18 zeD#b9gar)Hn-U-15K^Ng)vds+GvAawR3WhT_XZNa%Il3dLti;=eXhjX_8aSkDH`$h~B4aVJWhPlfnv1qyPTt`>$ zw|0~fq;!|+PF)IoWsMS3hvYg#swlI`5#rX+M+=Fjl+@2V!yFq`ledbWsBZ2Qeanml z^Ean6P*OiBHM#aIfhtzKBP7w>l-kT6g*(=I zTKU=b|Bk#9U0*z|KBIyg)cT;_#24n2sv+psk87?8VjAbsmD#|?l%G=_$#h@1owPda zvk4t!y7}+kxXO0zJh?V4wK`h$fzJ1~{Gy3(L<;DAw!pSG?X;WP5^=HEZ|!EB^=4L$ z`B!ihQI#`GxuYcA;Q(|U1zo)^wTNUyvlP~D@Fbf6cBWhtGNP@}`p6B3CC2mpYGgPH z&y6+fa}M-%B{jS~;I{1ITr38b_UD&olD!eaGRt-4A01f6>3^!H1Ohc><_~ns>@^A~ zAX<7RY{h4#ado7E8adPZ;M!g{hLF!??mBwKA|lpu4D4Y>tfFoMXzktB$b2=>N{GqO>3KbyiR8wuTbH9?!1Lbdz=~+Z1TLJ|RxuIEQ$lNk5p?=)hp*}*LJEOCPqyS-gCCxKEyOVybIc~bIIYD|cSm14wo9p*#Q6~Vse{|pt%Z`3=|GmUpZ5YZ~m zf64R{3xm@R-)BJ4oHb34sOofvfBwkHBeuRE03H{Wie% zt$fTc%X?Fi$ncP_5!H4=K*~#aWeJ^yBJi(}3{-mmRDkMpAlwI6wKB~Y++8|7P&oX-2`O^G-uaO2sh7*^!EtV^IKVD8`E_(u*^bQ$c1YbZbCO8w%8!HauX z5tjt3OT;*gCDlc-U+cckHHCDCqd6+qIo}yY*1CWTyV^Wa+L6vv|F-t0N(XQ);X-D<>&%2OHj_+4axwq^rrzGB;9`7POWr!ljs1i@8s zm0=}qx`f0JRmD`qN0Fi3Mv%CMhF~Y=EK3^C4-_m||D%qrCqK2-Z10SEp3}cgHmx4I zWj0-H<0h>CVyDW*{kNUx{!!R|Ci4s$O7-unSLf|8(|IZ}IC|3l%z%@~KV2c3 z;)tMxdwW<1B5|c}m=xdd!!%u20s%fPc4>?U_*Y5Mkph#(t%)ig#Xluh=DHto%q85@ z!XtP9C4Zv4?GU2)P~OTEde;fLZhW@n7UQ7w?9FjeY~64r6n}1vYf5q>4(YT2Ie-0k zHIlo?Sh(RB_?=FX5m9Av%lQHfLget&j;F&!EM8J$PbJNfTizu4CiO|z;o$CYFy6K> z|KY{hoen_JDDHZ9e|%aMeRH%KhAtYoQs~~X8_dNr-%_HT1frA_D*b+Qe(sj0tT(3#K5+gzLWqZ zt>wu~Ut)yBthF(6tIXDue|A<18^fMTS|2Y4s>_Ng$s`?`- z6(bOR?8LrUrSub|e3-(VcJukr8 z{KR~Yjqhtnrm_H=tqXKLGCLBm8kjt=_jis&V`m9YM=9cHP+JZ9N^p4&+O>uqxw*YL z++f`Ft=fciIh&p3As$%MwKvVFNIa$%2f=4xrWKv(g_c=jbTr0xq1%3F4q+2hb?Uyf z>K8=mZ^P!huS~59F^)2k{J`MgZk)F&^oNtRJ6gn`#5_a--^+Z;^I&We0KDgqxl2f! zOyirL*<^71p6434T>K$VhvoA?2BYA;ggnfpZxr8Wv52i=F2~@b62t?#b=mj+@!RKt zUe?m375?FtaX6x zlri^k7G^T8fS-Gj64x2t>+y!yrqZe6O77Fds9Hq!=u}VfL$=0r3e*FcLd)xn=QD{C z=4)758=`dP{uM5xYsB}HajdkJqtYocM@S?>tKS&(A7{`Ce-Utt@99K_CLY-GOZnA0 z*{t0abbNd|!f0e7^-U2@37oX4_=};j2melBxy6I(3XKY-;Y_wcIXb0451LmP4@l{t zjcZ~-&T1!`qHwO2L?$o)_|bOS1`Y%V9cnet9wHHnhv3U>m?&@)m+y5{Z>6(_V5Pl7|d@)9_MyzHcqT*3AuEq-Dg*4f( zEB|focbm*~G-wkzug0wF0njCaH z6F5TpakGV2ixP@Y_@L5u{p4mv(o_lDWqLo+!*!a8AI#^aGZp>wj?wZ%SyzVoyX zp<1ynz`eMkw)`sOQ+O1c;s>~IY?AE4J#Pl|5e*yQaekoP+qO{cl9JwKaFeCOt=e_m zL|zcRwGg2KG#K1GvVRK(m_Gg}@D&d6fW1?M>N*bD`uY-ls%E!tPcwxso73yzZ4x8!VdzT|VRkdOL5Mn4h%raYmecTcf4QqZC0 zl?OaPs#RCiKc2msr;ZGmL<8KyiWwjBA7+uL4*+k4*ZQRQWo`9qFLM$$T_Zo~=!h%% zb5|PI4P<)N_w}zd5GQuoizvd9inkIxrBUKv{`_8YPM$k**jmhDFT)$qO!!0WC?Sc7Bm^zo=m zOAKQMv%f#s&PBS9e>NPJoQev*u1NAjtSC9d`#TyBGb!%`qwfr{+F_eDGBX>wuVRt4 zu!(ZjL#Kwl7Jeiw*<~!8eL9O9Zx$$!09K>`AW@S+`O2o4uYyr`2lvTG^7+M(%^?j@ zu5ocC&wcC8<=xHc9T3JsoKj2xM`hlTYkcm8pG}*tk$M)HM9O5$T*g z6zPw;P@*1c-=%#0>Q*V5g`uovf)F5A>2rhUEJ2DW2?z1|{Fb=l&(Gzr&TmXsYBreP zS}+?|wOqg3^M2&69*l2g6QMceWe%P6bj4S6#i^`H>9KT- z`Qh`BpAWLYG|LpU2?l(7{NNaUe0#p&^VpKBr+?K~-=Yza%96MzniwdcUGggncnD8* zsRK%SUjLsXLC>zi1nmDcv-kg5Q?lK{!g zJP*^S)SP5qr;Yv=0hKnR0H=V1qrHRvuosFv%gZa2qq5#aGF1`yz!<;#{1o~up?C2m zZXivM|9wC;D7LYCMt}P$k0U$)m883VAydTC>b?nT0Hlo+16T(i{El%I$sKhrXvbT6 z^{FO<$CC8!UXhN{?5Em@@l#TnI7YX`9(~if48=?CVnR`-d9fxSO(E-&{ODvSA}-uJ za8NT+t(@?a{TxBvD;0}OJJid){?Nb4&z(_*OgL-n!btn-(BICHS-_Nyf#Pxop@Cpo z*B3$T-21*xDqGp?;=((t9UW<*2fk_(p8zv8knA&4qK@tEVOpr{m{2d4~7jKp_xZkxU!|!`^Ak}!NB+N zN5kB&19t-2EQTh?kCI%qil3=s_a1_7f$?$04;3(!m2f1wbdeEpd0TPK9;Saw)V-e? zfu{F)DlV(W=DgCA@@e}`rKx-kjNUp*SC?n>1!C#JiwOnNrY=~-o~x+$Iv?S-7qOcL zGE-%4ot(2>gKo~VBQuG)buW4Qc4e(pOW?^9W@Y2kJEY0*Yw$fZdNJzRG|2kbF8)%Y zK{oB)h=yfpaoSZ1o##+Y8ZbJm zX@uL8fX$m-wNoOoM;G5vlw1l<(WFgBC3NGqBoYL-7QkP44W*C5Vy_ejka|HV-am15`GpL$F3TEb3Uw@KY5i47rc_^m%ZMp4;+_!8= zH^c`OGxd=%OqKZq}J6Op}ar)C}-PMM0&;|fr?uZr8Q z$Dp$((q3hvq8+JFBd`4G8gCTD3{w9pj~?)5_KHl``tVtWbUExGP3vq#kw-pH@iYXK zuCYlNxfCvr5fYx%<_qaRG*RfA)+L75&H>-iI}TX{=F1=%=EjiGg#J6Ixg?_g!OUO) zZ=rMEb2e2z_H&gOh))WABJ&hP2(z z&+rERMj~D`hi4$lyxTacBpXv-m)v7yqF+X)jW@Qh75jFtGh`@c(%1}J2j1if8o6H) zZMC-gUv!a9B?UvkY;L5N4N}TPJ;N=^+TyIofSkXe!76t#^j~_DqZ=pGtiBa%CsCI~ zaLs)QlPCGVGo8wY#>X4?wB%?dH)|AJ=SaZUq%$HJnh{K~iZ+)!pCT0v(gpYI1PFIZ zHCpiacq+=6C6D@L`zlw9?SmqMZx5+40ac$)wqy}Nqf7}o@9Y&%_W6Ys!|>KK&EcRxp&n}@Au}s+k zHmKqD*{U;-Zj4E6|2paN$Ik&08_4vBOr-4`QPNv?5I^tFC%w|;TlnSQT{#zoa|537 z+1P7#tXcSamP2GbD(F5-by_MkAZ2i(T3!pE78?ckziR)_AsqPNKMsQ0W6b63#tP84 z2aSw_l&93^=KJ^hXUma5POMMiq@&WX+SwD*yAn0Q@{fdBeZ>?TikJ|grzPNr(2y&f zYW^|90CF)!xsw2S%JQ+g+Fr;@x)JP;lnFrw<}S9GAO>YEm^V5N_eqXXrGyK50~=?Gc)(FYRcoh ziQ>QfCIlFb{1!|vS1x(25y2$>oT?T>m478NPl?jQCw3s~*&URp=KmYf-FZ84ZHSb; zVYEt3JLk4hpcCenee-gSY3GScBXq>%kKs5FpP>ud5}>GG{o!p|8kF_?U|=p=+NzbV z!kQ&8VHhxsIrf%9%T|+nwn2Y7q6?|KN!;Xk)CY)bI{@P6>{qiDCLBsvuqpqT^A?Q6 z@@1d|C^VK8}bQ7n`E`(ogemb1(D%VUtUGM5Eb*KrCx|q35 zZbz|3mXQqy(o(2nr|4Ji_wh4fP%0N5I3ZOl?HU zgeff}1*h*BzwCao$GfVcL#=#PTXiM zWt94;l}2r>(8I@Y%W3#{FBDR&RRFkk2Sm53l>KsHlu72%E;XwAO9ow2r*;}7af`fC zzwKF9EB(ud3O{blzgCqx+eJZJDj!w5-V=g_!-4s4O3&RwVuO;26hpRfFtC5||M%;A zRxq$IIzY|Iqx8CdQ&?X_K}k$m zE>2ZPN9_H5cj7v-FpmCx&syg@czVt{E4^p(LXz&@-DflNBj9v6n*al(U-omK<#E6y zJ`I>-o21is-T4sr6JNbsvL#zKHV`_@><-wal2lbHl}e@3Z-4(jpBWF1AGqG4{;GC# z^2%@)V{hUv?&_~r;qo;&qdjaT52@msUg7#hvau-mvc z>#zQ3b}aKt)9hHE2kntLu)cJL*RPCE=3vqUqFKhI*51VU%0`1}NR>%Bg zcF1q@Qcd*JlaqI>`4?YlFCo8--Z{wLA1csDt#>APr3m1aHg18*~ z<}U6Xz#kwU#?<%b$~YNWK2D?0Ivg%^Sbj%TZhV|XEGs1bN8f9!z9%$&dg51c>!=})i) zhB0@-dv5~Jwl4*=|3ZJP%XY_vV20s45iN|P-;PBZVzT;P2!1;g`jkD8_L05ZKsU$U zA_#3*Lla=KK3z2WgWi9e&5;p4EgdjG2JP-g&)W0l%$b9F zZS;cSUImU3-n#*h&zO2Xc<6B2z_1q+!xeCV_H%7Sm4J54mY{8@TTbv-&}5*}r}mgf z6(C$t4EZiPpp1|32EQH4S{!v{1d0Y4J+K!~SlR)hdHlu!YM)R$YaG{Rz#$(a;7h+Y zp1hT@aKJbQm2gNn&bkXkzL+?We&Oav-MNOdpKgEfRLK*QwuWm7sXoT8rR|516z~-y z0BH}YA2rAhL*Kn!fi`DN@6GEzejn2>s);|EpKJX5Y_{5?-k@cIX}MdwldN>u{6lmDqrb2iJYmZ3 zM3`)#Vs5pEeYDgx1VzX#@nka%;4N9Aq3>+g0Y5LA-~n6FpqQ1hzkbUV-7Y2*uLh17P5Z6+IAU#o9QX*)g#1Gb0tQd+V&Z%kyCMU`OJ5@!kk(7_B0!gp+EPAn^bbd7->7{sn%He( z`{R4a6D*-v9~}JA?!Sg@!^+C&U7!U$9^pq7H0Sh#(U?q(|I@^hWTBPI|2=}rC-lI4 zv4oA`BrT@>>2nLNp#nS?7^Jxf%$`gRkY^E+Iw~xdi(sV(;V*Ytk>lGX7bd;(TE_ya_E%zCd;Bp;=4nJv=kJ*HD|Z-aI8 z5SdLuE(yUUvB8zM^L)`Q(x7%ii2!WfKcn75&o(g_{~RX=x2&lPi)r-j4w%bqH54#V zjxvcQl>$o~j*~*smaQ8#vS#>v)$W*l3lTDRnzBIp*S#Hp_0@NX-Z1}RphaZpuduHm zwu1b7JtuP54}zTFYhTJ}z&d@mawnuEe9iIqM^s#*RZl(9bh9%w)qqob7BI+et9?mm zm@V*#7p^C8kZ){4locPBU$ND>7SitVYqj{$0nZ53b?*~c@jM-3VE{|YX!%4ShF9&& z5x=S$v_D>rjF#CkM{xUaG-$Lt@Jq0?$BwE{$Gqgqbj(I8USweQJB_AkG&&ul*KFPl z24=Tu4vpR=*_-?`{$sSeLf<~OM_0*KtCa{>Rzm9(#StSaUV};~i(VXQO9KKgMI@+P z#0Pj{%)efbbNtK>VaHr!F7p$OjYGpBM?#axqlvD?83fgjHSs8j>0>)2f8^ z9Yi%p9pxMxb@rZ72=axmrP=GkP?|1uDX`r#OvYm(1PmRC2>>%26A!F7&}*I=Nl~aX zIJs0SMF748nijDS&*ONFM%`mNQ#NT8E2EGe`aVAI(C3(uf#uAX;S&@F$)rFuYhvih zG;Bc~n_J83NmSH(VfGdTl5^RK3XpR{V&MELh9Z{hmuw9~%1gy7L&4~hhNx^E`p9Mp z0nPf9N>j($`26*qk7p5fETvLXheIRJl`404cIorSy<>tQZ_3uG%zK zq@ef`7f)G^CL}T1aD{#bh{PgT{uLptXz6;&b{b$f5DMC)U3Qih-Q(qYAJ`8L6+-2P z?tJZi+<1t^bKTVy_b^}};4em##AF%^Z{i?H;`Zx+9L;AIe1qL!)|l+GaT`+xifJN4 z(q1lS?ihJWj~^D3qj_+M_v7&z4+V;u3uwlHcecCu3p3jI{VlHAi8HlVGrGH{s%JPb63OKe?c_Hg6IaQL@RRSUw1cKz)^Qk=s?Rb(G#2^-d z5sQ2HWm;nih*-{dfCcM2X(XZ`@qmk9b?c9f#0L+HC-hbfEf5t>tbjVW;o$UjvVw6% z8{ouBfD_lm_9xVy8KLlPWGqA$POw@!entR56+sGfAU@M4V z_=7Fd7z$niP=7h*Xg&TKbrDQr0azMhJ{|Ccpq4tXj{Yu3GG~vdmtW8)LLs_ZU;_;; z4yLXjfThE|JDWsn1Tq;%6oBAj1rpqZX#t8Gr*O>Vt;>vsT>eS=0hCKLAll|2^?*PBsBa0bYD8mq6=KJ};a{{1p?Cvb3ro z7;b!x@9o7M9budIPjx0{Gg+S4h zbtog4=oXHu;00T=V+OD&&z0uf)FKt&T6X@5OFlZjT5 zv?=uMfx)bD7B6_U(#e`x!6(imwG4T4JTv^!DI)}4HhdaSCzZ%_W5 zie6OKu?mngGF+zCa36-t568#B_}-b@!O`4>#|XV?cr^Cr$9RE%3bIicf^^6aEH%J}=+p5SN|YpA^3X+{!+u z5gMRtjE7HLBo%v6AZ8)V^YWHPF6%C93-7_cED&CHAdP3bJo!1+1oD#< zZjrG0*ii~sI7;!d(5P~u@yq&~LGV=kC!E8Q+YkDs;D*pI`8F1QN#7Fsg=(Jyn<;qG zA~@1N)R@c@T*zj{*U5Hj^;_6cS)Yw)$oBmm+|pZ*efr#U<7W{f?%`82GWLN7QH<}) zj@Zw!RH%5N5T(p|&T9o0cJQ)Xcv&u_^5SK=u>Z>iF&D*)QD1H7VKp}W&t?!7Hs{4w z<~9b`=N}zyKeatygncjO{EIm+Gv|LhhSzPR-n%gzeeIZ5qtpJ_y*9hb6x`9>8;zNJ zw?IuC!bC#!&W-cho7(yN^H%Nc`}22i-=3H?Y^66(8oypPPJb=?&W)3kw+LxwzUem@ zY!`0f(78|}#t-GC8fkZBZ6b_u}V_8-0O zsL`=Lnq70y=-{0Bf8dryRNym6+&K%F$5wsCgt88_Z=PMj%$bG-u;Y#VZ1lc+cV7g5 z6Cg4N8WoHIryaj=4d@tcyL;2S8ERJs4>r1smA48CRQumI!%_S4t43x2vkF3BE$h|+ zRN1KA1T|drMx)-fMg_NC7<%*E_(#3I2J+Bb=EhtR(;5C!X+N<;+lUyeKzhVLX)7`T zVFiQU2&q>A7{0LB8{FKJWaBtgp9hUTdW6tib{ZeKm&2<;yZig7ciEP|Z+Ba;VSEe7 zqtvQld3I||uR9zKZknUsK)g=oqdBth8!#(kQ_gq7mA~M!lAu}+%wa^N*Fs~4iRnZ0 z@*&-ehM*!Brj5&9;Ta=w-;w4;IXSPzDQ9|%UCvYBvK)NL4Q^fRb`^L*3!SQCx67nn zu_M2vCF5e9(r?Hqd_4{tQs{W6crOka68xn!vCD&e#(NA(_JWK6n5H%uGtM)(E(dn} zCa~|M7q%p72X=L*-E1S{m0Sz~I`nA!lUBs1zd;MNOPZ??d+xIMbZ>>~@Ol9{G)p;n1Z6P9#)%qwDTm&~iT8|9U-4%lN}L1#h9j5^&Y zqaruP9&-sfT}o!t*+$vKxr6qNPci>X$!vPJQ8w|Op}pl(B}V)E7o)vwK2>8!)J|Ru ziPBj$>h()z)2|!l5_4Mb7l$GfqU=Fb;mYY`zj%OM=h^gcFDAOguW%`J!jFv{oS?nj zSvGK+9@)J3h*#>y<;=d*;z)(w9~~yZ4V)dOJ-@M)P5co|H8=3ElUa-U6)t6pjt61O zZiiVzXYjJ;hYFnldp1ANt=bB-QiU4{yQG!WhdEMg*Jy(}oA3g#o>!Sa>QN#K*jbR% z#95FywRF#hQ0hf}L>u<^p6~wf79o%~K9zs;*dp$11pVOnp$m6m4FQ@ywy<9Tfj;{7 zazqkqC+>y`?tORhZRB0LVf>}DnBb-sJJ+KY1tBCsXB38Hf7^!Fjt8N?8pF+4UDs&U zl94MUI{sRO90HL-&-q9Wjlt&3W`-S2HUK@-D|{z6GvNA-0VCxZ`q^&` zhm^9)i6;@FLUdJp)CnXbF*HtKvF;!8!!R0I(bJCFs*6dE-POC3uH zMFa;h(rki4CSbq|i`A!*!eDpuAWS|*%~8Wl5v)5`6g* ze7SD$Wwu8mX8Au&I;WPH^oL4qp751t5De_n@#D@H0jJPEksYmg=kGC_9-TVVl4{Dg?%t+d1G!cWI&5{9ANPvkdQyijT;K)!9G;4FU_uA3*iz9}UmMH4}5%LCT~tZ9H>qa*(!C z4prz)J$wG%RCE+vNNJH|m#$BvFpoZ(T3ZajNG7w2?oowjFlvg=A&6@H9DCgNjis_tJ|F=4;TkLfx+EA6{cx2J}K29_A#1X>V|HbcoGx zX(}9=f*nlHQFe02lg!nBudAjC*)7{JiOoS&LDka;@7T!}f&ubyAUl{Q|Ij_Cv+pX4 zqar`jvS_v9>Z8D3|7|&wph>;oc5kd)oMu!_%&U_id^h0?@1}#?o zsK9>pY-Y89gY3# zr89P?E*K7r)%+HS2;3E+69bzsbc6KwdN5#uMm7}QJ==Zh*O>&`3K@qz#J16rUUHR3 z`A7F&l^LOtBPt^iiSgzoXIpuZ7#oYe*iOVn+P3=!A}iWjF%+qB6F*6;ggy!K$3%#& z`Pd%9%pqO#GsdoLSueX~ne8BUNb4m+qa=Nh6_xQ4iSZJNu@jLPiRg=$h>MaVE?%N6 z)>6nKikOQvMxM0q}dmk5a*5fTZelpPuI5)Gjr4WWvMsDKwQQ4hL0 zJzu25vryj>SJyf;q04VgU(_=XO-Kz#AScyGgh8}(nh{Ar;}a@TyD!lLYYhFDhylHb z0Vep#sDX_~3cN%Ils*z(A_7t)0y+2q3ik3~%vDO{;+bqI=LT z+nw|@90(wSzd%EIm|BFwM5Urz%+kuq?u+Z*Twef->#{evZlsqMAtMa^L2pE&9MXz& zV0rF&`v`_!R=^8{5pQ<`|FJNhYOi&B22n4i2faXgr;+<5(B&o2rP@FjK8#?E`?iJecRRUVIOp805_Gbx7L|;4#X8`y`Hp_2o!CxlN!%{ z&4a&jiht-}etVt^^O+9Le2qN=iWLw)N0T*_jRgPbQ;sU$=By$Y@;AAVpX=a!pAThT zlE2AE@^h=-xf$j_pHE`Wt>JZpZdRvbu4&9}0_Hr7d~=oy`5UbU=cDwS+=EBMXb|w{ zB1kSVywH;DTCN6PdFQF)gKxgN?~){XhaY~H}U*gB|lH5Smf-P2O3xwJ^T`>8!La}oJGSG(K8 zp629ro@*o`y!mJJT=PwP)aZQ8H{f$g%YV0run)QH;atP#zx!Z0deH$(w&AGR80Zbq zTqNq4t&e&w&n1>XX*INL)?C^UVa+Qt=eZ`%jyW3X;mxIIG1}Zs&oy&Kb>y*PbFvjx zk#oV5OW%+xv==?Olnz0ji$J+5xbAfugXUE}os)|`-Cpe^-<+CD;{f!veCTtH1AzWC zANpM62k7$|zNfjAWw-Y}7xr2%)dSyaVa=r#{&CY7jPwkTT)KETYIIv*O0sHNxO2^` z4EL!P?p))C;l_BhT7RBPNyci>>ce?4+G9Lge#-N_92l9=$%PD?CKu)#@U4N|X4)z^ zA8}v>7tl|sUqP-Oj2ai6UR%o+%cWf)-rT;*T*@8H+BsKyXF3|pv@SZ0?(fPCncJDY z_@=#c02Ymn;gx#p$PVuF;L6;Bo8;Yq16aEaCAw}S4G%s{)M+$-x4;m#K3}z|&X1Di zA{Z19(Cl5qF*xKa`_$miB{h5fHcfQe?v75mSFJ(gawNrV4hFqJ3ewB=U1Kk(a$0!nkr?3Z()B!TJCxwCTyN?NAB`w~gD) z6fxo?t!YAhRAHzP$)O-z=J~myNxFquJj5Yt(sbCoSYLK}jgjFkagu%>iWg`#6feqZ zs7Q#_Fr4_RftcW`L2kNq6S_Gx|8Zk>o9O&0+({?O)Fm7Edv;tfd5ACX0mAj-a$XJt zz8nTz^DrRn_)TEn$>ZSp=s_6&_Hod=>DOPuVJC(Yj`}xIfaaHer`>F$KsyrS4Lb8^ z`;%70qrX8Mza2|npaSXP`FyjYBXXiOrW2_T1i=7C?f4s@^u&0)cSEgk{a?3pa!X7E zw)Ha-QYHxIZZ-=>Q0k*<0+!I^-g|_n+?R+&V`nylic~+H$#zaPG6peYd{?=IRvX%9 zi%?pbC1eX_i53&KbGSE3kpe8kU8TPeDw`wOl5ycX_O~q`ay&&pfpp)P^oQ1&JJjbL z=Lig;t%M&HP8k9}a-4yD4*UR>SHg}8CkTNZwS8enED&Df{9WEjyTa*0V2L7NUwc~L zX%?Xa1r;!-!sEg+=0pb{_JS>XvkJ$Qv6h8Z;jv)}Q=$VT&z~pp11=hiMYu#p$76M~ zg>H^B$x}G{!6E*XP}v;%b)y_g9%b4G4keCS=^iole3v?@bn|*|a5V8}!1T?x8891 zZ*zoUJx?Z8rQbH?OL(*2mi9&2E1=U&IS*?4J#;QA+hRD~l=I+hzfFUS(oKU+IS*?4 z&X~%E&Zb-kXZyYV!=(x=nL}rravYrPw`a6jHeWV&u3^7N4wtmDYz}S8V{p3P7Im{S z!|iNSu7k7v_PRAIvk%TTCwqDD1aSJ8>~s*=*XBU*UYegA?%mTV*q62a_^B zTi#STh&JY1*zf3s#65py^J!ye8}{8^h+URgHlH@-Wq7mSzB>NK$+B6rv6zLQfkRd4 zyG^+m-t0G*;&-2x&8CeVe%NnyCtM&~GLPPFEN)@Hy>-GZyk+xfV=)Z-y^XaGz_$jzRH04(@j;}%NaU4(|?`<}1Gmd)Nnc{{Tg-}dDKO2Cv>V|Z0QPd0qtq#fMv z6HD~32+zrvUpM7FAbi=k`@sQox{dO=ve_#lyN&%|M{Cfy)bI;nW<0v#y|)UDJKtX3 zyJM{z+kdUlcGj`OE<24~rM)>A^aewXD^r)w*qypgVBC9;M(7z!#Emh$r~Sd6t-y<^ z=cC^N;t?J-dhDstXx3p59vq+GL8zVN(Peuugr?y~ptNqTFSM^{U##Z0j*s{%7OofKB4rAKg(do|eWMqwc)|J`*c%|dhoY{AVyO_9RJ9HO!#^b#c-UHr% ze~e2vgaZn(438>r2`?o!+`w=a_N^ADDzu&VgHv$$Wb>(uhm1Eh9vnXe+?t`m5yhT`yA@3_Rm!J9Y03>Pu(d&*H9jj?} zN9I6hwZd_u>3}K4cP2V)sGV$iLfPSg!SSKhZ)daMiW?AU((s+Yo2}5q0mciQSSHSc zJJy=$-&eSBdFJEex-t0J?phbU(WrNw&6aE1zjGJHtrv#gT#NJ-ZeZr{5rZ<;uhxz; z;j-7$I%-XrF!em3nzWcu;RfZtG2zN=v~n=v-mxc|OsH`Gao?EGF?Bp9gatEa8fr0M z%WjhA#DIa`x{q+cckk}?Sg>VR$a7-BsMptKK)-YxoWC z9S5w^d>1SeY-pTnv0=;J3}H(ab+~xx&yBqI3YkTj8_3zC;%ob0axt6up_VSZ00=z{@gx+hpUAf8m{Idd&|y_XTT>M zV3F-ahfE3FA6jeZ+R4izI-Tm8PQTCYB)qR`Y;1Y8z0+f3*lct(hQ)Af&m5z6VjLRh zK-U}q?u^0g{#uU#TV84J@F2MvnwGfLm(7ctz`=WaaQBFK%h7f$zv~z61?sVA%j@tR zcG5x?^}z^+nR{C1W#gtZ(%3tPOoIMcY;pPjzrdI{Q+qWF10!%kxF3i&&k>`*lhu-J zsq3-pCAdMwF2I;kyP0cegKhie+t=9gg5^2zKxj+OK zzC8{32RNLJe}b$V3pT^T){Xcw1pPp7C6DjX`djki5w1P>=h05LHCej+8%`Yf$EZCX zbh3y~ft4(&7C(ne%;eKVTLNf!^AA>mV~JFVza=IIl~;j&bgF|L1Dtgh6FeS{emf@P z1F4r|{Ir;^8JfhJ#Xeh|KtqREtYk3hXr0pyXq}Vwwa(J^Z9qUUjMt#w5NIp(s@*TT zDGji*sfzF4X7qT!G2p2Pe)b!~A^KU9+cv$%2*LIG&}@2;mST=nO(Aa zYIn)ni8ZTk)RJJ$>m(Rk>b*aEcXIOXSAMA`6uwR=d?G7tc3WHr+Ly4`WU1O78bi>< zPTOo9C04N%{V!30BZ#bhc@!Zc%UKyBw$c?4;ipMNWX&r>#FoPXBK$Oo2rY~SG|4ry zfCxTKqQPrt5l?(sEucY9lX&3zI@X%R(p$g-o<>--R%*W;H#?0X`Uby9Rgu}e8MH@V zb(Un~mG6d6uZ)`;s54H_-qgJ@tH+QZ+0UG~ZBpx>Ay%hm179RvD7FTvl&Gdl>3 zBnP1X$OXy+z`#^pYokT(W)!~Ey}uDtNSexVP?-hAmTpkoDXohqv0 z%1u0D;f02~7|&J{$MDd3BrHy#;u$>Y=lIT_{`9AR|2I-afct?YIec0=hfB|!1xDkd z(Km=Hnb@Iibb8I-2j-_X6exIHBmiKK8;}Ym#OHRm)%!e@zNhGiaC-R+<~0mO z0(X*cqmtm~?-#w^@6v*am!w;GU%R?<@R zyz+M9TKHB9?Llpvd1HIlo-b$4oO<%2hN73GVXgp!_v*-~gYUUEuFzJW8}RKy@Nn-U zh6WglFa(GzjqAL3W-#CZp>~4bj%Ce^+7FYS1b@qJfW3Ia0yc2~W*?ymjDvUwB2^Up z)j+<(sXYdy1sKrqfhdC4#*?=)77maDh#C(94oR$|kX(cz7!+F~ppEX`!Up5RA)Um1 ziTZYJk9|+Kb8`sHx1TkVZ`mS+6X+Ep2x$+gA2kSe{3d{o$<(jeaG0F&G1^BdKGK$Uc8EBcoi`tHsDjl6_w;s+byh);G4n?KK9;v)|AI(up#b7mIe!&&D)17-g z+>qD$tpqh&?U4!i-y3A%rf?#9fW3F|-)3`U0W+op{z5^bpb2NC3AJl#MHJ|D-2Y0k z49x4^C$l_8!82KzK2rcg8q}`PNeb;qv{PGDx;N$~U26=+oTQuwpXiV*`7&M{t1ph# zbsejzD_Uw*L_UU8Gb6GIPIk&kdB)-$B%^4%tJDOA!R(uD#Wf~CW81)J#oUGp0`j=Y zS#`UyVy${dQ zgC=ybTlNgMq2m%M&b^#793Tr)sE$Www7=JRfBuYcV+A({f+#l-nu ziQ?rQ3p(3zaOI6GI~Rz99qQeCP+^?=R);=EIbPng=(#&;Ku5Y$9Y<i z07>x&R|O(V4PGjL*X+dWj#8+M|vsK#v-Oku~Uj z7J$Kj9r!Q_iML9U!1%e<==84|VyRwV6FmUb!JecsM-erV5s-|^=tYvu+{+YVLMJjV`eBH+lxE1ft{q?HJLK+SPCh!h20W!Rc5h zsHC*>KqXL}ba3k-CC~ZP17^cBIrWgx@WhbU+Tk@muJkgeSF#-!qw_{QB2r56PLZ-^ z$Za`LFj4b5P?FQ7dglkeCMK@4wC;ceMQKvuuhL=`V!YDS-B7F_;;MV2Q42dD*K``- z1iQf0_l#v2_f{>$=zS!`IB7l;WAw8MIgYK?vjbVn*>k5(J4WTmX}2{oO^|}$a@hr8 zO(9y|SQ~B8j1h%+dLo&`8Oo@5Rv?_3gokN*@zO+F)m9Rxw`Em3l&D(4t(i^9ksHo- zO4a6&XU&csR0Jw}Q4ysFcrVAGqe<_j$%RydB=AtLW~ zFPWNnSD<8BtkCk@Em>q+CFP4^C4q+(iDGh|k7jt5w=@WCKeT-B(Ha{#P3idF_TPy) zOoPx{QWzx=wid`|BqThIBS9tw{f*uauiBTR7!*p940zQsNA2!Mm>ad-fnS29J$96( zV5aJ*5SWNtVwqTFdpIu<7N0W;NbLQnklHBB4a>%tBEE)4k>P~$y_Km7;(8xdrT#szsz-^MzKpMDU^ z0$!+#GDfw#qh5UVQ%(TH6%f7w;Lh(F_hLRR9e?I7zR@6vlQ%_!AWpJ^ATF9WLztF6 z76k$RSJMttc|K7Pj0yUY5M*PlKqv&Otm<^5sNzEw+kiL;+AuN)fc_S4fnq!SlXWxb z;C)AYDP!uMeD4#&raI9dQTIsMEOcv}MzcD-CgOKRZR3&v&=#dfBYd(3=7=CioB9{M zUMCrXfQ<+9(j35a-YHQCd4n=k@fgX_3Q&7?S1w=kgiRs=QjvuOfW(lL8#+);>xxt4axIKDs|B4>Jki9smzpilEltgH&>lG*vDu{FjnuWw_qx@{EvdRj#L%EQavKD|xOfB>MG)ExV2l9! z;Xd-|=*j(t4_?*E-XlySV&oY|hX3v#zS41h6K$cjYoJS+u@b4DC>hkmw&RuGgLKq+6){ z#sTz-?P%7w4XXG!bu|@!L~iH~qJs5vP6SF4R;2NEGSiTr#uG`EP$?2+hjuBksyiTB zi>a?@|2Xr*DKeT@d}_~vQcnM;NQSV7Qe1VhrpL|F9m?^yNu3oVE3dP%ma-ACJ9IX5 z7shzy`{>4mrEfcv=adtpY+a@z?Tao;=rVy+N5wT6ojuo6XXv7ZinJNotklfG2p#ag zGj+g-0_qEgmi#PP*;1(&9d7uPM$X;QJ35CLVtOZeZ~^obXEb@R;O<`Cpn+0=8ZEOs zG|3zKj0G8yARtl>#rrVGiiBLt;$=b(MsPrPoOEaAeMq{NNMiB8m8zbYj|}sCE3Ee+vvm{0du&xQ~ zU{;jf`F45v=47)u?%tj3A*N2}WSy>FyqMO-6&Tm9W{WV|+-qxL70&ux|x zlxg;8166UE()RD;t#Ad{xb2(a%98yJg=4SVN@X-Q(=spj!o9>6Z#S)7WPLCrGRq*@ z)u6i_z8g+L<(J#x@~j|L1mqVt1m>qmFHifLen%WT4UMnGfk+IOPDEreA>1HG9-{3U zBPv)Ip)<058yu#?Xm81yI}_JNr+^P4)Fo^TNo3>YzB*;bJaS)MLIldYvrfj3ms{)7 zZ>@{pSw~q@M&>LDKVI&w)1PPZ-CW1b-9V8%IL33EY~t>;`0`xOIhjevXd(Yo+;^8g zU*j9^=!`9yu!XspUUNt93!{_v-*u*GbWvW#v+v7Qd24B#m&@|>F3Th0&tI3PCI97K zm?z=k%awU$jfR&?^Q0T#^wK=E){3sp%a;C9FV2(j>*eaak_2CNdESeEBXNOVVin6> zqR0C(%9r$)i}Xs7^Pl)CJ!HPH%k=U%*h-B%&<;Cbp$6|?LJdj`HP~FFLDf0r@C|x{ zM*j*CM%d)%9!L3~P`YCw*%Y6*(Vg3OPVMM_mUsB~k%3$PXR~Q^dn5D9h(q-y3g;oa zsz5phH4fsd8bT4)kh1sAwLF=?+3=Q-RKW5S119j{jBB8*8YrW+UX(;T8Od-t=v~8Q zQ|ea!fPuYMCFD|IW>@s3V+LRn%+h>vIj=*6U#;5PB%Ui1W-A5e?~MhRl+j2GoROps zaU%l}f+2Xmq$1+js>B9CbQ*;QO9n0ol7Xw77L9ru@`izONE;}SEo&G^SJFPWTcayY z0YR{mj*DsM`t2`f=M-Q}8LkM14A<`HT!_-?x7mwRrWrC?25Ng9p-ZNSKg$z6ZR>vqqaZnAd_S^OD^1n4OoFRqa7Hm+*b4F3S802(YUKziQH2f z+ls!uyhpRsM(>ecD=8-5zuhCg{yniSy?O;8A(yX!DQj+rIs;+Ld5wwDy@L$E#=k}e z9ml=9N9N0|8_w{M5dR0dIFg?Q^Ty9b^SEgo+ zH;YCLng`b2#Jv{Uw=?FH(P6@`+hs!JKH6D6!0)=TYS3SbJPq)Wj1KwVZ&}Un_7K2p ztZd?+)X8A}t5K_?F{3fVmK;G1}ess7P*=Xf1} zjUfm*^Bx`Ff>zNX{0AoCLoKfxwIkVklFN_1UoDrZ<>T+g^5q;M;blD@53KJcz$+%? zB`}b&{O2REZrY=q6?xT0l9bv9_IKw@iH@#NoheCBK$-sqr@f~GZYqdUV4#Q=d-hj) z=wP*Q|96G`QAojDna$sgD3J?P1(6y+gHUl!ozI{CPb9Pdj9^g;^$4q&gq^Fc+dKT& z=ntzHjeJ~v_CUOZhZTW-*p>Vwn;&u_z1V0QWD;?A#+%L=u4L40%Gq?8<_W~hH%^JHkZc-Oj?#xb|`Rc$R&t8l6H-oL% z`c4f8Nv4a!>lS$^>`#y^L{27{2S{# zTMJ_sn2%p0br1fglze=AWTnU=JGAC5SfauYT4#sB6h8PX1;Zb(=G`L!Fcx;_@eV%tfg?h2^1;tH=LvhgaF4)G*qsPs)VS!FL%sy*SeCjI8(jgZBYv}t)&u4@u7?(orj}OgeP>1{WUldt=qV58-TsdR3_az+kXHeK z;i@U&;|)ppO5q2ex2p>b~Y5tmte@9p8m!Ptc14Ic2jxu1CK`w@`Wd2&7EO`Y_>Au{!$$ zNrujoU=~se>Z3r)J!iXT_Tp{@&$fX|gQr9E)5y|t&vjHJNm|m#FuN@{(N$`SrS3`m zR0*q6sKXgtY2T%{zJ1PHZ~XJG!;3GuOr@?l@JMp17$g54)*QhP8I%fDCJHXx8>KCWa@LD8nzi znOyd{NT`LKOi8R+RT3?vtjistUTDv!w!bkcF=}#>pLzn|c?o%@VIfd~i1;HC9AU!; zKT7QP;Kvni_pqFbTBlPV96!XZhWFp0QW_$@g*cU3^&-wuj*oCekF$x{g(t?Q%QAx&Kgku*=Y?yi2Wdj40?O*ivZ0m4;if38Ki*j*$-@C*%q0kcdL z0mJR!L~p3C+z?`I06zPGWi@+VlO4@)wyr*skTIt+@9OKM9hwG9QRWij<<;mpsJE+Ap+ci0;?PS1 zJ#rq;)6m&0z$%BrhA*lKu;PQOP!IG9<_@ZYVL>z;FbZPOEse8&!!9Ovl=V>Ljir*t zQL#X(Ay|Np_*jg_h=fudk<%NoBbVY1IR0OSldx7|y4W0?k(63F5ASEtcZ`<23jE#F zxp`Kd_3wF2#9Ru%wWpH=DXUvo?cG$Ipk0M)tLHWo1KNn^@$p4Zr!2f*2vf%s9r&R! zSL1^SX#XZxe0^dX)`+Xuh^bG;)3bbjsmVvUV0!d5x$qR;46oXkBmRBI1ixEA;XY`tiEvd7skGkt8S)*HA7A zwZg*?37aU&=ebRFs!P;TG&rSJT8f~$@dGS=obTWncr>4T3$*MR7@`oy&jWp|MYmPP>I}veifr*McWSfC_deU?Xg>T0ka0N zM^WCi@m34LZd*NdKdp~Hb+pqbWCK6F;KCx_Run+?o6$S0+CuS zJB`@otON79_bKh7%@Rlm?<-Fy2fnqPURhe*jg;jG>87rxEUC4!J1Wt!y@Z;`lEjzW z314m}toU}qgjoS6!X3G$Fwr(<73*3Oy_I!cLTVl&J2jh8ZJeLe{Q;(;{Nv!6oOFq$HieW?vuiwaZ2zEY?o^n`dlP3d zO337$nR^os?O;huSU%Bb0kOI?+3$$&X6!*_y^c0;%L>fkU0(+U1-JQuI zCCoe3MvA(qK2t+MkScOKi;9l%_qtp&xl_wS@l96bD*M-+6S9(3Yc1+M&`??T&iGqk zJl;EKDe7Qj3ycsSu5!Whz+E^$Px?$9ibm#^Hj#1m_L*@xv+thCpka=4=y_6%4N3qs zF5JL!=F9NO$TKErp{mCNc9v;a!$AH+M_6{C2$cK=*IvYcW)t*f?V-Q+z%*0av%WL; z9-J+#K%fg(V^@0VjNPdVMhA}9K%P%JL$HbCr%A?{MNU55avFhmN9MIo%Bl8CK@YKc zw6sX(L;YC*7SNsn@^5h#P(*lF^Zf1m)3fGzvvJxueRFzxChlt1-oNZ>7TVP;w5gfc zU|egLv)GP|a!(WO3z&mJZvci)$Hcn~e~2|(=)Hvj*d$=|`echxT86!i3N$*M-scM- z#lLeqgE)!`Zz_BtQBNc?`Ojt(-q~b+8F5IsFbJXIM0kX}j5X@zD>mqTP8NUaN>1Envwhv@=%NR<)!d%tssX-$+cBdn%}PS&d)PtwQ1jK(zSgBu z=+5&|>GM@jr7si6AMd@HHg=?E!N0wJwl?M~0SaQ7ua3`+K^MlH=Bnn=M$r`cYHD}k zSmB~MbZc`L_{t6zjGJ8}oq4PabM)CX6&14iiLdR}2_GFNe@*5;ZdBt%T95O;EBz6} zYWavvuE7YHR5|LpLl%iYy0`Q9i>t9W$lFP-;+}67>Tw554>`LF%$}f7Uuj+WJ4&l8 z+Dq^{zo-Js@1mfz!q+*w2x`mh8=Ki%gI>SY``nGke?_(?x-b;K#;FD30E&10K@Y4s z(@JBA_)BFZ-DZNmHXQSn48K}03am);UxKz?g0?mow6()ATYSt5TL9kkG^4!nEefF=hL?u6WXGKRO*kJmb_aMCzU&f|i^L!WVp#p3heAX@cS z%)bif7zzJ4N7CMNk8?&<%)<)jCkYP|4!WO-lf>IrF+(ey?$Q}5xCHl}uhfNFF*kqR zC^toi@=wFV%?!-1~cOuAU^{iH!vj6Dm)D;=i*N=789G` z`FZI0zULc3_%w60G;4+aUoK$)L~aAQ&THt5ZD6n#W`GrG4D`eSb zT{A+k>fUkGYfmmFLcVHI)j@rY~8VSM0Ue zPDa3I?v;p6HmorSDi7m*=7WG9xy&8{pCajpzUkG>u4!L0zkS)4oHE^guACO(%Bl9v z=r3H!$CYSntkOOFo#4!K+7HBM)Yh0Jwj4jb^OFR3OmGbZy@~>E3%Z zTE4ezd5>C$HO{uISa$s2Qal?+`6tS16|Rl<`AAtjxk&|_seFC5pPa!Cl**icJ7x)O z%3Y+LxR3YlRhXN46N&RrtIbVK@8&gV>h!=dT$IUS>;Td9U3mFvfD(_9rEPS{F1^T* z-5|(-PE&!-jXw` zbFnu~Bvk@v>3j2K$fHsMrDB3d=-nSUf4(ts=lEty!?zcA=$dB!?ln*v-_6Ef^u|y& z7|v3X6=n}y6J9QdQ{ut3Bu-6e);4|N+FQL5{_gbr)lQ`*WH}Su#hsM?1M@O^+`c4Q z_oCPP-2zJ>un-=#&Dgy#3TkHP$hWnc4h7$zzC(;*6O)*q;JB1-jpz+A>vv02^&`Ph zbgNcMw?17oVAo)R_fpt(qQ$PXex0&@r6$PSLPE@9$#hVj?nqN+-k>OM>&l;=Ep|!tJQCG%n{A{mnatl0#u(IdW+eU}nLG7s}O?ao0`&uc}q$!qcQKHA0sl-H~Z5ReKzdMQVa zwv)1uBOn!WE+J|h`RCr?cSNnq>C0+TwUPnkxKOeI#=<9)w5Q!|nO{PD1ViklDr9FlqwTArHl=8@iDMMAFa+2dve~`+nvM#=IM3Pm>&|zAn(y5wce9tWT zUUBmV->*uPTl#c6YWUlUPlr)7^64ZgIsg!z zugHIsgTC?3>ejee5IPd`ig$Ti9czj=?d8spovzot-@)vys*DD$v)%N zwO~c`Y5=z0H{W@1(dL(44X{Wa^g-ya#?aEO2K}SEn0SwYE`2!k=r-x>N*=)|gU^=0 zI0oNym8GN&xWdX^!kBojFSDFi{a?`205{SgpqALG3a4=9;ns$ohqt-?YwS&&g*}J& zzPU?_{@RJ|gNJKT06fe|1n@wl19-4iQh?udW2^`zqT-r_0N=@1Oo!ToDDLQGV`C;Kihqb=okqgOK96eTuaqpU5ghxj4Howt=V-zJ+&yZDZj) z8WZ0J^PpaoV-4;<29=Al6a2An@}{9B!U#d`y|6uwv2 zo=grnR3%&(Es+)ECd#R*P=uYXA9DW`6(JcvxKgROJ6b8G5(--ZiN>#DsgU0|56jeE=XB*#JO7BNcu0 z21i{Z$EzUvIC%UuGU!Vee&(yoIRMyHr+c~6{tW_-bT9Vln)a!TmVD@14!8O9wNj(r zrYjf*SCyqIyp`LkXnBo}vSb;s44J6a*kh#Gl3?S|eQ-FadK@Bfe>ex_S_D;|w0g4v z9a#BED3h^a_>P{R8v+VXY=08jDU4zDoP~`?H@t_@Of%!ox1VaKZ+LVF z6MV_Opg692TnsGuitO>guYj(As{XsOH{T4u{pCa4YD#omKFiBVh}XrIWLhL6Gh_ZNbDESLLMS#)bgy6B z%K@@!n|J#oqJYgSqZgU)1S3*44({Omr#D2(USdnn&*+U4>fd!k{oGQ&?%g<%5RV@y zStNa4Ln8I$P0HX%5GfiRRC=PpA#5gqp}{~7st|tR7?+;lhcH=#(QX;5h5NrN$3XGw zfq_S@Zo>8b8U-;bMkAoFMO6s%EJgw|m)a@PE)YYxBvmgj70XgKQj%psQM~4~qG(J8 z&trM8knjcoZnX$07MBdinQS=15g1KMvB78m$^Ewy<#Lvo2j`i(8}lO*okF5p~vpAd_uop zQA$$My$F3==wl>G6MAm*vvQ%A9GTY>{Aj|?C;a;r`JyD@%K(TE0127W20_w+v9W=G zjuB)Zf<)OD0(7_-9R~2G+@R3T8^5<>0aKA*r|Hp^JNO03`b>sL+{+y&gx0tqM^Mn1 zSX$(SiF`beSncWt0Zbv1a}ccNw?Ibn4}<-Ri;>ci9|mcZeO|Jj=Awv^AQEf1_Em~? zz-{H0CfV{tG&-lP*V@voZ6elTb8@YsVifeXXM37CBEdBGH031ZqY|>if8508XPJAN z={cJU4jD9JjN2zNpKD&qyYC|>A}Tk6#N1cU+E~gleDsW^bTX0&2K&Jup%=NZ4;vr2 z&gngWAYp&FOfo{0gQcEv>Kivu>U@-j8HE6%#^+fGQ6D)fnbSKS&t{Ff|M$8!F3}k- zkOCr!Jm2t91k}Fd;oOL(7CQ+EKiX;$(UcW4zqCi>huLklFUfc6n#X_tLK0sKzV%Yl zT!WSI^>sYou>2T+9pdD*b8kTt=drBU?>3$F`d#frW2o0oYwuodBIac^})|QH`Lky**E2!g>6X zO~iWey72}2j2NnOhU)BB39?jF?XDb^M(>9GL1So{U0fLb63At$=tO!K;p%}lbU(#2 zhc+%6ee}ZW-HfcJNz*Cgf?P6PpdFAC4JLbOboy5ftfi!xe=(Sl3={mG0UWs2sK*Xh4bro0V{-uy^elQJSP3~X4oO?gZgT+aGz%JTz%Fa4>DT|<60^aY z!&oV0?q^bo*@8%3E3ru1H*7ZgW-cP}uxd(S#4UkhxTLfh9IGJfAPe_j9;O2Zgg8p1S&iWFi^3z;Eo&c`)Go|{ z=3v7$w#9A(4CbKSEPdcXt`$=P8L7`R+fq#u<+UuG!nu_5WlmnRjq$Y23PTFa5Y~0C zbwi~c%%Z2n;!qh;l3DJmF*vA8?hF3D#9A0%!YN;~; zE-J&9(GCihr!j-t`F0xfl5hGY-*kofrkUR$I*KV<c>tx?nY`X;4&@|+YCMD9 zo@=lJPGh^v5y5*=3RBW@n{0w9HC?XMc9$!HBdAiYl$HiKLzf}vl^$Qtcb+fUt5zvr zO1mOGi!aZZC)7ik&4`Y@xLd(nNq={=lES~;kggIusX8~;!yfM*E3kuCBMF8F){1?| z2YWFw%*DjD7e>=t(EOwa!>1s0=EkMx&+X7an^=bV9iHO1XIjJNUDb?B&uT7lYj5|S z=;Wv&>thXO-GgPz81CAKo^j=Tx4}xro!c|rJ6cNLJI5?h1t!!=4opZR9T$lJA8Kr1 zf<^SqIgCi!2C_fK!Qk5pMZo0D8;XE@CR%x$vI-4@xPCvWO7R0D-2z@L`43azn&GoYaT z*aO4CDmF^`+`)gMAdBn|uvt9c0hoQCq4|;@jqfaH_855q7@9xhKP1|Lh9JQ2%|@qV zT$_MrEz(&4^A%pI9_r zq~hHL(8FRl-D*5ux=|@N7HsEy=TEo?Pf#14oQgnmZ?eL9)-Z}icrF4EjY0u_;P^i9 z-;BJX$JQArx#@zuV~5k(`;Q~zB#MJ04X7Ij9LS+jGhQ3lK)Ij3jX+6v>&DwR#$Tec z`~h>;1QACc8De=FhGCa^!w%j*!n|!)efLa z%j^z$pl%BhnB;gSv4BribBZ&@sFG zltF{Whga>(5%+x1{&)q}V_!KG{Z6B4(iSwqI%hS*K^3R~SSGOG*;WtK24h%;(VWKG z5j-8@Lm-DF<~m|VJ!-&TSdoJoorv5ig9PhEay=1?^9Dp4wYxW_B-Wb~BlU7Jn*O-O zlpthvFrga1`~s$2NK4ia3K`9b05baV7lWHq;Y=SL9>B5QB%LRHG>c~NU!vOS#MJdWhrhLmTcJt44sl_3bqtm`&A9YykM1PAPud+& zzbjt(9!w(bvt=xr-*F;%RG^br42%&5}0tMQM z-a0_yC=nd6?N6}^qJVX|b&qF6EA&_{f2i9Jq6+F_)$3p3k(8zQVIGah(Z$$*T80L_ z(|K#T`?syDlBDCz_5NoKQZ~$?(Pw0QUdl^y7^|QGB9@4pe!L)pwFfA33cenQScKfmjC^o&%n0uN+WCR-{Izk> z9vwEiEsn$ZS#JP}1oyL(T51U-VyZg%U$E2{fRyV5>DKV(Vl-$pM@G%K9Q3YZ1WRtC zZMtWgy}|;m4^QNU%F3XPJ>d*=)H8g`!FGo;fzK;(cM1oGH4LF(Y%k$8kJxV8+7&HZ zw}V8o?df7|Er+FwMDauA`>|w;kt$}p@T3rCdc5Wly<9|v(B%+a8Id;w6YV}3FdDAc zY~Bn8z%l|BVDHlSC!Q7m2^Mk@0+=m^z9H|Um_r8D?32m$7vmSf-NlDIF#N0-S0m6@ z>~SK#53C9uq&X)1Dlh6*=~_*ahoFd?3ZEE^996?ce`~kxY+dC^X{xRHV%rX%An%`> zK2-Z^R~;>>d4H6Xk%Yc%+3u&r+%N>H8nwUhKRLCC)- zoLYy(sRe_NN6jl^{M`zk&~`aK!D2bSPd20x5Ey*}RtHsrpnX;Nuq4?{^fg@Q&ezj$ zmE5GXYZ?yI^hLv!PfC3aH*z)eckYmeQzg2U5k=H+fdiDwB!Ho)6Zu^rko?+&HTxM+7_JVCI;C07CJ+g@F0_e z8SrKNx_W;#4kut?>nFi!Y$XRImUd>&oGU9Y&4Bo_p)~<4W7(Kl*~tWPGT>nY6)b!z zhWQ3hKp(l^V}RtTh!fRA)f@vQu6FUY*l;fG7*_`gLM5-@jelZw>=k|1Y5#75f4V00 zdI)Igb_kL{;$6$*jL4ryQNZV|cp_qvRKX#X00b8j8%_6ec2d}n&V>Y$!*e5w#m z0IgQLX<#HP-!bmsHKs5{(qifv6W4df;p~YzV}wTFB-4O@6L)OEyioGA)Jz)cvhwh- zBSL^!V$Iw@xSp}o>-CMsC_;kWI7Db-lW&ag?Co{$lX=+e4F=}0-|MzuW=JM>7@M?M zqu)27uRSJB_y~=p1OSH3#Z!N0NQ0X(rQIndv_>Ja6}_s;kmm+g)bjgv$rC$IYd9moj*eVg@ovwKq$z;Bm!rdz`5>>xw~-Zt2r8ua0LuaTHpEK z6&RS4b=#CIH+fntr(mj8(^>!rbcQF)ta*CZx#<2R4tf@WSl~~h_^mYtnR~Zv`&*uj zRNJ``&?}chkDd(ioh3Xe`o4^Z#=OrX6|+n%`B!bsUnm zuuAA@V$R_KCOICX`45JVYZ?i;;WqK8rY>7gqx82bVb@3+w3oRj2vNkSNSp|!g0wd~ z01XxB72tnC<#qcuPQaGpQc#_-O8#;*RAT1+epbuVJQB{ z8$k3er*Y*9x5@+ivKvB*L_!oil32|>&D&Ppa-u$ezkpO-j|wX23?luUXA)&Z(F<~5 zeo$4g0|OXaaM-e7EesLH&zyjdaO#8<)s2^sg+Fk|AmfdQPE86?6-g||(vXSrPEK;w zYaX7|xVjSvM#r=+kXU9b*9%~Iz_bVW#?JG1Z)%&pvGc9o<-BCLRDWYlwM!eBgyZL(-{_x%%f6I@!tATf+Mhg*hm&F20?WQ?`sDJPu`=&kPJ$q2$H&EW8zU-ZgL=QTbIv;(k@m@azS!Qq_D8qS0+`$r_wH3 z%fqMrW|gUtqbM(%O1qIwn@w~Dv41Q=3-a<=RNCEZdMx4`27Ab&o0P*&#aZ<0hFKIj zUiOYf&_Pr_gWhkHL6HM%@7ROAMim&>rR}?kSHdv%qT=E`*eqc-b1;&ui1kwY5y)8uB*X1zwy_UbP3M;$?{VotONtg%3!C2(v zsTd=BQXob)alsAkBML9NMdD~7aTJ2|&=U*4CRdmdSU4&2Wyf%f?J&G|=IH)a2^IuF zkRUjKBeZBDWC0DjbIqA#q9Je`qH@$DWW=*RTNG+V!F>cN!|# zx@^lw4zEyDc(euCEdfvCCpJ0nP z>axbD0mHlO)htAo85x0@ERCvPcd)L*RE@>!+DtvGr7`vFEY8&POs2j+OB=20F;pCL zYjI})DO8*{+3Qwne=<%)_NSZ^Z&Eq&F2CY@r_!6gy|{Do>dnX)f~6zMv%pB0wkeAN z1M@NhX;1f`ami}~B zaVj--$k0n|=gycd+0-m|B2KNZgz1JVscRFc|JD!=`58$7YQay5#J=3TN5?q2dK&R z$M^1oqihS3d_)1R`}p<19Ni4M95gx~bO2q5KtnIW*SN@cp-iJa19BeZ;rnD13l8ClX5sLhMY%WLG` z>z;**A59V_Rh`pOrA(>lEDyqmOdd2Le!1_} zPF$gg3ssy02mcNcNuUB_g{msDx06;QG}U;Vz(#}So7L(yZ?4Vm2*ctmxm-~^EX_Wx z;Wecu`K@fxWxLat>O<;vc4ox<+-3a88B+$ZlodDt_rYZz^B$O9e zwph(AoPUW~ZVFSIWNDJmh`2!{S&D#cgwtN+;m0|d90y$A2=^&S}Fti)LVqP8x6|H@T!=N z_NOC0lbviCv;DhU>2th^E`7tUh?5UmRQJ&{IPwce@J(RfNkeP|PZ;bi%7I*e1t$j4 z`8Dd_kd0;J2W_4O!j0fgWA3CK;mP6X>v@v{=((EMVsTt}+3w0E*{_ zEiFW}7z+#Ceavg)2+IOs_?*Vf^L^sDole&=X?>-EdAC8ZM zF|Y~j;0VAkzRzdGk~{MJyW^!j{stz}W6<=s$Gp`Zz?e51&NRocw!^44A$K5Xj5nRS zV~6>j)@TgI)FOyvZ4x2kEfHYFl}p(z5iUT$863fT;XX08s8TrSI6v&dn>ac}iTji* zDQtD{C1Yza>d8U3{2&7rSrRaZFZ+eeUDS&@g;Y8-4+tq?Ey3{-{FhwRKyT3^SB>>9 z{@ZMh3?ElR-l6{fy^bnF^#DV0g6n{OP>OuO^?<`}7@x1&!0JX=+C$@_chhYVTRp{P zeSkC@@-iBno4StiP-nCuIHBtzfukG3nm}&|@5FnjK3|z#$v{n9#RQn!>KWJe(x9?t z^rKy7kAPH788cAva_gQ8IAWs_Vv=_Vvv*-?~O~bkpe2 zC$RhRi@#WDf{D_QXc)@KI{)J@JSI-Ak+$gchNh&g?D`r4H=bE{D;Fv*xCu3}0>^&< zqdY(X>+sEL2}d^@)J&m81DBB@_NntEiu6wx{shZy_)0`VynitySPcU{5q%tCx`Yk@ z=ru478pCG0{a53{UD*E9Yl=3p$0N`(R!{VXLdSOt@#X~@IEhvgo<(G8ntc@SEmm#8 znIB)M%oVQ1fP4q&(>Ty6KY3ets3e+k76C!#`Ob6|AU~E9`t~B2Iz9k8kAU38gFSO6 zR-E*8P@wk_P~gA>;h`6Y1H?Q@pb9hoNC;;(dd3vTp*D`5pE$8k0auI z1<|mTIu~F`co=fxSaW+RD<>_+-f|^ez-nj?$m@YMPzbW(Kud|k;n(YnUT63L&0#Fq z22Ex(8jLy@(EZT-Qk}fu`dH^y`E2pYy94m-$=X`y3L|(NSInA93q<4qD_if&8acq64~Kg zW1h<(7)(;#9i`X~yED7#T$c1DMlfg`FVVh#Sp@r|`Gp>x*V$2D;_w6*xB&N*PQP@9 zUs46HJmSe`d0F=&w;Wq)Ea7C*?Tv&9MRd7Gu;exPhMr`(kbXp431pEJ-#18eto%Se zWxwj<65$ORNVq;_vXkck85bRRmCy#-?!^RuWu5Xi}bnU=~jJ%&lx zm1Gv`4vOOA8=c@@#IeeZ2eii7v<0z+n{c;gK`03PVn(b*wSkq4flG5j&?xF>Vq_$| z5Ul-cS{qq(-3OCH+DCTW?6BWM>vFh$7h)dh#1z}}i~wMXXx@;x130e%DDK$vsXY#% zt6t_hzz`Mz;T;b6jk+3(KyYQyMb_PQ=25WE+pC}GY4>&I*2#U|}b)=5JPXl;yMNl^Uizz~}m zZx(NhDLx_}QC0YfMp+hs#LAM+@y$oA4xqyU?s?7JABZMW2(%YxhX`N}-QM+>U|>Fa za36=llDkC(T%2q`kunGu_;NFHiI9NCWBZNV&x}nAU>C~4JlXvFB zLuq?yc8IfrgbtjW8DFO-_cLReBKPnH7MlSygW*E^&dNC29t)V$3zdUqPPGaVjW6kk zPGB63vBHXghCn5er3AhOu4cF!?o&L%YU=tyXo2R;CXp|ekre}h8BIQ_#%y8-)&)=mLp3XjVlpi&1?n1=jQfBby z?7mOQ%wR8pTEHA*gzbPA00}d1|cqFeZO$GYLa-7swNn;ATlrgTgk+ zUw{TlUx3z3=kixe_rVKqS79h^1=P&W(s!orcgfrDQz=Sz>hSyYh|ea(Gl{WY2FQ#$xcG^?cz>n zb2V^}rND+9n1cm1&dA~D%r=oT)LdzLsyf#3Bp^Oloum+a90Sv)kSFi}rzY1b%9Z*) zHG~go7n?fZCz?3~n7HPGA5N3=pz+a(K6tMqRy7UJ=Z0I}^$1##aN<(Or$tz90Q%y9 zuLPURSdN7P=#d1Ja$W!?4`rAU|3%F3Q34bK<8{EJW8B*h4j}&wpA;7|^I%4T@%m`s zWNHuu%Yb+LKY-W)Tbb3lI;0CSVNn7H#FuFxEY85ujM(ynXomm>2GbQ!tcveb z0lN^Ngm9*XCPk~B)Bu~b6(t=kb$0v*p|B?tfZ`FehhOBS9k`0*S-Ky~9l}Bfl3;V9 z_sMvFBYrju3{d_&65z!5>0xA%QIggOMH^ru0|3M_BKzmjbdKUFBkz=KowHOh)o0!H5vZlAovKX_zIWym>F)$E^$rfM?Y$K zJaGpG!+AR}6)67PT@sRwK>1}=9SUhibUVtM;tJ+6i&%%f3|Prvs>u+g_~~#RPDkpI z!&rnAXhu{?IX3gPq#T2)r5x#JEakAqwWJ(38UE4kani{p_nNUuH>N?Ejy_E)J6#3F zS}IdyjHVKWcA5l~X*T+aX}HL|;1wO}5PNmVEsK=w=6Mj6gul4bbtzH_pA-#YE13e# zU}ftPg!)Yo)>;LcA(XEx5bHOGE#Ts#v^PkDf~PHG{?D{VbLHcQH8tAEFJ4odDFe*e zQV~Ug#*!s?0nU<=^#rog^-yHdSD=WrEh$d%XqZym;v}JIqIZYHLm&|oHBhFAa7A%= zA}JnU)J1UQ0;lMKg$wblj84^7QQvBjtWhSpTwTQNl1{rAP+r=x;(7Xl3l*YWq54*f zWQ{S}C5)c#&>W1&(gax|*fhb5wQ)7cfr3nsIV>TU&Lz7u1S9=E3H(e(F; zwi7qF*?ppjwERv;b-`}i-$}|2b}O5pQF7b;IEuh>^JeZLQ9v&Ip{NVFs1q5NJ1bCb zJs&Rh<;m-nmlvytIVI!Grl}^yWI(`(Nso%a=rtoF#Iq3MLK{O6TP%4rkk&VG?K^K_ z&syFiv*c8kCszSNNXuFza!f&LGC4Bn38*S|1|er-Z@@7hAWO>=L-k8GuRCI?P)b0HpxD^NUBh>Oo8sqqcJF!wPj z0l$l0NbwTj6i9G zv&Hcjm#p0}6Nhb|qr7>UW*9*SQx(Qi*7EGlw#RPono^4_-6qRpl_{+;4J%A#eQ8)- z993`cvJ9?#CYJ^WbNgJDs6231Trvfn)fiU zrMP+j=BF_4FC`;yH27&+;+cza{sqt0ZT_YiE)%=_Zu>E)XDUMv7k+q{or^7!2b zh4IVpGKlsF#6uiYvxy|iN4>EjugcY^$_;IJt72AVSRyj5uvN_dQb+Bu2CRUE;iJ<< zvaqHk7~QbQSgSnPvshd5QV))%Z;l2DF<^M_d#gKH+W$h741VM%W#IlOfijv6gx~Ww zQF@NLswPhDxjTEx-$-0;W6eaj=@g(PF1N8}%63swTA6bPC1d|YGe9_N?<8}*#fY1} z($ZgL#Smt#uOu<+TI;G9&^-kWzh0ZLxZ zwHFj9EqkJ}_)0@{4lMDU92tUN!D5IR%xWV6!!`j-Y>MYlqhoF9XmF?7lenFLCk&3p z;)7WHK6@5@$Y$qj}k=MB3 z6&7W8a*``J<<3q4GG8Sat)zX4N*KZ8BxScxir2@+igHcM(>~UJF1rOzY$0o!6?I46 z30^vdmV_31#S_(D+{N><6HxRj4vKTxiJ(8o-CoiAQZDd?-C8c;#XC{zcvNzH{|#o6 zYhFEQd39&83CmQIjZUOG~9 zb;|7{KJAHtQpkU%Ly*58IUth?Fo4W1w6&?U;C|qHnu$FtwuflC=n7|Q>;lFm^%iN5 zsHSw%&`4C^>)2vM07+SsJpX&4rKvFChv)MU=jJ6dbp#{hvg9&n%t6AlXr#g%J3{RT zhQJKInQUMwS{ThE(R-5hQ=kuMM+7RVCw7dpj4mRK>f5iQ(aOD~7do=9Ro-?jAJg!8 zu3;t5Hfv~%BF^F>rDGFxog@U2kE-l(#ay*Xr+8ZGpQP_QHuT6O6)`71i4c%OcEvLC zK*xHA=87oei7){wk{>aEgG7~VPl7+Ml!g=e9mX)LAdmL7v@Au>xCJcx4-wkWgZ9Y$U>tL8aVLL`x9qRUO328i4kOuwr6__2 zyJ#O0H0;WIOh!S@A~UicE6jn3j1u_vT7P^4<=1K%HLC6+VN;L(roAxQK((y`2W2T^ zWBN3Er-RJHXKQc6pCljxu$EUf7yA zihLO2$%RufND>UwM_B=cs`7vaaS{mSQ(Qvma3y@4rvQr?bcB;b*w#&W+0aCktRp3h zvFFcMGdoWa)D7lHaYBMgmUW#0vo4ujUIGe*DI=XUqFUDaM>cDey*_H#jAt zGhW8JThXlNJa+Vsj56Nf%xlh}0mhlLc@oTmvVvL1<(GwM)6&aAvgzG<4IyJ57(Ap= zC3%`VR;0r{CFwIW^5I5fiEFs(v@>pdR3w?o0q$>q;3WI6g4q6*V?G~^RlxTYHA3Zp zLW7=nP;g_KE1#Xz_(5_C4!N-)jziw{!yP)I`y+Hch@Dip4S`{U76yRO&cv_-qJ!Lp zc-a)bYl`>5P_IMOk%R>wOHwK66+d!&iC${vkXy} zmd@C%9e*1qw#8;v5FqDRT*&GG8v)tV9AxGu9Q# zn2TqTI+uPAk_SE%sgs_zQkc4P31d7JIclRMj;RQ;X9-pff*Co zOInfmnxmeQo6!tD_U3b%r_fu#oU_Du08`Z|H6x&9Ah?qip}uZZmWqlmjF9-|5dJuk zB|~|HAH=~TyRyz~nFxlL3RmVqghi5Gaawm>G^&UKz zG=}IK{32VLBbV*KY7Rf?uCyP0*hT{{=5KD`BKo}5XtiqQn+wxyoSc9^wUd)yPfku6 z&Dy)>N%JjOEQ1yG$KK#8_OnFZp;O*F#9T8c(VG0f8_j>*n62ch{QUGpV^x0g{`3ue z__5XKeuWQD$mbO##$~(P=%72S!H;IM-EHDum+ddGzu?pv*;+`HosQ zg9h9|wur~U00r8^->m?-Kt{ig`N`~{-UQRihj`8XxADvl0z=j<1G$o22nEaGV(=SyYNN~FvE5GI z7)aQE!9)KS`cS;uLtPnHa^eAd44P--*=ph#*nYtS2W_(l26*87=}&+9_kSam1l+ww zaH0odKefjIFwP5ufS`69;_(+4Lvv)c%uf3nf{=9zXtfVHFPP^C?Y@QLm0lxz3etaY zQiF7|SF?~zyZ=R|-6MHLCXihu0c%%;>6KMmt9RLHcXQPSMj)#SunJytZNU~;H=}k3 zOvL68&9=>f)wxtv+-Q#4pG*t+z$|1yDO&KSHiczAGu(if>r2)(FUp4$kPjZ~X@CzeuPKlf(!U)$s-IHsDr>Xt3y{ zqiXiLBeOe-BZCqx$S#uSnK!m)Z8}TaqEMrkM2KAh2Ciw?>;&I)@{IR!-GG;21P?cN zV`#|XE3P!I^WK>)!6-neo#3})Su>;d!#qa8-?AHEFP<<_CJw;t<4_voAl`v!$`1a@ zPlNyik_O}kcx^m+D`VjRodHo}HgQN|9fjl~gBODmACeKccMBW(vq&d#U!uNU+hgC; z?c5v!^X+GiDULm1odp^_XbyUxYuGXdKbpPH&2=~W4PKtcUXtH& zyBlqL4Vu8R?tbJA(EPk$nmU^oBY2YvnveqMX&v8#!7|ol&Dlm-!%r^Hoj*ODLn4cb z(VH639jlvua}&(Snx3CKYYLs<$!1TjI`*8XNiI3Gvy)VhSzX!mZ=hg86iAwg%t<@U zoxuX)Rbd2=yei4@kS^m2lX2I{4}WJ<|8o>!30>&A>BBZn{Ftr33EDFo@>&_0CUBtN zl6%4ah5n#38n2{bGbshgVgh+uS&+Af-T&wv&TZ#JTk+U2g}t##_iLN=5Qc1<<4oIDxwiRZFiIq2Nz?WE@ohaS7CD=o19F2nqlE}k& zbi;e&zrebOtRTo9g%cfTAR-+tqG>4XngOLLOw!wBz%p$>Pw{^lbO|&e9n)P2?Xjri zhrGBG_r}j7@Q?(=rxcHYoP|%xE9=qT+qo51Cij! zs3J61;PA*cg{R379+{Ww~c2OzABxIu9Ss2CeMv#oEjC|fH$Pk{w!CT zgv@a-t<@s%e4re}F2;f^F)5xx`_}y~0)kHH0g~7x5imjAaqNJwnhDVIjGyd{BvK?s zVBwp#MXdB7EJ+=SK|~ISVTx&Sit018(}0|{9ecp4S#U>bSpyh1$SibtcxVh9&}j#( zJA&16i8zD<)37+hxcu7 zoA>1g$kXMu(7n7L*zd_?W-snmHaaE~JRPE6^sozS8dbKmc2Kt|WT6IAR?F-TO-Xko zhrozqEAg+47)n?L_2?Nbd_Xl)#SmB!PVgGD1Mw3+>GXPiu*l-HzE}rAJsLE+!w&3+ zq`3h822?#TNaPwUaNTRQFTZkV5rajvpf#|1(w1MqRAcsy+6Nen0~NDD10G=%7xG}E zYZ#*7V2FcP_H{!%g%}+UOvKN^!T!M*uY4b91S@{*klzTxYvoaU#LlJa89ImD!ZznPaV?h=$~#KrB!gjyz5o@KK5UFfSwyQ8N`x zXX6l1Zw^ysLsW;6XmUe@n$3}}(zFq93l4#8c6mL@wh#nxR+%u36A;oh*(5Fmf2%Bn z=u|y32xNE8O6iKSGnw51TB~VxM~#nKqNU%dlDb7z7M&*g&>6T0 z!SYi=0s*p%roaTx1(+tXyvI*5@fKiOV3jV6Tj4EKB%B%&OA@UpDqs3GQ}2r4rOv$6 z9nqLf3}?O!pU@#sTrIJtu+a)@&9F-V*bz264RJz_{AS~sg$yhhG-Itocjkt!gRkFS zIFIOl3_LAzR&Y^-W8a!hljzd0asEhjw80t&4+xjz%~Y6}QBS_`$G&0~er&-Kr#xOM z#EB0PXb_(*Gg8SV29TFS8@98QLLp2A^5rin<&FbjDzSbQ~6K zIp{VzGAE_-4h>Wo$RH|dBtCW8u$YY`KX6CT(S|6{h4W>+aZR%iJ2p&hoz)(K@1Gi- zc8j5_#Y^B*w#k}V3F*}!al3W+^>BD|F=$HWXHHUZUyhQ~8-D>J&i z;2xvZ?GazM01S#_!H`IC7?I{;`bX-#yu;@8(82)% zaKa$50;x%P(ZQGKQ;*uqruS=Lq@ztu3PPAq@&1B()$E~tNCHFH7oSEhZZ0p)0ashp zE!w{LRB_n=wor>J!ls1SR1j1BM^y#u$dA2g#+pJCAadE?K9T$gw+=AZur&t*dr(*% zil%eDh4S=j@e793A(E;Hp4vttcvPf~QlCj8Ve`lMmLKt>CTQNgajJk{dAyIDVBF4$ z7?O)##E+)c4L6Zg^=Okrhn^TMI)spqVBHb)Zl6a`L}6|utsSlX42DrWbUV)|qC}I9 zrf8hS4vE6il-QT9YAoeAEH?yWg&ml~M?ZCj#o6YAMK?E4IP&pHNKr^*j^l?o&B`tX zlAdS;lG4*t08n~#Q9V=`*>JcEBSW37G%FPO9A^@t$eYZXmmWz}iG3xPbM1=Qb0jPv z_UNSN)OBVP!;ukpKSqIYN>n`*7%9}~4)Mk)Nom7} z!2h2n_B&cAf6D(o`aYkjG7iNnX!V-?L9aiw8vVW!|HK>jeQy~Y+skDk{5enKxjJA+ z^eV!A;j7ErFFl%pI&oF>x|kwW4Z+-MwlMb8s)P$kbJCDY_a;Xkoo+ZrfATU3`$Mug z#MOcc7uA)UZ1AK~I=%31Y5Dpwx-zfTV-R2kT50a!e``5$)2nT>C`2VG4Yf`_Hwafz zhB02>W+7GN8k3;qwQL1gp?WP3t)L>xL(3^Vj75@9u@_I_80UWUzLJKaalUh{tBxUp ziY^&5qe2;!goQp4$2Kl;*=c-?r!(a?hs*3n$x?y)LPU1ZASWjeiq)dfqW zlpX+0a&rwZ3mpK4bo?2EfiFt<$(LvsAS=Ye0fNx_ZB@l`7sYSU`yv#ra zdc+qTtOPSmFN*{q@S-l#wF}vHB($WLxW0mMw zeg3=x##%OqE}j6=Px0WO%5w#4apq)iIMFSe5gJ)hOJqcCUl<|yh_ZPyaArY%^`((6 zxJ2G0Hg29jmpE5rHjlo~T4diRKd0VplvC+@VSB|kYV!N6 zn4)~YX%?pL*6s!8gslo4&JFopoo|9%gC}7GZW$wIzMRF9 zpDWq6SC$BN(z%fK8iqc_<@{_JUb-+f;{NpNW-LfMuI?j!2`no;$nNz0FF=n+lyH&+O@&U66b{7C>BhFGcab{?yIZO7?Me$L2%QOst{|S! zzUA)-Qqcl|i6zN?KvqctCM_H2l?{#rwm-0YB!tr6rS~l1%t#{SbY{oEzR#?rK*;b> zK;#a}02BzM0f=!b0fQ%;NGr3Au{)^LfV5tU7Xi9-)RyuQE~deAgYA#+Ay2S`VtsJ% zN4x(Twhb!|qj&M&@YW+d!jCFw&gln~fL9V>24k~9rLZxaq{XIO`W&T{4d`VGxVZ?- zo=gsm=msWQSS%MYgM6aexT;@Q(f>2te{L^buipR?hjre&%RK!S%5AaV=eXbTXf?gg zgHlUa$^xZw^qnuZ#jd}Jb)80k(sV(;V*Ytk>lGSl?|55-0+Q+Q-8b$I^3YXa;o!(lwBkiFbF=?hxO9j04c!WsXti32aAhU5PEi~& zqT)5EgtF+xk+w7-@KQvA%0+yDC&v8i^+=9;z6RY9f&#=(`f^m4he97rTz_IDOv}Yk zm2nRua}r@ym%j$tWr!J8C9Llts+qqOg*iCt>^-9pbcua(Vp(6)z z*@iYtZ7<$rA{B)?gOf|OQUu`3*kw3qjYi#LI#V`j6)U5V9{N5$@6hL%k%5KoB*NEG zCME@}zhr9|QeG-v845<1 zG(=_V&_^~)2x!))RGK>0CYMSjXN*Y0XtY{Jjfk}%>M`pmK6*>G!fV(HpF0!R)-<#k z8{9OC79=%7&U%L^all)H+*}|9j?D?u836$%CIp%OPnA2>1dt+Yl}gVk zbGhT&-xv0buGpNVMR%CFE(P|3L%C5-;$G>VXznBHxD%OY!u5_s@AGbRoU;7hGkNv% z>^_UcV7ppIlVoNw7T&}`BbeJ;1XJ03X2Caji-rwiZWGPGi9^T@W)KR0)|&H`Y- z0S@4&e|HRO_-5ZZ$6(05JtjRs*PAEhhHo9Co4j?yA*X;_Vgg$?3xk#_&SQ!kiXgqOAFVjWqSaK9Vfe?Adwc44CfL5TyyI+|o<@qyG znu&c55N}p96{nDtG)2y5(&AK_$`7U~@WTB+Mg|Q!h{-7wayO1fdYa&kGe!xZ`OF=o zt-0fe#UwU}4?PsV1X{L&`FxHL&cA5NCaJodnu8@Ug(irR^Vt!uA+sS^rpqNktRcwt zI=9_LW@C`n8fU4SjK&a!dL(S8W>yWqjAao%%BuB-cDa;AT7Tk94k2>Khqqd5ahO~k z8dk$$R)dDvWA%ZlQjN56YA3TjNbQs*a1dD@#voT?r9%(Zkl7CA6hKWWryT@mRQFLV zHq(WhgwcnO@N=i=Z7e2`U{=F35V4?x^Q>9E=Y@)b1VmacrGbiai?KI}A|IvY2#8n^ z(A=@-Q+phG{*$~Q2C)c?Slq)e)7ncw#Bx4VD8A#Tl%pW2akA^gxt0{=T27E_N{DMb z(v;h`2KKFp!4;z^MbNPT3Ll)s;yyEtxg>nx{t#ky6)lMefbyU^ai9Wfq9STy5d;dQ zRar$PE-mKKk_B$Mi_k-^E~E%ZuEjsved;-dFm)(4@LN58exiyHQ+V|hQ)}Xqo7W?C z+C1JfPv0IGw@=`w=TGqcb1@Br`{7ye6g||`;KjtXxiw?9Zy zC&~gfSZAb7rf(0D1+ae+$avH(o&suk=&G66Gj9Rd#Jtay#l#Znf~G8X53xAi#5_|^ zG?!2zK$$-&H1iSHlfH#qTj1gcEVv^lIb{l?BHvO*NhW{RBA~6RN9+4V5ariqPIZ|# zq^h`FLi=EK3+oH8A|{JHv>5~+iyd5(3B;XNhz(i{$e_K{OP1Xl8F!dBXpJUt&b2if zF;0_1U}6IOWR36L8QeW_9`RR9M#@yW9YlB^`43+NKuvq<$J-|V$qKt%_Tw}brL&%T z<#&Sj)Z1Q+?992kP2Mv{Te;jPrHAOyoi9B_-xx^n-akM z%;gF|pSjy!L?DIwY@2DDBETHtrP)V@Xm0KP3;V6tA{nVODZ)RZ;=aR|R9SrM1u?KzaWv9&4PStJ?Q^ zotESpb85xQwtte1DKPd>U|Oq3q;0+9Jv)8?hhhAwg76vIwSwu7*NCR)I<^D)Hf1g^ zJhBVS=ahPD*1Y~=j_zB^8d6A~#6n%+12VbOgy{Go+dX8*8MHEkZ14nxu=$ZZhQtq- zmf0PeVu5b&@MEJtOdC{Wz{q0j6=zcDEGtf_blQw6e;I=s!(dm&Airl{(lDe*3Z8CY zLl(u$8*_J#w=m*kRzDFCjnPN(oTwDOCli>55Ifp(IAo4daR)M9GP?i(!0_<`@Lzpf zM{&YpeM={KT(^Sb6&%@84o$%K{Go|X2c_c?ieqiUmyn4}r`PKnjZuu(R1?L@f~w$3 z;qs>2gtsveg*I&Uez&f{8V$0|`e=^Ci(p~c{{XIGB5p@p26eF(3evt#l%e844s$SR z;b)lb?>c0tN#355P`B!hi4-*&YZ*t~!VN3BbV@XB?WGbF^0?m`-!JjvvWgL39%;N? z&$Tbkv*qnwyvRTn@o7}}HU)r&h?c_rlH(%Yu($}4-q64iex#*hM4>b&M~o=sLUU+1 zVLgF}FHWE=QvCr99IeAMgyLaFKGaa!6#DkSV4;k4z9nLGQBpW*d4v=H*u-(ge0Q}9 zrxjJVqUv14J=ovw#7T zEyxHG43Km|26m8-8alqW7kAD?EyxVAi6OI;0x&y+NGGHzg-;k#d3KK;yfv1-Gj+cU zH9myw%&o3qJ)}!J-j?Q(7C+33Pr#*wcLl_Y=QskDxbq;6OLC$sei%x6 zuIS~+&)yvQS%uS=BR@toiA&r;>z?}&kr(__d-zA=qmKO}=Y!U0$Omf7t=$%EU~TNU z5;Ls0MRBQaUt7dms@O!kGtp+}51@GPi~s|$Inn(W*AkWA7NI*(ZMu}@V&}XCrIMQS zSFABkOQkv2r0vq2`BO@zIP>RJDB5H@A71}+3dlP<&?0=~X;N-dY=-c>h%%jEzj5V;j3LmH0Wq0;$V9j zh*G4Q1JONKkqW$7n@aBantdsoHfxSN{umcK)PzfACzg*D$hx>A!Hx|MYry-hkLj3= ztB)I-a2#sh;#<=gmfOK%vH*T#uv8ma*qnSZlDTee*ht=OO|e;{Jwy9!)n2F8i7c*O z^Y9=nSi$kZ$Y2pI;T^YyH*KuIm$Q%561DeMMi!%E-c27$B(Xer@wk%iv4Andt9}^2HIIbPljx#C|d7GmWR4@y> z$m|^0Y0>lw;sTIS!QAa0`R4F{N=hcL@YdXk=7sUove7dvE>=u*pd;WufFqx zo?zqQp1{-9Tm%f=xdd?a!*Roxc>kAp|K}g?FPg5BrMh;^zj_NuG^5wsw&8by&_uo_ zx(W^xe4vJ!X49luIhJJ{CZML?8V$h)%K8oAjK#HD!z`Kgo5Y)(Yqcq|f7WdjGhNqc z4>6ZEfAXVAmbS$+{-mf7jJxPy=d}is=)#Cf^Qe*@ZP#rrdIl=toam$|gMn+Q{qh(n zc5J(RY!bIkWkavv9*_|qdQ^Q^!9Kn8S@EDBy?`Im3sM$o*z7`y&>-HyL^;^(bw8Pd z5lX`kUDnrqef0s;Tfky}^tvb?{ts_4^Kg1eup~0sN(TXv)yxs8lqKG!Ky<@CkR z|D$&JAE$@^aW?vo^AG>==EHxy{evy)e<`Gioe3(+mnDZnPHHEIC+`kV&PTQL4{v_` z@a8P4Yl}mks_ja~Jk@J2gTDMhUwFtffBMUqPmcM#gPs!ed5rp!&G?u7@9pn@56n&j zrgSsVul~;Wn|kKh!#q45Zt@VK)K^G;Gt6Y zaCm&`9ULCtTD!sSgrAaC)wPxT*ODz|Wj4Ni8_G&F2&%v~GEZV|`?jP_O+S^xeCyna zqFL=pE#il&Sr95+fZCH&Ei|WDXwJ0IoTYYFv>y}Q4VM`e6w7QUFe3($O}r8sr5251 zyWfZ#8zGiXl0t#OXgH>^_%5T>-)F~<jZ>hA^#wny|e%Tt|ldbWR z*9|Y*(=Xf8o86ukwD>x^(+Wpd0)N5JP9~+J7UAZ%0xP<8$XtgL|HEU@N*?~hA0E{ru)afN#eJtliOgr%Z5k|rwwWN& zCwG(UwZcy8Q0`Vh2Y^Ps-ohC>vzfgZ-+O*4IRRu7KsFGh2Ii^n&9hhpVKh*M9)6aF zD)clEE!}Y@A^@X-$@v~;VgfK4n8q^~%%{-tpNb5FwE!5ynTpk$WwsB%=(Nw9dDCeo zrrva_fz0fbYu`H30D~9{TRMuOs|pfG<-)jk^!p$WY_5 zkZCp!Ae(vPZ|Y5H8xDdF1ks{hu*7{$ZC|j|YMZ^hbCBLhX`3H}9~~{lVcQS0AWX$( zKXihS>t-6d+nKwZy0ckoMYWPBDcbU#_)&C?R@B`dmty4HPUe9;_tkr7i@-uUPqG6E*dUb6>g8i}RJ z8E5L5{DDzG0fq%u^M!b-nHnW$N0jKxR`ttP z_3m#~Z+EX6x(#-0i~0kw8Q0#XCO(XHn_`#I5WDKla_YR5C5CooNr7pBSa#@2azk^o z)0*jy89uo^wcbDwaIG;SqEAY8`d`3nWX-`UjVyl0dW{OM*I9^Soj#^s$H7dBI>&n^ zda!EvR>)utZ3i_pcpE{3by3Ug4ozA~w|Drl(H~0QLZs2#I2m(NFrIv3R*-yIxxuqf z0Kra6QXoT0<==HKlOkZXxgDbX^W>j9ND&}@Tayte`a4OH?a4^3G#P=)8!o7Gs%=su&C6j-&0$A@3?pOVL8ox zTDQ4WVxS{M$GD3%6c$@gY5;~R41Cxp;{8u3iM6x@aqSmvb83Up{zAODr|V68a9^YJ z#-bKRLLNLFx{HbPU1H@Rkc5DrYDu>{DP=I`tQGz$P%k-NH@EK`qb4{868c|9nV)jn zobD8rFBz3cGE*pMLn_|rv$YyccfzWX=%|r;lH%c;2pYi>tPBgw3@eZ-f+b%UbB-$H3*D6D0k4p zfQJg^xj0YPVkwHF*oiR<<24G;WLbSebI`!JrEH}G0^{}5>V)hh72mL4IVT0@H^00AimLSb_J|niNL4{bj88O?B zp!0b-ys?{yH(;8bbxv^LL{9uUj+{xI-u*;}IS8>|PIQ!fq9ab%pZ!<|qQ}uo!mO8s zS*0h;5~_D6mJ3~^C<9WJ$&XMiFPVMzC9_XzSZX;zsi`5Uq73O@x)X~T#Sx<~X^LKA zKc7YH=S!NRy-8C9+e+_ko=gn1Dlm9c3NbY>?t!*Nq=|G_-8iAt+RwmEh)upvwe6j% zt)^AU8`4xpS{2=$m-2F{NJl4crs@VE%^fhiSg;vFG-yl;j*gBI;Bl5L6z{ZF4i^nV z7f9Ul;t2c+9D(a(asNIe{y#oXY)=2*uRnqR?S6i+OYgtu9w-FBUwS+^vU9@B4sF;3YVtfQls=ml7)UXJ+J zgZ9U(kIFCj9M3y{Hl^`OB%ABZj|lX)n%I6B!{ zvZQMla?iD`9xDTHL#ByG(uR1YgFNd9agGrpfe-Iw@Zntq9}WN5A>{%ZpnwjjW?Zj{ z6;Mr%buE37trOPP3d%W=`b*cVha3CK&ak0f#!hLgw=Whl44*h7;S+3h)?Y~hXP0`Uuq9Sfbvh4()}&FL5BK}ceWPQNf9QTjrhAsrnk=UYM2r*p5t zKny%TbS8Y|0kzY}D2Wx1z1GjGE;)Jwab!Yr$^yfyw{D+8`_}y)uN^;?RG(<5tE`y^ zBGkTYo1NC-@ay$OuQU8${O2tEuW3LQyTn?9##4-VjP{8uL%>JCfqRHhq%okXeP%47 zgw6p@IPBQtdxJ?G-B*rI9VoqE;(-HLu$m(W(Xc7w&_Ta%c3TEm>f)v5EPkd!;5Axa zb7LzRZ*AZOu_=zw&sXNaM5&xDINPjdw$UCM-QEZ+X4|87qjN+jy9rRNz|^Hsq+W^{ z8pIc-F=||NVm06nP@zZdy6$~4qhY|EtAIj98q3!7(a_7`2#5-$y8=+5-e4p)`Qj_4 zNEB{QNY`lnccTfcRHJp%@3dj`{?ND_^sdF?&E7Sz5Mea}7HvXt179E)uMjZNV#+B_ zy14GjLBM#?Y%+Fwy}r?iQ4(0m?T=jus!~wAHx}zp~)_jT1d5O;1SagoWhqi7!PEb69 zm$9Q!I3xfkZxa&h-n>oV=fHIvz)c4En-QN$HWQA-&q$&sR?SI~!JF8^Sy!svfsB} zo%|F|e?-ogG-V~FDNE4vlhtUB+Mmp9Vt#ZMj&IM5%b9(*OIgcO=*jj}E<25n2n_kn z>#y)ABV(-+!j`ftb@m*0r2rkssvedcelRY~kL@n>LXD>np5Qwq%Vo|(2Eat;TpUgvS=^JGbV#(d{nSv3)O76%Ou5DX|Gk4(# z7*+TPYzD@O3+B)OkWvF9gU#;qgX=s7*%%S*CkU&DQkRSnWjaQO_)~Q-QrJ|COM8(x zhNZ#?VY54o_wts0R`Ve2C4$Z1_1K#Qx=nTV0brXR$NU(cI@ z5x}PRG=V9lr>U48a$tH$#Wc-=450VO;vU7;l!D!)!6ZV>e{`$Lf*6X0l6GBpv(IU(I5gMu~ko0I;d( zT+o8R(Tl}^u)~ZQ56-)~f(c>MrJU>>=^!Jp>60B$8^FGBCpd656(5BC6v5`eo8C?l zuTJ-CIl5odL3o-2;b|(ux#QoV{OuYD5o{B{>S5Hd9vH?9?!<44PvZ`TT`TCwcaqv! zIrlh9?Tl~*t2t1jPq)r2n$VQm8N*&cSRJH3yf;u2=>WoJByzdMhLRIymr(|F*|$Ri zo8HiS@9~G@d%V@6o}0YKKOk%>#vh(H55~5jKvfta>=450VO&7{J=4S3MX-8!;j}|+ z-%PxH0Nb&jfa#xR0gL!K<2n=n5W;F!KvQx-)HI7h+G+~ILZlgahajKte0KuZHd*O> zAnZo~+kvpDSmPMeu-<85gmnYU5}3aCjy-YwAfufF@3HC4t}tvWW*Zn^4>7H)!i-_l zv@UM!|0b1|va$c0rL^Ym!iayAI^0#xff$#a+__icvcIR|x_2iNXQ77+!=?*3ye3w& zX$UqI+r*jLt63-@RbhL7R69xMCp^`w%TEZKuG;;T_R}9}BkEsi0467qDK+8nkR~j}L7HAob z?h|0piiiXmh=K0PCIN9t&722kMpx)6yx(i*_V@!S(Saof8D;?dPiC{An1&r_ngKag> z%&mxFn;2FDD^L&`Yd{POR6{yS?2i%Gm1!$qJ4{_y@;J3RPjG5<9z*JN9>ZpK-dzNa zuh~!xtJ6>ndH=L@e4y;U1=(1y7_0_jJqlphObRUB2QLJx&Y7d(jD)Zw1e-oU(Fzt` zAMH%2V5M&%bP#N|U}5OhBEp@8`G&x1;P(84N><_qu&Kyq&Qu#2giW6dc?&KBnV;>B z@RmmWqnvj zNMX|rirLJ2yq(#LZ`lYD>;;6)WU#wfuEMz!1ooYi#o#uCy~ePah#lVt6Q&+w6T<2s zMo2?9oXjzidV1?1a_ z2{~n_BV$5FqNUk544Xbrxqc8rXZB(>za)(3#yuuo-y4jJqU5I-{8YcI5T5 zhBU$`dX&;JYPeJo&X~tA6=$|LgP?x<=({!tJ#~mJNCW6n}$cAIfSH1&b~i>e@t7Dk#mF9og?ptqKsbd4OL;C{2N8e zTBmE2JzJyfd6BYW{tsnYog5&l!hwDs5ETlYTp+5lTKPcYg>&QtK|70lu(pUP$_tVJ zjLAIA{2|6y$??PhMJ&kuX9yoT76izZ^}R<)n6$hs3k!!4sH6~wicE!&bR5boRM>M1 z;U%cV*6Ft@eoaLp6N=DLtPZ*A0V;cON8+{AB@)C0HOY#k)P&BZLIPL{j~+b~0FUAm zNPD)tw`Dj~wI*?hrLlzGt>pe4zBGaq3r}bEogw?6!ebsdkh;v0HE{KPg z6O>@V1w}oEs`fiU^h|=#^E0@2jGZE*}xQQnAt(7 zjuubNf&)`HAhDR+%VjLUP%KT7tP{AHaQKe%!(lB~5ShGH7Zt=?OQe&f@vzYzROB&J zJ_(DEC5#48 zWJd|pIKCB5uS7KNaHF>$lxD+Fri!HmG5I~G0~G-&zm{+LY-J@R!(9m zZjQlurHoGdcN68kfeJ&Igj8taVk&7$hI|U>1YsqOQljIe^yPY`mjo`)B7w_x?^hC% zwH5sAQ&tzQ2_O8m8{wDHjQM!&c2E~m@utkjAKG^d&xgy4a+-tuN$b*v^Ea*09_*8% zH|mr;s%7_ZF;6Ht;U^Md-DEcSgkhlpoidb3i$}dy&j72;rZ@9^;rau106NCf(>43U z4q+EmQOZ7{cG8tNnA+m$8-IYwj@TH;x>)*fn?7`%;9vYXAw->KuiG-aLz5wl3-)P_ zY)(9OolbMPoT5ZL>-P>t{Z!UFgnhl<GRMGFL8(N`<_S51? zH*w2L6m#xqY}tYyZ)px@vEAN0ocd?&pM`Qk@l2vxg`F$z`z)uO*=@Bi6GBk%jwYHs zmHG5azqy5>E?Xt14R4sPmQ{?`Z3l_zHisa9**d%V(xF-&kD~My+9 z&A6`eV687-b;$H&+T3vu7VP*CDNVsVwP%5|o*H5&Q}z1CveqHX@I+WfQsseqW*F`R zIp7Dt*#ZyO(i`OKIX#XmPd#0v+uR}FA|0=Z9q$aytu{x+2QonZ@VvQ!VkioTU3Ad+ zU zT~vYu6=WU7Rp(HxBTN(@FH>tbjbVz!YkdJD=m|Etq^&P&xRSLbPM8Rabrl+?Gju#3 z9q2DZ24g5ok;NF!(quA*w+z`#G_@KT6|1ROR%u3wZA&Y9RkFCoah4*laipaQY#ebJ z5}RynH6k0Ur(&7SxuD1t+Jfy7lbYmN+@zVFY(>VUD~a~U)XpKWvWXIx)XOsRg$yhC z)^F9C`=vEZZurMIAtYqcNz&pBVNB(z8L*cuIZ4U7~`mTUKHZP)HXb8#g3 z@UEGp7hBbL6e&?-QyVw?NPrJHNY#WQ5=3i@?rFH3(QGn>9sTeHuQ6mDCT!I1Gl8$D z+uy6{c3KEooeMsNhvvKmiOX2P^B4s76u}-CuGX-MQBaB>A7OzzBs8wrN1+vjO?yS# zg*0P)MLUM^9CGlL{1}RA|5pZl5INlC$bd*(^lrMX$TcK|6WD-{2E%(-;nTWtA~B!x z+^5DR8O-T`i04s!Ewcx6bcl01$uN;M-s#c1H|)?Mf@cEFulTacMWxs^pSVDddqHu5 z^xHrSvL&7XF`G3C+g22Cn#+)vZ}G%dhJ44>ibTXkd}tG6IpS>jc@7w`eDIL@ej%x+)@;GL#pPq%kAPi0mMWC?+z9!}!Bo!U75_ zgasZos+Uk}F_EF|+If*7_G$r<`9$TY3*P}EgevlU8t>`9iCeulNat{;(R|4&=xZ33K?~UH;?9S4mX$5 zpj)Q__Vb@HTs#uZjSX;bw>f;cVRV(TDguyC)Org>9>r> zd;kTOcyI%f!e~wYBSd)iswYF1*P;i$*J52khnTKp)($yc25S+WyJ92Xmaio;^gfU^M-jVMq=Hd2PPVaHqVP-cHR&Q>N}rTBr72d;_*2kMD`=?| zW-z}ju6jlt!Uaf42J-jmGc}F_kqCw8ENeuu&Byo>i}&-ylxum*bp;Wh(SlAM2qTaJ zEP@0_U0U?dF08cjb+S9LfPuR3z`3n464*G{rNU zeQuAgjNi?#25ExOB)MqBaU7yw)rvtG3NzV+($poJ=!7`@^}VKohcX$gL@!LQDChvD z@G7KDvjYx3IwAE)qU2@pRh0Wou?c(c-ra)*9r24Duvw5g92H3xNTRZs_feL|j4-YV zX8S=x%%cq*F1g?#i#6<;O0*1!2_d0EV={pl40p`U1N4GU(2_v|JB;3dBZj;v=Pkq^-e;(TK=2B12+%@Y zqr77EtW%U*n_;q2R}{bYCbS;##N}i}lcw=dnVdpOE@4UBAS*vz6Z2h1Ls>t|ATwqOcUP`K znNKdCtJ{iPPm{QYw+vsDlH$BBlj<=Ig3EnX1^OQ7bhxkr#334_ifj!i5>{g+wC)*- zabc4-H92450|}ZoqMmI$_B?+QaE&4^Z*>VA&Y|$Et?LWWs5&wVwfzHIFjI4#Fj?C~ z6%W%9RRhMAf$x%ibi;cC#`CXcw&B7|rw+0(F_J^Wg#I1?HJcgiK!o9jngT%)D@1~x zwDk}W@5SKAb-v~p)jFV~_+%_QwU?QM4*aqz`_$z*lM@7Tkfvi3;-%$BI_I1_2_}$) z6X_izD?pLG1SPsqcx*3lVA%fvg-+tVfbbE5aLW~CJ?OF(bX%;B%RbNG%CQrl$>yk) zuM-ncOx!W9ilqIasu@X_N#;L9%Ruh6ojc4F3GP9~6LN-@S|vJC$ItwlPTo92Dz=TU zJ=WvZSJAYXV68v;<1!gLg1z=BMdDqJDk#NqxvuXVRw#@^?w%Gkn67IhhTr!L{ggS=r%& zot%IMvy;0)mHosuk&3q1RiLvr&`(&)Hadw<9HWc@mG%($0($VdSE$M32 zVvDQUme{(BAj(5iX+LpITjVF{>OEKk_%nC$Z3DfH>e^z5s}^8f&9(#>U%^^w2T2v% z=-twN@IribXr*05_26o@(M@>b()L}i(mt|Ew$ekC%gCB}<8RKSdMg1}hiluKtw8#` zT5Pu0w7#`+F0IpT_@L5m!V0$1GtaNKV*r2QekB}1`7bn)WKrO{qxF|vyNAz6F#?BnXCmE$R`xXD(wMU>B3D(Om*u@66q zY@Jh#DB;?r+qP|6yKURHZQHhO+ugfu+qP|E_w+gc%*9ORqAtFwN+p$4DsR^M*0cJh zz0n8U(Yh;;Qs$#=f!OXI=z>3owU-*OIeTzDdnEnxH`B+-SVBsc{dz2e0!9f1O8i$w zT&bY;`k}G}{*yzk4tc~4@f)Y_kFbp@rTy{ZF(a+tFGiYCqZEj-f2Zz3#&^>Na`^>W z+f9WpCANjT6cO=j5sfGpkiCEVpn@Ku2Vh!F=Ubh6MI%W_gU1Uog?)aE#+Jr^ZWeM? zb75K}U3QSx*Xk|G)h^DFs@J^Pz6nR7goBLZf-A-oG?!Q*gkS*26jTgzl!H&xx!q7H z1mg4un$Vzg!^f-Owb-N0jaqQ07g?E;4v$xW=R=jj><^-h*~@lE4CGel@CJMC$=^E)ZA$eOlZ3uoCWjoni1Il)F7j%5#?^53!#A0? zBL?2JB@u--1U(eq@D%H(Pkw572$1Y_B;`NZXm(o`$1z;gJ8ex!*l9|g*=Yp`Gn0xC zr}_pUYQ9!P4rB#xTur09E5gOO5qe;=x^Q?Nu&2Y=Zav)z-=)#NM|HyYiJw|4{y=BV zick>h(4@LIW|S6g)C1NIirrRLBdUmi!$ajCc77-|x&g(|k7r00uEnJC*!Nz5 z_%=`aKX7;ldRF(f4c>8e9LL`ABkpPEAcJ{JDJ{(<5(d<3OW@nk5zm?(t_+>Rt%bCp z9+j1a4%bY4%6PMwTYionMu<${Jd;nEq>+x`S7Y~3jl%)0Tt{Ko!D(5id4b$X1tm~=R(|_l17G5{_eNhO%F;y5NjRJLh$5$w4gsUnW+Hu*(El{Cbjg1x2-EXAsWzNB`^Msc=bGWzcXn|fw7}pDg_9& zl4@3qg*H;i3!DN1Oj{d(UigwU>fKRaLID0`me|S&Nhmsn*TkPXt5CbEvOFm+JRMz9 z^p)HZi+f^U(wA`L!l_SeNHg`lT*?<_dx)@QvkPSpxwy!*_*0CBC~TfA1hfi>dh+mv zCYp(SV-R%@yOj-eI@69ujy-FidvkAR(^GX1Ub>f1-AUz0E}oMQm!?}uwy&ISi8b8( zZe*+25=$ihqc$M%p=z}B25^ppTTfnbC#LsVy8lllpVK=|4`xcLZ5-!)NW()h3#Nps z(-%Yx$5?EricBalmNSP$TunbeeyXn;=&SQgethO38{m=U_U|O)?jcyvL%U{f<>Ofqb!91K>`vgK163Q@?vn?^)tea2I%Ppp$VutV_ z^FsENs`3n)zhf+C+s*KFqT&K(v}^2lgX<-zSfDzGAMKO$odHy%q2tH!a`3IOTa%!C z_VdrKH@{3sJkm0myU_8SO4m$KOl*+`TmI}Gue#;<=2;R+v>;PpxLh}9Myd3t=|xUr zggj>kN$m@#m1Rv|&7iw^gPUi1y&zEdKDD+eUlb2C;9gl$R9OfQXyi#qcR||Q3(Hns zR^BHI6UuzoBgqIrO}+9di5G>qZ|OM*!9vffA#<1W-v=>4K%=B*;e@_UTP194WCb=* z6~c29OeUf6+eV+|IjA(B_B2*A)e?s@rt7iKVoz5m3FDqNUQ$VC4@vl2C5f6ca=CdB z3h;7Z=s`_;%lI&%Ru~#iCafaRx%g}zMT>2N6vGWpaMO}RsFme>4;^kEMcecGj8TLX;sDjvReb>@uWUQ1f{H};@<7-H z6IAw8^Xk;{P{4;j){6(!SZkEcgCIj52h!Ke(k&zO8?=ErM7z>|*J7n8MbYAFBqK_n zlg;!~jy4aw-RGLXQ@7$sVrU?xA7~zEkEVfO@5LF-jxWXfNnbM}ypnHmqf3_t4iO+k_01Ik0PuW)r6D2Q4?`x4 zRPr&1Ghc)@6{8P|vIne5hsmZ z!O+j&+T&dPOJR$x4p_(RVfuv-7<8`I^j3B=amL(?W_?gUqPBMx^8uAG^w#(J<>3l_ zdt7?##um^)#@^%d`ZI~$k%xMkr0acj?@#v$tA`QG(|(w?ZWQh0o51zeWdd4Sz<*w= zelJ75?X+R)JoiOOJ$7sZ)QHB|^oQo;E?JV>$@+o9*YN{SuMDq3!0;95w=6a#sf|3B zgPPg+qx;xpO#cF=ec@*K>!wE#y1d;SKPKADfdKLk`zDbetlnCn1rTFmcKvSvg7C}t zT+X>cCQ!OQ0ZN-dCsR5rge$`IK@pBsU;gg~iu-Qn zzd^+C>GlBNvVVbnKio#8FczFnaez(kUe;FAgxmyGZ4D}MOxgN^I2v=%7_CXJ*+rj? zTSMC<I9~6qRHJt4N)mL)HsYVLTVLZ>=q~m?E zfzZ@x^f9b%kBRToyGuIQNNJC0{L;_&;fQNt6iXk%s|?mUjn?YFKvPAB07u78iU`2L z0JC!@E(IImnL8aioxN=1bl9kK+w07%qMT&Ef>pR)I#C?=a{SV-G&HK6gR9kr(~g<0 z=QfLBS)`K$r!^z(O^p=U7=JRH7LjVFji=PKM9WXD@1n80WqNr3@y@zXf#1tf^bHw) z;jl!RfhV9yG5-cAehdgG7)2@++cUI=?eGaXQU(7r+oq71|K4}yh9#3^p%iu5WR*vKYH8rc~XuuNxzyykYt&dmggAP_fAn&RW-@Y#GI&q>_pN zq`v@P6<16({#`_T#R?mHD9FDPG@+zC`>2ecEueG*b@v-~U?YMP)#EY^FbDPqmn3=6 zEC5BdRk@Kh2P8Ca&+5X4qM~p~LPsRB3PO(u88yUhSB8lO^5cY7O59| zgV`-xbx^V@G^H^VRXL2IK}C}k;gF5I3JHdEC78P3Zoq3-Ynv4A6aw{o?p)?hD5#~c z%S21wQW-)L7`p+Vxn6(*7qRv9=86&;GjxGJ%+;u=Jt&_^w2@0nJD7q6r)w2s96>S+ z27oTB6hRVr9qD)fOfLbu${55_3Es>(F1_#s*v_9nA!n-4yEUvmT)Vk_MJ;WMRNg3( zO^X6&v`y_m1q&wUXf~6ithOMY`tdZL`V_by2RZz--dJb)J@wX-{1mXp6nbi8Odurz zGJ6R~S(#!)%lZSA)|CPju+GS*SU5et?Ocgsg9F$k0Km|#t%o7)1qiIcr22;mD9$470OvLqajNnj{Mqm+Rq z!_daQFQp+=ODLlYGCS0NYk+KJRVtS|wYE82ZtB`%s}O+7m&g`!UVd8@{b$0Pv237{ zHHm{H>l$vo2wg8qv7}(AT4o?sk)d>?l*5%J!9Eirn0y=uy2GmAwrj1!#*ex{%W{DjX{V;-V2@y+IVqR&AqcFLXOKts|Np(FO>#m=B-eboZDN zWQN5F|HR8?bM4MUJ&nY3UJqHp(D`#4{UL%SlsgzMg~Z>6M>N+14fX(a(&(5*d_YtIRVgIJ?_g3uU6K#y2V=PKY( zW_W9Megk6L-;f&l$+Xx$VsMQ9ey+~ET85}Vt~ZMQz9a9)3zKt?RT~Y#5d{Cm8YlpaITBZL0N@0-d^# zn7rvALF*3p(Msa)vxGGcNR&Ss#pY2p^5cOn3)B9Bq*2S`+#{e;XcbBA7|^LSisVk+ zs5~jDMaK0Vs8Z;Z7C9$}W$tLUF^l$Ad12JPM7A-^4k2>G^JQgL2L}5QOxy}%EWlBZ zdypmkn$mNe*ceO?2axQLSV5n~`h*2=(js9E^+4J$;2db;mZ1dRDFQT}{1hk@P$3OA zavm}OB&tdEos@Nyzk1+xxP;XJfuYX9NLq8PaRWoE2T=`dPI5sMla;cDflNlEIIR2U;{@&?XvsfOBQq<}7v9mx6<{SuJp z@?w{(l41g^r1KDuaATuwbqoN?X;>E^GBlSSU}72wxMxlMKz^k&Ym@;>y?)c*)g(qa5Pjz`-qZ;l&r?$4Z&T* zG21c@E!|1g2OR!5M5vjy-Rp4d5FLG-){X2>xD5@=SJLWYbd6I?(GD7hj3Z1?%+|0Q z9$TX4{4g}t_aG4tQ(OM@8j#XR+teayNjesUobE0d* zd9Frh6bTe@UA=-8xxN<7Ut^}(G%XgMYHg;8-Z?{*qWQsuM4hCbq^X1%r**;+3Vp7W zoSKDrZD4=*tlNmByr^4YK=3v=8H{K_qazI(hcu(P7S$QR*wOLZWfB*Sbfi-d&yAxA zg$rvsL}^9RCKj|*jL07o;Hvq^SsOqhw%d|WjQ=6R=NJwwyb@WolYW`onlXmI2z)ky z4-+z<#H(x`)l4GuDsPck7eYNr=Ft?*Phz-_N-j(V6%kh6-B>bA!0UJ_M15^jEt!jM zA>6JPy#YRYh>Wg-~dvW13#WiL@>ApG|>^jH3%4wD+t4oBROhDL=;?d9+4n* zgnJuagnKYo{J;@?p%Lq2Jr3}}l)}h2y)jirmYa(0vJAsZ_ zt}gaak|x>Rs@{ zh<2$CSBqr#@(mkY-Ht+_ZWtuOeXvbngQwPUTv>SyT6QY zxJHK%R3iSviCgsFZf(=Qkj33@5|3F3t3I9B1&0rG-@S3_*$W-pv4&Vq^*ZE`P>9;! z)H>lHP0ked2;$%{nH4C5pmlxc`T@O(v_i+LZuE7`(u&}axyJEcP^KvIx&=dF7uDyB zH6x2-niERAS_E&t-Kw$!5a=`E^?*$@C zsL$deYdrQn*tqSXqX^N`FEG-#BjMH?hoi3z_02QlMn(ae@<8qO!$Vm0&KB~MVIYEN zcp&^)mjSbe=0+lbM1}=SwBrQN31>M-kJ=UPBx$>5(NG#U#4ezH8mDfn@8ChE%Jwe< zTDc2n8^F=tkJ25d1!A{Qbd(&yOhd8Va5TfO1yvD`@y3R;mB`5D-nNQFpK#2Yi82CP|yI67oa}b?funYyWm>!AJwrx3Ljb z`sEz=kL-Ka85|HmJxmMF!52Fq!1Eg8A}?~aYZ!0w#^LRr+}zs~jy443sr8P77a`QA z3-t?3C)MnYrG^L&&)c|G9^Ks*XLgntEL@I~s~!!Woce0d6S^&^ngBvnk}5>^SKJcF z%~6ECL{L!~JfvJpjBp0Wf}t0H(6kY1_Ek!jf#D%C0P2G>>j$^ai4E>bheJ{m0j7JT zW1wp7$_krHn$612U~)ezmIBJoIbn8m=@%L&qKcD+{hbrjV^NR+HBO>_CCYveK~AbO zJcsEv0c{+wNBcOFA}cTR*KSm#SIp3(BD|+cmB>D71!_1#ME}pV+Dd=>2T;8u=3Z~4 z4;7lirTiLxagn7E-VZ}bYHEUV!+CUtY5L0OKvak-6dAZ5U8Z7qIIl=tg^b5nNrK0|=tP;F3By8~} ztb#Bn3mS2I^3@@2wxtFPV;5PV>*>bl1On7%G9*qiBWL7VeQ`w_nV`r~-Ldk831o$y zB?XH?!qFCY#e@f%ncKyIR@0UHFT+y(o_Kpna%Vv~$vka?^(b1E=-4Ie0z=RAQuF0R zgZM>7+DcjV=dD!qoWEzOY3?^AEIExM@e+DD`w}XSAPgSs7okMqmAE|5hN7>~m{yFm?v)FK>AG4&cxZ*&+R4g^*5x zQ0HhRPw0zqJbY+tl~D(dj)Xl}O|q-nwnx_K4@rnYaLk@dh7p`^AhN=`b2_YG9m_D` zk=J1XjL+Te3PtY8=M86-G)T#=e@%QPW?52*dr`nf1Mx|%4sA;mtnEb}XlO~3PDtXM z#I=IC@P(8}WT&Q)$N@Vq$iM;BGZs4K812d*uO#u#E2djK1r^XQAtgCWHlg?7@^P$D zCdM^1#F^0-rmYaOZpTA~!+P;6ywCUR?fCu2a-=zg!;;-s1cN^1JK89sVRdH7>mgWV zSm^*YTLE#THqp#9iQ2Hm2Y#JUz6mMSE!W7?4XvONQfxU7tm{@@L|?BNCBr?q zJyr=Ir%7UwD-YE{7iTC`m-UpVBET7v+-q;XTk7wGaYU0|GD=v@Fy+@T* z9q&dWQIoyVl~_1}c!ZY?0Ge_R_FaOy!s`8T-Un5!mJW_2b7ie_%At53n&F(+ze-B@ z^!GJZGr5znPJ{#8CxiMRv`Cf*Tz*i=Ck6tAUMGFpCQqYi5a0hp*bgq|t}tF$~;qhgvKhfS`20vpP)WI;~vWM}y z4-VSNh753T1~&4xqrbWPz{kj$Cu0>gK_qcUN2%uSir{j=b*CpVk1-x?FP2AM>uL#& zD5!6h)X_k&tew~FMnliVfB;JzLb~}^%7k${C^TkHoyE5im%yL~`lX>VRqp3j)r|YF zsA}R7h34iN=6HrM_r`s_5<8?r+!qHuuBCJeq1KrC5a1>RCuX|q{@8DR(0sAGf2}np z1?oE+kvqg!`ojM7MZU#=KBpZ|3u1_v9wa{M`3C!J>KOiZ05U{jS>6L@Sr?>-ogWiAI)X_ z;~Il+nD5T5XdTlPd)4%N8Gky~#MdGd_wq5HhY5V;e0;o9P4uxNZkG+*)W}#{$Mqv#fQ?IM1L|4uD=+SpROGtG`;$YUF!fho;WU!1Q#}m#)ApSS>A} z*v_7cRXJT8->BSOK(NeO=z7EqU%`RPva_Ou@fI`M}M9n~Z=4 z+x}f_kDpT?7D57K!p`+3{U6yo;#c^_-pS;sX&?)9-~ z>D6{?L&|5}8qHkO%N<%)XxqiOQwHVxjM+!{2Dt|GbMTs(b5mOQcL*Dg-b{t=5TI|q z*eZBVE2*{dbs_N?!5#KT^DZND1S^<(latUYIeu_HfBQQefbS0{+aBbKwRppR9X0`- zM{Pm8K~uB2cMliKKVT*Ea0~tp$p}d@PR^Q&^ANJR|Cpc%Y!L>uBYj=LS;#ji(`!%L zdc;9783qtIS^z`NK;8h4D*qAua-)P-^Y8I%%L9f&q+=kE{JyQGgrhOz8L<^Y5co}t zimH07ok5teN!1ra2c%rm07*KVKX-p%>D8{sK`?l7f`Ity999te_Fz6OWbv=xmP zBr{+-B?qDetgc?sr6pCV8LqLCDStV`xmB@z>|E>AyU+Q2tw)-eT_;b}iULo)W2e>> zwnUxpURSk;{4!j)aaLi!fi2GqS{cr+NvmM=?%-Is5Z3Xp@XTV%?lb(>F^P(T27Q!t z+rO3wl#_NYCi;kC;I{0YPRUV~+?h_RQ`eKvnPy>MJLTa?)#l6E#%Pw6Y*Z{kuBHoaLx;o+ALyI15*j==vk-SOq-$YQXFo#fEE+EC`2Y$)L!D8# zzv*}i8-WN^2HH@*dS;;uQ6R53iZNz=0;F>Z(_M5d^ckKoNXz@@No7U9wB655t z`1@DTboYERX#2ABimozm_9uX!5cmV)i-PcdcOL3P&T3=* zai85h@*<&-lx!vUJ4xl(fG3x>4V<@ro8D!1+t*@WVJcr?b4t88X&|7)wcPE zL11y!1Lym7_W(!^*fcx;V?59X{EzVfUeKKmAfN%j+5i!1iQzgD3^v2Nb{L`@Nb*43 z`lCnFV;*z;P#p~(fot^qkYo)!V-^MAw``53`gQ+tc{a}jifRylr#mlGOS@0pD{Pv6Kr6!}K`uv++x`!z*$b5$}wG!n3 z84O(hz=p;Otp=kb;eDw;17$617NUL*FKn92Hot7|AzHlVs1ZqcLnG}#bbxkZuB54K zXtGavDxC#hrB$8{MCiGs8?sZv1?>QL-eS0K??)62>MqK6ZmDAy3{Y}LH`0XKp^EVU zY5$rKd4lpK8@g{9L8|3t`YOfbtX$N}e?`K`FLi)bXoOr;9s29WyDBzm3~)b0Qn6tT zkoPeradPGe<9YWmftNCRXwsC0+d7~Q<=q}!xpBU{9oY%qx#PG_-#K)A=L(fnkgqq= z@l!<%eH~~j!EtPi2|K__C`Xo%EU>r+Lb|;oD96OYChb_5Z|_UL&#cwgK(TD z1AXPU*5-qNE+=X!P^%}z?F@7ss&NK4#5Yas7m#Y6ZlVu zWCG-51)xfk_LpYRW$kxg2RSrBj!u*Le-@1W?!zF5sL0W3zqkE=7G7i+yUhJ>xxx2i z10)k^Mz-g@o2n6-|#;VZ1V6R zuu2IYhNm~=M9TNLYvgII$=83GvOD0-)e~o-FwxA*n=@XfWBBf>d1Fa`&A+}vTbn|* z(D~DT^9}4h#NiDEEsTE@Vt&DK1~x39DXA+0Mc82QKDVpUu~s0b74ykxX?O7N-@sNU zK?`T*soTIdJdm4SIGc_?W^d#>y-UY;Vj^dLo?f)@`QEL5Uk$ZcLL%8hme{Q}t5=P- zID&uN82FW`%37NIT$Op3qe)d$yv1>qYMkXavcA2EQ#yD{6dNYJ!xbb5*Tc28&zamRjK!H#k4tz1#BEQstj*kK+7_TR^Hr zNB>F=XX!il_mUtS@*@g!I;TpCWr|S!g2^4)31bbonNvt#Z+<`)nUw|9*>9%swc@>@ zaG^A=GrjzHo^?#bZ^&m=2#pAW7+^^N#loOs@1Q4sJB6OjniDRTx=l3sk`w|=_uMP@%= zz?TkUXv@&p^|@Snj)B;Ct;^U+2;Ms+xryWKy1PY0=gTAjq5TW8q37Em8PYF zV7{Q|^^xx1HcPirmYABmG;(})&s!05KJ{a;Ai4+(s6c-tA=F^n)k#`A!FC-N@ zd)`@V1045lz?Wx6VTngDFmVr!43=vXSO;Tn7xKeCLlR4*yBFB}cfB;MS8c)Yc`2?zg+g%;|!I~WEg{@icU>c$rz${9aojt__Z|wZYn&FNbhunZebZMbXNy+(cnJVCZ3diGsn;avryF=}-5u18|>T)#dRfXq)R8rVv zWdKdc+U_$rZlO9QsTNqu>_X}-zTqxvw9R%IF#VqI$lr<6hWv34mXo$V`U#0Gl3s$Q zT!>uD)nW3tDo6w8zMX9lr7$Dnmr0myp1Chmx?g=0>LwV4LAA4IUOnt|te>~If-^6b z&ln-QW5{?!ch^X&-+-~-MJs+ z!jmc2NjJFDLm(6CJJx(0`IMm(kAD?4Al8&NQd0fW$V3;jJ%2QV`W#OD%}Fv1srS|u zY}at^CqAr1^?)>%zms$#a=U|E#3nFRgWEkaCPgIdytJ$N6qx-mva`eR!N5N{Sz#3b zQm6yAxUS>h`Z=D%$DTEypn^%9Sr>9t#;syCw4KGS+m$!|0dlUUENgpfs`JB|z?}f8 zf5D7v>dN-qHA5qs2NbG})F(tF|hdL4@fIOWs=b8QvjZ@o}C)0xkOg#^h0CRl9TYM6guoD3@S zh6-FH2dm81dJgE%Ac~+LCx%6h{dazpYGFwOFKL3QTw8f*%kOYjBeJ;kXYe8+mxWE2bl(dO|jBI9ei^sw~eaab3kMbFSf1Fi8usbB1Mi!JSb+(zyO0tXSqENFP9M z-Rp(wVkc?OReHgHc|1w8!2S836|0NYR69ZpKh8JJ3eRkhZq>^*+6Vo~dkv>i)y+WV zVC4mK#RqsLol7Np+J$p*M}PT0jLI;7Pn9}dcxt!ghB=|*M(OSr1$so~pcYFU6&d@= zcCkOS<>Z>r<|USIm68>eOcy;B5SL5mw<#(&LxknOzE$8T+w+xd3pAnT%DEeKS-!Ev zchz*Mi|cabGxjx_$))Z!k}jb?1$Ei3t9f4v1{hRB+s#1SMq5$#4<`n?eAQHrs zAWR8eOFdh|BkT!wW zmR49SYS3kx;Rm#A=w#;1rkqe+wCk_91zxAXk~=Sh77PS$ zrAq4bXcxs+=3@3d=5`Fx|*6k;#ils+Jwdq zW#7}h-Vv#XXPK;og{tq$g@ccCqKgS!JwpVC z46KBOS8N!})j*U0UPm7h0>^s8_=`JkEt!xXrxLrxq@b5RKrMP-H>UkJ?Y) z4a}?^2EoLl1ohB$MI4^k+(vnCDtDHR9|2;PCr=+JVX<%n9i_H)Q`1P!3KfET48^zT z(PhbORmW8m^73db_~*C3KG5(AeHGIY6cx@N+biM*{a#XqL6la1QbMfU9{jc`A&av= z$_W|EVx?}LnPhP?E1C;3V+$=?edhrFBRTn&r3q8G$=-{QyL{nR6+`wlz^&Jk@+9XF zq2kO&MBZT~2({b7HElWF+Be#&Q>Ek5=~`v_TK$5V()HAckfYaZ<7e|kAB;#xJ?Pj) zn^_4&x5DMJq^=JT&2J4+pHz;6T(N03G=H(Jjk=Z0W|$lrZ4NwMAnKURsao$YbEofU12*W(A!u z4>l4c0vb4_3JMKku?~IU&n|;b4;Oy;BDzJ5usZO?1_h2!-9UWB#0CYro6^Jk_!2zZ zmGh_SG-c7X(*nU3HQJ9zXWEgr+;|!Y`eJ<<&48V8r7{`C>e<1{s0Kv%0pWLm513sq z=Xo75m%`F8BYt&FI;fR&+)~j%cMCClD^MR=#|?W>WxbIN(m!f9`V|+(s;p(_uq=zc z;t?805C?;z_Qw|@oPyGY%a#ZYTx1;jAHnh!33)Z$QayJ*m17GZ}6{q6(u|myGz)_ zbAJTwNu*yP4Nzj&i7R6|+D_(73yl3ed0pLkYL}=Kt?JDqC`XDP8b*7g9L%~fUgvaP zkKE~##N>G^Twkv7eMZUgEjfq>o2jBTvxt>e{9I*=x-XMD08w( z>^Da|;_rtay~WVH5Mg8>6gul2FAjW%{c#byhhF%-h!mBbIM)A!`^gS*L*9?!80X*A zF7a0odk`SU+RVHPJNiUu7RuC3JQ5LZsMe(*gxCG&f&S-V_D8rAdi;waNQmqq2Xf;^ zsLE6GTHVxs5ar$=8Tr(h$siioq__^{A#uIAPG3dBR{x>&x|2IU`u=nyMV19xW7U zTe$!y$SOSO8=vJagw;@|5`uwnjXLqeSBnipJWZkYnthxRKPr&8g2#%r+ULi31gxbP z8X##aXi!y4*0g1r*(&qM$o|>fT085?UYclKKxD*AXr$9oV=WtKjex1nT&_GRyd63^hkXST?JfD zv_1CAsKZjo=~!u(lw(oI!O$&Wsp&2+^scbpjMsLCix$?QfX;;g5QGIdNd_n|TMEE1 zRr+g=CYpPKkzRU%4Yq-lyOagm{QtP0s@HSyBOylb5E@EYf}Fh}PLM2<J`j4s+L-O2ZUYH;vyrX@k@vMO z8Pm0l;2StuWK{pog)=GeqaU*XNg8d}%=O|9N(>eykvK)1xSkJik%T67g6lhcdB-1& zjZh}{iC_>qb2s~O6QsYXob7m?STa$#oo>INa+dki5noP!&!{*@f2>%rTEbR~Bsxv% z%~#`Xo!8?bUhWpe^!m=B>_Kgj+41&Jyd!BTosd=2-z>S+A%5(7bDhhb?s!?99>G*I z-PYi}v1Mz=_(cbW-D@FRjS487iU6rzzYZI*e;~u|OBHR(vC}(#>eOioy-^~E;Cu(% zIl8Pz{u2#BEs6hEQ~5c^5Ga6D>k>=IOCv`rVVRk?Kl%idClmUuk_5QPK4l&_dxtF> zZ;n1yI+Af46RJKE|J}IDSRj6EfeyB_k_U|HnAtLwCj4#zd55D4xcr=Je!1qg%?V>Z zhWE-4E}lCdyIs1 z1w&7qJ;XW|Zkw+R+^vUwS=;JKY`jb#x+1CoRnc3KdFXb@T9b`W;TZ%ucI12I3_Ulr z+`Ct%=1d=W(T5GI{H?TQ{ihpFaO#ero@H@*VPH%fonw$SVS0I(*1v)y2c%TDQ2W}| z#;YY$)>dde3pYhR0qIFglV@__g?h{=3@P2)R`BG};2cU|W}Xj2i=lziG&!Nsp%y(} zqP^i;dPBOVExcPzn|4B$y5elH6NRZ`C@OtW(#={WHD%>=uTuX*5(V(R-q>5%Zi!o@ z)4f$^!Uhw4PMB&C=#v*ILgfZJGg3MoieQLNcV}DaZS~Sqa?r^BMN0qE z#!=}2R$GZYOaVG;rTIiV?5d^&*Iv%MAO$yhp^DA333TLqHyKV+ZhRL-f@$!tuE7m~ zb}~!W0S@fo&nlUZdU4#R2YZpg)#}bw|Ko`2xZ|kMQr(lKa59vzmyr_^_P6GcCSq$# zO7OYu&PZ)bjl|9I>~@*9Ep8VM*(yj7?i%3KAPz2Dwa7hfof%_LQ@Xi^(w73mY~5t@3iVL)i{Me) zNHf{cS+~6e-TDfJ)MGm7)FP1Zyu#MdGh%rvd1NPA^vUa?JHhMyZ%98a=KKW*xSjZ; z`cFL9g{u*8`>-~qahq(*dVBc@u^u9POOEbgT=kk7oLG^bK{|VyoWp$kxy%5LG*G9= z+!Fu&GDs6Wl0-JseO-*_4^a^#OcIW_ji&bs>ib4mk8x>m3Gi-StoZ=cG8}Rmbd=LIur>wZ(1cj~0|=XGA( zM$GV_V>F1K_@=nFWsbzlf}gV2zh($l6DGr8B3YJ@@q?SiBU=>F5O+fbrLz$L-gYd7 z{a?P>#BAr25N|r6035hd#a!QJ@xKB7_`bKqW9W7P1|)v!+4x3MAc)JIkwoxb_t#9g z5{#v+-A0zXX+}kVg2Su7*vLTM-k6S~N2v@3hd$HK@z`?EZJv9{yTYC%TX444g<&M0 zr3O7=W7wF}Ib42U92oO|C&2o@eHeHN8Qu_K!unL_G~QrekqYYE=T_?s1-ma&n_pKq|I$qA_$wmXmq%`MTfJDBq6%Thjvfg z0n>%oggZ1H(_!6kE|$=_zQeJG+o%8lE$w&5V-n zNfPZXdLOSRhLU2)AHCsbqatKjkU1y^(f?2mrXBE%BA+K%!uwb-+G?mHxv$K{eszI5 zs*X@ZgG>w$RfIe;P;2sl)8l{E>uAu!B0OiR8WS%>np2W`eD{=wF^wjhSNn;gaUoB7 zYnQ2m?mXp|N{JkDFJET28xP_20!WPNJMJZ0)5hq??#)roYeNy81Q^8NtrNDhps`sc zFw{jvp$Vwe4vEm~44qxi)e)I8A{I@5DJL=WMXX%KATWZecmAcp*+tNzcHmx9Ur#!B zuO~X9``wPg4rvnsk!Xh<`TXW?>7g>0BJvK}CW(^Jb>k6H9z6wlUllI6pkMXqP6Xi<6?~j~(StrjTE3`1_3i z1#Li*zZ3a_sAych>gTznM|2w}IZtEBfq&fyxv~6pUHJug1udSd?0E?gNv~c3!d^v4 zE)kL|16%>JBu|F8UJea1v>;@IB&6Uu;r3RR6HZIwQt2=UiJxIgxZXMw!SxDC{}v@x zsr4IQ?5G1N$5X5j=i;%-yEM}0FLuppwfpwBzK|USI9F;V8oYzcNFyXeN5rZ$8@jgT ze-_dURqJVawUl`zCkB#p7S#~9bd^t0Tvsf&S;_$7iLz8A66l09M|L{`%uH?+&$-s< z+laSW#=hh}7@XV%>Y;u5A9jsgv!H)rkuXrXvqsOcVJ}GShyn3Dan*CVm9Bl+{*sn& zYe8~m<`%R&VqU?<>Qh54x^CB<5NhFZCZ>TB)8=GO5Xl4on@i^%qtlaVFz-4jqStiH$)xB{ zn@OeY^U0>B@8ZWr-IlZ=$t)ysRX0f6RUINV$Q@fY5udQ*g3zo9$HC3WbFnr9Qw)WY zE!tf63qt={*qG9+AqgfBgdVEFal1xHd^v|h?61H-W1ofM%%viY@R7_UM-EaV+>!q$ z(tYxC_%m@*P%@4HX7mIaj68SxW|dUQ&YvUrVu`?;k(i)>v^r_&UjTxP(;{1mK%kY; zpM3CPm9t(Yxqo-zg-=Q&EXfulB3f z=qGjagLW(*+pG9D>2)y6@&aLt{o9Eu<^3Bcxc(os%Q=yG|9@}2*_)`r)$IVHnK7Hr zU2K2Ds;G~6%bf+&7nkrL8GGX5$-?R8NE?%7l4?p$2|#2ZbmgFhz}P0oI^cCysR=RT zwt*US=M8>@*2A5LEvO#ZgwdLqf?0MvbN#V5d~vxE^tg;RW@Gf8dt(posLw|3?K4>> zg5yy2JYh931kjb>hmLnYnLS!&tAK&8as`mvn`{Er5y#Iw$sBPr4el2>u5DGC1sy71 zZ4yb^6v2@G)I0U=gP-2oEE8rg7xX6Hz`yYk-xKELXgTwaDaA|oZJ^GssZ zjS?*+xfhY}Xsp~!SX{J;LPyohS$)3eIQ{n}A=Z~x$|QkT7m%EwRT zMO3boKW>&65x>Ip$F~_&=-OuyK;w)85Wlrfx81S3{f4dFuOuM05Y8vaL`dMgEw8l? zMbEI$E?qWahLxgc_~o<;vxH+&5mP+GOu5t)_xKbIo!u7lb&GkQE$IBVm~TqrOQ(X@ zMDl85enZ%)0y_^O=yvVIk2 zU$f!yK;;U=2`YVBedcPD0V?n+!xz$C!kG(1syU~K7e7;HTFKiD7f=_!O5B@I-%hLD zvJ+b=nYPkxe@$#eg7N5)_Jkww&Z^Cxo$5@= zoVHtiyCwUk_DP^Twyh?>JC}C%+)k?HT(x@bE)uA*>OH%E)k*L;6d_{uFeZ~QEJC-x zCZJ6z(qgUOy~;uwY6PtYv^+2DDiZXo=%fF=sf@kPr;Ca-Zo5vsTm9N-ou~MFQiufH zv(jC);gdFo5G*{EZ^Fspk7JgIX9EcQlb zui5CuKeik47*89mx>Id_NkqLARRnkLXqo4){wBy-u}e3pKtqDfw%O zAie4r*x1-BpS^yUlOM|4FeKG0^!%y;pD}|*pnV6;vro90HikYp(&u0T>IKn4=m7fd z4s-EkV=N2BP5Z2$R!;V}o+I`f&6dc=Z{#0MEl7uT*65p7I|D@l+smc?5G`3zqikP4TQ~uOweIZ=l1-+Ghtv4=uEyNIn=F*MMNP;*<3aACKG@- zy;hI!rc2@=@o90jx5Xbn*NwfmSnph}nD&Zf9MQ_w7X}0!D;mmE_ntrYC)T8WR=sK_ z@!*=6hz){kfi~Tkv*wmqQD!S7^-j?iO^TAcN3y{f0TOKX>=8JH)^yLB5tV|JIm_S~ zGL;@9vX&(SOVrG1d2$EqT?uqojCKsII8WaJ2u!*}jrR-+U>1o0hEA{D?04YL@?pHG zi^lnd-D685gF-U!Tk`?4ihSOgT_8v%Fk1b6O^e?aQK|5Tj|$EJFKSo;|R#o^}@K)v6u4 zE(H6^M_%#7n>+^Gi;Q0JtRTnvu3JMUFoH_lYg~4O6O0H2TPr$c#am+qx=MnoELI_( zbrrY(NLUC_xvnFCqalmghT`T~`ch>!&A^xNt1@#!m93WDS zt>ej^m>cn9T@+x6LJPm%%`YuZ+x74HYY|(LV8c-jxg9XHVr#0=;#KyAQ`HnIG?&O$ ztcg7hdNcN^bYqmBA*9=s45rAqc@c|OpLk-;c_-qDAQsI;vDm<2Ok!Re;1|U*s=GFf znQV+rFtoaImDEevjj4Smc9(=(QB4_UH$pwJg#^n*ZcBvJTJAkdsx7I_xwUoD6gz2~ z9K>;r6tlDdCD@Ur^J3~bQeQJsPDOR#$g4j9Z0T}Vn*}N@2^4Mhs?#x;u_(l^I+%AABhj-?HbXLqx%ZQQ+bQDb9cztjWL6DN z@QsXxx9Gdm2JNc-?K``|D|QgzsoIP6V&O9uTux(wCv4Ef+hsZ*%z`OwHJ0*&Dz>|D z0cKHuT1X8-0`LYJ@aTs$FM{t{?z%Py!h>5EYzqkyDO@QgT;m z9i7P<6Szo}9F~9&jB@fj?byGGn8EvpRoZ20-~z-Cex%ga5L~97A;~SHN^znmbfzJD zI-o%2QmLfC0{inttzc+2b;scd$!Q0vpuZlS2%W69g*|BTN{>F##Y)l6Xcd)n;UHE) z)W8+2=*dGZA(=QBg`UC)DT|r&8%#Ew`RIQ^ucbh1LWQM828BS&09>3;lx0Q7O$P;Q zORPy2C6<*+&9X7JbKrXwOC?LxEhJSpgp>q={8=9?h%oeS)m9wUQJN#Z|| zwuBXHuJ@r+8)nwxLn<;3E^tSjzfdiZk*RB4Q;jo;g;+}9 zE<7{%ACX2D3(*s{st12|$5@B*1tmJ6oLrw8j}fHu+#vH0LW7*hLmVDKnfc(5X{VlcWp-g4Iu*=ksE`Q* z26>VKW>)3gWGI7U3?eJqfyC zkv#w@BJ^0-{&+~j0gCE^n8eg62qeV(84CmiW{W8MN!XugArSggbiTq|<7>*Owu{Td z$DRA|_Gej;rPvVoNi-Kl*Ef=F2sbd0H}`}e(MCk7kvYb0K=7hxVOgIPeLHqmWMyQk z)J(c_jDPry$kbK6hD_WazSkwSsfeYo);`@OrS@Qy z;uc5S8^Rs}&@`n2;lpQ;;vD97g%3CBvFM<@o_E_<9rECz9CP09Ttz7~zIB?7S_7v* z_^@yvurDU}0lHEFeY6|7xVCrW~sH~>FMEm zD?3rg7jFtrMOrO#BB-&uc9Znmg=MHGDF+PGZ>tF^g^Rq+$#gDdz*SrY3=+WcEG{Go z5WEm&4cW7vp$TmY%T>P=ZS;;18%ieCCBqkvG#=)AXkwd0!J~dF+ zDQ3qZesDu8AV?%r!amvj`2(fKXA6ox+KAv{quN z*?+c{U?fjb;nX@_FSW!BO4~y!)%DmQ_b*MG<`1crKc7NfE-Z`ZvKn=K>YGTP1pn_m z>O&15PwVV-YDA@{u^gDb^SsHFiuu+XEh%hiymx0{g&cw*ao~m?l7;B_3eFJVFfo}1 zKm8#wN!G0!-y02$3=QSYurx?f1shF4$*DfiLhA+(`BvG+SQm7m0-H%A8X01+sHX0N zKfcYqKdsQbkaK_HQ{6y1;F87Pg)FboY>*4f8;RV6C?*55v^N^j?cRtAE3_Bn*cqfL zJ_m9bnQt&H(2ih4h!vU%@)811ZUd9>k3czoBVQcZhA!FqS^E~4Q8|8-kSQicQb41 zj&D6{fTWbsZROJ(+n?K2vXYA;n|d9VJb!9(7A|IIj#CxnM@B#ERH@Yxiye<7(By}*OtXfk{wxAHV6 z@;GreTg+*4@~@UGPje_wAq#(MV1wy{pENMOcJXHOi4iR}<>>B6v)o)Nkh`CPFTX0A zadhAG>n%BNmkAZnex6SoTlvvFSsQ~VJ@U{>#>J+ROG>u25|Wvm@b^luBr_tJsV63t zZ*ZYS9Qwgm+=yIHV+x3G{=!>08%YY1&nc%_2Ghdm;Ij9`H}}uRB!jbIWs{-r&qkgR z;#Yp)mpomR)LnU%0Xq8)q)U`%%z!w-#2R@wdCg>dn{l{bvzd&?dtPQgyNo8*-d$bSDE0dX5DBt z`i*K6UQEtA?WiiAciLo;zU2JrO@k11kcJkV@MYitJb-7mJHNkor;pd(2s2`i`c-L%7-*k$YMP_SFd&L4+JD6C;dw4>-kcf}p89(5#N zgw#p?j@}uGD=JBr=!vEG3B$Q({pIk;P)_r(tfTo@?rH@cVPj0}X9XPvQ%yfPJ9;9OMtCnB>tnTc-3CZAttP2< z8sdIlyMPFgMgI#a8F3;StlP1_o=Uw-nhpB696Hd)ycj_rWTc=Ex$$yugbtptA$saM z+jLMJ4y_?^K892!koE&l#>CbMmY#Z}*J;$r3A{j4!ezhSXK6Li@1j{jJ?Ed+5J0U8 zMurmotM|PHpp@1)^N$DW?IH;5)!O81^gOt+J2!5V8$HB1tp|&pYFES@`mpL(z3RpAbYZ-C($SG`SR_xq)|T>I|2fk_!>zzZ$c8hZ~?x&@;C z&M@f=Z2eoz{|Tt&t3mgGeKzLLg7M74X)ZQtY3#{M!z8zbl-eSBk!Z0EA~}bWx7hMUT;buV&2s@lmjwNmf7BxFS8g%#YL7I-E|eg&vl)tGf!V- z3UtyM1NL(w?C@t@gm3ctQVLhKx=tIdI;7w;xS9rMG>Fz9nHh2NJjhH(tOBMfX|{1a zML3LfHmBaMT|tIi=c;RPk%oZani-Pmy|?b?A@*@XheDi<`(H=1e}j@wA3gwwY|_d~ zQSSI{8)~FmIXJ+O^a{1tsn%@1u!=$Wx2D0RzKv5S!hvJ=*C@pJ{+kg#SEzF3#^^sdyuTOm2jGPd5f}5R*duyiLA3Ql0BmP74bmZBhI&J*4 zL^I0fS=7Srw+$Sf!KcF;-g>YfVWs&R?5swZJ=`43Hbfy=E*OvSLaTvn^loN5caRf# zL3Dn6A?PIDG(E?3!P8BgUE$q%?$Dc>ZR1CqgHmZ5m!45t5qi;F+h+{}#;wk0!Hpjw z_`x5}?#%Fe`~vYyasc^E$|-hu&xPX+Iy*fDjtvpq=h)4K+zmQN86p>M+VJD>OCa~M(d&W2TsKKC z>yL-v%W*r0JXU^a-TPsPZw6A%`o*EK$Z6Z(oPM|3>YdqL=kw>&W}Cd0WWZeTNZ<|P zXLM4>6)p0933>G-^_0Gum^iDVMU_7Ll;iSd&Z*J*Ld>7|UFn?DDmGTN$Z6FZmkwI5 zNG#MYoG+j4?>T2yY~<(4X4bPWt2t*@Y&2z|f(90r(`cp6N-(#McYch62d?3^C*gbk zNB?n>dL%0z1ML(a5!B!3?s(?U9%+Wh_m+Df%*QkOr}bv&O}z2Y<6quJRa*f( z9rxZE2iU>?y|ufG{Sy1$;BM^yWA0&O_+$FC4;@;s+Og_h_+u7KtoF@~Kk%%^c;?-b zCr+$4^>*WJaRh@t@r4?su?)Qszim?bWT9Tf$GiZ{yj^lNMV`sS=H+Q9q_@OhvWvn8<^uSLe%C*AD6fpRlH{2z0r>2!ZsSJD2)H(udWkw`d2?3<|~3a@VN832iuj=nO^y z>fdB|{G?LT{$e+K4vV!btpIc<50T;sb#N{fr4sszU2?@A+=}(%$2Ah^ zw464CA9>@lP>}reeY{vJbS&x{fAMj_gMCccO0z^&tk_S&Jc$kI1J^+K%YRs??Szl_ z*Z6Hzd`BNKKHSsOHsSfpp*tOtQSD~dEiX~GvP9jzCF<@kQTJepx`#{D{kTNkqb2Gd zr`5$Qhq?FKLrR2axf9T1Blg4A%)~xmF`(+ChqOM1s+LmuWWl!k-l73{puwYsIhcpJfHgQ$h)Q(4%g(Ao;!pP*b1y3#vH`ZKGr7<~T;0GuDp@$&gnM|s< zimlAz&A`a9h79vW8j|&J=Z&#c(8Hsai6Ilvi{DuOgs5=q;{*^PQcG|x2lpCEPrQ*R9g`<0esVsAsG%!K}6DcW)e*c$VwEE(- z9pC~oHZ33??Bh5hlzyk7OG?)rc^8>B#hbxt3f@PQj!NDD!{cAyMm?ZXTtf|cBRvGZ zgG;eev>UJG&%FDTT2L(GWPTk-iHMVE9cihTAsfhHfJ=v5vWwJ(_Hkug*Bw75QYv{A zlw_imT1<{cqv0*E5hYXfR^o-kne>fh4te4>pzodn-8qIaMP>iII))xg`fiK@sy zN}!Q~DS*1-8i%a^_dip+|EcT#XVg7?4HZhMS{ckumPAHkmJQ|8eM8y9y$Of6hnJl#?B5i7)y@t&XtGQf_$X2xHMmi9gaMk5j}EYIpEX*xHIN$GCFh>O z$aAOC-6bt(oJIG#^c_X2b}}XE&Kvx&2*A*rO@l{oXt_h5^oiRBK}tOsSX(%t(Z{lZ zREdsXjmr+c@;VpKYrsQd&eh7s4@iE!1;r(n10 zjk8??a!@1*Q%W5k8=QV%Y*?tYCJc#yc%v{HpKv>WLKFww7)eJ6bm!{{F`pBl<1Vcl zO$@DVOnPqrrAJKI`b0M7=3$kQ$w+F|X4AT~`xouH0F7}&`ILQ&jQ}GSuOU7y$*n5K5qhr3Tp& zhJjC~j+UH2ICQ+xQ7-twajTU&F=oW|2{XDrg1<+S+PxK)imj66oj|l}a zj&J5;^5zaf4|s50RC`Xf)^B{V={8H3in`blCFj#I7QBL631vax1MzcQh+;}wk()FA z%y)2JQ`%$u<1vW;mtvf6afP`llzXb`UD+$)Uy-*Ibl9|+&c@SfIY|Ct95O= z#V54qxRc4qA7Jk^C%TVk3rOSzxWK~p0(5u;1$iiTDye7;UZdBg!cV5$wH1oy5>Y zL4B88#*RM{r!mr>)}Jhr#PDqwzgw_-BuHht`{O=;nRL2PmqLf)Hl4BrZ$({$YKq#0 z$bljw$%%eoF|Oqz$&g>=@vyD}ad=v$He%;YM#d~7C#;Z}4l^}Qrh_x-kc;6+f23TQ zs6peJF@00B$5Y6kzW0FBpCm~K%L4t-p+bvJG66CssS+SH$}dK2I=VFo*PuI&aJo1E zv0bD*GIs~>elntu+@m!t5`;TJD3AkpY+b|MDfo)`W9Cf-r{C$%NHJE{Lqr^mNCVPv z4xLY72NjOL=tBZs%xGdx4`~7D&La{n%;+E}C^am$dxGC@gWcPJ7-u4$NPMlBiO>qF zl5j3?_zh5k06;3g`_uJD*sOO#9h9{TKV!)o>{@gsixXwucX&=0cI`8Bk#6*?R=aP} zgyVYQ8qFF+Yo1vvP=uyJ14)uETkK_{p&*?+()_{A+wNmGZ}7sk&bsYO?B-2!Koxro zh#YyS+DvFlgEXk~WWv7YJ5 zrdd{;tm?OU3-I~{q7S^wSm!Pp)n@xVX>5H7 ziVTt8kRy^y_w~d}3F?l5U}Cv56&fyt1JyAe;2-WhB*sB$V=fLc^az=6J`X_rXivZ&1QgET#8D_t``E1X*?VoMSIBrgs}KlX^P zbsK%V+o&d^9l!{>Sx^A?grbg$)I%eqJL1-3*B!K=sGI4tz6R((1v=0G z9jZWw8laCV&_@l>kqUIA0XkNJjs>y{zEuQB2@;7(BTf-jCP_ZvyZTDyq)O$KN|mHa zm6S?*NtO0eD(xp#+E1x;kW}d)rP5(irNfj;ACoG5OsRB~ROu+C(s5FyV`0mgCB&)= zg5d0`g`aMrq7?@kvAFntn>h1{`fqF(Z3wP}G-N4Kb!M@RgjT^qRtD!)m^_twAij^S zy8TV4rV)TbB~36DuOxXjvRY}os}dt6&kehuDSLxbL7tsjK^5(^vN}JtnkEWMJ42x! zd1Fw(5>^T0KPPcLhA}|R#+fM8Mj(E>hma>VQchqK0r9nAu)96YXb{leF0}{r zzVD!Ys$0VY#D*%SDG*Dq_sd~?FJ^X#Sz^TN5=CjCmm>=MMqe3+if|$mM&I?aTI`yt zu1t9-NEMH?|H>x|*zvtZc+9G{>ag-_S4~I*i?@60gT;3KVh;nV8~DGv_mh7U0vn_w z0&y{6-u>8bjj$j@dLy>g2ty323PQ=7d{8JIhyNc?V#Z;GVv2(-YgzOq9`dE2Eye#s-HZ# z9Wrmr`-f~O0)LLE3G|cF#GOC%9HOU32dX>`3gb5Zt< z+K>F|5tEV5Mf&m12{4xOUPq78{lrd$z-GeNU{^N_;`bYU@Ci#Z7dY^mV5lSsE~2sJhXl&X>P{calKR zbae420Z*`-ZuCQ)Zb?RV1eL%GQrw>~{xFV3Vnh=w#OB77Xz2^AcV1q_~I|brW*eJ@$SHp_F95VggT`mpTHSJP_|N zg4Sz_P~$oj#32hxl!Rk$p;hr3!5CUQu5bB95U~;dDcN@V+gnW(- zGEuvJFGD0yUo}~azH&7C0)Qyp%F6Y7@uMD9dL&7Ou?SCDlHX2w%&>6ILi?yL7X;Ef z$#}WXE!8)4z$tnMWlH^)pWyMhw4NX=$tAaADav2jit}v33va(7(a59qZ+KwXTWO~0 z+ilK`)@X~3Z?4!{khZrP?y3g+>B2kdvU{lU?kVqol5eNh+$6S0*R_<2Nhb)%0@Rk2 z6H6+IC3}e_`-vq7i6w`LB_9(@juK0bg~hEErY{sF3-28(axB>UWL-k;L9ihA+vxLU zwbgIbh>f{eOCsb(QA5q~|9;ZPo5wAS4@w+%l7)+Ieh;qRuBhxiBx~ihM~9T0lY&I2 z4ubnhFvhW9IF63B642n+nSam4O5F4)$~QVp-k=PQ1ODNrXFm0`gCdP6bBlsWv+Rb{ zFW&M>2gh$pKi<;UpzwBp^9d6dHEIt7yFBdTH;`FV>juwE;lxTC&t?}lkSh8QH56hm zg~(lCBxLlWB3(sWLVG(rzXPk8iP8w0N@T9EnQ?X*`jAv);3@WuSSYZ|RT`yH)*>|= zL13~!wyqy%VCNZnvT8vCI;mbm{q>|o5}=?#P#&CG-eXlwc2}X?KspjFsg{~QBElTE z-lbqSrJX33MshnUdE>1>q7CwMl62gOG&U&@22t2zNi$@&|3N^I*J{aGEr? zL4?Qz?U^bSv7{I>I;0{a>I@RdBe!HipFx~J%!nGx@rD{!tj> z{;>kYy|bns3H~RW6>-(W=@1OCih7aaoD{EEK~Tl2LPt>d&E8vHz0v9`fl`TQ+gR5P zrKZdqvQwF0FN!UG)##%?RYyh%K;iY=N2rq%5Ya0yDMJaIGQ{vA^zp{OMSBMWUT&{T z-083i1LsI@a0h#Kj95@O#(Ab=#WKoR`kGzkn~+1svaZm|3ehGu3dm#W(KKlg3EJo; zBNqw55VlXv-C!&SP|O7pe`R-oq<*eFhUz-Gwv)L2BW`*WGqAZ}wT>}nuisTzQ-lmA zA&0D=^#z;*CO<0-qC~0U`<$!=CQ2QA8;862`&G3STWiUaXrY6U%nq5d0r68fzt{1T zW$8N&n~hAcH5GiM6eLZ_Kt4s0Rt3~2pG6MBaiNptib zXE-yav$)wKh9<&|^a2r`Ng&h2dwdU!tCmXT3cV#5XPN1gxa?BME$NBJ&1O+90Eu=vhQ#GR+PVsvf)?Da?p5 zP^e)>kAX^%WRl24LFh^)ii~l3Ec4+RHhgR&Ub7ygVhbbGWBI}4Trg&tvm!EQP~jg> zPKAFgM1|NXq<9*r6tS#6Mn8UX{FgV3h(L4su~FhTTEI7fbi&#aQpq`Y-e~fsLLZkH z@0u zW%bZ07|<=k6d@Vz9XBxa2B|kdRHqbMU{eq`)l?qgZawd;H`Y$sdYj21v>iBvuuaCY zlpSeT2Ac*C5*Rz9?P^-XD=H_=@J4Exm-~qRmBkQ*iZ?OBSj^)o3`@Glx!g*Xp-wdtSY%n z#@|Ef)RBfoTF%Kv#t&4<=wd;pHyp zNs?&uM2X+<$3Jn71%eobOtfZ{JrjE|MQL`WmWKYlbMJ@ukc5im9+qhi7(S8n^!~1H zCBk5F%1_iIs+Qalx0#6@(KM(u1ujiYD_(7qg3yEaa%Yjp(lrn1KhCOuXqVDcJ}s=9zi~3$ER5RUs5e^#nnRhFpyw&+S^{ zvf6ZdcBk5{_Sp>~sfXVol=D83lzZ&wgyBg-DiW3Ra7u8BekqY7tE{Kt?_50raAH7Z z=2N7H%(i9EzzHr7Wg+`P@dg!7SA&Ho=pK1)R+j znilg=b3mjOB4AJ9w;mX;-N`P;$&d3qn}?9SImg(`MODce(n{zAz0E z6NdL2*0xNB*HyKgtRyK2mXewR;N+hAii8M

    oL92wwlvIIq z;eq}X!Q)$VdtV%S6z;*!tSdHww?0M`sbikGhRB(TM;)Tg=(Wv z*YnUCk-DC2mU{sxsjkq!m0LyrSULTXxTnE1vn|C*uuRVnw$F|}|?oIB}%%CHH zFe=k%Tf|K5hKKK|7}=!99KdN3GJ^cE;2r7AXnD?=`#`)W|p~Gr$U{=8Asa zJj@dToOhC2c5t+7PS9=M!ykSmA{;NBiJb zisvYuzTEN7?)yg%{e$z&1E%32zPu~y&_&)!richB=-um2Y@}|X{d&bPZVF(tC}1|M z(jlc4g5b}#tPoylbeVIBG{6}+qlN~`!f>=HuVBq#1G1lE9p*Y>Gi18+DB7jp8Q1S{ zP%=%GNEFC)78R25h5qY4dS408g#a)r)izu@@f(>h!P$cznPHG>ExXbD8|=hc2CL|S zzUlabWFh4o!Gn5(_s3z3B%WdJ;+JKbD_(%SU&{lDl|Iz+39YTX0FQkrE72u#>T<00 zXu9X@>O#jj$Tl~?U$}ngUH!*rCyo)b#9ijcC3L)qKvk5-gCyaH%TR$-3+O79>uAO3 zMdXQmllA~dGHimbBxAg93!jo>&7?HJo;@4~K{u3MEj`tqxEkF1McnvdW&RPNVMWG5 z1Ld8DorbxhqnDU3V=##`@BIR5K zdnG=~4gs(^H1ZtUZ#4|cT$w~=q-u9!9VfbPZ3MN{ZIwtgR}1_RVudL zwdhU@cbx8a*yrx(UT)dI8IEy#&x77+53@Q)0@w>sC}YV;G@lP9WU~-bz9#PyS|ezq z3VF;wh!#mZmH#?y4ItiLvEf)SD&1 zyKg=AOAEO2&(x1?V^Y~%c93TFLE^Pf726id zDy3Tw?cQz$3TV)o!z-FqYGo?L7KD;)lz|aYE3l)Mcc2gOry>UDoxGwT%p* zhf3m`#@B2%9<9&UBM+8*bAW|ghmmWUVfVT5n$8ky7Rs=U*R`Zm;29&*2}LcvN{>=`a*V5^_|sf*Qv^JA_@`}z$}a7+RYhv&+7(W*8s z8Q_7Y|8Jz%SI`E-j972~l_3Dk>U(xIDL5fWpsW7LlKAaw+Bq?tpRl1>`m8aeKdSV1 zH-*MiARA6T|d?1GrOtpOR=!EYV+;uZ}A>^>hl zd~?LL#DxaV6?B%;F7{6Zwt#49aoc}LC_9MYdj@V*a%V9t^Iv?{mL-@(bMyL)ppW!< z27<(ix88=A*4_`HZ1q*VQ24UPMVPg#{Z#Mmjqd{X;SLNMGyTeYy+%urp>D-YvP-3} z*O*5Ck!~#==i6|kuTI9~OYx=y$$0z3<>*=iK-Z(KR~2!Rt7n)HT8>Njt>ztj=}Z!xZmzkhl)igBJKQ}$F&t2B>iF54R?;8>*yE!$1+FWcv#egW6GAt|UWAYlMD!)Q z>Lo=maSYXfic)TNqQ1ZHHmg&}4wI~yWV?_UfA^tSnlF#W+%_-blJ{{%C@iBvi!{Qi z16#t~{tBGx@x}{p{~AX-Iwe=M;Gw;5cXWgmB4qkB<-r(o2>@dXhm6j2#0lYQmO|gVgziuH5c-TPp%Gz^Hxv9YhxeS&cHgAYAeoHqm0ba-wugA9a~%WBC^63Fw|DMoC#hwN=1;`1C`EEdPWt;@^WEud~6K6H%dHMPfkan$VQ ziTP%)=={xyFGzcs$rn6Nyo0`ssZ!m`pCwMl=@#xBY?upt9uLMv6UJIBysfgirjtN8Y$jo*Gdk8EnNhjCn1PU zrIa>>vom5hp|-h4n&K`1cA0tf)ZwBu(1^5!Kx6NbBu!b=PGguT_52@x%uRxS;GGS4 zZ&zP+GvM3hUJd)!pm^CHg%dQQw5x!InOwFquEKFSyE=JEU zuSRY6QzNp8AbFO2qN_EDcXJVwY+>@z9-G_}lJ@XErn%ODz0`oiT_5F>Vd|hm?SHgLFwN(%lG1cgGM)Nr!X` zNOw0#OG|fm4ls1SGq}5Ye|PuY-MjnG?)Nj^>(1xQspp*MoKqT4zuvgY)v%CPD!M1H zRH1E>?c#LA3u=8Lp_idJBx=+79-!T7uGb@Tv-Hh73-+ymXyo#569TDfXCSSLk;`Uc=>jE~0^=Ibg{q+(4_oWkT_n1EQ za(-Ov=$GihjuPC#z9j^6Q$1uvejH}FCc4z0lb78Y%WJfj=Y3zWJHMc;PbWkQ* zR2o1^|CYGw=xifRgm{9p%WeBMtaH5VIKUKBY{S_ds1F}Ng}<;sd4NSLH|>)xW!?_=c~*fKNhZfUmoIGM5Y?5I zrax$yqjGsd5siJfm)FLXg@v8ZmWUx0Obm5vK1X5-wjnsw6_4kvt4{=DbjQ|0FbSW@TV*^}-xyHy3E-yHCyrjf1~P1&$| zbekv_t1QM&ED#!wWagk;U>6stgyAJCv!*K-)7q0oa~qHm61+3Yt1>!O(MPgG8~nH;+EjWP6UI6v!`|9|HH7E$5QY(4 zjdQ(-%H>E^^N{1ta&LB29)ZafTU%jb?P7Yu)TZa73sZ(tB7U*qnZg-60vP2aLtP&w zb7xT#s+VKJ3r|mUeyCpmKq28^J8@TzTOm&{CH_%LTy3j_{ej4?jb!Bx$w}7CI?u&E zy3%s1bH1RGbb|d`(3~QE-V$r*sPctT3?NsUPS`#AY9ZH)lDe&wBLzy-ej!6Rf(Cs z^fGQ{*I{&OOV)PH^^oMH=)MM1#N~9(6tu_6Q~}mx{e@5CRQLxc0ZS;dt7EhtE!Hr{ zL-jp>XPZM73InQc%d`p0z6I5>GpW}i?%O8IRn|#dO0(T`!-w`yG}LDEn;IfdHeEX1Jly2RAKl|lD=&Usz{^Lj5%>Ym?EP%#petoSHdyk!|`Km zMUu4;Ru!zVhBYK5Xmn>y9g-p%i4}Vv|N274@NrD?!`c>ME#=s++wgzzhmAZpcbmds zfG|4^|GkLRp3D}GTG*5YI#uoH;b`XFazjq}m+>_@C<6!g#SU%REJcwmgx_@)SY6vP zv;FU@kO-95FV=4;T(Jkf7PmlihB!oBZYLGsB2T2X5oYxhh$omyD+A2Kbaeo$Dh@n& zm$tfj{F(Imv7|0Dd6<<0Qx4L2DHQH(mA3Y*rZWX1bVZKyyetMnx0vugX~~dXu9l5G zDBb+?P5b0a%lWQ>H_pXBe~a5FZb;7O`b{n(;Wv`!|J_>GQiV7<$)@RWG7MQ;XWKc? z@sH0-LmpWm2FNb}Z&q^nTeqTI`VkeZpe%-OD7W)#8R91&jD(}ZFh@W0R?LXbmKW37 z>XIdc_=d!QTPtFZD7@ZouV`G(0PoFlT0atgX)PR-w7aC6GR@lpL(^N_(RhGF#hj2Z ztr1kvw|3G~Y?kPOfieDVul-QNxfADRH~-_rCHBeQtKHk;Sfm}7*=04Lwog`?;HFU zt)S9=Y}!Qres4NOtxMe#evm_$l-W}*n|wECm2K;U_F2!|vu>Ww$4BAHa5snqiC1uM z?D{pGq&%4L#2(@3G~>2XUc^LaXHTbO6LF9Cvmm*xB6eaz47vmoH9Ae*{zQrAnzWA}h&x0Gv(;BCf$d(jH z7TJfd-Yqe4rOII~O+OxELJB_XqV=*%H#}wTpt}%iCCPbI=d#;+U5I#^D#&F zcG%`?4dRl4vf@)5OuB*YSb^A{bk^ij^C#`KQoMwR|fD%Dp%)+nMm8yhm8Ns;7 z`zpGjuYvqd>W<~C8E%ym6V*Z{>u400dnFqU!^FtzZ5>t;n!LIp8}I{#fWWpg1D*4tgY1Kv6+0SIT|qOq7!tZVns!qjM(5EpQC@& zN4`kq>3me5cIvxtva!I2xRI1q=$35vf7jxI1#QO7InDR5`&x+hL> zbYPkG7B{CJU_1Dk_v4e|>ES8Enw!fdr#vt0IXmYoW}3e!#9{JQ*26Vd*k z*89yvLu~dz2%Q|3;%~oFr9!S#To0fez?4m-&KG5PP&vo%biC`Z7tem{xF+2kbmu=Xw&C$~H*JUfbKUWHtzNI#_vX_Q+ZOBfG~Oy!0G%gh{6J zW%>xGae$GqudfmAc)#_Cf}AKZrrlc7W<1(fYu!6T|FQ?`apM5o;cQ3r_)dZr+tKNe z(X4km`6OhtkFys1@3eY2N4g-S+~G%-i_*ZHm6=WvJd zF8s#4wFnE@gUtZ12)-UqO&Wb;=aIWm)7lRGUb`Bd zCYCF2A*Xlsqy6plH1u+tqEqHee8+}HTXCi$TShC>NJ|TK#69Uv?llvi0Yu#5vTFpA zqA!ox$0^v4nz;Lxlf}kc;iKQpVaZNcKccTh$bZdZC2)#f5eOKbzh#t4N1RS)CBN*0 z0ZXK+!Z}b9^<~2-SUwRh>M2$AX4{|VEG_bHo6fJpF0YRI-K4XjE%E?a>IgHqhO@hM z->yeyC&S~3O7z$;^t?ZuHoN*pa2(Hxdi+|oZvL=_ZdzK%e;p68&-*2 zs$yM18{ld3`wt6WtuiXml7j7|W31MMWpAxwp7E@vmO`4R_f1$-$F+#e&s+A!X*6CiI8*XfU&3po z8hT*iYl&u|wO~6V_|YO;kGaG=#+R_Q;7Qqegj!>`A6ls0sI_1zhvu_FCgc0;Jqt?j z)FX!k7>L2&1$X`d|4xl{Q5oe~#k&N3E1J%NEaVm4v&{DiiwQyMo&HqTJmO1~U5~jj zr#l=%)Cr4XK2}>>Y_MVrZ<2E#$)fKs5UK<;wzyOjB0vf5H_L7*H~V5LB*Y{?-!n|v z&K=q2EYhi56)Qe`!qAXyrY9X)#b4yMb_I;CKmzO&hR6^#-``2!)7f5*9~_p~8D*Y% zug}wyU-oR9Z|OkB*bRXmit)wOr3y)X;=-U0q0G@scy%&Iv$U4n3-_43WtClG>S@16 zLPk*9s70Ezy9@K7jNS}qc#D=quf;ION0fCi>qtQZOjV!aJhY-W*m9jh0zrpdPF6O2 z*v?fqh4x$)qxUcNAF8nlU$znWBz-um!xx3?^9H(`#eW^>BQ{<|m1e zcO6~wqy?^X#Vj)(x-8RYv=}&DSaAArCl#SYCJ;@bv;9Q8?Tz&eQH%h)b?bqj0X^(ZJtN(^H53yNQ)8x-#~C)1|b_m*kU5^0Z>nVTZQ@29>PA7n z7+sLY3o4=~?$=npb`7zQ^;8$XRVp90s)v~n)(#qc97;|QRVcI&SUB2dkCvsnx#;V3 zso2YPz3%8Ar=BLizL1=QE@dPn(U2#@d5l5Y+OFrF(KCbhz}WC*rMbiWGE+mnk$T@_ zOM%?F%ZiJPxzVGGj2zRXN}UF0%%_rh zTZYyL575;%O>0ra6M{Bmd!8UL-XMy-efWChrTcTWw*^@<2eO~W5c*#Q%0_a%qElxT zRa^jMFI*?CH!TeEzU4_?q@;MhVS9tQrd5~2w1$QjghB?T*Y5oqCg|z73Uhm_bvj(d z@kn3Ff##DB6=_&S98!o6cdvuUBG=z+V)Ov=Nh@es@vMNn`}PUV_vdC0(cvP?HHAUR zWcWET#;k1@=#?;C!PN}X+|nQ5mN&%cOGtUIR;CtGZ3;Xq z)8-0s4YM6@yU553V%UA|BPj+3V#kUjhFw_!@3X(Kb_%F@Wet#pl3FTO5=t&PU#p<7 zClWs70H@wtRKe7FnygbwMxUTx%I3N>GpDruN} zgfT;p_dGNYn!rdWM*0TR#Qj_(USID#ak2ihBh>pRIXHuLC09H6Ay;pO@Lj$IL z!{dwL>k(Yq7{v&Q%cGYk|Udh(LT8w0%UWlO_=C0y;JF_=vN6 zqc%EMheEXRmauwHg<^FlQiuw+%TSN@}YC^yJ zMW+0P!FIMxW6gy0yhdc>Bp3BZOSN6MBT3WXTkFWiuGb=m!8I|l23QY<#plhwv7e6* zxfPw|(TQqQPC)r+zrH1_FdMBn+L&XgDH~Hyox5t3g)PVstJqFgDo^HHQ*>67OnG1B zK&Zjuv2l(yX7c3{M${=Y3ZMqeYFw|6cwt3fup~`v%>Tfc(sW{<0Az!NWlaLJqHQhN z{w_&7r{6Ehh&{a7;<(zZWV6ws2gf$vdQw;ZK(D_jN8kC>Qqt*B^s*>^O(!*X%dq21 zY7!@m)y>yr7ktJwe1sn=rbz4@mu*KxLvhp5nHF^P`UzknnLbdmIFPF~X0PaFO~CK) zAdaZ{CW!?lh=KpY65DrQZM`JwRMT-*89gO&>DK7E8VsM4DZuaXXI!9%%?D1-bbk{m zc6>4a&h92H0qR~zViv}+HqjoY7D&ya#%-HiGMu--FLs#wCpz(sc< z_(nBFRmDUkXaDr&gBu9^d+3d)W=j5J_+SSDEGS(sVBDbC8?rHS6d&HNh(Qj6VZGlb zePQb*C#diY9yLtCIh@a|$i?724m;eN*!CKn5X7D-Euvjl?z#>rSUGfU56>6k${RZG z5RPI9oA5*mxo}cnE2B3)s_sB?|E3dqe1DGDxsgbuFgYT#aEX`2z|wxgkQWhmSo1W( zXv>5MFwuEyz5Q*JVa&gZz6$Od=E`C9XRLy!DwcQ0K z5e-SJPWR2Fg6$;YB9d`f>$U>lS+v_k;~2Tl0~Ui6%^4Pjr(U&Z9K(Kg zY8Uo3qT1!)ltX1LcVSK_1jrUZ2`UqPMBG?1N`ghe<`m2on!SL&R51+m7}n@0)5<2F%eW2V(-?Sf0jVUK0CvlN_!5@{BOF`P9F zI0R!74Ur0rDSpI#!Xv)Nv;>+wd47}>`ubv{*skH=%Fso_<=My#VH}d+n6V*rO$tFt zJE|!l8k>ib6Ru*?uZSg0AA6bYaHezynMu<+r7l(({jG2I=!sjM^^?-GH-o2?1ZaY9 zbphpRDHQ5h*RwAJy=lwSEJ^tZHp9Oqi@Y9#b3YUs(#DW{wG!w}J`V5h^cC;1*5_BA zO&ja97jqdREyU$ZH-l-(0Y@+Q8>GHYay92Ye-*Y~MK^Y__+^jkN<6|FreB3CqkPFD zY+oBSvoGV7XA!1e$hPcqb5;4vuL2B@CtRK)ZH6!0#$+7d4jPKnOQK!%Av+juYI8lq zr@BeDdZWjW3I21Cb9n*I_3J=y{39FBc3#N;g@t0G3F8XJk97J3Jj-_w37|zpgDn%`O1_b%RXuc9^xlH_| zn@93#rT!_-hTIdhTppq9Qu)SnL4Fc%S!y&Bmmyu@D!WE8t&-O{ubc)rDTYrj#3}L z6Tj}`8t!u6!be|k1?$*1F#1q_if^li!Wny5pfMlGhVQ7Epv};H;FI!14YYgqeDZP9 zx~$ipk_+0EEb-0gMp!7+fVd3`%c}_dXS6jQ{!_w&BZNFQVKU43#wXe8uY{pn7#_hj zvJ0UsM)-Q$a+SX5rU=aYB$KPz*gNd@6Y%9>AXAVKnFMAmi0?H}w+*W_vPG>#jW#kTkS0$*Mjx@>T~ zLRkGG5WS+}Wd?U`BuM|{laIkWHX%6!mtCSk{%G|1DpN83deh0Sy-d0x$B!>dl`hU2 zs(`zN1fe`MEhlm76`{auZuHKkAsUxgF?J&S%RtN%9{B9cAlED5NO=LKB%Pv6vJ3^? zfmVCV4bNn~P;E|;KtD7M*>Cs&)IyW_)W*gSVz&#N9z&*sC-0KK30+-#Hny4GKN*we zXt$gN;M(KG`Fj)Pv`pe_iFau{=OIjQPVE&Iygz@ouRys(+!ptc85?yz2zBvACCOq~ zuSiRk-ZPG{f|o{s2@Q8As9;$gF?y0_@bh^HL4KFWGyL$HmpGk>m2a8RCP)#kXnmA> z&)kpdY2pIBP3-$S!$TXV8~YU$cnD3sMB+lcbNswXUxzaqzyg@j;WY3v_ss)Xh~o~g z1~(i(Fyp};cT1OwPke=sVB(_fl6a;t5wk3s%--v_j>>XI$rMlAh?o8)jg9pET$i5P zvtl6U!{R27PnB5+;g59_`7;ZNfWr(E>)hAxuibcSX)p(LIU61HU3}ADyI4O=yUx~? zdE27PzbH}VXtvJX*+B2TI=3)WM)1-xL(S7b8M*PqfK4qgRX2epyec5|9+N_ZhFA6` z)LdY@+q4;rHJL51!rXPHoNO0QdmQx_ZVinAUxXpmZK?@0=FZGa@x>|}TFnrZVuFvx zJ!aw}m;qb->3eGL=`3?Tr!BdBY}Kj}O0myKi(l-jc@t(2bQ(pV5uS*=Af>=_AC+Z7 z_0ZJ_?8f&pn*(L{QQ~E)srTpyA;~A940v~IRg_EM^OIc>YylKPZf`Hr{x2vE&4q%9o zrvBiGgn}~k?nfk9R*;_Zs4uH6CEJV+XzotTdD3LYB}|xZnB#UH80gA zWklxM$I)GcVFNSY;gt_%E6%mS2?8>3wP5H6@QlM0H^)otjl&B&xO*`*vXp+E#TS6=7C9bxpEzWD0((yNSBw9jii8d(~ z5tb!xTfDGC?IiRixBl3uvzJo|ml^!f1=m? z{ko|y-5a1sYumjXK#!e?mDZ?o@7N zEv{Il?Pk`U4x7y`r315qXOTtg%q@f*Xwonk42+wSX2{WxmS31wZEy2onX=-|9jXs- z3$<%`B#2d@Q5sT4;RGJB9>MLgNq(9}|GGVzGKSoR@!mzNCJ=e!8;SsEa^Ia<|6y{{ zL9G{q?t6cngl-!Bb`ZnOcG3bJre)u5Sdqw65nJ^<`pC}sVaTj*!h`;H zyr$Pgb$R_p5^zTQWTP)R{m(;@1Xwo8p4UEo2?LcdF%FDCm)RDeM;8OBI0b@d^i)5>A=E5`*imNQj`j+xuqj(3msek{|@Rv};raD;l{ILWCG2lN4X`3WQ z6N+xueB-H7yeppY2EQIru*!$S=~)Mke-_RWTuZb7$%I3Oaez=$ z_Ujj^Xo9zirKXYXe?0Mbt<)epAN?NV-fpr%_n z<>1??W`*$9QjQl@x~tS5cMdth=O+DwAGSU$7| zsTtoi#ir<;I$1%yOt6_XPprW3?JFCx7i`b*rtwn9k>Lv zlgw1aJ=Sg&ZCz7{mfiRYfcbs!t)v%+muQvOuaWvrVNVTcNakAE^JS$>pFdI)Q`aTj z1(E8#cDqk7>mY}RL|Y+GmU2p4cs}fq+Q$04&1FEs(zW~MItnYScnfSH|m#=*-hRJ(_H~h4&H6X%JI4%fCdE-zjj%tto1nQa8Ja@}Ts%y=jT@ zt13IByI61j$Nh7DTgY#5|Is+K+@~KG`3Ul#!V1gc@HKYvc)|~I2~%YUG5fJK$cIkn zZmYaB>B|)4>3p0>Y>9e>%T?`vKTUnH#g>`%&lnAzqc!_8x6hl}S(x*!1wtZrZJPMs z7}w!P&5v)R*1ebhDx+(Pj(NfsKB+cU$j|=lV0}c%L%2|tN$je6jCzOLthgl&*dcS{e9P)c!q?wjwbAugPdGMNJ-QQv zt+`V6PuCi0U?1pU_)0r6$9xhjN0x=Zc!-oHd3OrhHZ!a@Q8Lmg^;Wby~A*`4111e}Ckj_Rm9p1FSI5Z@;k_%u}?K?zl$`^D8`p@PpNDl(j?9 zEw6wh%WNh9T8Xkm1vS(2_k>*2_*YvCD<3ATZ3>>ae zQ;>EO3ofE&1%b`i77BoYs`7)QdRLH!`k^54(2%-ny|Lu!ZOYc*^IHk*?)k>1tJiHk zs?ITm9-u?2e}mhS!;@FpeRs|EK30mwslpGA$1hSTa`^~?r50X>&)5*hhNXZQX!dSN z@emjKW@R+dCUF(p8J&&Qq3nzG$eR5>K5MH#JqWhU%g6!U5L5$>r|ok}Iog(tm5Koc z+Sr{0N=S}4ljp=^Y)oH9#t>+Cqu3dl>i#Ac1LVQu^{+7!jpnOv;iG(XR~)7Fk3ahq-tvd48{NcNQhHq9M9mA=Cq`9n zr2I{87T)T>-E~z2meH5L?H8~h_64Ie99TStdQy4ffB|(8&b5! z^~ZKb9nWs4IXO0Q7;7mC-I5T0hxqa*U!%J+!FG51LVhL?7i(f600$ed-QD%ekSJ4# zdm@qa1iNc%%i8)&^L9j2ysU}Enc~7%8>is}*K7{$sPa$)HFCPj6T14!Iqrn#6{)+R z!Ov{!@OD zr$ZHU9UYM)k1-gue2tXui!NRmV@-QD^FR~Pndl(s0dQvAd;&xosMimuClqq)M4y^B zrQl6IZYc{a1A@-XIu1Ct6AO~d8LqVY@J?sM5r`%ZV$^JBbX%nX`Nb=zn+@X^z*|B4 z)F9vxhMt3m2!F|PQRCf#s+yppv%Vs9dWYhNr-w1E)gJ z)m}_=Ut~){uNINT(L!U8ivQT*L*A7!zj=~Jr7&5 z2{ub9P?I*ajAz&z=oGfgS7*V*nIEYe4SmLPq_)H-ugZqUaP&fnp1qCV}za!{UySJ=5i@`NmcYoSI|br3^#bhtRve!#RW-)(OWU_zHSO&;M@JbS%B=WQ zFmmCA$Bv~zRb31m?6hC)3X*#z|LAk%N82^8nS>cY*;jTrIM__vdtxcAVL%qm*1vEV z{;xc%m55g^PsFAILpPSuq_g+G2ahH7{*T17g9{Ey7Nfz=y~D12hrDCz3&}HB7=hs6D1XdnScgRJg_w?p&tjpI zgpr76xGCaJOF?rO00TBWlxO$Uh_1tmSh9Tk@^nGD6ZO<=Mev;f*z?-f@ct#zTAW2V zOu|@2rl$6Hsy?c{+Z>&J$pp0;DQ^O_f*kV`ODp#XK$B3XL3Nt`B>iN1_=dzH8lONl zl^FvBMNDn_%g(r_2>tdBb1Jh#lZ)FXHC5{}^HT0`{~SeRoEwB(4f=9aM(J8HA_Z_4s2De<4kfZ7!f2M&T&)h z);BtX*bJwhKTV|kGFc11$pxA({%d+25{fcpe=VERP9|F2K`PF}NUi4@%9M@09Dm$M1B`Hbi7P(=g4R*!E2dRN@P* zzy(fklvYeJp0%Hj*4s*JYb@Y0IJKkCm9*fc3^O zxdWsAC490Drx!i|QN-Ovx+Kz++QwOoaUX zHY0z-{)}yR!TBb^;8aAAS5_&nefwC=>)k8m%}RwE;)^#opc__p)cLje`4$htUzP7P zhV^b(Wy1;jx6uIOP~_lyP@eZ-2$M8ekF*~LpvhQ%?VqaN*%4qFw*@->Tf-{r--{TW z^ZnH_zy7z2W|_w%aeUJ@c4t!dJH$zd*I=PB;V4byb94m=xG@#4(fDHg1LY&xUhtL+ zrk-AWJ&Bkvi_sGUyLqpB?9WMtjir0ci_z(G~akC_cyF0&kr3J$(U2N9_|#FS!f>Y&Sgk7 zDoxQTdW6u&^4B+AkS%qpft1e%g#KydxqD`qt~o*kN3WuJZ|qmWHG$oQBnoWH{ycz4 zmq_4+dXe{w=dz}1)6cb>D2S@Eki7y@%K=Qnm$#StjubmP8jbH!P}(T(J=RwATlc^9 z?JXk#<$vX&VIBzhohKVIaT};3eYc$#K3^uiElVV$(^5r6L3iD{tVxesCbbwuXOlpt zMQ7{ZAi|n#X26!E<>>Xe=yJ(9tIoeDXP1vqsBRfIVp&y8|8z`=7sxBk%U)99Z_qFt z()E~LdbpWeFI zj+zv}eD-s(M3(gJf5vYpx3$ogaIZmcuf=|8KFnF^Z8Bz@p~#wQ_}_b);U^-DyM^Rp zpT1-gdymK+$V^nkR6*I=(YadNUb^Z%a`;+er>nTM8}|eY^Mt&nhiA{u?>cc}OKe_| zro*qlCVoarbz(E3-9!*-1Sm9n;GNM!UWh|TNPkB z?;~}sA5W@q8)V7oQR6Wx+18^rhD_utb1fNNtDzNpch9)@-L@@dWV8r8XaVRR5T|uAQjECa?eV}*Dupuuw>!k z(}-ZTXXJZ!bGB7f4KCz#l30lPH4OF;zdDN9Sry##lHZ!LZR7t#BT?bz8c#aq?N;kW z(euZLL&hTGo71(B^-Ky4v<|gzg)1p2LY<6wqZfzp7HgG_r7^L(?0kcGyOw?5%_!Yc zNI4`{$4)ixrTKcdRHz9kbpR=!A?=lUh3-+?waG;Fy1GQl+zIIDnnvLXyeliKvc979 zdBI*SST(l_Xl^mx7(E(1Rwac^3!Sk4OEv$>ldv!4PKhYYgzL|L6qXRda4L<`<@&vJ zth5o03cDOJu`wlT!cD|L#i4|3Zm%coUQ&dEmcd+opY!lYGaTBxe)pXg=l{jN@wnGp zoKw=b+UZ1NQ-ytlMdCtZVpSqj_YbVKh%Iv%ORw>BcyY0!Iorq5hLl{g0(=Uxu&`C; zSGd|51$E1aG?n{sNVs-KgLZpoa}%C!9QlQ@I($hW6^&9gd&4yqhp$Wn+{Z|pQ{_qYx$ z|BCPZ%g>2wj&aR#B7KJBk}oivXogvs`cE)AMc!uH%{@>T}QE-u;;1w+b8>G6}$n2%xyebUl7g z`IVm#!%#{t@dcA6-B^AC>vqe@@wEBcVP}K^UuWZ zBtu`Sq%6BU$^GeNblX5qfxDe%gRbA)W`1gMu5BKl#cmcKdr3_IOu?}49Km>&@qUst zQ-DEzvgIxOs4v>Q$71*u5AXbK-2$$~r|Pa|=x&%jMMDvr4HP~9MF@X$T z^y3XSBjLZXi?7?``Fjd{=OV%SNk_=o3J)!}LnrQ5-`lveEr1|KM%fZLf=BNBH|J>1;MSHe`8 znkOp3RGUBAyE`%?mBP9f5xZT$FBZ{Z(zo&ca`dykwDwuY^igw_hYz(7pOQR4aZFKp zZmV#6L_2e`_AuoDX|3qAsMg;pj%Lp1hDYTeYRsx~Z_4*FvI@NG&JSZ}~3)t=gXwd=NHN}9khSPjEH0$o3u!t>3=_cN;ttomjhE{OhYNqG7eGdb&A;gnf9I)d4%FZR+KyCI3%$ps zj+{_a@OAR>7a=XY#hxb^Z05bsIAK`G zFMWjv7H&n7?X@#7y|DcO+!`eq-NanoNexD@5sx{ISJT+~R^f415tJYPMk(zbQApZTE zJNXJ~OU^1zj>tO~)-}p|#5rvDGYzB8SpwXL<%j5253W|&9P+Lv>Fq}-;~`d%Xi}@WQTeZ`J={D+9iMjNd})3 zx88=~!Hxj&hg^0JeVy(%EfhiIhOme8z^i67mkrooh{X^~_N!co=P}KfOediCK z!RfZg&VAvhx}La7FHslY$gV8YVPT0(oO7t3`q5DLn(=qE6~f~6Xpodpwqvvg?1(+! z|4?}`=y)E$1QXNXS)-__e*9|FeZ%%)LYa}m6dewabrYTv-!Mk=K7>E?pyrG$TbK`Pz7~xk{vn0PU;Pv0G&-a`KV%_~0XzssBCri@>oGSaJ zJ$0FVWhr3w@CgZg+R|g|kGwS+VwJluQ4;-CqJ+MB)gOJ9lRE-^95mPB18&Z%BzGSw zL}!)qM6Kq~O6xmQ_sFaM4<9KOnNp>kHm;vDXbtH{5xe!7-;Uc_9zbwwu#A* zJ`ux#gO)`~dj-6O51yiuoop9y90NXb;MhyNN*1nRR#axs@nDsC0_gH7f$vi=nV1;J zo21?QpxAV9^sK?==6Tb3iu9(>NzV93t~%=>zEe8;REdO*#xcr0dGm^qXG%UwCCQyt zjG@PAQw(`sl~p%oYolx)0}PS;$xRo}wiao%R>uc;=6ntdDS-k1{2v2Tce|npwJ~o+ zf9SW(Bt*YAj`=l?(C_JKq&FL-!5xI-uwO-_YzQC zcHaAA&|YF~L!UTKpvXYT1WwzT@oBqVA!$1zH&M(sp|g-r-0u3z-R|O&Ua}A@%vjx- zuxs(1^)@Ab-$FGe0lQfMV^ywcUh>!;1s{85O%Pubi_5YzyRmB~jc$-9r}^;dFL-<= zDzuPh&kZ~GqGv>m@)q5V(SzG#^i|uq#$OKR|L57LP7jd|jTEgs@TVSVmpR1xw*^Sf zVPBxxCy~fdXV7&^W9qji+05iK<4z69sacW;A13qbgzh`B&Eue=h(6f2q88$jp7|3u z`FjC<8Ap)Ek|SP==V>QAEBp=}HP74|W7+owoiX+wa}|bApJZE8&63*hIe}lEL@alXl9Xlv z&hbZC!+{&>p#TP-mhcH`xu@x8!6k+p5{nBd!tp33k(?nKPur8%juf+#uOcif?=PC) zt7v_yupn;AGtI)3^%@xde4Nzyk`ZCeuJ2ou zU`FbMqdY)aNmIH0l3u~S7h>LcLX5YykX(I0<9CYbf9Hu?cMfs<_o=^hEO-CN;7irb zQDD>dyApOtvr{9rV3?kT5p5DRkUfiVAofiPk~>uePIO~srHjSxKo=sia_kW&Sbnv*N|GD*~BsQ(>m+T zxLPCZmli|3siC)kgXujm%prdm(jo-13DVg4-{buEJ z7B!!rB0>q2*LN+zNxZP5L6hD8z~3eb$yFyevj=e^g8kH3LwldcCC}9-hrN?|_>C)A zP}BEJ`bYRiOyvaHt~5A(L6HZGxC$)d;1UryHbTQ~teyaPp=oX1H`1O_`ch!9UU8~f z#L?MLL(j8(V76jwmKW;qRr%;!%?@VJ&QWjfV{xF~K(JYVnuT%ICs5n9g@*H*eA@>5 zT73c-`>aAd=vEgW z*ME7#-|O2t5G$-Vgyv&cZRmJoz_DSG5i&3qQ#KDRFW0u@e-<1#G2EDndSekMWJV{x z>yAfP#MwM$D#g2g@m+*2UzO~>aqO-h?e0wEIwG7xM93#v&|)FA?7KZ%ebifL9Sduo7*H|t*|=3jMtko-?Ssy)~azp{nwkeJcc)SwI3?DX^+~U zV#W$3BxX2AXgS?$&NkI!jOQ@93bbxb;whvFYzfB|o}`qW-)68=-q;fVs*Li$^GxR5 zm@)nqsI7|lpIAFv2=T}|tJqxNqaa4104P8pTIhJJO5~em>q?7~{A|Y3YcgL4G8NS| zj7NcTb@QhIwmbDpEi5-F!LA|Z$Aie{0r$DUNT?*~rev#i=z7AIG@&e8d5UghX5W#$ zkY^ZUHX+N67YLRi5?F?#nyPl1F1vNLxhWFPBVZX4^xigloG18ws993|Pe&O={#~8! zxhR??iT)JWh3^`-ff2dQO@!pnzI+XD(k|0CJP-OetC*)2cVS&PE05|&&&^B;1uBiw z)g@xGT$xx+j0zIgz47LAI?YGT^AQtlCc!939IvL?E~FuH8&^6` zF%GG`ay)9jy1r7RKqazmulknq=-+E+H7(uk9;LQBT&npU;iy(fQK^X;L!SuoqnQ6v z0eaqRBM<4@&ed=@!mQK(@L8QVL@y8e)L&0`L6k`Lx3k2O^tG}VqYhjW@F z?4OVFrz5Rd0<~|*m-Gw%hyLw!^WD%6wQFRZ!GDy(VTE$I}&zLK?`Aw%{wC>iHhNR5Bjiyud8`C9)*8GgO z*x|Tkt$xf29}Oq?KCu5ltpA(F(;Lp}l>233dmX1;P5;u4-CsZ4so`dCwB+jZC=vFh zqjs7xTWh`YuIS_G*U<{a#(2p7wo>b9MQG=sgN4jgeoJnHb*O3e0g6L?N^mQ82@{X) zc#sN-$v9U{(%j^(G4S%)PVlbg09M1O)X}0nD=rU9RGa(3S)nEGov&;26=4324Pl&u zEQjKIpVH6W@+0X8sh=>0hF>iT``j&jA>ytSwTQ4$+-AD5k>DppIx5nSqqfQ&N^7a6 z;$t;gYtiO-q0TEG-4aGMrmrF;>rDHvFNK-%DdF3;TVxFVf@NAG|iR7Vs?-i3@$Kq8_=pv3$rw zY`Ixn?iw;uhzQ7=`Ba>}bF4c3>;#~jr7f?Vr1I2d#YAb$+HiKb1*m;YzGPUi@x8zH z_wBG-rEmT&HzHwdASC}GoL}2w6smP52t(l9NFeo0u=W7b6_Y}*kjtC&%RXKEX0Rb) zV4InNEL9JMlbA`b`L`RF?PG&AcC+h#Wh#1}(8&7}>MKI^9la!>l70zpfw@_&ZHJg0 z4$k@cHX&1K6Fuq|dsZL8PUJSCX*$Y2ah@Ey1iQ|Q1i;i0~l6{Y1 zninxS!z+(|&RIDcnwqC1!Bo4)`dP_d|Jb15v;>@C(x<;Nt3P1+U4h763Ldc#|8i{*cT%i4eH3i)XmSaGQpe;|40uab~n z98l8r9@Z-;T>@gU0^$1=?_}6&&^vc?Bdn)Cp*+EYeSdQ*zw?Tx5~IO7^4*(z4BCpY zC}#gD0wQ6;+Nw7<1Z}hoFl;$X_hdq1cHp{T3-g%4@6sT#PAxZcufyUyWHh7~<`#kQd zza)hBtZ)vZW-Lt>+xw(~(eJ&ftN&+8A6u$_;0QAU#WmiVqKDHiHEu_SvqkD|#e=V0^U>oA4U(=4H zgw=_oL19^t%wsR+E@(EGQbHy z5$zbqS2p>;3x&^TUKG%tQZ@lKjkXx%c~fs3%bTxu&uNl{U3V}gQyG3~^kyKf4ct{W zHG=GZ<8IaQa%J8}x%U9)jKi7rY`oPQ3I+|vrKUpNF?yg6f4pXZz~f)B_$J3Y9j23~ zeFyc^FH{59`U1nf!Qb-Rv+UxKv`7Vl2Mt*Fd|<7Hy8knP(x5~ zI+Qmal+#(_2fO5I_Fu}z#NKvuPHkFdGCJ?ESm)?+dFK`;)1Ih@hHfM0y@!w5Es~j% z*E5e}FrqavpPib9=BwYsJJE97bY3s38Sp9KBNWnL5^|W@j-9Si&Qm*?!%j|^b`45) zsUw(VaNoo7GVIXxG-h5O(zsNneA3;J;9FO^U3*dolvA{fyLq{K+s+!xKi}kpeqdQx z{dfD8fAs8JL%6Ho9i@Hn`Vri5@5;bOClr@()CvP+q9Ov3B1cR7$2GjHyGqfjjovD! zd(BDBNt)g)U_^v|uVJ{2b^I@s>DxO7Yu0K{U>lrX1VF>ToluWHclFBA$F)h(Uc$4I&2f_K!Xp(F)8&|R2b7!g%-T%5ep(%3MB`V?Io zZ`!r%B5L&GhEM0{X9sC@L~7|_7|mOFXrU5d=0zcGT~77sub8MQ9RY%gzyd5$az*$X z`Ov(1KSW5hpSQkP{^S*RQ4pbI&zvIMpy-xrv!A*@;rFlJgb=qnu%f5|UJHrWL$j|8 zx!C8+bG!iPFP0hY7XK+fv!KCtv35YVcL~`|BAm2+EN!HdCWuzN*Ka4v)*M%NefmgUK@pwVi+;bjdN4FZMF`#XMAdJm`5>lJ=)k~o9aE< z!Lhw!N%8;Ih;J!E?kxYq%5~IFqp$w=px)er!J<&~^5B(t`7WH)qsgGBzmd&WW1a8c zS-rujecTRWhx|@NeSQ%SewyzGLy=TUL?XwJWD{u|^iPOB$+*7b*i6-cd}JDHiUv^x3Z1oMpPxVl)#RPHdApQHI) z^F&wL_$CEYPq*rMzdAd;DWF6+ok?Eo)^yc$r^WiO&jSmJmOBhEw8LOplLGhF;*|PO?2*a7z1Ruu^*G*kZy&j*{2(jc{=-CXMe#9{C3 z?EcBevpSCW-j+&sR!ea2nwe~`|9^CBGyKHuflGWvhCQa{2hcnYSm!83Ol4p7(3foH zNGx+0ORn*AGzn>X67?))by#^aD;tfR*97tR{QGneHCgq7HtLllR2woBrSZ03eGT5# z5>3A&T<=;8UG!#cxNn~x>}scW%i!1MG(ZYRg>K`@;G8q0@ru5&`DztXIC^Z`p7-|) zNAL;1gm%=X467dlDL>@n9Z6CfIpO~4Y4_9GgCv)k!YAY1%%+wk`L-uQj#dWicPQ|| z3*dA6ga6Uab+h}N&Wlmq9USoVmJMA+hp*(G?jjgpAV6?Fu^ex`I%s6Ysf>vQD?R;$qv)QcF6zLEa?e88AfvhP&ep8j*Qx26};Gls)sEc3eW ztjpJi?XGDQaK&4mS4ivgzG^q$(*+}*wSdv4G=#OHJG^LKaQ24*#-sC&$cp$tNj&to z(vTDZIAVCo;`29j5eh(Ws=bwyd8&^xcP7Paq3mW6p6aRm%1MfUXmRc74e6sQ)h~Oh zHLLcef40x%?^QcMRu;~)E=#IrvP<5`gpPRUjEzfgNJGhkE-#UedyzBx#wmBUtxKZB z%GtKeLT{4Dd6F72GZy0~d0lO=ffJ<814z`FcU02~!nBtLc*h%m=&)eT`+& z2bP+xO}7Z`g2o(@pe!2>``Pswy4?#r$XTa*Q6tI54nL9E%uyh7{(MQUaD|>X+r*{l z6i?q0BNUh0qHEZ68L!9k@AHVA0)wmpGwTPl>~slk3>5#`oWJX+>G|Cu9rA%-o8NNy zrr+r5;2H51&+WIDmWQ=C_W4N;_ z(9?EXl%i`BS4@V!M_}>YNIo$kchJ=tE$eXEvPB0d%Qls$4>v5ku$zN%r3;RT?Ob0K zBx7%bGPD6=QlpT;>thkPyQj&QSSStaamh?E&HRwiTnAkssV_= zPo)zdC&7e<9;9B%bUdssOe8m{P$~;gyGapCAdc%@lY~%xU%hKK-dg&bvneIkcJ#^P zM5)-1W8b`ohd#l=XsV{*8H@Ek12-zNlN~QC_Nz|Ey4< z&=$>Gw#)E3Mp7}GNz>S=xC}+2sxg+7gsHj^(Slju75~fGe2|285M$7qYrG{S3CaOx z?iHGG<ML-JK_7O{BF#`fW$0H$}sm|W0oULJFR64IA*m%ej-TVsxY?m*KaJ>m$CMQ#Vd zS&t#5H?mYn-F>TeY0yzq5gdp%x;@%aAa(aM@?RzV&osuJQscX=7wL&K{ScDb-K6PN z{i~2S2qIP#86pA#S3)yK5H8ZNaKV@fyIdY{HN7iLVyK;+%HAsJ0islm>A+tuYCuL) zlE(>Bu^!(Il>&YmDy?oWUGyFqi;10x(9w@$!KbC(39=dJ7{FrNBRp)G`+8au+!(Bh z!_=~0suVum=##{k)7QzzUfLM+amu89-~V#7+FDxqnYNS1e3M|a%t~HP4RxLgwT1n- z17tMC{Jd!6uN(O<&)bCW%TJgR(q~$KVsg~ML6{tF;OwyZdBc7Hj-O;M$_08W5^!bN zWtCCE7-cr_i5{TeUB|JdUrG=%yzCCQU(O)NBYpLk$o+pth7t5zpABuq#-ly(#p0~Q zS|x1K)0Yi-99nmbJ}T^!v8()br(0Hijpj+9TE48V-l=Jiit{c~W4*&>&Fo~``iK%y z;I|^D<{g0Lr(zbkkzc}63A4`%<3Q^V5)B3e zN0uE%IbP!$IHSuYl@Zl?adX4ZQ^G(UFuj}8e=_ww$WL&5_y$(j5^QO3RC<6Lf~8Mr z$y7$!+P`cwr#CC3qq}VywEMNVq?c0)3-fDH%r>s?EUx?KqJz!;?Draa+F1Xbhlppm9uJx#Jz9d(>kTJv9|WUwbqPB05|DM{ zUP&P&HDX1plQRRSMiC;o(JI8uhqlP+E1nf<8yDAR|mmyi9WWe$z$>V z)2;l&CsFmCoX9DXtMh+UIN~5YAxJjF=V^@M==p#7FEGN1H$bu4Ks$T=18U;??-4(h z06$#(qlpzZ2jY?ShS2&uUJN1?8&<|0FQ)xFFDC65UX1P?FQ%KZ83Qg&IqA)=Vpg(Z zqNHm`<;8}#s|a4-u$I8QR7inKl^wr}g)WH6B+3CHo?Qdj(ai!R`Gpq)G4wl5hr?!F zZEn+dPRAWD=IRf5F#}fj?r0rlY!=9WXz@^66x`F9J^h51Yc6}&duMq6*xDhFjqm+< zMZqi34<st8(%i>}LJ zFQRz*WsJ%D-QK+;sR*ktIPz~_mQ+z5I|VZY%9-)>570%k5_Cjslaw&DcT+c67gM(4 zBM6`E7uxRBZ@1)i*M$R1k{U%*IhcfR6KUcm`r_=Rsc-d)g3Sif2gEBs-+tIO(*Ufi zw&6S-C~>;Xe;}uTuQpX>P!v?J%v@ZCo;Q~_1KGN9j!{8f z2dTh04o|V9kd#nh4!F=khzW>bO}%4xxbK2Pl6EGS?s@1L3@GNb$O--6xpMvg*4YIz zdqBv?_lcW1Y88IC#$Tt@qz~aLpVrc$$?p3+4*Nc&mIWDhH2bUo>`U$X7WdYcJOf$k z=*b(axEiOwILP;ZYQd8=PMVGi4Y7IwWbjUjw1>oVdKTfG#BHlCZI!FuIjdD)cMc|0 zS0B`fK#xsK5YCsTlf&7XnBv6cDFrdrubLP*jCD&5JOK{NBur?Cri)e@oVD1pna>Vm z!jTWgTYet{fV&&ZAIA)B3{1M{c`lZJL*T~f(F7UG?^HYZKws!Q99Aeuk0ZNX^yhM{l2Y*wlDY6ZTBwzge>$w5Mx#} zJZ7!DwP=}I(J-0u>AGF(TW8V`0Yu~5_eDD4SbDHu?sgSdbVG{=Qk&)TRj>o{xgDT& z`6((dnCx}hp$1vU!=`g+xOvSRq+QL;YzczZCw({kJI#h_3@Mk`=dY<6uNg29+rQ6F z)o#r}W~Z3%W~c53A{W7#xq08+j%5J*!+DCI3cbenpx)hs;gixrx;bVfe*fP4y_Uu9 zSkh|6ze#cf&fbj{5YhRB{4}OU1>5=p<9hCySTVG{riqAvNUmq~CZtE11*c}5H|eKv zI{-=N4M3S0$QJkRrEjVZrstIyu|;;Ai_O z#=U*l_>;MFEV#_UL}`|zA{oZWGYI`Ub30cILceC-MeX?o`0W34;PavXZgUy=W+$}K z4-tvdz_!TX+yEkY1;NVuSx$ynA7%DVc?k^lvnvt;wr)=s9jpw6&ijQQonpNkq;g#R z`xE)t{g?QXkcoV-Ztg&IvmLCP8KK+OA9UY*i0i|CxdR#Pfkws}H5IR`6E(T+xPZ5| zG+()#5S^DB4~o@wjWg{sACKBiw%fadJt5>tlhM|pmyqAHD1$<^EQONnx@*6lI$ulBiWeVRGZltwa_YR@ z#?=L&t=#Q}(H-bEz{XKeQJ?RfB0dBN&5N;JMAzE1p)?y8kXIzxa`RgBiSe&t4?>^r^yzweEhiJ~Fjn75T?p024J&Z;e=zfr-jI{Fu+Ww{P>M{V(pU$Fg| z33NBucuLOuAS~Nd?`do{ae)7KWB-tr_Rc{l=)yyLN@~iO-BR4j$^)K}%aA_tpReD@ zPfA2scMGY-dK|0gPx^gtiHL=4z)&yv4Z+_N<%G!fRfw?Rh1<_bV`9*YF z$-&pL6FcgATe$MV;|;#O^X0|dDdXrVc+)B(%VQQoBa7DTo4g<@^5&pL$W|hA%9GI% z?I_7n0-!y1?Qx88mCOxIWAoMS^(X@bY0LbF`nkWnBWbxUdLjHMDi9J3e_y_lSpVc| zTc_n79Ltf7Y1Q72VK4r84e(#$Y$)?4HGQwqfu2`-|4?F!yV3L6>n>M8@u4zrS(&Gr zPhAgEE@qOs`cq80{h5$>K`KLVlpFw;C;D^8+&G z9a?Z0>gY{F#3NF^#&YgNMo$k`t-S_R8thVjTdP!J+T6YE(F(byg$yQ-^W_-8p?C~zd z!nJRB!6M$g@`-@V2K-lp{2x4>=dSKHkCEX@TM_<5H2l%pDNqndhCY>gp8g` zj+hh}kczl55J_fsJxj2JEX;fSz)ngJ`%em)kT5=A8Y&YA2x9EK5AA@3$)}~KEBih; zw8uJ7zZH&DU7MsT>q|Ft)`Ysk-lW!=?@4s}X&Ckid84%Xk@;GS-~HN{ihz<`^@&Yq zbH3vm|6~2gQ6-vM>6xO;V89fK5Pv+#7(%^7Bx{V1&nwN%Y%SQ+1!tMZSUq=BRC7&M z=m%`du74Na3{`$_T98s;Oep@YI}EZ84j9ZHJd40#haf;3N@|!v3s`}>1tm%ScMD23 zpk4sEZ2xZV^E0KbnghGvG&Bu+Aoh(9B9#${CYBW~o? zVm~$+LiYIk$YM0^wvnkUJRk}3gn^9kU(O4re}+wCrqJ);bfjVB+FOh z!R34|rJehsX;X-qt1ob`M!N><$$A*qWpDg8b*EXGk&?YbpG%Ul?bxKo9s@&!ruMaA zsMxq`0&!&1Zqv3@@3g90_qWsf#`b?3in~W+!A#a*65w(8F0LR)Ki_;#Wp@%}cBjTlzo_v?wb3ZW zl;2h3H~78A@!GfWn7$;x%&?s7)X9v}%M+wtNnd%McV5$2kTk9ZWd4seVa?U=QNLgo zd-kWT_d6(v-m>`ob8j6g&CyFlx6qykzb0X8iFU#XHC<&Pv(U#9ZsWWrOY)D~TAGIk zL!nQlmUa7l=j?xzoG@8pOJ5HJ1Q=R}V8N(7ZSOV6NeLaSPz~@;A?l<${Ag)3>0+^s z@O-xxhWY5VLsZ~3XUQN@9F6D*YSI|}ltU=7i^GTM0rV#JN|3cuoqB^Gp+*sT#<=Ti zOd7M|HZ0SG52qe2MPT{)=mJj2aa2zclfGcy?%lxddaPl0r_47kNw)Pg98&%9B_B@w zdv|3H$t7%@-#83eKL%JF%;o*YWF6kq4?(9%LeWiuQzeT$zRs4R?qEN=5dLq?ab4}& zwpN@kw%KgX>ke=KF;VHa8yF#ZwyWD)5siTWM8?+ps19raS5CqH!6ar^95oiG9%nx9 z`#RY?zM!}@aSz{&zbl}SaIxerj6(Q{;2G!O~N@OkAvt3nZ z(VHh)wLu%=MHLl_4&V9=3BGTT#mmpXe6akH;FjJavfwroZZ&0I`+{s~T`i}(=+N;F z{IprG{N_LM{%Cf$RSgV&20S|d4e(QOeswpy%L*sc5&dKBV6Cbo4&;`U3q_f&>4PEr zm%5lHa5wK9NPTKiYALG^*<5N0FZAVJC5RfPLLDUXgayUD(x~^}SXga`eH6A;oxmt9@1_I`lat@YrYdx(&?CV0lmtx+x1hk85c=q7pG1vZr7!U zmJ@n;^l6g2JhV)76!ry!mh{&m7c3Oe3(iS@A`RmW*X*34c>$Kfua|2*FGIa|VWrIZd!E#-(Y(+jk7AU*uv z_Ru#EpDn=>UI4(X0Px;^Qn|_htX8=;&4chyzT#~H4MZf5h8&@N z|LF2m$PheY8rrXyr)b+!;wAl@`*{`+`;H!3iX!g~+%FSbYgvD5^3Sb1xXyObwl$|Q zP&q$r*%t#_J;U9tWlV{x-(9mG8kx7KxC8a|+sgS_1pjN+lF85(MHVbSEkH#tUn?Ou zplEH`pC50!LZeT;t|B|VX8JVo?gEt}W#wKC>pYYci&5yebLkG58@F3UN0P?mDD6Qo zK!kjU5BuMjZ9HLa{%worA1~YBWa+fuv;DU=s#|_vwt;L07j^&lv{D0d15J>om}uzP zl%2FD#J>tM4@>$ug*@K;7F6NX`L(&r=w5{S(#3e!ME0+z&Ti~)<#*dzuwGgV1Vsev z^7j{)$_CAZ_H3hGMoaryGjap;>B?rmpPp(_RPIILSu^o>8-_9M#RH1Dn;Wg$JU8zh z^JFh7Gd~TQ1gl!EVCrt}%*ogjby``K>+Vv&^MM8}(LCzxm=I5$jN{DSo+oXiMks(z zJRy4xzD;F%2eU@fP-UuirzR8i!tJeCQ<8>T+kLwc#)d}2RjT73UWY5>@2hj_cz~x7 zmR_p4cPf@|7L$H->B77C?ZEqiDZjj~<@!Z3YjkBaL0RfZ3XA%+Y>h!XV%M@-UNMCw zIQ3fq^$uh@6gmzsKyJjjRBR_R;awET$WvAG4p-q9-NgE+ zW{F0Yy!`0mYXXux62Z*;{WA4E$hE>s%_M|@YbjfX%MJw7tbih@k?GDag2BG=Bi&7l!Kg?4E3hR^PJbsXttbr zxsQ^5xkgyI=hKuW2pS%r6$Al;Qm;VgrpdytiBXn=34ia>*&lxBezkX}lQR*lm_G_; zwXXzF;KBLFRF@{$X>o`%Z9Ha%r`XL|W!nO&y)>D91#wy%bWP8kSZ%EM?@3t1Aq@QD zv;N>R+}+K_kyBlN=&|aj?UPD5+C*W~)FO-HqX&L&1DMSDR}$}&cBM~DjJN9zOKDCn z+d|xFG~L<|2bVQS%Yeltc?0S|3U{_jw~F}6ezvrb@iMm*+_KbL_)#BSn#PJtDmV!i zBg@otM_-wn^Q%$m@0T0@-a$B`gu9JEI8S9|7JnEh0~Ktm42EwgcNdzO0DfSm5~N!y zrSY!Lx+bLl6-J5D_6uR2ETZRwpY8Y62b&w9Hxl8;8>Mgl{z16AG{dgYZT|E#P}hez zbD~wxkcDX7G?EQ8(dLX(rNTCo+V+4(LS~YqO4G~9zWTM(s(GK@h?QnoyRC&D4>Eo5 zMmj*Xj%tUGB!N7td`zAyYcI;rR9_$^6I;<{V-M|m;xica9+lFD;|W@J1Rf@;W>fRq4~ zk#`GU-UHWOBHW4+o z?$$t9zUkB|VQS7gPBo?|5eyn0j!klu;Ky45pqe)J=cuyE-CB?3E^*T?CoRVe1oCkE z0UGcc6Duz)lcnpD&kg6V5N7Wt-qW5P`}+LIB!J}i9thxgk4sg050gNllU_2ky(QH^G_`y=V%L=8oqU>ua^EuHUB|bNm7qylXV4FgHz+wNi6;4 zsdj3vOwiJ%JZFWy?)Eo}R|~kcnaR+V=V5mjN3e5a zKOg*{Jk<6O-yy1&%e4nYW1 zAq*+q{snsKA5Oli?V%*>8ztO+Mpy+ys*41_qOwDp{~x5fvYfrE0N~Vne&+eh;u|)%^F5`q9T5rE358 z?BoB0g|3A*VA#@{>pM$%mh1-l zR@j3{q#kgLSza~qS_A8USqj;A#Y}o__M?^D3=3H4l?$>k}@FElQvr(%_ zQBxeH(la(bg*ley+bQQhhgItgJpN8KN^>H&JdK-oYrEX{(F2`-E3@%(v3(z6wKyEE zzU5I0c|!`jR?VjAaKiHMLWaceHjG&hi^=&@O2`fMPzMrm;$D9vZ>h||@((zB)z$&2 z(P|s|8TFV6Z*aP$u?$MnX?c4^G(AM5&j=iNHUCrmC4d~1o=4{k6kAbQ@_z7W8q>Y0 zeZ~RW!Ckuukk7p*L);3(LR(zgl_43;Hl4iv@yymFk6(&DA4kur?nGuPi3Sjpf8hH4 zNV4qmR%`LY^2==uO~sj&plFgin|u zInLi=CvKsoJd+UiUn(X-lfDv*O3W@;r;EJLc~_ z7ZcQIls}zAJskQMcWYk7%-q4-XyEv7zedx4+<-?)tML9PgLVC)8m{&;eU)O09`R%> z3hE>$-)A9~$t42PN2jb`Ha>y@{-NbBz-&k3wicKJPLgr4I7r%?MRSNOnW|(1l8BVY zdB@&!=NAiDfP4yG?nF&;PGZy>5ebGRvKYMPnkj?Yb+$^GlF2Kg196f&HM$KXvF=R+@Ld z41I=qyYvsUXC=C`mPdZ*kM_QptD50nQqM%j_^atZ z!~9?mH?)02vD5z0H+IqQ0RRuvy}o%w6uQ#gwQjFCfJevYJ~^958=7g5S$Rl)K+hFt z6~w`542qrdDdSE@tW)kzC-V0NZw+?`!G)f)Td?1uqu1x zPRrG=Ulw>|!L1VAO_f_0T>TCA)_ymohmlY-0r)X^|DPoxHNn@}Va$GP=Cx_xwdCe= z0_*`kk&Q3@Y`xyf!jpIHEcSgs@AvIk+n$(Tq(j`a)qRkh#0Jj2XbegTpM# zVKT*v-)_W$(RMdCvzZyKi;{!S4gTatXkDIYK1zMjs2t#AE}5{ZG4yKcTmP!rWUU$k zSG@A&UR+tuE!bQIrvW~@1&EKPmGw@0)h}_>Z~HL1J?0>F-UYS)u8x>gUm@JtteT9* z`A;P};d`x&_a17J3!vXPabXHNZUdFgxolNT)|`Roz=@83VV=Sv<@PQGg15<*3;K^u z-w$*!I;Aa{Lq7?YN6Wxde@5_5P->6~g`E2itACzAKg4XR$9Py;SFiAmF=dThrzT8u2nwUpdzqWTc4!}*j zR3)uiFWfyh-o9)b=x``<7#=ew-E!jFz3k)9>-n(mo3S}>7e-GR=I`8CFJD8- zaSY1K9g}MNOXp_OtU_aV;K67>OJ_jImvxOm8Bx=AJKiJfF(eb-O7IK)lT7&combV} zMn%|5Z6}8RtO!94!Oy-8ft2QOsIp;c{n+U0q&vaERf0H#=~?7aQ0lio92J zKSF(T=<==E-~UYT+EV3$W!LFEci+2ybxK+^sd}^}V6NKv-3BH673j zpXmGK_W9(l8h6Uj2x%y||B=JLw1%{!?p;J$mYn>?8A#$%fh@UVblrNjhAK*|_Sy&< z_apS+-J&~t0_a!Jj>NVhL>w^&cA(eD7W(h{vaEX6pRxU`bKfr9Rjzv;wU!4y59y7< zmW|~J*Pc)$*vz!f6h2m9vCO_?!30~Ph0K&)*?Caju2c%nv&H18Cxr#uN;`{}4FWnq z`rV|-jnn6ek~?!!b%T3fq_6h+dC|)%ZV~K#u3B;?T<`FHlvmxO`Jd{M35&N)0YC+O=di5T; z-zc!j7gSE^M;o*m6AZ=46h1X;n^p;2aXA4~NWGr2Ag86V9h7T4`D@xZs#9 zI!Z-F0#%*2tfF2oOK4;LYZ{TEvRE(5j44u1QdJ2>Tfy-4-$Gnk!;<=+FwD-Czpq8X)I-+){DU@NQ$`{A8B116NZD0~XIM z`q(~V50q&FeDi@#f~hjOv#-thLi0tx@#${QZwj4XTq9VfxoW&_YVjb*&#ZN6mj+^!oMKAN6{o<9cz70!q%RC>X6hvN7T_ zKTum)aCsy_SOX5RB|n8&?!A8dfoo|eECz7$LBpJQ*KT;NuFr91@64w=ZSx^wch{_{ zm`2`XwPh_Jx+`;{iQM6&v(Jacz)uShHN$6Ueky5tS4khYVJ+BIO7k6JM6!++UsmqC!e?87I7`bNKv*_d~l#1H$X zE^KFH-M}Wfe5D%xHWw@llL-STj*y`zd|J-<`90iQu4}yOilpRPXoZ|4s4&jyH_P~PkNZONb zyf!uzV%97Bmq%wW^lG!9`HnY3T%Lb|+v1(66FK)1HPZfOCB|^;wQO(b8nRFInfz%g zpMXSo9o$}&eV>06{XIe-K3@8$eq&#ocL42!C)9I(nK(%IJ1~G{71ns~tRGpKi_gDL zHHkBAtU;V5w(Bsm^jb_ul%+Ye3lkF|^0KiLiyb|D`T?{McL1w>VYPNYC2OD6*7Rh> za&Vkk#&-{ca}K6ep0j@$<=wP*07*c$za|OyWB;f(@FM7x_yX%Po4HH*{bPDVhJ20NzX1az}zUX!2bO{m;jwjUJ1>jS1M zw%B`X`c)aV3fJMT6{NM>Ejgg2vZm7?*F@`n&Z%X1zQZFinsgkyTGbEWwxjrZQ14=E zk6lsNDlv@Z^#2(N z_J)0XWz4c0aawxY)S}189QFWPwZw~Vy6%a`R8)C1!K>#KXV<}Lrv9rM7azZpiTg*_ z+4#zlN2e5P7bI@Yafybh%+>O`BL*JHelp z-!c7Wq&wXbS1+<- zJKy%hbC1jFK-)OCJ+=_Q5K>4T4HCgJmYCz^%;JhE(u$#^js;daxkrcv*wPvwIx7qA zw9%gme46?2-iGK=*R?fSh2~!Q7gdbF8SPI4sdS}GN%vbcr^taP~+|2Q;Ai;XvNWC_cyRs3^7-e|A`6U;6dhb4X!N;6^?a zXl4GcWRGy&a;397UW;bh))oW!CUH%r(bc}Sy8=(x+bA%K59a4<}^);9$ z7Du-}Sh(qKiS0&MWRv#EJ!;l`A%~UI$#uS3l4}Yxt{n{cI3V7YRm?71mXvSv56_~? z#?dJWR}<#+rCP=ou0L{FzE7RmvNpJMnM7i@uTCCOPT-mtU<&~B&+9c@zVx?XO?&io z8FirXi=NPNg6U)B0K2&qaV&J_?LM(iD6xEFPrWf|%g3^WpX?p`lAK*t2Pj;n5>5}H zZuAjBMqH*3MeWyA=W0j^`l<owd@}<=WJ;o z9)5hHZsuX!G+`Gxotyv!ac>M?-NbTo&0{gH;emDEiq7C(DR)K?3J|@RF@R`X#e$}8 zZ4EsJAYE#5)BX8t-=ryXAn`fFj0u`S8y?TWz&@^h2mXn|yX8y10~1UvoH>wM8~2n624+7lhuYob2uze*;5x3!3SdI|+ko7#bP zjGI^Tc&DHH-n1=#sOozx6R!t(x-ZZEA8T(J7RQ$D4=2HbyIX+Z9^8Wmhv4oI++Bma zy9NmE?(Xgm-MB;JE^o-0d(O;zIwzMmuO}XSI$V%V&vHkG%Ml$ zkUOvcF_ex-J8o^+9-@Au&oOQ0Q$pmog>8JFE7Aj(Uk7o{E5Z1-m|0+TvyAWP(hdf~ zpy7gW6plKTZLJXUdP!`x@O65Rh)56#+D0?gXcl?kwWiPf3Rcdy34%8*diGs+w-9M2 zWXmX|F+ZJS-M_uIHiCua{z?IGrI8V#|L!Si%-XEKD0npHHXy2R>bv{q$^o9vx#BTWA_#z>>Z|A!sU}+u+6RJq>Fo4v(c0*VZKRG-|%Tyd_LwBHky zZy|(994pT!S-7qsh{HH7X~hn*YqagF*;}rq69LwSiQdY$P?s+b#WdoIwr+C=NRfXQ#y8)t5V{NcKu`qWZLHZ zwv0oIb(@obX*f^O^m873Gy{`hnse00GJDR#*D`(X!(sk#WzTZ^>)6y9DFyngdOUCH zxXkKvx-}&@X*Vu})D!$2+&+wKwDavZTXbY1sf3>}ESSB~=|bLLajWotfRMMa&yhH` zD1EdZa5x-{lrajoGq-YSgqN_tXdDv;0^OT6M$2>u-o0tZYIa|99KbWyQWt5`XZ9v~}uqJg(GQ0PM&Aw#PY${-6w}yff z)7EKAn|}w%+n^(M7un&*qY#_#ncAGeF)Ny^)_#FkMGN$qdf>jQsS3-Wu=3Js-g=Y? zm<%Ms>xMW0V-IASAxhvaF=^#SS32&pSm@O*bP(xlVspk9%cbvxM05@E!juoo*Z-y; z!rwJ*fBad+7HEpDG&|p{n%-*~RB(xmDDVyL<%3p!5@#ofjlsM9jHz!NJCBa)UO`zG zeKq>gZje@`hYyP5I45McftTJ398oKAT$s14*)D!e%^`xo@LZwT4Rl$mC!l4@y6AmMc!LNL+|b|4PU zu3>fq(25G-GdiSca}wBy7kK6e9)AZ$ug&Z1sX?~P8#~>j`A};1ONF7>iwRL6&WT8kgtUnW$ zy&U!}FumG6ZOS$4AT8eDwkKAPu%kXcWhh|l3~#>dl7@%kU<4II+v$^%2!*=CN} z`B$tcY%&%R92*w2B}`CG9@I548+=2qBh+hkr7P)RY|GRHSAQft`lbkdas^gHsaF4U z@pVMy8WNu{>6IFxT^7y;oV*RIZ`km$I?U6hEw$MniDo7Lwcmv2y_ zHYg59AA_dI!rx0ux629T-d?7L-q`}0(mZp35AlYf8J@!@@37ff-)YGAvSSeA!Lw?C zNv>`IkR)$(#%}k69?Qnw2DKJLoxpR{o07W$RlXdbe6dwB+VelocgNkE#^Y++ePV=>pqEh;58rlzt^Pl4)B7W z$FViMboEh=K6l~0)pzTA9_26|bH}3GA_3p$qufoTRzg#RZiHn-)11VpABa443nroL zyUq9vxq)NcN9m-NciTi28o=O3M{`CXx~pUEdr7#yaieB``XF`5&-QkAIgX1?FowqY zyD=gWoh{o2%oM~j_|i~n(8uHhNJl*HT&#$Sk8%!c+7^?(jv>b4c?UiR823$@l$uvM zJj5v-)hz`3UDYRRy1OH3wwbu0kgBg7m?QjbAf^yf$VHls9JrUURQ~8G>Yl#hrl~SjATsi`rQA3Nr`ii0 z6SGPVeHARWun#M9nR`<$*XA^0*Uj=^AeIosU4$(9J_Kf$V&ZNGGce6s0fcsW`H}x#IAKU?x`b=sg$AC;)0NijJ{nL3*Q$qI znnxQOlb4*Qn49WO$)>ScV$Q75Y=jkIhC3#9=$kl{mv`J-OiwiGeiB*CZmaG(Yb~`} zG#43*TV?H&pfwqZX558=ex@#2?T{9k@emXr9Zc=I^_VfyLnpMk!oOp?gt!PBckern zq}l?xeRJo`cZE|+F-DkJU8oJkqn4dVgm+nvp(ZN~5H|ZJtRkEmVZ-8;d87XsLdNkl zYjzKb@pI`N1%g=G3!I4HLb`DfS23 zhux6SEZ%r9uerrk+#_9s@&?k>Ti)+1gBb}wR*}=)`fY=iSADdKb8uWkD(Op#WwIg5 z^tbBRSuGglnWdxpk9WjVB^5=EB=eR8Y5@E#o`K^;{ZE2DFWn~L{o7wIdl_m0}BgkA@kfTmLm7pB=~J1XCn#;}%yAJb`{zeg(-c8pkR zW4?g4CpV4?%i*v3?Rw(pI zWP3iwuCS%bCflGryD?;G{>v_mJcQY3&iU}zMv9cM7JG^yTK>7I;bc4&m%2QEks^xl z)yiB>!x&p~H36-1SmfD(S=yW%k9ec+j9F-zsKkcyNv0{ec$E|4t;HUemS>=+XXma7 z(42jA)w(3FKJG?iQ!DHiM%c)8UVO3>xSQwJnw&v+A(!G;IK#W3!wGwRB1$dmRUdXe z7!-X{GQjzGS$DeFr-v(gvqBu4qWQkGy|vCydHbROl7dgq!Wks^H0KIuDhi_3-WSQJ zV40;C-ZP`)cRd+%w@pDq2RksLR&q<9CWE91?(-&Ukw3m2lJ%0haVkd)U+cZ3hg@Po znAcY5QV12zgC0lQwV6KQJGPaNJQjYxBM;#qEQ1SkMMkz@iynI(pRMOzn7BDR&u*dT z9kV?O_D#{6Xs?}2Z1cJVnO&?)0qmp_@o-+Nv|s3>42oN74q>!1hf=O32azc3N2y}0 z@IK4gD|~Bprt&i z4VAQ|3E|BtDgob=a>iwYbC&Xj9Uk#Sz?ttrC7cQF|?J2dzolC=|9ee%Mc!@)U)PyS(i|HX7ZGHXJ zz&wYlaF2Vw*ZbD`l5g|(e?rN|4_r~%viCF#4+Lik*Oi_|1Pz0hEC}y)!eWU#eHa#v zE>J4j7loES3wthBs!@NcNB`-Vj6ZPhlREtrm?t?4*;zcJ{P33%6 zwrL@bi=PuEkJ!x3x%IU5of6t-gB_9$Ge1Ghz`7{HF|JM;2U$J;^FxEL@C>9^W;?Ds zC|B`n?Ggw~)9TjuDqq`46V8I{pE<`|&iU3YbF3;;;F|I&SEu-xe`0H{zXXxl2d+Se zpLvC?Ky69ysSWXF1AMp8TC03ZxHTp_X2~1c-g@dcUXz?Blk5UMun6D3eIba(5gTMV z@DvKcF2Yg14F8bMkA_xU5lLW;N8~}Rbx)cbxsj!kJHJflu9V?y8Z<+hzFzi?m?ek2 zgz6d~tTS3*=X`~>D=!{w=<8WMONhltR#`HdZZJE1F3M9dI9#hq;y7ndaP-0$3|~4Z)u<3<;0tOip7)+h84ZmIjwjaN={xW zcl|2|T%i{|X$GDsg&fQ^!7lbw=w|#(m|)Z_XLCW8M*QOVo~X$g#Sm*RV|gBg>Znk@ zX!g)S2%gmKy-dyhxF(*ol+(_EJ{hu!03FS} zakO7 zCUc_;%ghfROX@YwXE%kQdbMq~)v3oFPEEAyrgg`mt?(cC>-Dm&i5s*)hOHMkl5qg< z0W=@=ZMe24Cil`0kf|VokTd?N z2v+!Bh9E$rs z1#{7;L_o^jrE9ZKO4epL0KHApkG9kk?^<^U^Cq(im9o;(Kf3~S-~0%ipE&ccA3|hL3Fff5=C^_=ArO@y26d?=RJX|G+h7<0ebU zlBnI}AfbJ)Eno%6CoUJ2Cks^BVhAVg-g+b4sfH>GLXjhPtZ6jdrd@_xkne8TwWFT& zlI*Bt2}HD(+O`Aq0)0!*2iQg`_=EjN;~k|Q%;gVmlJTEd?bm~#W0o7$blWTXP^SBK zlQX3(yfnjcjm-vQ`>V^#_N&WYVEqM1YJjP;qBlS<6U)jwrzY9w=SP2Xl+a+;i>PUxD?W-XsqE1^bv-d=S_Udtcg||vZ=D?!yXBc5 zy%uqClJ!2V=)LmA+;3h(LukCM{4bVoy$*j1D!fr_(K`OmxJ3t2J7`m(!}tCjN`IFG zpX@N6bnGG!_oB4Q)s^Sf{<*A z7LVA6_f$fg@BM#d^1~O2fo3*Y5A0z-#-@qYBoglRx}oVN$9cvntSm9}26_qpU+JdA zIidHnaGns7G-d&^`i<~W~U#8@10U_`()xHwl-gI_;RG$3Pxyyr7gdZ!Qo8s9e7B6cJ z`D3~e6#h)_gLdbj4jaGEm)dhJPr>K!NEDF?aphu4^_7>Pr=f|s61zdNWes^dQ+bb( zKs-B3d5eoA569ybH_!`DIp9e-LDsW~>$n>VnC(RKlsT{Qzc=#ywaG57{kJUlOURvI z$6t88zfVvqp+k!JA4=E?sVA>k`1vp*X};=Ul<~8-_$lQYE!Z6F*xWj{r5djPC70Gw zBTZubN&1#9qoN1WIF5ax=<*OB2hT#0j5n(;xNpbosIrfWaW(P5PFLAWQnNuXqGa_@ z!7;ORRTsHc>vnNv>}Hl`>DWN#zPTL0WF+_sDz555i@p6a+Ro&69{EZ@xn=)%nbt4# ze>nKP>*=v*_zMK}nx8>k4DMF}gXfiYBC zv>JbQJNC3lI7-X%B8fQ!%xJ&;xHPQl4)emTAg6`Ct@xi_X4~W2e-F{{hVF1(|Cu9# zvD&ZUgEQGAKs4av`D4lXH`_j4pk_)KWru@z4UR)URG9>dJpGMGeNS!qe~)4Pm&uzB zWge@bTjMhy(zyYoO@r!&B#=$VqLIxoJ}WzMZ`a(hxw21bIOR@Vvx_zz%~*7JFQcPp z4_xP_8fB%`m&z(GWxmLe+N|`8#Tv(2w3Y%bk9y;Q`)BGcSgDCeb0cjYua{iUn$nk_ zh})Tm@zr}!7ilh^1C45Wi=%xXaDF%qX}D+p z|7eJ~qPrUpp5)x2P?C(IZzI!3-8q27{Qx6g+dvjpl|?Np<(;HOckIUOn1ufC>BEyw z>tT#BhiatNRw@fmL`?z=W6pm`te?4iMI!;5rR!HOt^<;Rqwk~(ycF@ek zghw9>`N4`$|E!8*MiEE!23W5lmOp4-S>1R0qcUA zRzK=O&ALS!8#^)G@`R=*Le$GlE+(%b=8-PXpV$x+AXhfwD=kEVBmZudv1H_4hDg^# zl++`8++K#w*{f$752Ste*r#{=?xx`(?yCsco?!*!AuEyY(`VTGAS}!osUGx|O$6i{ z6*FV|h-QJ^PV;I%`zpupZYzS9=U5D8rGb79(4L?Ii8A!1Ag)y#h4LR8o_p2`RK50}>MccTPFM~7JR&R52USJ8cB_X> zD>roqccy>`AMB&vt7GLGy>Lpz(SD7s&oQihy6cIUKi^Dv?+1S(MDSVAePRz;`Vy0OuE;Nvy|IXRa2f zn;b7pQr9&K=u``3W8VN!-6Csh?mL?4xcKBCHEE%%U>AA4xiAK+xht(4r?h>o>@vX9 z>=+6^m{rYcNkZ&_UE zYJk2h6s9ZIE~`wjWWZf&ZN@)KA2*juPg`DTZB2Vh+Scs{Z)5*NovFG11}h%4_KxTm$p86 z#&N_?%V!7a`O+&l(~XagkLPaV5oWtsO%nkGNGd)UB^{95{q~L7+{D8PAQ$PdeJHL5-j>Y%ENW%l?_|!H5%FLGzQif%H1%8+-Op5YbHd1>SsE_zgcpu zI3CN=kqh;wzGK6;a#>mVd}9?e(;?NbPEa3pGO+Ep=PbXLw@DkRzP0BZ`xDZV6YzD# ze13g}8wWIGh{6a*eQDlTnzVQ%X3`?Z_mkD)*S~x`w$IQD7lU63+DYgfjqL6=ikm)- zakj%RH-Q*Ec3D>jW6N&bwlf=oX#Cr^k6J9l379Ss!9RYhS@;YGR&HmBQeLWC=@XrO zqY*VFSZ9_cqSK8UW$XvsaJka}qi|mHrcBp{08^5M&rmB*8^0|tF4RbUgsZ02)Jq2` z>xNq?L*0As zYvc9~|2CwZ_gR{8mbxLo38q*je1s2k#plzDIr;%|k#j_9|F*~J8v9w=_Wb#M(SC)Z z@m{ygH&v)()GHXS@iQkbWK!lcoz_Z+teNG(lCfyfOeVc$R>{DHpDO8dBSm0|X@d?j zEa3wwXvNa-B@vU^jz!u!P8w-?z^IBQ2~Ip^?WkE~tH5dJ2U4n%q6Z#|4CyPLBo?DD z?H-&eJa> zCAlg3m6p1+EYOMyD-Mi29=6nW(!;O2?y}fx(ix1=+jLexIA!Q783heB2+tTxIC01e zxqA)_t&we~4m$YW_!W$hVVxeNZ}L2Q-mTLEj&8<_bI&Q-t^-!1j&(nc15_GJDO~go z8HW3=d#mkefRK4?Oee(5$+f7Q(rp--v(svda?cfSkgBtaj=q%M40Q{Eo~6$IS3#gzv4p3jtm;DH$MXVEKDIX*#rVl7L)b)R{JTeNm7<6 z*p?%1z*6cl(wk9ew^PL|%hU*~`-fAK+69hWjdc1Jz2Y2FmDgCyE7iZJZX4CR;#C-2Fz)g!_gZP#0Q!7-Sn!7IR(vWN}bBj!2@sk@YUn<*ayy!!^^Uxo%?1dF| zP95-5D+iyO#yT&~8%;bl6Q6w|@XOJ)aBmKqE~!vECsQKzSy`K4vw}q#2?FbzuECug z!bKO0yk1LfT)f`8r)coZK?t-SA=rhk&X5;ZTDx8t|il1MoWwU5W!^ah!KW*xM- z@h9tS%n^U{wvg_L=&9Ai2)}=!Pe(3Cs$k$ZWv$3%;!l-nKU_ei8LRp+x47Ubhd! zT8aCzS9@=r%W_MWriKF8+lSyZITgTu?1A}8u(3Pl9vf4ZzL_OE`&pv!sncg{-^cW; zIHZA+;MiNmC}Uad`_#C7e!cc$8xcmBFhfC@fZ8Uu8p5TMseLS4jVV5pL zv`B8?J-J^zv-vWHtEx++>Zq^z@hL+YJ^J8=zap4mU6xXqI1GPE`Qk-upIz>WqbDx8_3o15}fA|PY9%fjRB`8D~;ueGIt~{tfAcn4Wa~%f!Y(mNQ(U-7PNA8 z%Sn3utqdLme2#l`hy@Y*plVSU;g$oN&LibVGicFpmx87OzNo3wdE3s}dn{-8>0X|_ zcp+?p^)<0JfNPXlMcQg1$@oT#ySFZjUTLVL8{wMG4Ae>|r&UmP|7EFKg~Jl33Uq9 zT3o)HfWWx5fF5u7*jk7@Z4=Sz^M%(wBIFzlVK=X|T&tIEM7v9;Sx8-ll@^&K!Z%}o zs)7C*S7n(JI#T!bXJGbME!zu_!nLiwI6a$JeEqR4b!tFdYA##xB=^ak&#kw2UyyV9Cl^}zG=6Sq3lvY05^rGw z!|sxX>!wT;5ZRpukj87Y!(a$L7n z8VTX4@akCJQA$6VXFz01GRCG_^WY(>~I}Ubp`5S4XN-TlET$QnKlii!tL*3j6`o=|*-Y2R0bU>cLp>U#4Ow-Y|`&Tm?TO7%vLw~x@Mlk!3V<6J=*xsj7p?nUC^ zU(!73+uhxvxD~ff6Gbkf{pBpQ+#`neUcx4Wd39PDcNd{XA~}A0+JNg1B_p8x`2aC* z>iX*eVsC5ewNj<}4j z@IEMvwQ4t|-+TKuDiJmaeV_9oh@di!BIs2(_R$puFD=KYw|<(3`@$qBjcRDYM2# z@UZgfeU+ktFx0~|`WSy8PEGVW#*X9|TjzJCk>tk_{5JYUzVGuZy9kj6o3t&k4M5wd zQexhqKx!ku6DR16lN$}UalH3^ba&4_uvE<(yU6bE$(l4+4Mg19xB`h7Ala7~!yWor ziyVJI6&LBwnHKkWPr2W~<$ngmgs0~}w=GIr9+@8t9np-}hJ>UCrafS()teq^&~jd} z52xwxDD6cf{DgI7W^##DNfo;R`qJmzf$fK15cgFtq1tvhe+?h;i0w<-l zfBG(|Z%YQr3~e$S@geLREC#;{shyBn)QRu7m8&GOql<>z3C?}V#QQ5^Qs%H;kuT%S zM0PAm5hsj?qQx~8ZTp?&YrJFe@Pna`X5))XJSz`#k#?Oh2kwUO<_kt>SL%kH%AU5k z(q|)`7gDNN=CjbBw*4+8QB`q|6=%lRY`FQBirc7vzFjP0EdIhYXx-m%-)mOFRRep*T4~9h2$rgI=?U1KU=qZH4hkx%Zw5t`mlJ zvgv}hKs2gxNE{7a4Q9>&@#n0d8g+*b#2}OmJ8KZuN?(w9m(%!w7}O`_=40RUdqWRG z4NO&n2#HZrkzQOW%54|A#RuiZ4Gn?*Po8#5@;z*LXD>Eeb;Hl7U& z_QPel+c#VAQ~VUE8A5HLEb>5d2P%TTS#!Px_2d8v{~^%mCP2zx;}5ot_>PR%0#E)^3sXM zfb=F-EfP@eKQDcM4%Uioy8Yh@f@^-o0Y0Sld!79hH%nJMM3PV6O~2;sQ|M>DgjEEn znsPPFmXF-1a$m4WMdo8rWf+%|0jegc05ebS2~NWe!2G*mlVay-p5uoxwpUe-H*Zq+ zc>Djf0?hZ|tb27=i5da669DHi4$N}cj;W3I{H_R0tzt)qo zZ(P@n?Oy9ifLZD5ovVX7>6@u8-#b+ytIBbdRdMZct%Gcf!Vbz13w zF+4~k)@DUIp1{Ja7OJ7*?0@RTOCw!k9G?6cW4x{|U9+SnM>}5Eqhd+gQ}JFANN)Zp zw8}L}i@4jR-OcE9W-2k9;TAsRH4dn&Gi}xKTU^N`EEYDakM?i|K3!-0R%WD$Bh8De ziJWmyWQ_A#^*WQT0jNI0$PoND%jO4!!+%_S$Zu?8f4S@Y@ymbpJX+Vt*OFpw4;DXi z+~0nB)9A;T_-YCP?ta8HqVl>|v9@!T|Gr@H@9Bc{HeRm0^o(yn!MSjeoAaXs?R3r9^XSTwNZd5c6t6GCTO}4RRY77;nLNnYVIVCGCLsG^Z$kRN7_r%>pIq(=V`$!>%a7RIF?tEx>et@71Y)NQS9#eXU~FK%=C_UP%h+gG<9(YC07J;vk(-#^n^Ok2_b zayU4}4yTQsH`cAY+;wD;apdX^-CcG1L!?(PiBC@npd&Yk#W~WgKN#qOry$(KcnRU)g zw$|G3$ZooNcmHX53&Z8n#@m$_KhOrcgt;tn|DsZ(HlcM-uhOq?KdGn>MxXQKtyd;> zbmV3^nQ*Z90|el(9>fu|+o+~{v$(WNqXsheWUck6O{pE5i(wnB&Mf;a`ROkpW)LFg z7CP#LEpRvgDx!5cHdOvkh$H+y-6R6?;!omD%%CCW zK|Jk{6li9%?toSPOF~mH(#s|kCv&|c{7L4XjM4!n8%gK;?6~pU_wHhu3nMg@cWF@!xp+|V4&lr`dSgm+_RdU zr75sNG(hU`zH2<(`~|O6%?a3rINGe4`8QdogsUN%irz7$&*sIYH6FUk7x&!N)!iM_ zJ3m_CM_-I!wzWapS7g~vWnurkco<*aE4b*LpX6e#{-62hd3VGL53cLpV7)k z-uiwm*rVzmfT@(0UdJ8i(PbHZj4ip(*s3Y|1}K92VJVy*;^aRlvk5|HF?B-E zVwBu>P`B;<+tH61fRiaN+8be=t)(`r!fBft-xrIFc3A@sui1^nZS)mb65Ll@I&l&v z#!(>$T#>u)5zxyiGM^n{x~-fU9Go(fZD?gjMC-jUv%h$?xE zR(n`+)w&cyUb`$>12gUNK@9Y#DVx=mPpi)c4JS#(v%Ai_+5w)mmvuFQt4pmwLTk{n zZ?|-^F6q3pgK>M+brb&mr-&1z_@_L6ZF~%%x0_7*K`Lka>LDmPnq_CxV+?UVz2i_A zaTKBc#<=a~-BO6}HTwNi2mt?4dsEy&6L{=%5|-7hu7Unk#R56=oOT#k{h@E%J4Eo( z?j-V|IMF!pCVVeRdeDQb!AjwV2JJM$^5h~`ZuUS7b6zl2+Dvm^d%E?)=!DPex8f!k zDuDh)=+8T`GIW}Jc(BRbz>Irjw*w;bMiag_VINMCk}A{VtaWV%YM4fAm`v!Nnmv_e zG{y45;s^S^2(iz#=^}NPwQwH`CK&W2vc7Q+G`6Wz`AAv|B!od=~<@-3L`3&trPmI}<8}#jbRu}b<>LrbP=M!r0MnKW`?!?xE6tnx)iCHF9 ziM$|uX`+`c@Js4*ZCQeO{BnA0n3qfl!%E%{PTwt_@TR(79&b`^@|oQG0=Pku&ttBf zAPL+o*TCc%8G*Z*Ctg_xp(=5q!|7PhIvp9LP7Y=!{exn}4+mw!Z|!|8EuID6#fB{$ z3<5n0YS>i5OU!uEhm|Mf@tbPz5TPYMZOF?w9umj%Dv`K_-BD&gOFnyuPQ;oq385BTE@Ab;gs+s~w`}Nge~- z^om!PNgr*E>^u*wYS%)l6ZuFEnT*@U_#&2-iu1VcZs|{%@MyhA+H4bjNh8)et+3_(2)eza&;K8gQ0d#qd z1o<>GsSs9K0Lhlz;nSDAWH5k0YqIn3okpZQ#=)phy{r`(AmpcD>(eWS1Kd`F(mDOl zIm(QsSqhBb+4Z%=tEKo}{9{yVfh>Zs?Xi@ZZhxPn?2-h97&S3E4vPsX0PGBo8yqUb zhpT)NwYr(|Ir!!4vRH~UFR50!)A1SG=9#M_dXW?U&6j)x=r6PlZsQPd2%=N;Z~}Jp z?%rm-!Ic@zIvRR7YS3Ra>YqgDdh+`cBktgcAZx$Kp>#=iOkp;fT4a{S=Gzpw&YSTi zMh};2lQy|}HdetaCr?Uo3GN29>q$yx*P_-vTL zEI=Fc8D=e9p{4g?4#8>b>zz6RfXeIQqK;mjHC{1Q&FJxmK+GxoF73#?)@L-cqC*}` zgMFf9dnAN{Q}8eEK^43j^WZR$-#!E$9De9z71+p4A36T{Qt+U5e2$Zs+TM=v|-mo)O{&^ z{rZ#rB^KI5R_LQsg^|?Z&^w77Kf9g4i4e``#oZ9ID9g-N@Jpl(-jkEWn@*qVJG(f;>GC89{?dSN-7*D> zZ>~_4(OtDRtau4X*HkN1fK5Z_$6Xql#Dw}|$Pb`yJuK?b;!vMPoDP=VE!MBJUDZPy zrm}C8^9$sFn3xOLY?xTM++_*S{O$KX8dtY=4MFvpP+5wTAbuMs7oe}4KIF@?vG+Xo z#xtd5GGc^>jKMvNktl~oaI?xNW4F1!|3^0rra8oW^yVQf-p#v*Q<~YFAva2gG`E}_sF#tl?AU#FC=UkS=ht z;zN}_GFOLm48}awtpm;%7|uH27jD+WUricR{#M1Fjk&q#V5R-zolwJh)2)XXueVm~ z;H8U!v^sV+f_UX_{m|U>i){kbj81zuWx}rL^QO{gRlKjqh)4{PHsn%Kj8ZuJ`hfsZ zK(4=2i|P?q1=39yaNO%{*i~hQ9+AkSWpsG2GD5>807+D%26SFbI??j}*&|WC-QcKh zGn$=agia5!v5^Z+o553)74AlNGS24c%BYjfkgD_>-VUL4sQ0xnnRjXhny4Y$4zy-#aB2z9qI@`z4fMq&%_SXeJ8)i4<$b?zdR%Z zQG}o&h$H%Hm`otsVUoim@36WH6U=`Dhc6q3!6((W+ot~SW(n!fldNdxRNGc zBwWKZubho#^->emHM8mz^DQB}MLcEq!EVTVBR$$esQR zK+cV-N_OA5w$D3yS@aCfHanheCGD|U*KWJ_s#88wqK|hJ)nOuWJ()8*Bjvk1Dg5wf zZiokq$WUlvp%F#Chr8p9B)-5k`~i(S)JK@N_LYD)yq(%fPX4*PT2LxEY;Fjr`#8_v z$5-ePD#G6cs8Fvx&VQ#*vP;@0dN=!gzHKwb4W&Ai*tWhOaj+PnQB@Y_PRSff?}7JL zmA_fCLer@=TaupcKw{;Kin-&$O#ZPD7aLiy79)=V7$Vcs>%-fhX zwCiyI{%NU!zrMttQG05^gEs*3({?Y|t#i*?;i>E#m?&rujX~Z%pPq1Ysf@7t#NJ37 z^n&X|dhI{H!TvI3UC(`g{>n~{pRT?AZ(pNafs^?bS^HkL|A7ObIhIMrYcU7<jM_zfZb^&|w92x}m0Hb_R^)sOkGuOYCC-QoDcs@>GLEwT_(8AI<+wLOQYk#s~@wp)c zu!ri_-M87#5y!=;1K85{m~QUJ6@1>Dw49pTLyt$hf-G;z*t;rDYS9LAeLOC8XnrXu z^;LaN;xjA^3sL)-QGN&dpzFr>ZqsEWF`BN|ST1vP&5% zyaiU?EYD}na)zOq9#~$?pq^8W7ve;ab1bD%h%2&WKkGxbld~h3H$}LElYI`Qla4I<})GOKe>;ExWkG*TnCm(ZjgO)bV8buFG>pRge?7}niI{;r6efXm`z{SYHa70BIX zPSwu)v!X6W3c;+`j%hnxv1S8-A8R!pwcT}t3U_fFgifhxlX9rMp9bxp++ z-#q!6jN7nr{0b!A=ur4U80&n8A``OiEF@sJj-U*jMz&w)$-|SpVwev^t?2C4NSr21 z2*z9OCt9Pfw7To>x5S**eh;Msayy$lN(uBM;=HzCgDGWZr3}#J0&pGla8`3OHC41^ z*jaLD(I2$kq!k$7k=HFdJfTiY)Gfonm4 zmQ1n*8X#67Km2XYOh-{Uv`95+n2aU-V1(z{AAHrN4JxI5iudr zucDWC&ZX1wwy3jEyXFvE;`pQKQy+&P&9cuFJ;#-qF7~P%hL_U#;N8oHsjrnaD|Ewm z%CI%2OI^ssTdy~$4Sg%nVP`K`c23y|5&TAb1vFaDF8i(2;A64Wyy^{I#D-;qBH@nLIhKkp_&>$|b zHiUH|x0>J;6M?9ud?1loz$y8LODG4z`8SSF=(E?y<0iNkwvl7o-mW)kq)|ESq|_GIK(p;@<%W(Ah@1-&BaS*v_A!| z-Lq+Y+B$qA@zK|#1Bm??J}*(0oKIEcnvs1U7I7XFjQGv_(An>zo?x7P}+3#A+HZn3wBTr=IP0 zLH>q_+heW^CIdA5XAz$aM2MJPsv=5+?je#})FpMo) zGObBkmA@uTp9)!G%~wTi>rh0YDBfF_+uTr01_Gb(#%_M}@+2XVnU+h0%1-i3;0IX4 zprPN)2QU!M;{Is(s`_A5V^O`jeYbbYL7y>;IRwYb-v(meao=H@!#jHlx;Zo}-Ov2Nk+5LG6msrh8{czb$I^YdAc#-~X*cLTdRSMM z!rX13EVZO2Y$kN`bVxjkA$$ufk*}4ZAR|CEr-*G%BIiNT$U6;4$+5d zeDdl;!8xAFYm?D|Xrj1Y96tDS=-_bCdUCg-huWjOYRNKY> zZsQ=~w|m7~XolH$8~@ob@(&V|86!j%VFAY9s1vW2JWIsCHDayXY|o6g)(YNMtFH(A zm!6%k?vd+_uj;$7pGxG2`Un50zbq;>mQpo0bz@M+Io4ht&RieJ3_MDPcz`^bdY@S; ztNC{5(kg{67tGKc6T?@zEHq^v&CScNOedEtgsiljngL9P`mc1R?C+Fh$NIm$5WRT4 z*2RQCCI5;u!au05JN-7HLlQ)Tu=x|0@Mj<DGzBSf?#RjJ;-ABboeiduUla5-p@bD+|p%K_TZp@#j}XJKO-QOW)-(kSe(VL zQz5D^ZX_gURc;qdDpbZ~Ur;sK72f5+tptuA?bR2;iqash?&2hS#QX}BiDu?qZRPRd zWDCo3kQVoNo7-p-{F5>TT8OI>qlwiY7MuOA#VY%2^gBUEuH_f?DxN2EPl-< z;A=K1Eo2J>#Fl<)=gt0=P07Eq$+d&vSGv@m{?4X_1))W^NXtqusiULFMp$DSWS(oB z##LkE8)@}tm5)`1t&BKw#CHJo0cT>q}5U1!G9dJiQ4y zlVI~LMQ3L)-@7CY)OjFzU%=m)mWPMhJ$V3gTrtO0^nBkjMqu>v@_y(a%wEXus&YH3 z5HMYw>5rZr!vFQ~t}dz?9IeV*?>gsVDz&$pT9SnbkYaCNFPrE79>@rOarIPeNzCcioBwb6tN++cfKG!^#8$Hy{TVx#r=BD8uC*|oK1a^1Hi7$F8E8Li~rbdlLO^i})7KFh`H~A6b~M+_&E>%vTob>i`~P`e#-BAvyeaRh@z9 zS3jNT6dU&*Y_&e~`1HT^OK@CC3k5x7o~pO#1+!3Xu`g5HY=T8JEKt=JEe8hx9`E< z!f~gi;XEE@33S!NEiSTZIws^KA2#0nUpX<|w7gygSkIOMjla6-4g0Ub5-Fg6O#cYk zyGI4p->)b09c=EpG{O8(q_CinJ+5FBb_TeTqeG~27=k5u$3{Z)DQ7b7-|F(5m|AQZ z*Uc)rzWAmFze0Jji9)Vn9=BLf*DQ)xA*|~J%O`D7cIP*xrCdi%iTdhGzeGJ3 zL|~V`a=oyuWdictnD2A66e$Lnle=DUa$RO{q~4dys#Cy}=uPnn9P%ZaIHjd52-rZf=_f=|iDmu3{6URhgv7?z4%eW6&SH>icO?MVA2w zwvRvg!^eou@9da*y@%4?$-(%63*NGdUgA?P$I9i++gP8tf(YE*Og-b!IR4#I^FMs> zB{O{gw0K6RVkP)wZm0qzc8ZrFpEZb@RCbl z4lvq6n98S2`4P{E@DlzQO}~6o8=Ij11GaB(ehu=Dbhd2=Ki)oEMhZ8Mt>zr4T)^lY zg1)2~DKVo+F-yzjG^y>h_W&M;uaS@4r@@i|G*Jx3;(Pu&Q>PR}ur z<7I_hF|#MUKlBVBxL(6KW)Mj{Jqx&Yy3I7CSoOEkbw+;-FfMDKe)>Kq`*0Z7oUWa1 zxj%k$zlN9p>kwPZ$tWpz$ePrEzT*pOFGry3ETM;qTV49n`53`MpW*TNQ!d{=ZXESv zLIZBIaXfy^`X`48fK{| z{Tk=tIYsN3TRSUv5%{!f%`LdcTc(YgFKqU{;K74l+{h+iem­$5KxeVJay@i31$ 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�eNt~l|gqr1UxPN_O^m(T1AxzYPqA|pquOf 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�XFSxMy`z8;%wacP_^6F14f} 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�O=APK#= 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

    {~YxsK@5@GX`fz_vcH@!<+j%?TcAy^+1M#|(gZ{ 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ΜdGU>nXUcS}_Rf%fh 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

    IfG3r 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 !AdqIFOZpoQ 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%0DNTA^|s%HIU!g| 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 diff --git a/build/Version history.docx b/build/Version history.docx deleted file mode 100644 index b9dc47360fad06b686a65f516a68fdc8f75e34c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16298 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 diff --git a/build/Version history.pdf b/build/Version history.pdf deleted file mode 100644 index 406cc1db1eb6ee340b8bb4bf01a26b293e331785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170546 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%0Dk7#%#TINUkTRV>FZOEUy}V_6)8`%{2J-E{{I%^ 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

7!hEQ|K-ZI^18)d(&qTGgMq< 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≫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≫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 Xji$1_f#GT7>(BWSM3{B7x( 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

=qB>He@BR6!F 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